surveillance/0000755000175100001440000000000012617103073012764 5ustar hornikuserssurveillance/inst/0000755000175100001440000000000012617067300013743 5ustar hornikuserssurveillance/inst/jags/0000755000175100001440000000000012502026556014670 5ustar hornikuserssurveillance/inst/jags/bhpm.bugs0000755000175100001440000000736012502026556016511 0ustar hornikusers###################################################################### # Bayesian hierarchical Poisson model for performing nowcasting stated # in the BUGS/JAGS modelling language. This is a template file - # based on the control options, the nowcasttrunc function removes # tags or inserts extra code - i.e. this file can not run with JAGS # without extra modification # # Author: Michael Höhle ###################################################################### model { ################################################## #Prior for the TPS ################################################## # #Priors for the regression coefficients. A joint distribution # #forces the updated to be MV metropolis hastings (might not be better as slice sampler) # beta ~ dmnorm( beta.mu, beta.prec) # #Random effects with automatic smoothing # for (k in 1:nknots){ # b[k]~dnorm(0,tau.b) # } # tau.b ~ dgamma(0.001, 0.001) # #1st order random walk prior for lambda[t] # logLambda[1] ~ dnorm(-10, tau.logLambda) # for (t in 2:T) { # logLambda[t] ~ dnorm( logLambda[t-1], tau.logLambda) # } # tau.logLambda ~ dgamma(0.001,0.001) # #2nd order random walk prior for lambda[t] # logLambda[1] ~ dnorm(-10, tau.logLambda) # logLambda[2] ~ dnorm(-10, tau.logLambda) # for (t in 3:T) { # logLambda[t] ~ dnorm( 2*logLambda[t-1] - logLambda[t-2], tau.logLambda) # } # tau.logLambda ~ dgamma(0.001,0.001) # #iid lambda, which are Ga-distributed # for (t in 1:T) { # lambda[t] ~ dgamma( alpha.lambda, beta.lambda) # logLambda[t] <- log(lambda[t]) # } ###################################### #Priors for discrete time hazard model ###################################### #for (d in 1:(maxDelay)) { } for (d in 1:(round( (maxDelay-1)/2-0.4)+1)) { #coefs for logit @ delay 0,..,maxDelay-1 gamma[d] ~ dnorm( mu.gamma[d], tau.gamma[d]) } # #Prior for change point effects (now as vector) eta ~ dmnorm( eta.mu, eta.prec) # #Alternative: Separate random walks for each baseline # for (d in 1:(maxDelay)) { # tau.gamma[d] ~ dgamma(0.001,0.001) # gamma[1,d] ~ dnorm( ifelse(maxDelay < 3/4*maxDelay, -3,-0.1), tau.gamma[d]) # } # for (t in 2:T) { # for (d in 1:(maxDelay)) { # #coefs for logit @ delay 0,..,maxDelay-1 # gamma[t,d] ~ dnorm( gamma[t-1,d], tau.gamma[d]) # } # } #################################################### #Loop over all time points in the reporting triangle #################################################### for (t in max(1,T-m):T) { #Time dependent delay distribution logit(p[t,1]) <- gamma[1] + eta %*% W[t,,1] for (d in 1:(maxDelay-1)) { # logit(haz[t,d+1]) <- gamma[d+1] + eta %*% W[t,,d+1] logit(haz[t,d+1]) <- gamma[ round(d/2-0.4)+1] + eta %*% W[t,,d+1] p[t,d+1] <- (1-sum(p[t,1:d]))*haz[t,d+1] } p[t,maxDelay+1] <- (1-sum(p[t,1:maxDelay]))*1 #since haz[maxDelay+1]=1 #Observations -- loop over all delays. for (d in 0:maxDelay) { mu[t,d+1] <- exp(logLambda[t])*p[t,d+1] rT[t,d+1] ~ dpois(mu[t,d+1]) } } #Loop over entire triangle not just the moving window for (t in 1:T) { #Curve for the expected number \lambda_t of cases #Spline model for the curve # logLambda[t] <- inprod(beta[],X[t,]) + inprod(b[],Z[t,]) #count the total number of observations at time t. NtInf[t] <- sum(rT[t,]) } } surveillance/inst/CITATION0000644000175100001440000001233112550666135015107 0ustar hornikusers## Use meta data extracted from the DESCRIPTION file to get author names ## (the variable 'meta' is defined in readCitationFile()) authors <- utils:::.read_authors_at_R_field(meta$"Authors@R") ### Outer header citHeader("Some guidelines for citing package", sQuote("surveillance"), "in publications:") ############ ### hhh4 ### ############ plpaper <- bibentry( bibtype = "Article", header = "For multivariate hhh4() with estimated neighbourhood weights, cite:", author = authors[c("SM", "LH")], title = "Power-law models for infectious disease spread", journal = "The Annals of Applied Statistics", issn = "1932-6157", year = "2014", volume = "8", number = "3", pages = "1612--1639", doi = "10.1214/14-AOAS743" ) bibentry( bibtype = "Article", header = "For multivariate hhh4() with random effects, cite:", author = authors[c("MP","LH")], title = "Predictive assessment of a non-linear random effects model for multivariate time series of infectious disease counts", journal = "Statistics in Medicine", issn = "0277-6715", year = "2011", volume = "30", number = "10", pages = "1118--1136", doi = "10.1002/sim.4177" ) bibentry( bibtype = "Article", header = "For multivariate hhh4() without random effects, cite:", author = c(authors[c("MP","LH")], person(c("André", "Michael"), "Toschke")), title = "Multivariate modelling of infectious disease surveillance data", journal = "Statistics in Medicine", issn = "0277-6715", year = "2008", volume = "27", number = "29", pages = "6250--6267", doi = "10.1002/sim.3440" ) bibentry( bibtype = "Article", header = "For univariate hhh4(), cite:", author = c(authors[c("LH","MH")], person("Mathias", "Hofmann")), title = "A statistical framework for the analysis of multivariate infectious disease surveillance counts", journal = "Statistical Modelling", issn = "1471-082X", year = "2005", volume = "5", number = "3", pages = "187--199", doi = "10.1191/1471082X05st098oa" ) bibentry( bibtype = "Article", header = "If calibrationTest() is used, cite:", author = c(person("Wei", "Wei"), authors["LH"]), title = "Calibration tests for count data", journal = "Test", issn = "1133-0686", year = "2014", volume = "23", number = "4", pages = "787--805", doi = "10.1007/s11749-014-0380-8" ) ################ ### twinstim ### ################ bibentry( bibtype = "Article", header = "If twinstim() is used, cite:", author = c(authors["SM"], person("Johannes", "Elias"), authors["MH"]), title = "A space-time conditional intensity model for invasive meningococcal disease occurrence", journal = "Biometrics", issn = "0006-341X", year = "2012", volume = "68", number = "2", pages = "607--616", doi = "10.1111/j.1541-0420.2011.01684.x" ) { plpaper$header <- "If twinstim() is used with non-Gaussian spatial interaction, cite:" plpaper } ############### ### twinSIR ### ############### bibentry( bibtype = "Article", header = "If twinSIR() is used, cite:", author = authors["MH"], title = "Additive-multiplicative regression models for spatio-temporal epidemics", journal = "Biometrical Journal", issn = "0323-3847", year = "2009", volume = "51", number = "6", pages = "961--978", doi = "10.1002/bimj.200900050" ) ############ ### boda ### ############ bibentry( bibtype = "Article", header = "If boda() is used, cite:", author = c(person("Juliane", "Manitz"), authors["MH"]), title = "Bayesian outbreak detection algorithm for monitoring reported cases of campylobacteriosis in Germany", journal = "Biometrical Journal", issn = "0323-3847", year = "2013", volume = "55", number = "4", pages = "509--526", doi = "10.1002/bimj.201200141" ) ############## ### algo.* ### ############## bibentry( bibtype = "Article", header = "For many of the algo.* functions, the appropriate citation is:", title = "surveillance: An {R} package for the monitoring of infectious diseases", author = authors["MH"], journal = "Computational Statistics", year = "2007", volume = "22", number = "4", pages = "571--582", doi = "10.1007/s00180-007-0074-8" ) ############## ### nowcast ### ############## bibentry( bibtype = "Article", header = "For the nowcasting functionality the appropriate citation is:", title = "Bayesian Nowcasting during the STEC O104:H4 Outbreak in Germany, 2011", author = c(authors["MH"],person("Matthias", "an der Heiden")), journal = "Biometrics", year = "2014", volume = "70", number = "4", pages = "993--1002", doi = "10.1111/biom.12194" ) ################################ ### basic software reference ### ################################ { softwareRef <- citation(auto = meta) softwareRef$key <- "R:surveillance" softwareRef$header <- paste("To cite the software package", sQuote("surveillance"), "itself, use:") softwareRef } ### Outer footer citFooter("In general, the references given in the help pages", "of the respective main functions should be used.") surveillance/inst/NEWS.Rd0000644000175100001440000022216112616412063015011 0ustar hornikusers\newcommand{\CRANpkg}{\href{http://CRAN.R-project.org/package=#1}{\pkg{#1}}} %% some pre-defined commands: \R, \code, \acronym, \url, \file, \pkg \name{NEWS} \title{News for Package 'surveillance'} \encoding{latin1} \section{Changes in surveillance version 1.10-0 (2015-11-04)}{ \subsection{NEW FEATURES}{ \itemize{ \item Calibration tests for count data (Wei and Held, 2014, Test) are now implemented and available as \code{calibrationTest()}. In addition to a default method taking pure counts and predictive means and dispersion parameters, there are convenient methods for \code{"hhh4"} and \code{"oneStepAhead"} objects. \item Shared overdispersion across units in negative binomial \code{hhh4()} time series models (by specifying a factor variable as the \code{family} argument). \item \code{scores()} and \code{pit()} are now generic and have convenient methods for \code{"oneStepAhead"} predictions and \code{"hhh4"} fits. \item The initial values used for model updates during the \code{oneStepAhead()} procedure can now be specified directly through the \code{which.start} argument (as an alternative to the previous options \code{"current"} and \code{"final"}). \item \code{plotHHH4_fitted()} (and \code{plotHHH4_fitted1()}) gained an option \code{decompose} to plot the contributions from each single unit (and the endemic part) instead of the default endemic + AR + neighbours decomposition. Furthermore, a formatted time axis similar to \code{stsplot_time1()} can now be enabled via the new argument \code{xaxis}. \item The new \code{plot} \code{type} \code{"maps"} for \code{"hhh4"} fits shows maps of the fitted mean components averaged over time. \item New \code{plot}-method for simulations from \code{"hhh4"} models (using \code{simulate.hhh4(..., simplify = TRUE)}, which now has a dedicated class: \code{"hhh4sims"}) to show the final size distribution or the simulated time series (possibly stratified by groups of units). There is also a new \code{scores}-method to compute proper scoring rules based on such simulations. \item The argument \code{idx2Exp} of \code{coef.hhh4()} may now be conveniently set to \code{TRUE} to exp-transform all coefficients. \item Added a \code{coeflist()}-method for \code{"hhh4"} fits. \item The generator function \code{sts()} can now be used to initialize objects of class \code{"sts"} (instead of writing \code{new("sts", ...)}). \item Additional arguments of \code{layout.scalebar()} now allow to change the style of the labels. \item A pre-computed distance matrix \code{D} can now be used as input for the \code{as.epidata()} converter -- offering an alternative to the default Euclidean distance based on the individuals coordinates. (Request of George Wood to support \code{twinSIR} models on networks.) } } \subsection{MINOR CHANGES}{ \itemize{ \item The first argument of \code{scores()} is now called \code{x} instead of \code{object} (for consistency with \code{calibrationTest()}). \item The result of \code{oneStepAhead()} now has the dedicated class attribute \code{"oneStepAhead"} (previously was just a list). \item Changed interpretation of the \code{col} argument of \code{plotHHH4_fitted()} and \code{plotHHH4_fitted1()} (moved color of \dQuote{observed} to separate argument \code{pt.col} and reversed remaining colors). The old \code{col} specification as a vector of length 4 still works (catched internally) but is undocumented. \item The \code{epoch} slot of class \code{"sts"} is now initialized to \code{1:nrow(observed)} by default and thus no longer needs to be explicitly set when creating a \code{new("sts", ...)} for this standard case. \item Initialization of \code{new("sts", ...)} now supports the argument \code{frequency} (for consistency with \code{ts()}). Note that \code{freq} still works (via partial argument matching) and that the corresponding \code{"sts"} slot is still called \code{freq}. \item If \code{missing(legend.opts)} in \code{stsplot_time1()}, the default legend will only be produced if the \code{"sts"} object contains information on outbreaks, alarms, or upperbounds. \item The default \code{summary()} of a \code{"twinstim"} fit is more concise since it no longer includes the number of log-likelihood and score function evaluations and the elapsed time during model fitting. Set the new \code{runtime} argument of \code{summary.twinstim()} to \code{TRUE} to add this information to the summary as before. \item The \code{animate}-method for \code{"sts"} objects gained an argument \code{draw} (to disable the default instantaneous plotting) and now invisibly returns the sequential plot objects (of class \code{"gtable"} or \code{"trellis"}) in a list for post-processing. \item The flexible time axis configurations for \code{"sts"} plots introduced in version 1.8-0 now also work for classical \code{"sts"} objects with integer epochs and standard frequencies (try \code{plot(..., epochsAsDate = TRUE)}). \item \code{stsplot_time()} initiates \code{par} settings only if the \code{par.list} argument is a list. \item The new \code{all.equal()} method for class \code{"hhh4"} compares two fits ignoring their \code{"runtime"} and \code{"call"} elements (at least). } } \subsection{BUG FIXES}{ \itemize{ \item Fixed a bug in \code{algo.bayes}, where an alarm was already sounded if the current observation was equal to the quantile of the predictive posterior. This was changed in order to get \eqn{alarm_t = I(obs_t > quantile_t)} which is consistent with the use in \code{boda} and \code{bodaDelay}. \item Fixed bug in \code{algo.outbreakP} causing a halt in the computations of \code{value="cases"} when \code{calc.outbreakP.statistic} returned \code{NaN}. Now, a \code{NaN} is returned. \item \code{wrap.algo} argument \code{control.hook} used \code{control} argument defined outside it's scope (and not the one provided to the function). It is now added as additional 2nd argument to the \code{control.hook} function. \item \code{stsplot_time()} did not account for the optional \code{units} argument for multivariate \code{"sts"} objects when choosing a suitable value for \code{par("mfrow")}. \item \code{hhh4()} could have used a function \code{dpois()} or \code{dnbinom()} from the global environment instead of the respective function from package \pkg{stats}. \item The default time variable \code{t} created as part of the \code{data} argument in \code{hhh4()} was incompatible with \code{"sts"} objects having \code{epochAsDate=TRUE}. \item A consistency check in \code{as.epidata.default()} failed for SI-type data (and, more generally, for all data which ended with an I-event in the last time block). Spotted by George Wood. } } } \section{Changes in surveillance version 1.9-1 (2015-06-12)}{ \itemize{ \item This is a quick patch release to make the test suite run smoothly on CRAN's Windows and Solaris Sparc systems. \item The new \code{hhh4()} option to scale neighbourhood weights did not work for parametric weights with more than one parameter if \code{normalize=FALSE}. } } \section{Changes in surveillance version 1.9-0 (2015-06-09)}{ \subsection{NEW FEATURES}{ \itemize{ \item New functions and data for Bayesian outbreak detection in the presence of reporting delays (Salmon et al., 2015): \code{bodaDelay()}, \code{sts_observation()}, and \code{sts_creation()}. \item New functions implementing tests for space-time interaction: \itemize{ \item \code{knox()} supports both the Poisson approximation and a Monte Carlo permutation approach to determine the p-value, \item \code{stKtest()} wraps space-time K-function methods from package \CRANpkg{splancs} for use with \code{"epidataCS"}, \item and \code{epitest()} for \code{twinstim} models (makes use of the new auxiliary function \code{simpleR0()}). } \item New function \code{plapply()}: a parallel and verbose version of \code{lapply()} wrapping around both \code{mclapply()} and \code{parLapply()} of package \pkg{parallel}. \item New converter \code{as.xts.sts()} to transform \code{"sts"} objects to the quasi standard \code{"xts"} class, e.g., to make use of package \CRANpkg{dygraphs} for interactive time series plots. \item New options for scaling and normalization of neighbourhood weights in \code{hhh4()} models. \item New auxiliary function \code{layout.scalebar()} for use as part of \code{sp.layout} in \code{spplot()} or in the traditional graphics system. } \subsection{New features for \code{"epidataCS"}}{ \itemize{ \item New argument \code{by} for \code{plot.epidataCS()}, which defines a stratifying variable for the events (default is the event type as before). It can also be set to \code{NULL} to make the plot not distinguish between event types. \item The spatial plot of \code{"epidataCS"} gained the arguments \code{tiles}, \code{pop} and \code{sp.layout}, and can now produce an \code{spplot()} with the tile-specific population levels behind the point pattern. \item New function \code{permute.epidataCS()} to randomly permute time points or locations of the events (holding other marks fixed). } } \subsection{New features for \code{twinstim()}}{ \itemize{ \item New S3-generic \code{coeflist()} to list model coefficients by component. It currently has a default method and one for \code{"twinstim"} and \code{"simEpidataCS"}. \item New argument \code{newcoef} for \code{simulate.twinstim()} to customize the model parameters used for the simulation. \item New argument \code{epilink} for \code{twinstim()}, offering experimental support for an identity link for the epidemic predictor. The default remains \code{epilink = "log"}. \item Simulation from \code{"twinstim"} models and generation of \code{"epidataCS"} is slightly faster now (faster \pkg{spatstat} functions are used to determine the distance of events to the border). \item New option \code{scaled = "standardized"} in \code{iafplot()} to plot \eqn{f(x) / f(0)} or \eqn{g(t) / g(0)}, respectively. } } } \subsection{MINOR CHANGES}{ \itemize{ \item Initial data processing in \code{twinstim()} is faster since event sources are only re-determined if there is effective need for an update (due to subsetting or a change of \code{qmatrix}). \item \code{formatPval()} disables \code{scientific} notation by default. \item The \code{"time"} plot for \code{"epidataCS"} uses the temporal grid points as the default histogram \code{breaks}. \item The special \code{fe()} function which sets up fixed effects in \code{hhh4()} models gained an argument \code{unitSpecific} as a convenient shortcut for \code{which = rep(TRUE, nUnits)}. \item The convenient \code{plot} option of \code{permutationTest()} uses \CRANpkg{MASS}::\code{truehist()} instead of \code{hist()} and accepts graphical parameters to customize the histogram. } } \subsection{BUG FIXES}{ \itemize{ \item The \code{bodaFit} function did not draw samples from the joint posterior. Instead draws were from the respective posterior marginals. A new argument \code{samplingMethod} is now introduced defaulting to the proper 'joint'. For backwards compatibility use the value 'marginal'. \item The functions \code{as.epidataCS()} and \code{simEpidataCS()} could throw inappropriate warnings when checking polygon areas (only if \code{W} or \code{tiles}, respectively, contained holes). \item Non-convergent endemic-only \code{twinstim} models produced an error (spotted by Bing Zhang). \item The \code{"owin"}-method of \code{intersectPolyCircle} could have returned a rectangle-type \code{"owin"} instead of a polygon. \item An error occurred in \code{twinstim()} if \code{finetune=TRUE} or choosing \code{optim()} instead of the default \code{nlminb()} optimizer without supplying a \code{control} list in \code{optim.args}. \item The \code{"time"} plot for \code{"epidataCS"} did not necessarily use the same histogram \code{breaks} for all strata. \item Specifying a step function of interaction via a numeric vector of knots did not work in \code{twinstim()}. \item \code{plot.hhh4()} did not support an unnamed \code{type} argument such as \code{plot(x, "season")}. \item \code{simEpidataCS()} did not work if \code{t0} was in the last block of \code{stgrid} (thus it did not work for single-cell grids), and mislabeled the \code{start} column copied to \code{events} if there were no covariates in \code{stgrid}. \item Evaluating \code{intensity.twinstim()$hFUN()} at time points before \code{t0} was an error. The function now returns \code{NA_real_} as for time points beyond \code{T}. \item Truncated, normalized power-law weights for \code{hhh4()} models, i.e., \code{W_powerlaw(maxlag = M, normalize = TRUE)} with \code{M < max(neighbourhood(stsObj))}, had wrong derivatives and thus failed to converge. \item \code{update.hhh4(..., use.estimates = TRUE)} did not use the estimated weight function parameters as initial values for the new fit. It does so now iff the weight function \code{ne$weights} is left unchanged. } } } \section{Changes in surveillance version 1.8-3 (2015-01-05)}{ \itemize{ \item Accommodate a new note given by R-devel checks, and set the new INLA additional repository in the \file{DESCRIPTION} file. \item Made \code{linelist2sts()} work for quarters by adding extra \code{"\%q"} formatting in \code{formatDate()}. } } \section{Changes in surveillance version 1.8-2 (2014-12-16)}{ \subsection{MINOR CHANGES related to \code{hhh4}}{ \itemize{ \item In the coefficient vector resulting from a \code{hhh4} fit, random intercepts are now named. \item Parameter \code{start} values in \code{hhh4()} are now matched by name but need not be complete in that case (default initial values are used for unspecified parameters). \item The \code{update.hhh4()}-method now by default does \code{use.estimates} from the previous fit. This reduces the number of iterations during model fitting but may lead to slightly different parameter estimates (within a tolerance of \code{1e-5}). Setting \code{use.estimates = FALSE} means to re-use the previous start specification. } } \subsection{MINOR CHANGES related to the \code{"sts"}-class}{ \itemize{ \item For univariate \code{"sts"} objects, the (meaningless) \dQuote{head of neighbourhood} is no longer \code{show}n. \item The \code{"sts"} class now has a \code{dimnames}-method instead of a \code{colnames}-method. Furthermore, the redundant \code{nrow} and \code{ncol} methods have been removed (the \code{dim}-method is sufficient). \item If a \code{map} is provided when \code{initialize()}ing an \code{"sts"} object, it is now verified that all \code{observed} regions are part of the \code{map} (matched by \code{row.names}). \item In \code{stsplot_space()}, extra (unobserved) regions of the \code{map} are no longer dropped but shown with a dashed border by default. } } } \section{Changes in surveillance version 1.8-1 (2014-10-29)}{ \subsection{NEW FEATURES}{ \itemize{ \item The \code{R0}-method for \code{"twinstim"} gained an argument \code{newcoef} to simplify computation of reproduction numbers with a different parameter vector (also used for Monte Carlo CI's). \item New plot \code{type="neweights"} for \code{"hhh4"} fits. \item The \code{scores()} function allows the selection of multiple \code{units} (by index or name) for which to compute (averaged) proper scores. Furthermore, one can now select \code{which} scores to compute. \item Added a \code{formula}-method for \code{"hhh4"} fits to extract the \code{f} specifications of the three components from the control list. \item The \code{update()}-method for fitted \code{"hhh4"} models gained an argument \code{S} for convenient modification of component seasonality using \code{addSeason2formula()}. \item The new auxiliary function \code{layout.labels()} generates an \code{sp.layout} item for \code{spplot()} in order to draw labels. \item When generating the \code{pit()} histogram with a single predictive CDF \code{pdistr}, the \code{\dots} arguments can now be \code{x}-specific and are recycled if necessary using \code{mapply()}. If \code{pdistr} is a list of CDFs, \code{pit()} no longer requires the functions to be vectorized. \item New method \code{as.epidata.data.frame()}, which constructs the start/stop SIR event history format from a simple individual-based data frame (e.g., \code{hagelloch.df}). \item New argument \code{w} in \code{as.epidata.default()} to generate covariate-based weights for the force of infection in \code{twinSIR}. The \code{f} argument is for distance-based weights. \item The result of \code{profile.twinSIR()} gained a class and an associated \code{plot}-method. } } \subsection{MAJOR CHANGES}{ \itemize{ \item For multivariate \code{oneStepAhead()} predictions, \code{scores(..., individual=TRUE)} now returns a 3d array instead of a collapsed matrix. Furthermore, the scores computed by default are \code{c("logs","rps","dss","ses")}, excluding the normalized squared error score \code{"nses"} which is improper. \item The plot-\code{type="season"} for \code{"hhh4"} fits now by default plots the multiplicative effect of seasonality on the respective component (new argument \code{intercept=FALSE}). The default set of components to plot has also changed. \item When \code{as.epidata()} and \code{simEpidata()} calculate distance-based epidemic weights from the \code{f} functions, they no longer set the distance of an infectious individual to itself artificially to \code{Inf}. This changes the corresponding columns in the \code{"epidata"} in rows of currently infectious individuals, but the \code{twinSIR} model itself is invariant, since only rows with \code{atRiskY=1} contribute to the likelihood. \item Several modifications and corrections in \code{data("hagelloch")}. } } \subsection{MINOR CHANGES}{ \itemize{ \item Better plotting of \code{stsNC} objects by writing an own plot method for them. Prediction intervals are now shown jointly with the point estimate. \item Reduced package size by applying \code{tools::resaveRdaFiles} to some large datasets and by building the package with \code{--compact-vignettes=both}, i.e., using additional GhostScript compression with ebook quality, see \code{?tools::compactPDF}. \item Added \code{units} argument to \code{stsplot_time} to select only a subset of the multivariate time series for plotting. \item The \code{untie}-method for class \code{"epidataCS"} gained an argument \code{verbose} which is now \code{FALSE} by default. \item \code{"epidataCS"} objects store the \code{clipper} used during generation as attribute of \code{$events$.influenceRegion}. \item In \code{plotHHH4_fitted()}, the argument \code{legend.observed} now defaults to \code{FALSE}. \item The default weights for the spatio-temporal component in \code{hhh4} models now are \code{neighbourhood(stsObj) == 1}. The previous default \code{neighbourhood(stsObj)} does not make sense for the newly supported \code{nbOrder} neighbourhood matrices (shortest-path distances). The new default makes no difference for (old) models with binary adjacency matrices in the neighbourhood slot of the \code{stsObj}. \item The default for nonparametric weights \code{W_np()} in \code{hhh4()} is now to assume zero weight for neighbourhood orders above \code{maxlag}, i.e., \code{W_np()}'s argument \code{to0} now defaults to \code{TRUE}. \item Added a \code{verbose} argument to \code{permutationTest()}, which defaults to \code{FALSE}. The previous behaviour corresponds to \code{verbose=TRUE}. \item \code{simulate.twinstim()} now by default uses the original \code{data$W} as observation region. \item The \code{data("measlesWeserEms")} contain two additional variables in the \code{@map@data} slot: \code{"vaccdoc.2004"} and \code{"vacc1.2004"}. \item The plot-method for \code{"epidata"} objects now uses colored lines by default. \item The \pkg{surveillance} package now depends on \R >= 3.0.2, which, effectively, is the minimum version required since \pkg{surveillance} 1.7-0 (see the corresponding NEWS below). \item The two diagnostic plots of \code{checkResidualProcess()} are now by default plotted side by side (\code{mfrow=c(1,2)}) instead of one below the other. } } \subsection{BUG FIXES}{ \itemize{ \item In \code{farringtonFlexible} alarms are now for \code{observed>upperbound} and not for \code{observed>=upperbound} which was not correct. \item Fixed duplicate \code{"functions"} element resulting from \code{update.twinstim(*,model=TRUE)} and ensured that \code{"twinstim"} objects always have the same components (some may be \code{NULL}). \item \code{animate.epidata} works again with the \CRANpkg{animation} package (\code{ani.options("outdir")} was removed in version 2.3) \item For \code{hhh4} models with random effects, \code{confint()} only worked if argument \code{parm} was specified. \item Computing one-sided AIC weights by simulation for \code{twinSIR} models with more than 2 epidemic covariates now is more robust (by rescaling the objective function for the quadratic programming solver) and twice as fast (due to code optimization). \item \code{simulate.twinstim(..., rmarks=NULL)} can now handle the case where \code{data} has no events within the simulation period (by sampling marks from all of \code{data$events}). \item The \code{lambda.h} values of simulated events in \code{"simEpidataCS"} objects were wrong if the model contained an endemic intercept (which is usually the case). \item Automatic choice of color breaks in the \code{animate}-method for class \code{"sts"} now also works for incidence maps (i.e., with a \code{population} argument). \item \code{hhh4()} did not allow the use of nonparametric neighbourhood weights \code{W_np()} with \code{maxlag=2}. \item \code{scores()} did not work for multivariate \code{oneStepAhead()} predictions if both \code{individual=TRUE} and \code{sign=TRUE}, and it could not handle a \code{oneStepAhead()} prediction of only one time point. Furthermore, the \code{"sign"} column of \code{scores(..., sign=TRUE)} was wrong (reversed). \item For \code{"epidataCS"} with only one event, \code{epidataCSplot_space()} did not draw the point. \item The trivial (identity) call \code{aggregate(stsObj, nfreq=stsObj@freq)} did not work. } } } \section{Changes in surveillance version 1.8-0 (2014-06-16)}{ \subsection{PACKAGE INFRASTRUCTURE}{ \itemize{ \item Package \pkg{surveillance} now depends on newer versions of packages \CRANpkg{sp} (>= 1.0-15), \CRANpkg{polyCub} (>= 0.4-2), and \CRANpkg{spatstat} (>= 1.36-0). The \R packages \pkg{INLA} and \CRANpkg{runjags} are now suggested to support a new outbreak detection algorithm (\code{boda()}) and the new \code{nowcast()}ing procedure, respectively. The \R packages for \CRANpkg{lattice}, \CRANpkg{grid}, \CRANpkg{gridExtra}, and \CRANpkg{scales} are suggested for added visualization facilities. \item More tests have been implemented to ensure package integrity. We now use \CRANpkg{testthat} instead of the outdated package \CRANpkg{RUnit}. \item \code{hhh4()} fits now have class \code{"hhh4"} instead of \code{"ah4"}, for consistency with \code{twinstim()}, \code{twinSIR()}, and to follow the common convention (cp. \code{lm()}). Standard S3-methods for the old \code{"ah4"} name are still available for backwards compatibility but may be removed in the future. \item Plot variants for \code{"sts"} objects have been cleaned up: The functions implementing the various plot types (\code{stsplot_*}, previously named \code{plot.sts.*}) are now exported and documented separately. } } \subsection{NEW FEATURES}{ \itemize{ \item The \code{nowcast} procedure has been completely re-written to handle the inherit right-truncation of reporting data (best visualized as a reporting triangle). The new code implements the generalized-Dirichlet and the hierarchical Bayesian approach described in \enc{Höhle}{Hoehle} and an der Heiden (2014). No backwards compatibility to the old nowcasting procedure is given. \item The package contains a new monitoring function \code{boda}. This is a first experimental surveillance implementation of the Bayesian Outbreak Detection Algorithm (BODA) proposed in Manitz and \enc{Höhle}{Hoehle} (2012). The function relies on the non-CRAN package \pkg{INLA}, which has to be installed first in order to use this function. Expect initial problems. \item New \code{toLatex}-method for \code{"sts"} objects. \item The new function \code{stsplot_space()} provides an improved map plot of disease incidence for \code{"sts"} objects aggregated over time. It corresponds to the new \code{type = observed ~ unit} of the \code{stsplot}-method, and supersedes \code{type = observed ~ 1|unit} (except for alarm shading). \item An \code{animate()}-method for the \code{"sts"} class provides a new implementation for animated maps (superseding the \code{plot} \code{type=observed ~ 1 | unit * time}) with an optional evolving time series plot below the map. \item The \code{plot()} method for \code{"sts"} objects with epochs as dates is now made more flexible by introducing the arguments \code{xaxis.tickFreq}, \code{xaxis.labelFreq} and \code{xaxis.labelFormat}. These allow the specification of tick-marks and labelling based on \code{strftime} compatible conversion codes -- independently if data are daily, weekly, monthly, etc. As a consequence, the old argument \code{xaxis.years} is removed. See \code{stsplot_time()} for more information. \item Inference for neighbourhood weights in \code{hhh4()} models: \code{W_powerlaw()} and \code{W_np()} both implement weights depending on the order of neighbourhood between regions, a power-law decay and nonparametric weights, i.e., unconstrained estimation of individual weights for each neighbourhood order. \item \code{hhh4()} now allows the inclusion of multiplicative offsets also in the epidemic components \code{"ar"} and \code{"ne"}. \item \code{hhh4()} now has support for \code{lag != 1} in the autoregressive and neighbor-driven components. The applied lags are stored as component \code{"lags"} of the return value (previously there was an unused component \code{"lag"} which was always 1 and has been removed now). \item \code{oneStepAhead()}: \itemize{ \item Added support for parallel computation of predictions using \code{mclapply()} from package \pkg{parallel}. \item New argument \code{type} with a new \code{type} \code{"first"} to base all subsequent one-step-ahead predictions on a single initial fit. \item Nicer interpretation of \code{verbose} levels, and \code{txtProgressBar()}. } \item The \code{plot()}-method for fitted \code{hhh4()} objects now offers three additional types of plots: component seasonality, seasonal or time course of the dominant eigenvalue, and maps of estimated random intercepts. It is documented and more customizable. Note that argument order and some names have changed: \code{i} -> \code{units}, \code{title} -> \code{names}. \item (Deviance) \code{residuals()}-method for fitted \code{hhh4()} models. \item Added methods of \code{vcov()} and \code{nobs()} for the \code{"hhh4"} class. For \code{AIC()} and \code{BIC()}, the default methods work smoothly now (due to changes to \code{logLik.hhh4()} documented below). \item New predefined interaction functions for \code{twinstim()}: \code{siaf.student()} implements a \eqn{t}-kernel for the distance decay, and \code{siaf.step()} and \code{tiaf.step()} provide step function kernels (which may also be invoked by specifying the vector of knots as the \code{siaf} or \code{tiaf} argument in \code{twinstim}). \item Numerical integration over polygonal domains in the \code{F} and \code{Deriv} components of \code{siaf.powerlaw()} and \code{siaf.powerlawL()} is much faster and more accurate now since we use the new \code{polyCub.iso()} instead of \code{polyCub.SV()} from package \CRANpkg{polyCub}. \item New \code{as.stepfun()}-method for \code{"epidataCS"} objects. \item \code{plot.epidataCS()}: \itemize{ \item The spatial plot has new arguments to automatically add legends to the plot: \code{legend.types} and \code{legend.counts}. It also gained an \code{add} argument. \item The temporal plot now supports type-specific sub-histograms, additional lines for the cumulative number of events, and an automatic legend. } \item The new function \code{glm_epidataCS()} can be used to fit an endemic-only \code{twinstim()} via \code{glm()}. This is mainly provided for testing purposes since wrapping into \code{glm} usually takes longer. } } \subsection{MAJOR CHANGES}{ \itemize{ \item Fitted \code{hhh4()} objects no longer contain the associated \code{"sts"} data twice: it is now only stored as \code{$stsObj} component, the hidden duplicate in \code{$control$data$.sts} was dropped, which makes fitted objects substantially smaller. \item \code{logLik.hhh4()} always returns an object of class \code{"logLik"} now; for random effects models, its \code{"df"} attribute is \code{NA_real_}. Furthermore, for non-convergent fits, \code{logLik.hhh4()} gives a warning and returns \code{NA_real_}; previously, an error was thrown in this case. \item \code{oneStepAhead()}: \itemize{ \item Default of \code{tp[2]} is now the penultimate time point of the fitted subset (not of the whole \code{stsObj}). \item \code{+1} on rownames of \code{$pred} (now the same as for \code{$observed}). } \item The optional \code{"twinstim"} result components \code{fisherinfo}, \code{tau}, and \code{functions} are always included. They are set to \code{NULL} if they are not applicable instead of missing completely (as before), such that all \code{"twinstim"} objects have the same list structure. \item \code{iafplot()} ... \itemize{ \item invisibly returns a matrix containing the plotted values of the (scaled) interaction function (and the confidence interval as an attribute). Previously, nothing (\code{NULL}) was returned. \item detects a type-specific interaction function and by default uses \code{types=1} if it is not type-specific. \item has better default axis ranges. \item adapts to the new step function kernels (with new arguments \code{verticals} and \code{do.points}). \item supports logarithmic axes (via new \code{log} argument passed on to \code{plot.default}). \item optionally respects \code{eps.s} and \code{eps.t}, respectively (by the new argument \code{truncated}). \item now uses \code{scaled=TRUE} by default. } \item The argument \code{colTypes} of \code{plot.epidataCS(,aggregate="space")} is deprecated (use \code{points.args$col} instead). \item The events in an \code{"epidataCS"} object no longer have a reserved \code{"ID"} column. } } \subsection{MINOR CHANGES}{ \itemize{ \item \code{hhh4()} now stores the runtime just like \code{twinstim()}. \item Take \code{verbose=FALSE} in \code{hhh4()} more seriously. \item \code{hhh4()} issues a \code{warning()} if non-convergent. \item The following components of a \code{hhh4()} fit now have names: \code{"se"}, \code{"cov"}, \code{"Sigma"}. \item The new default for \code{pit()} is to produce the plot. \item The \code{twinstim()} argument \code{cumCIF} now defaults to \code{FALSE}. \item \code{update.twinstim()} no longer uses recursive \code{modifyList()} for the \code{control.siaf} argument. Instead, the supplied new list elements (\code{"F"}, \code{"Deriv"}) completely replace the respective elements from the original \code{control.siaf} specification. \item \code{siaf.lomax()} is now defunct (it has been deprecated since version 1.5-2); use \code{siaf.powerlaw()} instead. \item Allow the default \code{adapt}ive bandwidth to be specified via the \code{F.adaptive} argument in \code{siaf.gaussian()}. \item Unsupported options (\code{logpars=FALSE}, \code{effRangeProb}) have been dropped from \code{siaf.powerlaw()} and \code{siaf.powerlawL()}. \item More rigorous checking of \code{tiles} in \code{simulate.twinstim()} and \code{intensityplot.twinstim}. \item \code{as.epidataCS()} gained a \code{verbose} argument. \item \code{animate.epidataCS()} now by default does not draw influence regions (\code{col.influence=NULL}), is \code{verbose} if \code{interactive()}, and ignores \code{sleep} on non-interactive devices. \item The \code{multiplicity}-generic and its default method have been integrated into \CRANpkg{spatstat} and are imported from there. } } \subsection{DATA}{ \itemize{ \item The polygon representation of Germany's districts ( \code{system.file("shapes", "districtsD.RData", package="surveillance")} ) has been simplified further. The union of \code{districtsD} is used as observation window \code{W} in \code{data("imdepi")}. The exemplary \code{twinstim()} fit \code{data("imdepifit")} has been updated as well. Furthermore, \code{row.names(imdepi$events)} have been reset (chronological index), and numerical differences in \code{imdepi$events$.influenceRegion} are due to changes in \CRANpkg{polyclip} 1.3-0. \item The Campylobacteriosis data set \code{campyDE}, where absolute humidity is used as concurrent covariate to adjust the outbreak detection is added to the package to exemplify \code{boda()}. \item New \code{data("measlesWeserEms")} (of class \code{"sts"}), a corrected version of \code{data("measles.weser")} (of the old \code{"disProg"} class). } } \subsection{BUG FIXES}{ \itemize{ \item Fixed a bug in \code{LRCUSUM.runlength} where computations were erroneously always done under the in-control parameter \code{mu0} instead of \code{mu}. \item Fixed a bug during alarm plots (\code{stsplot_alarm()}), where the use of \code{alarm.symbol} was ignored. \item Fixed a bug in \code{algo.glrnb} where the overdispersion parameter \code{alpha} from the automatically fitted \code{glm.nb} model (fitted by \code{estimateGLRNbHook}) was incorrectly taken as \code{mod[[1]]$theta} instead of \code{1/mod[[1]]$theta}. The error is due to a different parametrization of the negative binomial distribution compared to the parametrization in \enc{Höhle}{Hoehle} and Paul (2008). \item The score function of \code{hhh4()} was wrong when fitting endemic-only models to a \code{subset} including the first time point. This led to \dQuote{false convergence}. \item \code{twinstim()} did not work without an endemic offset if \code{is.null(optim.args$par)}. } } } \section{Changes in surveillance version 1.7-0 (2013-11-19)}{ \subsection{SYNOPSIS}{ \itemize{ \item Package \CRANpkg{gpclib} is no longer necessary for the construction of \code{"epidataCS"}-objects. Instead, we make use of the new dedicated package \CRANpkg{polyclip} (licensed under the BSL) for polygon clipping operations (via \code{spatstat::intersect.owin()}). This results in a slightly different \code{$events$.influenceRegion} component of \code{"epidataCS"} objects, one reason being that \pkg{polyclip} uses integer arithmetic. Change of \code{twinstim()} estimates for a newly created \code{"epidataCS"} compared with the same data prepared in earlier versions should be very small (e.g., for \code{data("imdepifit")} the mean relative difference of coefficients is 3.7e-08, while the \code{logLik()} is \code{all.equal()}). As an alternative, \pkg{rgeos} can still be chosen to do the polygon operations. \item The \pkg{surveillance}-internal code now depends on \R >= 2.15.2 (for \code{nlminb()} \code{NA} fix of PR#15052, consistent \code{rownames(model.matrix)} of PR#14992, \code{paste0()}, \code{parallel::mcmapply()}). However, the required recent version of \pkg{spatstat} (1.34-0, for \pkg{polyclip}) actually needs \R >= 3.0.2, which therefore also applies to \pkg{surveillance}. \item Some minor new features and changes are documented below. } } \subsection{NEW FEATURES}{ \itemize{ \item Functions \code{unionSpatialPolygons()} and \code{intersectPolyCircle()} are now exported. Both are wrappers around functionality from different packages supporting polygon operations: for determining the union of all subpolygons of a \code{"SpatialPolygons"} object, and the intersection of a polygonal and a circular domain, respectively. \item \code{discpoly()} moved back from \CRANpkg{polyCub} to \pkg{surveillance}. } } \subsection{MINOR CHANGES}{ \itemize{ \item \pkg{surveillance} now Depends on \CRANpkg{polyCub} (>= 0.4-0) and not only Imports it (which avoids \code{::}-references in .GlobalEnv-made functions). \item Nicer default axis labels for \code{iafplot()}. \item For \code{twinstim()}, the default is now to \code{trace} every iteration instead of every fifth only. \item Slightly changed default arguments for \code{plot.epidata()}: \code{lwd} (1->2), \code{rug.opts} (\code{col} is set according to \code{which.rug}) \item \code{twinstim()} saves the vector of \code{fixed} coefficients as part of the returned \code{optim.args} component, such that these will again be held fixed upon \code{update()}. \item The \code{plot}-method for \code{hhh4()}-fits allows for region selection by name. } } } \section{Changes in surveillance version 1.6-0 (2013-09-03)}{ \subsection{SYNOPSIS}{ \itemize{ \item The \code{polyCub}-methods for cubature over polygonal domains have been moved to the new dedicated package \CRANpkg{polyCub}, since they are of a rather general use. The \code{discpoly()} function has also been moved to that package. \item As a replacement for the license-restricted \pkg{gpclib} package, the \pkg{rgeos} package is now used by default (\code{surveillance.options(gpclib=FALSE)}) in generating \code{"epidataCS"} (polygon intersections, slightly slower). Therefore, when installing \pkg{surveillance} version 1.6-0, the system requirements for \CRANpkg{rgeos} have to be met, i.e., GEOS must be available on the system. On Linux variants this means installing \file{libgeos} (\file{libgeos-dev}). \item The improved Farrington method described in Noufaily et al. (2012) is now available as function \code{farringtonFlexible()}. \item New handling of reference dates in \code{algo.farrington()} for \code{"sts"} objects with \code{epochAsDate=TRUE}. Instead of always going back in time to the next Date in the \code{"epoch"} slot, the function now determines the \emph{closest} Date. Note that this might lead to slightly different results for the upperbound compared to previously. Furthermore, the functionality is only tested for weekly data (monthly data are experimental). The same functionality applies to \code{farringtonFlexible()}. \item To make the different retrospective modelling frameworks of the \pkg{surveillance} package jointly applicable, it is now possible to convert (aggregate) \code{"epidataCS"} (continuous-time continuous-space data) into an \code{"sts"} object (multivariate time series of counts) by the new function \code{epidataCS2sts}. \item Simulation from \code{hhh4} models has been re-implemented, which fixes a bug and makes it more flexible and compatible with a wider class of models. \item The \code{map}-slot of the \code{"sts"} class now requires \code{"SpatialPolygons"} (only) instead of \code{"SpatialPolygonsDataFrame"}. \item Re-implementation of \code{oneStepAhead()} for \code{hhh4}-models with a bug fix, some speed-up and more options. \item Slight speed-up for \code{hhh4()} fits, e.g., by more use of \code{.rowSums()} and \code{.colSums()}. \item Crucial speed-up for \code{twinstim()} fits by more efficient code: \code{mapply}, dropped clumsy \code{for}-loop in \code{fisherinfo}, new argument \code{cores} for parallel computing via forking (not available on Windows). \item Some further new features, minor changes, and bug fixes are described in the following subsections. } } \subsection{NEW FEATURES}{ \itemize{ \item Using \code{tiaf.exponential()} in a \code{twinstim()} now works with \code{nTypes=1} for multi-type data. \item A legend can be added automatically in \code{iafplot()}. \item The \code{untie} methods are now able to produce jittered points with a required minimum separation (\code{minsep}). \item \code{simulate.ah4} gained a \code{simplify} argument. \item New \code{update}-method for fitted \code{hhh4}-models (class \code{"ah4"}). \item \code{oneStepAhead()} has more options: specify time range (not only start), choose type of start values, \code{verbose} argument. \item \code{pit()} allows for a list of predictive distributions (\code{pdistr}), one for each observation \code{x}. \item New spatial auxiliary function \code{polyAtBorder()} indicating polygons at the border (for a \code{"SpatialPolygons"} object). \item \code{animate.epidataCS()} allows for a \code{main} title and can show a progress bar. } } \subsection{MINOR CHANGES}{ \itemize{ \item Changed parametrization of \code{zetaweights()} and completed its documentation (now no longer marked as experimental). \item \code{twinstim(...)$converged} is \code{TRUE} if the optimization routine converged (as before) but contains the failure message otherwise. \item Increased default \code{maxit} for the Nelder-Mead optimizer in \code{hhh4} from 50 to 300, and removed default artificial lower bound (-20) on intercepts of epidemic components. \item Renamed returned list from \code{oneStepAhead} (mean->pred, x->observed, params->coefficients, variances->Sigma.orig) for consistency, and \code{oneStepAhead()$psi} is only non-\code{NULL} if we have a NegBin model. \item Argument order of \code{pit()} has changed, which is also faster now and got additional arguments \code{relative} and \code{plot}. \item \code{twinstim(...)$runtime} now contains the complete information from \code{proc.time()}. } } \subsection{BUG FIXES}{ \itemize{ \item Fixed a bug in function \code{refvalIdxByDate()} which produced empty reference values (i.e. \code{NA}s) in case the Date entries of \code{epoch} were not mondays. Note: The function works by subtracting \code{1:b} years from the date of the range value and then takes the span \code{-w:w} around this value. For each value in this set it is determined whether the closest date in the epoch slot is obtained by going forward or backward. Note that this behaviour is now slightly changed compared to previously, where we \emph{always} went back in time. \item \code{algo.farrington()}: Reference values too far back in time and hence not being in the \code{"epoch"} slot of the \code{"sts"} object are now ignored (previously the resulting \code{NA}s caused the function to halt). A warning is displayed in this case. \item \code{hhh4}: The entry \eqn{(5,6)} of the marginal Fisher information matrix in models with random intercepts in all three components was incorrect. If \code{nlminb} was used as optimizer for the variance parameters (using the negative marginal Fisher information as Hessian), this could have caused false convergence (with warning) or minimally biased convergence (without warning). As a consequence, the \code{"Sigma.cov"} component of the \code{hhh4()} result, which is the inverse of the marginal Fisher information matrix at the MLE, was also wrong. \item \code{untie.matrix()} could have produced jittering greater than the specified \code{amount}. \item \code{hhh4}: if there are no random intercepts, the redundant \code{updateVariance} steps are no longer evaluated. \item \code{update.twinstim()} did not work with \code{optim.args=..1} (e.g., if updating a list of models with lapply). Furthermore, if adding the \code{model} component only, the \code{control.siaf} and \code{optim.args} components were lost. \item \code{earsC} should now also work with multivariate \code{sts} time-series objects. \item The last week in \code{data(fluBYBW)} (row index 417) has been removed. It corresponded to week 1 in year 2009 and was wrong (an artifact, filled with zero counts only). Furthermore, the regions in \code{@map} are now ordered the same as in \code{@observed}. \item Fixed start value of the overdispersion parameter in \code{oneStepAhead} (must be on internal log-scale, not reparametrized as returned by \code{coef()} by default). \item When subsetting \code{"sts"} objects in time, \code{@start} was updated but not \code{@epoch}. \item \code{pit} gave \code{NA} results if any \code{x[-1]==0}. \item The returned \code{optim.args$par} vector in \code{twinstim()} was missing any fixed parameters. \item \code{hhh4()} did not work with time-varying neighbourhood weights due to an error in the internal \code{checkWeightsArray()} function. } } } \section{Changes in surveillance version 1.5-4 (2013-04-21)}{ \subsection{SYNOPSIS}{ \itemize{ \item Fixed obsolete \code{.path.package()} calls. \item Small corrections in the documentation. \item \code{update.twinstim()} performs better in preserving the original initial values of the parameters. \item New pre-defined spatial interaction function \code{siaf.powerlawL()}, which implements a _L_agged power-law kernel, i.e. accounts for uniform short-range dispersal. } } } \section{Changes in surveillance version 1.5-2 (2013-03-15)}{ \subsection{SYNOPSIS}{ \itemize{ \item New method for outbreak detection: \code{earsC} (CUSUM-method described in the CDC Early Aberration Reporting System, see Hutwagner et al, 2003). \item New features and minor bug fixes for the "\code{twinstim}" part of the package (see below). \item Yet another p-value formatting function \code{formatPval()} is now also part of the \pkg{surveillance} package. \item \code{polyCub.SV()} now also accepts objects of classes \code{"Polygon"} and \code{"Polygons"} for convenience. \item \code{siaf.lomax} is deprecated and replaced by \code{siaf.powerlaw} (re-parametrization). } } \subsection{NEW FEATURES (\code{twinstim()}-related)}{ \itemize{ \item The temporal \code{plot}-method for class \code{"epidataCS"} now understands the \code{add} parameter to add the histogram to an existing plot window, and auto-transforms the \code{t0.Date} argument using \code{as.Date()} if necessary. \item \code{nobs()} methods for classes \code{"epidataCS"} and \code{"twinstim"}. \item New argument \code{verbose} for \code{twinstim()} which, if set to \code{FALSE}, disables the printing of information messages during execution. \item New argument \code{start} for \code{twinstim()}, where (some) initial parameter values may be provided, which overwrite those in \code{optim.args$par}, which is no longer required (as a naive default, a crude estimate for the endemic intercept and zeroes for the other parameters are used). \item Implemented a wrapper \code{stepComponent()} for \code{step()} to perform algorithmic component-specific model selection in \code{"twinstim"} models. This also required the implementation of suitable \code{terms()} and \code{extractAIC()} methods. The single-step methods \code{add1()} and \code{drop1()} are also available. \item The \code{update.twinstim()} method now by default uses the parameter estimates from the previous model as initial values for the new fit (new argument \code{use.estimates = TRUE}). \item \code{as.epidataCS()} checks for consistency of the area of \code{W} and the (now really obligatory) area column in \code{stgrid}. \item \code{simulate.twinstim()} now by default uses the previous \code{nCircle2Poly} from the \code{data} argument. \item \code{direction} argument for \code{untie.epidataCS()}. \item The \code{toLatex}-method for \code{"summary.twinstim"} got different defaults and a new argument \code{eps.Pvalue}. \item New \code{xtable}-method for \code{"summary.twinstim"} for printing the covariate effects as risk ratios (with CI's and p-values). } } \subsection{NEW FEATURES (\code{hhh4()}-related)}{ \itemize{ \item New argument \code{hide0s} in the \code{plot}-method for class \code{"ah4"}. \item New argument \code{timevar} for \code{addSeason2formula()}, which now also works for long formulae. } } } \section{Changes in surveillance version 1.5-1 (2012-12-14)}{ \subsection{SYNOPSIS}{ \itemize{ \item The \pkg{surveillance} package is again backward-compatible with \R version 2.14.0, which is now declared as the minimum required version. } } } \section{Changes in surveillance version 1.5-0 (2012-12-12)}{ \subsection{SYNOPSIS}{ \itemize{ \item This new version mainly improves upon the \code{twinstim()} and \code{hhh4()} implementations (see below). \item As requested by the CRAN team, examples now run faster. Some are conditioned on the value of the new package option \code{"allExamples"}, which usually defaults to \code{TRUE} (but is set to \code{FALSE} for CRAN checking, if timings are active). \item Moved some rarely used package dependencies to \dQuote{Suggests:}, and also removed some unused packages from there. \item Dropped strict dependence on \CRANpkg{gpclib}, which has a restricted license, for the \pkg{surveillance} package to be clearly GPL-2. Generation of \code{"epidataCS"} objects, which makes use of \pkg{gpclib}'s polygon intersection capabilities, now requires prior explicit acceptance of the \pkg{gpclib} license via setting \code{surveillance.options(gpclib = TRUE)}. Otherwise, \code{as.epidataCS()} and \code{simEpidataCS()} may not be used. } } \subsection{NEW FEATURES (\code{twinstim()}-related)}{ \itemize{ \item Speed-up by memoisation of the \code{siaf} cubature (using the \CRANpkg{memoise} package). \item Allow for \code{nlm}-optimizer (really not recommended). \item Allow for \code{nlminb}-specific control arguments. \item Use of the expected Fisher information matrix can be disabled for \code{nlminb} optimization. \item Use of the \code{effRange}-trick can be disabled in \code{siaf.gaussian()} and \code{siaf.lomax()}. The default \code{effRangeProb} argument for the latter has been changed from 0.99 to 0.999. \item The \code{twinstim()} argument \code{nCub} has been replaced by the new \code{control.siaf} argument list. The old \code{nCub.adaptive} indicator became a feature of the \code{siaf.gaussian()} generator (named \code{F.adaptive} there) and does no longer depend on the \code{effRange} specification, but uses the bandwidth \code{adapt*sd}, where the \code{adapt} parameter may be specified in the \code{control.siaf} list in the \code{twinstim()} call. Accordingly, the components \code{"nCub"} and \code{"nCub.adaptive"} have been removed from the result of \code{twinstim()}, and are replaced by \code{"control.siaf"}. \item The \code{"method"} component of the \code{twinstim()} result has been replaced by the whole \code{"optim.args"}. \item The new \code{"Deriv"} component of \code{siaf} specifications integrates the \dQuote{siaf$deriv} function over a polygonal domain. \code{siaf.gaussian()} and \code{siaf.lomax()} use \code{polyCub.SV()} (with intelligent \code{alpha} parameters) for this task (previously: midpoint-rule with naive bandwidth) \item \code{scaled} \code{iafplot()} (default \code{FALSE}). The \code{ngrid} parameter has been renamed to \code{xgrid} and is more general. \item The \code{"simulate"} component of \code{siaf}'s takes an argument \code{ub} (upperbound for distance from the source). \item Numerical integration of spatial interaction functions with an \code{Fcircle} trick is more precise now; this slightly changes previous results. \item New \acronym{S3}-generic \code{untie()} with a method for the \code{"epidataCS"} class (to randomly break tied event times and/or locations). \item Renamed \code{N} argument of \code{polyCub.SV()} to \code{nGQ}, and \code{a} to \code{alpha}, which both have new default values. The optional polygon rotation proposed by Sommariva & Vianello is now also implemented (based on the corresponding MATLAB code) and available as the new \code{rotation} argument. \item The \code{scale.poly()} method for \code{"gpc.poly"} is now available as \code{scale.gpc.poly()}. The default return class of \code{discpoly()} was changed from \code{"gpc.poly"} to \code{"Polygon"}. \item An \code{intensityplot()}-method is now also implemented for \code{"simEpidataCS"}. } } \subsection{NEW FEATURES (\code{hhh4()}-related)}{ \itemize{ \item Significant speed-up (runs about 6 times faster now, amongst others by many code optimizations and by using sparse \CRANpkg{Matrix} operations). \item \code{hhh4()} optimization routines can now be customized for the updates of regression and variance parameters seperately, which for instance enables the use of Nelder-Mead for the variance updates, which seems to be more stable/robust as it does not depend on the inverse Fisher info and is usually faster. \item The \code{ranef()} extraction function for \code{"ah4"} objects gained a useful \code{tomatrix} argument, which re-arranges random effects in a unit x effect matrix (also transforming CAR effects appropriately). \item Generalized \code{hhh4()} to also capture parametric neighbourhood weights (like a power-law decay). The new function \code{nbOrder()} determines the neighbourhood order matrix from a binary adjacency matrix (depends on package \CRANpkg{spdep}). \item New argument \code{check.analyticals} (default \code{FALSE}) mainly for development purposes. } } \subsection{BUG FIXES}{ \itemize{ \item Fixed sign of observed Fisher information matrix in \code{twinstim}. \item Simulation from the Lomax kernel is now correct (via polar coordinates). \item Fixed \code{modifyListcall()} to also work with updated \code{NULL} arguments. \item Fixed wrong Fisher information entry for the overdispersion parameter in \code{hhh4}-models. \item Fixed wrong entries in penalized Fisher information wrt the combination fixed effects x CAR intercept. \item Fixed indexing bug in penalized Fisher calculation in the case of multiple overdispersion parameters and random intercepts. \item Fixed bug in Fisher matrix calculation concerning the relation of unit-specific and random effects (did not work previously). \item Improved handling of non-convergent / degenerate solutions during \code{hhh4} optimization. This involves using \code{ginv()} from package \CRANpkg{MASS}, if the penalized Fisher info is singular. \item Correct labeling of overdispersion parameter in \code{"ah4"}-objects. \item Some control arguments of \code{hhh4()} have more clear defaults. \item The result of \code{algo.farrington.fitGLM.fast()} now additionally inherits from the \code{"lm"} class to avoid warnings from \code{predict.lm()} about fake object. \item Improved \file{NAMESPACE} imports. \item Some additional tiny bug fixes, see the subversion log on R-Forge for details. } } } \section{Changes in surveillance version 1.4-2 (2012-08-17)}{ \subsection{SYNOPSIS}{ \itemize{ \item This is mainly a patch release for the \code{twinstim}-related functionality of the package. \item Apart from that, the package is now again compatible with older releases of \R (< 2.15.0) as intended (by defining \code{paste0()} in the package namespace if it is not found in \R \pkg{base} at installation of the \pkg{surveillance} package). } } \subsection{NEW FEATURES}{ \itemize{ \item Important new \code{twinstim()}-feature: fix parameters during optimization. \item Useful \code{update}-method for \code{"twinstim"}-objects. \item New \code{[[}- and \code{plot}-methods for \code{"simEpidataCSlist"}-objects. \item \code{simEpidataCS()} received tiny bug fixes and is now able to simulate from epidemic-only models. \item \code{R0}-method for \code{"simEpidataCS"}-objects (actually a wrapper for \code{R0.twinstim()}). \item Removed \code{dimyx} and \code{eps} arguments from \code{R0.twinstim()}; now uses \code{nCub} and \code{nCub.adaptive} from the fitted model and applies the same (numerical) integration method. \item \code{animate.epidata} is now compatible with the \CRANpkg{animation} package. \item More thorough documentation of \code{"twinstim"}-related functions \emph{including many examples}. } } \subsection{BUG FIXES (\code{"twinstim"}-related)}{ \itemize{ \item \code{nlminb} (instead of \code{optim}'s \code{"BFGS"}) is now the default optimizer (as already documented). \item The \code{twinstim}-argument \code{nCub} can now be omitted when using \code{siaf.constant()} (as documented) and is internally set to \code{NA_real_} in this case. Furthermore, \code{nCub} and \code{nCub.adaptive} are set to \code{NULL} if there is no epidemic component in the model. \item \code{toLatex.summary.twinstim} now again works for \code{summary(*, test.iaf=FALSE)}. \item \code{print}- and \code{summary}-methods for \code{"epidataCS"} no longer assume that the \code{BLOCK} index starts at 1, which may not be the case when using a subset in \code{simulate.twinstim()}. \item The \code{"counter"} step function returned by \code{summary.epidataCS()} does no longer produce false numbers of infectives (they were lagged by one timepoint). \item \code{plot.epidataCS()} now resolves \dots correctly and the argument \code{colTypes} takes care of a possible \code{subset}. \item \code{simEpidataCS()} now also works for endemic-only models and is synchronised with \code{twinstim()} regarding the way how \code{siaf} is numerically integrated (including the argument \code{nCub.adaptive}). \item Fixed problem with \code{simEpidataCS()} related to missing \file{NAMESPACE} imports (and re-exports) of \code{marks.ppp} and \code{markformat.default} from \CRANpkg{spatstat}, which are required for \code{spatstat::runifpoint()} to work, probably because \pkg{spatstat} currently does not register its S3-methods. \item Improved error handling in \code{simEpidataCS()}. Removed a \code{browser()}-call and avoid potentially infinite loop. } } \subsection{BUG FIXES (\code{"twinSIR"}-related)}{ \itemize{ \item The \code{.allocate} argument of \code{simEpidata()} has now a fail-save default. \item Simulation without endemic \code{cox()}-terms now works. } } \subsection{MINOR CHANGES}{ \itemize{ \item Simplified \code{imdepi} data to monthly instead of weekly intervals in \code{stgrid} for faster examples and reduced package size. \item The environment of all predefined interaction functions for \code{twinstim()} is now set to the \code{.GlobalEnv}. The previous behaviour of defining them in the \code{parent.frame()} could have led to huge \code{save()}'s of \code{"twinstim"} objects even with \code{model=FALSE}. \item \code{simulate.twinSIR} only returns a list of epidemics if \code{nsim > 1}. \item \code{simulate.twinstim} uses \code{nCub} and \code{nCub.adaptive} from fitted object as defaults. \item Removed the \dots-argument from \code{simEpidataCS()}. \item The coefficients returned by \code{simEpidataCS()} are now stored in a vector rather than a list for compatibility with \code{"twinstim"}-methods. \item Argument \code{cex.fun} of \code{intensityplot.twinstim()} now defaults to the \code{sqrt} function (as in \code{plot.epidataCS()}. } } } \section{Changes in surveillance version 1.4 (2012-07-26)}{ \subsection{SYNOPSIS}{ \itemize{ \item Besides minor bug fixes, additional functionality has entered the package and a new attempt is made to finally release a new version on CRAN (version 1.3 has not appeared on CRAN), including a proper \file{NAMESPACE}. } } \subsection{NEW FEATURES}{ \itemize{ \item Support for non-parametric back-projection using the function \code{backprojNP()} which returns an object of the new \code{"stsBP"} class which inherits from \code{"sts"}. \item Bayesian nowcasting for discrete time count data is implemented in the function \code{nowcast()}. \item Methods for cubature over polygonal domains can now also visualize what they do. There is also a new quasi-exact method for cubature of the bivariate normal density over polygonal domains. The function \code{polyCub()} is a wrapper for the different methods. \item \code{residuals.twinstim()} and \code{residuals.twinSIR()}: extract the \dQuote{residual process}, see \cite{Ogata (1988)}. The residuals of \code{"twinSIR"} and \code{"twinstim"} models may be checked graphically by the new function \code{checkResidualProcess()}. \item Many new features for the \code{"twinstim"} class of self-exciting spatio-temporal point process models (see below). } } \subsection{NEW FEATURES AND SIGNIFICANT CHANGES FOR \code{"twinstim"}}{ \itemize{ \item Modified arguments of \code{twinstim()}: new ordering, new argument \code{nCub.adaptive}, removed argument \code{typeSpecificEndemicIntercept} (which is now specified as part of the \code{endemic} formula as \code{(1|type)}). \item Completely rewrote the \code{R0}-method (calculate \dQuote{trimmed} and \dQuote{untrimmed} \eqn{R_0} values) \item The \dQuote{trimmed} \code{R0} values are now part of the result of the model fit, as well as \code{bbox(W)}. The model evaluation environment is now set as attribute of the result if \code{model=TRUE}. \item New predefined spatial kernel: the Lomax power law kernel \code{siaf.lomax()} \item \code{plot}-methods for \code{"twinstim"} (\code{intensityplot()} and \code{iafplot()}) \item \code{as.epidataCS()} now auto-generates the stop-column if this is missing \item \code{print}-method for class \code{"summary.epidataCS"} \item \code{[}- and subset-method for \code{"epidataCS"} (subsetting \code{...$events}) \item \code{plot}-method for \code{"epidataCS"} } } \subsection{MINOR CHANGES}{ \itemize{ \item Improved documentation for the new functionalities. \item Updated references. \item \code{twinSIR}'s \code{intensityPlot} is now a method of the new S3-generic function \code{intensityplot}. } } } \section{Changes in surveillance version 1.3 (2011-04-25)}{ \subsection{SYNOPSIS}{ \itemize{ \item This is a major realease integrating plenty of new code (unfortunately not all documented as good as it could be). This includes code for the \code{"twinstim"} and the \code{"hhh4"} model. The \code{"twinSIR"} class of models has been migrated from package \pkg{RLadyBug} to \pkg{surveillance}. It may take a while before this version will become available from CRAN. For further details see below. } } \subsection{SIGNIFICANT CHANGES}{ \itemize{ \item Renamed the \code{"week"} slot of the \code{"sts"} S4 class to \code{"epoch"}. All saved data objects have accordingly be renamed, but some hazzle is to be expected if one you have old \code{"sts"} objects stored in binary form. The function \code{convertSTS()} can be used to convert such \dQuote{old school} \code{"sts"} objects. \item Removed the functions \code{algo.cdc()} and \code{algo.rki()}. } } \subsection{NEW FEATURES}{ \itemize{ \item Support for \code{"twinSIR"} models (with associated \code{"epidata"} objects) as described in \cite{Höhle (2009)} has been moved from package \pkg{RLadyBug} to \pkg{surveillance}. That means continuous-time discrete-space \acronym{SIR} models. \item Support for \code{"twinstim"} models as described in \cite{Meyer et al (2012)}. That means continuous-time continuous-space infectious disease models. \item Added functionality for non-parametric back projection (\code{backprojNP()}) and now-casting (\code{nowcast()}) based on \code{"sts"} objects. } } } \section{Changes in surveillance version 1.2-2}{ \itemize{ \item Replaced the deprecated getSpPPolygonsLabptSlots method with calls to the coordinates method when plotting the map slot. \item Minor proof-reading of the documentation. \item Added an argument \code{"extraMSMargs"} to the algo.hmm function. \item Fixed bug in \code{outbreakP()} when having observations equal to zero in the beginning. Here, \eqn{\hat{\mu}^{C1}} in (5) of \cite{Frisen et al (2008)} is zero and hence the log-based summation in the code failed. Changed to product as in the original code, which however might be less numerically stable. \item Fixed bug in stcd which added one to the calculated index of idxFA and idxCC. Thanks to Thais Rotsen Correa for pointing this out. } } \section{Changes in surveillance version 1.2-1 (2010-06-10)}{ \itemize{ \item Added \code{algo.outbreakP()} (\cite{Frisen & Andersson, 2009}) providing a semiparametric approach for outbreak detection for Poisson distributed variables. \item Added a pure \R function for extracting ISO week and year from Date objects. This function (isoWeekYear) is only called if "\%G" and "\%V" format strings are used on Windows (\code{sessionInfo()[[1]]$os == "mingw32"}) as this is not implemented for \code{"format.Date"} on Windows. Thanks to Ashley Ford, University of Warwick, UK for identifying this Windows specific bug. \item For \code{algo.farrington()} a faster fit routine \code{"algo.farrington.fitGLM.fast"} has been provided by Mikko Virtanen, National Institute for Health and Welfare, Finland. The new function calls \code{glm.fit()} directly, which gives a doubling of speed for long series. However, if one wants to process the fitted model output some of the GLM routines might not work on this output. For backwards compability the argument \code{control$fitFun = "algo.farrington.fitGLM"} provides the old (and slow) behaviour. } } \section{Changes in surveillance version 1.1-6 (2010-05-25)}{ \itemize{ \item A few minor bug fixes \item Small improvements in the C-implementation of the \code{twins()} function by Daniel Sabanés Bové fixing the segmentation fault issue on 64-bit architectures. } } \section{Changes in surveillance version 1.1-2 (2009-10-15)}{ \itemize{ \item Added the functions categoricalCUSUM and LRCUSUM.runlength for the CUSUM monitoring of general categorical time series (binomial, beta-binomial, multinomial, ordered response, Bradley-Terry models). \item Added the functions pairedbinCUSUM and pairedbinCUSUM.runlength implementing the CUSUM monitoring and run-length computations for a paired binary outcome as described in Steiner et al. (1999). \item Experimental implementation of the prospective space-time cluster detection described in Assuncao and Correa (2009). \item Added a \code{demo("biosurvbook")} containing the code of an upcoming book chapter on how to use the surveillance package. This contains the description of ISO date use, negative binomial CUSUM, run-length computation, etc. From an applicational point of view the methods are illustrated by Danish mortality monitoring. \item Fixed a small bug in algo.cdc found by Marian Talbert Allen which resulted in the control$m argument being ignored. \item The constructor of the sts class now uses the argument \code{"epoch"} instead of weeks to make clearer that also daily, monthly or other data can be handled. \item Added additional epochAsDate slot to sts class. Modified plot functions so they can handle ISO weeks. \item algo.farrington now also computes quantile and median of the predictive distribution. Furthermore has the computation of reference values been modified so its a) a little bit faster and b) it is also able to handle ISO weeks now. The reference values for date t0 are calculated as follows: For i, i=1,..., b look at date t0 - i*year. From this date on move w months/weeks/days to the left and right. In case of weeks: For each of these determined time points go back in time to the closest Monday \item Renamed the functions obsinyear to epochInYear, which now also handles objects of class Date. } } \section{Changes in surveillance version 1.0-2 (2009-03-06)}{ \itemize{ \item Negative Binomial CUSUM or the more general NegBin likelihood ratio detector is now implemented as part of algo.glrnb. This includes the back calculation of the required number of cases before an alarm. \item Time varying proportion binomial CUSUM. } } \section{Changes in surveillance version 0.9-10}{ \itemize{ \item Current status: Development version available from \url{http://surveillance.r-forge.r-project.org/} \item Rewriting of the plot.sts.time.one function to use polygons instead of lines for the number of observed cases. Due cause a number of problems were fixed in the plotting of the legend. Plotting routine now also handles binomial data, where the number of observed cases y are stored in \code{"observed"} and the denominator data n are stored in \code{"populationFrac"}. \item Problems with the aggregate function not operating correctly for the populationFrac were fixed. \item The \code{"rogerson"} wrapper function for algo.rogerson was modified so it now works better for distribution \code{"binomial"}. Thus a time varying binomial cusum can be run by calling \code{rogerson( x, control(..., distribution="binomial"))} \item An experimental implementation of the twins model documented in Held, L., Hofmann, M., Höhle, M. and Schmid V. (2006) A two-component model for counts of infectious diseases, Biostatistics, 7, pp. 422--437 is now available as algo.twins. } } \section{Changes in surveillance version 0.9-9 (2008-01-21)}{ \itemize{ \item Fixed a few small problems which gave warnings in the CRAN distribution } } \section{Changes in surveillance version 0.9-8 (2008-01-19)}{ \itemize{ \item The algo_glrpois function now has an additional \code{"ret"} arguments, where one specifies the return type. The arguments of the underlying c functions have been changed to include an additional direction and return type value arguments. \item added restart argument to the algo.glrpois control object, which allows the user to control what happens after the first alarm has been generated \item experimental algo.glrnb function is added to the package. All calls to algo.glrpois are now just alpha=0 calls to this function. However, the underlying C functions differentiate between poisson and negative case } } surveillance/inst/shapes/0000755000175100001440000000000012375615513015234 5ustar hornikuserssurveillance/inst/shapes/berlin.dbf0000755000175100001440000000161611731650466017174 0ustar hornikusersj AWIdNBEZIRKC2SNAMEC 0Steglitz-Zehlendorf zehl 0Tempelhof-Schöneberg scho 0Spandau span 0Charlottenburg-Wilmersdorf chwi 0Mitte mitt 0Neukölln neuk 0Friedrichshain-Kreuzberg frkr 0Treptow-Köpenick trko 0Marzahn-Hellersdorf mahe 0Lichtenberg lich 0Pankow pank 0Reinickendorf rein surveillance/inst/shapes/berlin.shx0000755000175100001440000000030411731650466017234 0ustar hornikusers' bèZC ê08Ažâ³ešõ@`©/ ´d=A^i(àTA2XŽ’0ÆØ¢è–ØràVø R V8 ’ˆ 0surveillance/inst/shapes/berlin.sbx0000755000175100001440000000020411731650466017225 0ustar hornikusers' ÿÿþpB A80ê CZ@õše³âžA=d´ /©`ATà(i^2 BV fsurveillance/inst/shapes/berlin.shp0000755000175100001440000001624411731650466017236 0ustar hornikusers' RèZC ê08Ažâ³ešõ@`©/ ´d=A^i(àTAXZC ê08Arÿ6n@ý@ê¯í d:An7KÉæëA(&ÏpßÇ68AÂoqß:AZC ê08A§ÆñªA¤¬ËtrE8A›úœœÿ”A¶µ%ÚéQ8A›úœœÿ”A ˆat8A8{šòÚRAM/ð´>¦8AÆÃj–¶AïÿØÍ8ApX‘ÈÿAÚÐZÚµÞ8A<äèúA¸e  ñ8AÙdæóÕÂAOßÖï_E9AÙdæóÕÂA/î/ù‚9A²g_SA)‘Y…£½9An7KÉæëA¶2Īö9AtÁßs<±A ¹  + :Aâ3ÅsÖjAøj|e :A ÙŽø¼A;£4 ø=:A‘.|ó=©Aê¯í d:A¢¨5Ê)Aئ“¥¢W:ATè6rÜJAÉâƒÖ-:A§ÆñªAÐlÀ+ó9AËÄà7Ñ–ÿ@úa5pÑ9A9œàñfAëDQ¥£§9AÁ6œ5Ac–Z}9AñevñxLA*/>U u9A\“h#A…úäÆj9AüXYGîÃAï'€JµA9A0Ír¾Ad$úô¤À8Ajf$âgÿ@d$úô¤À8AÇ[’Œ±äý@”SXJØ8AºGi7Zþ@z5 Û8AÍå&7ªý@Ý¥¯`Á8A )®á)Lý@²í$¥Ÿ8Aþ…Œ~Áý@oš>zé“8Arÿ6n@ý@–ñ<ƒ8Añ\7Ó6þ@ž"7Ê€8AÍå&7ªý@³pÛ?o8A}âŒã·þ@¡gŸÇb8AvzMâòþ@^':PV8AºFŠAEõtÏÇA8A+d³Æð A&ÏpßÇ68AÂoqß:A¶2Īö9Awx&'ŸŸû@’ ô× Ý:A^¾{<ª AoêþòÆÆ:A›AàYCJA’ ô× Ý:A+ÈnEw€ý@zyeèÑ:A{EHb=Ãû@ê6LšY‘:Awx&'ŸŸû@IýçÒåŒ:A6/ÔöQëý@E0Æ—Gi:A:üõ1ðþ@®>Ÿ‰dj:AQÊÀ”¥äþ@(‹ì0÷4:Aˆ@72,˜AÉâƒÖ-:A§ÆñªAئ“¥¢W:ATè6rÜJAê¯í d:A¢¨5Ê)A;£4 ø=:A‘.|ó=©Aøj|e :A ÙŽø¼A ¹  + :Aâ3ÅsÖjA¶2Īö9AtÁßs<±A$f¨³Ð÷9AèÃA)ß$+:AŒæ¦ÒAç É:A^¾{<ª ASóÏÊP:A‹µ1ç3 AÕÙ¯ì™b:A½ôr‰¢ˆ A4 K%&^:AªóÉa‹ÖAcÕŸþ—:AªóÉa‹ÖA­¥F¬:A—ò :t$A^Z„€¥»:At½ð%äãAÜ%ªÅ:AŸbîQA WAœ§:A¹©î25gAÆ ¢:Abh[A˜ˆA¾ ¹1·:Ae5}|6¬AoêþòÆÆ:A›AàYCJA0 -Ë S8A8{šòÚRA7ª8î"™9Aj5 ³`ØA# ˆat8A8{šòÚRA­f/èuW8A®lÿßôPA -Ë S8AVUâLòÆAVèÐhza8A¹ýÚïiAØÎa†Is8A½Êü*4A”0Òܽ8A(¶ÝŠ AÊ OÆ‹8A/Ñò“` A呺½ÌZ8AçÃæo A—[™÷aj8AVýºÆ[AúîVkŒ‰8AÌ|æ2PÀA£pøë“8Aäl+¦xA2â@ãŒ8AôwÁÃùAÿiré~k8AŒ@ÅhVÄAVèÐhza8A˜§*1/AÂÃË•5†8AÜçä¶[AÇ—>š8Aj5 ³`ØAFÉ„«Ný8AZ„ÆçIA`¡<×9A}!y«*`A¡fè9AŒ@ÅhVÄAÄ4úJ+-9AŸ,3a LAÝìA.ƒ(9A ÃQ!A_‡Òd9AR0™‹½õAEm‘%¦€9AR0™‹½õA7ª8î"™9Açí\r e A%½³Ïv‡9A¢ÖˆgÉ AÙ‘–øê[9AJlß¶æY A»ì¼‘š'9AJlß¶æY AƒÁ1¼C$9AçÃæo AeXUóï8A½ôr‰¢ˆ A¸e  ñ8AÙdæóÕÂA,Ehšå8A CŒ.…ŸAÚÐZÚµÞ8A<äèúAïÿØÍ8ApX‘ÈÿAM/ð´>¦8AÆÃj–¶A ˆat8A8{šòÚRAØeXUóï8A²g_SAç É:AÔ*©ŒA§RUV|á9AÔ*©ŒA1#-Üø9A;bÎ( Až ëÛ9AèE¬ Awo:¶ã9A„EdÏ‘ AÁ* ‚.ò9AR#-#¡ Aì’? :AtÝâ A«w‘:Aï]*Š«W AãJgq:A k,Ò Aç É:A^¾{<ª A)ß$+:AŒæ¦ÒA$f¨³Ð÷9AèÃA¶2Īö9AtÁßs<±A)‘Y…£½9An7KÉæëA/î/ù‚9A²g_SAOßÖï_E9AÙdæóÕÂA¸e  ñ8AÙdæóÕÂAeXUóï8A½ôr‰¢ˆ AƒÁ1¼C$9AçÃæo A»ì¼‘š'9AJlß¶æY AÙ‘–øê[9AJlß¶æY A%½³Ïv‡9A¢ÖˆgÉ A7ª8î"™9Açí\r e AEm‘%¦€9AR0™‹½õA§RUV|á9AÔ*©ŒAè̸¬ÌeÃ9A‹µ1ç3 A7¿spÃ:Aè9?fDœAÝ!í¥*h:Aè9?fDœA/%0§3|:AÙ_·{YAê6LšY‘:Aëº~­§ˆ Aʎ骺:A%zv«®# A7¿spÃ:A“yë» ª AŽ=Òœk¹:AxÞþ·° A7¿spÃ:AëO 4 A­¥F¬:A$jg¸õ Aê6LšY‘:A,ÑÝô< Aœ®$C_:Aª@À%+ ASóÏÊP:A‹µ1ç3 Aç É:A^¾{<ª AãJgq:A k,Ò A«w‘:Aï]*Š«W Aì’? :AtÝâ AÁ* ‚.ò9AR#-#¡ Awo:¶ã9A„EdÏ‘ Až ëÛ9AèE¬ A1#-Üø9A;bÎ( A§RUV|á9AÔ*©ŒA̸¬ÌeÃ9Aš%A½]ëFÎ9A÷X‹#pA.Pƒ7:A!Ä~ï]A‹ª¤!T:A^¹jÒ8CAó,ƒ–>U:AÅJ†AÝ!í¥*h:Aè9?fDœAÝ!í¥*h:Aè9?fDœAØcÕŸþ—:A|_” ¯A]*ðä—;An[éëÔ A•$“jD;A|_” ¯A”©À0";AAsÞ"‘AoêþòÆÆ:A›AàYCJA¾ ¹1·:Ae5}|6¬AÆ ¢:Abh[A˜ˆA WAœ§:A¹©î25gAÜ%ªÅ:AŸbîQA^Z„€¥»:At½ð%äãA­¥F¬:A—ò :t$AcÕŸþ—:AªóÉa‹ÖA { "¤:AÍã44Í> A5Äü×YÁ:A{àñ2Ä* AŒB[WU·:An[éëÔ A Ÿ÷æ:A=ŽàƒY A…§£;A ŠÛ‡$ AÆÞ]SZ!;Aù»%aNAà¶ 2;A߆àÑ A¡•œ‰*;AÂÂÞ±6tA {ò1Ð ;ARlȉmA\~53Ù;AÛ=õ UA3°ý™‰Š;A¯:#~Å>A]*ðä—;A‰¼mP:A3°ý™‰Š;Aë&ÙSÄA•$“jD;A|_” ¯AàSóÏÊP:AªóÉa‹ÖA› –H;A©ÝzÅ  A4 K%&^:AªóÉa‹ÖAÕÙ¯ì™b:A½ôr‰¢ˆ ASóÏÊP:A‹µ1ç3 Aœ®$C_:Aª@À%+ Aê6LšY‘:A,ÑÝô< A­¥F¬:A$jg¸õ A7¿spÃ:AëO 4 AŽ=Òœk¹:AxÞþ·° A7¿spÃ:A“yë» ª Aʎ骺:A%zv«®# AöV„Ü:A©ÝzÅ  Aä¶^ðÄñ:A´“wªd A#Ø×PHù:AFÌÏ· Aë'ˆ+;A—ÏË AX»ø² ;AŽQ)œR A]¼ÒU;AÈÅ‘ž¸Œ A› –H;Añ@9ñŽ Aâ Tc5;AÍã44Í> Añ¢:ú:A•"GTk Aõ/še»ß:A~­"r AŒB[WU·:An[éëÔ A5Äü×YÁ:A{àñ2Ä* A { "¤:AÍã44Í> AcÕŸþ—:AªóÉa‹ÖA4 K%&^:AªóÉa‹ÖAøõ/še»ß:Ažâ³ešõ@`©/ ´d=A•"GTk A<3°ý™‰Š;Aë&ÙSÄA]*ðä—;A‰¼mP:A3°ý™‰Š;A¯:#~Å>A\~53Ù;AÛ=õ UA {ò1Ð ;ARlȉmA¡•œ‰*;AÂÂÞ±6tAà¶ 2;A߆àÑ AÆÞ]SZ!;Aù»%aNA…§£;A ŠÛ‡$ A Ÿ÷æ:A=ŽàƒY Aõ/še»ß:A~­"r Añ¢:ú:A•"GTk Aâ Tc5;AÍã44Í> A› –H;Añ@9ñŽ A#SaìÉ[;A˜†˜†  A HËûµn;A Ò<‰(A-hÀàø„;AÍ+–²?CA¥g©u;AD~¨÷¢A/5â—¨;AŸ^A'LAº0Ò-•ã;A…ï^ö]AìàA…ù èA½¢© ¢<=AîÔ®~ŃAæ¥=ž(=A™YË(uAqM`LíæþA*L+ƒ»;A^z5©r A—C» ´©;A1 ¿iGÍ A¶–Ž·Xœ;A9=FVÀ[ A‡³@›’ž;A˜H*Ž( Aíô÷Q|;AÆñ¡ÖDC AµFt;AåÁ¾ˆ(}Až¾Ö‹¦‹;Aë($:èA]Ký¾‚;AAoqÏ@A/5â—¨;Aë©!`Z÷A1W5Ì;AO #:A÷mf!ß;A/·-e~GA“•ÁÊ_ë;AÎ#pñS(A¬myöü;Aþ.*§IAA~Èü>`ïÀ›Xžg¨;A‡ˆ„:õðAµÆ†çèÊ;A„!‰†A1W5Ì;A¹j)/¤<A/5â—¨;AU J€ÛùA]Ký¾‚;A«Ï<‘PCAž¾Ö‹¦‹;A¿étzíAµFt;A¹‚É*‚Aíô÷Q|;Aš²òGH A‡³@›’ž;AØX™j- A¶–Ž·Xœ;A þ––Â` A—C» ´©;AʪIÒ A*L+ƒ»;A2;†éw AàþÀU,¸;Aë`X©@ AòÏ•í5Á;AH{“>˜XA/5â—¨;Aâ_¯)QA¥g©u;AÒÎèù§A-hÀàø„;A¡ìæòAHA HËûµn;Aà’F‹-A#SaìÉ[;AlGéÆ A› –H;A籑yó“ A]¼ÒU;Aœ†âÞº‘ AX»ø² ;AbzÜT Aë'ˆ+;A—ÏË Aà¨+Ü—;A@ãž Aïk„þ:Aáœ(Å` A 5cM° ;A,ä—Ÿ wAé½ŠÐÆ?;A¸Ås5AÑåÒ¤/;AÜLÎ#SˆAi×ù²÷-;A~ vaÔAˆ*Í\œ ;AÀ``+‰A¸ yb;A£tò2¿xA9ô«–10;A'ÂèiõAš‡i \O;A©B½•tNAB ‹`Y;A<7“b&A ˆ â³hí:AFÌÏ· A"¶7á»f;A^i(àTA.ãï¿mj:AÙ,,ÄAd£rÆ~Ÿ:A¥¥"³5A…Ãg«Áµ:A‹6@‚GA%ýËr5º:Aò¸7*é­Aò5‚!Í:AôR{ %õA§°~Ë¢ï:A´ß²>ìA÷³ÁÌ«;AwÓO41NAþ.ÝJžå:A—óDtdA®+šI•Ñ:Aym“ªm•Aö柑 à:Aœ'ÌíòA?¢¥Ù…î:A[´wêA—í%”;A^i(àTA_š¾È;Aœ'ÌíòA€â£ ;A\%²£ AH·δ;Ax qoÏqA Þµ V;ASLõÍA"¶7á»f;ATÙ±ðA‚|ÓHb;Aî„°=pAY¡{tF;A,^5VáAáuM6:;ADblÚAš‡i \O;A?â”uóKA9ô«–10;A½aÀáçòA¸ yb;A9Ê>vAˆ*Í\œ ;AV8 þAi×ù²÷-;AÀMA‚ÑAÑåÒ¤/;Arì¥Ò…Aé½ŠÐÆ?;ANeKm´A 5cM° ;AX#G_rAïk„þ:AI LèÂ[ Aà¨+Ü—;A@ãž Aë'ˆ+;A—ÏË A#Ø×PHù:AFÌÏ· Aä¶^ðÄñ:A´“wªd AöV„Ü:A©ÝzÅ  Aʎ骺:A%zv«®# Aê6LšY‘:Aëº~­§ˆ A/%0§3|:AÙ_·{YAÝ!í¥*h:Aè9?fDœA â³hí:A\á2°AÁ©M00:Aýg51ØA‚\úæJ:A£–_Z²A1Y¿øÝ6:AJʼnƒŒAN)ÊI:A‹W¯S ¹AêjÛëL:A޾ä#Aš4º%™[:A.øxÌW(Aãï¿mj:AÙ,,ÄA 0œÀ=“ð8AR0™‹½õAÝ!í¥*h:A@’À/A#’þõ&»9AêP)Q÷Aì0ë^ø9Ahvø‰[A1Y¿øÝ6:AJʼnƒŒA‚\úæJ:A£–_Z²AÁ©M00:Aýg51ØA â³hí:A\á2°AÚÞ8X:AÕß{ÔAÝ!í¥*h:Aè9?fDœAó,ƒ–>U:AÅJ†A‹ª¤!T:A^¹jÒ8CA.Pƒ7:A!Ä~ï]A½]ëFÎ9A÷X‹#pA̸¬ÌeÃ9Aš%AEm‘%¦€9AR0™‹½õA_‡Òd9AR0™‹½õAÝìA.ƒ(9A ÃQ!AÄ4úJ+-9AŸ,3a LA¡fè9AŒ@ÅhVÄA`¡<×9A}!y«*`AHmÓ a9Aäã&©ÅAœÀ=“ð8A`5h˜>A5†N9A‰½kÝÌqA‡VHª(d9AØá¹Õ€A~¹ab9ANKLvüA°„?d-Š9A¥¥"³5A“VJ‹9A³‘ÖŸÈApwÕE9A³‘ÖŸÈA¨<«œ„9A@’À/AжP<–µ9A@’À/AÊ)Ë}¾9A5“ej«!Aá4¯»‘«9AÓ2†»âÞAb@Ù`½9Aðô³¬fAº™žX\³9AlÑýäêA:€/v+Å9A¬w¤8LÏA’þõ&»9AêP)Q÷Asurveillance/inst/shapes/districts_BYBW.shx0000644000175100001440000000230411731650466020613 0ustar hornikusers' bèøŽ@1@.¶@¬@2¨ÞòøîèÚæ8"xžÊlð `h ÌØ ¨ ¬Xx„¨0芪€.ÐpvðjˆöHB`¦8â˜~ÀBð 60!j"~X#Ú$ÞÀ&¢à'†`(êP*>Ø+,ˆ,ªÈ.vˆ0016ˆ2Âp46€4ºÀ5~`5â¸6žà7‚08¶è9¢°:Vˆ;â°<–=²>¶?Ê@ÖðAÊBÞ˜DzøEv FšÒHpèI\€Jà@L$hLXLìhMX(N„O8P̲R‚`Sæ U 8VFzWÄXØPY,€Y°€Z4ª[â@]&P^zº`8Òb˜cªàdŽHdÚheFpeº`fÊgìÚiÊÊk˜àl|ânb0o–pšøq–ÈrbXr¾xs:ps®tºXuòw XxhÐy<zXH{¤h}~€~ `€ˆxø‚ƒ„ ð…˜†°`ˆª‰Âò‹¸ˆŒDHŒ`Œô¨ Ž´ˆ@ø‘< ’`Г4ȔڕÞh—Jˆ˜ÖŠsurveillance/inst/shapes/districts_BYBW.shp0000644000175100001440000023231011731650466020605 0ustar hornikusers' šdèøŽ@1@.¶@¬@¨¡@ì˜@v¢@Л@¡@Ü™@4¡@\›@Z¡@8›@~¡@X›@|¡@Л@¢@À›@¢@À›@"¢@¼š@v¢@dš@v¢@dš@ð¡@”™@¢@ø˜@à¡@ì˜@’¡@$™@H¡@@™@H¡@@™@6¡@D™@¡@Ü™@`ž@•@¢¡@ð›@h¡@l—@8¡@ˆ—@Þ @ø–@^ @—@¤Ÿ@0–@lŸ@•@„ž@–@„ž@–@`ž@X—@Üž@8—@ôž@(˜@ôŸ@`™@Ÿ@pš@Ÿ@pš@HŸ@¨š@ @ š@ @8›@@ @ð›@@ @ð›@h @Л@ˆ @(›@Ø @0›@¡@Ü™@¡@Ü™@6¡@D™@H¡@@™@H¡@@™@,¡@¨˜@f¡@œ˜@¢¡@З@h¡@l—@ø,¡@Ä•@¤@€š@”£@ì™@t£@À˜@–£@D˜@У@4˜@У@Ä—@¤@t—@ú£@4–@ú£@4–@b£@Ä•@n£@ –@6£@H–@â¢@–@h¡@l—@h¡@l—@¢¡@З@f¡@œ˜@,¡@¨˜@H¡@@™@H¡@@™@’¡@$™@à¡@ì˜@¢@ø˜@ð¡@”™@v¢@dš@v¢@dš@š¢@@š@î¢@€š@”£@ì™@èt£@ð•@n¦@\š@4¤@<š@ö¤@Tš@@¥@P™@Ü¥@L™@º¥@À™@<¦@`™@n¦@|™@n¦@|™@ê¥@ä—@ê¥@ä—@D¥@l–@Ú¤@x–@†¤@ð•@ú£@4–@ú£@4–@¤@t—@У@Ä—@У@4˜@–£@D˜@t£@À˜@”£@ì™@”£@ì™@У@Ä™@¤@ì™@ô£@\š@4¤@<š@ @Ü™@ö¢@LŸ@ @øž@˜ @èž@Ì @¤ž@j¡@LŸ@¢@”ž@V¢@О@ö¢@Ôž@ö¢@Ôž@¢¢@4ž@Ò¢@¨@j¢@D@Ì¢@œœ@n¢@xœ@^¢@ì›@¢@À›@¢@À›@|¡@Л@~¡@X›@Z¡@8›@4¡@\›@¡@Ü™@¡@Ü™@Ø @0›@ˆ @(›@h @Л@@ @ð›@@ @ð›@ @(@b @(@ @øž@8¢@Ä™@¥@€Ÿ@$|£@pŸ@š£@€Ÿ@2¤@Èž@ ¤@@ž@’¤@Ü@´¤@x@´¤@x@”¤@ @î¤@Tœ@¥@(›@^¤@›@d¤@Àš@4¤@<š@4¤@<š@ô£@\š@¤@ì™@У@Ä™@”£@ì™@”£@ì™@î¢@€š@š¢@@š@v¢@dš@v¢@dš@"¢@¼š@¢@À›@¢@À›@^¢@ì›@n¢@xœ@Ì¢@œœ@j¢@D@Ò¢@¨@¢¢@4ž@ö¢@Ôž@ö¢@Ôž@8£@LŸ@|£@pŸ@xþ @øŸ@f¢@à @ þ @Ô @œ¡@à @ð¡@´ @>¢@l @f¢@ @¢@øŸ@¡@ @|¡@2 @¤¡@V @r¡@” @8¡@” @þ @Ô @ÊlŸ@”ž@È£@n¢@6*äŸ@lŸ@ @¼Ÿ@ @> @Ÿ@: @lŸ@Ä @lŸ@Ä @èŸ@œ @ ¡@Œ¡@ ¡@Œ¡@ ¡@Œ¡@ ¡@Œ¡@¢¡@t¡@¤¡@ð¡@ä¡@ì¡@$¢@¨¡@¤¢@n¢@Ü¢@<¢@:£@4¢@:£@4¢@°£@¶¡@>£@˜¡@£@>¡@(£@Ú @¬¢@’ @4£@X @6£@àŸ@Š£@B @È£@ @È£@ @|£@pŸ@|£@pŸ@8£@LŸ@ö¢@Ôž@ö¢@Ôž@V¢@О@¢@”ž@j¡@LŸ@Ì @¤ž@˜ @èž@ @øž@ @øž@äŸ@lŸ@þ @Ô @œ¡@à @ð¡@´ @>¢@l @f¢@ @¢@øŸ@¡@ @|¡@2 @¤¡@V @r¡@” @8¡@” @þ @Ô @ ð¬¢@àŸ@”¥@Ö¢@ ¤@Ö¢@¤@š¢@R¥@ˆ¢@”¥@J¢@”¥@J¢@¥@œ¡@V¥@N¡@¥@4¡@ö¤@ @²¤@º @v¤@F @ ¤@J @È£@ @È£@ @Š£@B @6£@àŸ@4£@X @¬¢@’ @(£@Ú @£@>¡@>£@˜¡@°£@¶¡@:£@4¢@:£@4¢@V£@„¢@ì£@Z¢@ ¤@Ö¢@ h|£@¸œ@à§@b¢@* §@b¢@ §@¢@R§@t¡@§@L¡@&§@Р@„§@v @§@Z @à§@8 @ž§@ðŸ@ܧ@HŸ@Þ§@èž@Þ§@èž@d§@Ÿ@B§@äž@4¦@àž@|¦@Ô@ò¥@t@¸¥@Ìœ@š¥@¸œ@R¥@@ ¥@P@´¤@x@´¤@x@’¤@Ü@ ¤@@ž@2¤@Èž@š£@€Ÿ@|£@pŸ@|£@pŸ@È£@ @È£@ @ ¤@J @v¤@F @²¤@º @ö¤@ @¥@4¡@V¥@N¡@¥@œ¡@”¥@J¢@”¥@J¢@¦@.¢@ §@b¢@ Øœ¢@.¢@P§@è¥@8£@Ú¤@,£@N¥@œ¢@x¥@¦¢@¸¥@>£@â¥@\£@Æ¥@p£@Î¥@p£@Î¥@´£@è¥@´£@®¥@î£@È¥@~¤@â¥@~¤@â¥@T¤@(¥@˜¤@ ¥@¤¤@F¥@Ȥ@P¥@æ¤@þ¤@ø¤@¥@¥@<¥@@¥@V¥@v¥@.¥@z¥@ð¤@l¥@Ú¤@¬¥@p¤@d¥@è£@”¥@Ô£@è¥@ ¤@ì¥@R£@¦@@£@Ò¦@Æ£@ø¦@У@ø¦@У@§@l£@ §@ £@ §@ £@§@î¢@*§@Ò¢@P§@h¢@ §@b¢@ §@b¢@¦@.¢@”¥@J¢@”¥@J¢@R¥@ˆ¢@¤@š¢@ ¤@Ö¢@ ¤@Ö¢@ì£@ò¢@¦£@ð¢@£@P£@Ä£@~£@®£@F¤@Σ@B¤@ê£@’¤@£@Ú¤@ ê¥@¸•@0©@Xš@Þ¨@¤™@©@<™@0©@°˜@0©@°˜@̨@P˜@Þ¨@̘@¬¨@ܘ@ž¨@Œ˜@n¨@0˜@^¨@x˜@î§@ø˜@ا@D˜@$¨@|—@¨@à•@è§@È•@è§@È•@ª§@¸•@ª§@¸•@z§@P–@§@d–@ž¦@@—@L¦@X—@ê¥@ä—@ê¥@ä—@n¦@|™@n¦@|™@ §@Xš@V¨@p™@Þ¨@¤™@ X4¤@L™@©@Ÿ@(º¨@”@©@Èœ@Ψ@Œœ@ö¨@(œ@ô¨@Øš@Ψ@¨š@Ψ@Ì™@Þ¨@¤™@Þ¨@¤™@V¨@p™@ §@Xš@n¦@|™@n¦@|™@<¦@`™@º¥@À™@Ü¥@L™@@¥@P™@ö¤@Tš@4¤@<š@4¤@<š@d¤@Àš@^¤@›@¥@(›@î¤@Tœ@”¤@ @´¤@x@´¤@x@ ¥@P@R¥@@š¥@¸œ@¸¥@Ìœ@ò¥@t@|¦@Ô@4¦@àž@B§@äž@d§@Ÿ@Þ§@èž@Þ§@èž@\¨@ˆž@º¨@”@xL—@”˜@™@°›@ œ˜@”˜@ˆ˜@™@L—@´™@<˜@(š@è—@¬š@„—@Ìš@˜@°›@4™@¬š@,™@Pš@™@Й@p™@$™@œ˜@”˜@¨X™@L@4œ@П@4œ@ˆ@¤›@P@›@L@èš@Ô@œš@¨@X™@Pž@X™@Pž@¨™@xŸ@ø™@П@ø™@П@К@XŸ@ðš@˜Ÿ@\›@,Ÿ@ˆ›@XŸ@œ@Øž@¼›@8ž@Ä›@Ð@4œ@ˆ@è™@@›@ @¾¡@:Ìš@X¡@ˆ›@¨¡@ˆ›@¨¡@¸›@¾¡@¸›@¾¡@ œ@^¡@dž@"¡@lŸ@Ä @lŸ@Ä @Ÿ@: @ @> @ @¼Ÿ@äŸ@lŸ@äŸ@lŸ@dŸ@èž@ ž@Ÿ@Xž@Àž@Pž@ž@ œ@(ž@4œ@ˆ@4œ@ˆ@¤›@P@›@L@èš@Ô@œš@¨@X™@Pž@X™@Pž@™@ ž@™@ ž@™@ @š@<@ô™@@T™@Èœ@”™@Ì›@ š@Ü›@Àš@”›@Àš@”›@ðš@@›@p›@D›@p›@D›@<›@„›@¼›@ð›@4œ@ˆ@4œ@ˆ@Ä›@Ð@¼›@8ž@œ@Øž@ˆ›@XŸ@\›@,Ÿ@ðš@˜Ÿ@К@XŸ@ø™@П@ø™@П@0š@  @Xš@ª @Äš@¡@°š@H¡@Ìš@X¡@Š`•@P—@l›@ ž@."hš@˜@À™@p—@ ™@P—@„˜@€—@„˜@€—@„˜@€—@„˜@€—@„˜@Ø—@¨•@™@`•@À™@`•@À™@t•@\š@–@hš@@–@ìš@Ü–@›@<—@<œ@˜@À@˜@À@™@ ž@™@ ž@™@ @š@<@ô™@@T™@Èœ@”™@Ì›@ š@Ü›@Àš@”›@Àš@”›@xš@›@Èš@š@$›@`š@l›@(š@àš@„˜@hš@˜@œ˜@”˜@ˆ˜@™@L—@´™@<˜@(š@è—@¬š@„—@Ìš@˜@°›@4™@¬š@,™@Pš@™@Й@p™@$™@œ˜@”˜@€¬œ@B¢@$Ÿ@"£@ ¬œ@º¢@Èœ@ä¢@Èœ@ä¢@4@æ¢@`@£@„@ú¢@´ž@"£@$Ÿ@²¢@xž@T¢@`@B¢@@`¢@|@¬¢@¬œ@º¢@Л@º¢@@L¤@è›@Ö¢@è›@ £@¼›@£@¼›@£@L›@ £@|›@F£@›@ð£@›@ð£@›@¤@8›@L¤@8›@L¤@¸›@J¤@Äœ@ª£@ðœ@º£@ðœ@º£@ìœ@†£@`œ@`£@@(£@Èœ@ä¢@Èœ@ä¢@¬œ@º¢@¬œ@º¢@è›@Ö¢@pb @t¡@ ¤@Ú¤@+B¡@ª£@r¡@’£@~¡@¢£@R¡@þ£@f¡@"¤@f¡@"¤@¬¡@$¤@ì¡@¤@<¢@.¤@b¢@j¤@T¢@œ¤@„¢@ʤ@ð¢@°¤@£@¬¤@£@Ú¤@£@Ú¤@ê£@’¤@Σ@B¤@®£@F¤@Ä£@~£@£@P£@¦£@ð¢@ì£@ò¢@ ¤@Ö¢@ ¤@Ö¢@ì£@Z¢@V£@„¢@:£@4¢@:£@4¢@Ü¢@<¢@¤¢@n¢@$¢@¨¡@ä¡@ì¡@¤¡@ð¡@¢¡@t¡@ ¡@Œ¡@ ¡@Œ¡@¡@¡@b @p¢@¡@ð¢@ö @0£@J¡@d£@B¡@ª£@ðD›@œ @J¡@¤@;x›@"¢@Ì›@N¢@è›@Ö¢@è›@Ö¢@¬œ@º¢@¬œ@º¢@|@¬¢@@`¢@`@B¢@xž@T¢@$Ÿ@²¢@´ž@"£@„@ú¢@`@£@4@æ¢@Èœ@ä¢@Èœ@ä¢@@(£@`œ@`£@ìœ@†£@ðœ@º£@ðœ@º£@T@Þ£@@x¤@ž@¤@Xž@Σ@˜Ÿ@€£@6 @Š£@6 @Š£@6 @b£@6 @b£@¨Ÿ@.£@°Ÿ@æ¢@hŸ@Ä¢@ØŸ@’¢@z @£@j @:£@j @:£@° @£@¡@t£@(¡@¶£@B¡@ª£@B¡@ª£@J¡@d£@ö @0£@¡@ð¢@b @p¢@¡@¡@ ¡@Œ¡@ ¡@Œ¡@èŸ@œ @lŸ@Ä @lŸ@Ä @dž@"¡@ œ@^¡@¸›@¾¡@¸›@¾¡@D›@¢@x›@"¢@ˆ$@›@ Ÿ@ðœ@4ž@›@ž@X›@Ð@h›@Ð@h›@$@¬›@4@¤œ@P@àœ@˜@Àœ@ì@ðœ@ž@àœ@”ž@xœ@Ÿ@Hœ@ Ÿ@ä›@4ž@›@Hhš@4•@ôŸ@”›@&Ð@h›@ž@X›@4ž@›@4ž@›@Àž@xš@Ÿ@pš@Ÿ@pš@ôŸ@`™@ôž@(˜@Üž@8—@`ž@X—@„ž@–@„ž@–@ž@°•@ž@°•@Ô@4•@`@À•@@¤•@˜œ@Ä•@äœ@,–@ð›@—@˜›@,—@hš@˜@hš@˜@àš@„˜@l›@(š@$›@`š@Èš@š@xš@›@Àš@”›@Àš@”›@ðš@@›@p›@D›@p›@D›@œ@š@ôœ@8›@´@üš@Ð@h›@`<›@pš@b @lŸ@)4ž@›@ Ÿ@ä›@Ÿ@Hœ@”ž@xœ@ž@àœ@ì@ðœ@˜@Àœ@P@àœ@4@¤œ@$@¬›@Ð@h›@Ð@h›@´@üš@ôœ@8›@œ@š@p›@D›@p›@D›@<›@„›@¼›@ð›@4œ@ˆ@4œ@ˆ@ œ@(ž@Pž@ž@Xž@Àž@ ž@Ÿ@dŸ@èž@äŸ@lŸ@äŸ@lŸ@ @øž@ @øž@b @(@ @(@@ @ð›@@ @ð›@ @8›@ @ š@HŸ@¨š@Ÿ@pš@Ÿ@pš@Àž@xš@4ž@›@8(˜@8’@Ÿ@˜@$|ž@ ”@(ž@X“@(ž@X“@p@Ä“@¸›@ä“@L›@”“@D›@h’@¸š@8’@Ä™@ä’@È™@„“@t™@¼“@,™@“@,™@“@€˜@H“@À˜@x•@D˜@Е@(˜@”—@„˜@€—@„˜@€—@ ™@P—@À™@p—@hš@˜@hš@˜@˜›@,—@ð›@—@äœ@,–@˜œ@Ä•@@¤•@`@À•@Ô@4•@ž@°•@ž@°•@œž@H•@Ÿ@Ü”@¤ž@h”@|ž@ ”@˜Œ‘@‡@¸”@ðŒ@´“@`Œ@$”@Њ@¸”@ÈŠ@h”@h‡@ô“@‡@Г@x‡@à“@ˆˆ@°“@ðˆ@d’@À‰@(’@@‰@Œ‘@h‰@(’@à‹@ä’@èŠ@`“@ðŒ@`“@ðŒ@´“@`Œ@Àx@È@š@PŽ@5´–@h‹@T—@Š@4™@¨‰@´˜@¸ˆ@ä™@‡@š@…@š@…@à™@ „@˜@0…@¼—@ð‚@ô—@‚@”—@‚@h—@‚@(—@X‚@–@X…@¤•@˜…@¤•@˜…@”@P†@è“@0…@Œ’@`ƒ@à@H‚@à@è‚@t@Ø‚@À@È@À@È@x@Hƒ@8@x…@h@‡@x@8ˆ@ä@8‰@Ð@Њ@|@Ø‹@˜@PŽ@˜@PŽ@ ’@ Ž@`“@ðŒ@`“@ðŒ@ä’@èŠ@(’@à‹@Œ‘@h‰@(’@@‰@d’@À‰@°“@ðˆ@à“@ˆˆ@Г@x‡@ô“@‡@h”@h‡@¸”@ÈŠ@$”@Њ@´“@`Œ@´“@`Œ@D–@XŒ@´–@h‹@ð”@h‹@ —@Ô‘@Ô‘@Ô‘@`’@l‘@H•@°@´•@4‘@Ì–@¼@x—@‘@ —@H@ —@H@—@Ð@—@HŽ@T—@È@L—@ÀŒ@Ж@¨Œ@Ж@¨‹@´–@h‹@´–@h‹@D–@XŒ@´“@`Œ@´“@`Œ@`“@ðŒ@`“@ðŒ@ ’@ Ž@˜@PŽ@˜@PŽ@”@°Ž@ ‘@‘@Ô‘@Ô‘@0Ô‘@¨@t™@À™@#`•@À™@¨•@™@„˜@Ø—@„˜@€—@„˜@€—@(˜@”—@D˜@Е@À˜@x•@€˜@H“@,™@“@,™@“@t™@ ’@И@ü‘@ ™@¤@à˜@@à˜@@`˜@D@˜@¨@ —@H@ —@H@x—@‘@Ì–@¼@´•@4‘@H•@°@`’@l‘@Ô‘@Ô‘@Ô‘@Ô‘@’@|’@¨’@à’@’@ä“@“@´•@x“@–@x“@ˆ—@”@p˜@`•@À™@И@@Œ@|ž@ä“@|ž@@$ž@ðŽ@àœ@p@xœ@Œ@xœ@Œ@Tœ@@Œ@€›@¸@@š@@\™@ˆ@à˜@@à˜@@ ™@¤@И@ü‘@t™@ ’@,™@“@,™@“@t™@¼“@È™@„“@Ä™@ä’@¸š@8’@D›@h’@L›@”“@¸›@ä“@p@Ä“@(ž@X“@(ž@X“@œ@<’@ @ø‘@´@8‘@È@œ@|ž@@X´–@‚@ @H@(¼œ@è„@Œœ@ ƒ@œ@ƒ@Ø›@¨‚@Ø›@¨‚@x›@‚@x›@‚@4›@ðƒ@Üš@8„@š@…@š@…@ä™@‡@´˜@¸ˆ@4™@¨‰@T—@Š@´–@h‹@´–@h‹@Ж@¨‹@Ж@¨Œ@L—@ÀŒ@T—@È@—@HŽ@—@Ð@ —@H@ —@H@˜@¨@`˜@D@à˜@@à˜@@\™@ˆ@@š@@€›@¸@Tœ@@Œ@xœ@Œ@xœ@Œ@´œ@È‹@ @Ј@Dœ@ˆ@\œ@ø…@¼œ@è„@ Dœ@Є@š @@B @h@„ @à‹@" @À‹@” @HŠ@š @˜‡@š @˜‡@8 @ˆ‡@˜Ÿ@Ȇ@8Ÿ@È…@Üž@ø…@äž@h‡@Hž@(†@p@ð…@h@Є@¼œ@è„@¼œ@è„@\œ@ø…@Dœ@ˆ@ @Ј@´œ@È‹@xœ@Œ@xœ@Œ@àœ@p@$ž@ðŽ@|ž@@|ž@@ìž@@ÔŸ@€@B @h@!ÀØ›@`{@¸¡@°‡@5<¡@`„@ê @Ø„@ú @ð‚@ú @ð‚@Ú @Pƒ@ @`ƒ@® @ƒ@¡@ˆ@‚¡@p€@Œ¡@@²¡@À}@¸¡@€|@8¡@P}@¡@À~@r @à€@2 @È€@& @p€@~ @ð~@X @Ð|@X @Ð|@ @`{@„Ÿ@Ð{@XŸ@À~@¤ž@À€@\ž@€@¬ž@p~@xž@}@¼@~@@ ~@¼@@@h‚@°œ@@pœ@ ‚@Ø›@¨‚@Ø›@¨‚@œ@ƒ@Œœ@ ƒ@¼œ@è„@¼œ@è„@h@Є@p@ð…@Hž@(†@äž@h‡@Üž@ø…@8Ÿ@È…@˜Ÿ@Ȇ@8 @ˆ‡@š @˜‡@š @˜‡@ø @°‡@ê @ð†@`¡@è…@<¡@`„@"àøŽ@°t@¤•@P†@”@ðw@,“@`x@è’@€v@l‘@°t@ä@Ðv@4‘@x@Œ@x@(@À}@øŽ@ˆ€@À@È@À@È@t@Ø‚@à@è‚@à@H‚@Œ’@`ƒ@è“@0…@”@P†@¤•@˜…@¤•@˜…@\•@h„@\•@‚@ü”@H‚@•@€@¼“@°{@”@ðw@#`¼“@ðu@œ@˜…@)”@ðw@¼“@°{@•@€@ü”@H‚@\•@‚@\•@h„@¤•@˜…@¤•@˜…@–@X…@(—@X‚@h—@‚@”—@‚@ô—@‚@¼—@ð‚@˜@0…@à™@ „@š@…@š@…@Üš@8„@4›@ðƒ@x›@‚@x›@‚@¤š@h@š@@š@`}@Äš@ð{@T›@ð{@,œ@}@œ@€{@ä›@àx@d›@0z@¨š@x@àš@w@¸™@`v@Ę@pw@°˜@y@„—@ày@˜–@@w@@–@ðu@$”@v@”@ðw@$P@¡@8@F¤@l—@'r£@À@£@8@Ò¢@L@¢@ì@¢@ì@D¢@ ‘@Ø¡@ ‘@°¡@Œ‘@°¡@Œ‘@†¡@4’@Ô¡@(’@â¡@˜’@¢¡@À’@Š¡@,“@J¡@<“@J¡@<“@t¡@ð“@@¡@D”@P¡@ •@˜¡@,–@\¡@–@h¡@l—@h¡@l—@â¢@–@6£@H–@n£@ –@b£@Ä•@ú£@4–@ú£@4–@¤@•@F¤@ð“@ö£@œ“@ê£@p’@´£@@’@Ô£@à‘@ˆ£@˜‘@¢£@8‘@b£@è@r£@À@%Ø|ž@4“@˜¡@ˆ—@|ž@ ”@¤ž@h”@Ÿ@Ü”@œž@H•@ž@°•@ž@°•@„ž@–@„ž@–@lŸ@•@¤Ÿ@0–@^ @—@Þ @ø–@8¡@ˆ—@h¡@l—@h¡@l—@\¡@–@˜¡@,–@P¡@ •@@¡@D”@t¡@ð“@J¡@<“@J¡@<“@¡@4“@|ž@ ”@& @h@â¡@ ”@B @h@ÔŸ@€@ìž@@|ž@@|ž@@È@œ@´@8‘@ @ø‘@œ@<’@(ž@X“@(ž@X“@|ž@ ”@|ž@ ”@¡@4“@J¡@<“@J¡@<“@Š¡@,“@¢¡@À’@â¡@˜’@Ô¡@(’@†¡@4’@°¡@Œ‘@°¡@Œ‘@0¡@<‘@š¡@p@n¡@XŽ@¨ @h@r @Ž@B @h@'ˆr¥@0’@’¦@Ô”@Z¦@Ä’@$¦@0’@Ü¥@4’@î¥@¬’@r¥@è’@ž¥@˜“@¦@ø“@Ð¥@4”@8¦@Ô”@’¦@¼”@’¦@¼”@Œ¦@(”@4¦@<“@Z¦@Ä’@(Èb£@PŽ@§@ä—@6 §@¼”@§@•@’¦@¼”@’¦@¼”@8¦@Ô”@Ð¥@4”@¦@ø“@ž¥@˜“@r¥@è’@î¥@¬’@Ü¥@4’@$¦@0’@Z¦@Ä’@Z¦@Ä’@®¦@À‘@æ¦@@æ¦@@¦¦@PŽ@x¦@ˆŽ@ª¦@°@t¦@ø@¶¥@Ø‘@r¥@‘@:¥@‘@Ö¤@ @Z¤@p@¤@T@È£@@r£@À@r£@À@b£@è@¢£@8‘@ˆ£@˜‘@Ô£@à‘@´£@@’@ê£@p’@ö£@œ“@F¤@ð“@¤@•@ú£@4–@ú£@4–@†¤@ð•@Ú¤@x–@D¥@l–@ê¥@ä—@ê¥@ä—@L¦@X—@ž¦@@—@§@d–@z§@P–@ª§@¸•@ª§@¸•@§@P•@ §@¼”@)ˆ¢@ ‡@*§@Ø‘@.*§@8@*§@‹@§@@Š@§@@Š@§@¸ˆ@§@¸ˆ@Ò¦@ ˆ@Ò¦@ ˆ@š¦@ ‡@j¦@¸‡@h¦@ ˆ@¬¥@Ȉ@b¥@ø‡@Ф@¸ˆ@„¤@€ˆ@&¤@`ˆ@ ¤@˜‰@ ¤@˜‰@¤@à‰@–£@À‹@ø¢@àŒ@º¢@¸Œ@¢@ÈŽ@l¢@@^¢@ @¢@ì@¢@ì@Ò¢@L@£@8@r£@À@r£@À@È£@@¤@T@Z¤@p@Ö¤@ @:¥@‘@r¥@‘@¶¥@Ø‘@t¦@ø@ª¦@°@x¦@ˆŽ@¦¦@PŽ@æ¦@@æ¦@@ô¦@(Ž@*§@8@*0ê @v@ʤ@0…@#â¢@€ƒ@.£@À‚@£@¸@p£@@h£@h€@â£@`€@d¤@}@ª¤@ }@ʤ@€z@~¤@Ðy@†¤@x@†¤@x@H¤@àw@ü£@v@ü£@v@ê£@`v@È£@v@–£@`w@’£@x@f£@ðz@4£@àz@ì¢@P|@„¢@ð{@¢@~@Ô¡@€@Ì¡@ €@ú @ð‚@ú @ð‚@ê @Ø„@<¡@`„@<¡@`„@¦¡@0„@¢@0…@’¢@X„@â¢@€ƒ@+ˆ¶¢@x@"§@˜‰@. ¤@˜‰@&¤@`ˆ@„¤@€ˆ@Ф@¸ˆ@b¥@ø‡@¬¥@Ȉ@h¦@ ˆ@j¦@¸‡@š¦@ ‡@Ò¦@ ˆ@Ò¦@ ˆ@ü¦@ø†@ü¦@ø†@ð¦@h„@§@8ƒ@§@8ƒ@¼¦@(‚@§@0@§@@@"§@~@Ʀ@ z@Ʀ@ z@ ¦@@}@¦@P{@l¥@À|@Ö¤@ x@†¤@x@†¤@x@~¤@Ðy@ʤ@€z@ª¤@ }@d¤@}@â£@`€@h£@h€@p£@@£@¸@.£@À‚@â¢@€ƒ@â¢@€ƒ@¶¢@X…@£@Hˆ@V£@ˆ@†£@ðˆ@º£@@ˆ@È£@x‰@ ¤@˜‰@,p" @€ƒ@ ¤@ ‘@+B @h@r @Ž@¨ @h@n¡@XŽ@š¡@p@0¡@<‘@°¡@Œ‘@°¡@Œ‘@Ø¡@ ‘@D¢@ ‘@¢@ì@¢@ì@^¢@ @l¢@@¢@ÈŽ@º¢@¸Œ@ø¢@àŒ@–£@À‹@¤@à‰@ ¤@˜‰@ ¤@˜‰@È£@x‰@º£@@ˆ@†£@ðˆ@V£@ˆ@£@Hˆ@¶¢@X…@â¢@€ƒ@â¢@€ƒ@’¢@X„@¢@0…@¦¡@0„@<¡@`„@<¡@`„@`¡@è…@ê @ð†@ø @°‡@š @˜‡@š @˜‡@” @HŠ@" @À‹@„ @à‹@B @h@-€˜­@Ô˜@ö®@üš@ ž®@ì˜@P®@Ô˜@˜­@Tš@˜­@Tš@°­@pš@N®@@š@Z®@üš@ô®@Tš@ö®@Й@æ®@p™@æ®@p™@®®@P™@ž®@ì˜@.À@®@Ћ@)°@(‘@¯@(‘@n¯@°@à¯@´@¾¯@ø@°@è@°@ÈŽ@)°@€Ž@ °@hŒ@†¯@¸Œ@¯@Ћ@ì®@HŒ@Ô®@Ž@ª®@@Ž@x®@à@x®@à@@®@@f®@8@‚®@L@‚®@L@ή@h@¯@(‘@/`+±@ ƒ@s±@Ð…@ K±@ ƒ@+±@€ƒ@7±@X„@:±@(…@N±@Ð…@c±@P…@s±@P„@g±@Xƒ@K±@ ƒ@0¸‹²@Ø‹@«³@(“@«³@Ä@ƒ³@°@&³@(Ž@&³@(Ž@³@ø@³@Ž@ ³@pŒ@ò@Ø‹@‹²@ÈŽ@Ÿ²@À@Ÿ²@À@°²@@@²@¤‘@¯²@°‘@—²@à’@¶²@(“@¶²@(“@³@¤’@C³@¸’@«³@Ä@1à ³@ p@6´@(‰@ ³@ ~@³@@P³@¸@v³@È@k³@°‚@³@¨ƒ@$³@8†@³@@†@w³@‡@³@(‰@³@(‰@§³@Ȉ@ë³@H…@­³@è€@ų@H€@þ³@À€@#´@€@6´@à{@´@0u@´@0r@ú³@ p@K³@°v@d³@Ày@&³@~@ ³@ ~@20º­@o@°@¸ˆ@#ȯ@¸†@ø¯@ø…@¾¯@¸ƒ@ö¯@pƒ@°@¨‚@ä¯@P‚@°@À}@ê¯@à|@°@Ðy@¾¯@`x@¸¯@ v@¸¯@ v@–¯@q@¾®@pq@Œ®@o@Œ®@o@º­@°u@È­@@{@®@p|@8®@~@8®@~@V®@à@š®@ €@l®@x‚@®@8ƒ@®@8ƒ@&®@€ƒ@®@ð†@x®@À†@¤®@¸ˆ@¤®@¸ˆ@¯@¸ˆ@ ¯@è‡@ˆ¯@À‡@ȯ@¸†@3è°¬@L@|¯@Ô”@°¬@d‘@B­@x“@&­@”@Ò­@”@Ú­@Ô”@Ú­@Ô”@X®@P”@ˆ®@Ô“@¯@\”@¯@\”@¯@ä’@j¯@¤’@|¯@ø‘@|¯@ø‘@ ¯@ ‘@¯@(‘@¯@(‘@ή@h@‚®@L@‚®@L@^®@Ü@þ­@Ä@Ú­@,‘@,­@Ü‘@ʬ@\‘@°¬@d‘@4°;°@X‡@B±@¼@ ±@øŽ@7±@ø@7±@ø@*±@ˆ@B±@ ‰@ü°@Pˆ@ǰ@p‰@ϰ@¨‡@Ű@X‡@ˆ°@Xˆ@ˆ°@Xˆ@K°@h‰@]°@è‹@;°@HŽ@M°@0@A°@¼@A°@¼@š°@d@ ±@øŽ@5ˆò«@p™@+°@´Ÿ@. ¬@›@ô«@œ›@ô«@œ›@ò«@è›@8¬@œ@‚¬@˜œ@h¬@àœ@ª¬@€@Ú¬@|@B­@Üž@B­@Üž@t­@àž@î­@ž@p®@°ž@H®@´Ÿ@H®@´Ÿ@„®@HŸ@(¯@tŸ@¯@Œž@ˆ¯@T@ˆ¯@T@¨¯@@"°@øœ@°@ðš@+°@äš@#°@pš@°@hš@°@hš@ô¯@Hš@ί@Øš@˜¯@Üš@"¯@|™@æ®@p™@æ®@p™@ö®@Й@ô®@Tš@Z®@üš@N®@@š@°­@pš@˜­@Tš@˜­@Tš@j­@,š@Ĭ@К@r¬@lš@V¬@ôš@ ¬@›@6°1°@øŽ@²±@¬”@1°@˜‘@E°@ ’@O°@è’@ƒ°@”@™°@”@Ò°@¬”@þ°@\”@þ°@\”@±@4”@a±@X”@²±@T’@²±@T’@˜±@”@ ±@øŽ@ ±@øŽ@š°@d@A°@¼@A°@¼@1°@˜‘@7¯@|‘@þ°@—@ |¯@ø‘@j¯@¤’@¯@ä’@¯@\”@¯@\”@Z¯@H•@²¯@Д@ì¯@¬•@î¯@t–@°@—@°@—@G°@4—@U°@`—@›°@—@®°@ø–@®°@ø–@Ò°@à–@Ô°@|•@þ°@ˆ•@þ°@ˆ•@ð°@Д@þ°@\”@þ°@\”@Ò°@¬”@™°@”@ƒ°@”@O°@è’@E°@ ’@1°@˜‘@1°@˜‘@Œ¯@|‘@|¯@ø‘@8¬@°Œ@‚®@Ü‘@N®@ˆ@.®@P@”­@HŽ@F­@8@è¬@èŒ@è¬@èŒ@®¬@°Œ@‚¬@ðŒ@R¬@°Ž@¬@`@t¬@ @t¬@ @~¬@x@^¬@¨@~¬@l‘@°¬@d‘@°¬@d‘@ʬ@\‘@,­@Ü‘@Ú­@,‘@þ­@Ä@^®@Ü@‚®@L@‚®@L@f®@8@@®@@x®@à@x®@à@N®@ˆ@9j«@ b@ ®@0€@„«@€s@t«@Pu@à«@Px@à«@Px@¬@Ðz@ü«@ @X¬@°~@ž¬@0€@:­@`@T­@ €@8®@~@8®@~@®@p|@È­@@{@º­@°u@Œ®@o@Œ®@o@ ®@ài@0®@Ài@Ô­@Àb@p­@ b@˜­@g@@­@€g@Þ¬@Àb@¬@Àb@¬@ g@Ì«@€m@r«@`m@j«@Pp@ª«@`q@„«@€s@:¾ª@Àƒ@ ­@Ì@­@ˆ@š¬@(†@6¬@†@æ«@°„@N«@è„@6«@h„@¾ª@Àƒ@¾ª@Àƒ@âª@P‡@«@`‰@ «@ Š@Àª@ØŠ@«@ðŒ@«@ @«@ @æª@°Ž@<«@˜Ž@˜«@Ì@˜«@Ì@t¬@ @t¬@ @¬@`@R¬@°Ž@‚¬@ðŒ@®¬@°Œ@è¬@èŒ@è¬@èŒ@î¬@ø‰@ ­@˜‰@­@ˆ@;ð¸¯@v@.±@P‡@\°@ ‡@™°@è„@Ò°@X„@Ù°@€ƒ@¾°@ƒ@þ°@@ ±@€@.±@y@.±@y@ü°@@y@‰°@v@¸¯@ v@¸¯@ v@¾¯@`x@°@Ðy@ê¯@à|@°@À}@ä¯@P‚@°@¨‚@ö¯@pƒ@¾¯@¸ƒ@ø¯@ø…@ȯ@¸†@ȯ@¸†@°@P‡@°@¨†@\°@ ‡@< ±@ Œ@¶²@P”@R²@P”@²@P”@¶²@(“@¶²@(“@—²@à’@¯²@°‘@²@¤‘@°²@@@Ÿ²@À@Ÿ²@À@i²@H@B²@ˆ@6²@`Ž@²@@Ž@²@@Ž@Ù±@ @Ÿ±@ÀŽ@w±@ Œ@a±@(@_±@(Ž@7±@ø@7±@ø@ ±@øŽ@ ±@øŽ@˜±@”@²±@T’@²±@T’@ܱ@\’@'²@`“@4²@ ”@R²@P”@=˜N®@¨†@ˆ°@ø‘@0\°@ ‡@°@¨†@°@P‡@ȯ@¸†@ȯ@¸†@ˆ¯@À‡@ ¯@è‡@¯@¸ˆ@¤®@¸ˆ@¤®@¸ˆ@|®@H‰@ ®@ð‰@|®@(Œ@œ®@ðŒ@N®@ˆ@N®@ˆ@x®@à@x®@à@ª®@@Ž@Ô®@Ž@ì®@HŒ@¯@Ћ@†¯@¸Œ@ °@hŒ@)°@€Ž@°@ÈŽ@°@è@¾¯@ø@à¯@´@n¯@°@¯@(‘@¯@(‘@ ¯@ ‘@|¯@ø‘@|¯@ø‘@Œ¯@|‘@1°@˜‘@1°@˜‘@A°@¼@A°@¼@M°@0@;°@HŽ@]°@è‹@K°@h‰@ˆ°@Xˆ@ˆ°@Xˆ@~°@à†@\°@ ‡@>øà«@Ô”@¸®@›@Ú­@Ô”@`­@\•@T­@Ø•@ì¬@\–@­@ì–@F¬@p—@F¬@p—@P¬@ä—@ ¬@˜˜@¬@š@à«@Ìš@ ¬@›@ ¬@›@V¬@ôš@r¬@lš@Ĭ@К@j­@,š@˜­@Tš@˜­@Tš@P®@Ô˜@ž®@ì˜@ž®@ì˜@¸®@è˜@ª®@ ˜@®@T—@J®@ä–@ø­@´•@Ú­@Ô”@? Ú­@Ô“@°@Üš@!°@—@î¯@t–@ì¯@¬•@²¯@Д@Z¯@H•@¯@\”@¯@\”@ˆ®@Ô“@X®@P”@Ú­@Ô”@Ú­@Ô”@ø­@´•@J®@ä–@®@T—@ª®@ ˜@¸®@è˜@ž®@ì˜@ž®@ì˜@®®@P™@æ®@p™@æ®@p™@"¯@|™@˜¯@Üš@ί@Øš@ô¯@Hš@°@hš@°@hš@°@ì™@ê¯@¼™@â¯@ü˜@°@ ˜@ °@¨—@°@—@@Ò\°@Àx@G²@ÀŽ@7.ø±@à~@Á±@ð}@ű@À€@±@°~@¢±@Àx@.±@y@.±@y@.±@y@.±@y@ ±@€@þ°@@¾°@ƒ@Ù°@€ƒ@Ò°@X„@™°@è„@\°@ ‡@\°@ ‡@~°@à†@ˆ°@Xˆ@ˆ°@Xˆ@Ű@X‡@ϰ@¨‡@ǰ@p‰@ü°@Pˆ@B±@ ‰@*±@ˆ@7±@ø@7±@ø@_±@(Ž@a±@(@w±@ Œ@Ÿ±@ÀŽ@Ù±@ @²@@Ž@²@@Ž@ê±@(Œ@þ±@ˆ‹@ð±@øˆ@G²@ˆ@2²@Ø…@ ²@†@²@8„@(²@è‚@²@È@²@8@ø±@à~@K±@ ƒ@+±@€ƒ@7±@X„@:±@(…@N±@Ð…@c±@P…@s±@P„@g±@Xƒ@K±@ ƒ@Aèè¬@8ƒ@¤®@HŽ@­@ˆ@ ­@˜‰@î¬@ø‰@è¬@èŒ@è¬@èŒ@F­@8@”­@HŽ@.®@P@N®@ˆ@N®@ˆ@œ®@ðŒ@|®@(Œ@ ®@ð‰@|®@H‰@¤®@¸ˆ@¤®@¸ˆ@x®@À†@®@ð†@&®@€ƒ@®@8ƒ@®@8ƒ@ä­@¨ƒ@Ò­@H…@8­@…@~­@؆@­@ˆ@B€ê±@z@³@À@-³@(‰@w³@‡@³@@†@$³@8†@³@¨ƒ@k³@°‚@v³@È@P³@¸@³@@ ³@ ~@ ³@ ~@Ȳ@Ð}@·²@{@z²@z@?²@°~@²@ ~@ø±@à~@ø±@à~@²@8@²@È@(²@è‚@²@8„@ ²@†@2²@Ø…@G²@ˆ@ð±@øˆ@þ±@ˆ‹@ê±@(Œ@²@@Ž@²@@Ž@6²@`Ž@B²@ˆ@i²@H@Ÿ²@À@Ÿ²@À@‹²@ÈŽ@ò@Ø‹@ ³@pŒ@³@Ž@³@ø@&³@(Ž@&³@(Ž@+³@ÐŒ@t³@‹@³@(‰@C@ˆª@Px@š®@ˆ@%¾ª@Àƒ@6«@h„@N«@è„@æ«@°„@6¬@†@š¬@(†@­@ˆ@­@ˆ@~­@؆@8­@…@Ò­@H…@ä­@¨ƒ@®@8ƒ@®@8ƒ@l®@x‚@š®@ €@V®@à@8®@~@8®@~@T­@ €@:­@`@ž¬@0€@X¬@°~@ü«@ @¬@Ðz@à«@Px@à«@Px@P«@Ð{@âª@{@*«@Ð@¢ª@0}@ˆª@@~@¦ª@P@Ôª@`@æª@¨@¬ª@@‚@¾ª@Àƒ@Dhÿ°@¬•@³±@@—@ ÿ°@¬•@±@ø•@=±@D–@D±@Ж@a±@„–@³±@@—@¦±@œ–@p±@à•@L±@È•@ÿ°@¬•@EX¨´@Ø–@Jµ@˜@µ@ä–@ð´@Ø–@¨´@Ô—@è´@˜@Aµ@ä—@Jµ@ —@Jµ@ —@µ@ä–@FhC²@¤›@̲@@ ̲@М@Ų@œ@²@Ä›@l²@¤›@C²@œ@_²@(œ@i²@@‹²@üœ@ ²@¬œ@̲@М@G(³@€—@ˆ´@°@"S´@4œ@M´@˜›@t´@`›@i´@Ôš@ˆ´@š@ˆ´@š@|´@´™@´@,™@´@˜@ã³@˜@ɳ@€—@ɳ@€—@©³@ ˜@©³@ ˜@¤³@h˜@^³@´˜@5³@„™@)³@š@³@ôš@³@ôš@³@„›@8³@X›@S³@¤›@L³@Œœ@^³@l@s³@œ@s³@œ@³@\@¸³@°@Ò³@¤@ɳ@4@ò³@€œ@´@¤œ@S´@4œ@HM´@H™@.¶@lž@ë´@lž@'µ@À@5µ@È@7µ@Tž@iµ@<ž@´µ@Àœ@ßµ@¼œ@.¶@àš@¶@è™@¶@è™@Ûµ@ð™@åµ@t™@vµ@H™@9µ@ š@µ@Ä™@ý´@dš@ê´@€š@Ÿ´@ š@ˆ´@š@ˆ´@š@i´@Ôš@t´@`›@M´@˜›@S´@4œ@S´@4œ@Ž´@€œ@‘´@ø@¯´@Ð@É´@dž@ë´@lž@I8ˆ¯@ø–@C±@ˆž@$Ö¯@Pž@°@ˆž@E°@ä@Z°@„ž@°@„ž@»°@H@ý°@d@C±@<œ@-±@š@-±@š@ì°@ô™@™°@à˜@™°@8˜@®°@ø–@®°@ø–@›°@—@U°@`—@G°@4—@°@—@°@—@ °@¨—@°@ ˜@â¯@ü˜@ê¯@¼™@°@ì™@°@hš@°@hš@#°@pš@+°@äš@°@ðš@"°@øœ@¨¯@@ˆ¯@T@ˆ¯@T@–¯@<ž@Ö¯@Pž@J²™°@T’@g²@$š@3)G±@$š@¦±@x™@ñ@ä™@Û±@h™@Û±@h™@²@|˜@í±@ü–@ ²@T–@4²@´–@Z²@°–@b²@`–@U²@4–@g²@°•@g²@°•@N²@h•@R²@P”@R²@P”@4²@ ”@'²@`“@ܱ@\’@²±@T’@²±@T’@a±@X”@±@4”@þ°@\”@þ°@\”@ð°@Д@þ°@ˆ•@þ°@ˆ•@þ°@ˆ•@þ°@ˆ•@Ô°@|•@Ò°@à–@®°@ø–@®°@ø–@™°@8˜@™°@à˜@ì°@ô™@-±@š@-±@š@G±@$š@ÿ°@¬•@±@ø•@=±@D–@D±@Ж@a±@„–@³±@@—@¦±@œ–@p±@à•@L±@È•@ÿ°@¬•@K`ɳ@l’@*¶@€š@)Jµ@ —@Aµ@ä—@è´@˜@¨´@Ô—@ð´@Ø–@µ@ä–@µ@ä–@µ@¤–@$µ@(–@ µ@ø“@¡´@„’@`´@l’@`´@l’@´@À“@R´@œ”@'´@•@´@¨–@´@Ø–@γ@h–@ä³@ü–@ɳ@€—@ɳ@€—@ã³@˜@´@˜@´@,™@|´@´™@ˆ´@š@ˆ´@š@Ÿ´@ š@ê´@€š@ý´@dš@µ@Ä™@9µ@ š@vµ@H™@åµ@t™@Ûµ@ð™@¶@è™@¶@è™@*¶@ ˜@éµ@p–@Jµ@ —@L  ³@4œ@ë´@Π@! ³@4 @³@X @|³@^ @ ³@¨ @ç³@Œ @ì³@` @´@: @2´@Π@2´@Π@;´@Ä @5´@Ž @b´@N @Š´@b @á´@”Ÿ@ë´@lž@ë´@lž@É´@dž@¯´@Ð@‘´@ø@Ž´@€œ@S´@4œ@S´@4œ@´@¤œ@ò³@€œ@ɳ@4@Ò³@¤@¸³@°@³@\@s³@œ@s³@œ@`³@Dž@<³@¼ž@ ³@4 @M8N²@Ä@`´@ ˜@$«³@Ä@C³@¸’@³@¤’@¶²@(“@¶²@(“@²@P”@R²@P”@R²@P”@N²@h•@g²@°•@g²@°•@s²@T•@Œ²@L•@†²@ –@º²@–@À²@x•@ ³@p–@.³@„—@«³@¼—@©³@ ˜@©³@ ˜@ɳ@€—@ɳ@€—@ä³@ü–@γ@h–@´@Ø–@´@¨–@'´@•@R´@œ”@´@À“@`´@l’@`´@l’@´@ ’@è³@¤‘@½³@È@«³@Ä@NzG±@h™@s³@4 @,"Û±@h™@ñ@ä™@¦±@x™@G±@$š@G±@$š@”±@X›@б@Л@ù±@¨›@ ²@8œ@0²@ð@F²@ð@B²@ðž@B²@ðž@B²@ðž@B²@ðž@u²@ØŸ@ ³@4 @ ³@4 @<³@¼ž@`³@Dž@s³@œ@s³@œ@^³@l@L³@Œœ@S³@¤›@8³@X›@³@„›@³@ôš@³@ôš@ò²@Xš@s²@„™@`²@0š@ ²@š@Û±@h™@̲@М@Ų@œ@²@Ä›@l²@¤›@C²@œ@_²@(œ@i²@@‹²@üœ@ ²@¬œ@̲@М@OÛ±@L•@«³@ôš@©³@ ˜@«³@¼—@.³@„—@ ³@p–@À²@x•@º²@–@†²@ –@Œ²@L•@s²@T•@g²@°•@g²@°•@U²@4–@b²@`–@Z²@°–@4²@´–@ ²@T–@í±@ü–@²@|˜@Û±@h™@Û±@h™@ ²@š@`²@0š@s²@„™@ò²@Xš@³@ôš@³@ôš@)³@š@5³@„™@^³@´˜@¤³@h˜@©³@ ˜@PP<°@¦¢@›°@^£@<°@Ô¢@B°@"£@j°@:£@°@^£@›°@æ¢@a°@¦¢@<°@Ô¢@Q€þ°@¨@n±@XŸ@ @±@XŸ@\±@ Ÿ@n±@pž@i±@ž@h±@È@±@¨@±@ž@þ°@4ž@þ°@Üž@±@üž@!±@Üž@)±@LŸ@@±@XŸ@R€±@t¤@•±@H¥@ 5±@t¤@±@ò¤@2±@H¥@Y±@8¥@`±@¥@t±@¥@±@â¤@•±@ ¤@‡±@˜¤@q±@ܤ@T±@Ö¤@B±@x¤@5±@t¤@Sªô®@ô @=±@¤¥@2+.¯@¬¢@.¯@¬¢@.¯@¬¢@l¯@*£@"¯@€£@ô®@Ê£@F¯@¤@0¯@P¤@f¯@d¤@*¯@¥@*¯@¥@2¯@@¥@’¯@¤¥@’¯@¤¥@¾¯@&¥@œ¯@|¤@°@t¤@J°@¾¤@t°@œ¤@Ȱ@°¤@˰@"¤@=±@ò£@=±@ò£@±@ª£@!±@V£@ú°@\£@÷°@Ô¢@̰@Ø¢@ΰ@¾¢@ÿ°@„¢@±@¢@ð°@,¢@а@à¡@İ@4¡@®°@ô @®°@ô @¤°@`¡@G°@š¡@ °@ú¡@þ¯@¼¡@¨¯@¢@®¯@\¢@.¯@¬¢@<°@Ô¢@B°@"£@j°@:£@°@^£@›°@æ¢@a°@¦¢@<°@Ô¢@T@Á±@ðž@2´@l£@%Á±@t @Ú±@ô @ø±@î @²@Ž¡@:²@~¡@L²@Ô¡@:²@¢@@²@¬¢@s²@Æ¢@Y²@£@§²@l£@§²@l£@¦²@@£@µ²@ú¢@ü²@°¢@³@4¢@†³@<¢@˳@Þ¡@γ@œ¡@´@¡@2´@Π@2´@Π@´@: @ì³@` @ç³@Œ @ ³@¨ @|³@^ @³@X @ ³@4 @ ³@4 @u²@ØŸ@B²@ðž@B²@ðž@²@ Ÿ@²@ØŸ@Ö±@ÄŸ@Á±@t @UP­@T@¶°@º¢@'¶°@ @}°@l @S°@Š @,°@ôŸ@°@ÈŸ@°@lŸ@Ö¯@Pž@Ö¯@Pž@–¯@<ž@ˆ¯@T@ˆ¯@T@¯@Œž@(¯@tŸ@„®@HŸ@H®@´Ÿ@H®@´Ÿ@î­@ @ì­@€ @Š­@è @Þ­@â @´­@^¡@D­@j¡@­@¨¡@v­@à¡@v­@à¡@ò­@²¡@6®@ä¡@¢®@º¢@.¯@¬¢@.¯@¬¢@®¯@\¢@¨¯@¢@þ¯@¼¡@ °@ú¡@G°@š¡@¤°@`¡@®°@ô @®°@ô @¶°@ @Vº’¯@€£@{²@”¦@4'j°@p¦@t°@(¦@°@ ¦@Ú°@$¦@í°@ì¥@±@ð¥@S±@”¦@€±@Ò¥@ñ±@Æ¥@ñ±@Æ¥@²@Z¥@N²@(¥@T²@ž¤@i²@–¤@{²@¤@{²@¤@^²@Ö£@8²@ð£@²@¶£@î±@¬£@ä±@€£@º±@œ£@l±@F¤@=±@ò£@=±@ò£@=±@ò£@=±@ò£@˰@"¤@Ȱ@°¤@t°@œ¤@J°@¾¤@°@t¤@œ¯@|¤@¾¯@&¥@’¯@¤¥@’¯@¤¥@š¯@ú¥@°@L¦@j°@p¦@5±@t¤@±@ò¤@2±@H¥@Y±@8¥@`±@¥@t±@¥@±@â¤@•±@ ¤@‡±@˜¤@q±@ܤ@T±@Ö¤@B±@x¤@5±@t¤@WÒÖ¯@š@F²@¡@7*$±@` @$±@` @$±@` @P±@¸ @O±@Ú @_±@¡@‘±@t @Á±@t @Á±@t @Ö±@ÄŸ@²@ØŸ@²@ Ÿ@B²@ðž@B²@ðž@F²@ð@0²@ð@ ²@8œ@ù±@¨›@б@Л@”±@X›@G±@$š@G±@$š@-±@š@-±@š@C±@<œ@ý°@d@»°@H@°@„ž@Z°@„ž@E°@ä@°@ˆž@Ö¯@Pž@Ö¯@Pž@°@lŸ@°@ÈŸ@,°@ôŸ@S°@Š @}°@l @¶°@ @¶°@ @±@Œ @$±@` @@±@XŸ@\±@ Ÿ@n±@pž@i±@ž@h±@È@±@¨@±@ž@þ°@4ž@þ°@Üž@±@üž@!±@Üž@)±@LŸ@@±@XŸ@X˜®°@` @¬²@F¤@0§²@l£@Y²@£@s²@Æ¢@@²@¬¢@:²@¢@L²@Ô¡@:²@~¡@²@Ž¡@ø±@î @Ú±@ô @Á±@t @Á±@t @‘±@t @_±@¡@O±@Ú @P±@¸ @$±@` @$±@` @±@Œ @¶°@ @¶°@ @®°@ô @®°@ô @İ@4¡@а@à¡@ð°@,¢@±@¢@ÿ°@„¢@ΰ@¾¢@̰@Ø¢@÷°@Ô¢@ú°@\£@!±@V£@±@ª£@=±@ò£@=±@ò£@l±@F¤@º±@œ£@ä±@€£@î±@¬£@²@¶£@8²@ð£@^²@Ö£@{²@¤@{²@¤@ƒ²@Ì£@¬²@£@§²@l£@YàH°@Æ¥@_²@„¨@°@€§@ÿ°@¬§@±@”§@W±@̧@[±@¨@y±@*¨@“±@„¨@“±@„¨@/²@ž§@²@P§@_²@§@#²@¦@ñ±@Æ¥@ñ±@Æ¥@€±@Ò¥@S±@”¦@±@ð¥@í°@ì¥@Ú°@$¦@°@ ¦@t°@(¦@j°@p¦@j°@p¦@H°@j§@°@€§@ZH«@X¦@Ô«@§@„«@X¦@«@¶¦@0«@ø¦@ª«@§@Ô«@h¦@„«@X¦@[hÈ®@¼¦@ί@ާ@ ¶¯@z§@¢¯@R§@ί@0§@¤¯@*§@¯@à¦@<¯@¼¦@,¯@§@È®@R§@T¯@ާ@¶¯@z§@\pl«@¨©@`¬@Fª@ è«@¨©@Ê«@Ò©@¢«@È©@l«@æ©@ «@ú©@l«@ ª@ž«@Fª@,¬@ª@J¬@ª@`¬@ª@è«@¨©@]`<°@$ª@¸°@Ôª@ ¤°@¼ª@¸°@”ª@‹°@$ª@g°@(ª@<°@„ª@r°@žª@j°@Ϊ@°@Ôª@¤°@¼ª@^Êð¨@F¥@v­@¨@60v­@¦§@<­@r§@"­@´¦@\­@¨¦@\­@¨¦@L­@H¦@¦¬@H¦@¬@¦@Ø«@¾¥@ž«@Æ¥@ž«@Æ¥@ž«@Æ¥@ž«@Æ¥@«@v¥@ªª@Ä¥@jª@Ô¥@Tª@®¥@^ª@h¥@ª@F¥@ª@F¥@ª@j¥@©@‚¥@Ž©@ž¥@Ž©@ž¥@`©@ì¥@2©@Ú¥@ð¨@¦@ð¨@¦@©@¨¦@©@¨¦@Ú©@x¦@Fª@¸¦@´ª@r§@œª@ž§@Öª@"¨@«@¨@B«@t¨@B«@t¨@b«@¨@b«@¨@|«@ ¨@Ö«@ ¨@ø«@ا@­@>¨@ ­@*¨@â¬@ò§@4­@Ú§@v­@¦§@„«@X¦@«@¶¦@0«@ø¦@ª«@§@Ô«@h¦@„«@X¦@_Ú"­@d¤@°@ð¨@8. ®@Þ¤@ ®@¥@®@*¥@&®@~¥@F®@”¥@ü­@¦@Æ­@ò¥@‚­@J¦@’­@”¦@\­@¨¦@\­@¨¦@"­@´¦@<­@r§@v­@¦§@v­@¦§@$®@,§@\®@˜§@T¯@æ§@¤¯@0¨@’¯@Z¨@Ô¯@†¨@¯@ب@¯@ب@ô¯@ð¨@7°@Ò¨@B°@¢¨@B°@¢¨@B°@¢¨@B°@¢¨@°@¨§@°@€§@°@€§@H°@j§@j°@p¦@j°@p¦@°@L¦@š¯@ú¥@’¯@¤¥@’¯@¤¥@2¯@@¥@*¯@¥@*¯@¥@"¯@¤¤@®@ª¤@z®@d¤@ ®@Þ¤@¶¯@z§@¢¯@R§@ί@0§@¤¯@*§@¯@à¦@<¯@¼¦@,¯@§@È®@R§@T¯@ާ@¶¯@z§@`Ênª@t¨@6­@$«@6+‚ª@¬©@|ª@à©@«@Ω@«@ª@tª@|ª@nª@Úª@H«@$«@¤«@«@¤«@«@´«@«@ò«@ʪ@º¬@àª@ô¬@’ª@ʬ@lª@ä¬@2ª@­@*ª@­@*ª@ ­@È©@6­@¢©@­@†©@&­@|©@&­@|©@ø¬@P©@0¬@©@ú«@Œ©@ú«@Œ©@ú«@Œ©@ú«@Œ©@¬@`©@¬@D©@Ϋ@4©@ž«@©@®«@Ψ@b«@¨@b«@¨@B«@t¨@B«@t¨@:«@ ¨@T«@ò¨@>«@©@æª@þ¨@¼ª@–©@‚ª@¬©@è«@¨©@Ê«@Ò©@¢«@È©@l«@æ©@ «@ú©@l«@ ª@ž«@Fª@,¬@ª@J¬@ª@`¬@ª@è«@¨©@aàž«@ ¤@F®@¨¦@¤­@N¤@°¬@ ¤@X¬@ ¤@T¬@ô¤@¦«@ ¥@ž«@Æ¥@ž«@Æ¥@Ø«@¾¥@¬@¦@¦¬@H¦@L­@H¦@\­@¨¦@\­@¨¦@’­@”¦@‚­@J¦@Æ­@ò¥@ü­@¦@F®@”¥@&®@~¥@®@*¥@ ®@¥@ ®@Þ¤@ ®@Þ¤@à­@Œ¤@¤­@N¤@bâö®@¢¨@G±@x«@90¯@ª@¯@(ª@$¯@Nª@ö®@œª@¯@ʪ@r¯@"«@r¯@"«@ °@X«@ °@X«@6°@h«@P°@4«@q°@d«@q°@d«@‘°@x«@¼°@«@¼°@«@¸°@Úª@¸°@Úª@¸°@Úª@¸°@Úª@±@¦ª@±@–ª@±@–ª@-±@8ª@ ±@ª@±@ª@>±@Æ©@G±@¬©@G±@¬©@û°@¼©@ë°@†©@ǰ@D©@²°@Ž©@°@ˆ©@°@L©@B°@¢¨@B°@¢¨@7°@Ò¨@ô¯@ð¨@¯@ب@¯@ب@®¯@Ò¨@̯@Z©@¬¯@È©@h¯@´©@h¯@ª@:¯@ö©@¯@ª@¤°@¼ª@¸°@”ª@‹°@$ª@g°@(ª@<°@„ª@r°@žª@j°@Ϊ@°@Ôª@¤°@¼ª@c0­@©@r¯@L¬@#ò­@©@&­@|©@&­@|©@­@†©@6­@¢©@ ­@È©@­@*ª@­@*ª@z­@ª@’­@Úª@f­@ä«@f­@ä«@­@¬@­@¬@®@L¬@j®@,¬@`®@¬@`®@¬@`®@¬«@ì®@«@T¯@J«@r¯@"«@r¯@"«@¯@ʪ@ö®@œª@$¯@Nª@¯@(ª@¯@ª@¯@ª@¤®@Щ@`®@x©@r®@R©@6®@B©@®@j©@ò­@©@dv­@,§@Ô¯@ª@ò­@©@®@j©@6®@B©@r®@R©@`®@x©@¤®@Щ@¯@ª@¯@ª@:¯@ö©@h¯@ª@h¯@´©@¬¯@È©@̯@Z©@®¯@Ò¨@¯@ب@¯@ب@Ô¯@†¨@’¯@Z¨@¤¯@0¨@T¯@æ§@\®@˜§@$®@,§@v­@¦§@v­@¦§@‚­@â§@º­@¨@έ@Ĩ@®@ì¨@ò­@©@eøb«@¦§@®@©@&­@|©@ò­@©@ò­@©@®@ì¨@έ@Ĩ@º­@¨@‚­@â§@v­@¦§@v­@¦§@4­@Ú§@â¬@ò§@ ­@*¨@­@>¨@ø«@ا@Ö«@ ¨@|«@ ¨@b«@¨@b«@¨@®«@Ψ@ž«@©@Ϋ@4©@¬@D©@¬@`©@ú«@Œ©@ú«@Œ©@0¬@©@ø¬@P©@&­@|©@fÈB°@€§@“±@¼©@“±@„¨@y±@*¨@[±@¨@W±@̧@±@”§@ÿ°@¬§@°@€§@°@€§@°@¨§@B°@¢¨@B°@¢¨@°@L©@°@ˆ©@²°@Ž©@ǰ@D©@ë°@†©@û°@¼©@G±@¬©@G±@¬©@f±@J©@]±@ܨ@“±@„¨@gX©@¡@ª@ ¢@ª@Ì¡@ð©@€¡@ª@¡@©@x¡@8©@Œ¡@©@Ô¡@´©@ ¢@ª@Ì¡@hx˜«@ž£@^¬@œ¤@ ô«@¶£@¢«@¸£@¢«@¸£@˜«@$¤@ «@œ¤@ê«@j¤@^¬@P¤@.¬@¤@X¬@ž£@X¬@ž£@ ¬@¶£@ô«@¶£@ip€«@Ì¢@6¬@¸£@ ¬@Ì¢@þ«@ò¢@”«@£@€«@N£@¬«@z£@¢«@¸£@¢«@¸£@ô«@¶£@ô«@¶£@6¬@^£@ ¬@Ì¢@jô«@ò¡@$­@¶£@­@&£@Ȭ@Ú¢@$­@ª¢@­@\¢@­@\¢@°¬@p¢@¸¬@(¢@~¬@ò¡@~¬@ò¡@&¬@F¢@¬@D¢@¬@D¢@¬@\¢@¬@\¢@J¬@ˆ¢@¬@´¢@ ¬@Ì¢@ ¬@Ì¢@6¬@^£@ô«@¶£@ô«@¶£@ ¬@¶£@X¬@ž£@X¬@ž£@r¬@’£@f¬@p£@¬@d£@À¬@€£@ê¬@*£@­@&£@kXì«@|¡@Œ¬@F¢@¬@D¢@&¬@F¢@~¬@ò¡@~¬@ò¡@Œ¬@Æ¡@"¬@|¡@ì«@¢@¬@D¢@lò§@”@«@V£@;3Rª@Ê¢@Rª@Ê¢@Rª@Ê¢@–ª@Þ¢@žª@Œ¢@T«@¢@T«@¢@«@*¡@,«@¾ @,«@¾ @¤ª@Ì @,ª@J @ª@´Ÿ@Tª@HŸ@.ª@hž@ª@dž@ª@dž@â©@dž@Ì©@¬ž@€©@„ž@„©@4ž@ô¨@<ž@º¨@”@º¨@”@\¨@ˆž@Þ§@èž@Þ§@èž@ܧ@HŸ@ž§@ðŸ@à§@8 @§@Z @„§@v @&§@Р@§@L¡@R§@t¡@ §@¢@ §@b¢@ §@b¢@P§@h¢@*§@Ò¢@§@î¢@ §@ £@ §@ £@¼§@V£@¨@¢¢@Ĩ@À¢@ ©@ž¢@T©@â¢@æ©@Þ¢@Щ@¨¢@Rª@Ê¢@ª@Ì¡@ð©@€¡@ª@¡@©@x¡@8©@Œ¡@©@Ô¡@´©@ ¢@ª@Ì¡@mXÌ©@&£@¤­@Ô¥@(­@&£@ê¬@*£@À¬@€£@¬@d£@f¬@p£@r¬@’£@X¬@ž£@X¬@ž£@.¬@¤@^¬@P¤@ê«@j¤@ «@œ¤@˜«@$¤@¢«@¸£@¢«@¸£@«@¨£@«@¨£@ºª@"¤@ܪ@ª¤@jª@¥@à©@æ¤@Ì©@¥@ª@F¥@ª@F¥@^ª@h¥@Tª@®¥@jª@Ô¥@ªª@Ä¥@«@v¥@ž«@Æ¥@ž«@Æ¥@¦«@ ¥@T¬@ô¤@X¬@ ¤@°¬@ ¤@¤­@N¤@¤­@N¤@Ž­@î£@2­@î£@­@&£@nÐRª@¢@J¬@¸£@T«@¢@žª@Œ¢@–ª@Þ¢@Rª@Ê¢@Rª@Ê¢@fª@b£@«@¨£@«@¨£@¢«@¸£@¢«@¸£@¬«@z£@€«@N£@”«@£@þ«@ò¢@ ¬@Ì¢@ ¬@Ì¢@¬@´¢@J¬@ˆ¢@¬@\¢@¬@\¢@²«@J¢@®«@"¢@T«@¢@oȬ@²¡@l¯@¥@ ­@\¢@$­@ª¢@Ȭ@Ú¢@­@&£@­@&£@2­@î£@Ž­@î£@¤­@N¤@¤­@N¤@à­@Œ¤@ ®@Þ¤@ ®@Þ¤@z®@d¤@®@ª¤@"¯@¤¤@*¯@¥@*¯@¥@f¯@d¤@0¯@P¤@F¯@¤@ô®@Ê£@"¯@€£@l¯@*£@.¯@¬¢@.¯@¬¢@¢®@º¢@6®@ä¡@ò­@²¡@v­@à¡@v­@à¡@8­@F¢@­@\¢@pHä¦@ž¢@«@ž¥@&ø¦@У@ä¦@2¤@§@x¤@§@x¤@`§@¤@¬§@‚¤@¨@h¤@ž¨@z¤@v¨@Ò¤@ˆ¨@D¥@´¨@f¥@Ž©@ž¥@Ž©@ž¥@©@‚¥@ª@j¥@ª@F¥@ª@F¥@Ì©@¥@à©@æ¤@jª@¥@ܪ@ª¤@ºª@"¤@«@¨£@«@¨£@fª@b£@Rª@Ê¢@Rª@Ê¢@Щ@¨¢@æ©@Þ¢@T©@â¢@ ©@ž¢@Ĩ@À¢@¨@¢¢@¼§@V£@ §@ £@ §@ £@§@l£@ø¦@У@qh,«@ž@p®@p¢@*,«@¾ @«@*¡@T«@¢@T«@¢@®«@"¢@²«@J¢@¬@\¢@¬@\¢@¬@D¢@¬@D¢@ì«@¢@"¬@|¡@Œ¬@Æ¡@~¬@ò¡@~¬@ò¡@¸¬@(¢@°¬@p¢@­@\¢@­@\¢@8­@F¢@v­@à¡@v­@à¡@­@¨¡@D­@j¡@´­@^¡@Þ­@â @Š­@è @ì­@€ @î­@ @H®@´Ÿ@H®@´Ÿ@p®@°ž@î­@ž@t­@àž@B­@Üž@B­@Üž@ü¬@Ÿ@Ƭ@˜Ÿ@¬@d @ «@: @D«@h @,«@¾ @rª@œ›@B­@Ì @ª@dž@.ª@hž@Tª@HŸ@ª@´Ÿ@,ª@J @¤ª@Ì @,«@¾ @,«@¾ @D«@h @ «@: @¬@d @Ƭ@˜Ÿ@ü¬@Ÿ@B­@Üž@B­@Üž@Ú¬@|@ª¬@€@h¬@àœ@‚¬@˜œ@8¬@œ@ò«@è›@ô«@œ›@ô«@œ›@«@\œ@«@8@‚ª@Pœ@4ª@´œ@bª@ @ª@è@ª@dž@s€^¡@ §@4¢@ø§@ €¡@>§@f¡@X§@^¡@§@Š¡@¨§@^¡@Þ§@v¡@ø§@ú¡@”§@è¡@€§@4¢@4§@4¢@4§@à¡@*§@²¡@ §@€¡@>§@t`f§@Ú§@ú§@|¨@ Ч@Ú§@f§@ú§@˜§@T¨@¸§@N¨@´§@|¨@æ§@z¨@ú§@<¨@Ô§@Ú§@Ч@Ú§@u€¼¥@6¥@„¦@X¦@ \¦@N¦@„¦@ü¥@:¦@´¥@`¦@n¥@P¦@:¥@$¦@6¥@¦@`¥@È¥@¥@ð¥@Æ¥@Ð¥@â¥@¼¥@0¦@¦@X¦@\¦@N¦@vxΠ@T¦@œ£@©@,¡@š¦@ ¡@*§@þ @º§@þ @º§@ ¡@º§@¡@2¨@Π@:¨@Þ @t¨@Þ @t¨@ô @º¨@†¡@â¨@Ô¡@ƨ@&¢@©@¤¢@ú¨@£@è¨@0£@Œ¨@0£@Œ¨@£@~¨@&£@§@x£@¬§@œ£@J§@J£@§@P£@Ʀ@P£@Ʀ@ò¢@|¦@ô¢@V¦@¦¢@T¦@\¢@¬¦@x¢@ì¦@d¢@§@4¢@4§@4¢@4§@è¡@€§@ú¡@”§@v¡@ø§@^¡@Þ§@Š¡@¨§@^¡@§@f¡@X§@€¡@>§@€¡@>§@~¡@î¦@l¡@¾¦@¡@š¦@wø˜¤@¨@†¨@h«@†¨@²©@X¨@Œ©@V¨@©@v§@©@<§@´¨@Þ¦@¢¨@”¦@°¨@L¦@@¨@L¦@@¨@6¦@¨@h¥@¨@|¥@n¨@œ¤@Ì©@œ¤@Ì©@˜¤@ª@¥@fª@ ¥@Ъ@ ¥@Ъ@0¥@h«@È¥@,«@0¦@^«@0¦@^«@"¦@¬ª@4§@@ª@ §@ª@æ§@ª@@¨@\ª@†¨@²©@x"¦@j©@à©@¬@à¦@b¬@§@¬@ §@z¬@Ò§@8¬@\¨@¬@¨@<«@ô¨@.«@>©@Úª@v©@ª@v©@ª@Ê©@œª@à©@ª©@à©@ª©@¬©@p©@n©@´©@ø¨@j©@ø¨@j©@â¨@œ©@†¨@²©@†¨@²©@@¨@\ª@æ§@ª@ §@ª@4§@@ª@"¦@¬ª@0¦@^«@0¦@^«@¦¦@æ«@à¦@b¬@yB¨@x¦@T«@´©@ ‚ª@¬©@¼ª@–©@æª@þ¨@>«@©@T«@ò¨@:«@ ¨@B«@t¨@B«@t¨@«@¨@Öª@"¨@œª@ž§@´ª@r§@Fª@¸¦@Ú©@x¦@©@¨¦@©@¨¦@b©@â¦@X©@ §@€¨@Ö§@B¨@ð§@†¨@¨@ب@l¨@š¨@€¨@®¨@ܨ@ø¨@j©@ø¨@j©@n©@´©@¬©@p©@à©@ª©@à©@ª©@€ª@†©@‚ª@¬©@zð¸¦@¤@Ž©@ì¦@|§@Þ¦@¾§@ì¦@Ö§@²¦@ ¨@¶¦@@¨@l¦@ˆ¨@€¦@ð¨@¦@ð¨@¦@2©@Ú¥@`©@ì¥@Ž©@ž¥@Ž©@ž¥@´¨@f¥@ˆ¨@D¥@v¨@Ò¤@ž¨@z¤@¨@h¤@¬§@‚¤@`§@¤@§@x¤@§@x¤@ê¦@ ¤@0§@ ¥@¸¦@x¥@Ц@&¦@R§@f¦@|§@Þ¦@{˜¡@¤@p£@>§@0p£@Î¥@\£@Æ¥@>£@â¥@¦¢@¸¥@œ¢@x¥@,£@N¥@£@Ú¤@£@Ú¤@£@¬¤@ð¢@°¤@„¢@ʤ@T¢@œ¤@b¢@j¤@<¢@.¤@ì¡@¤@¬¡@$¤@f¡@"¤@f¡@"¤@$¡@t¤@V¡@ª¤@T¡@(¥@ˆ¡@6¥@¬¡@–¥@x¡@Â¥@–¡@ì¥@Ž¡@¦@\¡@ ¦@F¡@^¦@¡@x¦@¡@š¦@¡@š¦@l¡@¾¦@~¡@î¦@€¡@>§@€¡@>§@²¡@ §@à¡@*§@4¢@4§@4¢@4§@d¢@§@x¢@ì¦@\¢@¬¦@¦¢@T¦@ô¢@V¦@ò¢@|¦@P£@Ʀ@P£@Ʀ@p£@Î¥@|`£@®¥@´¦@à©@)²¦@P§@€¦@0§@¦@L§@¦@$§@¦@ʦ@„¥@ʦ@Œ¥@¦¦@¥@œ¦@ð¤@<¦@´¤@P¦@~¤@â¥@~¤@â¥@î£@È¥@´£@®¥@´£@è¥@p£@Î¥@p£@Î¥@P£@Ʀ@P£@Ʀ@J£@§@œ£@J§@x£@¬§@&£@§@£@~¨@0£@Œ¨@0£@Œ¨@È£@ ¨@¶£@à©@ô£@¸©@œ¤@Ì©@œ¤@Ì©@|¥@n¨@h¥@¨@6¦@¨@L¦@@¨@L¦@@¨@²¦@¨@´¦@Ô§@€¦@œ§@´¦@˜§@²¦@P§@}ªL¦@¦@b©@²©@2)²¦@P§@²¦@P§@²¦@P§@´¦@˜§@€¦@œ§@´¦@Ô§@²¦@¨@L¦@@¨@L¦@@¨@”¦@°¨@Þ¦@¢¨@<§@´¨@v§@©@V¨@©@X¨@Œ©@†¨@²©@†¨@²©@â¨@œ©@ø¨@j©@ø¨@j©@®¨@ܨ@š¨@€¨@ب@l¨@†¨@¨@B¨@ð§@€¨@Ö§@X©@ §@b©@â¦@©@¨¦@©@¨¦@ð¨@¦@ð¨@¦@ˆ¨@€¦@@¨@l¦@ ¨@¶¦@Ö§@²¦@¾§@ì¦@|§@Þ¦@|§@Þ¦@@§@è¦@²¦@P§@Ч@Ú§@f§@ú§@˜§@T¨@¸§@N¨@´§@|¨@æ§@z¨@ú§@<¨@Ô§@Ú§@Ч@Ú§@~òT¤@@£@|§@P§@;.~¤@â¥@´¤@P¦@ð¤@<¦@¥@œ¦@Œ¥@¦¦@„¥@ʦ@¦@ʦ@¦@$§@¦@L§@€¦@0§@²¦@P§@²¦@P§@²¦@P§@²¦@P§@@§@è¦@|§@Þ¦@|§@Þ¦@R§@f¦@Ц@&¦@¸¦@x¥@0§@ ¥@ê¦@ ¤@§@x¤@§@x¤@ä¦@2¤@ø¦@У@ø¦@У@Ò¦@Æ£@¦@@£@ì¥@R£@è¥@ ¤@”¥@Ô£@d¥@è£@¬¥@p¤@l¥@Ú¤@z¥@ð¤@v¥@.¥@@¥@V¥@¥@<¥@ø¤@¥@æ¤@þ¤@Ȥ@P¥@¤¤@F¥@˜¤@ ¥@T¤@(¥@~¤@â¥@\¦@N¦@„¦@ü¥@:¦@´¥@`¦@n¥@P¦@:¥@$¦@6¥@¦@`¥@È¥@¥@ð¥@Æ¥@Ð¥@â¥@¼¥@0¦@¦@X¦@\¦@N¦@ˆЪ@Ì@æ«@È”@˜«@Ì@Š«@¼‘@Ъ@ä‘@ðª@¸’@P«@´’@2«@¼“@p«@Ô“@t«@¸”@t«@¸”@’«@È”@æ«@4“@Ò«@d‘@´«@`‘@˜«@Ì@€H–©@øƒ@"ª@ˆ†@"ª@øƒ@–©@€„@–©@P…@ü©@ˆ†@ª@X†@"ª@øƒ@`¬§@ð}@v¨@@ ¬§@p@Þ§@@v¨@(@p¨@à~@@¨@ð~@0¨@ð}@Χ@ @Ò§@È€@¬§@p@‚¨Ò¦@h†@¨§@H‹@ü¦@ø†@Ò¦@ ˆ@Ò¦@ ˆ@§@¸ˆ@§@¸ˆ@§@Pˆ@(§@è‡@§@Àˆ@H§@‰@§@@Š@§@@Š@¨§@H‹@¢§@À‰@„§@p‰@Ч@°ˆ@n§@h‡@4§@h†@ü¦@ø†@ƒT«@ @Ú­@p—@¬@(—@F¬@p—@F¬@p—@­@ì–@ì¬@\–@T­@Ø•@`­@\•@Ú­@Ô”@Ú­@Ô”@Ò­@”@&­@”@B­@x“@°¬@d‘@°¬@d‘@~¬@l‘@^¬@¨@~¬@x@t¬@ @t¬@ @˜«@Ì@˜«@Ì@´«@`‘@Ò«@d‘@æ«@4“@’«@È”@t«@¸”@t«@¸”@T«@„•@d«@–@¬@8–@¬@(—@„ˆ0©@ÈŒ@¬@à—@.dª@àŒ@Nª@@ð©@ðŽ@‚©@ˆ@Ä©@@®©@h@®©@h@˜©@¸@Ä©@ ‘@®©@8’@0©@@’@v©@°“@>©@°“@N©@$”@r©@0”@n©@•@n©@•@ª@h•@„ª@,•@¸ª@@•@âª@t—@âª@t—@v«@à—@v«@(—@¬@(—@¬@(—@¬@8–@d«@–@T«@„•@t«@¸”@t«@¸”@p«@Ô“@2«@¼“@P«@´’@ðª@¸’@Ъ@ä‘@Š«@¼‘@˜«@Ì@˜«@Ì@<«@˜Ž@æª@°Ž@«@ @«@ @ƪ@ÈŒ@¼ª@@@dª@àŒ@…øا@•@âª@Ä™@è§@È•@¨@à•@$¨@|—@ا@D˜@î§@ø˜@^¨@x˜@n¨@0˜@ž¨@Œ˜@¬¨@ܘ@Þ¨@̘@̨@P˜@0©@°˜@0©@°˜@p©@Ä™@ ª@x™@ú©@ˆ˜@Šª@ ˜@âª@t—@âª@t—@¸ª@@•@„ª@,•@ª@h•@n©@•@n©@•@ب@4•@Ò¨@Ô•@<¨@$•@è§@È•@†  §@@Ä©@Ô•@!ð§@¼@$¨@l‘@ò§@p’@R§@ˆ“@f§@d”@ §@¼”@ §@¼”@§@P•@ª§@¸•@ª§@¸•@è§@È•@è§@È•@<¨@$•@Ò¨@Ô•@ب@4•@n©@•@n©@•@r©@0”@N©@$”@>©@°“@v©@°“@0©@@’@®©@8’@Ä©@ ‘@˜©@¸@®©@h@®©@h@†©@H@\©@œ@¸¨@@z¨@@$¨@è@ð§@¼@‡Ð4¦@8@$¨@•@*§@8@ô¦@(Ž@æ¦@@æ¦@@®¦@À‘@Z¦@Ä’@Z¦@Ä’@4¦@<“@Œ¦@(”@’¦@¼”@’¦@¼”@§@•@ §@¼”@ §@¼”@f§@d”@R§@ˆ“@ò§@p’@$¨@l‘@ð§@¼@ð§@¼@œ§@àŽ@r§@Ð@*§@8@ˆÈü£@ r@Ʀ@@}@¦@ r@H¥@ps@V¥@pv@¥@ w@ʤ@àr@ʤ@àr@´¤@ s@P¤@pt@ü£@v@ü£@v@H¤@àw@†¤@x@†¤@x@Ö¤@ x@l¥@À|@¦@P{@ ¦@@}@Ʀ@ z@Ʀ@ z@¨¦@Ðu@¦@Àt@¦@ r@‰Ú@¨@Àq@à«@@@82ø¨@°t@ô¨@Px@@©@z@@©@ {@ ©@°}@Ú¨@X‚@v¨@ð‚@@¨@ˆ„@@¨@ˆ„@z¨@h…@˜¨@Ø…@,©@‡@d©@àˆ@ô©@ȇ@nª@°‹@dª@àŒ@dª@àŒ@¼ª@@@ƪ@ÈŒ@«@ @«@ @«@ðŒ@Àª@ØŠ@ «@ Š@«@`‰@âª@P‡@¾ª@Àƒ@¾ª@Àƒ@¾ª@Àƒ@¾ª@Àƒ@¬ª@@‚@æª@¨@Ôª@`@¦ª@P@ˆª@@~@¢ª@0}@*«@Ð@âª@{@P«@Ð{@à«@Px@à«@Px@t«@Pu@„«@€s@„«@€s@Þª@Àq@Rª@Pt@Ä©@Àt@¨©@ r@J©@Ðr@ø¨@°t@"ª@øƒ@–©@€„@–©@P…@ü©@ˆ†@ª@X†@"ª@øƒ@Šhð¦@8ƒ@nª@¼@*ü¦@ø†@4§@h†@n§@h‡@Ч@°ˆ@„§@p‰@¢§@À‰@¨§@H‹@§@@Š@§@@Š@*§@‹@*§@8@*§@8@r§@Ð@œ§@àŽ@ð§@¼@ð§@¼@$¨@è@z¨@@¸¨@@\©@œ@†©@H@®©@h@®©@h@Ä©@@‚©@ˆ@ð©@ðŽ@Nª@@dª@àŒ@dª@àŒ@nª@°‹@ô©@ȇ@d©@àˆ@,©@‡@˜¨@Ø…@z¨@h…@@¨@ˆ„@@¨@ˆ„@‚§@„@§@8ƒ@§@8ƒ@ð¦@h„@ü¦@ø†@‹ˆº¨@(—@P¬@¬ž@.Þ¨@¤™@Ψ@Ì™@Ψ@¨š@ô¨@Øš@ö¨@(œ@Ψ@Œœ@©@Èœ@º¨@”@º¨@”@ô¨@<ž@„©@4ž@€©@„ž@Ì©@¬ž@â©@dž@ª@dž@ª@dž@ª@è@bª@ @4ª@´œ@‚ª@Pœ@«@8@«@\œ@ô«@œ›@ô«@œ›@ ¬@›@ ¬@›@à«@Ìš@¬@š@ ¬@˜˜@P¬@ä—@F¬@p—@F¬@p—@¬@(—@¬@(—@v«@(—@v«@à—@âª@t—@âª@t—@Šª@ ˜@ú©@ˆ˜@ ª@x™@p©@Ä™@0©@°˜@0©@°˜@©@<™@Þ¨@¤™@ŒŠ¦@1@@©@ˆ„@.%§@8ƒ@§@8ƒ@§@8ƒ@‚§@„@@¨@ˆ„@@¨@ˆ„@v¨@ð‚@Ú¨@X‚@ ©@°}@@©@ {@@©@z@ô¨@Px@ø¨@°t@ø¨@°t@ܨ@ p@©@àg@R¨@€I@¬§@1@^§@1@¸§@@`@b§@@a@î¦@]@̦@ d@î¦@ g@ž¦@Àn@Z¦@n@¦@ r@¦@ r@¦@Àt@¨¦@Ðu@Ʀ@ z@Ʀ@ z@"§@~@§@@@§@0@¼¦@(‚@§@8ƒ@¬§@p@Þ§@@v¨@(@p¨@à~@@¨@ð~@0¨@ð}@Χ@ @Ò§@È€@¬§@p@surveillance/inst/shapes/districts_BYBW.dbf0000644000175100001440000004165511731650466020560 0ustar hornikusers_ŒySP_IDCSP_ID_1CidNnameCX31_12_01N X31_12_02N X31_12_03N X31_12_04N X31_12_05N X31_12_06N X31_12_07N 8111 8111 8111SK Stuttgart 587152 588477 589161 590657 592569 593923 597176 8115 8115 8115LK Boeblingen 367830 370337 371678 372113 372155 372228 372755 8116 8116 8116LK Esslingen 505340 509495 511564 513105 514245 514108 514503 8117 8117 8117LK Goeppingen 257651 258488 258707 258492 257783 256967 255807 8118 8118 8118LK Ludwigsburg 503229 507043 509681 511830 513317 513998 515146 8119 8119 8119LK Rems-Murr-Kreis 412959 415764 416635 417463 417697 417609 417131 8121 8121 8121SK Heilbronn 120163 120683 120705 121320 121613 121384 121627 8125 8125 8125LK Heilbronn 324043 326229 327540 328866 329503 329979 330302 8126 8126 8126LK Hohenlohekreis 108920 109519 109755 109756 109718 109717 109900 8127 8127 8127LK Schwaebisch Hall 186967 188229 188563 189041 189580 189346 189288 8128 8128 8128LK Main-Tauber-Kreis 137508 137284 137474 137736 137259 136296 135387 8135 8135 8135LK Heidenheim 137055 136957 136337 135737 135174 134164 133449 8136 8136 8136LK Ostalbkreis 315345 316495 316812 317056 316760 315661 314624 8211 8211 8211SK Baden-Baden 53084 53643 53938 54301 54581 54855 54853 8212 8212 8212SK Karlsruhe 279578 281334 282595 284163 285263 286327 288917 8215 8215 8215LK Karlsruhe 422952 425768 427149 428312 429603 430351 431519 8216 8216 8216LK Rastatt 224309 225896 226669 227549 228408 228006 227929 8221 8221 8221SK Heidelberg 141509 142575 142959 143123 142993 144634 145311 8222 8222 8222SK Mannheim 308385 308759 308353 307499 307900 307914 309795 8225 8225 8225LK Neckar-Odenwald-Kreis 150091 150951 150920 151131 150628 150022 149572 8226 8226 8226LK Rhein-Neckar-Kreis 527796 530608 531649 532788 533993 534220 534989 8231 8231 8231SK Pforzheim 118002 118785 119046 118847 119021 119156 119423 8235 8235 8235LK Calw 160115 161249 161524 161530 161069 160341 159644 8236 8236 8236LK Enzkreis 193873 194839 195379 196083 196417 196159 195457 8237 8237 8237LK Freudenstadt 121682 122275 122369 122407 122579 122275 121865 8311 8311 8311SK Freiburg i.Breisgau 208294 210234 212495 213998 215966 217547 219430 8315 8315 8315LK Breisgau-Hochschwarzwald 243043 245342 247002 248400 249535 250013 250183 8316 8316 8316LK Emmendingen 152953 154506 155160 156069 156728 157265 157629 8317 8317 8317LK Ortenaukreis 411491 413008 414292 415405 416410 416973 417754 8325 8325 8325LK Rottweil 141761 142302 142322 142357 142148 141765 141551 8326 8326 8326LK Schwarzwald-Baar-Kreis 211321 211922 211807 211712 211320 210617 209709 8327 8327 8327LK Tuttlingen 133866 134407 134614 135035 135297 135291 135306 8335 8335 8335LK Konstanz 268859 271373 272966 274096 274692 274752 275120 8336 8336 8336LK Loerrach 219149 220523 221098 220689 221357 221787 222528 8337 8337 8337LK Waldshut 166114 166864 167057 167266 167274 167168 167200 8415 8415 8415LK Reutlingen 279177 280613 281690 281779 282049 281891 281580 8416 8416 8416LK Tuebingen 211058 212993 214365 215835 216477 217172 217482 8417 8417 8417LK Zollernalbkreis 193196 193696 193387 192961 192722 192138 191531 8421 8421 8421SK Ulm 118347 119155 119807 120107 120625 120925 121434 8425 8425 8425LK Alb-Donau-Kreis 187000 188146 189101 189717 190233 190189 190212 8426 8426 8426LK Biberach 184548 185980 187138 187885 188532 188810 189089 8435 8435 8435LK Bodenseekreis 200948 202449 203523 204392 205446 205832 206759 8436 8436 8436LK Ravensburg 270572 272273 273681 275079 275677 275900 276470 8437 8437 8437LK Sigmaringen 133671 133852 133889 133732 133385 133078 132419 9161 9161 9161SK Ingolstadt 117311 118416 119528 120157 121314 122167 123055 9162 9162 9162SK Muenchen 1227958 1234692 1247873 1249176 1259677 1294608 1311573 9163 9163 9163SK Rosenheim 59310 59820 59988 60108 60226 60394 60674 9171 9171 9171LK Altoetting 109023 109590 109611 109367 109227 108789 108773 9172 9172 9172LK Berchtesgadener Land 100626 101304 101738 102177 102587 102407 102383 9173 9173 9173LK Bad Toelz-Wolfratshausen 117416 118152 118731 119678 120633 120308 120834 9174 9174 9174LK Dachau 131345 132267 132990 133480 134382 134965 136272 9175 9175 9175LK Ebersberg 120416 121612 122136 122913 123895 125052 126400 9176 9176 9176LK Eichstaett 121031 122466 122972 123181 123233 123745 124419 9177 9177 9177LK Erding 117949 119216 120568 122123 123094 123703 124876 9178 9178 9178LK Freising 155396 157161 158140 159367 160655 162452 164692 9179 9179 9179LK Fuerstenfeldbruck 195869 197392 197995 198901 199783 200362 201148 9180 9180 9180LK Garmisch-Partenkirchen 87408 87709 87441 87013 87351 86923 86872 9181 9181 9181LK Landsberg a.Lech 107609 109025 110303 111281 112080 112283 113311 9182 9182 9182LK Miesbach 92720 93350 93688 93942 94970 95045 95267 9183 9183 9183LK Muehldorf a.Inn 109733 110570 110840 110940 110930 110623 110536 9184 9184 9184LK Muenchen 299883 302750 303604 306182 309080 311493 315462 9185 9185 9185LK Neuburg-Schrobenhausen 90224 90810 91084 91254 91181 90945 91067 9186 9186 9186LK Pfaffenhofen a.d.Ilm 113111 113881 114489 115382 115809 116014 116407 9187 9187 9187LK Rosenheim 240106 242729 243714 245132 247057 246828 248047 9188 9188 9188LK Starnberg 126588 127478 127723 128283 129091 128789 129515 9189 9189 9189LK Traunstein 168827 169600 170264 170449 170906 170440 170546 9190 9190 9190LK Weilheim-Schongau 128543 129667 130253 130632 131034 130777 131317 9261 9261 9261SK Landshut 59513 60075 60282 60545 61368 61923 62629 9262 9262 9262SK Passau 50669 50810 50683 50537 50651 50644 50741 9263 9263 9263SK Straubing 44316 44364 44473 44683 44633 44504 44625 9271 9271 9271LK Deggendorf 116558 116943 116967 117284 117492 117517 117594 9272 9272 9272LK Freyung-Grafenau 82553 82471 82363 81975 81582 80771 80427 9273 9273 9273LK Kelheim 110918 112051 112846 112939 113237 112927 113088 9274 9274 9274LK Landshut 144504 145892 146857 147736 148101 147990 148286 9275 9275 9275LK Passau 187355 188090 188533 189027 189142 188474 188462 9276 9276 9276LK Regen 82721 82555 82162 81796 81416 80748 80195 9277 9277 9277LK Rottal-Inn 119107 119416 119729 119727 119598 118944 118800 9278 9278 9278LK Straubing-Bogen 96035 96902 97485 97848 97797 97734 97810 9279 9279 9279LK Dingolfing-Landau 91218 91907 92092 92081 91906 91644 91481 9361 9361 9361SK Amberg 44217 44443 44596 44593 44618 44394 44216 9362 9362 9362SK Regensburg 127198 128029 128604 128917 129859 131342 132495 9363 9363 9363SK Weiden i.d.OPf. 43071 42821 42684 42775 42672 42496 42445 9371 9371 9371LK Amberg-Sulzbach 109083 109044 108886 108784 108159 107683 107069 9372 9372 9372LK Cham 131416 131622 131489 131306 130871 130111 129605 9373 9373 9373LK Neumarkt i.d.OPf. 127312 128027 128625 128725 128613 128529 128488 9374 9374 9374LK Neustadt a.d.Waldnaab 101043 101444 100933 100480 100081 99496 99007 9375 9375 9375LK Regensburg 178095 179389 180354 181406 182193 182388 182721 9376 9376 9376LK Schwandorf 144370 144751 144780 144904 144748 144411 144089 9377 9377 9377LK Tirschenreuth 79804 79359 78875 78399 77729 77089 76549 9461 9461 9461SK Bamberg 69396 69726 69899 70026 70081 69574 69884 9462 9462 9462SK Bayreuth 74519 74558 74818 74548 73997 73503 73097 9463 9463 9463SK Coburg 42798 42629 42257 42082 41950 41638 41283 9464 9464 9464SK Hof 50654 50150 49685 49163 48723 48191 47744 9471 9471 9471LK Bamberg 143107 143877 144268 144831 144825 144993 144949 9472 9472 9472LK Bayreuth 109249 109302 109404 109219 108724 108256 107649 9473 9473 9473LK Coburg 92199 92205 92053 91785 91325 90786 90244 9474 9474 9474LK Forchheim 112838 113331 113258 113447 113543 113397 113389 9475 9475 9475LK Hof 108744 108198 107505 106632 105715 104613 103686 9476 9476 9476LK Kronach 75458 75038 74582 74275 73678 72909 72289 9477 9477 9477LK Kulmbach 78674 78266 77940 77556 77141 76641 76153 9478 9478 9478LK Lichtenfels 70874 70984 70640 70350 70057 69519 69045 9479 9479 9479LK Wunsiedel i.Fichtelgebirge 85278 84391 83365 82627 81631 80505 79433 9561 9561 9561SK Ansbach 40412 40537 40708 40512 40624 40412 40330 9562 9562 9562SK Erlangen 101912 102198 102449 102578 103197 103753 104650 9563 9563 9563SK Fuerth 111257 111784 111892 112506 113422 113627 114130 9564 9564 9564SK Nuernberg 491307 493397 493553 495302 499237 500855 503110 9565 9565 9565SK Schwabach 38518 38633 38586 38630 38791 38862 38753 9571 9571 9571LK Ansbach 183668 183967 184333 184576 183755 183052 182293 9572 9572 9572LK Erlangen-Hoechstadt 129751 130455 130660 130652 130489 130788 130873 9573 9573 9573LK Fuerth 113530 113840 114571 114297 114024 114203 114483 9574 9574 9574LK Nuernberger Land 168693 168811 169146 169075 168389 168111 167444 9575 9575 9575LK Neustadt/Aisch-Bad Windsheim 99156 99618 99768 100033 99979 99490 99106 9576 9576 9576LK Roth 124963 125280 125722 125757 125708 125306 125240 9577 9577 9577LK Weissenburg-Gunzenhausen 95176 95349 95227 95054 94660 94163 93711 9661 9661 9661SK Aschaffenburg 68361 68682 68607 68703 68642 68664 68646 9662 9662 9662SK Schweinfurt 54568 54670 54601 54467 54273 53970 53798 9663 9663 9663SK Wuerzburg 129915 131582 132687 133539 133906 134913 135212 9671 9671 9671LK Aschaffenburg 174577 174863 175214 175406 174974 174543 174168 9672 9672 9672LK Bad Kissingen 109498 109382 108926 108607 107988 107267 106628 9673 9673 9673LK Rhoen-Grabfeld 86717 86811 86824 86731 86094 85313 84676 9674 9674 9674LK Hassberge 88412 88301 88256 87878 87607 87063 86477 9675 9675 9675LK Kitzingen 89104 89335 89498 89525 89501 89378 89293 9676 9676 9676LK Miltenberg 131369 131568 131548 131543 131376 130692 130303 9677 9677 9677LK Main-Spessart 132206 132393 132090 131770 131218 130678 130148 9678 9678 9678LK Schweinfurt 116874 116868 116653 116380 115924 115173 114657 9679 9679 9679LK Wuerzburg 159311 159845 159836 160080 159978 160222 160761 9761 9761 9761SK Augsburg 257836 259231 259217 260407 262676 262512 262992 9762 9762 9762SK Kaufbeuren 42246 42665 42581 42430 42183 41945 42043 9763 9763 9763SK Kempten 61505 61609 61504 61576 61360 61480 61703 9764 9764 9764SK Memmingen 41101 41132 41133 41191 41107 41111 41021 9771 9771 9771LK Aichach-Friedberg 124501 125534 126711 127238 127446 127531 127785 9772 9772 9772LK Augsburg 238536 239979 240874 241494 241381 241033 240976 9773 9773 9773LK Dillingen a.d.Donau 94435 95005 95417 95626 95512 95124 94759 9774 9774 9774LK Guenzburg 122114 122574 122942 122636 122450 121833 121691 9775 9775 9775LK Neu-Ulm 161110 162214 163082 163504 163387 163495 164135 9776 9776 9776LK Lindau 77850 78240 78643 78900 79467 79733 80139 9777 9777 9777LK Ostallgaeu 132389 133196 133782 134206 134766 134551 134462 9778 9778 9778LK Unterallgaeu 134920 135300 135804 135858 135708 135699 135898 9779 9779 9779LK Donau-Ries 130335 130833 131222 131141 130969 130321 130035 9780 9780 9780LK Oberallgaeu 148315 148953 149474 149959 150507 150396 150690surveillance/inst/shapes/berlin.sbn0000755000175100001440000000037411731650466017223 0ustar hornikusers' ÿÿþp~ A80ê CZ@õše³âžA=d´ /©`ATà(i^ ]†žÿ hi˜Žv'§sVƒx ‰`±Ã Ÿd׳ ƒÿv$—mî Mr©$V^™@E¼l\surveillance/inst/shapes/districtsD.RData0000644000175100001440000024341412316276674020303 0ustar hornikusersý7zXZi"Þ6!ÏXÌãÆïþ])TW"änRÊŸ’Ù›:¨á)ØðÿËðõSåÊ28{'%´çœQG¯BÛËç™8Á±÷ñut~«b]º.‡NhôºÍÔ@q6Ê‹J SòˆçP[-Usx¦~õd&tÄ›*…Eú´¼¤v@i'±\ÏÀÙÊÂè –pÝ<áVžé¤ÙÎK}´ó·Â+ºy4ýZ:½œâkË*‡M‚ÒØddiKh¾ÇŽb°¡Š6Yì×'—\ ¶:fíPÎm¾Ö‡R’ŽöÄçw=4Dö½}BÜævÞšô¤Ÿ¯‘á»Ù_ëCA iüŽÃ)xðz€‰¤F´ûlø\ÎþýÁx fi@êˆPÔ_±;-r 1Û‰EØéœŽ,;DÄì)Z G¼äŠRÉ®Ä „ùñâÕdóñþV|–QdÀcëp‰ÀsÍTM»D÷Û4컹Jo`̺“Ì¥BqCq§‚ëx"gtåáo€sTRÆç­½ÄåÐÒë ýèŽÑì®PË?ÿÛv—æ´µúyD¼u·˜Å7Fæ$óG¥ªDÖ¯c¹ÀŒ©×¸.±!=ÂvÖà%˜ÊQÔœ¬G†»“ ¬£ã?Ÿ",MÓMW4˜±Þç«ÐÜS¶ÓNxzÛBÔáɇÙ6ΚwW¢à×¹R”)·q!³ó]äiñüD"7ýˆý)D†aPSõ¦þa'€T”;ůÏÜŒ•Â&4ù`¯F>Bõ`@øO‹Û]›•¬ %‰øB¦Åµ}È·À ÝfÀÞ"¼ÀÕµ°U|fÔ…Û3E¦¸è¯ún]ËÎc_\åS‹¨Ç)…‚§”²óOå4á*7¶ËÈ· êT„œÔ¯Í,Â\¡*¨ k$Êó0 ¸ÕJÓ¡Ãn x‘IÍt˜«Dª%¿2úÚ•?[Àc'Š«–Œ·ÖÈ@!”€¬nÇe-5;Œ<nÜ.<ÙKÁ…Ïf¼wÍA4g#Ô)¥×iü»ÚÑ&ÀiE88o#éñ)EÖVºÞñÈ þ¼Á›†¿ÁH'Ǧ*¯Ô‰ÇlF2í®Lºñý~o#€å))>Ò!e#\Qï³×¬|„,„S²OUµÇço½$,36Iˆðã—#qÝâÝ{ıÅŠçr(Òjg¡÷©D@þ=ïlC÷—Ms¬ú´’NÕ#¤õM[ÈÅgœVÂÐî,a»Ž›Ç'¿ +ç4Øp| „˜Êúõ’°‹œ*ùëªÌç"a&MlDîec§E©HÐÃÁPB:|îÀØð$Éf˜ÀâAŽ™ÉA˜lxÄÎI+UàSë7r-ÛÃM0ÎÔI-Ýa&\]æ;{cÆ<¬´~Ã1ǰ[5òÆÐÝ©ãÅ^Yìþ"J¯üßÈ#n`ío Uà‡€ƒ€­Þ,M}{hqËÔ–Mr—­zÝÍ#^Ì)¼y”¬NCr~5>õ‘ U#|EöŠi M“1K‡W!xv˜}\дàÖÓÁ}†Ã®“=nçö °2å¯` ?†b|Ü ÉÀM?*T¾NÈkتG8†t7Dð>¢tŒQÔ)©Š/õ¢PûØÈÊèºÑº0Í.ŒÝŠE€¡ÿyŒv)À™[3wœÈýï´}Œ–„¦Õy뙹ògô°°Ï1=L>[Á9…óê󿦋 ¹ÉH'@÷’{ü²=PÒW´Ú²*UµZ Í6~›5µ>>©¡8š{®Nó’”ÂÌ$/¯wwoNKǤ´ ‰Žë“ÀªöÏýÒÄ–wfkp:¦ý Vî Ù Z YOhò¦£ï3õ°íÖ&¾àœ«lH9å?Яª>‡­-K1ùtJEûìG«\ÿ°ZÏí'êb.žýûª‹¶fu[äa…Æž÷BÌüZ& lQ`2å 7}Èá‡ðÐô«<›Á¯+Vn8mÂHÉfAÈcHN< fㆿ˜_û €ur³žxŽàÙÅœãâ«»L}ÃUéä[:Æißñ®Õw¸aApæI3êKôê–-¾óèE¥Ê® öTsˆ”»æÄèpZ„/âž³Á²›£• zÉÆ^Ù;&nbŸRçW•L1dÍî™Ëâ!¥È0''6è{o+ƒ œm§+¸Ðȸo/c­~ÿÃæž ,¨.j¥uºÙ¹‹‚Qœ ©„î¬Ïñ}lÔM: >ë›õø³q-«}Ÿ#­v·ŒÅÌiZU—õdË@ІYêÖ»žÊöXȺ5"[˜ÿ¤ã¶eçîU%VIk™|˜¦@KK…hÊ,³Íì%ÔÊÚ®uzóy¸1¶ËþúA÷Ê»û #Ð_Z« ÿaN{óË—WðÞ@-)¯ 37?ˆ°öJ2 ¢ r¹¤-mßN-⣅–j8ü4Þâ „›}r%Å€t5Ý ñUþÒvã™Ïö±qCXK$f²à¸J–8ˆU3Û‘ s æwK·BéX´±ÐVqÈHO¢ùï|ÃÕùÖ쳤¡T†Ï´¯„¸ïøS„ÅöE±^ð‡BŠWj¶¢Vܘ š*üÜ{y@D ü^‹?ÓUJéP aæ¼Ø1^{®RòV©¿¨¹Rímâ@ôž_é14ú-<ùÒzÛ·ˆ­IN ´³›– üz1V®u”ü¡™}µØ•.HíéxüŠb ÿeº4,“&"ÚS–ïÆüªPþµ£U¡±Úé%w¼ËèÁuç½’wŸn\«':,ðþgKÖýú–jé[3yÌzû‚™3ßsª1t3õožw\CÏÓ²¸ÛÇ·ßÀx° Må&[ו©†—ôi8Úé0郥¦]£š?‹]WâšË½åZ"Þ3‰²1 EQãQ (:Ê”MCn8Ìn¯Ü—Žý Æ`ÀžR“>ï†H—J²î˜Tܬ® ¯K{-nSäT…š;’m¸Õ£Z€ä½³¤zÄ`Q‚´¹€­ûÚz8ìW¶~£2êË?ò*@™“rÅùלömQâŒMUA bSÆ™i|(£/Ö8A3 µKmc@HBxgIÓɳnÅ’¹g¼èy“·yH»3r}t½ÉÑdrÕ`´ÁÎyÊ6"oß/ØÜ"»5¤¬ŒAE‡ŽÄ´¬¹g&ž<¶çXÚj‚ñ<Ë ú36O~ +/¿×b$;[§5¶-h{®Jƒ®kºçM.öQì"¼a 3UVÈ"|Dcõƒb÷n\Ͼ€©>4³éLæ©fÛ™=Ò«àv&¶mó8>H ×M]r|Öól*ú ±–tBMJŽc^)4Ž÷½°99ûÿðñ±S¬Òðu#Ðôãî\v3—,]wš"¦¹…ó# Yå&-þ¬ÙJ1#ö¹A‘Ê7Ú"`%øØ ªªçj¬ µjVÚ+´›ˆß%F»‚üå¨@ˆxÛ6ðŒ2f½éÀÏÜNÔtOy4J¼TN眕ô_àè+j\ ”÷I›Àû 8#ã°³4(0ƒA965™&Ø.BØ0b’õëüMkòÆŸ?ðô<[:"ïwQ©™+›tÿ:½´Eœûó)Žfïݧª·Ï3ʱdØ4¿êû|l¬™!ª‡`-ʨçñgÔñ0¦þ*x“Àw^¼Oõ2ò.X™¥éqÝdL{ŠRÞùÉo \®ˆÑ½2:J[¤^ÄèH”ˆ«¯ ,ÉTüÙÙrA;·ž±pËß©)Y ¿Ø÷0}ƒ¹æÚöspøˆ)²‰`õMÁ ' ¨04ß’æ0Z³˜èY[ìê“®ÔP±"‚!Qâ=ûM¼ç};²6à´a€5Èt’ÛG±‹IwZyþåkø–“# ;’Ðá×õKWMÚ )š?‚ÏAüÊ zk×$Õ¸¾ $r3ïö£QaA”¸ÉáÁ MQNÚìÖ†tP£¡˜s¤3TϨ¾À­l*nô˜‹Ó{¿ÃÉ›¤ªò'¼R}*tWIù‹ÆüFÔÝløæ„ÉamA=aªFx³GùШñ:6î÷¤ "eû¿»†§j˜5ó˜ól$"Öª.ƒ,!ì—ñLbâô`‘àÕeø €…N YÔ6ö§ïb+”@ûÑаß ¡¬nÑ%‡ûLý1%ÕE x˜ÙÞÑÉ–¶#ŠÈ]•d ö’Îç&ãvóÞí#9õÌ=ÈG–i9˜‡xk׈G@ß›[íhóõr¥‚­êÚ¹âñÁb|û ½ÀíX’&K“Šà>)‘àHp@†Åç ƒ•tʇË%=°4¾ÆT>ùxè˜V Rt e¢;(m:c[RÌœ¼l»BaºÌ5ŒV†›§¬¼¨OÊZ¶3{f>½Ö>UÉHÒÓîƒm´Í¤“ÁWrš–vÄf‰L/ÁrÛ&=³ +mý³¦u}(¡÷úä1AäéðàŽˆúŽ[þ.˃“aÔ}+H¶òÍçYƒD§·± µ”Ò˜8qúkÈ‚›ÂXÞ%óh?´ o¹ÏíXþêcŸºHÇ,䟫aø­ÐH`b £LؼúÛx†ém ƒGCÎS=¥öG˜µ…Ï‘ãrKZ™[…"ÁµQ¨¢£ïK…í6ª¤´åO|—¡`Ç'VS¿ :*F° –¾Áç0pˆï§ÒJÛ)Yh§Ô†òçœ0X&îž%4½‡ÓŠj›¹¢*z“{ý} oÝ_>àSîƒÇýN.Ãö‰^Ǽ¬)*E¥[Zn¹ÝýHˆÙ1ò¼ó_xû{ßJ ÊAjÑ Û3¹Ü2€¡Ú*Y¢ªq¬Uúþ’2"þ6¶NÖxïAÓ*ŠËÎk@w`W&|B¤å©"éQFƒ•ÕœëÝ"¾}âà¹çÕ·¶ÎÒ“-1 hcmôp¡á¹X_°üÒ¼>-Y®k’Xá‡kM£Û=¡[3@ŒNw—ß׉€qDNy—êØG݆i©1ÙÖrìOºã¥rúÅßñ¾¡¸Yw»ÝX‡2a¿È*Âsþïò8Pµi1•º@ÞA±¼«Åéæòç€òÞ 8D­9TùxSœ=ƒKúuåÙ²tî\£Ë¨p¿!ÂôÀ‡™(C>¢î¡õó‚Ë£q'å󙌾Uç[#þ™«o\$JÌnÁ6p>ÅÎUF¶Ò°êì1€:żŽÁ\¦”­îïÖ®áZ0Ñ+5ׄj Lûncå×(2ô6šªÚ×™v™lU´|n<°þ9õ ‡ÿeÊqš.ˆœ„DÔØÐäf:î1%x ’’Bø×§ðO¾i×+'7sÈsɵˆ]s€a-5•ÜçÑsË×Tî,§ÔÇ ù–èÁ)¸ðÕÑoçLŒUØj¼y+hR/¨C·;³#¥@_®gß$_8á*‰m$G9MU†Â¢ oUk[éG%ªafª<3)-¸ J§²Âåüí¯Ž¿û…@Fçƒöl(AÍâ0-f® g†2­_¬*I"£%rÇufÉuæ(poe› Ƀ–R´Éz"_youY Nº‚Qüï$h¥‡”aÔ? ŽŠ £ªíPP¼Àg?Á¯ëòû ’1¬rѦµ¥µ×ìR¡_u*OØÀz”_¬…º«PáE-{ÕšÂ!vÓ·ÞEZáw9æV·Ì~tŒn>ÐúߟCŒ¡V¶q³Zìõ#[ l[Æÿ(8犤ª˜–¬ë–¥šô|ìtÄOîe0¾ìðOó\/jqg‚C³é3Ü<V)ÆQNVn¿¤ýLµp¦…‘õ}«9¾– àÉ“øaùƿۋ!ô0UÊbvWÑ»P]L±r±Æ‚ôÙåå8¨ë –†‰©±®êp) +$ì¼P­lg³»:²š-ð̨…×@ïLš2…£W$½¢"ª¦8=W}¼ïã<Ï=颪Âq‰ÈÎÅ'x¯)pÒ -£é”Da¥Ï`çUX9Џ`®qü=—c»QÇOËLÊü@̤¶HyÉóÿâ‹,嶯^ðÙzâW× Sþ+dDÐÔf¸EH7ë3ïááYBcº’ÌÌÖz G•À­O'pÅX©! L=tržk!*½>ÁäîŽÊÅhX'æ\D‹¼þ¡B¸2®Á ÖÅñÆ2,. ^ˆÛla|%¼OÊÿä­Šöj¯y6Í^XĆ¿3ëi>2ÉpÛðK5£ÌÙÈúÄ{ªÐþƒ@H˜Su!"Chzü¡`%‚L\æùýÎA¢àYµósí¶[Ï£Y½ ·7‚dLõp‡<’ æm#IQ<ˆÛÙÅ¿~œ¶H¥°£ O,"à:–Ú/´×é8½My¯’V"bï…úŽ/át“©|µºÜL©—å§\‡NMâÉ‚fž13©úH¤öÒõ Šbb×7_Aº¤¬> ŒÇRÅ+ÑáûÙ6 JvÐÆ€7·®ÞÖk$6@ÖX qz·‹Ÿ˜=ZaåR¤\µ‰L`)4Ó“g-BÕ€w³°§hp†­¢šnAÖnôêúQdhD» ±*^jž£ñóÕ%ßàµzÈÀÝRòÄ\i¹ Z‹\3 ŒŒŸÖä©48´FY&(1™R!L(Ö€àuArÞ|_Ìòø L¡¨Œl°SçqxýWàÖVÚ cddc(ö±¹±Ž4'Ãàiÿv8ÂL˜‚Ž]R¶®®õ_£ÉYyˆ.  ÛÔ]‘à‹oD”豫$Æ×OoKôÕ9ðc4Æ´ç²ÊÌrFõÎ×JƒÒê*û'‚q÷úÞP¢•áÁpÐ}£g7M¶ž¤(*‰f&éÜ0~†÷Á·9«QX^亾'ð1„Íå¸y›ÉA9‚0XqŶèÙÊ+ík8\Ñk&³5,…¬åÍ)À>£)hyÄÁÂËCpýÞ•T!A2fõóîHxÀ,µ3G¶{™fÉÝ ÊCùÇêÛ}Ifæ³+ŒŠrjÓ’ß>Ö•¯Ô€«œ™ÉaI—w3GuÎ 'Ò¤c"ìÞ-­GKIŠÄ¨úIlÆØìÖßÅoÆ„õm‹‘XÆ-‡~ E2ýv*þ…ùz? ˆµ±8 FýR\üЂˆæ)^äX£ÜŠRjû‹Ô¡\¡o‘€nùÁ•2€PzBaþ oDãÒs%’\ã_qõ µÅ[*AÍ“2)Õ¾ßi³LM"ƒŠ ÑÙƒ‚8Œd®Q y+jÇ¥Ñ£ÚÆÈ¦ßˆÏƒN†nA¯Ö|ŸÒG:oÞͪ S&ùÎïs«“¢Û÷±“œd¢f¾rÀo6Çží Ù©Ò¥ÂöG››¨±†µ¤YpÃ`it:]TC‘5ΪƒØ3‘6ÆPÛ”W“Ñ?ur‡²Zž>_Þ&¢œyþIñÄ66n‡ r$(°bæá5K0µxœ„/ì{œ4ŽD›õ¸ä‹dPFµŒÇåË|à¿HmF :…‡)抠ù™Q¹I>.‹ž¸hhá`P¹ø¦É}ue#š/N øÎ†ÝdéÚ¿N3_qÿ&gðИK¸ÈÐ’Â\gž’QGÑÅsI`E†ªx,Š’p’ùÿ:E?­ëQt›¹›7y’øBwNKVZò[rPü´ªçé'ê¬*KÜ„_RÀ:î.ný…ö¯©—x… ÃtÖ«°ëËëLPüp»rùèÏ€>ôªhî&àæ;Qô >À´©¢ö[ ˆÓðdï䈈ÐOê¯Ó!£zšæÿ×àÌu1*‰¬{é“Ê2‹…¦Ê™cäö6%$¯ÅÄ ˆ/,ß¿—’žzl¨H7ù ‹ÈQTOR˜t?$rLòr~ìÀR( ÆâÕŠFoé­Ï2äxl!÷Á|ÝÒéL³él& ý¶=~9j‹xuâ˜Ñ\ä-S÷F3Üšéé5-¼õ¾Õç€ÓŸ€oO¾da"çüÁÈê#¨}×q\ã`™S/Ó ð¤t¦ D,±më( dü’åÆœI &èD‹[RT›ÚYå?°ÉÂÏŠzW¶–a3i>±¶"¬–aÌ_„Ëb掑“Ä®2iYá6†ú¥ Cla%ü:‡Œg!éØ( [ãoıjQb÷BJ°¸œÙ â(«–RNîóìÐÙf]—À´˜y9¯i—{Q(Ìq‹"îrëéÿ7Ú„³äú߇‘Ì’­^¿4Ž<k¯yyßÿÿ²É³õÜþaP›fjé›wÏoyË'\XPµÙc€V*ÆÙæý_ êHåŽæŸ™ Ð͘ºvHrQAYûáøÐ_y?ÿ «ÃF"«ác0!´èD¦ Í ©D_¯y„ý¤¢Ü]cú’ÏÞu,õÀrL=¹Ïr"šÃ~Ïe„gV°ýÿœsRž¿Ñ÷AÈȼÀ­ÕKÏ—6+=Zb5C­Ùìe¡èÛ ¡]ÓT䇊ØN¹yçé ðà òÎY¼-àmoÞÇ|  eíÏ®ímÏ–R¥«PïåÎNß·¿ðv;ƒÞ¯s7º9Ó˜pv„%Öc‘޹÷t§“9yÙÃéÞ4³§) ò6(ãCYYêÔîn[Á^ÇôýÛpæ¸ ö‹Ý÷2¬X÷”ZºÁéä*§ßp™+hó+¦‹ËbÂA×Àô¨Ô3„±šä[Š-ñ’¿Ê²ú4>Ù//3cwáyê<è-ÛöRØh‘¬ÝÌF(+ÓÕdU¡ °c²£ò*=Bî,Ø9½æîÂKƒ3Â!sê{T/>Wu eÈ¡¹L¬ßgr Äx9*¢%í)¢<Úíÿ•¡tÍ~õõ¸z6•ó5`SAhÄý²ñ ÙsI(¥jáÞva»Å!jˆº”Oº˜á~w"i…&˜KÚNäõt¦²v@™‘öÈÊrÄF|²1%5rȼˆ@U“´-¥ö(–lJ¡JC™©L©x“×l&~O”66ȮŸ±Ä.NSCEBžk¤ædîÁ&Hf¯»uãŠ!µ¤Ëó¤¾ôÐ8íd–Uõ–o9„n†‘ kõÔË%ØÐ½¾b>ÐÅ$gõ‘8r‰ž¨´7ö€6Iù²žùÙÈpo£Ðû @ROÕ  V-XpœÅÔ7ÐAtqáú2×ÏHþo¥×ýhµ´aáa˾ÝT…K³ õÁâD÷t’¸¢å: Uùeõ+‹Pø³£ÇÍ(e~‹ˆ¶&´«‹Ù™‚m#0ÿgŸëµ¢zºú6õf¹,²/µ§é¼%îúM=zÖkç¤ ë.ÎØ¿&Js&&Š;M<”¡ f˜óçL8(<ºc”²­vÀsýä° öY›~†v*Úµï.ÕGnÔøÛ£´;€+j߫٩ÒkSƒ‡!º¿¯ ‰ Wüª©¼$ ¼o2'ïM|EÏÀ¯6’ÕÐØ–}ä,LMó^easº¼n¨úcHOÔMwÌLˆÌ7éïí1 }O2g–ô4Ãô°5çŸý8Œ„ÆGŸÂ›—­ŸÑz›É‹À‹†­ª1…¸ó‰?P¦ÅáÊ‘ÀÁåYÁ gj­q¢X°Ò.9˜Ç¡Z~n yþ&­ S¾gÛåwÐ%µÏ$uk50‘< \9Ûí s‘嬇ۺ`–³) ªó]<øñË8¶­Ðô ‚´áåºÒÁ»"/%i*T ×<¥[5.`)”;Ò†GȺñDIBïj›ÙbëÙy6‘>¡7+A µUd‚(±ä=L²“ÿèÌm HëXÏbŠ%c:„%ûs6~Ý­jTà÷ƒ°¢‹æ“Êá&·Ÿ‹íwµ&!·ryh Ð'å8§4‚`ûRI¤i€Èƒl€šV§rDèìºÇ™*©¬Òfä~§÷Úd'~H‚ëùI¶«¾Øê¯¹btû`VüÆnä–-Çð)DoÚLï†ï®Ñ–Ø+=´)_iU+ØLÉæì,8ß×ô¶hZ·•©Áf¤ ‚õŒ%Âë—Á›Ö‘kïûl.'INªt â•Ì ñÝ÷ ‡ãÉ’4ârH¹4vÉwòVÆþ0}²Êâja^\/ƒ£uSð33$NHÀªg^Ò¼Ô—¥é\ßV‡$4!C¹P’+ËÌe}9ÕµtÏF¸«¡™;x1lÉaݹ þ D;‹Ð¸Šw?òÅЖ¯óŸ&B{÷À3É=×ßg &atèc\Õ×®˜ ó%RØ(¿ÌDìU;.;“§Ø’DÚoëïVÊ¢’Êc†QI—6ÞSj…¸ÔéŒXmà5œ©óYÑö^?7YßÎTþ­·Š­|߆$mÊ0BpËHâi{šN§©xwanfL­6锬 VËks'ó{ð]ôís^*W[ q=Õèmg o©_7kq«§U Tø¢ûm^hE’Ž[t}­•ƒ…-Ä›ø ?3V6mK.tÅ…Þê·p[ wg,~M꿆”Ž‹Rõ†C öq…¡ø‘eŸÝ²{g`ݳpHd~ch¨z¤±x3QŠzÅ<Ža¯ŒSÔ†MžQ( 0°p©!&ÄOÅgó8Èõt¤o =Z°ÛOµS{áës*fè2Ôn—Y>ªBï'.‰Ã¬ß†XQf³)½v†d&MQÅ#ÜTÔ첉(Aâqî%ãï³³J{³Ë'x¼œòõI´©Ã·þ¿cÜ|öÄ„Î!e”29Æ…)º·‡<£LQ²™«šý½ê<Ì?­šåù% Œ#¯I‡Çã{S`b1£ˆYrIÑrÖÍg¶´«F+ëBùZ»ÖO²\;$ ãŠi†v-7^ÍäZÚÑÏ‚·Ök›KáNP–Ùt°1(lÔ^´à"„jNÉœ„oOIZq„1©Oë ¥q®ž²cMhÇŸøž|äo?ðÛ¾ô’ÇâjiQuo“[BÁ#'‡:nÐth&2ga{åUúäA9oþýNVþm'­ßÝqˆ;yçÕL7QtGcg«>Õ…v£ µdD>ò v¦‘epàóÙ&]„Îd”ê4Ð \¡/бc.LìÆˆV‹Ï\ ‘,*¢“ÿ»0H•ƒÁ kÿ²3ªÝ.u£»þ` ²Aà§Â0‘À—ñÉb£Ó¢Ô9ü°’õÚÐâbfëà .qÈXœ({Ñ(LiÙ×çÜî.÷,àïòÜ…?ŠütÞ#ßT†BÕ¤tX– çã³['ï_¸—ï÷³¥´|c¯M>(óŸ-³ö¥Ë4Õ˯ì~羚ÅËÄaœ"³¥úhY§¤UYŸ³o%¿ÛªÕY±nT ÅÌÙÅÄÅÍ-U0I,ðÃLAµ9Tµ+Çt$áóxŸÀ,«dj0îâ©6@™xã-ñ Î'v¼+Ë/Nó°¹KzXÍZ;…:£u‚å%‰be~mÜÓnYQòfSˆ-¾Då0éât`¥~T!à{÷ ¨f¶í¬0+Y ì“(º“O01±7LjÜ(?˜ßÿºN«@%—šÙ¤”f‹²«°/ cï§ð8{ÅPËwí_•À?÷‚‚AK¸×ÌþYÕu‹fm¾N v¤;kq÷ÅräM~F€Á|µhlÅ.0 /¿}®æmâªOÐàT½’å½–o×´×mw(ÉçšßàœÆ/ Ãb‘m¤‚ ð¤ëþeJà¥\f<Ì×VÚ,]f¢îbÅ—ûƒrë9ä™ÐnhΦ­b: —<®tËM8‚Ýr?N'\•ú¯Œ‘áP|þZêI>ļÉñã”bþ@z–ˆ<ÚíiÝ,ÈVý;q#¦Ý*g,8áѸòˆ8ÀÐÌÁR+ðŽó˜<à _v£¸5ó×m¢çr³Ã Êþ2‚Ÿ³…ŠË®î{îÔ†¡eÈÖ”-óöytY¿¶'ˆÖ1N²/”ú=Ëš/4åÏ$YJ]Âì¤>_EÔÈò”LPóÿ\U`L„^)mìý‡Z§ƒÖÌçŠÏ8äðV޶$ñÚ“GÜ=4¥í ^Óªú·«!Ø$Ex&‡²KÂžèŠæZ»ükÞqsDmMC‰4GÊŸÅïTIÌRcÔžL×_LÓñ’9¯ iºJÒ†I.Zß]m)¯3o Ê9=ÎY¸’ÜýâQ¦9¸æãl@·èÐøéÎ)´ø5È”(µ^^ͱþï¹Z¥3•œ‚iåïål%´˜ÕÀ'²áK| Ë#$]½¨ÕºWh9,Éûn:¯Pò–B¡—­% Åd½°Hê‘­|ÑkQ@µæƒ-S¢Í>í/ùvjÕXU&Ãÿoc˜&J£>çªU¥Á†é{báfYзùC£œËåtÇóàŠ]w¼íiÌË÷JD0¼'N—~ß³u‚‰µRÑl@ï(λuwÐíyóYÖZ™,žœÙs>ùÈ߃a©µÎüõ'ÛÝfýéõݼµ–°æc‘g–u†\wR³] Y©‡D·Ð¯ÜsA‚=Tê±´$>_ÀH¬*¹yx,W:Übµ¥qª„*KBðÖÇá×Ôé±ÂÁê¹îádƒq)`žu¨œ}ã4µí©‘Åvb'Êf¼Z¦‘^b¸ÊDS‡gªÃÜô\PS‚†»QŒÒ±… ìKŸûô —iö£h¸VÒ/E¤{–T:Ͱ«–Ø––6l[ k?ðMBÎ5Í­êH‘º=j|¾ÝÐ_mêßF æÜèµ}3^ÐнpT02ï`([ݤÝv™ålôÂÑXֳ怖¸h!s襇”)¿b%O¾ŸªQZdoªà­ò6ï´PüÂÕˆ*AhPàXÅ.^×¶ìWö=±µv&àQÿK$#üòø];‚ äl9K¶Y›3 ß, ó€DŒžÒ>J0ël>/@WÞR(É+|y°åÛM³pÚ=‡€2üJÕq ‡Ê¦äM—&UÄùg¨Ã`MBwØõ15‹ñ¦üÍ­ø®€•6^\¢4îÈÅ¡·ÍþwÓb/¨EŒÜuƒzЦ~ldè&`’Ó%#m«¿‹K¢\ÐJÔ÷ Yœ,õÉíJhïÀM×Úi£dæq@8/¦àÔY·’ÚÜvS<(2.|rMšóî/Y\®¹PØñø.0úP|¥¦| „‡5÷E3=Êøxs±¡é:$4Pb)W^Oo­“ðÿྼMã •—ÛäÿÂð$%¡µÃ$Æ?2Yšz³b–š§"Ê­0•S›îÌ ð° ºC^ ÎÃú5Ј0ñòõkò‘ï¼—â,ikŠúJ·ƒpW–>f”Ì´*,÷è8ùÜzŒ¨ËŠd/Vž -‡4 yYÑ\;ú4 ¾¦¿*…½iš" }Ñà ü¦Ø °¨pñôB±Ý-â~ûîóYB=whã·4Õ’‡±¸,<9è5Ù*ÌÅöîÕ V¡ü@õðü­pㆠ´(= ¬¡ŠÏJ]/r gø%a9¨óeñ¤•úÙ¹á÷Å ÖeýЖ{^Ôõ—‚ÿ¤È“L$³ãã›WYZH˵sÕˆrvp2!7ãû¦Õ9`´<ì!Mæ/–`y$¢ËP·$rà ¯þìZ«—Ôëò‚—ÇoMÊmBÖªÄÖÑîJ!*`ijý*èwS)_ù^IICIJçK<¶MLD£‡î+r؆…5O­X4œ7€_‹[r¬–Ä‚c-Ÿ8i:'\‘¥XÕ\·’â>_–åR`š`ûé­tGfh&·EÝ:¼õgKÐim4½;ÎþÂUëOñ…‰Ïuh§Gü²`}R\%(2Óã±V_ Æð^ |ˆ¯C3R#Îÿ“ÝX~‡eæ¤Ô{ÞÆsRÄìCðùoI‰:N ýŸ>ƒDÔk<DQ¾â½è$ÍE˿Ĩ:}ß‘ë¶Qf¦ð¼¿¨Íg¿"²Ý°4®GöË[.äÛÆ Œ;ƒ<܃C¹j“›Uþo¾ Ž.¹ÙøS{’fJU p˪Ü~]äAlN  ÁS1Ü_~¨ ®œ8Úˆªa%6Êû¢&Í1ãgÝœ/¾v¶Rºåd3öig˜.8Rê绲ÅÖ¢è|NBÔÑç?#Η¹öËè¯g8 Õ¸£Q¸V¤H‹bgE¤?Úð¯Å“[üž l9ÿïÈ\9`B@ç‹ëËs©¶©÷¢ð¡®`ïJ8ÿ4A…ÇìvÕ>²Â96|kðNù¶çx3“ é mæf¾ñϔٵ¹¼=®V8ù]5ŠTæ‰M»­×xÇ$î“ÚŒDy׬ æÓÖ@Ä5NÏgŠ“ÇáÉOššè§£Ùäï‡Nqö¶òÇvé°ÏæÊJ/Ú”gMŸÝ[fòt<»`΀ÂFøBŠ Qæ³øKacëBÁ anâ±ê)ä‰c‚+p¬WŽ“ð®Òê…_43’°Žv•%" 9ŒÑÿxD9H¬ý¥Û9&-ü Ôì3Ã]±«v%ë”è!™d² Úþñj"¨²F’××!„^8äþMQ˜á~™†ñ퉯¸¯ŽÇÂ[,’r[u8_­[W.©ü/ܶH†ù:‰+æºÐ(Ûé¶„Œ·`„6Í7dJ0Žx%+çLùT§ÁiØ .Þ#,Ö„Ús$¯³èáH³iy¦RÖøóQ•‡[ÒLYÐc2“AäšD³”PX†ô*ïx׉äPV¤¾mmϾ³¡§R>iU[hB!þ:þÈxKŸa/îÍÏ‹X;ÓKÞfšå5xÚc)v ”ÃrŽm'¬0£Î7{º4+˜ídItR¢öž—B5/ƒ0us{õØJM0‘~ëŒeúÛ¨²œÜMjk9ˆfìe)0ËXdŸâï=-‰ŒzºÔÏñhß!Ÿî¿Æ8xµØ½*”/Ê}âWóØÔõN×ùê4ô~N&)£õb,$ [SÅ"ÌcíÓK=™¸ºÓº¶–é¥MACß#щkÒ¬Íø0šŸèD+{úꙬ˜‹~»/ÖŠšGÁ và÷ZÓøy(FX_ÈË àþzfLtyŠb?.4?PÊ¿fJ@­Õ9(Ll„$õ—ªlZ¾ÐÙÆšmt/6ê"_Fà÷ÜÂ8ÓK4åÜ4 àbOÑùGƒ×ë&—PÚ{”Zo޼ M½¥È¾O߯eWt¤½‘(7Bû}žÃ–·Gç™/+2NÚ3uN’£òè"±È;Ø™ŠÉçê¶‚^Û¥:u"’ׄ1õ=s‹ ,‡à`OhÂåCÜÏbÄ "ËOÖ8wó /9‡]}]^ž”o1¹œì•`À¬¦òó†Â|£y'|üÒß ‘¦@³àB7>ßvPß…„»²ìo´s ºE»ÑõªÇ¾ t#H¢¥AÍÒEÊ X3¤· ë‹DþM˜k¶¾'æÖ[šï(´vÈ ôx —ž6­É5=ü‘²6 (5oB8'ƒê”¶³[ö@^igªæ&Rj¿†ƒãº8D³½!~$©=FC°^OÜù‘Ñ2\›e@øDÈf2…!¬C#³ÕfºU+`ÙN¹OÇÑBpÈï¿Ïß«Gh¸Þ+ÿ¾…´: 3´¹ÔÇb „¶ˆ«Õ Òðº¶Õëå·uxýñáš,°“‹‰(z·™$ wž°ÉÒw—\Å7-¦0ÌÉ©Ñð!¨üä3Uæˆ*R‚æä£ ûo)KõöD"_¨¬4%ñbÔJéØÖè—ö}ß~Ò>€®¹#AœUþûÝ4å³µþikåô: W‡Šq3þÞ75®f¡{…o¦ÑSÔu¹³á“\QJØj%õ5³ÁlÅ9:1­%€"‰´·7sÚ—þ„/ˆ«T—ç¢N>utÅŒ*Žs£TÜiÙr‘"ôÿÆVå88ü•6Õ'4I»Ý̯²þì™Jÿprª>8¢NÀ4{*3&_³®A›…&w_ ¾ ¥ö,h+£|á5“—W• uÔ aÛ±Í?]î|ZÃÁ÷;­J}f-CùÉ™:ÝíR¢Áþ ùŠtº›ºSeЏXr–$éåäZHàY IÒÝOôû%>â«–Q7(PíVÂÁ»vÅÒ°CKˆ}”hܘ;uò$Á#1;ïÌSÅݳõÙ2´úØ+0dï|¤8ÃDcRÔ…',…ˆ ,«h`%Ðaƒ­|§AöÔ´S˜×™äíäÓ¬ð(” Zm¤Euá¼Ê%ÌA†aTµN[fsZ¡."_“„EŸÅŠXà96À7Œ«¥ƒfä÷wá¹ý›%ÇNî' dÖÇ\âû‹9:Ö¡åArê3ñdê_GÍ$ž?n¨¶0$=±0”¥§ó—¬œQ§úýKXÛIc.~áV¼|@Ib9XHZ€ñq·ÄÊÓݱÊ^«ev𮥔TŽ–ÈÃ|RRãF[ÂWÛòïoõ!úš×nÙ5Tð!°ÅWU‰J ²J´snû¥éþ”+Y‚;Ñ<•_l²Y=”i^Ù&Z~º½BM”ÐÀ!)½n¥‹ÛÂ…¢‚Yž IÛœ ê´1iÐ&Àþr¤ó1nǵÞÒ󢽯 ëj' h«ƒdí¥?$uØÔvoóâÜJ»ªó·îHóts×pR àYu'U41X…L¹{̾õòÈÍ&Ÿê#áB»Í$]ðAe2)^Œ¬{¥‹uÞÌÙ@Î;P€6KÛR¨üÊú>Aêß‹ Hï»]qw(!¬ ’ô#Û¼1ȨmfU×.š-a8='Å$ñ²ä£‰C„w]Ëø amäAõâi;ÃÅõ:W §}cáC(¢\Pm–E–BÑ)NÕNcpÑoøp\ÓO*ÑðÝBúbݵ[w $òϦöNEjËj#,ó~@xˆä»¥šfuÔÑì™Ø<`¶ˆçÓk#ï¶1ÿ0ñÿDO’)q*©ÿ•³a>R¤?ä¶&Ôy±§q,1Û ê†B‡Fc¤'þÆž¡סyEmd€óçHy_½Ó¥D €"ãž${b£¢žØ—aqîߺ­ ¸S£m}{ñdÖ÷±¹ÿ곫ß[jùDšÎ%„ýuÕLàÏÄX/}×1Äì°½Òý Ò÷iy‡¢B!À8„…uÐ=ž[að¾öŒ¡U]ƒcR4'ŽZÎiˆ7.ö³FìÃÓ §Ê-= &ÁÉÂuÆN&‹ aõ¹;·pÕ ï^ºõ©t^VŽÖ¤íW(í"³$‘pI)š@öª ßYîw»t¨ œ«¼ÑG‰RO¬G•øw÷…~—åoW9†—ˆÝî]—Mº3æ“—Ayð±-ï:™Ó޶ŸA$ÔAl2·8Ì ƒ)ÊúUã‰wžÈKîKxi¶ëjY,ùß7WŸÈ>€†íO„r%6ù¼0úúŒíÄòrÂ~ÿxŸ2ã wK¶ÿ`«?ÚåH¥QzlPï+í©JRldµòÁ|78va…×cºKIàç)ML4ÄýŒdÊÛ8,ÀoqëR+Ó©›1E´}°"žÄÓ8g®Q°#ë%+¹½ôÜäû¼$°ùÚû¾.»¶|Qzëvd‚(OCõWŸñõRéÏö\0¤mŽ×¥ýMÖ_Ì H]I83uï5–ñTýÏqpB²Æ_Ôh(1t:^xIÖPùºh²Üè€[~~½L³hîÍrlLÎêó:š”%qÉ"±JàÂMk”†Gê/8³k£gFPòZ. ÞêãÒåbU õHüÂI¸uîöéÍ®ºôz0¢íÓ* ›Øqp­ É×ÿßÑ cýåÍ¢ªÏ·/)²ð1+´ö"–V%ò<ÞAjYŽ6‰c·4àQzô?5ЄÛÖbGJ¢f(sñ°• íXÍ“i˜)¹¦>9›*n'ÄÃÈóB¾§™Â㇎ˆ1YeX/ ž6eÛÇÊÁñâ^íüÛYæðDUEÿÑDH¾±t »á©R^75Bº¹oÔ×ç5ØôðU.^»ò0½«%nýù•ùpÑ8‡¦í NE0¸l×Ò&õ %6ªÎ$³á4Ç¢;1ù޼½¾/ÀÌDr¸wôÖ×g¨Ã+ú¾:À ™ÿ¢rm˸êÞÆIŸ_IÁýD fÞ¨vÊD%9,I'ÖÆ…§UEÀR"¼MÛéµ{žœÃì냴êÖ=wô2Ú×ß,ʼnQÿÑëJZ–^ÈsÞ_€Ây|æil <çV\€j£‰”™2ääçêÿ›X@O_›ƒzõƒAeÜïCâ×¼´¶hg-Iრ×aÁe¯Y¸¯Ü&ÑÈCu'écðBWc÷ˆÄÅP¦{6w™æ^pÎÝ2r…åã5Ú·3e€2®Ó¬ÜøŽáÕï$w쩪µÜ9aLãšè1†6˜ºY bçß&ö41#“¹i+<° ” žÁe’˜:w:Óýÿžïe†Gq= ~ž?¦~m:3swÕÒÊEÕ5°îÄ?ƒfäT‚BY™\»|'bîÀ' hØrAëû[¸ëe×-´;Ô )¨¿?e/¯6rÉØ– “§tT£wljM½ O«-«L±€§8ÓìõÀ·Ù"îÿ‡Ú|¼‡¨j2A²ñq(Ý´›ÓÂÈ£Ó,±´ý‚yš~›ÿ§» tèýÚP“¼?KväÏÀØAÄ÷Þ²)<̃/Hã <ýµdœÙÊ '峟{® [%ÝD¹§XjÀ6xgॉÈKTT¸!R$:6œ,â¥(á(_ºw!? ñ¬Àcv1¨Yû!¸°ÐÐÓ…âLY;ÐÐØuôAŸkÝãœÛ«X uØå¦^T}ÇûdpÛS´R s ½×ЈKW5@R*ÌŒŽ#Q¾X Qñ Ã&Œ«•Ý!­jlf¥•Ímu'‘Yg:}ÌEÕz—ñÞX=ÌGÚª’·ÿLä[›ùWY–‹òü›V4þÅY”Q·]Sçå¸ÆÌ•¨_ 9˱рޏmý*\µíaG Wó•íî‹Y/…XJw9ØËLjaÎço(Éd!뿞'ÁP´³“åäëCæëÔk™ÀK¶íÿÇõîÁ`’û¯%8Í@äÖ8¶²ÿZuwŠ{œoß"rrÜøGƒÔ0 qÊ`°a0ø€öý\û_­ž_: ¦ý¥Å:™m8˜ÆÒ¹ Í/*BÄ&— C÷d§òO¼¯í1b™1#Q•3#•Ð,Ê¿ùÉåÓ_­»' ÒQ­™Î²ãç;¦´ ñ…;'¿t(Ý‹V¶ês‰üÊâÖtŸmCh 95}dfÉm“äÇ~0L®d2fNÇ‘rQ‘#ôÅ=W‹|¬ê…³+Û3èÅæS-75B®§=Â(qÔ$™ùÙ¿azïnŽ‹‘ý”E ú{¡•åÇj‘r'{Á? J€¹Íɱ°øŠbƒRî28,Ü”c Vˆ÷JXSÁ-û¸û}Þ3ü– 1—›x)Ÿ¹o§UR¤¹áV¶]Þ –‘ÀÓ=L„±2Ñv¢„Œdø"4ƒ±Þ6ÀJQ>Šhô.““)EDi¤7<Â>OÆ^5‚8½bŠR‘‚gd%@6>‡!k“ö§pÒaˆˆÐón>¨’˜.ÓÆ‡›wðù½ÓuXKÛ]ºµœüÚ vôf›}&Â:`ùáþÉ[Nh§O|é vwcèÕj¢xʈà'dnî8Bzùê.ëI;€ï‘<Èî±åНg‚NV‡ØNsJ1Ã(?ÖÖé_à`¡£6P_ºj«À€4L—™¥ŒSü—ýéÏ(a«gÆ A¤á`5®þº[Aíc„¸L´þðûC¾Ù羃ƒ½áAæŽU¢½³ßs7Zìu‘â \ £Ÿ&~KaàÓÅ4.xÕ<þ&/…)éï"…1ì?Õäß P™ž þU¾QîîW.9˜SUvF‘|‰l_À`žV ߀|Cú0žM»8N&Èã]¥N4h#`Ô¥EjM7’Ó K¿*C€UѬg„ƒ°€5ì[˯wë•i°sj–rN­>ijoy¯\°VØ5,“õ+çkàÿDÿãŠ6^öªð£Ô ç0, È)7¯ƒš‚íØ’‡â<Å.‰íJB-»Jy wDþbÁg)B˜½ÆF#‡dC†gŽ:~¦[Àè”BTŠlèÏ`ÖÝ1“¦ž½®û ùd\PØÏôsFÕ!sùðÞ}#.M8ò/•]ÆübÔCú9?Õûm‡p"ÊS/ˆ¿ã¦Ú-ýžnSÍÛÝT$ ‹«êwïäL\å¤ü‡Ö=nƦ8 :ˆS÷€o†u %llSéFg&ëí$˃§·ß|+ºl?6Ñ7Ý^þ=S~µ»Â<¾tC5çÖèÎêî쨡zÅnçjöÙ@`ª®èޤ´Ž C Æ!}“ão-§úæÑøEÃ;ÃKÑå´y{ÄútçÛßa(üõo€Ý(þ ‘ãð·ºyƒqÈFwê|yKiLŸöù8bñEëï}—>e2¶N­¬anåÝÁ·Dk¢£ÕÛ‡&Kðš“DbTBÁqöZ§ ÒɧnéªÝª°A‰É‚ÀÇÞð7Dz3PA‰>[¡"Õ‰‰{XÛW 饻8[ƒG<žŸ¸4½GyÕ†ªÛƒeí¼IaŽ$&´MšIª×Ù×ÝŠ½D\}uµAùÝ H'i_?6Í*h¯K)?Ú§³Mh“±’×Üx&HüeóŽõ`Lê=¬jyÛ!°a|dÇTFU“/³f€ÛÑm5Íç S‡ZH¬B3À¬šØ<·h{ò{f·g‘›—MŸßôe+u(Þ”²k-iKZŸƒ°Ú—ÂDG® ̶ßGMÖïZ…Î[ Æþ¯Ó}»S´à^ûÌ=Éu°ôß{`£Î–KBe ?qÉX îØ/hxû§ÃK†¹Q¨õâþa(›‚Ç8É.Úƒ"ÑW2‡þ{ غTûïì>x8ÄácPÇhU—:X² ]n6ÚîKùLFPò­Òqò‚«àŽXì§mê>Ïs2œÐvˆôúÖóœ…S\üdñr>Ìîï›^p6G$â(YUÈ1ÏóZo%Mÿo¢‰JéEèÃ×Kº8þ–h3T&Ó=:ðôÔ¶øýgç¸ÂÔ‰HeÀ¥Jz´ ýUü»ú±3¤«0¸.Û<™™ÝèOZfä¶uÔÄ›ºcø†áô†U¨~H±Ú?µÌ´1M·”ÌóOŠO ™6éíúZÃÈI¿«žO/9=Mô… ÞaŠýžÄµÒK™àá÷A ]ÂÏ>Å’–¿òwÂòdØ0íds(~å`Ñ6ý¢ìëÀlŒÂÁ¬˜Ng,¦áúÕêáX¨]”$Ïð•™V3’öJ›#²Ñ;ñ®7ŠÍ|rC†äiÁ"6¨Ÿñ.ËYÆV7Z0‘ˆuf?»G'ù…õ´ÈÛm»ç÷Ù{L”Æ>¸t9‘¥¬Œ4’äj㡉ˆ!,˜ahoâÜVØ”ïhÕ•Z™Ñ‘.°Á?'j?ä…޽fÐåh#ˆêÞæ:9}KˆÍ¹¢•}ÊEèËÃtTo¡›f?0+ߌ-3Ôo]íÕáõ6ó5í‡Ô]Mµ¢]mã>;áE“OˆìÂ]º9=Ñ\¶+’Ù„—k;Kx¹Koã5>ø­¢DNµÁ` Ê›‚·'23ÆÂ©,àÓaéI©k¬4qf}+(çäÍ®›@k­; Oì¦úHsB x. Û©3‘§ƒkâctbŸ¢ä¤{ŽE·¨ä]"éîz¨LǵÏ_hymó˜@¾^ˆãF³ì¤q¡#’Û’99Ù¡×·_¦ö\¾‰È2;Žtæóð%uÊ`ë:âDͬtãŸY¿Ì!… RdühbåþŠa]T‰[εHÂÊ J+ØœÀº8%ö‚ü¯ü’†MÈ#ECœâ-Ó¡½[^7éi}ݩ޲ç”@„ \$KÔBºz€CDú6‰žÇúCgƒÈ®’UÀÄxÛ·OÍX D“û-wŠò€¬ È@A†Ì'4ÿ}]‰F |=]Ñ EžCÀžaÇÂ7r¬µ­Òh³+DÔ*=kƺÍrw£YÝâÅÞ‡sÃFÔnŒ¤«”vá?J‰ðnNYƒ¯>#Iwêªw×¾ Ï¥ðN<…ÿO±©U€_yne+­B Õ3¯³¶e­Â'Ë[8”F™¹,Vð³ðu§ÔùÆ:B_2 öžeînð€}<ðÞêzî=ÝÜ^}Q¼  ò¢$ÔÎ<³ÜpÂDÚ×ùɱ§‰ÞäüH:©a?PzÌt'm *w—VÑâ‹ÈA-L.œö¡‚+-6‰—ñ$nÖžár4R7¯¬(Š.¼QØ.ïcùK•W./ Q¦R÷‹~üà"@‰œVÄÃnÏíî¦^-{G"ýœ†Ï••{+"&kkŸhI8ZnžÚzn…ÃAÅ>ˆe¢£ AHô™Jžç7H/ˆ*œy Œ‹V]x%“ö%/Å$WÐÈÑ:¬^´ä2ô_ÌF'ÛûT¹l/&Î7—‰†•ebDWÌA,&|>Åc SBÆX„z´-Ê®û’S'5Níâ$ ùW6îýG‰rKˆ^#¦dÿÖ2ü·sJ¼‹w\}o èJ'³dþ£Ymîy>r ÆÕ޵ô ‘ƒGÄûÔ7ˆÌ™AÃK|ævЉ 3"Ü2Q‘àÉ@éÿ´7¿4æƒäRôîAéªùsw ½à®(ä ›Ñ¤¡÷ñ õM¦iAB ˆtãQØ$CÄ,u.œŠ ®7eªôDú¿cjãéÞ»â/m‚­=L-/‹¯1ÉIk±×pà8ÿ¥:ie6a¡ö yi1¿ ×¶¸æÿŹ#ÁÑô¾ X:h•I`1È/yûú~[,K4Ö˜¡5V¦*ÍþR…úJå‡]—9¯©®J‘/¡¶7,—“nàJP¯L]k™D¢)6n ᥄0³W ›¾xV;ÔWÐõeù<ël—G¨Û](^t³*CßÄ£VÓUÿÏÒ™‘”(é2ëÛÃÅ}J¨ßŠ®ÍW`5:޽&±'¼—öÆ>Ç´…³ÓÂD%;ÕãWÛä¹Ëi"&ó·ER»Ùð†ßn þîÁ`½ùº!“Gä.¬çí_´+L ‹Ýþc{_ßÞ×Ï è+*ñ†c0k·›ç½O¬…‘A•ZKÎT%?sЊLÒ0¥<Ûµ¯Ü`1šÃ¸ èkZ_žN}{|RØ•?úeyÒ—yíñ[¼ôغⱲšcîû!jhQ'£û¬c úè¢ÍjJ‚Qi!îÎÁåks@¿ÊË{ó0OéW øC›¦ïâœ.ž\ð"’T$¼®;æÅuu=éÑyˈ$p ¹œ§Ž&²ð½ú«ÁEëÚ´ïstVjOdYœƒ  ,©ÙD_Ëäf,m\ùÆNTäŸÇU£ç_¿±PLFášN¶6„X«øü¸Â=?{ÆæßŽXØIe7ñ£C¹øi$ôj¤Ö¿×v‡lã(9}³TÇÒ¯gÊ?ò¢Å°Ô„C‹¶Ó±hý%¢óyôwªÌ^ùõ0r[wÑL¹YÓ^Mj ÂmèºÛyy˜îb0ÒáÙ3¦%K%ìæüQؼ5âºÙܯøüÉz’•ù @ûî€IÂæ3ätQ®F›JíÆ1ÊÅnÝò÷6Â6ZP·sL±Ìv!gºnñ.°k) ÂXï« ŠèÃ0¢M&SC¿J±Ú·é¶®—à'8So€køÇ ˜ºÓ[ì:a¤ÿPˆÕ?g”Øe¬;xø‡è‡ü3F[1gî³Ð‡(æ«„1n&2’Þ]ÒŠ‚â½g©ûÖà +'¼€¬j”ÇNü†áÉæÑŠÂ—ƒ©ý7ˆ×7,³gZ_d`û©t0v{Í95¡™ŸV¬¾ú†sˆ—NQÕk* 8mÁM…¾j蜛5Ù”Mâ§YƒN‚rª}ÓË·.µT;Ö…¥IbŽŠaÑÜÅò“Éw<Îoët 1=Χ‰'V%6dûc´-CAß“}¨?uCmŠä¢ ‚•‰·9§'jüËÆ†+m±Q2ʲ®åä/ [ïvôÒá““x޵),dÙ¾uãÚ‚75«!ÛìT\€–’f¶v˜dO/2¯Ýƒ6ëtQØj5£6·D@óï„ûÀ=§[‚¾kWã0Æg¥å¦ìOR‘ˆ*‰6!r!8½ª£¾…H÷ž­fQ¦$XOí4ÿ,=„\L Î n¤ŒR“ŽE° þB*ÄðߢÒI©x²8mñ-7Ý@³2˜FÖ£hÉ{Ãmøì¸|<|›ë²CLü*à-ðh!¼îS¢Û¯Y»mRÒ7a]êEJÙÿÿ VÌ•‚ŽF>vÊjµ;ÖH Gv4=ñÝ3Ö bÞRwh3ü^< N '­‘>­%]BA;)ûúm6M‘’ö¢ÅQèGbŠþ1’³ÀUQÈã¾[í˜)på©&]+Ý–4NL0Ý5YÛ—EÍ“åpñÎQBˆÚ9䇿 -Ï.LÚ@¸Ø'WV„û¥Of_^‰”v4#Ößë"ûFþ¨“v~?Diœ‘Áª‰8zj`Öõ’})¹|ÃWîk9`£/Ôí^ÇÂHéPrTÉš¦oà ³ë²L¼˜DËÆH Y^·÷Òð´q) vëï!.ÑÃuÎé±]àP:w±¦¥9 …‰²–«û~ý‡>ûÛèÓtñxsý™Cü}ÅÇÑB{Ô·$g—s~už]W‚Ýxh}·÷-Ëe9,XPÅL'@î07Š"ûö "»ê ½-y]¹ÒXÖ—Çë̪—ÌéõBqS´½²MÔnEø’g¶—©ÙnÓÚb†Të½ä ¿Ý}õ2æFr]m§±àæäÁýÏWêp™a~Ù…EÑb*he¹LRã)m­Ì¢…!ä1‰žU6ò"ûÈÏüñdMž¹§¾cB'm…Ñö-¶,’%ÐøS‰ðÆ}*ÂTçÇ`¿RèÓÆ¨<ªcžŒŠ=Ev´-Û\—O‚T"hÃ(¹k~b/qxžéWɶ/S<&r Û¾XFcióŽ›_¡¹µÖ^2WÅüg”K/\úëùšè¼à ;ªOy­,6”‰­¨Ÿ7$³ÿÓŸºáÅ/!Æ%3slªÀÛÏ癢±…–.A0©@þá g žÓJ0—ÓÿÂñKø)…ôËJuTˆ1ùÞ]S§k /úcñŸã¦S`<“¹)G¡ ¥o?¡–ÝC˜¿äf¡©™&_×0*_nPI›BÁ­eF¥ÙF ùƒ’Í—­×5&móæ•«ÊGÊV­ÇŒ/çK‘Ž4Œ¢˜Xéò<îQ@™·m¸ªümóðçXÛoãC­3Ô.cxB¢T;Djø•ÇMÊ6§‹í4…¹ –OÿIÓn|­ºtþ¿0Öª{`1ŒéÕxÞ-M— lvã Q†hÍŽ¤ùäã ; ¾§„¨b“ÞIÁA% ÞÑñý•¿óÌ0C–ë|ùl+3Ø]q©æ-jÁ]‚ñJÀºÏ®Tí~¥íî'©ðl•”˹îæˆï;ÚØYž£Ûü]Ý” ¥TOá0i÷ý™‘‰‚´^Èñ?“àÕoY¿Cuf²£¢w‚qôñdiv x0ŠîMŽïý¶R„3îqð¤ªWßÚŠå ã1ö1ÖÍóx¾›Q4èÏ«ðkýò¸¹]™|É|ê„"A^ _Œxs{BB¾Äd é—FÆÒ¯QÁ ¹&®8K2žØ=¨\¢AeË×kXyw¸ŒÕÚŸè‚°Œ‘ÒE,ªÍ";«é+ó=qÌ.½ƒvÉåEkCc½˜­§¬ žç–MÉ …º®‰A6I§—° ¯üKxp@R]3ßÕ³Fø•Éb–N³P«PÓ Ý"ÏzƒÇ”6Bòcè˜Myommˆ¥µ# Šòè–ÿv§’vMø±„‡P¹¨` ´Š 2µØ)+–s(LÙP^çP©)õÂMTæ‡qºõÁ åNþˆ/ر&Cª¡}A($þ•ͨH9÷`pʪÿ4wv4Ìä'>5N©£¾­ë—«ÎÓüÑˈ½¡$løé¿ev|¤Îä@𺚻?sP¹ÌYìnÔta#Ç 2ÍÜàÏSG=ßjê—£0ýrAŸ–„UDa&hùrw,Ò‰ÕO"%”˜êidªbÆ1¥®ÐU–Ä„ÐÌ?Ýôú^­%n@@^Dø‰(—ïÚkJ3ÞTqƒÞÏçx_J¤u?Žã£@œÂ¡œsÛÈ6¶!CîMqI¼ÏfEz ›ÉgBhÝÑá;Mpû>n’®[ðàɾ²8Ä[Å”ú´ Ø‚ ·Ü½õ4=¿¢‰M” ݶØH͈L‡ÔhnÛѲµ;.Öµ<³ÄA_vMñ=Ä—2´uzOŠËeza}-ÃJ›*C<™Bý/\ð» gwQ+å qyéÂ/s,ú4Ì}!e“隟€r§RJMÂNYÝó¿PcÝõU†—·5sÜÖN°<Ö©†/ìWáŠwù³€º6ᤃMvpe‘pKbŒ+%ƒŠÀ’vô2«¦íʽÖ«»µç"œ†5¾n†F¯$€Õ^ÔŒ!ñíw낞 p0¼M!×0ÓiNUyo¯cV9AÈ}rC‰‹Z9ë_W›rg.ªfG~(yÜø±D°Úðg!VvWXËóz O}u@‰ Õ˜ÞÜGt˜sÑ\7•B-€‹y¥´PÍý‘Ã}³ÄQ£ñFƒ™P„-ǯ7“³ŸÙŒÞ÷UµöÈeýöÎÝø öÁ@¢äl‹ònlOدà†Ó´t¹M›—Ø=²A[›‡Ù@‡À"Ãk˜Cì²ùñܻܜRÒ±F:ã^‰ÅXáN\5OoÀïD+”Þ:è` ^Ko?!èðŸ3ùw qÊNË&ˆŠßè8‚ÄéO£l$nÉDqƒÝÈ‚¯Æ: ?ÝSb}Zî$l\Ô¶õׯ¦RŸìD÷Üóø»bl 9 éLýॠ\š<DÛ²ÁPO]ñ\dê¼Âö¦ªìŸôÊÄ 9äEWhu¤N¡ÒÅý>{}®-TÖ&‡M¤É¹ÒA%ßU¯ÉäÏ£sªÍ+k {²«™A÷lŠçGý±ò¶ÎQVB‡UVûãªCŠ3ñh\Î.i™Ã"YF¢¿÷`$Njfϸ/ðšÍžd#Ýjmk +‹Ôà§ß¯)ic/Òs>‹î)˜Ÿ\òÙ´‹þÁ‹M0y]T•_ÁKD–¡uBê§§®ÝWÐÎ!'ßrºvuA°¥ÚUÕÍ€gJ_ŒeHLNÅhÎd.t-nm5=;8Ê_·Ööáó. OeCPÔsãNh†ðäœW jaE”X8gØ þl!4·©]`Rk&o‘ö%® -y¤ÇªµàÒÆ²Ð}ÌúÎô@v†ŽÑóä Õ,µþz¼ge[ã‚èÐûÎqÀØŽ¿ùeÂÚ[Ï,hR]åîMÎ,äŠVj»lœ¦s3xÐ’ÂéèA £uá• ¤¸§È€yߎÀ1Þ;K¢.ÑäÏÕ»u‘o^ð+áRÖÑdzº¬ ˆjKºZ2`MuÞÜÔˆŽZ( ¹‚Ôáý$.Ê¥ZëÈAÞu2’3TèXý=:ƒÝ KŸÇî‹ËyçˆxM®½Ã†[U™Ž£øˆJ¬Ìå>¡U‰þ2 :V‡-ðúU ìäû- >0~°ò¸:Áç·ƒýËŸõGRÎÓ¶%âÉyžA—H’˜¢^¡Á{†´ÒGŒÎ Ü_ÆÌÔj `ÞiìÝ»Ax÷nMcµ6¸…¨Î¦Ñ°ÕD š;ä –ŠË,þe‘mÿ*îe¼Ðw¾0"Ã~Ð?k ªɸ&+0d0Ó1}þ1?ÛPð¯d‘úG[ F´û«±$çê°d“ŽÍŠržN^é}&óULfw˜ö=>¦šÀ¡Š*rh}އä%vF†)swž÷ÈZ|ý‘xà,féM SŸÒ.qr.->ÃÃ]µ—¦€–Ùž8³}N÷D¨í"âÂÚ«òµ *aÅ@‹Ôít\Kx$J:’T¯>¹ŸõYDNyšÄ’ØIAš~w-¯¯{ƒ´ âŒÜ˜ùk¤à3yù'B×UÎÉëŽÒÆ»kȬã¦gÀ<˜-5¨zËÔÖ?òRq–²åá/$£ÿdãœ!Nçµ>çl´ìÌ­Ä2õÜ›ñÁqF**ÑȌöÕJ3¸©¥²ôÿz –JrÀ =®Ô…²²\&(œ+§àdrkÄîKãïM*Ò[ð¢wR>,»º®©¼*"èŽÉìÅ rXŸde?5'÷U!HPR+„Ý=ù•Ú\V®‚»¼J]á^ÅAê¹I± ‘~sC`Aá=#èP¡ØÝï©c?^0•ºD–—fð’NMI‚lÉ7Q sLœž l<‹/ùi3Áû™qDùŠn5?³_í]nÞdïÐfÿu~›ÚþÎëµóX·âJ“#g¸´)üu‚ä ]b¯Ñ8tY×gŽHÇ"4¶1h—2á`~¬£ž´A q˜ñÉɲýÂE½¬ä_e_ň#ºìò÷Ç\Í65,Õƒ¾¶<…ƒQž]¥"¬·2äøä÷žÆ¥»æYov¿¤ØiaI9*b Ó‰„ýÁ‹· Î[ØK’ sFñ3„l?¼h\rz Ḭ3Œ°¸ÆâEü,&,Õ>~dBªÖd÷BRÜÖè&àØ—”?Œ«fäÙü@Å&äª|±’ô=¦“ê¿›a¸Eyí«Ý^ƒµ7—ÁŽÑ£-ªUB¶ »´B¶ˆ Æ`³`ŒB÷\c‚ –É‚5¸”+PHn]„¿koÿ’!8ÂËà>áÛ½£tZ‚s³lΗyÝüøO9_ 4QÌè~vMvö$$`b²N4çi4ÞûtÖØäN&² *z£¯¤ è5Þêð£ã>שiNdªj'n›¤ NY“0:u„">>-"Ä^”׎ßPÉ¢&š’I7ÐÃ\RžyÑ=ÕžüšÍX‡%hÊ÷#yEð2T¦n ÚÒ<@/ÙãWÔó R–R²riò×ÏY?Æ[Ò'_Ú—mš® c$vcû> Š¯Çe+þYÔ/q¹oÀAå˜þD›ãë´¿½p¤Oh7bAph±¨OãXƒc;ÒÃ3ÝäQÆ@íg‡È#+¤}$œ-­m}šl;©4vãèSˆIƒ¨@ôÓ*’ø¤p(jfõ…*.Š]gà„"b–lÂã½@³F‘5lžÿ Ý#Y6àž³RÄ©^é'GŸ'Ä ’‡ÃNê5½ñ!sÚÍæ:ÿ¥Ê—ôQ%G¨dR­ƒ=ûð×–SÂd/?qœ©oÈ-¢U¬¶º¢ÓE%Éæ)½àÑD…X§"±Úâû,h/áÓ·ÿnüUOK65[y¬·vX¤(ë9Ë÷bJ?A® TU LÙÖ]~*AÊš*'F«\ivo.õ‰ñL6#/Ý!øÙ¤m‘Wo#ô»j­Q·ØòÑðiõî»Øð˜ø²cK~Θ¡|/î»Ëë~p¦î*ØÓ9í~«.+çg>UÑ¿ŽìUQð3xTõólRþ'@EÂÝób•d1¥½®ã-Ö¹ ž$b £/^"*¸;ì JüöSnŽxÎSZH b/6¿Œ£?Ù{vl‰>“߉Œ‘íÂpÿòýÕ¡þs7s½L¯â„4Ù§b(Xâé•D;Z‰cX}½ÂìŒã MçI4nË¥ÞÉÓâHx ½å â€g‘¦]µ±-]è ¸°;¤íæô>öc³*í×Ò¼¦D5.RsŸd¶;º›íd¯±ëG•5÷D<¹þ§=bbð=®S&yux9Éý3ªÎ†ÜNÅör¾ v‰ï+D{qæ£Ñ¼+äéB:ô¸AžÑQñý|h[þf €1͇Å}¤[Z^æÅS¸‹ÀÃå<ìxbÿ9†¼K6©îTÆ‹o/{U9N8£b[ÈÄŠ)®¿ÅUÍåeGûönŸÔÝr½&*E\§óTe0d£tâØ´·-»¬"°Ý5¢|*ß<ƒ4EÌÆ!©˜e…ÒÃ6“oë«IçÍ¡s[1WiwÙŒój~Ð0#èÝùZR%ë»wFI!®…¦ì³¦T“ÚÂ^ª4Ê@+,;TÖG¸BÎÜ ‹fÌ„ø–®ÝÿaG'Õ[æc{*?Æñ´Â¶•¨§žG…U…á§Ô˜–QtÆnTÊ¢Ts%h¾¡ÌUÜ èýìßÁ€"èFíF)<ÕxÄYn;=B²ýÖ! VÞ½V{ÈïoеAŽþ0[J•¾¹ÐÐ…Î(ΆЛ,ÄÕL7Úru¼Ñ>«}Ø3äèßµnÈBºwxW¡XÿÊVª#òùG8øñž]¨EwÃÜÛð±)Õ™ü”(¸\(ñrqâ'¨Â©‹3’»gš Ï{º÷‡6Ì3|Lßó´rµ|×¼*ÑɃâ{L5ž9ù( „KÕ®¸—ïá‡Ñ\h"ŸK-Nì1)–¤ß /—O dGl®zSâ;¡E£«Ró1I4^´ª×˜™C3Ë(Ý;ÇS²U )Œw¸/Úö7…mÛ).‘|ùdÁ%=ýi…-U´ã^y™V¡„!±8ÃÞÏÒUÜ<¶I*†>/uÃ’ |Òš‘é+”Á¢¼ÏÍ=®ˆ”…]ûAtŠÍ>Ž@E™•¼<¹Ùm°J½zÛØ™úA[®Uªâ”[ÒÍæ0 ˆOuƒûøâ)lTEMVå4F¹³‹Í!µÓ2Îÿ¨]/REÃÓ[iï…”tŠ:îû–H¯õ!dƒŒÈä¾Sm¸¸5ÊÿdžüeÑÖ ëõ1ú7ô)‘aìgž¦äóz¶ä°§ÿÔ ]Ö‰X z´ªùa…çuy%v¿éCW‘ÚV2ˆæê’<šÂ¿Ð– ,iHáÞ(¾Nª“*¶É­¾|€ªzXìlì¹ÁEJ¦Qû ¨_õ›°¼Fo´s½ç•‘nü=<çªKQŽœ!žë‹ßž5Ó4èg‰CÄ¡° LT/¦ˆh{tL@¹ÈŸªœU)Ìó"—ï®ø"Ô0ˆQÂ2UÒD£O‡­¹DŸÜô—ÄÅ<"ƒŸœ´'­ÔÜ÷û–Éœ~"ó3ˆ¥B N5™csZªvw—^ÆÌ€G†ïà;ü¸(¦Ô¨¡Óz<è÷Ÿm«Sxµëá¦dôÂ×¼£ˆ—ç±×¢I¯'vmT¢•J'`0•ºU“,°å¿c™0`©ÁJí]û/ÀSúÄìU;öE=•-Ëu„æÖÂ.R.£h}¥Ô¾ùf[déRÝâÏ ö¶½Ëù«ì³KËq¸jåvºw8T–|‚ΓF¸a°ŒÙ•YÎ˜ŠÆìŽ“®‡Ë3VÂà†+Ù®¶u!çzõ³m ÑÕ‡ýÖô‹–­â' OÈ>𤬛îħ¤»–Hq¹> ÛÓr;_€M<AV˜`VС*Úg°yË 7 ÎB¬Å2.õŠBoì¸Ð]c¸íÅ)¦‘}ÿa›ˆõ(Û>pé½—ßd"Å58 Ù2ýkª4µÜZz%âúõ707xŠÝ`ýÇÙx¡ì¢3êŽ2X‡rBÏž*%–𪀕?‹Ntß̄˃×Þhÿ{MMi±ÎrDõÄ‘‘Ô XZñ·‘K™$Ï„­ø$PÎVeÒ4-êBЀ;·×«´wsˆ`¡w¼#Þ¤–Ea[b$Ó;QgÐ G‰*ú5cj¢ÚiÐó”låÍ„½ÐxGËÔkÆ~ ×7xÝ(h;Њâ¯ß 舕é0Œ…t mD¦š¥ƒ [`ÒŠÊ-Š?MFHuCµC|ùgœ¶–’Õ…‰½×m*Qµ-ÃÐ÷Ä„ÀßÀvsb{¦­þÂò)?šÚ!…ñF‘Ò5¿âˆÐÝo.pF, |¦/A~î†ÌY†!í%Ȳ¦Ä7S ç¼í®WÖè79n|\BuõRЈŒTFb±žáÐe b鋲 ï×õT6 ³xð5AS’=£ëxæò×PÓo×ÇÚY}ÕÛpaDËì«‹iÏWø ÝîÃÖßïð¶¶1é _¢ÔÅsöœ•3u5rôjœNÄþKaÎ/“ö¸üz5ë t:¦=Ä%2±Eò GADÝ u)ªXO‡Yˆ]ñPTÏN¨àî)ˆxq¦èq&ä&BžeS(2;?0QYðº(¤Ä^/u1P®)")·T ”×òn•P[]¸wI›_nô}6r–œRG¶…ö ±qç/ñ)¨óœ÷70ºÇ¸­”|ëåE\,‰ŽÈAfF?­Ö7UÓž??¿âj£%‚¼†­ô*²Nexï`i2>¼Ðs]·,eêՆ˗Öù]¤(dã o8~\ËïÃ@ƯÊB-,TN/¦0”‰'aà*ä§pmµ*hùòY)[kTbO‘~áÎýnoÒCV}—Ò„.sl'0ÎtŸÛ/X¦‚ gKù|šjž8y—ž¤8„ @ý=ú >¸ Ðâ½’a8«þ ¢í3ƒ¤¤ØÓãZÃë}½ð)Ù\kÌÊtŸ©Aظ®N£‡t,Ä¿7ÇØ4¨ð«jiYèÀxæc¿a+PPÄQ×ñŸQ.æ²LÊGòO‰ãö*‘÷;*6¬UÁÊ>ø>’Ö¬†&ïìõd+ÜÕ…‹•7Ö˜gîM¸Aã ,–O ™s‡RoöžN~éa~—Ó‡­—Ž:£’gÁÀ­Cùh}|þ†l LÔƒ–¦ Ta kvL¬ºNõ£;A—GýQ]Ñ»Ø#ÏÂ6˜-l4Î)ÔÖÇqåWŠÙ§‡Àv뿸ó˜âšÏá¹f€%— SÁ¶*·ÌÀ®UÍ6I|9Ý• -5ÎÓÔ<Çå¬Ï!”ÚLÈÛVü"´$u]>ð‰þ]Ækc÷6ƒ”O@¡¿HÀWÏ$•}*ÄÈõëÝ~wÙæRbQKp¨°Ô bÑ1ª}ùUu`ü=â¥}Ô³8Sj}s/kCé€ Å•Òã”f°Å§¥÷» òæG…WÛ47mŸR…½+7Cö²Þ—ã£ èø´{Ç‘}G/{ˆ½C¾XT³ã½Iâó´¸þ@G•ê‘Y|þSoJ!ÅòÁƒîFGÆžõ{ù•Wç¹Ð]Ÿ S“ŠŒœ ŒI±Æ-’lÿݸå©Q(BÅ’¢áÆaƒ¡¨zùj×/¨t)Ý¥}ô(0ÉØÇÎQÓnÙ0ýX?G »ÏއdeŠ]%¤^Fªdˆ×Nxè”"S'WÏÛ©ÞbM‘#mQl‡¦#p7#æYÑøç~° ¶-¤´ÎîyT³HhJÃÿ<¿i>&}˾kÖ=Ò9öm&™ì– y™Ÿ‚âóÀ5©” áS7Z&ö(…*.bN€š¬Öa[¡¬Aù)R’=heÌSg`†ÚIÅj]/Tr²u4Öv»`1SO1ý‡ãµœqJëÞæ·bÃLÉ—ÎÍÌÌ`…š”é€}Çö0H$&›;Ý+41m¿smyR…±{9ù€Ó•„oË^?uˆúu<ü°–ZÚ`†8rVù¦âfºÂÂ뙡PȤÓêsç^P ¼k ©ôMx„"Ù(>r­ÞF¸iñ¶Dk;â…*1Ò² _9»]×ý¡dx}Á¿s<\PÂsœ_„SB4gmòå=ÐÂyh©ÿèÃEšëÁ)ý›6q–2XñfÙ–Ôm±SÍ’ p'T‹³"·l½.V ´Pÿ©Zû$šfžBÍz…£jpª ²¢š^X$ù{¢ÅJbPÑDª¡;ÌU jwV²æÜ•KŸ8¯ã߯÷‡8­(67µg­›Õöžiº@MAQK*üL.yS͇^œíçL£üû›NÙw#iàQ”+h¸ÄÓˆ³økŠfÖýq-b`r¬‘y>Mñ[<¿’³Ý‰¿r÷ÖW¹Â6X>i @ø+!ðnÅ«ÁŠP¿$_-ËûN.¦‡¿ˆ|>0Í¡Ã!â~¸óÆnS|FåRfFä,Yž}ùI#ßûì¬Ðå‰DvÃÑxøi7]ñ¨4 òÿV"Áyn´$lÄ—È›Æ:ÑÅ/×Ãlƒ”!ÆÊÌc°Jª&éž2W]x5ºß<6÷] yãë§üÚóðš‚.šûªƒì?Ÿb[×SäKÈ8…Z8ÆTˬØÔm¥¸×ìÜ«BÌ`‚-ds†ø$Þ“# ãl²ÈÎ÷Y‘ó˜Î˜È{ƒi!ˆ.g‰¨VŒþÕ|r„8vp“ ýq઱þ {éQÝŸ dÞñÞ#{‡‘1·`“ûÏÕ_#ÚV$„N¤Øªbð:‡¢‡„°yà§¿Ъæqeuá!==CͽÀå_}ÖW='+fnreqf§A¨”Ä =÷~kak©¿€¦‚6®õîqŽ-~?3rpvüW¿Õ„"7U?1ž§Zªc‡ܤwÆzÆo^çã’רÃg鯆sÀ‡×œ,A UD†ÉqÝšmøi˜äÊP~ŠNVËâ Ý-?ßHê^ÞÈœzZÔXŠ*”ήÖ=½áqÅûìðÞò)ô.ð󿙉\›ËO0‡ßhþꉮÍa®¶Íç›0! àw­|SÔR,Ÿ$-ìµ7BÉ/ëEÛ»où¨5"wMÀsÏ;3Ä:7ã÷WDB®Þ¬,Y_rnQýÙþenvxŠá‰(cê â j²E,&úÕ‹Šì“GO§…¢¸#ö¹<$VòùŸÞGùj‚Ð,rWƒQ!ÍÑÄôÕ®)T©ÿ+›º3c Ñ™éÄWšöBž„Û¨’ej8¨Êoj_gŽ ®ý3áíöÚSÈçx\gáT„ËžI{«Žhp')îÍ'Õ®¡sªÊi‹5«>€f’ã„t„„lþñ¾ðÞæ¹ lËk7³¯‹V£:æ˜t‘€zŒ~ÀÀK7¹¢;m¬Æ©@¨§k¶P=Y|¢ÂX\BÚ¶øÕœgš+3ZQŽöª}TÞÈ*û õ׋ëÉ@êU¤sºÅª„|äJz°–×;Ã$§¢Ã‹Ó‡>õÐí6X_SÚÐ"ŸÇ«¤`0©v+Mf:D?À#`³‡JäÈŒ,D¸³»d¡æáÃ3€»#±¬ñ‚€9W fïOu¯I;ˆàŠˆ×;q#Pm«Çdƒ$‹lò¡:zó[(;Æ}JüzG\Ù×éy4ä·‚ÆiçÕܧûÚqZ'÷ÉU| ÈM”B§ªúž×+J÷h¿«VOW›Ù<ú¤ƒ×?¡Ç ‹éÁ;ç À¬`+µ¶½!†%†O ç¡‚"b›†6µŽç­Ïôq›‹fü{bW CrOþ-¤:í»ÅÌ'çxÐ×4Š¢JGw8Nß>£ìñ,Ä'¸¤eõò&äµEÚ“ç¦i\©A#5Ë?Þ?¸FÍ«§óxÿD?/s^JLÓuN`—k™iÕ*™1 øXßTÔ«fßVޤM 8Û¸%&([Û þ‰$1wí'«–Ö{ŸÀ}tzÀ¿@Ú‰ê(cÀ =A´À‡Î±{¯~•Ã_•CPˆ³½= ?¨uÁáSÅjæªÃ÷Àµ`fÿI¬ÿÑÝö!޹Ŀ­©^Þ95Lwí©¨“¤ÿT…@ØDçˆ`uç´Çñ9¤åúT‡T™þuy=(`<è&dhïw¨;,d–wRï éÊj¥Fò¨4€½PÿØä «uf‚aNß@ñ¾!7C%‰PœB&©¡³¼:•‹ÇƒÅ6ª»º@ç¡È4ƒE~0ÙÖQçÿAy‚Ö¹D>dõIaA;y c6¯aœ^sm+sÒŸ#}î :‘X‡_ì‹:dùôŠ’RPù>i-O˜tX[¨R¡{ï,  F+Ü‘TíùRŠcÿÐ4./Ò´>‰1Bs¨ÇÓ¥‚‚ºR¦®ä÷«e2³Kœ¿ÇÎ¥Î~¥šdé{¬ü5²°Ö>í»[AϨ˜“€Õ* îíT áv›çF†9µK…ÂLá['béQH÷Fð;Ô5¥¿¾óî5˜ß5³u|äA)×Ã|ËË…‰›€ þ©MLѯ˜Ù/MÿEê!öNÞWʲ*|Î.ŠxÁ€þP¢ÅKnî>ÑJ‚‹l{%œœÝ& uþ79줿?ØUä´ŽØVÿ9${ÄòÄô͆êe‘|³°ty®q‘·–Éwù.Z¦¿àbÔ;£øòã§ *¡¼>P™Àq?ãJóÆ—ÁO˽Žû•’ „GZ4t4ÁeµZ×Vµ=5Á`#•ßð¹l®× "^.@P· „Acl*!=œ¨‚^nÂãF‚cœZUC&ŽÕPäjéò_Æz”¬éj%h½âB Öö”ìÞ²ÛÃ~L`ýO]u6$ûGïèõ)žXÅuV3ñçJ„½` áþ"ŸI󕢿CãA¼<·ŸÎ(dM¢Hƹï…tÜþ…cPkÚ> ì‡aº²;ÝpÚ˜ª'ç$L¦Ÿ4G¥¨„¹©4ùõˆ³ù¸“O$hKÊ!ò‘v?<ÒÑÙûi(âS÷ªy··ñ‡ü ¶5} ã¨PÞ‡œ(ãÈå²›ûmÛ}”UHþsÛj;[ØZIÍ1^R…E¤8fÓÎ4Ât;„³´v¸kÿÄðæ÷þ8ŒB2ÝÆnÌlB¸|Ç ·çìþ6†›zUÊ©â­?bnœ¡o¦Î Û­]hœõÑe°'!ùrmgÖmXu8éwØvN?ï¾|ÃéiF*Yu~«ffXè BÑÏ*nx§°•jŽfªôìz,pðö(KÍD:­­U-¡y³aã9]ü9‰åÞ’ó%ÒšxÑ\˜z¸ŸIq!ïê‰dpFÍDë£$€•[uùÍ>E Œ×^/´®/f쌛‰ˆNÍ$CŸ"«ø¼ÐÈz^g^¸“·¹OÎ*kHó˜Õ4d¶FÃ`§fúbpP‚Vß›Œð‰®+Û«›éwþ€|§´ÅÔéwÔ¡ñgµN¼s¢'#ÆÁÑ01®›bÕØÇ£úè\j=E™4ê¾Agd/Ð qU6M}/[´çŠ;Æ*hŸ0'ÌÒ³ü¬¸ý'u÷ZöV©â€_Õ²÷¬Ç7 7ŒóñL¹¿¡Yx½vßOß–nº°¥¶áä& pÐúx4Á­«z{o~¼îBÍPé_%p‰i“¦^HW9ÃÐ2>&}Uòæm(l=x¡3 VA1¨ü³ 4§Õ#¨!‰µ<ɹùö °­µ©çOÀX~Ñe*4pÖÿ¢^Cå%Ö;òêÐõ¢@¾e6Ÿ«ÈŸë逸SDõF, fÔádš‚Z4Db’êvýu‡_ÊõdJ8¸$¥¡Rsä ýƒÕ÷„IoZ™”" ã;•ÀVzβ=â·³%IÑ+"mÝà ù‰ _…”+¨T³s ÍŸñ×éyŽï÷;d§ Ì_†|ÿÊ Ýð÷w%´DlW”óöæùéëóê¦rY¾ÉÁóokIøùÉMcÌó+œ1´ßÓ’µ“ ÆGzÌÑ¢s¤GÝdôG;ô•ýTcLÿ,Î22`çiÎ}Å^øOA=ìÚ,«âl>ÏfÕà_Lä©çôE™¹÷~-1† }6õJlˆÛgÅä£ä T6—I@ŒA²07Š©l€§ÿî'ÊòFûKuå´Ýú¾Ýs ŸóMÜ{Qܦ(!DIŸr€ñ€wü%¶ò ¿0^DÃðúPn•l˜€¬¹æ«/ÿá9|%¦ª?ënøÚä‹ZV®î®ë;,£9lntÞ³ÒÇ—˜œ¨zjvõßúÀ”(+hJƒiÅ<ûƒÃ¾1 ­xÞgÔÚèJ+†Eø4ÝŽž›&yÓU€ž!M'B}Öùf×wigsÛôšŽ«¯%‚p&¢JÕVÔX\·A‚‘êŸ3u-ýÉapæêLùšÃÐ Ï‚` í$Ò2™aÎ92 ®Þh3W‹¾:ŠHÉ ¹å…Õ“« °r"aMâ$7'È<§kî8•Ôd$e}»×ŽÃqãôm™#jÑ7¼leI²ÁÅÄ«e9• ?CÅb»¨Ç×ý<™R®š¶K²F#M2e#’Ù’kû¯F礊Wü5@™²W/Õ;{aýPzÅk‚ű=–M ÓÈ:%„ÚÙp"Ç)šTKúŽüæž±œœh%Cü$ÿ`É2³·ý8+…ºÜK½µó< l³§Ð)ñ„®±¼fGp*^â–ï »…i;G(Ja½£ÀÚƒ%ŸšÇXèóJ«ÞÝLC¬™M‚íteüã ¼ŒyHñžÎe0ªqÞ§$õ;$Fär ëCïpøöÄÎΑS/"‰ÍQt¦79½»vöþÕýë9/ªõ€Á( Ûúj©"ÑÄ‘m3®ã*@Ò²œfdÌ06 |{MD::.½Ÿob»U/)8a 1„eBøð™JwháøRç#pé¯ÁËgzšëâÅ®ªáÔ¯ÁŠb½ÆíA$Ö5?‰#ï9‡=Ë®\‡=8‚j®{€VPbX‘§« ûs<ŸbÖAò¸E‹›¦6=Øyäâm(™r^ñCV¶4zÔÐH–“ù^ ì­ä…­Ÿ)æˆ °ÓëàYX±fáøœÆk ,ÏÌ™0s¥À´g ˜-† ñ<Öþ‡9¶:L[Q—°¶1°¯c=2¥Å_³óÂ]# q 15‹„Çk0¨@»¬Úz2c9 þ1GŸþ´›Öý[!*$§£eë {HŽ £Ò€Xø¥'ìÏ›óé3eŠóâ´¶‘ô‘áYs‚O~3qíIÿ”½VU?T‘}^žxÇb% M„|ƒúiÕ@i€ Vòx^Ë Ç/óàc‰’¯¥ÌÖú„pu™4Ór†üÆ9ë$VÙ²Ò€ïfÝÙÿ‘⦃Ԟ`þèÃlI‚î*41Z1˜V©¶¯PZø¨túL¡ŠLl²XSm’A NØRV½#¼¦Ýɧ@ u§›nA3‹ó§Î.øîéÎF¾+Çm‚ÕŽúÓÊú$´»€Wx"ó5Ú“¾¨P½mÞ©&û.´Mg’àZ{FXz_–êZÃð³›òE_¦QLò>–Ó„ëSÓûX©|¿1•X­Gá¡Ã éŽ6˜2DõÎØQÌDó׬T¡váT'q!Eͽƒ§4/×½xµ4bp(%[;ñ™úÑ7x¢¿iÒâcz™Ý*Ûd&NŸ_øÉÃ;ßJ”±˜í¾ñyzvÍ>w±HÆe؇ˆá LСm<ø9мÈ\ÈD`×=øã…øW1hnÕv!ÍE8ÄÈÇQ‚§q ›¦Í–bTá>z1&»H㥢,¡#Š­È1rvåÐù¤×¸Sœvlc̈ÔÒ}\ù Aå¦kàyyЫc„) £ voö¹[Ñr'|ŸÇU_n“>K3òý³ï3 ±F<]ÿ©tíö_[²eÌé(<þÓ¾&Á~ŒõuIѲs»†h¢[ÊÛnM•vĶYh©¦e^¥^Í˼î$Ó{†áóDÚyÔ\— ,RÍK4Í„0mp‹s6±„’ÂÅÓç¢bm3‡€ @Y€óeæ©qG^5–?W«;¦ùLàcYìº7~:œI»2*ÿpžƒ–‚y…=Up“O)já®T,¬üËuöîµ#ôåxv`ü$ãdZ©\ÊÁ›Û£C²MîâÇ—Ê ‹!·|–œm@y"š‡„vïéÜ/‡·²°e`Ùï…îcŽIѯ´`õ0èÑd&H©)¢íQŸõVÊŠïçì)xÞUgñÞ_Øðž¦ª3¯‰5¼ *øGyþYG/ë= ÃùÆC´*6Þ)„ÒtïrÃYÈç/ŠŸBaJr Ž…êHšœU +²hºOf§‚\Nƒ»Ä”¼üýŽà*3/K'åÌ£ xâ :ü¶Ue…Ýâ¾j|æZ|‡ÙÌsÏÉùDÎ5¤8Ï1túÌc$.>¹–Ou{#Þ.ÁõÑ|+·!MæñH.‡ì—úeÙÓÂm®>'[U!uüæ ,ÿi±óÒVïÏS¶bõd‰Coiæ÷ò¾©¹Œ‡}é¼®³kJ_ª)Æ£É\œTµ;Þ†>ÚÛ@ߎWŸœm•¨’‡ƒBLì äµu¬*(ë¬1˜\ùÓK›á+„E£€q¶Vf;‹)Ê{!k9%ÿ2È="üû%{?÷ÅfQùJ5›¡m¾2hm¯WÁÄ ÈúÖ¡6Cm£†NžË³i̦Î(¢†Î³1õ7íö°‰;e“¯-s™ÅÕÏÔkÀH¹6¶Gø;C¢a(ù0\ðÅD¬Ž_u zÏ#è´E3—=.rúÈox)›PÿP}Â<BõÃXÐ?ÝI€ú'™Žt,Š;a!BÒŸGòjRGƒâͨ-Ñ'o? Ã×h&p8ÔŠ·‰ýŸoCºtm¢7´@ãÑ!Óœ-`êó„sK‰£'|:,9‰)‘<ûÛ®žX<æ-«L‹—pq6Ç#}ËL‰$áÒ%uáåØ=×ãí=¯ƒ`ì‰ÙoÑm˵4UéØŒŒ¢ðˆÆT“ ‘âX.ˆÇ‰’ ‡‹ÖDØêYlh*WtŽÞîøÁa 6ß¹äÂYoÏ´¾A¬ê?IøY¢BÄ™TJ´‡(ëà¯JÜÑŽ“Ææ Ié# ™,•¿ I×lM©îI“2¯í>6ßÿÃÚoÿxÕ›û,Þ‰E[%Ù»^Ðg¦©)gdL¥Ù²ÏÄ£iÆ×ï˱·«¦àîgS7#ZøÛ’¹à®TB5F5.¼^щWó¯Bµê0ÛO“Ùá6¦0@F^9:tÝ‹–8¦¿'ì£t†§k`D'ÖŸ~ÊP\<-§€;lšÝ©ék0úÔ”Ù{`[¾~&7YíÝ(ç`oRõÑpzæiw¦¼"²îú£ qÞüL% ¿sýñžUdÂòm.aIg)ã<Í6<ùŽ{Ôá‹Û=|ÚwÉ&ˆJEN¿Žu8òŽ—&-ž½Êšá{¸˜Î³†õ†qh‚µ°oNþ 'o8‰M×WsM°ïþC—²U½ÝïowÊ„üËVˆ‚Döñ´Ê,–Q¶À,[À§¯’¿ƒçg)Õ„ëeRb+é§6«òVw÷Ì™P‰²Ž,•+Ö°þýÖ® JN”µ¿éO ˜;åHJÝbZš˜.W¼Ý ‰)‹ŒIÏç†i?WýÈŸĽۇlm‹`ä>…[Ü·ˆðv.€v¯®ÎT|ݶÕ ö܈SêL‹¾zÍóSj'Çà ‚Cž‚ýòÕÏñÔ"?Cß{‘{›a“÷Çl¡…­ãìc¾†óƒ}È@u¬‹1à_ùûñ8ú1ýägb}àq›uúK¾ò¹Ö,|û5<’ЙèÄ0úò’¬fµ”Å3­•×Sܪâ¿Å[ñ9GE —7±íy-éâ¿¡ôžbs?4Ó*9ÞvóÜW¨ñ âˆ×oc¬DŒgIÝÏ^CqÖ@ppTüÞš^½î¯Œº ßµ½­Nªp6¹„ÜeøF¼›y¨µ64&ÙáµÖ³¨ÞC*èj•žP<½ZOÓ]‚ôšö3¼N×\«ƒÊëþwïެg¨žÜfÇ—Õ æ›fÆCj8m9šK˜ÈJÝ.·@Œ?NªÒþ8ŽsŽÿ{ÍNЗëû'´šhojsò*]w˜Dâyº—̘§ÉÝPSK¼gÔ ˜e\ ÓZ9zI¢nS­F½k¹x3ú—Eÿ|½ï@%ùq+,Ÿ“3°¨È÷þÓçíˆå‚ÂÇÀ™Wgʦ1ÅÈÿÊ€ë©!=¶‡Ñ\\Ö=»  ö†!ÐÆåŽtm9Ö²Y8oèhrÍÀöÀ¤œœ'ñ?&D•`zë/Á9Iše†:/ÒÓŸÒ`bûi…£uésL8N@!k Ë=¹]½_5ïæê~äÆu×ð^1dRÎEå) ä×NÔìqxÞá3Û¿ç«Äê=‡`ìÔ¡_~½$«À\ýß ±)Ÿó Ì+6Ùh›¯21¦…jå†n¸ ö0à ¯¼`³?ÿØ!\¸(Ô½U³wsØ}`¸-ÿá3¨§j VÐÔkPÆCkL5Õ~Çû­ +¤U&”œ‰KIàâ Wl3´(”èÜåÓmZÛ4ÆtK7«D[“pM>X’ºo·ÝŽÔ…8îQË%ý‚®¯‚ÅAdßL'Ûíç—ê#¬`˜ë|#8P¦À£Þ±h”. 眦dý¶;£ªˆH‹<ç{Lw¦™qå.j×Çôµ"›.U¼ÈL²4Õ* ]à…4v‰4AȺ0L¨?Nœ±ð¡ICb¨¨”þgCH“eèÖ̱ M£‘”ß]1+Uvxèë,8–zaœçÁæ@bðeÁ/¡H°fÆ<Ÿ¨:¼uÅÖÜ 6ùrkã!©ÆTÄyœàÆȦìt"Gmûìå;蟙8ˆŽ±Ù¼#†åÖ‡P©|…éxxÿEÈ6™²÷xѲEEý˧œÛà'ï·h’¨ÝW†«|„âÔ®ú×5xb¢uOù>]¨ àsR£§Åê©èîx¡%÷ -³AV3ŽRëäß°?Ÿ´Ñˆ¿ ´§þô>¬Ø)~­¨§ë ŸÕ!òÿe,¨–ÿnJ2§Á¤U…ضh{ˆ#5°³Káoôªk®e\f± =÷ȇÝڙʇŠoìïºkâ6çL6ÚÞϽ—nÇåM"¥+ç²Ít/±®îÀɧìäCº>TY¿k4p‚é°áâž|ÎØyCš«osF‘Y²h3䕨ð°‚2¸51à«ÙIì÷^g´æ Ñ—nµñZ…&Ðã+õþSC¢™ŠÔÔ.àÒ¾=ïæý¦¹Ò+n^îÜWwƈ,4°ÎZ-Ü uÛ"˜,«W[†LŽß"OØD¼ˆ£%2ú¨°vó·K¿¤(GZOýiDǰ¿å;;Dè½®eóEÒ4 gV¯µV×-hµE´6:øs'¬«qí¥?eív8QÛ³=1QÌdÁ2iêb9¨ì*Yò èªçÕýB$ß‘h¹I–4¬ÐªènÁÿ$/£ù`E Ô‘ ˆ® >±¿wïÂáH`þ#ÌüW@1ã ÂÀÛM±…+N…¼ÔRV¿<ŠÅ·D»£žp,1¶eôY b$ùnú¼ ¿¯H¶AùÕ#r×§qÛ¥gÒms´nÆ]Ÿd¥´ óß®õ&•Á¯t›£•Ö¡ý{Þ‰‚ P®¦Ó(öµ‘þWq)k§™fÔ ¿´9ù/ä2÷Lñï® uŸ¦ K ÑÞö,Û¿_N§.1jEá„ëLlÓ•l éÝðÜ{Gဠ"˜³¥»÷zù•+å1ü“¾è±èºá$ˆÝþÔS¾ì¹^ ½Àtµ[\0ÏgC'•»s(8÷{ñVb_(i^æTzË£1ZU×FE•‹¶­…btä–SKÌŒ‘7!5÷®ÛíR"’’½ÕW_ø5Úc$ [ø’ât /¯ Ý½¥3-oÎEæ‘6{<¶æÀkb¤iÉh±ÒoX ÇóDáÇž.–ø€¡Àü“­ð¡ö76†ØÉÍ1CZµ¥÷5Á°ž…¶Ÿ[ï@ޤߓß:q ”ÙR,€¡òÁÙ?æ‘7–„‚ñaW…ŒÃÛ6kÔɾùA Üh+Z8þïÈq0#C°³z@ÅóÚ`vš¾îÌsaÐsÔr\@‚´üGÆæØ}µ9:ïà2pÞ!['`i÷(~!(†c÷Ÿ5?þ­jåVíošÿÔoð§ºÚ¶yïuÛQ9&ýù”¯ ýhJ;š Á‚ª2ª·¿±ŸôwÜ¿#óJsnSRÑWoyÁvZß¼¾‘*ôÒâÙôÜKÄE¶°:ra“<­X0V¤Ró¶ C [j<«ìIÒä¿y™…ÃQ9ZºE.TI]Ý»@ÌB;ÄÓžk7Eq=¿pÉÆ¨$›¯JéúZÙµÖ7°ÅÖ.Ñc‡‡·Ì¶3x*;,˜«ãà}¶î¸èíÓ@ ìå ¼eÇËü–2l¡)b¹ùò4N¿S-ÀWÕÊÍñ/ROGI{–}øƒpÀ :+k×O#imäCüŸŸk§YNUòšŠÀ_•vp~ßÐng;LÚ—­ºÈ%ÖNë¶¶ÕÞ–Uó ѣƈBÛ*°b‰;à†á´öŸ4¥šÂeïKŸSõ¦¬òŽh­ª 7qóæIήÄ7‹ Ɔ=[>`ÃÊ Ž˜ø7³ÈcZƒ†»Ñàj ʺr&‹ÿ×'•s9:¸=—• ÑKé‘ý˜“šöiAÊ\<¦q9ƒ&+¬J¯àÏi¸$K"ºŒ’"Œü¬¥Èu‘F˜ºS“òÕ‰XíÛ´4ð¦Bß|Øóç’ÞºXÏFG/ô”õ’«9͉x.E¯Q)ÌœÏ;[E€8|ðñkå»Ç÷?-T“^XvNînãÓÝ…óèr²RG¨’TÌjúÜÖõ";]ûCjÙÓfµýb\¨>Zw¹‚h@“ÂCÿƒ>„™®‡½4Œþ±ãœ³ßÔÑ@“8Hº g¼ïÅ2LPí“ÀÑ`3Ý™ç)fînÁ´'E”µ?gx™4†°g Ü/Ýßå*6Se¡5ý:ÇšT»ÞæDÐÈ1YéX›L6Ôk˜ÛŒå=ÍܸVö˜T0ÇÃŽ?bLµÄïQ&eY‚ü=9Ûc†Ê)ÇÊßS¨Šo/jŽˆ“‡vx–f`ú‚IEŧ~»ÜvëTaÂw¤v½!•öúnr71kF=Ú×âÅ8Ü=’¶²cíhƒªe©çEÑbã™i™a£ÊsÏè é,;Å1óIêK9­Ì9YN_Ê’W† õ%'’Ñ„_Að†*YÃÿL¹a¨hàŠDÐSÒó+uŽÑŸçVµÇ»Ìß5í‡ê#°!»:¨Ÿ¥E Ö îL™ÄïÊ?ÇÚ=oEÝZÜ Š}\o‰=Þ¿¢ â_B‘r8òkZvÆjÜŽqMAAʤºBy[³]=Äp §~Ò“èËÝ@œlWÖ¥ÔizN}Q4†ÏùCG k S‚wú8Nü˜ ÿ>¶&Bt05{iF¦sqÅòf‡Ö&”Å:ÉH­XÜ;žS·ª€ƒ~üTrùv×Xn9ê“6\ÿ˦ Xü6D Ž? e‰ztú³’ ¸æ†”UOûáå?”_Äyš!§ž¡cVè!>½òÈöËd(ÇÔÐ’ÍÇÞè|Œw!šËg|¢¼bs`g*ÿ*à8ùdkìÐÉ+ˆ²É‘½tQ_'–çÇѸ­È0;T_šá™­ëûÿNÿá[Ï cýŽYÁ`;8Ý÷O”:ã^{ë³èåOO (e¤‰ò¾á¦p´&Äõä7lù„²‘"™C~ª(Û…Þ(qrþâöñån|ÅY£ŽË“r¥ºiq25ºÛ¸ÐÎ\×2Û ï´o–G.ÔœtÃÝÚzªÌ hÌäÄzW¬QƒÓÃðZW%ÏûØ‘Yÿr¶sñ½I„,˃™‹bࡘ¸éÃ9qùYmÜÇ̆\—Ï·”*¢ã‡žZA±&<ê¹CÎ ÄÍ}Û(‘9 Õu¹¬¸Û| Ögªî¹…±Ç÷¡lþÞ Ë£á…\pGY‡™ˆËÞ+|8Ú\ßÝX£èC ¥ÔË™CÓ‘¡ä>‰x7;W_èšHÍ \¼€¨¾=DY›‘7ø©Ï5G(オݞ_0 D™0†×¿æÅq"ïÛôÀ§òϘ0&‹Õ€fšZ»#3:ôHé)ÝŠ»c‘¡Í˜P"^€Lý‡"ÜÚ…tÑ‘âãTŽ´“4%ƒÁ9ÊuMEg¢szÜ+^w3¥² sSU¶J¬×œˆRkQ~*ëxÆ¢‘è¾Æ*p¸–“ÒžndäVtN€|ûj¼×VÂä”B[ ¹C3úæü¢xé€?Ô?1•˜*þ4RwŽ@¼ùvêÐò un•õ¾0ÓW¢½(/B ìõkùR6ÛQÂTù­¸C á·Ê |Ôט€9!à¢Íá¿õ˜ZôFÿœjT£ ÜvM ‹úIƒ6Í¥ }2:Ñ[sÝA¬«XÃ7q­¹ðeõý÷gE©«Ñy³ÜÌËŸ…  AË®#ÝÇ"dûyÀ×M÷>÷DíígÕ>+`Jøx¸¼Ë/E!x¨ !³:hk10GÒv›I$¯UNX ˜êk~1ÅOÍrÅÀÅcg(¨gளÄOo¾“+yÅý,™äÈ9tÝ—«ˆ‹à¸Ì*"ô€.yà̓¡×Û v{–^°u’Ùò¿5Óù]n$_aã‚âtƒÏókØÈ.¡v9—Ø ÔºAý9¹Ù®yB§‰!e¬áQžv7>TW°ÜaÈË*j³ž[Ñ—8ãšey¼LìxÆC¦9"T³J~Mð[§¬øÙÄ-ê¨sËi¤äRÑ ¡TŒÎR|ó”Ú2€Ëæk}ya!(ÁÙøx¼€rl>·T ƒtàEÆNÈc°ÈÑæmy”AÃX± 5߸gÐv³Ü[=)›!¦02·ñüÇ[¸ò[‘ÀÚz߸,¢ÆÅC”xä+z$/êåmÚ ¨ÓÂtN íU5˜”§tkb¤v›0«v”x-Þ .Â…þ¼ÔZ3xps_5à„½Ã*V½¾Ó²Á&nÓayví¦|qíGXNŸ½doÆRP©ÐÓŒ­ºL༮Ǧ.dšµjùfEÆ‘"ˆoÌEYkèóö]Í|h_Ì­,ÝÀ^(œ97EºxC{\*Z£-\U­ž/]eµ¢¨Ù¸TaÅ:ƒÖ7Š(Ôð¢Ú<ÃÖÙ%qꬠêcûÎØþªÖð ü–æ¯öG ”:²g5*Rï/*Á-ù@­g²3–ú•ŽóeÞ?•ôlí6šDYTä åàzÕ ‰cV"„ˆ2åßúߺº J™„ݵ5@¥'mF ¨YÞüø¡?™úrg•ÃÞlÁ¥ŒfI‚+d^&ÓÐ!w` Lêˆa> ún+Öè[V‚¥Ö$w“S_|Ç4Ätœ®ÿW¬3ÿ7@zT›+VM~¯à;=íR*±*Å·y +*m«¦ÜÈ­Ö“®¤<ÊT‘¼‚þ 6Ÿ»=;xp¤²`í~ëŽ×LëBÌv¹®`O³3aV,¼Ðo³Ü² $%ö¼ÈUI°ß%nh,–Ý[ÑN•«í˜½Œƒ¼v.±úé9’\Ÿ-D2ò¨â±5å]0H-’{ÄPž¿oƒ‰Q;âug€Ú~Ô€ÆV]ÖxyÀ÷ ¥Ô–J%jžh†Øü}EA©;¨¢ZÐÂJ?ïÊÔXÛßx¬ÙE(?QоÛÈ’Oßµÿ¼òG{éú2ù»ˆƒU { ŽN,§£ JåÀ…á ²×'fáçi/#Éwâ\5 Ó'F‘퉸òÖ+k2 $~ š}¹AHš'"äýUñl-´1¸ˆ„†ÓÈv{̘DÞC¼½ÿ¹éÍ˜ÏØ¨Æ;¸?76FAë«*( ´þnÕ©HÀš­Þ½Öygj$B< ¢ˆ$CwàJ¿—·™“´¤ŸÝNEñšo¬ÙÈü¨dBž’“ŽkHÒL˽ GgÒ ²nhÌ"2yZ¤O<’ÃhïÂòÔ>¯­O/ ù™É úy&˜Â’éNg.ëîs3Úæ;æ±²³Sý;¡B€ÈçK-H3lÿ“„r™ýx‡ÚO=祸Tœ‘¾à0•àˆ( jÊ ”4™¶ñæ¤Rë3®$''ùSQïØ0o;Yó Ã(!®í⛪ԄzÐî/%ýxê7îÊGkKpŽƒz¨¶Æ/hMÕl.å! Bê8€³(Í×}éš<î±üô}DR…°è‹¬ÊèÉ–_¼v•ÊeiÐ)}béufñÖˬmï+On~MWJ¤û5tÇCø‘¾¼¯ΘWÏõ]5ŸÒ¨eVtN©-¯“ŠFq°Ah§²‚H³ÿ+¥Xd ÄL£œMÖ$™óq-CvÔé¸È]eÝ¿ Ÿåø9¨žˆ¢g“ŽÕð5¥ðf0dh\*¿0áõWU”íñòÀU§—c¶n”Ñd™²Q’Nñ¼f-ŸGÆó•'¹‚C uPF‰b€¹wbá2’8fŽ~íªèíûÒâWx­¨y_Ækz}^œ†&¤üzðŒ÷ªþîýÕ¿ôϳ«Õ$¶- ÝŽâS|Ý"Ã1ø*¾5N–{WÌËÜ-`ßÑ‘ÙÞœ*« v±TÆHusöMOT~¯âÖUAç|ä:ÿ@8Kzgú!) ŒŸ%üH_.v¬›I?àv)\}TA\اzTTàÃþçk˜O™FøÓQ6enî?_'%f‹† » iÙø¹&{æaõ½#p{î#Ý´·,žˆZË‹ÃbCô @ó ’=QÇ;fX<ûRœº·™·>HG¶zFËÜ·ôP®æôZウôâ†v#C¡$­Ì5¾Ô[û‘¼»Ú çNYÎo·/ù›Kuñù‘ë‹!a=µ=•C¨I(¨ŸßÐAwO·óH9u½ø9–N4·¢âŒTt“}°|ÿd€îgμ$k$ -yûŽ–W ÖïKþÛÙÝFÁ6 ŸKѰ/[†Í½ë¦ßm’ì÷à„Ôá³Å­àÙ\çÈÁ d½.U—D–ñàPtø€ ìç/”çáXizU,¾xDf£ªËاƯÊfDzßíâf¬+,%RvÑa"†8†Å¢h žð°Ó…* ‰{ê–’­•rnâ-Ù¿/5ì¨U‡[§.``DY· {Ý{þÄéš‹ªÕNï:×rèy¨8°ó£ñ“éÔ §€Üš–ˆ¡ˆ¡ègù^MÉtbL:ø•³§¤ž/OJ)Ç_¢åŸdËöUÞî3à Öñ šóºþÆÏÛlÀÏQ¬¬ÆŠ0ÍÇã,YI?žŽ®©åÝåZB»³˜ùA.µª3B-D2–œÞMмEñ h_³1H¨-ÜRƒ¾ŠQaûÆ0´ûÂF¯`ñЗøâ ¶âŽ¢5G¾Ì‡q‡Å½Ìg{ûí*ý¢ÓàŒsc°27=ù]3¹çâ˜Ëõ»÷ÉÎSß@d…ø9õåঈY=¼–‘–ŸÁ™@¹o{C;.­?Éã-õ£ªŠuë1Í5Kõ>µ­‰#S€¾'U ¬¢ìNŠŽö4LùL0AÔI£HÈ0YϘ•zÖ6ûÒ°/ç?}tБ}ˆôZß,Wù > Uø'ȶo;¾LyŽ1Ôö—à ´EºmDß?s­]'çÛ¿)zžSÈûçæÕéU<æ{ëF5XÎjÒ’"Â'ý=x¿Ëÿ.3êPVða†QŸPôjy½Ô)=•æü%lî4žh'’i1ýµÁ· ióN¥e‡=…ÄŒ»•‹úEi«a´¥[Ô,ˆ¤ ÕXúVY+‰Ì£å Ž`<ð’Žb}ãö1$ùx8âRfà8éZž|ÅlÁ!-ôÅŠO€©É™Ÿ;)€¹/aÃ>·8†od¬¬D‹M€j¿@s4@~züi°e›ÙF¨rep6ê‘8ómžO±U3X ¸¿ÙpH‹W/jÝ ˜BUï ,»iÏ,T™PÄ;åë·~Ç*§ÄÈïE\#2oP¶×@m0êëÓÊÏ/©%Œû«¸ºýÞ©Vº(.w<¾™†"¯¾ xU˜+#…|‰D(\ƒ|·GtYàÝa'SmלrzÌ/Fë‘BæâÖ,"Á'Öa_^o§e˜ "ÔO}ϱ™±½¿‰Û!Ê3Å3#ÐD F¹ƒè²§A„ ^E3Éý{XU¹NˆëÔ ÙæYMnˆç=Xß ñ‹€Ï.üC?ååTæÌK½û=±9ŽÔ‘Äsoõ7.’Á˱SGIÎ8qèdièµ5S ‘÷ÿÆð¤¢É|éVLÒ..¨‚Å ƒ}î}{&)Vá¶½Œ…hYñƒ¦ßXë˜ü‘l'6b+R}u ™œŽeûªoËà[nžË÷ZŒf[3ÆÿiìøÂ‚m2ηtá6h®ÁÇ„äKUùJ±åM·]/ØffóƒõHš'üßbTÏ'`xK1Ÿu2 áº0UºcD˜‹ÑÆ¿ Ü_g„äC‰¶4­àHIßÅŠo‰¤,ÕÒ®ô­ùLI§ÓW³£1Šþ]:çÉ#©‰JÌB3:4 ÑÚT­Å>è$f´f"®¦séÃPª?¶¹èhQ'°u²5kÈEÊ 3ÉÚ îM€ƒø:Ç¥*¨o>žBå+­ ÿ5µ¼¸š«âgÜš1R“.W;Ê:òæïCÙI$^?9£gȺgYÙlbí²}~ìa…{L[¤Vêó—F€#ââ‰OGp£ÜQíBÕ9ä²à®C:ž€áùd׈vUØÄÉ&Vº0ë¾s:-Ô«§-¸ç³1 ôüx¶x>» ŽŽ³Êú39!7¢b„Î:¦p+È`±mƒDˆoCFMâo]i`ïË;—ÅGˆºÅ)Ü25À?RµQ°¤ Óî5±¹'¤˜YÈF)ùöd査 ë)­\¢ò7ú#7…©A3ãáéÛ¢«ZÇú÷MÅŸÅóMž=ËXb’»ß9„tÅÉ{‡ñjJ2—˜‚Ø}Éxð)©[8‰”ö€üÛà娾BòÀv¨8H'dž^ñ!@š) ÃîÔ#rDoñQCé_ÌêÂkßô;.ÐÖ "†@˜¶"ȾFöfxA”:9çJÀ“ƒÖ‡ÄÙ]ïN7´PÑîNŠZäkßíŠáþtž“á$†ày£OI: †Ë-÷¹´Ò.ÓËl0ŸËq„¤³§h’­Óù>LÚ#„é¢ÉØ:“Úà O«Æ.d?íËïû‹ú¶‹*‘WKÔtÓï{È)̶(.¤¥+¦ ò)ëQûSG¾Ñòcްŵ,qÈwåú×2¬ÐÜ}Ü@NÃø®[Äÿ„º¦AöÁY"(úbùêªþ†¼hGë»{:0kØï:̃ó”øASì‚°CâóÛiºå‡Ç INTÑ_?m ÙØ|²Q}Ç0¥Ð?¤±™`¹ôFCæ¨lxTL zª0#¹Õ*M,#-äú%[" s¸Ÿð‡æhŸL´zà#ÓמvŽJýàуAÏhH§Vt·Œ–o$2D\Â$~{¦ÏÙ ŒùÑ‹pÜÌÑv„hx£í .dkLÖ©UÃù£‡ºôÈ ¼ó¹áÏ\¤îÄiAn¯ëSÎ> }þÄä[’6˜E7ð£&¶™ô·G'ÕœÿG|ûL É1§‹ä‚[hj΢$û0Sò© Òfà;ì`ÍsjšôðëÆµçôÆzAHüi™dÈpŽR4Ït-­·ß]é0W)'¼r¥(1y\Ý)‘Z0§‘­­{œok÷5¯^M¶{K úOOÙ.sû¸¡ÝpåÅÞ²zlúòŽÓ¡;ÞŽ‘ÎAìn¡F<«ðýÑuqs(翪põ‹Kqê9ÜL”Ó‡à€/ç4Õ~€¯<Õ¥t¥EuøYóŒ‘l/ļ cîVH•þ Xn ÆC  PþÉùÙ ,™¼v:P}¾¤lÆ&k-6—E®.G2µùJ¾èoº ”§lª–§ª/V²`–ANWgl*æë<ë>dæqÁ†JªMíåÿMö % ûYû»­×iîî³›%@“‚/Iöov|ŒFæø¼&»FC bƒ¥žº0®Îƒ“%Çi6+öM{$!äð].Ü´IÊ+u jL¸<š­®$ªâ¶Š­—=‰ZÉð…‡WÅnb•gU¿/æß‰F¥A“ÿÐû¼‰móŒÈ÷¼a"–ᦊˆŠ&¼ UÚÈQ³·Ãîã}šv½6S»…" JT±:0?A…ÝÜÿPÆ5xž‹"i‚ž§<#1DVÌ‹ŠÇ{áÔk•6|¹ @–Ou‘\¥†À~1$ƒÙUeÈe5.u«‹O„UpäY=vdôô Ô™dXŸ˜dÉÖvÿI‡QÔ¼¬8à;º/õªôSlPM“c\®‰ù þ¨ä>ßÜÖ·<%£¨eJ(ʼÆ"wäX/Å“­н¾ÝžJ£Ø£iÀu6„,êÔ=U²t|ŽB×’ë8 êeZ%(4WÈãWê$ûÁÞúû¤¹ì—˜G+U}1ø(´ÿ"»CÖÓ¾XhüïØ=m[S€y40;‹ö9åÎŒ¬©Kõ ùN´¿Adz@Îòîdq†l8¦Ð+Ís²Ø"—êÕ÷.¹œÙ„¤mÂ& ¾"ö S›w0iï-ƒ¯Ò%-òbÙž˜ Ù'ÊÅe˜‚j5§P«÷ñU_脌dêÜoSU4säîCåGÌÒ¬U4—évDq8ñÊY3¤½%×>†»"þ…áИ«°Zö'<†«1¾ÞØ“(‚XåEºc®uWõÛ+ÂÏk$K©5~;)áQƒj×¥xì1¡Ù§æ-9X€ËÉá»nvšÌIKÌŒÍà|y_nFòb( -x8£l1‘)Jüw†§8mÒ1£Øõ`LwÐÛ>ùhû ÀÛ U+4±Œ Þ¾j®Þ ¢ZÝ´òUYXÒyý3õêÆËè5âÌ*ÖëÇÐ~¢ú×Ïå% l-+«mwŠ MÜQ¦“ÖuÒ”ŒwŒnÁW\x®ToQ(»˜‘Wh…è[¦ÉŸ²S®“seäÄü±Ñε‹0÷uxI%T&~‰½3¿{;Ga‡Â R(fs +srÉ•Áúw^c/3y¡âÊŸõmSŒ,¤§¡mëïMïæ™œ-–.Fqĺ}Õ6³ÌÑÀ9<¥rÁ™4éqAÅÁ°™Ô†6"®²vnÍMå;MdMl«·>N©Ø¯‡‰š‘w8×UJ±€s 쑦$34Ýçåßú[ÖfžlYtâ:ƒÝ{ìwuCåÑdykØ«ž8¼)3•q?’ ê~_Ž8Íßš^”Å=–â»´y¥ëµ@,Ø® Î{±‹£ߎ_´ G£²*XÜHO³*aâ5´›’Ö0ÛÛUD|7®4Ú« ‘SªˆÁaå–wûE˜óåI®Ü­ ö×7Èy÷m#Ü7~§ #' hÔ§IQ| 5F83—gtzìï•úã?§@$¢0î÷¦í<«*o¦¦Dš¥7O$Õ …äªÖ£ìI.„ÉçAHf/OJÝnõ-Q©ÀþÜ þž ‚-ÔŠk碆AxÔÃOœÌ©€¯A9¸žÜ®×n”˜š`†yø—ÖÒÝÕÇi/7•ÀYï¹% %BÖ‡sÞoR¼²ê +DÁœââŒÍ¥šä•Üß$0(Ýy}¤ûÌUkÖ®M%ïcm_x…Ñ3bä&*óLu$sŒ´Ü§àA&Tl”óÆîihh‰V¡_²i©{µXx‚îù­ÎIŸŸud€½Ô{ÏK”«ê4·F„ËtM\—3†/zYèyfr/y÷S'Æq—qs°¿®Ÿ¾ ›œ0ß{Iú/ìvÓµ`ä§šnŽKØ^ä’A—¯}†©ÓÔ ÖèÔÙ _ë%èÍjÕ§ÎDŽÛyÔþh%„Ïó‹7HêN«x!&ƒKº» [»6’ôt[„\9€Är ÿ´¼ æ¯-%j¶Œ§Hê9¨sE©Ô(ª¸V˜a“ÞQ—|†îI£ut§ã5ü?‰hQ[@ðÎ rÔóÈžµöe[ÔüÏ$ „eÿSª3¡ütÇÂ}ÿÿóZÉi¼â6W³r}yë3Ðôã½I¿-憢ÒG}m¾Ì½ÌÞK\Mï„J)^¹°‹TÊ6\žr¡™Ë;è­ ½÷zyÞýü÷P€HçžÎqIã&h×3G玶÷øKd|]s¹ù½ÞŸÐ¢Ûÿt‡wxuAìúDŸù¨výÂÚÙÓsüþÛ«èôÒëo EµSn2` q”ϰhÐD†›è˜$AYtªNŽÝ ¹‘Go~©±ô(׉}‰'”­¯n¸‚07¹S'.ál|Ê7zéæ'ÂahöFöÀ¿bþ u#Ùè9bCËø»ÒúÉÅ€¼E¼-Kó#z¹x–*„*MdòXŒ4I Tº+½9´Ÿ ÷L ·Fé#þ•έÕ]Ê_Þâœþ€ü‡Œ"ÿ«RŒ#ÅìÖwÔõÑl{Ð>“$I­ŒÑù¡Æ9®·c-ÏãøEmªÔÿþÛ›#úÄtî]«s5(k&JKB¤¥ÚAî÷=jJMÏÃŒ›tŸ75µàÂýļ?Œå„ÓS&·{ öYm׎ޫïKl¶^>ÿ‚ЍµÎßÛ!F-÷Ý«P`#gÓd*õá†6´°‹L{¤ŸÕ°ý:ñà 3ž´(V飣??8‡)þ•îæ³x*ÂÄ™WWSd—lO!e{÷ŠË!ÓÊîéÕò~QYß’2‰QasåÞH4í%,¸yšƒÔ !Ò})¿»‘}sMÆõ^¦K.Ÿžò]¯P%= ²™f20ŸS$ý"óêáøÃm<4!èOçg9„t¸¾KÌññ A–)Þ”jáÞĺ˜ÆÓ=¦ÆØ's¨yµÎ3m-Úk+ì=­²È¹Ý@‘è;cE±‰Xäý¿pê§=ÿ°¼ÌÀH¨çäøðш­¬æSƒÁ wâÐ½ÒÆØnßÑøZW£í0nÁAzÁGvà(TÅA! qßüDlº¡a©¼¦ª"‘S™F-ªˆÕIâXÛ±àIt”wAD:‘nò:râÃ÷j‹“F¼•ùÁ¬$àc Rlö†>àÅ/ŒÔÊöîCÃ7•wã[œwñä*»u}ÃQpÕFýÏÃiuJ¿È ë½(¦„HR¶wºÅ9êaµ-Ïü_=«FBáTg87ó_jþ³¤ó¸>¢¬=Úì§ .FP/ª1¸Õ޳Ëá#=GøÐ±½S±B…Oü\yX7§óÔgP¤DÐÎHLj|&mÊSñ7qìö™Â=nýwÂ}3Ä)›ŒªýÅ6‰T¥sB¬ûhĦfÍ$”UUþìÞÑGE‘Ó²ÓE*]¿7ì~ Ø—ëÄT09BmHt ̺ÁÙ=ÄšÉÓ´˜ÛjÖ<ˆéÔ%ª›"ô¡"ô^ÒV-9D­nUÑ™”üE-Dó£õîÊcÀ ™¬bàÈ›Î<Í©üÒɹ5@Ò]U%æÕ`écñd{’'üD1Ý?U¨¯Ï¹mÐF]±*ù*76»ï¤~ЉrA©7UE\¹š„}‡/©fzɲùL»ÿ’Uí”üb]_3jV{1¬†zðI„ßL½gÞ¥†£p/Þ2º–E®ÍçÚ‰$?ž´Ù*Ä–TM÷Ý’S”0%CFqk¾z%z«pË/d-Q¤¬Ñ²ñOT^ý\Ô[X*ôöC N ¤[1A‘…ëK€â.å¡ Ñ#h¸‰uËÚfV6$9ÏE~E7S¤À~Ìÿ8좥Þ;rsX㨇Ö9%1~Ÿh›¡û }êÁ‚éþÆ+ÙŒ‰êXè®È›}ŽÚ¤ûtˆ¶í£ULŸ\\›Â–ãnÈP¿‡&Z«thoGrs5m‰]–[ao"N’öéäžÀµ)Ô3F¼SV™‡ö— ô¶x‡{P·Xò“â>P-Q³æÆrbX5õån!˜ójxe?¹5õ_û¨xžôЊ` ÙÅ…EÚ;¬Ùû"DjûÏç¬nåfÖSkp(3н øäIç ò¦¿8 !fú¡ÉïÝ_ak­—ßúÜøß £ò)ß,ÚQã¶ÜŸ¢¸¨DÜd L;¡:³¹jÂS«¨pÿÈ>$$—uŽ[ñô²õÏýOÔ†TÚ}šäœf¢CHKÐoái†¢‘Õl.üŸÃðZ|© #xoŸË=,2.ÇÛcAªD2“oò÷5L(Iµµt‡k"Öå1%ðÞéø³©˜ûÝ÷‡ŠKëÃÄn Ý÷~göÀ3·¼Ã¢Æšø= ì „!?W¡WSRž;ÄZÕζ¸žÅyþLËâ«zú¿î[LŽÄŠzc£!äNë âõ%¼Ó5ücæÜ/÷çCŠd' úŒlúd›ˆÎ 3{a]orU]šNzÉÓeuõ¶oMpfý§™Àb[ƒÍꇃB J+‰K¡ û)I¯tfÁ\|û†ü{G{Ètóߦ¦‹F‡æ5˜@èÞ¨Tê ¤]”%Ø}äuËÔ4É ¦BƒÖŸuòHEP#Ò'/IÞ)oÐl€7Í2?b-L”HàÈåŸ³Þø„f÷D¶ìM‘W%31 bùƒ\Kn—mϤe>²ƒ¦E2~éBµŠxö\Äɵֳ&.rÔÈ­åÈ2À22Í*4ÂML ï¡ÅÍÊ6„ÌÂò1¸kî'ÊÍí¶—‰â¸g*ñ¹’àSSÌ$ɤÿ¸ôC=5œ6ÛÆ“Íæ`£PJ•žûÃêòç–Èó·c¢ £ rÊãd{¡¦SóÏšw""´’iÈÈ y{t~U ÄßQ¯¹Zeð9DY„°ê§7T³B.²•ö«‰²¸+b}K€Ë„¦(\¡jÕ•¤“ɪª×S<|±´îAN¡ y&uµ™¡=vƒfh<ªlA#yînÉù#ƒß7ÀHtñu—)?–툗~tp¸J­Ë ø¥ÚìrªçQlf]£Wb8’m]ÆñÛ"eu*DÕäyõ(1!àå­n/ôß¼ }—Tã{ç@åNNmJBìüû|”•[e.\-ÿ@ËÒps|9Ü;|»3 FÖWÎñ†õ@y‚yå5Ï[XEÆ9XܦçPš«[ãŒÈ|ëæ±U0:‹´,©HÞ¦¼<¶°‹Ò08¡Páv¿>«fÞàÔàU÷½úb[Ì|WÜ VÓ±õÅŸ®øGyÍ·ß*aS˸¬ûÆ”ºîz™¹õBðÉö½ÄΉéÐ3JþLcäô¸ Sd9µJkÀÃ:²kú ÆÁ¬±4÷j7˜-êÿ‹=RvD´´˜HSȽp½*¹ P¾É\²tÓ§þiÈÒäé±Ú‘äZ„Œ(Ø^@ÉìÙðcì|r±v¾†²O­l²6÷ª-€_¨«›õe¶bbo}n÷¼ub·ò.ýó%¿OµÃC1ÇÞá¡Ëº‚rT•Û(8Ò%­å3‚‚Jl·DÚ5bÃÁÝ>1æ ~=ÑšN0áS~¦Õãà“ÑIŒÖŠ’È6º:’ÔHbÁD•œôTˆ ¿ì A óv$Ѹ™. ‹ÏTt%ï2HH*î©äøˆíë/u1b|3¯bCí3¸/¥Ý)€hð?ö-9SÆŸ‡£t_»$kZS·nãBt9êĘ•4å£ÇÇøÖ/qV„»MVI\TÄ ç»ËÚÕýa·*ä&`Œ³"ÞöS÷J²%Ý-7ëV1Pleïcðÿ¾;É)¥&¤—‘œcª;_8Ñd˜ÿw¯ŠöÚuR†"Nuý0q¥êö•{ÞÃÒvVtQœòü³Ñÿ‡"%`)ŒûNC&É* ´ö 1)]R$§ø ³g1P¾„U?r=eŸ•ˆÚR¥ôç^±ô©NúnÛü6Œ~kMfµXOãÁrkÄ×g‰½£'=‘$1†#³Er-'6°àoEãÔT·¼jÆàÜ÷c·rŸyåJœîhj¹$95þ°}e”Þ9éißlÄe£µo¦“Rú€#nÖÑ01¨G·^JÞY~Xl‹X!ÁÁ¢]:ßìõŽPLÓ#VÁê/¦¸Ô…”ën…ñãçº!(Hi©lĨmg_^YpœI&1|‘U6ð¥µJMâ·{ºÉíôÈ·÷Òiq"r‘ ZÁ>ë,§ÞG÷Ý¥áx,@Pæ£=_«¥Ž¿õeæ^«ÞHÄ—9zÁ?Ë[š ú%‚£Ø¹Šqú‹BraÆ.x°T¡çoéʤd¨˜3cÌÍR’ÕÈŠw;N°®á™›øë\£ÔE0L!ý@TU9H"z–G†ƒÄpmº±UƒG˜hè¤ Ü÷.™Ú½&ðTb¾szëš¶Hì€è6f$²ÜY§: ­OùâþufÓñ°æ÷¬cëÕã ¾š?,ÿ¡T›á6Ä8TnI)aº>…¼Š¯ÑHI›Ça òsÚq‘Á£¥AÄÔ¬Ÿ•hýËUeA"±?¡Zh‚{l ̾r—¨bì0-½Õ#Ê’q?¸ÂºQ,±±µFÚ&$*=}v*]Á3Ê;p~Æ3vÔµëžÔ½ga“Os³Òó]Ü¢J°sJ¹h{©£þ‰ý: ƒ&›XE“f-œXËŒ}ôƒ5…Õy!ÌðÝÃâü ²lÐ ò›i hÂ|ìÐþ÷cAmukĹ. )Îx;jG ô*” A‰<æDfeÒ…ÎáV-Û5'Ú.É¥R×köJÁPhìýð¹³[<ÓR«ºŸdJ¼˜ágQIU—Ü_k̵Wë|½ä/ÒT/¼cˆ¨¬×C½=oò»ÏÕ JJí“‚¦nò.×±Íà_¡0h“@ñÔ¯áUJÙ`<*[ñ òÆå.e÷> È.‚J]žä5ØÉ ©òAc×Mú÷íäöÛúWÏŒi?¥ ”æÔ[qíNdwl IxG’ÅôuíèrKšÔÊ»“!¯OÚL-TñÏ‘‚ghÉ‘wc˜=ÌàË’½ÔsÂ#_ 7k’>¶tÚ?züî¨fhyoð‹È¢zükøQ(UqÊLUmé;8÷7ÚÕ^¡‰i}@c; ¨|³ºK*þÛÖ©O߯$?e½l³|"b½ÔC·è*öÆ‚a5ãŸÛÿó¹I õÿ{vàäÁÌ”]óW4îˆÄ^:nëëÓ™io~Õvçéý¿oÖÐŽ¹x{hʤȘîȆɶô¼ 'áqÑRšµ×¾êë` ÝÍ‘spÒÛŽ•«ÞŽŸhÝ’qAðÕ€ƒ¥$–Ä™@ÀfCá§žá¶böèm³<ã@rd¨È£0¨ÚÒïàÚŠŒ¯ô[·) ƒx—Õo³òî®—vûGˆeEf¾¢ð,^µbÝKÔ~ÓŸ?Y~ˆ<é/ã˜PMEÁn”úf—@DwêÑþ/^û-¥KìQ½F†BrÍdž`b›H"Ï®ço‘àúG>¬WoCØWeg(ØÀjŒdŠþßÛ­/Æ3*+á®ðÒäm³;\]¯Þ¡\t0ÁŽp¯{P“×]£.=ð¡Èœ”L•ŠÔ ¤å5>µw*q,±½ã=$ßñä·!úu}p õáÐSaŠx¯Ä]¢o茆Çt¨¼¡>ñÖï$|(¬©Á43¾Ýß:Á½:Vu]¦(ÂA'M4%ëkt(­÷Ç!cpÔh*ϯ0'Ÿ™L@Ä[ ªë–ÿqÙË>¨ Ä´°ÇüKŒÝ_ï,'âÊÆ•§ýÅ…•Â×½KÍ·~EÀ¾’5ĽJ‘}%‹ –þ>®sÊ,"RN« Ä~ð‹«ÑpÈܲóaµ˜ÿ §Î­ vÄ^Õßcæ÷€g­)5>#Ø®Ög"c˜…-gçcˆÈ¬Vû’WŒSþê:DŠŒHp >Ua’5á–îögÄ™ŽTs§3kzòÎ×)Tl$õèØBlô¹a»„?Ìm-Á†çs›1Ðeè׺?u‘~ØgB#Æ´³ÚuVÞØâ Qç#­š’®©¢ ?G§)fõf>¸¸š+:ÓÏh7þÅUXSÂAÈkƒ,6¹”ûw¿z…„¨IŠvô7oöyö³Ptm:dÆ?¼:ü£Ñ ýv‚G‰óéRv.»Óö5.áÛQò@—×1NõN4*èšY3óÛ-ßÁà5.|¼äÂZCÝ£j#W‹FeNl/r?°IS=s¶g4Ž‘Feôý7›†)3÷ü»ÿb‡ ):—ö3gË[[¾cŽ¢VAv]¨\äG5åŶ¹ðê”Ó~HÎŒV–ÂE!(àþávf=ïŒÎýû­Ïýü–÷(¨)íAGQú“ë%e!öʘ&p¼3Áf [L«ð3ÒÆiþ0ùßK‡ƒv® Þ£{SÂ!»®k¹UZ#È›^K¼Mý®†’Ù.JmnjPÊÉ1G~³¶üÅSà Ngò61ß ®â³Ç SÜê,÷ŒË'²n÷¥<ãçD"æeRžªE‘ˆÀÿ¦…s ·Ð”í¥|sšŠeèõI÷Z¶se~ ¿Çcq÷"}½å‡¸{5%ö1BÝÿ“œ!«é´äkS¼ôÕÀ¡§¼•tì Ÿ-Õ¾n¤Ò—³êÝüç.ÄH¹m’ζ2÷ß[êòg0ÖÜÏJ—yM^c ïc Œêíi^3dWðôˆÞJÿ˜ i¹ÅŽgÝz7¤|^¤Ë:¶ö§oñaÓÄkv¶°Câø9C˜nÞù.(ó'ƒ(öM¨ux‹Çô³¥LäqqÀ#Ê€Æþ(kh­ž’0;6 ĸžªú ØÆ®á ˆÑ˜b}˜ÂRWÖ ö¾ÈXÁ‹„Z–‹!G£©Ô7Ä@Ÿ­¾ÂñÑ ÈžQh%•Ee㳊¥`¦ ù?³ßÊÅ×dC…îk=Ĭ¬Xâ%ðfª10„›N ×)‚Ø mØX>:”sXR”Köxäí\b³$7¡œš&Д%ð˜]HÉ?àBàéq¬Ô ÚaèÜ©¹ÌÕm"Ýä‚løô·®¦#:Ñ‹ª¥j‡(xUeÀÒÞ<r³g~zeõÜÅï†þ‘² b+vسR{3à”§ˆ\mqÆp¥ *Á$uÚ wà4  ®¬úNm^d ½·”Â\ø«F³[!雺;3ÄHš6Mï?.r—8’_)H»ñ÷?4ÛRÅ&ð<.ß23aŽãÅò¦¶KzÝb?É<67Á°L‘T´ÆÎ;thÑ2"àˆà™ä¡(çåS¿ÿ\¦Æ¤ÑØû`¤ng˜±‹˜ZÖ«µì5×V˜BH4" xåi ¼Ö6:Žßæx¢™>@`—ËMÑ ÎÉ8dNXÒö{Ë@€4±„µ¥<"ë {ׯZð‹÷ÂÉ»Þy¾`í6¥X&}¬!…ž…kçè‘ÏGã~µá°Wt¤­š”ò)änÀK×µ†Iˆ¢ a=Ü$sD^Ìí¨Â±Ÿž‰;f±6Xø1fO¬ Ò(3²ZÆ a€èSc:åŠd«"ËÓ*œoŶÄ>îc‚ÇÊÿ‰6"Ý”Ûå9´ $†v@mâG-„û§y"^¥•±U×#€e‹ŒŒ¼2 ¹¨Œ¬³jlÿrŠvùìü´(\’PY»D¡Œr2ÆCéH~®¥(Ù$WœßyVÖ B)€ö/fÖ(5ö²öÚU¾ÅxXá'$ôl 0Áqÿ@ì’ÚOѱ»û»ŠZu ²—·¦LÊ«¾cEUz*ÇzŠ˜|­Hë²Ùäs}axX߀aü§Üë†0%©,¬Ü¨Ÿé||T#[²\ð7'mö@â,ËE BjáGÈkÁ"2‘ ÖÌšŠLÙç£qºúÄÎJµóÁo2¹X¼&<Ö@[pæôÊ“F0aŒþ?M1YÊЄ*³ú¹;û gfà ëxe5ˆÈÍq‘àÅÿvUŒ Óä{9Á€yÜyÌQr~)ŠßS¶cy6˜3K?Ä&‚®T¿ÉT} i[“˜>jçŽ=% Ž}Î4D:­¨ZD«ÀÞ‘Èê(çe5·Œ1³~nTüiˆ¸*);¨;ÍÏÊÂ?j»ÔGw„&mxôÔ˜ÊÇŽƒÂ9ƒ„†:Ô-+×@`ÌÚQžà^}w ÆëÒ]=‰5õ?N F¤ˆ ’Ý8PË_œ¾Ì_pRæ`¯j#(O—±‹i³§êÀF­w[UŒÕ0|Ä O'ÒAªF½\0èp¬”H0KD°_ÞH^轕Sâ„hÖãÌAØ%GxÄä"ùñOYëÕ=^ SÎ:ßç±Tí»Åå^c·pôyƒ¤«ˆ÷õZf·SL«øè™ü%BwÒ)X8GxðžËOâî~B“r™ù´×Þ~ãO²oòrL¦s0PL݈›=9ËØvê*7¯'4Óµ4ÝÝ”°ØFœæd6MYØß¸‹(¿y߇_Wg3æx´Æ õºäƒàaÆ@ªŸ#4^à­ëE—΀Ì\W³rÕc¦JT¨¶´tø§@d<ÌDRR+j Œ$]cåÃgÝ¢)_W ÇÏéä"VVSóëPW¡¯7nÀÍu’ð×v “ñ¦ëñ‘^ëÐ}<2€•Ü6( êPÀpKv'ÃÒúS´äž+.Ã/‡L.—Y^wûC¼ÌÝYv<ŒFu?Î#ÌDÐMKt¤wÂðOÿèí¦Ÿð`gÆq¯4Q˜y×!tñÙ#jÐ#%yÉêר¸§!þ’ôCY)Ë,ÁÍ·ÚéÐö¶t˜Û-XJÚorüáîMYÞ[f‚ZGÏ瞪H«†ÝI¿BÀã™8?¸Åâ‡Ìœ—òÖ=5Öø—ÅMø,1:ˆØÒ;S_†NVôX#/Š C–3”Lú¹øîµ&±òÚ¡¸¬afi4—ü°¯$†IäßÝz§|§1Um!ÉÞ³ÑËiÓ’‘&~¤án4±+Yx»TÐ#EŠiØ*ÒÒú,ûa j¥ò+È•µ²ˆeÜ?WÎe´íYÏ@ã§ð(ù¶¶Èsƒ?£ð¯Ïp¶oß²W¤üCa¿é>Ëø€ —äHb; šNç?’B^`Ã$t.œ%¬É«û îê–´ôM…c-~ä&g*)¡ o]æô´ãáã‹?sZÜóGlÈÔ"-ŸW÷®ú3«ân(¯>µ©ŒÚÅ•Ÿ¡¢Q­í¤6–™û)Lß©:fl€ÙÿM7ÆS=0VÝÂ"»@ãÖ׺;-®'¯,¾ðñ `¥Ép¹‰§•pbH~Çcqך”—û%­p­úÔ¬CÜè·’í·¡:â'€ˆÝ Š'J“z60J2fà+92<2ÍÝ}?›UÖch)=§ÖÊÄ|Æ[Ô ¾€»”ZÃÆ±z÷Ö‰°4u¬i Ybª0A¬Õrˆ3ÜVœê:xO.#Ô?×Àij)¸xfÀ9ñÙ\qMyÚç+íK³#>xírͶ¶¬;}Chãhó¦'ÉÏp‘Á?4È| hÔ«›BŒŽ˜pi¡.3Ñäo±ÔI3.ÿ¤J§› ä5v?û»™'€ìXÎä‰ÕÞË<­È} gÎÃÇÓËÕê81ós˜`}OrE’­vˆ}íHE,³_.›&¹å'rÄ ÕIB¼¿l_ˆô°ì”W=Pù´ôè)ƒÛÐ ©ØÃ¥Ò#¤È¯Ýl(L­·Ác Íg}Ôù/‡ÊÉܯ]üvoò‡>¦þ)lw§KDjß1-XãäøÇ'ò EÛÃtëÝñh5ô"HY‰o68÷i¯|áê·à½ÞOó0Ë[ZœûÛ´qïZ÷Yù¶Ý§m ÇÉ$1;¸ÒKÿÁÚMš}ýšCåÕÏ´º?’@úƒ;} Ï®ú#ƒP#à#Äã:^³~Pš¾ÍÎCÝ m\_ó“´fæ:Ì`*íO*ǧhÆÈÕWãÓ‰ÎÌ Áá­&x-Lƒ¾fv¢Fa/‚KÁ!«¿¾¡ÁIZ?AO ô}ÌÑpt— §Œýu fÅ=,Óbiß!%Ýk´‡ ¡’nÑó½×täq,¤›½”‘Á"£†DBÞŽ(ð1´~4´ Q¹Jº°µ)ÁÑÞŽOGê ·ùÓU#\£ztš™ Kj¯~º¦{Lõ!Í s÷×Þq“_oUŠ2l‹Z«˜sÜØ… <}ý°=<|ÿA3ls¯ºŸ…:²eÒ˜Û€™¯FZÒg :†bîÆ…ËÔŒ¸Ìð§Ü–°X»ý’oÒþ]ú<ÈW:ô¬€º›93%Ÿ^Zn‘`¹žá€\Õ¡XÒ½ œË·kµ|™ia€_‘ŒÍx†ô Eü‚•B¤ jŸ—KöNmÉ™Í$špW§Þ£ ì ú—r¿¤* çVéPgŽ`¥ÍWFj‚ŸiÑ0§AìLgŽ/~ÅÐû-øÏâvP%š‚7IJpÊ„‘í í0[Ê;ç¬&ÞËæë·ü^ÄéEJ¿"—]tcL=ÍÆG#|üð`Nï7­ô2‡(ºts„\ŸÂø!३[¼i¼ñ¨WX ¤N Ù\Òk]|’Ú¯=®vÌ•e_Ÿd°`‚ë]]ÇΧM–!ùQz™0·Á·œÔÝYšàð\<¼ ¹ey ñÖ¨#»¡²BÎÆ¹%­Rœƒ\ãÀ€•NRx’†]ÕãYVª~qLÆ‚%¡áU€›±»!‰ø$*8œ9~øSó\®ù ÿ¡áUÞ'O)¿³DèÃZ|»‡àW Ø€}è?‡¼»O¨çnÏ"„´ò¹ì¢A°µýòÈAfë#€Kë—<®4o]ªýÈóñŽî¥-餵¹ÍÏû,¼P¥^NOt­õ'Þ|'s¥×ZðÁ«vGyâà u/:Ê~ˆ:¢©~¤ïÎdòäùå«È·öØVËž&#Êþ½nö:±Ïw l‹HÙöŸ嚦³+î® ë*r²yⲈòÌ31Ýr¿È܇ÕîæM“õŒb…¶ J·¢MPü[gnÐ(}*æê¯W+;/ ¹`RX†Zí°zä¯tï"¹cˆÐ*Ð ¾šØVgæªÊópþ¤²âõa„’–vB0gŒWœ5;²O“6}J«UÊ9E¿ À`ìr]¥ôÅ¢ÐqŠˆ½p«Z®C:y ÑT: êÜD‹æ©!ù,ñ²4.ä§%˜{Z˜Ê/Û¶Ž2›ÿ¾œaÂE~GVݶ»¨(×L—‡Áš«²êC-}0òËmGËC@Ðøëã(ÁÇ=Ì^¨Ýªð¨§À Ïe’ÃÆ×„Eï*œ4ÈøO{%”yÓ[mW»_g¿Kìµêðì⃵¡‘ê-à H?ÓP]Uº°€½ ó®2è kãΑ¸ sþop¡é¼d®{¤`§ë÷xþo;gp¶ý€euÉ7Sh43…9 çk\Æ­&éņUàqàªVÙ~C^hìƒ CŸªk‹ìÓ"wg…¹%/RãŒ|pô³_cüÛéÇï´öèv†6» Ó|÷™‰]BW¦Zÿ%Õè¶dzýTwžàY'–Ýýÿ¼aùE(û®‘äŠëÉ“ßq^·™ä$/%-¶T^ùÙGºo¸B8MA–Ýì·sò>ÙÍ–×﹋zˆdŒl”ýµ^ „åòLI)øþ…V4ãg%ý¤…š$ý¬[À§æ°.ã·±GïϨŸáUÝ[’ZG·eý%)1[E„­ÉÈšëÇ·Ðæ]£9Áè¡,—ftý¶¬6HĽX$¡%Nô@]K´9ÃÒ 2ßà¬Ø­ªc­G…2wÑŒ,jf—»ÙÏÕ¾ÖR'ɯ€„ äÜ[G†EEEú7Á»»·Òfj÷JÉñ 6CbN‰“ø ¥°I›òðÞ`u®Kòg€‹: Ë\}bµT©W^ê²Ö¯M+6>ıÿ˽îWŽt Q\¡N9rúHà_¤i¸ãC¬˜=V¢'Õ_«S¶_ƒ&L¨OXÅ |%aïL¯¸wÐì"–’a" I*ßÝ!I{B¿uð<£™tgÖ\›àL©·‡:Qr)þe :J †½¤ÜB<óNFÝ0hH(ÇŠ¢ Lõê05–‰‹Oûý‰Šrôý¸Úšäð‚çCÂÇzÔ»j^$‰ Mòzüi~¦@è˜6µÍ%iW$‹ÅYy.!éÞ¸Ö̸€·qÙøª¯KNÏ- ƒŠå¬#ؽÄ®«œÝчfÇ|j«àßI%Õ¶@T”?ÖŇÛM bípèaãCìë«Iºƒ'TF lM“v–9Êÿ;×B¹µaÚæÐÈ£Dì‹oâ$E»&ϯUo[³€‚¾sd|]‹H#m—&ßv¦%ÙÕh"§Û«€d-JÁ²ç.€·ák¢ÿÚV³´ÃDòÒˆ=áàä²+i8g©„î—¿Œ©% N“@ºÔ2~`-ÔÀ…®gÒk°x«i%ÉÊ{†ÁÆõ|9Í|:Ègº•õÁ4²ý…{NoEÖ%Í-ì7‡©–o gŠoä”]ß©×ÊœïöT2ì]/X±9š™ê²ÕF›UåNø6Ÿ‹B‚ w>cç1E ‡¼«šã}bæ²×YZŠ‹‹ÿ%?&þv“Ñ;Ê÷×hC Dv(£:Ê®ül²B¢ôæÇÏg½V|›:Ÿt WþHƒzÄ;/œ.â†UÂ`å‹b‹lê5ü–vâÜw ”ª(fLµíÿæ n²^_µPæÞØm^Œ«bW*Ž-LÙÇ3_·É"MJ²eáú%oVa·V{ !rãkú¼¨W«1ò÷=‹ØuVö¼¬ÝñoÝ.Í]³[|—MÁÃ.Ž-æ+&2³%ᄞðÚË[!Áïí«û¯©Ç†¯IØÆÈ)‹§ú-V Nñ¼J¨’Lè-óƒ ކâê=I¬oi4©Ì0¨Ù°\¦*œáÚÜÿÈg‡RÈó»^¾.õÀËt͉Çoï²PH§Y™nçJÉǶKVõKäëîýÊh³M]Ñ ØÖ¡4ÒŠÉ»jÐuR›ÒÈ/ÿåÌ3”`ç; ~È¿fæ¾ì;ôÖ·Ê~'œ~M¥ñ b×YÖ42àdÜêo}8¾¶€ïDÑÛ Ûë8BÛo+lé"fà4å* z²¼Š­_ËQúBÓ#Û7w-¨¬müüóM trØKCôÈM )}Þ‰Ò£ƒŸ‚‚ÃẍX€Y¾†€Ælë¸K–ûYûC´ Ì‚ ø fšOŒ6ºìúðžapsÁ-6 †j¡²t"2νDAõò/ƒÞ5TnL[U…-–´nþ±i€ÔµJ¯8ÿÊ$´‹”äa™ŠFNï\ sÅáÕG´,Êt&(ož©ÕøP;¢-ŽAÑbcªqŠÕÁ•,4Ã!iO n§¾…am-pÈv&ÊÂL6Ñ2LÅ ¡‡ñOD0à*èaN~,RÒÕ^‡:S6Y€L˜æ"¥ò\@ÖåLþ¡_°ÌV]KK˜•[Éõ±h-ZeªrÆD"í:÷›Oò[óNÓorÂ7ýw×§¡é\Ïü1zgEFŠ€xmS¼*™YøÍÂfer 楮ò½‹HW ­ÝЮùèè8× @jTÇ­,5Ñ%»T›•ãÔó¬"üÌsJÏ ð'ºË3:íTPº Y)7z®wS·ÍfTƒã¥Ca’ÖÉbœkkD•È3¥DH[äv:Ð>³kF",H~âË5OF‘V¤yùÞ¶t‰ ³7†ÌØj%Œ”¯ Ö+!‚°÷Ce•)-¤ ÁJcmÕ5P Ftý þsWo½”¹¾Mµx·•¦m›×¹Ð6fˆc2R¹ú/ÄÌ^o¸„R> ÌUqd‹Jå”»òµ“Gx­®vJú TüàvKµ-~,gGO8<é4å4 ‡—t ºÚÎñ/JT“SÆ2Œ“Z¶*[b’8Mj½y«¥+ŠGDßIF•5¥Ô ð&÷Ù ÀšCžê‚Zÿý%ŸOw·y›’2Öé-áŒ2î" (³'…&1Ds%pn'T‹b›¯ôyö Oj•4 ’G´”ç ìVª`2! ÚÅò½ÅæyŠ6 ‹,H¸<ΖÙD`œl+ñyFVÌñÃØ¡¸ ê#úiy_ÉŽúìÉ}¬w{6H„•·©OÖaK’ËRQZwVq‘ŒzÃÇëRÐ3D}¦äŒv¯}~Èß\QK@óNJ±i™.^€ÿïUkÆ” OjYo2s±c½,LÀYüÉb"|Õ/7g—9 C{*Ó!Ì劯/a­¯ qàra ;¥Æ»« ¬šÖ]{W^)̵ڴšqÌždàîÈðj’*ÛX }ˆ¾—Î6VÝ·ªƒÙ¯©…ÙÏ^;Ú £JÖ˾æ—YÁå-É”jH¿2`TÅåòKUæÁo%€'\bŽG˜ ¿æÁ€¯ÓïM"YÒ,ïØa]ÍNªxm&ã­ ˆ£°Ø±xŒHòÞrƒ? H <=OlÑ5“³Ä%äè3–efCšãíi$ì@6åÿ›¶ÑƒýRêÆ 77ÃÖ÷ڇׅ­åä½”ä$çĽ¿¼ÙVÇ›çlÄÓˆmà©õŒù[ç#ðOÓ}F)–ŠÈŸÁX΃{–ToBׄ+Úƒ²ÊRnd—1„Ôõú¬¿¼ˆúQ/U«=±¤ÝÏËÛb®oÕ­ùŸ»Wkœ±wÿ/Æé{f¤žøï_³ÚæÌ¸ ~W’ú}‡ŠM§`$ÌîgýT?¾ÀíÈj máí"å9]ÿ ßqûjd/΄5‰§ÁI~2-wy–À9Óè¹ ®:|X³Ðƒ??µè(ÔÃgÒ¶ŒãKúõÕ«Ió^ìÀÞ$T¬&I’Vµ}Njè X'!ˆÅëD¯’½ô.Ö°¬±9&ŽÆÞk*TjÇ“`î.Gª ¦j&z“.¢4M§Ò7ØTorY›zŸÅ^aÛ"PÓÅv{‹·žk e'³+2_ÔgG‹À7‘]ò÷•IrPo ˜²™ 4{ÿ¨êYà$Ûµis>Í!äÚiûZ©e+ÂÒÇd#â÷•a©°C£-\–ƒÔAjg…T ¤äšÉKìtrÓâ‹›U»ézQˆžxÔìš‘µ§Øo6iµœp¤AO2YÈÂìã²½ÎY˜E‰ÀšÝ/L&W‰¥ÿ ô'?S%=ŽklÍkæE÷ÂP{£r& c0„¦³L«‚7(sÞÜý¬ÚU«£­¸#ñfP.óèÓÐw—À ›è®B× 'Òþ’ãÿgR„ï&u4ø|Z½£« ãš³â Ô|.¢©^¡8Ó*cøáº‰£ÌèRR'pNÙyåñ&_ÿ]0½åÉe×}²_„¨Éô³‘Bxm¥ò®¨H mÍ³È 2QHûnæ5Ä™y÷»ÚõCÚÝ>ŠN”6,P$N–%µ +3=Ÿs=-NæÎÇgDí'zèH„Ù&¦:߀•1Ò Sݸ5!l$T¯MêÝF°¦Z²Ù|HÊ-¿‹ª&­+*E¶üðsÍW›jî>gŒûì!«ûËRýý‚a+4›z¸‹`^Ë;q²ô`%µÒÉâ&ä5Zf'ßÑÙÉ`'ŸµHúÍ‘Ý"ßÕAÀeżM¾!ÌÜo ‘Ìm¿l©èaÕ$†Wnï z–´a…ð/ c¦öB¢\ç%ÃßPf*ãYä…ºÈß» ÑbjášE €Çµ€ƒt˜F6, [ŘŒÌBèÊj²ÜIÿ$-özåGP‚MH»¼¬P^«Ú±&Æà A"TÝÜÉ1hý‚ˇt»F‹¶¦#c:Ìl~?¿ñUº“WÓ)òŠsn…‘f»sgAEoÏU¾º6z)!!…CºÚæ QY“7EÝ$?ž Oämre&Æ`ì»™Þ~9W—šEƒ«>U„’ü®âŸ`¢}ðoFbäüu¸‹oÚ9Ö!õ Ÿ½¤(!Y„±G$èüÏÅ 8OãaU¾ïÏxÝRv*àKÁç£BõüBž£UQao,-{I4Êc‘pþ*`ÑÛ³¯`/¶`ý®êÔ·žœš±ga¥à±ª¬SÓ¶X Ú+çgÿ …1ðïg<=œºÇV M%k‘‰¨hƒµ’ ˜`íCpÁ¹–üÉï£á1¸aGÖÖÄb¼¸ÿ¹h§rê1WÔ-í€ö õ~15W53ÔþÔ’ô½èhÐUë†ÝÕQ¶jÂ+ùª§1xv ÿfso/Aè~h¥UÂÂCÆNÔLŒ4‡mŒ̛cSyõÑè=Š%1€5¡Bã øýß#šrEGZZŒ›—[¤KŸmûÒSãXU9Z}û|AtqÔÙêj:ƒÚŠRg…Ä'… kqñqG±2G øA’ZFÄÞß„TêMêòÜ:ð!êæ˜ä#…-m§©Ù5:=C:ûtÅ^b@2Gú8:Õ`<‹t´­ÇÑ,Î( q¾µ–µÄHTsÞ6þ.êfm§¥çù匡X62Ì÷óŽšßy"*ÿÚ‰û•¸äå¸ ç¤EtslBöÜq2 JÔX;.ã]Pºäðà•Óÿ:ˆ‘¢$ŒZœØ<ðÐÕkl<¹ç”±ƒkÀN¶gü±(å±òC› K܇§_zVÇÐÂÿ½ä¼¾ÇÐaF`›_4ŽL‚å–¦¶Ó6ÙÏÛoUKOW|²'’ M…-rÉGÎó (BQù’_¼NÖÖ·ækÓY»K÷ä`ÈI~pëËÀ…B=µ›ÇPÑHaªX>E6„lÁ¶úâúbÜZ¢\_àáls­àzë9•£›Gh’b—5ýèN8Ï}à^@”£¢bb/¥M°Àí·ò 7@õ™óµ¾åä8Côå$ A5Ý®­å¬ñpÖ߉*=õ‡èe¯·l¹Š®x”yµ,¨ª«¹Ü{þþÞÇ.Ffʦ¦_¿_µ•±ÛŠ™—ëœ'8Yzò"ïHó|¨"EGÕZñbi4¦iã¹ËB=þë>$)*ƒ½ åßÿ£ñ±ÌL&s@(JYåºêþÍ*bú®Ìyy"Àre¯Ö›êÅ¡¨[Õ‚×tÞ¢g,Ä* K„ru£Í­/sC3êtoá:utÉZè”0yð·ë °#›£E x=w[ây¶µg{£é€òÑ-Å-›í‡~,~Q¯üWüfÀlir¬©Ñ¥ÃhÇm"¿;ù¦¢Yvbù:ót*æ¢[ãk­~-~£§!ÿŸ8”?sq†lÒSæÓC«?bäÖYç9E>J뎎¥±¤b@Þlf2)Ûh&#K“ŠÇí,üÀ;ÛÃ=A*Yx¾Þa°+Äi¡wäN@9Xl†©âtÆÎs¿7_¾1±õpiÂvøØŒ`~Ìø1êŠÂ7*¾mÁ¯™,7œoò¯ä«£¡Hßpfb°·Ï¶‘ì²5ö#mjÉŸu?]ØÛAiD˜—cø­¶·×,q¹/´M»¹”ˆ WL:¸‘·dꊴø êM›Š`y&cQ’<õ‹.ÍA­úQ‰ß;HSP*?ÁæÆ§4o<"Ü¶Õ¯× fnòð‹¥ëñ¯iÒ9“eè îŠ9þäæüÈsè½»¡Ÿ¯ö¤÷£ø|]IT ËKS\¡^AÆŠÔ=<ý'¶'±±]¤8¿ÜˆS ´¤2ç…6f&ÿ›¸ø!·~FyoÅXLªf1ÂýŸ¡ÑZ´íåyp¿“DÉQ9¥Œ¤.\DÌK­¨±q~É#X‰¨•^R¶;oï.ÉÀu4×°L¢i ’ tê1.ì%qsžá©®Éì¤8À÷ÑP¸üú~«¬õa{o°îgö'ܰ ‘ª´ÕaéD¶`bÓf¬—M1q´yºkZXùÃÕÒglNÅ=·Ü'"jÕùŽ$ è}g– Ý¡÷ ‡Ïò„µÎìú„‚©¢£UÆaÇ RTˤo¢ó:9/ÎñPòƒ{O¼•L˶pœ=¾g¸Øß‘z±T²cC¬¸ˆ¶òÈç¿ä5cB)åØq«„+½­?®­ë,lUÑJÖ+Sê^Z4À_~ O¶lÖר-JQGM=Õ¤–™Hç|­<ïxhu_ ug±%<Ö`¿…ŸíÚt”…‚¯¶¥‡Lz.DZcï¯>‚˜³.nb“/¤»:fâ1Á‰6rJߤH€2vó§Lûn0Èi“ðàºý‹Bø…N¾è&¬WTòÕ½<Ç(ÙÆÒž¤ý·³.vÉS¯7í‘-SmÞ.²î—ÔÅí|súv2}±Ô™*Áßñ®.{õl(¤ã +Wݯm¢…Î=ë\ƒvMuGܹذļá9Ào»Z½u»Ì9Ÿ©7iüÍ6µ‡韛ð³@Îf6Tß\éì[f/£ê´Š»tàgçÁ=¼ fò5ò7&ä7ÚT_qð[ξó®™2P¾àe;N·÷møÂ¢¥õ‘šûë½~sØnB3zbŠÿR&:SÈ"î×ÛÊ;½ ¯Ÿn¶B¦øà΋~g¦&;í|”_;D‚èãÿø93{0è .ïãáÇ?±vvFbkGjb l|0ëï>ÏÀÄPTÓÕO1´•Ýáj1i³sèˆäf5?Ìø¨Ãû/Ù9GKlÙÂŒ·UܵÏÍÀ³À­+u—V¾¡yp/&._9»D‘Ä-4¥¿‚Íþ“·†À£˜1–½¦dÚú’äÞx„K½ï õ­á»KÉ2¿~`® ×5 KY*%‘"3Óƒèað뚣ðªú 3¥†lñħ0_îö*­ilþ¸‰"´hètj…Z_O–vlP"Uo’õ œ4*ešÿ†I€9'q«‚ .AýÇ•’¯|È=tSÒ‹¿èÏb^z(ëžÊ©r ³+fàŒ{ÈKÔÐGñ`¦]7!Ϙ¢©Ê•#+8¶ sÚ׉zÄü¦ãA50bɇºÌ*vo«§öü§`ŒÖ—U[h.o-&¿Â©]¤13M|X‹ K0Øço:ŒrÑNÈëÉî6þ\¬è#Õ ˆ¸É{MaÀoõ1ž‰ë‚V‰½³— P£ÑÀÇ/&\a4Èí›;¹ªs`Pš”Ó@èiƘäÔ·’¾¯²œ† Í–¯÷v/*Ÿ`@šÄl•C¯Åј·–HõòË¡Ízê­¼=Þç᣶ç'¥ Gùõ…Z”ŸŒ~7Õ$3»&´£Í¸× {˜JQÁdwéP4pØõßA·Äp¡Y@{Ÿè"ȯéŠÁ¿ €ïŠ’«oÅÃE1u(èèÍ1 üag&Exù<š÷x…fÝN½ªù-¾ÞÖ¦®ƒ†ILJP\aÔ^=QE¼ ùºKey©¶âÂ_fëF)ަŒýöûRõU£E w3ô¸ÝÆ·1±&ÞûÀÿp‘BÜ«¢¢mˆ€K3w¢§IÛ[Tܤý]¥#§CÚUÀlÔÓCT™4)ªzª‡Å3ƒP.Zi鯰—Û†Š0eŒ5]q†ä;,g ÃìSLìÈ­‹¼Q">SÓÀ]( óñè{xÒàû_k†¢«Ô|3tÚ•ÁäŸ,ˆY ¬/ QŒ•láÌј%ÄÝôÃä°Õs°Ä‡¾ Ô&´’¥âcÅfËs+÷fMbßoo‡¨Ñ’;zÏZß”@WÙॺÕÂÈ0#ø\ÀÄ­tHçÑ{–‹çÚµÄ<) ‰^Eh“~?úNíšMÝäÕdz£"È!̇êíPøm›)ί¥fWÜ&ê!ó„pœµŸwÅ5ÈOÚF26ws¦d à’oqyÅ~ªDy‰ýf} >ñRL÷i±ƒ«]!‹e¥0Ó|D×Z!oªá P=yaÀ‹Øk®N.SÂ×È$Æpê‹ý àV‚D3g9qì¬)«ÇË´cpëëÆ=­ìx¾q€%z#Áª|LÛJ[@,ÞC‹t)0«pÐÅ ÁÌðÙ® 4¾OsÜš-§c„Ä':µÂ[±ŒÖ:.U«šÇÝøô»u'º«ZÑlãCƒm7WŽ?W¬ÂÏ`¯˜È8]óS+Ë:ª¡]ç›ú‚èLß]×ÞIëCË`!oÌ€X³á&ë­(Á=•ífÂé¸>mŸ‘‚G_àpêý†Âõ}VPÌñ§D2é6Ôå'_.“êöüêËt‡_Õv›Hð'ÇÔ¦X9¸Çª»VY8D§ô3hFåÕÔ±7ÝnæÅï{÷Ò3Ø·;X¹Â3ŽÒ@.Ëñ)03”»œZÎp¢WàæÆ‰OfNáWÑ.ŠëŠ@ƒ-Z2ƒ•IÁ '_¡]²¼¼¼¶Wa†3¥Žýû±Rå‚ö´©-Eë7Ô/…BÓ&xøLŒ$ÌÄJ¬ H"QºŸÐÝ#aËø7ƒ.‰à¦Cñ䳤 õùá÷ØxE¹øÜE2It<âe ÛÛ×Ö7)óØG¢ïU¹Þð_Ð˺kŸ £Êÿ_!€îÀ˜ÁP€J¯ïÞÛ–Ô¸¼1×›ŸÔ)?ÀNØŸwŒiôürœ=YNº›l5ÝT|ý­ä¯¹ûavø»Ÿ3¥Â:„w&îKþ,g’ÇryÀ¾L„Ñù߼ã³dyýÅúŠJm§Ó¥UÖÀš„W¹ž}¶Ð —2'›ƒ#âemÉvº\oµ  ûÜ’bº;WLAä">½ò9có)_KL5šæá9 p9 êj§iškÄ:ýËËðÀÛ °FA®1­œƒñŠo"¥^F¹¨¤…ê__ |H3˜7{éÜúZÍöµ‹1õCCP+v&‘WÁtŒÝR¦Q´Ã–öëÀ‡$÷¤¼VøeøAÿîUâu=L¶5‹ÚÑՄص‚[ ±môc†¿†¨$ÔØ¾%Ù„:éžÓ%ç•óÉöÕhÜ,às6÷fÁ fÞM‘6|q.o;Œ”èCJºõÌWä«“€žSTAåÇXXòpÛ>8ó({»ï‹{1îuÈ0Ý£J°!៨¿ë~ö>[­ÀÎþAôx6zAmssü!J^›Z Þ$ˆÝ2“3ªsÞy6 nÊ¢­€fƒž1›úˆÝý€¨ÊžAÛ°…Z~£‰úf‰A‚Wõž7¢U®IUðvPˆ!±Z˜{£í^û*Q ÅÙCûq9—·:ö ΋D.Ÿ9¼Àm¦|¡÷`ؽ–Ì%®âZà9¢2Ï•c¸Q#ŸöKÓüÝì¬zôó~â^™7ÜÎì…•Aœ‘zJ.TÀú§L°W÷™;%ÁöM~„Ž× ޳y¡Çbæ0$Ä:’ÝéØí¶Ú÷ /ú—Øþ•ÀÛHUª­œù’Ç}rº£€(J^¿æ·ÀýH•ð§YW~ö:Μ­&V¼4#V7Ãìåݘr1uÞ‡‹þá,óEhWöÃ~c§÷97R¿ÃëO½œ ÿYÃoáýè»åKÜ1¦[•²áÿ¸gú)-0‚…ÿÓ|"òjæÖK)onâ ‰£/È1Uæùq@ÑOG¸Ø˜âÚþ@?JqJ‡ œ‚ÉøD¤›ÊcˆT×ø#ÊZÉuÀ4ÍþÞ„P‚L/,R²ÖF‘hR0«æ¶¢Ð—û©¦ˆ®ÎÂK =ˆ± ƸvÙ!&† ®èxeÌ1CÁ"_uâÒÆT¢Þ³n¶œ÷«Ä½TrîÈžùÃC.×as0Á§(Ý{Iƒ]:ÕYo `ž[ƒ 5~Ã_öçFü†‰gh,&ǶRHä{jˆ»ô¼“`¾•÷¶ˆñ¿áeß.Y,Ì ˜q„r|?;o[h ‚ªGral¬“Ó3]DÂÑÝ!Xn#É3Kö$ú\m€*ÔùdiÎö5ösò—Ïú”µÂ£Dy˜ì¯¦½¤$ªBùcÎ{²Z‰QŠÒ®ÆP:>,oõ;m1°™ì”mßP¼‹hÐ÷mñçË-˜÷éѾǂ ‘Q[,ÄHßlä|ßËC<%Ré¬3é†3NØ›r”.ôõ¾ñýYëuDòŸú(huƒN»]›rÒ>üŸ”®Ö^X7F;ÎaÑóT”A«> äfÏ ªÌpÁÄ1(˜ 34õWÏoO× Àö<‹ŽXY¨Äµ_8 Oò‹¹›k|Pðæ…ív_,ÀS@±}kÍûÕ¤¸®ñÐçù1â0 çM 1Ó+@&ù -!ÝŒøhû½^V*Z"=©&~‡©Kh´?Î)] n×úÍ«íºTTBxŒ…Èæ¥ ˆrCÓuàç”&­½œmuð¤Ìg¯4Üìq û!a»FÂÌ,QôB§G¼Çdseù^˜E`^ûù!¯¨ÚcôÂùÛSoÃ6ù‹2¢ˆ©§né-”œÐ„µ7IK v+[3F@ЯV.²G K–Ri )·)ì3ê(²òÂg"fI¢‡0Z+BîçE]+äÆÔáéêóQûû:;d=jFòøJ \5Îí!ýsüàËæÓŸg(Ø”W˜w‹VÇm-–!ø #¨ºÝ½È·¤éIÿŒxî lKµ¨%hÚÔ’Q+Ôó¶Ú¹•ÛµS­þq?ñ v ´;ž‹æÎ }6ó•.yõtPwo÷eÎæA^äI§M¹Æ=ï@mšÄÑÂ*Î!3ï;6òƒqÏ é/®ØùÞ·ˆF óK£W!Z! GF”×®?7ó < À]á}vrŽš ›êFžâ$’^»÷/L±¼†Çc– °úÙ"?Ùèz¥¥ÀsRf–úÝ;8:s÷¼ˆœA³Wø¿÷2§>ðÀŸù²|“•­Ú9$3XOceçñá0!Ñ/Õ6/J擵8˜Ums#etùßGj¹[%Dd¦ žŠóä¼H˜ÊR ˜°ÃŸ:‚ÄÊK| €‡ÚÚẮeMñVOFÕÜÓÉñ™uæ ÇDx@ˆÇ˜pyu]ÄvayX–0ßN`ç3½’LJ€ü£®ÿˆ}î–ŸÊ"pÙ#dWºí«À5ƒÆžWžQz‹³ oi8úJ4eYRÿü2 ÒÞ_'ÉwÀèÖR ùüî¹–7¿¥òÂyHªF¾RùÐÜÌ—¾à·Í‡*ˆ—!lº î­Nç;tƒ…Í™›š|eÒa©ƒÜ‚·î8Dÿèi×0‡}³OS²W\eÇ˲AèD-¥-|PkCI(ïåõ·8LK]óz«›³|ýô}!ñë†ÓMûŽ7úÝ‚Y˜HÿŠ÷¢¡Ðëká9]—ôãŠÚ@Èü 33º&¬ñåW>—]è2ßöªq D¸Î":·I`ľÌü š÷h•@?~9vÞ•Åè<Å~k‚ ^Ve¤ƒ¡eŽãlü½níà'C²Ž ŠñºéöÏá áZä9vL×Á©z8´ ™/!µëÀæ©~Ko~ ĬTàFùSyΜêŠË{Z‡ÏK Ähub!üÅÖ¶5ÓÞ "íb™’®`?ØÆAŸ¥”N —¤ö£ —°º.­ÅΉ)˜¶\P,ÿfƒ¨¢_ìB}64÷ÐTÑD~ç{˜L¹¥]‰j^Ò M’€Í" "`IZñÖˆ:æK¼¦•å.‘e³b ñ–3ú+¹¹õñ`Ñ?¯2M5¤cEM¢¶‹ÂÚíÔAˆ & °¯µo:„•™Þù2Å9ë2yýë‚´´ ‰Aò¹nßš¬© Ã„9Ý~ÔáN>….ÚJTúñw‡—͇{Éy<ÛpœŸ)¤‰L:«‹Lº-zËÝMÿIyÆ$Õ‹j›§4ÝN*GÐWì…ÏÕÎèî¼Þêš [ÚȆ4¬«Ö BƒBV ”š‰*Ü‘¼1´ŠøiÞ1ð¿1pa'Úœfâ4ôé׊DÐ*ýئ­,Œ´xN*=Ð_19k,F]lh¨‚o]FNLoÓ-æ|3ñþ,9‚ÝGïzU3E1~Cë_™9ñ8Š|!ü[Aáßš?w”ëIÝÁwޏ ñQiGlpÝ^ñcóg_[3ù•«XŒb`9µU P¥_}¦Úþö·ø†‘H_ŒR"(wû8I^‹k¥±ñ¨Ðwg¾¸Ö!Þ‹OÃp-0$Ð<pºxóõ~Äç{ŽÊÐÓ¥õ¡‚g·ˆä£CÑ`ÌžðkõÆÞïF0i^¨Ché›K¾ÓiœöjÈŒ²ûB®u¦v1,óÍøÆÿîdóôî-Þ€…ª˜H³\‰nÆTó#M¡ÏÒCfUèž<“ï&Ëá Õ%ïý†ðC^w*üµðØ_íú áæ•¸úÁâ¡JvŒÂ2þ•ÆšöaÞùç¼öቌD3‹Î]’uX1Y4÷Ú•V[3犈\È‹(šr#U#,ˈW¤Á" ÝƒK›˜Ž!ŠÇ[ó°*ï÷F-°ÈÓ §—Hè&#Ç?rÁd9¹Û‘‡E.*„'¼²I•ÙYŠP,ƒmoKÊ¿‚l"!!ÞRûP§ ‘T©xy‡ãëh¶3"ãgÙ‡¡%Ñê—$lü¦1–uÁT&Ñ® ¦yzë4í´ãMGÄ õ_§Ó?ȵÀŸŽÊ–r@<³\A7r0S!ªDú¨þ>•[¢ë)?û9Ï9ÆÇ¾*¦C&‡O&Eƒ3al°ù¥Ü°nËÀ¢xÖß2†¡ëgâæÒÒ¯ܯLWm{ Ý ðvMwüî† ‰Ça•&¯ýºÁ|¤ý޳v:±µ%S'ŠÞs÷è¯ÜÓWô1dN±ð=|sÐ §þî2&X³Ñ§ˆÓ#_`¤ iá÷Æ5|Ô’‘‘º2ÂǤlÝȤÆãñÃ&û´úõ 3,PI<2‘cIuãð u2è &ÇV•€=õ±ÊZPìÎ9”#|”ýâäÍ;!2º%g&ô“RVk¶;ˆonaTÉz7k¦[E82ã‘%Jiþ÷àtç'Â{xnéÓrÚ S­ 4³¥_Êt{l›ÜèS¨u4i$}Ì|‚íÓ*7;nªC^N+ŸÇ Й=hïëùb´Y@OqÄ##Êâœ2¥Óëmjdבá‰Þ$ ôl&.vëÜ­/O€}øÆeïàV¥û£ÈßÕÍó‚=ëª1 ‹Ád% žbJpPÌ5w‹Ê¸. EÕ ¦î&vLIø%èªl{8ý^d` ±$’à÷ÓÔ )r:øSP‚>c‹¤ÅD•uÔf[ª¾ª3æPŒ@ùݳӹäÆs<•«Wš5ùQ¹¦K !ämWB.4hër–ðT¯Ó€­-£Û°e÷È—°1œqŸ½¢0É0i&m Êþö^QIT¯yY]Ïk‰_R(£y8Ã6™E[ã†úæ\Eÿ-m}ÔMñôÏ7—÷ã:¡uP½v¯ÐÈ5Ýl½vÛymà p„"‚DõýÑ\ô.3:ê| ÄÅܦs±™T1gá·«ÔMë6Aë¯ÇàÊ`LúIöŠÐÁ9Àd‰äMZp<² ù¦hSq|´û[ÄpöÞc,3B€*W}/)½ÔPXаY=Ø} (µìÎlŠ'ut MŠtχ¼‚öŠÅ8½+¥ô•ØH ê2â&ÿÖ7j/e]t§SÕ…³ö&ºzónð0w]Ïxjø=TÖ&)›ççh’0'â[·G"á­óCw hÊY¡•7’qÿOièSIXM7%ì¡×ßÒÒl@"aWA«MÉ=t>v´/Ì)Ó¦„âBtÛ/¼o‰ÊxC¼ Wùš"’)»oûíÊyQø8~l iNòö¥–@l¯¦¶àf¾šй-¨³×x‡ßªJ„è:®2m¹YzŒ÷jã®ZÓðva²­0N­¡Ø4Ðêö+eÈ¥šù³ ÕºžþQÞ$ÝØ^åDÛY0i$‡3³&äÐð=s¦P¼³½nàŒÉí ãñì¹Q×-ÙÓÇr=úù4°z„¾§Dù&¢ìŸX•h×qý)O—©¤»Û¦YŠdgXb4q>ÒjàêB¤¹¬«,· ÷~ëoÐ ôì´Ï±©“.·s[ÙÊe'¹‡€ëd³Š;¼?„Oãò ܪãÆô-³ñÕ$—Ói¤Zð(2x‹pFϘ£yLŸ^Œá%Â8²¯ÆŠ øl=öZ´ð#–†~ñ;é™H“›ð+¹Ñ²*M„.úñ¥8 %åÝu~Ÿn“¶sÞ‹ÈÓ%7bõ¯2êAU}†ÆíY!ÅS«òQø»@ç¾r µÉ¥ÐJÑ+@¶D™™}/ÈÕÀ4ÆBÂ~³¬tË+ŒƒÉY“PøŠÍÓh·î^¤PÕßkøß‚–ÍõjàãTshbq8•‘Pë‚bu9ÞqBÜ»¨ú·ý+Yáx‚4 á$j‘íÃÙœê&~~—?ÍÁ¥]œd*öј4Úƒ@-ÏŒŠ+ð×'eçR…c^·!dXÞD‘˜löXãÿ;ªìfO^MŽÑ%+ÅjÐ^ÚÀŠ( Õ)˜Ÿb\aŠ'ËD˜²X” õ`Éøg¡ÙIþ¨Š½DIh J~çÀ—­ B H>ý$¤“œÎWl1õ(iÐ[’ætÅyn5Rœ‘=¾¥q (Û5_¹—&Ôl—òáL»é¶½Îcz†§dÒ]BëG!>à,¼åµõO‰Äß.YyK +ÀÍ·êf§$U‹ä¦ÍŽ•Kb¤aš´Î.;Ë#¥#^åé« ¯˜fÍzM3&±/ׄªV+†€Uøl‹ùL Ñ|ž½júad›< RAÅΔò|í†5o¾¼ =idµÔSâvúÓ¡šrF¥¯Îþ? ”aEQGS~ù>?˜‘*Çó&ùZ'MŒ5 Ûaz{Ê÷Í*ãqº‘ucL&@¯´¡Öh­ð„QÞ8²B'J” ö=ÒS)÷f2»¦FÏ„7+&›¡¿î‚3ÝñïEŸÝÃŒ6OæùìÚ·„{KûÅb:Z®s«ƒx39‘¯Ô,i£9ÑXsÚë6ëÕ¿ ‘Ó6º ¬›Œõ|EÎü òf |Ì3øÀˆ‡Cɹ:ÊöìÒ„J E í'¹×‹q»¢\ŸçFð)IN< U9¨ Àsb•)q ÎžŠ Ó¾inúžRÏà:¤† ·…6E\$W–´k ‡ë©Þ<šƒa–Cþ÷YyÏ dk7úomxÿ»:!y‚¿£øP´ÝæÆ†vëiF$Œÿ< {L÷yuÆ&ï¨ãƒÍ²A5yþú_"G<„Ò‰DŸ›H}¤#Hd_«Ǫ}ÕÁÍëvøN_Ûòmr'BóJÓ[º…¦ÝG\DðL~1Õçü΢´­3lbô…ƒˆO;‹Ó®*+3ÿ…™4W¹7×-j·7 Ÿ3¿LÚ|Ä +Ûj!ˆ{Ý'zƒ/â >žê$ šCÍÚn†x‘$Ë/©w„QBàõ±\%üØî©ó‹™—¨ÕM\™0+¸10ÚÆ$¹nqÊvnÄ›;‰±à¡‚š¼Øg4¢yðT€§ €úP¡fÎs— ŸÛ³É°ÉÁ—S~¸ë˜?«¬r˜k0¾ÇDæa²ãÆÞ¹²Á5­q}Äá'ƒq–K]I¥3edu‰˜;À2'vÇU„U￵OçGpÙ3X*C¦^ $íg«óY5´g8¸Õbí¸ÿ:í»Êg„PZé:DC™u3H4PÔ’1úÖéÿ¦³‰›ñ€¦xgïÙXý¦í¦,õ°íŒaKq€m¦ÏªÿÁÊ±Ô Ü¦3@W|€,“0gæd˜ßä³ÍiaCK1JâZ§­,áUEZŒP%lî¬wà··ºÄqñx·„½äi’I¤š› =‰xøÞ¬@ˆÅ9 ³40ã1‚èðÜ5 “Ƙž:S=Vè¾y•¸¶Èo¤Œ¶ â%@¢a}!Ûìç#Z&§Õ"æ7}ϲRÝÜ*«¬›&¿VŽØågp{¢9Dæ·b1™2ŒÃ£5 ØŽ7ò u#;0ZÝ Êr¦ÈØG¦½®D3¨ŽJ¼‹ýS^êV”¤BÛßóÅ›¡­J×R&ÌÚ˜ñœÅT?Ðä;ëêaiQ©‡C­ÚŽ;râ1ìÉ=î³é¾}عÌÏf~sõWuXÎ?}žUrŸ{Ķ_€Û뙄6u§Œä5 e;‚•›`äÛ=†%úl,y ÏÜìÝiò!Ÿ&¸aFaÕêè,)Äç8S¶ø³îÓ8KÏ?âÁÙ†Ï?Ç%|—h] ´ÎGd%@÷ÉqÇÄÍ%î«»­ˆ·‹³]ÎBõ…§‰’*‰‰¯ûXk ÆAz»ºØT'…&—è–âœo!T„éÞI£î.ßñ ÕÇëïÀi~qy¸²kÔN¨ÄLú³9Y–¸ú:1š‰HBúé㦀oL;:ªãɘ“:S×H]™úU; ðæHnì›ã76s,Ö”æj™YKÍ”×Ï)yÑâ]¡Øa«O®RÆ«¡Å r™¯t¬E^Vj·Ëôóvã±Nʳ÷’Mfêÿ›çUý‰†#)¿Î†& à›‹,@ãƒÕ{VrïPêæ™‘K¸Äê |=Øèì?ÚPL['+­&xbIÝ,0Øš¬ýãj¢±ÉØ]¦%þfŠõËlj –wºžžg›'¥)cÈà8Eéó"=X…ÇÁvyï“Q_bka²ì¼^hIf¢ošñ<žóÅ£ü2 _>GeÁoE-X»êÍŽ®×Á<7ª6Ó}´M. ÜÿÅ¢ôƒ†Ä¹®Z—ïL²bqÄ›À¥¾˜³Mš›ø'TGX$6¥ÊÖ_Ǽû€íx4ʤ])-±Ü0ïľȮÁY4йxˆöîa_ÈÊ‘ËC©;£ƒPŸÉòrcGœ„gjÓ˜ªs”ǩü¢Zî½4ÎuŽváÄ@˜¤&‚Ë›ÿUXš®·L®K3†½Ý„OÀNç°Ö ­§Ê²NÈعš‘ŽÊ£ÅSˆ¯ñô.¢7%  sƒý†tøÇnr»¾eÛg³4<ïÓô7ŠmBúíÚq H1qUÍBóý‚o pÈîHÿ_›ã¿$I ñc-ü‘…‘Ã8ÕÏUK†£½š§!³K°¨$˜$ò\èÅS)x¿o‘N{Išê"¡Ø×•¬f’pŽÑíâk;O¹}×ãˆ(f'mL_wò-± íZí¨/Ú¦v†«ƒ‚æNšŒ›*%õ¶ìl@Ú¾H¤'sn‚ôxW½ÿ¤¾ý´ÿ<¿÷m³ÃGWCR#’‘Tv]ítq—b—"±}¸ÏgOo±ÀÉhzaÈñÒÖÌçƒ^Ó§“›¬\˜ÆÜƹòŽ ÕgÐ Ÿ·¸wž _¬˜‡0Õ©VJ+"•Ø(‹« äN?DFIW=t…|Àc:rç+@:‡¹â‹[üie@£ÛýàŒÇh·J¼¡†Ä*±¡Õ ã0í¯‡.Pfò–|jË: Vz¦-:Ç2êv^‹ÓDúµ MVã¿¥„L½o0V˜ã-™üŽúN—ûÎíê×Î ˜UJ dÛV˜—E5ªÞ‡^G¿ù`ŒHϪ|šQóþ>§î™«ÿØë•<prü!{]8}j/€¾Ïª:g#êà^´Í‚ ¶i‘t¬ðôæJrJŸA;Hz[‡¥ \ðÑç¹c|à Ï/Êß¶ÕÐbC wø-߈ÇïÏ»Êßýéí1¬€š+?…¤šÚKöf 1 ”ÃÓ–Ô]_©†_<Êuÿk,TÑ"_x¦Ó~].NÍñE·‰‹¨ ¯î¥ÈÎìŸÍèôZëϸ¾…Wm‰N0ýW'×Ìêlé—ÀÞ ^çjIñ o¹ÃD؇‚{ƒã¸O\Zƒ?³;þ©ÃÅ'ypÛÜ|úéë€è¶:A.ßEKdP‰ÏúP±äºqŽ$ç¨"#º§ "ãÉù–˜E22aKr§ùw‰”Xîhr‡«d¾âáfoA~y&ôD$Œö-·ä)æOãæÕ ®FŒ¶ VííëWÕJôM÷vè–¨ üÃù˜â(ǧUÛÀ\ ´ÊGúѯAYø:P=P78-øHð4Im²ÞòŽJrµ3ÊjÝM}`òUƒ%Û~ ³ˆÐ‘ëTÇ6ˆ:ÒÕÂLlî HÉ“{•˜]5kÜwžª:—>•BŠUÙ´Ô ìÈx}¿ôóR) ¬ ‰˜ÐË[QæßÖ1,Ü¿þ»Ñ× åO•»Ñ ËŒ’‚DÍrT'‹¥CÉ–ÄJ˜ôzl¼ÉÂXª–¡—$ª–â¼X":ÉŠînìli®'@n01šÙ`ýÁ3j%¤":NtL@ )H¿Fê.»îr E¶ù¨HUp'w*ÿâ¸2îcÚø—Ê©ÚÛÜ%½`j±zͳ¼22õÊLSÀègŠÇ•ÙžtÕ’¨}Ú”uVG³W8WÁ]“Ó˜ßJé*±•Á³°—Çq^ú¿ožÞ¤ð[/:žHPþK‘l·Šàë–<9›#kÁcoÙ„Î+ÿ±„ÄE3àíMÁ®žåËùȨ†Û¨ôVµ_ ®/P1ߌÓVŠ¡¦×"©kÔº‹ð[GìW!UN2®0B”òLpLК-l;6{GžþÝ~ø$ï?à›Ú.{Œ¨ñÎ8f¡*T¹!Ø:äÄ…€>2ÉEÝ4YµEö‘…ÔÄj¯j¾šÌ}phÉ:T@ QÖ–l™ýéƒÕ4'd1¾·< —°¨øWD#‰&(ìžóB{@¨¦ŒídUî6¿ ·çG$vÏ*ÌÂ?8ÁÑS¶Üž°×'S”ˆûD©ZGñzËSˆ:À¯tŽ ÍÌ%ã‹|•*د´ébš\P} “€étÙ³pÀ+;|v ÒZ¨N‹x·’´ôZÖþ”ħ"(C8`¬ý|DŒPà¯ã~•Ï…Ì8ê* Ó†Ï.Mé*"pœK厴ãs¯ˆ<®ì[/2»`á~JºÍUÖŠþ{*·ë¥dˆ:”²õCÿa¤e›èæ6Ä{™âúèÖ˜àãÄi¸Þoâ×à3 #¦üqas‘ÐV‘B,ý÷Õ‚ qž"r–­Á«#·S:Kè¾eØ3”¼öŒt_òÓ§;Ì£Òu¹—³f)?f䨵$Ã6Ùp¨%ûé&ªB¢„?ö²™îäuH>@óBüoÞf#È z³—T@huÕáÛ}åÀñrÛΑ2cN]6FóŒ¡d· !”á“Ãì’û–\A¾õã—qÁWÀ¿:uá¸Ir¦çè ²]S¡‘\Å] žåƒ`éÑWt%=X~ÈÓ[éÙRë†ö„èKÏŸg±¦19¨ÓÁcPb÷¡÷dÁ¹Í#¾úâe¶¿¯ ¥lTû[…œê@ˆBsVùŽ=1àVõˆ¤ô37:Ž>ÔûÒmï1OÆGÉÎsÇrד@#1àaqÉ_úfăàÚ'+¹c*|={ž¦,¢AëN:¯7Ó´U[šJÒ°R٨ב£ê(׬ñÞû[é ¬“ãÞÈêôkQmRCãŽJ$Q†hèt÷œ:s¦Á¦ôcÅí@<9 éáÁÞ{EqÔNàó–׈N¸ü:X ¼Pôƒ„÷ìÛáÛÑ êß$…ׯ:q,êc1ùttØæ¨ræìžÆÎ6(Q¥y¤URmEó'eîSÒjÎN³ñ@[·CF[*µC.Ó绯±–s÷?ëQ1iR!¢… Å…&(Ô†A ôõÝô’B6†‰9yl½µ´å]¢ª+•2£SÒ NËUñøçÓëÂÞZCnšª‡±¼ÉŒ_ÕrWZQ6Ut)¬à5¾x&Úº„ùA!ä6ŸÔ›dŸ‡Ñ³®e+ÙjÇygÜM½ f¦‹—OÿêdÒ8wïCâÅo.IÔØµ,r»Î#vsýÄýd€Gh½êܤ;Öò²yõõƒ?1`êªYÚ±ŠÙMàý~„ã”f¬• 5£.'•{”" Ð5(ŽÚ2úâРÙoâÄÄâÉçqë±4RÔ‹Š±G­P¨fËz+ÔVÑ=Í–“ ¤|…çküe8OW†8Ø(–`èÁÃγPаï-¬â¿È¢˜t÷1>·C(éš­µ¬™ÄvK¼~(<gô{>c:wt|Ú#Qg’<ö¤3íÁ‡& ?‘ÌéK"H\;£.m yÌÈÎÍÏ÷3¹Zë³9Ó:¼Š·{ø jac°è>ßH@Â÷Xæ7=&mº2ùDO GážE\ xŒ§\µñuˆ-9#$µñ†2# ýÚÅvnçrè}¨Í†#õnoðPæ2Šk]x·/Ä—U?ø†ó-r€[ed4­Ì„@“Ú4ÿ‘fqjéó͇mK‡/´ê¾Ù¦Ìj9äj–KÕ±þìàõÖ4¯¼ Œ¨c”ëïÖ Ú ÙðnC¨fGV¤Yã@èK1SZÆ‚x™MóƒaÓöBjò -I=gèAòëkxf} }A¸=Í++¿ôGEÝ›æcÉ;ãcÓâ§C÷&š£Œ Ë(à3¤Ê{'…îÇ4Ú¶¢(ÅÂ<=n`®kØv’Ç=ɯ³j<íbÉ2#ä]ŒWÅPWŸ5:]gɧ’iÌð æ¤p;oÿK½ÕÐ8†ùRàAy&eð èП2ü|ÐZ†\ú˜ÌÜaPWg—° 1è¼ã_ˆS¾§š{] 5u,q£OÙH±vO±+˜«‹½bE½ÓJðY€(«£*ñ3H[í}ñ÷=¹¿6ÚD Foù¸~ŒoØ””œ»¥ä°d‰#3ŒÅ#Ë–ܔ쎀¹Ä¯4!{F¯î¹…å ñÕè¹ÏEu µ­MBc¤ªáL í8»m:•x9÷ä+‡Gã¥QÍ”Ô `mO*ƒ˜»¶£Á«Ô_;‘@ ¼Žþ«ÚÌKB@_©-”œA2rÅ„}¯°s¾Ëɉeg‘ŽÂzΉ ðÏÁ®k ¸¥]öÜ[?J·f§ŒÞp¤ &¶0Ó”¼p‚KÝÒxýKG¤Îíø’ÈѬ!-rЕk§?†bßm°¤0Dý·÷¶$ ,]_1pô¨BcfW†¢ o™¢ˆø8+*ÙÌ“¡­ž ã铖ϨhP4Õ `y]G‘±Zrk°Sôv=¢ñ‚ü°S^DMêL]ØöçakΖ§E•xô.T´—T9õåŠâÖ£'–G«âlÏUÀÕ0õØvZvÞ1Šr4蕳À¹Ê©gœÃåÇG„Cç~C¥„·¼+‚Šl”™HÝ•œ#j'…v­±B7Éδ¸âì½gº‰§©"-Íþ™Â(Ú®€ÛÑëÚD¤V&\%©æ°Ð+S¹2úΰx¹Ñ…"Qà­h.ÜÍönkóéÌk_ ÆÉA:ÞÏä=NC`sâÇ?‰P ¸e•Ù ã‘gºð£úb³ª}~ûeö ñ‰ï{ ŒÁ¢~ÂM§Í‹¡Ý„]ÐBtõ+¨ å/#zsxò¤ñ! ê**WÃm8­dqê¥P ÎÛ°üF6Ü©ÕYs<¼ÉzEX>×:rÚ¸ƒÅ0 ¿¦».ä53Údózm‚MVþ£É‘„*K{Þx¥Íq7€b[ ®4<ˆVoíKÅ0VvkJÍ`›¼Þƒøg]æÖ3g/¿8ø—A~\þà>ñ¨H»ˆ>+¢ç[Zý:u|Ç,'Wìy~€ ^àÁxß ¨ÌD`kÖ(I*h°·u³'Ë¥L?¿)^ÔS .rn­™ˆ°*g Ö¤¹S·ïêڶʶï Å鵎6&86êM´+Jð` IÞø—Xè)dhâë£vA€2$a¨Rlª´b±>ª·ùÍÏ(Ùáö@«ÚV ©f³‚¯ .h¸ëüfæYœtZdÅv¥q“wL(™, ‡ýJàݵEpE¼§žé‚v BÊqNãß 1g€‚Ä](Ÿ žñv!s#üF^È­UÔ§ý·Z ^S…I³Ì¶Àgš”«6€™¼÷ßðn½3{Þ`¯v{óy˜j¨H£>.Wý‡-ÿy‡—öæŒõÌ÷2i‘\ÍÅþÆŷsðouB˜jÒ¯5€ÝH¡ÅÌ‚ðÀýšFÉögHðK“išÏ4W^ Iøæ`Óþe0˜Ã¾I]è<¸Âj[/ ²Ú®E„oŽ ’­GþWÄ‚F:ûT4>8``¤ÞàßJSÙL°¡AmF$߿çRr‘Á5f´@óãtU7þha3\c…Âncb„oºwÜžrØsCvm¥( fûó`Œ0ã$Pêw¹•E O¥°s™Š§ ­´ËÐÜjÚÜ‹þ'×Ï$þ¡˜~Xu1ЧZ$Ò£]F~­½?ï*©­h!fd$qÏOc‰÷f0´TC'Ÿxä<­S*ƒ7ÿËôy9éè°cCª¨e¼ôjÌhïsí•SE6"+å\EÅþË+ŽMé±þ'e0ú!¼²Ku¾±ºÃ\¬¼¦2.mºˆø"%Í—Œì¹Ó¾ÈÔZ+ª ÉÌ3‹Ä gŒì}*¿èÞjal6‡˜gfà£[tð“;þU¶è‰/‘lèw/—q(î¶¾¸+uE¤–ùjë¸ÆèöKóÍ’䀱ƒ4PÈd>Š#±Õª ©¶Y]h} {› ‚)ö}’‰Q‰ ½AD¶<ñÉ®]¹Pk>™ºñ‹`É-§)£šÀÕ*Ö’Éöï4Ÿ¥ é:f†’Û#àvGÞ>:¼\èô|Ò…€h¿þØÝþ ø¥ìŽEüîCÞŠ?¥aH­K%À ™Ž5æ¾`$ezÜÃ1¼OÇÚÉKpÕÕãÄwAJþNz̼%‘ª˜?sG¨B:VÂ…ô¶±Â&ò;…ªÐtî¢úH,JÙÜw„ÅoKýÊŽa9µR ´~•â$ª‡r;{×|„¦¬Ð[í6j ·w¾6ã6ŒYÕ¦¦&ÖëÀHÃ&HºË|qs[Tõ¾xÎ857î…Š/þa‹MÂùIޝQçŽo•ƒ!Ý@Þú×ÌŸ‘K1ç‘Û¢´K4'ÊgDyÉhÚI?TAë[ˆ¥±¡©?ÚbUÜ•‹ÔPÁ£ÐžJÕ]Sx‘äþœ¹Ü—^ÀæV3”¡‰ÕÁKíTêB8¾ ”þ™zAÁ„+£V ³Á?|Ç"’}ü=HúÂAÿ'12ð¶ €5¦²ß_ ./éù#ö¹z¨µþ~c8«²výÝ…âS¡Í6¸õLžÏûX ¨Zmiûµäà ïÖ(Š/Ža BÛH]¢¹‹MÑïÈþJ|8͸ˆ/ë9óúÉ‚@BÄ^=“Ñ|¬Ì•Ž÷úR¹ù¯>Õ^ •¶^G-a Ò¬s˜‚; ‰³ë ¹Ï­¨Ñ' ™ÊÉ”;{÷³Gò ëkÜ×=ÜóË2o· ^ âHØÁ]`"vRp\TÞàƒ¹xJ®DLM;÷}°9À‰}‡•T!‰¶.¥šµ³å‘äÌi}‹°~øužöøˆpFmu¯Fl;ô ‡eÙ™/»É Ûål³…Þ$×ÛfP¤-ö7µ"~AkñÊðZÕ¾é‰ÒRC¿æÑwÀÔ‹i^@ùûq.Khm¤³Ì휮SSG†Öµ…Û¹Ä\I{àÂDʯ¼ÍýÜ?¥xÜÓnbthuPæ|Ï‹VÎ{&]‰TvP«{6¸Š+áƒ'÷,ÿå¦gÜé¾Ä*æç˜Výe]®­È™´uÈ©3óÏöq6#S“'vH§ŸˆŒ›-`ÇÜç”ÍÕ•ÛïüXçñ²õfgÁ|ÕÑŠù;œs¯û[j<)Xn±bò1EÄ•;ºü‹¥¼!¾/6\™êlš)Ë<Š®E< xc®W2¯™€!Ã5}pÆÖ? »rþéµ­Ðà{sÒ¦ã(© Éáø š&‚:«35šd]J”I¹}ö Gü ]kGr À#¢Ÿ»ôóS¶Ã–ñfˆ}4y%r7?虺]D>0 ‹YZsurveillance/inst/THANKS0000644000175100001440000000054412602476512014664 0ustar hornikusers## The authors would like to thank the following people ## for ideas, discussions, testing and feedback: Doris Altmann Johannes Dreesman Johannes Elias Mayeul Kauffmann Marc Geilhufe Kurt Hornik Marcos Prates Brian D. Ripley Barry Rowlingson Christopher W. Ryan Klaus Stark Yann Le Strat André Michael Toschke Wei Wei George Wood Achim Zeileis Bing Zhang surveillance/inst/extdata/0000755000175100001440000000000012417315677015410 5ustar hornikuserssurveillance/inst/extdata/h1_nrwrp.txt0000644000175100001440000000344612003774136017706 0ustar hornikusers"week" "observed" "state" 1 0 0 2 0 0 3 1 0 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 1 0 10 1 0 11 1 0 12 0 0 13 1 0 14 1 0 15 1 0 16 0 0 17 0 0 18 1 0 19 0 0 20 0 0 21 0 0 22 3 0 23 0 0 24 0 0 25 3 0 26 5 0 27 0 0 28 1 0 29 1 0 30 0 0 31 1 0 32 1 0 33 0 0 34 0 0 35 1 0 36 0 0 37 5 0 38 2 0 39 4 0 40 2 0 41 0 0 42 5 0 43 2 0 44 0 0 45 1 0 46 0 0 47 1 0 48 1 0 49 0 0 50 5 0 51 5 0 52 0 0 53 0 0 54 1 0 55 4 0 56 1 0 57 0 0 58 1 0 59 0 0 60 0 0 61 1 0 62 0 0 63 0 0 64 1 0 65 2 0 66 0 0 67 0 0 68 2 0 69 0 0 70 0 0 71 1 0 72 0 0 73 0 0 74 0 0 75 0 0 76 1 0 77 0 0 78 0 0 79 0 0 80 0 0 81 1 0 82 0 0 83 0 0 84 0 0 85 0 0 86 0 0 87 0 0 88 0 0 89 1 0 90 0 0 91 0 0 92 1 0 93 0 0 94 0 0 95 0 0 96 2 0 97 2 0 98 0 0 99 0 0 100 0 0 101 0 0 102 0 0 103 0 0 104 0 0 105 0 0 106 0 0 107 0 0 108 0 0 109 0 0 110 0 0 111 0 0 112 0 0 113 0 0 114 0 0 115 0 0 116 0 0 117 0 0 118 0 0 119 0 0 120 0 0 121 0 0 122 0 0 123 1 0 124 0 0 125 0 0 126 0 0 127 1 0 128 1 0 129 1 0 130 0 0 131 0 0 132 0 0 133 1 0 134 0 0 135 0 0 136 0 0 137 0 0 138 0 0 139 0 0 140 0 0 141 0 0 142 0 0 143 0 0 144 0 0 145 2 0 146 0 0 147 1 0 148 0 0 149 0 0 150 1 0 151 0 0 152 0 0 153 1 0 154 0 0 155 0 0 156 0 0 157 1 0 158 0 0 159 0 0 160 0 0 161 0 0 162 0 1 163 0 1 164 0 1 165 1 1 166 1 1 167 0 1 168 1 1 169 3 1 170 1 1 171 0 1 172 0 1 173 29 1 174 17 1 175 11 1 176 2 1 177 5 1 178 5 1 179 6 1 180 3 1 181 6 0 182 2 0 183 0 0 184 2 0 185 0 0 186 1 0 187 0 0 188 0 0 189 1 0 190 0 0 191 0 0 192 0 0 193 2 0 194 2 0 195 0 0 196 0 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 surveillance/inst/extdata/n1.txt0000644000175100001440000000347112003774136016462 0ustar hornikusers"week" "observed" "state" 1 0 1 2 0 1 3 0 1 4 5 1 5 52 1 6 0 1 7 4 1 8 1 1 9 5 0 10 2 0 11 0 0 12 1 0 13 20 0 14 5 0 15 18 0 16 52 0 17 0 0 18 0 0 19 0 0 20 0 0 21 0 0 22 0 0 23 0 0 24 0 0 25 0 0 26 0 0 27 0 0 28 2 0 29 0 0 30 0 0 31 0 0 32 0 0 33 0 0 34 1 0 35 0 0 36 0 0 37 1 0 38 0 0 39 0 0 40 0 0 41 0 0 42 0 0 43 0 0 44 0 0 45 0 0 46 0 0 47 0 0 48 0 0 49 0 0 50 0 0 51 0 0 52 0 0 53 0 0 54 2 0 55 94 0 56 34 0 57 3 0 58 0 0 59 1 0 60 32 0 61 0 0 62 39 0 63 15 0 64 25 0 65 1 0 66 0 0 67 0 0 68 5 0 69 0 0 70 0 0 71 0 0 72 0 0 73 0 0 74 0 0 75 0 0 76 0 0 77 0 0 78 0 0 79 0 0 80 0 0 81 0 0 82 0 0 83 0 0 84 0 0 85 0 0 86 0 0 87 0 0 88 0 0 89 0 0 90 0 0 91 0 0 92 5 0 93 3 0 94 1 0 95 1 0 96 39 0 97 34 0 98 52 0 99 36 0 100 11 0 101 2 0 102 50 0 103 2 0 104 2 0 105 0 0 106 0 0 107 9 0 108 7 0 109 7 0 110 13 0 111 31 0 112 3 0 113 2 0 114 7 0 115 25 0 116 27 0 117 1 0 118 5 0 119 13 0 120 2 0 121 0 0 122 0 0 123 1 0 124 1 0 125 0 0 126 2 0 127 8 0 128 2 0 129 2 0 130 0 0 131 1 0 132 2 0 133 1 0 134 0 0 135 0 0 136 2 0 137 1 0 138 0 0 139 0 0 140 0 0 141 0 0 142 0 0 143 0 0 144 0 0 145 0 0 146 1 0 147 4 0 148 14 0 149 0 0 150 0 0 151 0 0 152 1 0 153 0 0 154 0 0 155 0 0 156 3 0 157 1 0 158 0 0 159 0 0 160 0 0 161 0 0 162 1 0 163 1 0 164 3 0 165 0 0 166 0 0 167 0 0 168 2 0 169 1 0 170 2 0 171 0 0 172 1 0 173 4 0 174 4 0 175 1 0 176 3 0 177 1 0 178 0 0 179 1 0 180 0 0 181 1 0 182 0 0 183 1 0 184 0 0 185 4 0 186 2 0 187 1 0 188 2 0 189 1 0 190 1 0 191 1 0 192 1 0 193 3 0 194 1 0 195 2 0 196 1 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 surveillance/inst/extdata/salmonella.agona.txt0000644000175100001440000001046012003774136021353 0ustar hornikusersweek observed state 199001 1 0 199002 0 0 199003 5 0 199004 2 0 199005 1 0 199006 2 0 199007 0 0 199008 4 0 199009 0 0 199010 0 0 199011 0 0 199012 3 0 199013 1 0 199014 1 0 199015 0 0 199016 0 0 199017 2 0 199018 2 0 199019 0 0 199020 2 0 199021 6 0 199022 3 0 199023 2 0 199024 1 0 199025 2 0 199026 0 0 199027 1 0 199028 1 0 199029 3 0 199030 5 0 199031 3 0 199032 4 0 199033 3 0 199034 6 0 199035 5 0 199036 8 0 199037 6 0 199038 3 0 199039 6 0 199040 2 0 199041 5 0 199042 2 0 199043 1 0 199044 5 0 199045 7 0 199046 1 0 199047 10 0 199048 3 0 199049 4 0 199050 0 0 199051 0 0 199052 1 0 199101 6 0 199102 0 0 199103 2 0 199104 2 0 199105 0 0 199106 0 0 199107 2 0 199108 2 0 199109 0 0 199110 6 0 199111 7 0 199112 1 0 199113 0 0 199114 0 0 199115 0 0 199116 1 0 199117 1 0 199118 4 0 199119 3 0 199120 1 0 199121 3 0 199122 2 0 199123 6 0 199124 3 0 199125 4 0 199126 4 0 199127 8 0 199128 12 0 199129 9 0 199130 17 0 199131 16 0 199132 8 0 199133 6 0 199134 13 0 199135 4 0 199136 7 0 199137 10 0 199138 3 0 199139 11 0 199140 4 0 199141 6 0 199142 4 0 199143 7 0 199144 6 0 199145 2 0 199146 9 0 199147 2 0 199148 3 0 199149 4 0 199150 1 0 199151 2 0 199152 2 0 199201 0 0 199202 0 0 199203 1 0 199204 2 0 199205 2 0 199206 2 0 199207 5 0 199208 0 0 199209 0 0 199210 4 0 199211 2 0 199212 1 0 199213 3 0 199214 2 0 199215 0 0 199216 1 0 199217 1 0 199218 3 0 199219 0 0 199220 1 0 199221 3 0 199222 2 0 199223 3 0 199224 6 0 199225 2 0 199226 1 0 199227 3 0 199228 3 0 199229 2 0 199230 2 0 199231 2 0 199232 1 0 199233 3 0 199234 3 0 199235 2 0 199236 3 0 199237 0 0 199238 2 0 199239 4 0 199240 6 0 199241 7 0 199242 3 0 199243 1 0 199244 4 0 199245 1 0 199246 2 0 199247 5 0 199248 1 0 199249 3 0 199250 1 0 199251 0 0 199252 1 0 199301 3 0 199302 3 0 199303 0 0 199304 0 0 199305 1 0 199306 1 0 199307 0 0 199308 1 0 199309 4 0 199310 1 0 199311 1 0 199312 0 0 199313 0 0 199314 1 0 199315 1 0 199316 4 0 199317 1 0 199318 0 0 199319 1 0 199320 2 0 199321 1 0 199322 4 0 199323 3 0 199324 3 0 199325 0 0 199326 3 0 199327 5 0 199328 3 0 199329 3 0 199330 4 0 199331 3 0 199332 3 0 199333 3 0 199334 4 0 199335 5 0 199336 7 0 199337 6 0 199338 5 0 199339 3 0 199340 2 0 199341 1 0 199342 3 0 199343 2 0 199344 1 0 199345 2 0 199346 1 0 199347 1 0 199348 0 0 199349 0 0 199350 1 0 199351 1 0 199352 0 0 199401 1 0 199402 4 0 199403 3 0 199404 2 0 199405 0 0 199406 1 0 199407 0 0 199408 3 0 199409 1 0 199410 1 0 199411 4 0 199412 4 0 199413 0 0 199414 1 0 199415 4 0 199416 2 0 199417 0 0 199418 1 0 199419 1 0 199420 0 0 199421 1 0 199422 1 0 199423 2 0 199424 5 0 199425 4 0 199426 0 0 199427 2 0 199428 1 0 199429 1 0 199430 3 0 199431 6 0 199432 1 0 199433 7 0 199434 6 0 199435 2 0 199436 5 0 199437 7 0 199438 5 0 199439 4 0 199440 5 0 199441 6 0 199442 6 0 199443 1 0 199444 2 0 199445 2 0 199446 5 0 199447 4 0 199448 1 0 199449 6 0 199450 2 0 199451 5 0 199452 3 0 199501 4 0 199502 7 0 199503 6 0 199504 10 0 199505 2 0 199506 4 0 199507 0 0 199508 3 0 199509 0 0 199510 1 0 199511 3 0 199512 0 0 199513 1 0 199514 1 0 199515 0 0 199516 1 0 199517 0 0 199518 1 0 199519 0 0 199520 1 0 199521 2 0 199522 2 0 199523 4 0 199524 7 0 199525 6 0 199526 1 0 199527 4 0 199528 6 0 199529 4 0 199530 2 0 199531 4 0 199532 5 0 199533 5 0 199534 9 0 199535 8 0 199536 6 0 199537 3 0 199538 2 0 199539 3 0 199540 4 0 199541 3 0 199542 3 0 199543 4 0 199544 4 0 199545 2 0 199546 1 0 199547 2 0 199548 3 0 199549 2 0 199550 2 0 199551 0 0 199552 4 0 surveillance/inst/extdata/m5.txt0000644000175100001440000000344712003774136016470 0ustar hornikusers"week" "observed" "state" 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 0 0 10 0 0 11 0 0 12 0 0 13 0 0 14 0 0 15 0 0 16 0 0 17 0 0 18 0 0 19 0 0 20 0 0 21 1 0 22 0 0 23 0 0 24 0 0 25 0 0 26 0 0 27 0 0 28 0 0 29 0 0 30 0 0 31 0 0 32 0 0 33 0 0 34 0 0 35 0 0 36 0 0 37 0 0 38 0 0 39 0 0 40 0 0 41 0 0 42 0 0 43 0 0 44 0 0 45 0 0 46 0 0 47 0 0 48 0 0 49 0 0 50 0 0 51 0 0 52 0 0 53 0 0 54 0 0 55 0 0 56 0 0 57 0 0 58 0 0 59 0 0 60 0 0 61 0 0 62 0 0 63 0 0 64 0 0 65 0 0 66 0 0 67 0 0 68 0 0 69 0 0 70 0 0 71 0 0 72 0 0 73 0 0 74 0 0 75 0 0 76 0 0 77 0 0 78 0 0 79 0 0 80 0 0 81 0 0 82 0 0 83 0 0 84 0 0 85 0 0 86 0 0 87 0 0 88 0 0 89 0 0 90 0 0 91 0 0 92 0 0 93 0 0 94 0 0 95 0 0 96 0 0 97 0 0 98 1 0 99 0 0 100 0 0 101 0 0 102 1 1 103 2 1 104 1 1 105 1 1 106 0 1 107 1 1 108 11 1 109 65 0 110 3 0 111 16 0 112 3 0 113 10 0 114 2 0 115 7 0 116 2 0 117 0 0 118 0 0 119 0 0 120 0 0 121 1 0 122 0 0 123 0 0 124 0 0 125 3 0 126 0 0 127 0 0 128 0 0 129 0 0 130 0 0 131 0 0 132 0 0 133 0 0 134 0 0 135 0 0 136 0 0 137 0 0 138 0 0 139 0 0 140 0 0 141 0 0 142 0 0 143 0 0 144 0 0 145 0 0 146 0 0 147 0 0 148 0 0 149 0 0 150 0 0 151 0 0 152 0 0 153 0 0 154 0 0 155 0 0 156 0 0 157 0 0 158 0 0 159 0 0 160 0 0 161 0 0 162 0 0 163 0 0 164 0 0 165 0 0 166 0 0 167 0 0 168 0 0 169 0 0 170 0 0 171 0 0 172 0 0 173 0 0 174 0 0 175 0 0 176 0 0 177 0 0 178 0 0 179 0 0 180 0 0 181 0 0 182 0 0 183 0 0 184 0 0 185 0 0 186 0 0 187 0 0 188 0 0 189 0 0 190 0 0 191 0 0 192 0 0 193 0 0 194 0 0 195 0 0 196 0 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 surveillance/inst/extdata/m2.txt0000644000175100001440000000345212003774136016461 0ustar hornikusers"week" "observed" "state" 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 0 0 10 0 0 11 0 0 12 0 0 13 0 0 14 0 0 15 0 0 16 0 0 17 0 0 18 0 0 19 0 0 20 0 0 21 0 0 22 0 0 23 0 0 24 0 0 25 0 0 26 0 0 27 0 0 28 0 0 29 0 0 30 0 0 31 0 0 32 0 0 33 0 0 34 0 0 35 0 0 36 0 0 37 0 0 38 0 0 39 0 0 40 0 0 41 0 0 42 0 0 43 0 0 44 0 0 45 0 0 46 10 1 47 12 1 48 21 1 49 18 1 50 31 1 51 26 1 52 27 1 53 0 1 54 0 1 55 0 1 56 0 1 57 0 1 58 0 1 59 0 1 60 0 1 61 0 1 62 0 1 63 0 1 64 0 1 65 0 1 66 0 1 67 0 1 68 0 1 69 0 0 70 0 0 71 0 0 72 0 0 73 0 0 74 0 0 75 0 0 76 0 0 77 0 0 78 0 0 79 0 0 80 0 0 81 0 0 82 0 0 83 0 0 84 0 0 85 0 0 86 0 0 87 0 0 88 0 0 89 0 0 90 0 0 91 0 0 92 0 0 93 0 0 94 0 0 95 0 0 96 0 0 97 0 0 98 0 0 99 0 0 100 0 0 101 0 0 102 0 0 103 0 0 104 0 0 105 0 0 106 0 0 107 0 0 108 0 0 109 0 0 110 0 0 111 0 0 112 0 0 113 0 0 114 0 0 115 0 0 116 0 0 117 0 0 118 0 0 119 0 0 120 0 0 121 0 0 122 0 0 123 0 0 124 0 0 125 0 0 126 0 0 127 0 0 128 0 0 129 0 0 130 0 0 131 0 0 132 0 0 133 0 0 134 0 0 135 0 0 136 0 0 137 0 0 138 0 0 139 0 0 140 0 0 141 0 0 142 0 0 143 0 0 144 0 0 145 0 0 146 0 0 147 0 0 148 0 0 149 0 0 150 0 0 151 0 0 152 0 0 153 0 0 154 0 0 155 0 0 156 0 0 157 0 0 158 0 0 159 0 0 160 0 0 161 0 0 162 0 0 163 0 0 164 0 0 165 0 0 166 0 0 167 0 0 168 0 0 169 0 0 170 0 0 171 0 0 172 0 0 173 0 0 174 0 0 175 0 0 176 0 0 177 0 0 178 0 0 179 0 0 180 0 0 181 0 0 182 0 0 183 0 0 184 0 0 185 0 0 186 0 0 187 0 0 188 0 0 189 0 0 190 0 0 191 0 0 192 0 0 193 0 0 194 0 0 195 0 0 196 0 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 surveillance/inst/extdata/m3.txt0000644000175100001440000000346612003774136016467 0ustar hornikusers"week" "observed" "state" 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 0 0 10 2 0 11 0 0 12 0 0 13 0 0 14 0 0 15 11 0 16 3 0 17 1 0 18 0 0 19 2 0 20 0 0 21 2 0 22 4 0 23 3 0 24 3 0 25 8 0 26 3 0 27 4 0 28 2 0 29 0 0 30 2 0 31 0 0 32 0 0 33 0 0 34 2 0 35 0 0 36 1 0 37 0 0 38 0 0 39 0 0 40 1 0 41 0 0 42 0 0 43 0 0 44 1 0 45 1 0 46 0 1 47 3 1 48 2 1 49 4 1 50 12 1 51 38 1 52 25 1 53 0 1 54 22 1 55 30 1 56 33 1 57 29 1 58 31 1 59 24 1 60 10 1 61 51 1 62 33 1 63 41 0 64 18 0 65 10 0 66 9 0 67 10 0 68 12 0 69 19 0 70 6 0 71 3 0 72 3 0 73 5 0 74 5 0 75 6 0 76 2 0 77 3 0 78 2 0 79 4 0 80 3 0 81 7 0 82 4 0 83 1 0 84 0 0 85 0 0 86 0 0 87 1 0 88 1 0 89 0 0 90 0 0 91 0 0 92 0 0 93 0 0 94 0 0 95 0 0 96 0 0 97 0 0 98 0 0 99 0 0 100 0 0 101 0 0 102 0 0 103 0 0 104 0 0 105 0 0 106 0 0 107 0 0 108 0 0 109 0 0 110 0 0 111 0 0 112 0 0 113 0 0 114 0 0 115 0 0 116 0 0 117 0 0 118 0 0 119 0 0 120 0 0 121 0 0 122 0 0 123 0 0 124 0 0 125 0 0 126 0 0 127 0 0 128 0 0 129 0 0 130 0 0 131 0 0 132 0 0 133 0 0 134 0 0 135 0 0 136 0 0 137 0 0 138 0 0 139 0 0 140 0 0 141 0 0 142 0 0 143 0 0 144 0 0 145 0 0 146 0 0 147 0 0 148 0 0 149 0 0 150 0 0 151 0 0 152 0 0 153 0 0 154 0 0 155 0 0 156 0 0 157 0 0 158 0 0 159 0 0 160 0 0 161 0 0 162 0 0 163 0 0 164 0 0 165 0 0 166 0 0 167 0 0 168 0 0 169 0 0 170 0 0 171 0 0 172 0 0 173 0 0 174 0 0 175 0 0 176 1 0 177 0 0 178 0 0 179 0 0 180 0 0 181 0 0 182 0 0 183 0 0 184 0 0 185 0 0 186 0 0 187 0 0 188 0 0 189 0 0 190 0 0 191 0 0 192 0 0 193 0 0 194 0 0 195 0 0 196 0 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 surveillance/inst/extdata/neighbourhood_BYBW.txt0000644000175100001440000012031011736257535021626 0ustar hornikusers"8336" "8337" "8315" "8311" "9262" "9172" "9163" "9776" "9763" "8435" "8335" "8327" "8326" "8316" "8325" "9275" "9189" "9171" "9187" "9182" "9173" "9175" "9764" "8436" "9780" "9762" "9180" "9190" "9188" "9162" "9775" "8421" "8437" "8426" "8417" "8317" "8237" "8211" "9272" "9271" "9263" "9279" "9277" "9261" "9183" "9184" "9177" "9778" "9777" "9761" "9181" "9179" "9174" "9774" "8425" "8416" "8415" "8231" "8115" "8235" "8216" "8212" "9276" "9362" "9278" "9274" "9178" "9186" "9161" "9773" "9772" "9771" "9185" "8135" "8117" "8116" "8111" "8236" "8121" "8118" "8221" "8215" "9565" "9372" "9375" "9273" "9176" "9563" "9562" "9779" "9577" "9573" "9561" "8136" "8119" "8125" "8226" "8222" "9576" "9564" "9363" "9376" "9373" "9361" "9572" "9461" "9663" "9575" "9571" "8127" "8126" "8225" "9675" "9662" "9574" "9474" "9462" "9377" "9374" "9371" "9471" "9463" "9679" "8128" "9676" "9661" "9678" "9479" "9472" "9464" "9478" "9477" "9674" "9473" "9677" "9671" "9673" "9672" "9475" "9476" "8336" 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8337" 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8315" 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8311" 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9262" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9172" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9163" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9776" 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9763" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8435" 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8335" 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8327" 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8326" 0 1 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8316" 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8325" 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9275" 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9189" 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9171" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9187" 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9182" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9173" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9175" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9764" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8436" 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9780" 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9762" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9180" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9190" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9188" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9162" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9775" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8421" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8437" 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8426" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8417" 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8317" 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8237" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8211" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9272" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9271" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9263" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9279" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9277" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9261" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9183" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9184" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9177" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9778" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9777" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9761" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9181" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9179" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9174" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9774" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8425" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8416" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8415" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8231" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8115" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8235" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8216" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8212" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9276" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9362" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9278" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9274" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9178" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9186" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9161" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9773" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9772" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9771" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9185" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8135" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8117" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8116" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8111" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8236" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8121" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8118" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8221" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8215" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9565" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9372" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9375" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9273" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9176" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9563" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9562" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9779" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9577" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9573" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9561" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8136" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8119" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8125" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8226" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8222" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9576" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9564" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9363" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9376" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9373" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9361" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9572" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9461" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9663" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9575" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9571" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8127" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8126" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "8225" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "9675" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 "9662" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 "9574" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 "9474" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 "9462" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 "9377" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 "9374" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 "9371" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 "9471" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 "9463" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 "9679" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 "8128" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 "9676" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 "9661" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 "9678" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 "9479" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 "9472" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 "9464" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 "9478" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 "9477" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 "9674" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 "9473" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 "9677" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 "9671" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 "9673" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 "9672" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 "9475" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 "9476" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 surveillance/inst/extdata/s3.txt0000644000175100001440000000344512003774136016472 0ustar hornikusers"week" "observed" "state" 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 0 0 10 0 0 11 0 0 12 0 0 13 3 0 14 0 0 15 0 0 16 0 0 17 0 0 18 0 0 19 1 0 20 1 0 21 1 0 22 0 0 23 1 0 24 0 0 25 1 0 26 0 0 27 1 0 28 2 0 29 1 0 30 0 0 31 2 0 32 3 0 33 0 0 34 3 0 35 2 0 36 1 0 37 3 0 38 2 0 39 1 0 40 1 0 41 3 0 42 2 0 43 3 0 44 0 0 45 2 0 46 4 0 47 1 0 48 1 0 49 2 0 50 1 0 51 0 0 52 0 0 53 0 0 54 0 0 55 0 0 56 1 0 57 1 0 58 0 0 59 0 0 60 1 0 61 0 0 62 0 0 63 1 0 64 0 0 65 0 0 66 0 0 67 1 0 68 2 0 69 0 0 70 0 0 71 1 0 72 0 0 73 1 0 74 1 0 75 0 0 76 3 0 77 1 0 78 1 0 79 1 0 80 2 0 81 3 0 82 3 0 83 1 0 84 3 0 85 4 0 86 1 0 87 2 0 88 6 0 89 1 0 90 1 0 91 3 0 92 2 0 93 2 0 94 3 0 95 4 0 96 1 0 97 0 0 98 2 0 99 1 0 100 2 0 101 2 0 102 1 0 103 0 0 104 1 0 105 0 0 106 0 0 107 0 0 108 0 0 109 0 0 110 0 0 111 0 0 112 0 0 113 1 0 114 1 0 115 0 0 116 2 0 117 2 0 118 0 0 119 1 0 120 0 0 121 3 0 122 1 0 123 0 0 124 0 0 125 2 0 126 0 0 127 3 1 128 0 1 129 4 1 130 2 1 131 2 1 132 9 1 133 7 1 134 3 1 135 2 1 136 12 1 137 5 1 138 3 1 139 7 1 140 9 1 141 6 1 142 10 1 143 6 1 144 5 1 145 3 1 146 3 1 147 8 1 148 4 1 149 3 1 150 2 1 151 3 1 152 2 1 153 1 1 154 2 1 155 5 1 156 2 1 157 2 0 158 1 0 159 0 0 160 0 0 161 0 0 162 0 0 163 0 0 164 1 0 165 1 0 166 1 0 167 0 0 168 0 0 169 0 0 170 0 0 171 1 0 172 1 0 173 3 0 174 0 0 175 0 0 176 0 0 177 1 0 178 1 0 179 0 0 180 1 0 181 1 0 182 3 0 183 2 0 184 1 0 185 3 0 186 1 0 187 1 0 188 1 0 189 1 0 190 3 0 191 6 0 192 7 0 193 4 0 194 4 0 195 2 0 196 3 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 surveillance/inst/extdata/s1.txt0000644000175100001440000000346112003774136016466 0ustar hornikusers"week" "observed" "state" 1 0 0 2 0 0 3 0 0 4 0 0 5 1 0 6 0 0 7 1 0 8 1 0 9 1 0 10 0 0 11 2 0 12 5 0 13 1 0 14 2 0 15 2 0 16 1 0 17 2 0 18 1 0 19 1 0 20 2 0 21 0 0 22 0 0 23 0 0 24 1 0 25 0 0 26 0 0 27 2 0 28 3 0 29 3 0 30 0 0 31 1 0 32 0 0 33 0 0 34 1 0 35 0 0 36 2 0 37 1 0 38 0 0 39 1 0 40 3 0 41 3 0 42 14 1 43 19 1 44 31 1 45 46 1 46 40 1 47 45 1 48 33 1 49 47 1 50 27 1 51 24 1 52 8 1 53 0 1 54 16 1 55 13 0 56 7 0 57 13 0 58 7 0 59 2 0 60 1 0 61 2 0 62 10 0 63 3 0 64 3 0 65 4 0 66 1 0 67 1 0 68 2 0 69 3 0 70 2 0 71 1 0 72 3 0 73 0 0 74 1 0 75 0 0 76 0 0 77 4 0 78 1 0 79 3 0 80 0 0 81 1 0 82 0 0 83 1 0 84 3 0 85 3 0 86 3 0 87 0 0 88 0 0 89 1 0 90 2 0 91 0 0 92 0 0 93 0 0 94 2 0 95 1 0 96 1 0 97 0 0 98 0 0 99 1 0 100 1 0 101 0 0 102 1 0 103 1 0 104 3 0 105 0 0 106 0 0 107 0 0 108 0 0 109 1 0 110 0 0 111 2 0 112 0 0 113 1 0 114 0 0 115 0 0 116 3 0 117 3 0 118 0 0 119 1 0 120 0 0 121 1 0 122 2 0 123 0 0 124 0 0 125 0 0 126 2 0 127 1 0 128 2 0 129 1 0 130 1 0 131 1 0 132 0 0 133 0 0 134 0 0 135 0 0 136 1 0 137 0 0 138 0 0 139 0 0 140 3 0 141 1 0 142 1 0 143 0 0 144 0 0 145 2 0 146 2 0 147 0 0 148 1 0 149 1 0 150 0 0 151 1 0 152 1 0 153 1 0 154 0 0 155 0 0 156 1 0 157 0 0 158 0 0 159 0 0 160 0 0 161 0 0 162 1 0 163 0 0 164 0 0 165 1 0 166 0 0 167 0 0 168 0 0 169 0 0 170 0 0 171 0 0 172 0 0 173 3 0 174 1 0 175 0 0 176 0 0 177 2 0 178 3 0 179 1 0 180 1 0 181 0 0 182 2 0 183 2 0 184 2 0 185 0 0 186 0 0 187 0 0 188 1 0 189 0 0 190 0 0 191 0 0 192 0 0 193 3 0 194 0 0 195 1 0 196 0 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 surveillance/inst/extdata/q1_nrwh.txt0000644000175100001440000000344512003774136017524 0ustar hornikusers"week" "observed" "state" 1 0 1 2 0 1 3 0 1 4 0 1 5 5 1 6 0 1 7 11 1 8 5 1 9 16 1 10 7 1 11 5 1 12 6 1 13 1 1 14 6 1 15 5 1 16 6 1 17 5 1 18 4 1 19 2 1 20 1 1 21 2 1 22 5 1 23 2 1 24 2 1 25 2 0 26 3 0 27 0 0 28 2 0 29 1 0 30 1 0 31 0 0 32 0 0 33 0 0 34 0 0 35 0 0 36 0 0 37 0 0 38 0 0 39 0 0 40 1 0 41 1 0 42 0 0 43 0 0 44 0 0 45 0 0 46 0 0 47 0 0 48 0 0 49 0 0 50 1 0 51 0 0 52 0 0 53 0 0 54 0 0 55 0 0 56 0 0 57 0 0 58 0 0 59 0 0 60 0 0 61 0 0 62 0 0 63 0 0 64 0 0 65 0 0 66 1 0 67 0 0 68 0 0 69 0 0 70 0 0 71 0 0 72 4 0 73 1 0 74 8 0 75 3 0 76 1 0 77 3 0 78 2 0 79 1 0 80 0 0 81 0 0 82 0 0 83 0 0 84 0 0 85 0 0 86 0 0 87 0 0 88 0 0 89 0 0 90 1 0 91 1 0 92 0 0 93 0 0 94 0 0 95 1 0 96 0 0 97 0 0 98 0 0 99 0 0 100 0 0 101 0 0 102 0 0 103 0 0 104 0 0 105 0 0 106 0 0 107 0 0 108 0 0 109 0 0 110 0 0 111 0 0 112 0 0 113 0 0 114 0 0 115 0 0 116 0 0 117 0 0 118 0 0 119 0 0 120 0 0 121 0 0 122 0 0 123 0 0 124 0 0 125 0 0 126 0 0 127 0 0 128 0 0 129 2 0 130 3 0 131 5 0 132 8 0 133 4 0 134 0 0 135 0 0 136 0 0 137 0 0 138 0 0 139 0 0 140 0 0 141 0 0 142 0 0 143 0 0 144 0 0 145 0 0 146 0 0 147 0 0 148 0 0 149 0 0 150 0 0 151 0 0 152 0 0 153 0 0 154 0 0 155 0 0 156 0 0 157 0 0 158 0 0 159 0 0 160 0 0 161 0 0 162 0 0 163 0 0 164 0 0 165 0 0 166 0 0 167 1 0 168 0 0 169 0 0 170 0 0 171 1 0 172 0 0 173 0 0 174 0 0 175 0 0 176 1 0 177 0 0 178 0 0 179 0 0 180 0 0 181 0 0 182 0 0 183 0 0 184 0 0 185 0 0 186 0 0 187 0 0 188 0 0 189 0 0 190 0 0 191 0 0 192 0 0 193 0 0 194 0 0 195 0 0 196 0 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 surveillance/inst/extdata/k1.txt0000644000175100001440000000346012003774136016455 0ustar hornikusers"week" "observed" "state" 1 0 0 2 0 0 3 1 0 4 1 0 5 2 0 6 1 0 7 0 0 8 2 0 9 4 0 10 1 0 11 6 0 12 1 0 13 2 0 14 1 0 15 0 0 16 1 0 17 2 0 18 0 0 19 2 0 20 3 0 21 1 0 22 1 0 23 0 0 24 1 0 25 1 0 26 1 0 27 4 0 28 2 0 29 2 0 30 1 0 31 7 0 32 1 0 33 3 0 34 10 1 35 200 1 36 10 0 37 16 0 38 22 0 39 9 0 40 8 0 41 12 0 42 7 0 43 12 0 44 11 0 45 5 0 46 5 0 47 1 0 48 1 0 49 1 0 50 2 0 51 3 0 52 0 0 53 0 0 54 1 0 55 2 0 56 1 0 57 0 0 58 1 0 59 1 0 60 0 0 61 0 0 62 2 0 63 3 0 64 1 0 65 0 0 66 1 0 67 1 0 68 4 0 69 1 0 70 0 0 71 2 0 72 1 0 73 2 0 74 0 0 75 2 0 76 0 0 77 1 0 78 0 0 79 1 0 80 1 0 81 3 0 82 3 0 83 2 0 84 1 0 85 3 0 86 1 0 87 2 0 88 1 0 89 6 0 90 3 0 91 4 0 92 1 0 93 2 0 94 2 0 95 1 0 96 3 0 97 2 0 98 1 0 99 5 0 100 4 0 101 4 0 102 0 0 103 2 0 104 1 0 105 1 0 106 0 0 107 0 0 108 1 0 109 0 0 110 0 0 111 1 0 112 1 0 113 0 0 114 0 0 115 2 0 116 0 0 117 0 0 118 0 0 119 2 0 120 0 0 121 1 0 122 0 0 123 0 0 124 0 0 125 0 0 126 2 0 127 0 0 128 0 0 129 3 0 130 2 0 131 1 0 132 2 0 133 3 0 134 6 0 135 1 0 136 4 0 137 4 0 138 3 0 139 0 0 140 2 0 141 12 0 142 12 0 143 17 0 144 11 0 145 6 0 146 5 0 147 4 0 148 5 0 149 5 0 150 1 0 151 1 0 152 0 0 153 1 0 154 1 0 155 1 0 156 0 0 157 1 0 158 0 0 159 0 0 160 0 0 161 1 0 162 0 0 163 0 0 164 0 0 165 1 0 166 0 0 167 0 0 168 0 0 169 2 0 170 2 0 171 0 0 172 0 0 173 1 0 174 0 0 175 0 0 176 1 0 177 1 0 178 1 0 179 1 0 180 1 0 181 1 0 182 0 0 183 0 0 184 1 0 185 1 0 186 3 0 187 0 0 188 3 0 189 2 0 190 1 0 191 0 0 192 2 0 193 1 0 194 5 0 195 2 0 196 3 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 surveillance/inst/extdata/m4.txt0000644000175100001440000000346012003774136016462 0ustar hornikusers"week" "observed" "state" 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 0 0 10 0 0 11 1 0 12 0 0 13 0 0 14 0 0 15 0 0 16 0 0 17 0 0 18 0 0 19 1 0 20 1 0 21 1 0 22 0 0 23 1 0 24 0 0 25 1 0 26 1 0 27 1 0 28 0 0 29 0 0 30 0 0 31 1 0 32 3 0 33 3 0 34 0 0 35 1 0 36 1 0 37 3 0 38 0 0 39 0 0 40 0 0 41 0 0 42 1 0 43 0 0 44 1 0 45 0 0 46 0 0 47 0 0 48 0 0 49 1 0 50 11 0 51 0 0 52 1 0 53 0 0 54 1 1 55 2 1 56 25 1 57 15 1 58 21 1 59 26 1 60 56 1 61 68 1 62 26 1 63 25 0 64 25 0 65 31 0 66 18 0 67 7 0 68 15 0 69 9 0 70 1 0 71 1 0 72 0 0 73 5 0 74 2 0 75 0 0 76 3 0 77 0 0 78 2 0 79 0 0 80 0 0 81 0 0 82 1 0 83 0 0 84 0 0 85 0 0 86 0 0 87 0 0 88 0 0 89 0 0 90 0 0 91 0 0 92 0 0 93 0 0 94 0 0 95 0 0 96 0 0 97 0 0 98 1 0 99 0 0 100 0 0 101 0 0 102 0 0 103 0 0 104 0 0 105 0 0 106 0 0 107 0 0 108 0 0 109 0 0 110 0 0 111 0 0 112 0 0 113 0 0 114 0 0 115 0 0 116 1 0 117 0 0 118 2 0 119 0 0 120 0 0 121 0 0 122 0 0 123 0 0 124 0 0 125 0 0 126 0 0 127 0 0 128 0 0 129 0 0 130 0 0 131 0 0 132 0 0 133 0 0 134 0 0 135 0 0 136 0 0 137 0 0 138 0 0 139 0 0 140 0 0 141 0 0 142 0 0 143 0 0 144 0 0 145 0 0 146 0 0 147 0 0 148 0 0 149 0 0 150 0 0 151 0 0 152 0 0 153 0 0 154 0 0 155 0 0 156 0 0 157 0 0 158 0 0 159 0 0 160 0 0 161 0 0 162 0 0 163 0 0 164 0 0 165 0 0 166 0 0 167 0 0 168 0 0 169 0 0 170 0 0 171 0 0 172 0 0 173 0 0 174 0 0 175 0 0 176 0 0 177 0 0 178 0 0 179 0 0 180 0 0 181 0 0 182 0 0 183 0 0 184 0 0 185 0 0 186 0 0 187 0 0 188 0 0 189 0 0 190 0 0 191 0 0 192 0 0 193 0 0 194 0 0 195 0 0 196 0 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 surveillance/inst/extdata/s2.txt0000644000175100001440000000344312003774136016467 0ustar hornikusers"week" "observed" "state" 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 0 0 10 0 0 11 0 0 12 0 0 13 0 0 14 0 0 15 0 0 16 0 0 17 0 0 18 0 0 19 0 0 20 0 0 21 0 0 22 0 0 23 0 0 24 0 0 25 0 0 26 0 0 27 0 0 28 0 0 29 0 0 30 0 0 31 0 0 32 0 0 33 0 0 34 0 0 35 0 0 36 0 0 37 1 0 38 0 0 39 0 0 40 0 0 41 0 0 42 0 0 43 0 0 44 0 0 45 0 0 46 0 0 47 0 0 48 0 0 49 0 0 50 0 0 51 0 0 52 0 0 53 0 0 54 0 0 55 0 0 56 0 0 57 0 0 58 0 0 59 0 0 60 0 0 61 0 0 62 0 0 63 0 0 64 1 0 65 0 0 66 0 0 67 0 0 68 0 0 69 0 0 70 0 0 71 1 0 72 0 0 73 0 0 74 0 0 75 0 0 76 0 0 77 0 0 78 0 0 79 0 0 80 0 0 81 0 0 82 0 0 83 0 0 84 0 0 85 0 0 86 0 0 87 0 0 88 0 0 89 0 1 90 0 1 91 0 1 92 0 1 93 0 1 94 0 1 95 1 1 96 0 1 97 2 1 98 1 1 99 1 1 100 1 1 101 0 1 102 0 1 103 0 1 104 1 1 105 1 1 106 0 1 107 0 1 108 1 1 109 3 1 110 2 1 111 3 1 112 2 1 113 0 1 114 1 1 115 1 1 116 1 1 117 0 1 118 4 1 119 0 1 120 0 1 121 1 1 122 1 1 123 0 1 124 0 1 125 1 1 126 1 1 127 0 1 128 0 1 129 0 1 130 0 1 131 0 1 132 0 1 133 0 1 134 1 1 135 0 1 136 1 1 137 0 1 138 0 1 139 0 1 140 0 1 141 0 1 142 0 1 143 0 0 144 0 0 145 0 0 146 1 0 147 0 0 148 0 0 149 0 0 150 0 0 151 0 0 152 0 0 153 0 0 154 1 0 155 0 0 156 0 0 157 0 0 158 0 0 159 0 0 160 0 0 161 0 0 162 0 0 163 0 0 164 0 0 165 0 0 166 0 0 167 0 0 168 0 0 169 0 0 170 0 0 171 0 0 172 0 0 173 0 0 174 0 0 175 0 0 176 0 0 177 0 0 178 0 0 179 0 0 180 0 0 181 0 0 182 0 0 183 0 0 184 0 0 185 0 0 186 0 0 187 0 0 188 0 0 189 0 0 190 0 0 191 0 0 192 0 0 193 0 0 194 0 0 195 0 0 196 0 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 surveillance/inst/extdata/counts_flu_BYBW.txt0000644000175100001440000035352611736257535021174 0ustar hornikusers"8336" "8337" "8315" "8311" "9262" "9172" "9163" "9776" "9763" "8435" "8335" "8327" "8326" "8316" "8325" "9275" "9189" "9171" "9187" "9182" "9173" "9175" "9764" "8436" "9780" "9762" "9180" "9190" "9188" "9162" "9775" "8421" "8437" "8426" "8417" "8317" "8237" "8211" "9272" "9271" "9263" "9279" "9277" "9261" "9183" "9184" "9177" "9778" "9777" "9761" "9181" "9179" "9174" "9774" "8425" "8416" "8415" "8231" "8115" "8235" "8216" "8212" "9276" "9362" "9278" "9274" "9178" "9186" "9161" "9773" "9772" "9771" "9185" "8135" "8117" "8116" "8111" "8236" "8121" "8118" "8221" "8215" "9565" "9372" "9375" "9273" "9176" "9563" "9562" "9779" "9577" "9573" "9561" "8136" "8119" "8125" "8226" "8222" "9576" "9564" "9363" "9376" "9373" "9361" "9572" "9461" "9663" "9575" "9571" "8127" "8126" "8225" "9675" "9662" "9574" "9474" "9462" "9377" "9374" "9371" "9471" "9463" "9679" "8128" "9676" "9661" "9678" "9479" "9472" "9464" "9478" "9477" "9674" "9473" "9677" "9671" "9673" "9672" "9475" "9476" "1" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "2" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "3" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "4" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 6 0 2 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 3 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 3 2 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "5" 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 1 5 0 0 0 0 4 0 4 0 1 0 6 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 12 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 2 0 4 4 0 0 2 0 3 0 0 0 0 0 0 0 3 0 0 0 0 6 0 0 1 0 3 0 0 0 0 0 0 0 0 1 2 2 8 0 0 0 0 0 0 8 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "6" 0 0 1 6 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 3 0 0 0 0 10 0 6 0 5 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 6 0 4 0 1 0 0 5 0 0 0 0 0 0 1 0 0 0 0 1 2 4 8 0 0 3 0 3 0 0 0 0 0 1 0 1 0 0 0 0 7 1 0 0 0 5 0 0 0 0 0 0 0 0 0 11 1 0 0 0 0 0 0 0 4 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "7" 0 0 1 1 0 0 0 0 0 0 0 4 0 3 0 0 0 0 1 2 1 6 0 3 0 0 0 0 0 6 0 3 0 0 0 2 0 0 0 0 1 0 0 0 2 7 0 0 0 0 0 0 0 0 2 0 3 0 1 0 0 9 0 0 0 0 0 0 0 1 0 1 1 2 1 0 9 0 0 3 0 0 0 2 0 0 0 0 0 2 0 0 0 0 3 3 0 0 0 7 1 0 0 0 0 0 0 0 0 6 1 0 0 3 0 1 0 2 11 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 "8" 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 11 1 1 0 6 0 0 1 0 0 0 0 3 0 3 0 3 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 3 0 6 0 0 0 0 2 0 0 0 0 0 0 1 1 0 0 1 0 3 1 6 0 0 1 0 1 0 0 0 0 1 0 1 4 0 0 0 0 2 2 0 0 0 1 0 8 0 0 0 0 0 0 0 4 1 0 1 0 0 1 0 0 8 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 "9" 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 2 0 0 0 0 0 0 0 6 0 0 0 1 0 1 0 0 0 3 0 1 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 2 0 0 1 0 0 3 0 0 4 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 3 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 "10" 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 2 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 3 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "11" 0 0 2 1 0 0 0 0 0 0 0 4 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 4 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 "12" 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 3 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "13" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 "14" 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 "15" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "16" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 "17" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "18" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "19" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "20" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "21" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "22" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "23" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "24" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "25" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "26" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "27" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "28" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "29" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "30" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "31" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "32" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "33" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "34" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "35" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "36" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "37" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "38" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "39" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "40" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "41" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "42" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "43" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "44" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "45" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "46" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "47" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "48" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "49" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "50" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "51" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "52" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "53" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "54" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "55" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "56" 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 1 0 2 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "57" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 6 4 0 0 0 0 0 0 0 0 0 0 0 1 1 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "58" 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 3 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 5 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 "59" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 3 3 0 1 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 5 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 1 1 0 0 0 0 0 0 0 0 5 3 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 "60" 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 10 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 1 0 0 1 1 0 1 0 3 1 0 0 0 3 0 0 0 0 0 0 0 1 0 1 6 0 0 1 0 2 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 3 1 6 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 "61" 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 7 0 1 0 0 0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 5 0 3 0 1 1 1 0 0 2 0 0 4 0 0 0 0 1 0 1 6 0 0 1 0 0 0 4 0 0 0 0 1 0 0 0 0 0 1 2 2 0 1 5 1 3 0 0 2 0 0 0 0 8 1 0 1 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 "62" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 2 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 7 0 0 2 0 1 0 1 0 0 0 0 2 0 0 0 0 0 0 3 0 2 0 2 1 5 0 0 0 0 0 0 0 3 1 0 1 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 2 0 3 "63" 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 7 0 4 0 5 0 5 1 0 0 0 5 0 0 0 0 0 0 0 0 0 1 7 0 0 3 0 3 0 3 0 0 0 0 0 2 0 0 0 0 0 5 2 0 0 11 4 0 4 0 0 0 0 1 1 12 1 0 0 0 0 0 0 0 7 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 5 0 0 "64" 0 0 1 2 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 4 3 1 0 0 0 0 0 0 0 0 1 2 4 0 2 0 0 0 0 0 1 2 0 0 1 0 0 0 0 0 1 0 8 0 0 4 0 2 0 2 0 0 0 0 3 0 0 0 0 0 2 1 1 0 0 6 1 0 0 0 1 4 0 0 0 4 1 0 1 0 1 1 0 3 14 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 10 "65" 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 6 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 10 3 0 0 0 0 0 0 0 0 11 0 0 0 0 0 1 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 4 "66" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 2 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 5 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 "67" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 4 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 "68" 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 0 1 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 3 "69" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 "70" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "71" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 "72" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "73" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 "74" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "75" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "76" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "77" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "78" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "79" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "80" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "81" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "82" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "83" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "84" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "85" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "86" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "87" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "88" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "89" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "90" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "91" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "92" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "93" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "94" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "95" 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "96" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "97" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "98" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "99" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "100" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "101" 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "102" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "103" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "104" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "105" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "106" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "107" 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 4 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "108" 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 19 0 0 0 5 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "109" 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 29 3 0 0 4 0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 1 0 0 0 0 2 6 0 0 0 0 3 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 "110" 0 0 1 5 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 9 0 0 0 4 0 1 0 0 0 0 0 0 0 0 0 24 2 0 0 7 0 0 2 0 2 0 0 0 15 0 1 1 2 1 0 0 1 0 1 0 1 9 0 0 0 12 7 0 0 1 1 0 0 8 0 0 0 0 1 2 0 0 0 0 4 0 1 0 0 5 3 2 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "111" 0 0 0 2 0 0 0 0 0 0 0 9 0 2 0 0 0 0 0 4 0 1 0 2 0 0 2 0 0 19 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 14 0 0 0 3 0 0 2 0 3 0 2 0 3 0 3 1 3 1 1 1 0 0 4 0 2 7 0 0 0 8 16 0 0 13 0 0 0 12 1 0 0 2 0 1 0 0 0 0 2 1 3 0 1 5 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 1 "112" 0 0 5 1 0 0 0 0 0 1 1 10 1 0 3 0 0 5 2 11 0 5 0 2 0 0 0 0 0 26 0 0 1 1 1 1 1 0 0 0 0 0 0 0 2 45 2 0 0 11 0 0 6 0 5 4 1 0 7 0 9 21 3 6 2 0 0 0 5 0 6 6 0 0 1 22 51 0 0 12 1 1 0 30 2 0 0 1 3 1 0 0 0 1 5 14 1 0 0 9 6 10 0 0 0 0 1 15 1 0 1 0 5 2 0 0 0 4 13 0 0 0 9 0 0 0 5 0 0 0 0 1 0 0 0 0 0 3 0 0 "113" 1 0 11 3 0 1 0 0 0 6 0 9 0 2 2 0 4 5 2 8 0 10 0 0 0 0 1 0 0 37 0 2 0 1 0 0 0 0 0 0 0 0 0 0 2 47 2 0 0 11 1 1 3 0 11 7 5 0 8 0 16 0 1 7 5 3 0 1 5 0 3 10 0 0 4 21 57 0 0 7 1 0 0 14 6 0 1 0 0 4 0 1 0 3 4 8 5 2 0 16 18 13 0 0 0 0 3 0 0 0 0 0 2 5 0 1 0 2 9 2 1 0 14 0 0 0 2 0 0 0 0 3 0 0 1 1 1 0 0 3 "114" 0 2 7 9 0 1 0 0 0 8 2 10 0 4 0 0 0 1 0 6 0 7 0 2 0 0 2 0 0 32 0 0 0 2 0 2 0 0 0 0 0 0 0 0 4 23 0 1 0 8 0 3 4 0 4 2 5 0 26 0 4 2 1 9 2 1 0 0 0 1 1 6 0 0 1 12 12 1 0 3 0 0 2 15 16 0 0 1 1 1 0 4 0 0 13 4 3 0 0 12 20 9 1 0 1 0 1 20 4 0 0 0 2 14 0 7 0 9 34 1 4 3 7 0 0 0 0 1 0 0 0 3 1 1 2 0 2 3 0 0 "115" 0 0 1 6 0 2 0 0 0 0 0 4 0 0 0 0 1 1 0 4 1 3 0 0 0 0 2 0 0 30 0 4 0 0 0 0 0 0 0 0 0 0 0 0 4 10 2 0 0 0 1 1 0 0 3 0 1 0 12 1 2 0 1 8 1 1 0 12 2 1 1 6 0 0 0 3 15 0 0 3 0 0 1 6 2 0 1 0 3 0 0 0 0 1 0 1 0 0 0 4 7 12 1 0 0 1 1 3 2 1 0 0 0 2 4 3 0 5 8 1 4 2 4 1 0 0 0 3 1 0 0 5 0 1 0 0 2 0 0 25 "116" 0 0 0 4 0 0 1 0 0 1 0 0 1 5 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 6 0 4 0 0 0 2 0 0 0 0 0 0 0 0 2 2 0 0 0 0 0 1 1 0 3 0 0 0 4 6 2 1 0 0 0 0 0 2 0 0 0 3 0 0 1 6 7 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 4 0 0 0 1 5 3 1 0 0 1 0 4 2 0 0 0 0 1 0 0 0 3 4 2 3 0 5 0 0 0 1 0 0 0 1 10 0 1 0 1 0 0 0 0 "117" 0 0 7 5 0 1 0 0 0 2 0 0 0 1 0 0 3 3 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 3 2 0 1 0 0 0 2 0 0 0 4 0 0 0 1 3 0 0 4 0 0 0 1 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 7 2 0 1 0 0 0 3 0 0 0 0 0 1 1 0 0 0 4 0 1 1 0 0 0 0 0 0 0 0 0 2 0 1 2 0 0 0 0 3 "118" 0 2 2 2 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 1 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 7 2 0 0 1 3 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 10 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 3 0 0 0 0 0 "119" 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 2 0 0 5 0 3 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 "120" 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 "121" 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "122" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "123" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "124" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "125" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "126" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "127" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "128" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "129" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "130" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "131" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "132" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "133" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "134" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "135" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "136" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "137" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "138" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "139" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "140" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "141" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "142" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "143" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "144" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "145" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "146" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "147" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "148" 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "149" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "150" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "151" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "152" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "153" 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "154" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 "155" 1 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 "156" 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "157" 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "158" 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 "159" 3 3 5 2 0 0 0 0 0 1 1 1 0 3 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 1 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 7 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 "160" 1 0 5 10 0 0 0 0 0 1 0 1 0 2 0 0 1 2 3 1 0 0 0 0 0 0 2 0 0 4 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 2 1 0 0 4 0 0 2 0 0 2 0 3 7 0 3 0 0 0 1 1 0 0 1 0 0 2 0 0 1 0 2 0 0 3 0 1 0 2 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 2 3 0 0 0 0 0 2 0 4 0 0 1 0 0 0 0 0 0 0 1 0 4 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 "161" 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 6 0 0 0 2 0 2 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 3 0 1 1 1 0 1 0 1 2 1 0 0 1 0 5 0 0 0 1 0 0 1 1 3 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 3 0 0 2 0 0 0 0 0 0 1 2 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 "162" 1 0 1 0 0 0 0 0 0 1 1 4 2 2 0 0 2 2 1 0 0 0 0 1 0 0 0 1 0 10 0 2 0 1 0 1 0 1 0 0 0 0 0 0 2 3 0 0 0 1 0 0 1 0 2 1 1 0 4 0 1 4 0 0 0 0 0 1 2 0 0 0 0 0 1 3 3 0 0 3 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 3 0 0 1 0 0 5 2 1 0 0 3 1 0 0 0 1 1 0 1 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "163" 1 0 0 2 0 0 0 0 0 1 1 1 0 0 0 0 0 4 0 0 0 1 0 1 2 0 0 0 0 8 0 1 0 0 0 6 0 0 0 0 0 0 0 0 1 4 1 0 0 1 0 0 5 1 0 3 0 0 5 0 0 0 1 0 0 1 0 11 0 0 0 0 0 2 3 4 9 0 0 2 0 2 0 2 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 1 3 0 0 0 1 0 1 9 6 0 0 10 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 "164" 0 0 0 2 0 0 2 0 0 3 1 0 0 0 0 0 2 0 2 0 0 2 0 1 0 0 0 0 0 7 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 4 0 0 0 1 0 0 0 0 0 0 0 0 4 1 0 4 0 0 0 1 0 12 1 0 0 1 0 0 2 2 4 0 0 5 0 0 0 2 0 0 0 0 0 0 0 0 4 0 1 2 0 0 0 0 0 1 0 0 0 1 0 1 0 2 0 0 4 0 0 1 0 0 0 0 5 1 0 0 1 0 0 0 0 0 3 5 0 1 0 1 1 0 0 0 "165" 0 1 1 5 0 1 0 0 0 2 2 6 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 3 0 1 0 2 0 4 0 0 0 0 0 0 0 5 0 2 0 1 0 1 0 0 2 0 0 0 0 0 3 0 0 0 0 1 0 3 0 3 1 0 1 0 0 0 0 0 3 0 0 2 0 0 0 2 1 0 0 0 0 0 0 0 1 0 2 0 0 0 0 2 0 0 0 0 0 1 0 0 2 2 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 6 0 0 0 0 0 0 0 0 "166" 1 0 1 1 0 0 0 0 0 1 2 2 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 2 0 0 0 1 0 0 0 1 0 5 0 0 0 0 0 1 0 0 0 0 2 0 4 0 0 1 1 0 0 1 0 8 0 0 1 1 2 0 3 1 7 0 0 1 0 0 0 0 1 0 0 0 0 2 0 0 2 0 0 0 1 0 0 0 0 2 0 0 0 0 0 0 6 1 1 0 1 0 1 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 "167" 1 0 5 3 0 0 0 0 0 2 0 5 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 4 0 0 0 3 0 3 0 0 0 2 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 5 0 1 2 1 0 0 0 0 0 0 0 2 0 2 0 0 1 1 0 0 2 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "168" 0 2 2 2 0 0 0 0 0 0 0 10 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 1 0 0 0 4 0 0 1 0 0 0 0 0 0 0 0 3 0 0 0 0 0 4 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 "169" 0 0 0 2 0 0 0 0 0 1 0 3 0 1 3 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 2 0 0 0 0 0 0 0 0 3 0 0 0 3 0 0 0 0 0 0 0 0 4 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 2 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 "170" 0 0 0 1 0 0 0 0 0 0 0 4 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "171" 0 0 0 2 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 "172" 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "173" 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "174" 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "175" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "176" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "177" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "178" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "179" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "180" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "181" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "182" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "183" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "184" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "185" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "186" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "187" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "188" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "189" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "190" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "191" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "192" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "193" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "194" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "195" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "196" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "197" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "198" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "199" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "200" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "201" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "202" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "203" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "204" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "205" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "206" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "207" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "208" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 5 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "209" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 3 0 1 6 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "210" 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 "211" 2 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 1 0 0 1 0 3 0 0 0 0 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 3 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "212" 1 0 0 1 0 0 0 1 0 0 0 2 0 0 0 0 3 0 0 1 0 0 0 2 0 0 0 0 3 14 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 7 0 0 0 2 0 0 0 0 0 4 0 0 3 3 0 0 0 1 1 0 3 0 1 0 2 1 1 0 0 4 8 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 3 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 "213" 1 0 0 6 0 0 0 0 0 3 0 2 0 0 0 0 0 2 2 4 0 3 0 2 0 0 0 4 5 12 0 2 0 2 2 1 1 0 0 5 0 0 0 5 0 6 1 0 0 3 0 0 1 0 3 13 1 0 15 0 3 4 0 0 1 3 1 0 1 0 0 2 1 0 2 10 15 0 0 10 0 3 0 0 0 0 1 0 0 0 0 0 0 0 1 2 0 0 0 1 1 1 0 1 0 2 0 0 0 9 4 0 0 0 0 0 0 0 3 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "214" 9 2 1 1 0 1 0 0 0 4 2 5 0 1 0 0 3 1 2 2 0 1 0 3 0 0 0 5 7 26 0 1 2 0 1 4 6 0 0 11 0 1 0 1 1 10 2 0 0 1 2 0 0 0 0 10 1 0 27 9 1 2 0 0 2 1 5 4 2 0 1 4 0 1 0 12 24 0 0 6 0 4 0 0 3 0 0 2 1 0 0 1 0 5 2 1 1 0 0 1 3 1 0 0 1 0 1 1 0 9 3 0 0 0 0 0 0 0 1 0 2 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 "215" 10 0 4 4 0 0 0 0 0 4 4 11 0 0 4 0 7 0 3 0 0 2 0 1 0 0 0 3 0 16 0 0 0 1 4 4 7 0 0 14 1 3 0 5 1 1 5 0 0 2 0 1 0 0 0 20 5 1 38 1 5 3 3 0 3 5 4 1 0 1 0 0 0 1 9 8 32 0 0 21 1 1 0 0 2 0 3 1 0 0 4 1 2 7 4 0 3 0 0 4 2 4 1 0 0 0 0 1 0 4 1 0 1 0 0 0 1 0 5 1 10 0 3 1 0 1 0 0 1 0 0 0 1 1 1 0 1 0 0 0 "216" 5 1 8 9 1 3 1 0 0 4 3 5 0 0 6 0 8 2 15 1 0 8 0 1 0 0 0 7 6 38 1 0 1 2 0 7 2 0 0 4 0 3 0 4 2 20 7 0 0 8 1 3 0 0 4 8 11 0 19 0 5 2 6 7 2 6 9 2 1 0 3 7 1 1 19 10 33 2 1 21 2 1 0 2 1 1 4 2 1 0 0 2 2 3 8 3 6 2 0 4 5 3 2 0 0 4 0 0 2 22 1 0 3 0 0 4 0 3 7 1 10 0 4 2 0 0 1 0 1 1 0 1 1 3 2 0 2 0 0 0 "217" 10 2 2 6 0 1 3 0 0 5 7 6 2 1 33 0 5 0 11 0 0 3 0 3 0 0 2 7 1 37 0 2 1 0 1 4 2 1 2 6 2 2 0 3 0 17 7 0 0 22 2 0 2 0 5 5 8 0 18 0 9 6 3 2 3 3 5 5 1 1 9 3 1 1 28 9 35 1 0 21 3 7 0 9 11 2 4 3 0 0 0 1 2 4 13 5 19 2 0 6 15 10 6 0 2 2 0 3 6 16 1 0 6 0 0 5 2 6 18 1 10 0 4 2 0 0 1 1 1 0 0 2 4 7 2 0 0 1 0 0 "218" 4 6 1 3 0 0 0 2 0 2 4 4 2 2 0 1 3 0 11 2 0 4 0 3 1 0 0 14 0 35 0 0 0 1 0 3 3 1 2 1 0 8 0 2 1 13 1 0 0 11 3 0 0 0 2 0 7 0 28 1 11 6 7 2 5 1 5 8 0 3 10 6 2 0 25 12 40 0 0 15 2 14 0 12 7 3 1 1 3 0 1 2 0 5 5 5 12 1 0 7 30 8 5 3 0 6 1 4 1 7 3 1 5 7 0 3 0 7 26 4 13 1 4 5 1 0 11 0 0 0 0 2 3 7 3 0 1 3 1 0 "219" 6 2 3 4 0 0 3 0 0 1 3 7 0 2 7 0 0 1 2 6 1 7 0 3 0 0 0 21 0 60 1 0 1 1 2 5 3 0 0 0 1 5 0 0 2 11 1 0 0 16 0 2 0 1 2 5 14 0 17 1 14 4 3 7 1 3 3 0 0 8 6 11 4 0 24 6 29 1 2 12 4 9 1 7 5 3 1 2 0 0 0 0 6 2 17 4 13 0 0 4 9 0 5 2 0 0 0 4 10 9 3 0 8 3 0 2 4 0 12 2 3 0 4 6 2 0 2 0 0 0 0 3 2 2 2 0 0 1 0 1 "220" 2 0 2 3 0 0 1 1 0 0 4 4 0 0 0 0 1 0 3 2 2 1 0 1 0 0 0 2 0 22 2 0 0 2 0 1 0 0 0 0 2 3 0 0 0 4 2 0 0 4 0 0 0 0 1 2 2 0 2 0 7 0 3 2 2 0 2 0 0 0 1 1 2 0 13 7 10 0 0 4 1 2 0 3 2 1 0 0 1 0 0 1 3 2 4 0 2 0 0 1 6 2 0 1 0 1 0 2 6 15 0 0 1 7 1 0 0 0 10 2 5 0 0 5 2 0 2 1 0 0 0 0 4 0 2 1 0 1 0 0 "221" 2 2 1 2 0 0 0 0 0 1 6 1 1 1 0 0 0 0 2 0 1 0 0 0 0 0 0 6 0 17 0 1 0 1 1 0 0 0 0 1 1 0 0 0 0 4 1 0 0 1 0 0 0 0 0 0 1 0 0 0 2 0 1 1 3 0 3 2 0 4 0 0 0 0 3 1 2 0 0 1 0 0 0 0 2 0 0 0 1 0 2 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 2 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 "222" 0 0 2 3 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 2 1 0 3 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 "223" 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "224" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 "225" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "226" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "227" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "228" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "229" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "230" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "231" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "232" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "233" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "234" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "235" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "236" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "237" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "238" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "239" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "240" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "241" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "242" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "243" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "244" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "245" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "246" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "247" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "248" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "249" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "250" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "251" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "252" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "253" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 "254" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "255" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 "256" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 "257" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "258" 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "259" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "260" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "261" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "262" 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "263" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 "264" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 "265" 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 "266" 0 0 0 0 0 0 0 0 0 1 0 6 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "267" 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 3 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "268" 4 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 3 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 5 2 0 0 0 0 1 0 0 1 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 3 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 5 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 "269" 2 0 1 0 0 0 0 0 0 0 2 0 0 2 0 1 0 2 0 0 0 2 0 0 0 0 0 0 2 9 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 0 0 0 0 0 0 1 0 0 0 3 0 0 3 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "270" 0 0 0 1 1 0 0 0 0 3 1 0 0 2 0 0 1 3 0 0 0 0 0 1 0 0 0 0 2 4 1 3 1 0 0 0 0 0 0 0 0 0 0 1 0 5 0 1 0 0 0 1 0 1 4 0 0 0 0 0 1 1 0 0 0 4 0 0 1 0 0 0 2 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 "271" 0 0 0 5 8 0 0 4 0 2 2 1 0 2 0 5 2 6 1 3 0 1 0 0 1 0 1 4 4 14 0 1 0 0 0 2 0 0 0 1 0 0 0 0 0 4 2 0 0 0 0 3 0 0 1 0 0 0 0 0 1 0 0 0 0 4 0 0 0 0 0 2 2 0 0 2 1 0 0 3 1 0 0 1 0 2 0 0 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 "272" 0 1 0 1 3 0 0 1 0 4 2 0 0 2 0 10 0 0 0 0 0 1 0 1 0 0 0 0 10 14 0 0 0 1 0 5 0 0 0 4 0 0 1 1 3 4 3 0 0 0 0 5 0 2 3 0 0 1 1 5 0 0 0 0 0 1 0 2 0 0 1 1 1 0 1 4 2 0 0 3 0 0 0 3 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 3 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 2 0 1 0 0 0 0 "273" 3 2 0 4 3 1 0 0 0 10 0 1 0 4 0 7 2 3 3 0 0 1 0 2 2 1 1 0 8 30 0 0 0 0 0 0 0 0 0 13 0 4 2 3 6 9 3 0 0 1 1 1 1 2 1 2 2 0 3 6 1 0 3 1 0 2 4 22 0 0 2 0 0 1 1 3 4 1 0 2 0 2 0 20 2 1 3 1 0 0 0 0 0 0 6 1 0 0 3 2 0 2 0 0 0 0 0 0 0 7 1 0 1 0 0 1 0 0 3 1 0 0 0 3 0 0 0 0 0 0 0 3 4 2 0 0 0 0 0 0 "274" 0 0 0 0 11 0 0 0 0 4 3 1 0 1 0 23 1 6 2 1 0 0 0 3 1 0 2 1 10 29 0 1 0 1 0 0 0 0 0 10 1 3 1 1 2 12 2 0 0 2 0 0 2 0 0 3 1 0 4 0 6 0 16 0 1 3 0 1 1 0 3 5 4 0 1 2 4 0 0 2 0 0 0 13 2 1 0 0 0 2 0 0 0 0 3 0 2 0 0 7 0 4 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 1 0 0 0 0 0 1 7 0 0 0 0 1 0 1 0 "275" 1 0 0 0 4 0 0 0 0 1 1 0 1 1 0 8 0 4 4 0 0 1 0 1 1 0 1 0 0 15 0 0 0 0 0 0 0 0 0 2 0 0 2 0 2 6 3 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 7 0 1 1 2 1 1 0 0 1 1 0 2 0 4 0 0 1 0 0 0 4 3 0 1 0 0 0 0 0 0 1 3 0 1 1 0 2 2 2 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 2 0 0 0 0 1 0 0 0 0 0 0 0 7 0 1 1 0 2 0 0 0 "276" 0 1 1 0 2 0 0 0 0 0 1 0 0 1 0 4 0 3 3 0 0 0 0 0 1 0 1 0 3 5 0 1 0 0 0 0 0 0 0 3 2 0 0 0 2 0 0 0 0 0 0 0 0 1 0 0 0 0 3 0 3 0 4 0 1 0 0 6 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 3 1 0 0 1 0 1 0 1 1 1 2 0 0 0 0 2 3 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 3 2 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 "277" 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 3 0 1 1 0 1 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "278" 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "279" 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 3 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "280" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 "281" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "282" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "283" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "284" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "285" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "286" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "287" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "288" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "289" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "290" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "291" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "292" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "293" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 "294" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "295" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "296" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "297" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "298" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "299" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "300" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "301" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "302" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "303" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "304" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "305" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "306" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "307" 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "308" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "309" 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "310" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "311" 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 "312" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "313" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "314" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 "315" 1 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 8 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 "316" 1 0 2 2 0 0 1 0 0 1 0 0 0 0 0 0 2 0 4 0 0 0 0 0 0 0 0 1 3 5 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 3 4 0 0 11 1 0 0 0 0 0 0 1 0 0 0 0 0 0 2 2 0 4 0 1 0 0 0 0 0 1 1 0 0 2 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 "317" 3 2 2 4 0 0 0 0 0 0 0 0 0 10 1 0 1 0 4 0 0 0 0 1 1 0 2 6 2 11 0 0 2 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 2 0 10 1 0 0 0 1 0 1 1 1 0 0 0 1 0 0 0 1 10 0 0 11 0 1 3 0 0 0 2 0 0 0 0 0 0 0 8 0 6 4 0 0 0 0 2 1 1 3 1 0 0 6 0 0 1 0 1 0 0 1 0 5 1 0 5 0 0 0 0 0 0 0 0 0 0 0 1 0 0 3 0 2 "318" 11 3 3 14 1 1 0 0 0 9 10 2 3 4 0 0 1 0 11 1 1 2 0 0 4 0 0 17 0 43 0 0 3 3 2 16 17 0 0 1 0 0 0 0 3 6 1 0 4 24 0 0 10 2 1 2 2 0 26 0 6 1 1 0 1 5 1 1 0 1 6 7 0 2 1 8 17 0 0 29 6 2 8 8 1 1 1 0 0 1 0 0 0 0 8 4 5 4 4 3 1 0 3 0 0 5 1 1 0 1 1 0 3 1 6 0 2 1 2 1 7 1 4 0 0 0 0 0 0 0 0 0 3 1 0 0 0 0 0 1 "319" 9 8 14 7 2 2 0 0 0 6 17 4 0 3 1 1 11 1 7 0 2 6 0 10 6 0 8 13 17 84 0 0 5 6 1 28 16 0 0 0 0 0 1 1 5 15 3 0 4 15 3 13 5 3 4 2 23 6 20 3 1 3 5 2 3 1 0 2 0 4 3 6 1 0 1 13 36 0 0 37 3 7 7 10 2 1 0 2 2 1 0 0 1 8 30 5 7 5 3 4 0 0 3 0 1 14 1 2 2 18 5 0 3 0 48 2 0 1 3 0 11 0 13 0 0 0 0 0 0 0 0 0 2 0 1 0 1 0 0 0 "320" 6 9 8 17 1 2 3 1 1 2 27 8 1 3 1 6 12 3 5 5 4 19 0 19 9 0 9 17 5 109 0 0 1 13 10 32 9 0 1 3 0 0 0 3 17 39 7 0 4 17 3 8 5 6 0 2 18 2 13 3 10 0 2 4 0 1 1 0 3 8 13 4 4 2 7 21 33 0 8 12 5 23 4 13 4 1 3 8 2 0 0 5 1 7 15 4 7 7 5 12 4 5 5 2 3 5 9 7 2 9 2 0 9 1 0 6 2 1 7 2 17 0 15 2 0 1 0 0 4 0 0 1 6 0 7 0 4 2 0 0 "321" 11 10 8 14 0 1 3 3 0 8 15 17 4 5 2 3 12 5 12 7 7 8 0 11 7 0 2 41 3 52 0 1 1 14 10 29 13 1 0 3 3 3 0 1 9 21 57 1 9 15 3 7 6 7 1 18 14 0 22 1 10 1 6 5 5 6 12 20 4 11 12 34 12 1 27 19 26 0 10 17 2 13 2 25 9 1 7 3 0 1 0 2 7 9 6 10 19 14 4 21 2 10 17 0 9 10 9 0 38 6 6 0 10 0 1 3 0 4 5 1 31 1 18 5 0 0 1 0 0 5 3 1 6 0 8 0 5 9 0 0 "322" 6 6 3 14 14 3 0 3 0 10 10 5 0 2 0 15 12 6 7 8 5 10 0 23 13 1 8 3 10 29 0 2 9 8 14 12 0 0 2 6 0 3 0 3 10 37 8 0 4 15 3 13 4 7 4 8 17 0 11 9 6 1 5 11 2 7 13 9 0 10 9 3 5 0 24 31 19 2 5 20 3 0 0 17 8 1 4 3 2 2 1 4 3 13 18 11 13 5 1 7 4 14 18 1 3 3 13 25 35 17 0 0 8 0 2 5 6 4 8 4 18 0 14 1 0 0 0 0 0 4 0 3 14 2 5 0 1 8 3 5 "323" 9 9 6 1 10 0 0 1 0 5 4 3 1 0 1 10 6 8 0 4 3 8 0 11 6 0 15 6 13 14 1 0 1 9 2 39 0 0 0 3 0 2 0 1 14 20 17 0 1 1 4 3 7 8 4 8 5 0 4 2 8 1 4 5 2 3 5 3 0 16 8 14 4 0 5 12 14 1 5 4 0 2 3 16 6 1 8 4 3 1 1 1 0 6 9 15 10 6 1 4 3 9 24 1 4 2 3 0 16 5 7 0 7 0 2 6 0 0 8 1 8 2 5 1 0 0 0 0 0 0 2 2 8 0 0 2 0 5 0 3 "324" 9 2 5 4 6 0 1 0 0 1 1 0 1 1 0 5 2 4 1 2 0 2 0 8 3 0 0 3 3 5 1 0 4 2 15 26 0 0 0 1 0 5 4 0 2 11 2 0 0 2 2 3 0 4 1 4 5 0 3 0 6 3 2 2 2 2 5 16 1 3 6 3 5 1 1 16 9 0 0 4 1 0 7 7 6 0 6 4 4 0 2 1 0 3 5 19 2 5 1 4 2 17 17 0 2 2 1 3 2 6 2 0 8 0 0 3 0 0 2 0 6 0 4 1 0 0 1 0 0 1 1 7 4 2 4 0 0 4 1 8 "325" 5 1 2 2 1 0 1 0 0 0 7 0 0 3 0 1 1 1 0 0 0 2 0 2 3 0 2 0 3 16 0 0 2 2 1 8 0 0 0 0 0 1 0 1 3 2 1 0 0 0 2 4 0 3 2 11 5 0 1 0 6 0 0 0 0 3 17 2 0 3 1 2 1 0 1 4 1 0 4 3 0 2 0 3 3 0 1 0 1 0 0 0 0 2 2 8 0 2 1 0 0 4 14 0 0 1 0 8 2 6 1 1 3 0 0 3 0 0 0 0 6 0 2 1 0 0 0 0 0 1 0 0 7 1 3 0 0 3 1 1 "326" 0 0 2 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 2 1 0 0 0 0 1 0 1 0 0 6 0 1 0 1 1 4 1 0 0 0 0 0 0 0 1 2 1 0 1 0 0 0 0 0 0 0 1 0 3 0 1 0 1 0 0 0 1 0 0 4 1 0 1 1 0 3 2 0 1 1 1 0 0 4 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 1 0 3 1 0 0 0 0 2 0 3 1 0 0 0 1 2 0 0 1 0 4 0 0 0 0 0 0 0 0 0 2 1 0 0 2 0 0 1 0 2 "327" 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 14 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 2 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 "328" 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 2 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "329" 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 1 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "330" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "331" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "332" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "333" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 "334" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 "335" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "336" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "337" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "338" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "339" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "340" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "341" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "342" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "343" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "344" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "345" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "346" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "347" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "348" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "349" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "350" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "351" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "352" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "353" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "354" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "355" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "356" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "357" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 "358" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "359" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "360" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "361" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "362" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 1 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 "363" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 1 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 3 1 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "364" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 3 0 0 0 0 0 1 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "365" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 3 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 3 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "366" 2 0 0 1 0 0 1 0 0 2 0 3 0 0 0 0 0 0 2 0 1 1 0 0 0 1 0 2 0 2 0 0 1 0 6 1 0 0 0 0 0 0 0 0 2 4 7 0 0 1 0 2 0 0 0 0 1 0 2 1 1 0 0 1 0 1 0 4 0 0 0 0 2 0 1 6 6 0 0 1 0 0 0 6 0 0 1 0 2 0 0 0 1 0 3 2 0 0 0 4 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 "367" 3 2 0 0 1 0 0 0 0 1 0 2 0 1 0 9 0 1 2 2 2 2 0 0 1 1 0 1 3 47 0 0 1 1 4 2 4 0 0 0 2 1 2 1 1 9 4 0 0 2 1 14 0 0 0 1 1 0 13 2 12 0 3 1 4 1 4 3 0 2 0 3 12 0 1 15 13 0 0 3 0 2 1 19 1 0 0 1 1 0 0 0 1 0 0 4 0 3 0 3 0 2 0 2 0 0 0 0 2 1 3 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 8 0 0 2 0 0 "368" 5 8 0 2 6 3 1 4 0 4 4 0 0 0 0 28 7 6 12 5 1 4 0 1 1 1 0 7 9 58 0 0 0 1 3 5 1 0 0 9 0 4 5 3 4 7 34 0 1 6 1 27 0 1 0 9 11 0 22 15 5 2 7 1 2 2 6 6 2 2 3 12 21 0 1 17 27 0 0 19 0 3 3 22 1 0 0 1 1 0 0 0 1 2 7 8 1 6 0 7 0 4 4 1 1 1 1 2 6 0 2 0 1 0 0 2 1 0 0 4 5 0 1 0 0 0 0 0 2 0 0 2 0 1 1 1 0 2 0 2 "369" 10 2 0 2 6 1 3 5 0 7 8 5 0 0 0 13 5 1 14 8 4 4 0 4 2 1 4 7 7 76 0 0 2 0 2 5 1 1 0 10 2 4 10 7 2 21 40 1 0 2 0 28 2 1 4 8 7 0 16 9 6 1 8 0 3 8 13 17 4 11 4 23 31 0 4 29 23 1 1 11 0 1 3 28 2 0 0 4 0 2 0 2 4 4 12 5 0 7 1 9 1 10 11 0 0 0 1 0 8 7 1 1 5 0 0 1 1 0 2 0 6 0 0 0 2 0 0 0 0 0 0 1 0 1 3 0 0 2 0 1 "370" 6 8 5 4 1 1 0 1 0 6 5 6 0 0 0 4 11 4 19 5 6 5 0 3 0 5 0 9 8 28 1 0 2 2 2 4 1 1 1 5 0 0 2 6 10 25 7 0 3 3 1 12 1 2 0 2 6 1 28 11 11 0 3 0 4 3 5 11 1 8 3 8 6 2 0 20 48 1 4 6 2 2 1 8 2 0 0 1 0 5 1 2 1 8 12 15 6 4 1 2 9 7 1 2 0 1 0 0 9 7 1 0 2 0 2 2 0 1 2 2 2 0 2 0 0 0 0 0 0 0 1 10 3 1 1 0 1 2 1 3 "371" 16 9 8 10 4 0 0 3 0 6 10 4 0 0 2 5 1 4 9 6 8 6 0 1 4 0 2 6 4 69 0 3 1 3 10 9 3 0 0 2 0 0 1 4 6 10 9 0 4 3 0 4 4 0 4 2 5 0 24 14 11 2 8 0 13 3 5 0 1 3 3 12 10 1 19 12 35 1 5 8 0 1 0 9 4 0 0 8 0 0 4 5 1 9 11 12 5 3 1 7 6 2 7 2 2 3 0 0 11 8 4 0 0 0 6 0 0 0 6 3 9 0 0 0 0 0 0 0 0 0 0 0 8 2 0 0 5 3 0 0 "372" 14 7 5 2 4 1 10 2 0 4 6 5 3 0 15 9 7 0 17 9 2 6 0 11 4 1 0 3 13 46 0 1 2 1 8 3 1 0 1 7 0 0 2 4 4 6 10 0 3 2 0 11 0 0 4 3 2 0 13 9 2 2 6 0 5 9 8 10 2 9 1 1 7 0 17 10 31 3 5 18 1 2 0 5 2 0 0 2 5 2 3 4 2 3 17 7 3 3 10 11 1 3 10 1 0 6 0 1 7 6 2 0 11 3 4 1 0 1 4 1 12 1 6 0 0 0 0 1 2 1 0 1 1 1 3 0 3 2 0 0 "373" 16 7 10 7 6 0 1 2 0 1 2 3 2 2 8 11 2 1 19 3 1 9 0 7 6 1 3 5 10 93 1 2 0 5 6 3 1 1 2 13 1 1 1 3 7 31 5 1 2 3 1 6 1 7 3 11 0 1 15 14 3 12 4 2 6 11 13 6 0 3 0 6 12 3 20 17 37 3 1 13 3 5 0 5 4 0 4 5 2 3 4 4 2 4 13 12 19 0 4 4 1 15 8 0 4 5 1 2 10 2 1 0 1 0 5 11 0 2 1 2 20 3 2 1 0 0 1 0 0 0 0 3 3 1 4 0 3 6 0 1 "374" 12 1 3 2 10 0 0 0 0 2 2 4 0 1 1 5 2 2 4 7 4 4 0 6 1 1 1 1 5 42 0 6 1 1 18 1 1 0 0 13 2 6 0 2 4 18 6 0 5 2 3 2 0 5 1 6 2 0 9 1 1 1 3 0 4 3 8 11 3 10 0 3 3 0 2 3 8 4 2 9 1 2 1 6 5 0 0 5 0 0 1 3 1 1 9 10 6 3 3 4 9 5 20 0 2 2 2 2 7 8 1 0 2 0 4 3 0 3 4 3 11 2 1 0 0 0 0 1 6 1 2 6 4 1 5 0 3 10 0 0 "375" 2 2 2 2 6 0 3 1 0 0 2 1 0 1 0 2 0 3 1 3 3 4 0 5 0 1 3 0 4 31 0 9 1 0 2 8 1 1 5 8 0 0 1 2 6 14 8 0 1 0 0 2 0 0 2 5 2 0 8 2 6 0 5 1 3 4 0 1 0 2 1 0 1 2 16 19 16 1 6 9 4 0 0 5 0 0 3 1 0 0 0 0 0 1 14 4 3 1 1 1 4 14 5 0 0 5 2 4 4 4 1 0 3 0 5 0 6 4 3 3 13 0 5 0 1 0 0 0 1 0 0 1 1 0 3 0 0 1 2 1 "376" 6 1 7 7 1 0 2 0 0 1 2 2 1 1 0 2 1 2 0 1 0 2 0 2 2 0 3 1 4 21 0 1 1 2 3 2 0 0 4 1 0 1 3 0 1 8 8 0 0 1 0 0 0 0 1 2 1 0 2 0 3 2 1 2 1 0 2 9 0 0 0 1 1 0 4 5 7 0 0 5 2 2 0 3 0 0 0 1 0 1 0 0 0 0 4 1 2 2 1 4 5 2 1 0 0 0 1 0 1 5 1 0 1 0 0 1 0 1 1 0 4 0 3 0 1 0 0 0 0 1 0 1 0 0 4 0 0 1 0 0 "377" 4 0 1 3 2 0 0 0 0 1 1 1 0 0 0 0 0 1 2 2 1 0 0 0 1 0 1 0 1 4 0 0 0 2 0 0 0 0 1 2 0 0 0 0 2 1 3 0 0 0 1 1 0 0 0 2 0 0 0 0 0 0 0 0 0 1 1 3 0 1 0 0 0 0 2 9 4 0 3 1 2 1 0 2 0 0 1 0 0 1 0 0 0 0 3 0 0 0 0 1 0 0 4 0 0 0 0 0 1 2 1 0 0 0 1 0 0 0 0 1 6 0 0 0 6 0 1 0 0 0 2 0 1 0 2 0 0 1 0 0 "378" 3 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 2 0 2 0 0 0 0 1 0 0 1 1 0 5 1 1 0 2 0 1 0 0 1 0 0 0 1 0 0 1 3 0 0 0 0 1 0 0 0 3 0 0 0 0 0 1 0 0 0 1 2 3 1 0 0 0 1 1 3 3 2 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 0 0 2 0 2 1 0 0 1 0 0 1 2 0 0 2 0 0 0 0 1 0 1 6 0 2 0 0 0 1 1 0 0 0 2 1 0 0 0 0 6 0 0 "379" 2 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 4 1 0 0 0 0 0 0 0 0 3 0 0 0 1 0 3 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 5 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 2 0 0 0 1 1 0 "380" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 2 0 0 0 1 0 1 5 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 5 0 0 1 0 0 0 0 0 2 0 2 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 "381" 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 "382" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "383" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "384" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "385" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "386" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "387" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "388" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "389" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "390" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "391" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "392" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "393" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "394" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "395" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "396" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "397" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "398" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "399" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "400" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 "401" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "402" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "403" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "404" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "405" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "406" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "407" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "408" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "409" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "410" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "411" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "412" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "413" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 35 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 3 0 0 0 0 0 2 2 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "414" 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 2 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 0 3 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 2 0 0 0 1 1 5 1 0 0 0 0 0 0 1 0 0 1 0 0 0 2 0 1 0 0 3 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 "415" 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 1 0 0 0 1 0 0 0 0 37 1 0 0 1 0 0 0 0 0 0 2 1 1 1 0 4 3 0 0 0 0 2 1 0 1 0 1 0 2 3 0 0 0 1 2 3 0 2 0 0 0 0 1 0 0 2 5 0 0 6 0 0 0 6 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "416" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 15 0 0 0 1 0 0 0 0 0 2 0 0 3 1 0 2 5 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 2 0 0 0 4 0 0 1 2 0 0 0 0 0 0 4 1 0 0 0 1 0 0 0 1 0 3 1 0 0 0 5 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "417" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 surveillance/inst/extdata/n2.txt0000644000175100001440000000347212003774136016464 0ustar hornikusers"week" "observed" "state" 1 1 0 2 0 0 3 15 0 4 0 0 5 0 0 6 2 0 7 1 0 8 0 0 9 0 0 10 0 0 11 0 0 12 0 0 13 0 0 14 0 0 15 0 0 16 0 0 17 0 0 18 0 0 19 0 0 20 0 0 21 0 0 22 0 0 23 0 0 24 0 0 25 0 0 26 0 0 27 0 0 28 0 0 29 0 0 30 0 0 31 0 0 32 0 0 33 0 0 34 0 0 35 0 0 36 0 0 37 0 0 38 0 0 39 0 0 40 0 0 41 6 0 42 25 0 43 0 0 44 0 0 45 0 0 46 3 0 47 0 0 48 0 0 49 0 0 50 0 0 51 0 0 52 0 0 53 0 0 54 0 0 55 0 0 56 1 0 57 1 0 58 0 0 59 0 0 60 0 0 61 0 0 62 0 0 63 0 0 64 0 0 65 4 0 66 84 0 67 0 0 68 0 0 69 0 0 70 4 0 71 1 0 72 0 0 73 0 0 74 0 0 75 0 0 76 0 0 77 0 0 78 0 0 79 0 0 80 0 0 81 0 0 82 0 0 83 0 0 84 0 0 85 0 0 86 0 0 87 0 0 88 15 0 89 0 0 90 0 0 91 0 0 92 0 0 93 0 0 94 0 0 95 0 0 96 0 0 97 12 0 98 32 0 99 89 0 100 1 0 101 7 0 102 160 0 103 4 0 104 0 0 105 2 0 106 0 0 107 15 0 108 17 0 109 43 0 110 2 0 111 0 0 112 1 0 113 1 0 114 45 0 115 1 0 116 0 0 117 2 0 118 1 0 119 0 0 120 0 0 121 2 0 122 0 0 123 1 0 124 1 0 125 19 0 126 0 0 127 2 0 128 1 0 129 0 0 130 0 0 131 3 0 132 2 0 133 1 0 134 4 0 135 0 0 136 2 0 137 1 0 138 5 0 139 2 0 140 1 0 141 1 0 142 1 0 143 0 0 144 4 0 145 19 0 146 0 1 147 2 1 148 7 0 149 5 0 150 0 0 151 85 0 152 6 0 153 0 0 154 0 0 155 0 0 156 0 0 157 0 0 158 0 0 159 0 0 160 0 0 161 3 0 162 40 0 163 2 0 164 12 0 165 0 0 166 0 0 167 6 0 168 1 0 169 3 0 170 6 0 171 4 0 172 11 0 173 0 0 174 1 0 175 18 0 176 40 0 177 2 0 178 2 0 179 12 0 180 3 0 181 5 0 182 1 0 183 4 0 184 1 0 185 0 0 186 1 0 187 0 0 188 1 0 189 3 0 190 3 0 191 0 0 192 4 0 193 11 0 194 0 0 195 0 0 196 0 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 surveillance/inst/extdata/q2.txt0000644000175100001440000000344312003774136016465 0ustar hornikusers"week" "observed" "state" 1 0 0 2 0 0 3 0 0 4 0 0 5 0 0 6 0 0 7 0 0 8 0 0 9 0 0 10 0 0 11 0 0 12 0 0 13 0 0 14 0 0 15 0 0 16 0 0 17 0 0 18 0 0 19 0 0 20 0 0 21 0 0 22 0 0 23 0 0 24 0 0 25 0 0 26 0 0 27 0 0 28 0 0 29 0 0 30 0 0 31 0 0 32 0 0 33 0 0 34 0 0 35 0 0 36 1 0 37 0 0 38 1 1 39 1 1 40 2 1 41 1 1 42 3 1 43 1 0 44 1 0 45 0 0 46 0 0 47 0 0 48 0 0 49 0 0 50 0 0 51 0 0 52 0 0 53 0 0 54 0 0 55 0 0 56 0 0 57 0 0 58 0 0 59 0 0 60 0 0 61 0 0 62 0 0 63 0 0 64 0 0 65 0 0 66 0 0 67 0 0 68 0 0 69 0 0 70 0 0 71 0 0 72 1 0 73 0 0 74 1 0 75 0 0 76 0 0 77 0 0 78 0 0 79 0 0 80 0 0 81 0 0 82 0 0 83 0 0 84 0 0 85 0 0 86 0 0 87 0 0 88 0 0 89 0 0 90 0 0 91 0 0 92 0 0 93 0 0 94 0 0 95 0 0 96 0 0 97 0 0 98 0 0 99 0 0 100 0 0 101 0 0 102 0 0 103 0 0 104 0 0 105 0 0 106 0 0 107 0 0 108 0 0 109 0 0 110 0 0 111 0 0 112 0 0 113 0 0 114 0 0 115 0 0 116 0 0 117 0 0 118 0 0 119 0 0 120 0 0 121 0 0 122 0 0 123 0 0 124 0 0 125 0 0 126 0 0 127 0 0 128 0 0 129 0 0 130 0 0 131 0 0 132 0 0 133 0 0 134 0 0 135 0 0 136 0 0 137 0 0 138 0 0 139 0 0 140 0 0 141 0 0 142 0 0 143 0 0 144 0 0 145 0 0 146 0 0 147 0 0 148 0 0 149 0 0 150 0 0 151 0 0 152 0 0 153 0 0 154 0 0 155 0 0 156 0 0 157 0 0 158 0 0 159 0 0 160 0 0 161 0 0 162 0 0 163 0 0 164 0 0 165 0 0 166 0 0 167 0 0 168 0 0 169 0 0 170 0 0 171 0 0 172 0 0 173 0 0 174 0 0 175 0 0 176 0 0 177 0 0 178 0 0 179 0 0 180 0 0 181 0 0 182 0 0 183 0 0 184 0 0 185 0 0 186 0 0 187 0 0 188 0 0 189 0 0 190 0 0 191 0 0 192 0 0 193 0 0 194 0 0 195 0 0 196 0 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 surveillance/inst/extdata/m1.txt0000644000175100001440000000345312003774136016461 0ustar hornikusers"week" "observed" "state" 1 0 0 2 3 0 3 1 0 4 0 0 5 5 0 6 1 0 7 6 0 8 15 1 9 11 1 10 9 1 11 10 1 12 8 1 13 6 1 14 13 1 15 11 1 16 13 1 17 17 1 18 12 0 19 5 0 20 0 0 21 1 0 22 0 0 23 0 0 24 1 0 25 0 0 26 0 0 27 0 0 28 0 0 29 0 0 30 0 0 31 0 0 32 0 0 33 0 0 34 0 0 35 0 0 36 0 0 37 0 0 38 0 0 39 0 0 40 0 0 41 0 0 42 0 0 43 0 0 44 0 0 45 0 0 46 0 0 47 0 0 48 0 0 49 0 0 50 0 0 51 0 0 52 0 0 53 0 0 54 0 0 55 0 0 56 0 0 57 0 0 58 0 0 59 0 0 60 0 0 61 1 0 62 0 0 63 0 0 64 0 0 65 0 0 66 0 0 67 0 0 68 0 0 69 0 0 70 0 0 71 0 0 72 0 0 73 1 0 74 1 0 75 1 0 76 1 0 77 0 0 78 0 0 79 0 0 80 0 0 81 0 0 82 0 0 83 0 0 84 0 0 85 1 0 86 0 0 87 0 0 88 0 0 89 0 0 90 0 0 91 0 0 92 0 0 93 0 0 94 0 0 95 0 0 96 0 0 97 0 0 98 0 0 99 0 0 100 0 0 101 0 0 102 0 0 103 0 0 104 0 0 105 0 0 106 0 0 107 0 0 108 0 0 109 0 0 110 0 0 111 0 0 112 0 0 113 0 0 114 0 0 115 0 0 116 0 0 117 0 0 118 0 0 119 0 0 120 0 0 121 0 0 122 0 0 123 0 0 124 0 0 125 0 0 126 0 0 127 0 0 128 0 0 129 0 0 130 0 0 131 0 0 132 0 0 133 0 0 134 0 0 135 0 0 136 0 0 137 0 0 138 0 0 139 0 0 140 0 0 141 0 0 142 0 0 143 0 0 144 0 0 145 0 0 146 0 0 147 0 0 148 0 0 149 0 0 150 0 0 151 0 0 152 0 0 153 0 0 154 0 0 155 0 0 156 0 0 157 0 0 158 0 0 159 0 0 160 0 0 161 1 0 162 0 0 163 0 0 164 0 0 165 0 0 166 0 0 167 0 0 168 0 0 169 0 0 170 0 0 171 0 0 172 0 0 173 0 0 174 0 0 175 0 0 176 0 0 177 0 0 178 0 0 179 0 0 180 0 0 181 0 0 182 0 0 183 0 0 184 0 0 185 0 0 186 0 0 187 0 0 188 0 0 189 0 0 190 0 0 191 0 0 192 0 0 193 0 0 194 0 0 195 0 0 196 0 0 197 0 0 198 0 0 199 0 0 200 0 0 201 0 0 202 0 0 203 0 0 204 0 0 205 0 0 206 0 0 207 0 0 208 0 0 209 0 0 210 0 0 211 0 0 212 0 0 surveillance/inst/extdata/population_2001-12-31_BYBW.txt0000644000175100001440000001527511736257535022304 0ustar hornikusers"name" "id" "popFrac" "pop31.12.2001" "LK Loerrach" 8336 0.00955704642962118 219149 "LK Waldshut" 8337 0.00724420011321107 166114 "LK Breisgau Hochschwarzwald" 8315 0.0105990592491612 243043 "SK Freiburg i. Breisgau" 8311 0.0090836619332578 208294 "SK Passau" 9262 0.00220966550402911 50669 "LK Berchtesgadener Land" 9172 0.00438828082276013 100626 "SK Rosenheim" 9163 0.0025864978792549 59310 "LK Lindau" 9776 0.00339502377170787 77850 "SK Kempten" 9763 0.00268222141398706 61505 "LK Bodenseekreis" 8435 0.00876330426303345 200948 "LK Konstanz" 8335 0.0117248901250817 268859 "LK Tuttlingen" 8327 0.00583787093414831 133866 "LK Schwarzwald Baar Kreis" 8326 0.00921566883058548 211321 "LK Emmendingen" 8316 0.0066702513931154 152953 "LK Rottweil" 8325 0.00618217039050841 141761 "LK Passau" 9275 0.00817051610466703 187355 "LK Traunstein" 9189 0.0073625135299438 168827 "LK Altoetting" 9171 0.00475447240414782 109023 "LK Rosenheim" 9187 0.0104709772348066 240106 "LK Miesbach" 9182 0.0040435016584811 92720 "LK Bad Toelz Wolfratshausen" 9173 0.00512048954629225 117416 "LK Ebersberg" 9175 0.00525131897872801 120416 "SK Memmingen" 9764 0.00179240683418067 41101 "LK Ravensburg" 8436 0.0117995937310025 270572 "LK Oberallgaeu" 9780 0.00646798909056973 148315 "SK Kaufbeuren" 9762 0.00184234006756032 42246 "LK Garmisch Partenkirchen" 9180 0.00381184634344819 87408 "LK Weilheim Schongau" 9190 0.00560573591119647 128543 "LK Starnberg" 9188 0.00552047873105917 126588 "SK Muenchen" 9162 0.0535510160649821 1227958 "LK Neu Ulm" 9775 0.00702597661990823 161110 "SK Ulm" 8421 0.00516109028015815 118347 "LK Sigmaringen" 8437 0.00582936702103999 133671 "LK Biberach" 8426 0.00804810336571798 184548 "LK Zollernalbkreis" 8417 0.00842524100961945 193196 "LK Ortenaukreis" 8317 0.0179450446608073 411491 "LK Freudenstadt" 8237 0.0053065289992159 121682 "SK Baden Baden" 8211 0.00231498319713989 53084 "LK Freyung Grafenau" 9272 0.00360012071195633 82553 "LK Deggendorf" 9271 0.00508307232861562 116558 "SK Straubing" 9263 0.00193261237594099 44316 "LK Dingolfing Landau" 9279 0.0039779997226416 91218 "LK Rottal Inn" 9277 0.0051942337363752 119107 "SK Landshut" 9261 0.00259535067084972 59513 "LK Muehldorf a. Inn" 9183 0.00478543536982428 109733 "LK Muenchen" 9184 0.0130778408957106 299883 "LK Erding" 9177 0.005143733575455 117949 "LK Unterallgaeu" 9778 0.00588383567474408 134920 "LK Ostallgaeu" 9777 0.00577345924357911 132389 "SK Augsburg" 9761 0.0112441791805019 257836 "LK Landsberg a. Lech" 9181 0.00469280813165976 107609 "LK Fuerstenfeldbruck" 9179 0.00854181003391971 195869 "LK Dachau" 9174 0.00572793060109147 131345 "LK Guenzburg" 9774 0.00532536843748664 122114 "LK Alb Donau Kreis" 8425 0.0081550346218288 187000 "LK Tuebingen" 8416 0.00920419945034194 211058 "LK Reutlingen" 8415 0.012174856153039 279177 "SK Pforzheim" 8231 0.00514604489542803 118002 "LK Boeblingen" 8115 0.0160409967109481 367830 "LK Calw" 8235 0.00698258485815037 160115 "LK Rastatt" 8216 0.00978207305341068 224309 "SK Karlsruhe" 8212 0.0121923436871746 279578 "LK Regen" 9276 0.00360744716017273 82721 "SK Regensburg" 9362 0.00554708071565444 127198 "LK Straubing Bogen" 9278 0.00418806818132262 96035 "LK Landshut" 9274 0.0063017921015655 144504 "LK Freising" 9178 0.00677679016092892 155396 "LK Pfaffenhofen.a.d.Ilm" 9186 0.00493274931074694 113111 "SK Ingolstadt" 9161 0.005115910516157 117311 "LK Dillingen a. d. Donau" 9773 0.00411829248402355 94435 "LK Augsburg" 9772 0.0104025098318318 238536 "LK Aichach Friedberg" 9771 0.0054294650558947 124501 "LK Neuburg Schrobenhausen" 9185 0.00393465157069456 90224 "LK Heidenheim" 8135 0.00597694262082752 137055 "LK Goeppingen" 8117 0.0112361113655017 257651 "LK Esslingen" 8116 0.022037781795695 505340 "SK Stuttgart" 8111 0.0256055876378397 587152 "LK Enzkreis" 8236 0.00845476485153912 193873 "SK Heilbronn" 8121 0.00524028569659259 120163 "LK Ludwigsburg" 8118 0.0219457214850711 503229 "SK Heidelberg" 8221 0.00617118071818381 141509 "LK Karlsruhe" 8215 0.0184448567025227 422952 "SK Schwabach" 9565 0.00167976269285349 38518 "LK Cham" 9372 0.00573102689765911 131416 "LK Regensburg" 9375 0.00776668925654867 178095 "LK Kelheim" 9273 0.0048371129956364 110918 "LK Eichstaett" 9176 0.00527813901237734 121031 "SK Fuerth" 9563 0.00485189672150164 111257 "SK Erlangen" 9562 0.00444436303946426 101912 "LK Donau Ries" 9779 0.00568388469217143 130335 "LK Weissenburg Gunzenhausen" 9577 0.00415060735383518 95176 "LK Fuerth" 9573 0.00495102182147713 113530 "SK Ansbach" 9561 0.00176235967453126 40412 "LK Ostalbkreis" 8136 0.0137521357904845 315345 "LK Rems Murr Kreis" 8119 0.0180090638630791 412959 "LK Heilbronn" 8125 0.0141314539249266 324043 "LK Rhein Neckar Kreis" 8226 0.0230170837072875 527796 "SK Mannheim" 8222 0.0134486115072336 308385 "LK Roth" 9576 0.0054496127884898 124963 "SK Nuernberg" 9564 0.0214258053205714 491307 "SK Weiden i. d. OPf." 9363 0.00187831816148015 43071 "LK Schwandorf" 9376 0.00629594838691671 144370 "LK Neumarkt i. d. OPf." 9373 0.005552052234087 127312 "SK Amberg" 9361 0.00192829500467061 44217 "LK Erlangen Hoechstadt" 9572 0.00565841656265727 129751 "SK Bamberg" 9461 0.00302634643110391 69396 "SK Wuerzburg" 9663 0.00566556857163042 129915 "LK Neustadt/Aisch Bad Windsheim" 9575 0.00432417440086661 99156 "LK Ansbach" 9571 0.00800972673220349 183668 "LK Schwaebisch Hall" 8127 0.00815359549807201 186967 "LK Hohenlohekreis" 8126 0.00474998059363419 108920 "LK Neckar Odenwald Kreis" 8225 0.0065454401145717 150091 "LK Kitzingen" 9675 0.00388580858258521 89104 "SK Schweinfurt" 9662 0.00237970015638478 54568 "LK Nuernberger Land" 9574 0.00735666981529501 168693 "LK Forchheim" 9474 0.00492084383239529 112838 "SK Bayreuth" 9462 0.00324975949189337 74519 "LK Tirschenreuth" 9377 0.00348023734203436 79804 "LK Neustadt a. d. Waldnaab" 9374 0.0044064661138687 101043 "LK Amberg Sulzbach" 9371 0.00475708899279653 109083 "LK Bamberg" 9471 0.00624086919586125 143107 "SK Coburg" 9463 0.0018664126831285 42798 "LK Wuerzburg" 9679 0.00694752257025759 159311 "LK Main Tauber Kreis" 8128 0.00599669786512532 137508 "LK Miltenberg" 9676 0.00572897723655095 131369 "SK Aschaffenburg" 9661 0.00298121027691358 68361 "LK Schweinfurt" 9678 0.00509685302883219 116874 "LK Wunsiedel i. Fichtelgebirge" 9479 0.00371895744641881 85278 "LK Bayreuth" 9472 0.00476432822139131 109249 "SK Hof" 9464 0.00220901135686693 50654 "LK Lichtenfels" 9478 0.00309080173148393 70874 "LK Kulmbach" 9477 0.00343095825581689 78674 "LK Hassberge" 9674 0.00385563059350336 88412 "LK Coburg" 9473 0.0040207809470481 92199 "LK Main Spessart" 9677 0.00576547864820053 132206 "LK Aschaffenburg" 9671 0.00761326994211234 174577 "LK Rhoen Grabfeld" 9673 0.00378171196417716 86717 "LK Bad Kissingen" 9672 0.00477518706428348 109498 "LK Hof" 9475 0.00474230526693129 108744 "LK Kronach" 9476 0.00329070910424576 75458 surveillance/inst/doc/0000755000175100001440000000000012617067300014510 5ustar hornikuserssurveillance/inst/doc/surveillance-cache.RData0000644000175100001440000014536012617067300021173 0ustar hornikusersý7zXZi"Þ6!ÏXÌå<ʱ])TW"änRÊŸãXg€ÆqÅjnç]üLâËUJÆÎŽ+[Òܯ׼Ú½»•è…}Ð\Äø˜ëÈáô—F7º‰Ú¦Šž4´Z"ü¢òPÞIkÇxMÜ{dõLbÌÙŸ 'šÔÑýs„!›…p?ŠL˜úù÷,ùÁ¶Ä+”5Gë÷<èÿÍêÍÁãeF ø°Á‚¦ç£ÀöZ‡©X¹ |ø\št0`}¶ßb%Y§LH-ç ¨ýÞDµ ôL‡QðbÞxØ#MÒ¥ X‚1Xæ }˜­õÞÅödkº^~I³® ›«2{š·ð@Ú'ì&ß½Myµ iµöçm%a%Ò†‹V§”Ó4ÐŽÀ¥ŠÞ6†èÜ``œ<®î^✃‰gíÇ› Ó§;ª»AâÂÈŒãz~Š9] ‰ImŸ³ëׯòL w™Q§Pë¤6ÜéÙËKãÉ(ʯx \Î$03#ÇiRooÔÜÌdW?‹c÷Î äò¦$Ü·L8ÈD¶W±Î«~¾5ßC»Ý)*‹òÏÐÇZÿƒ¿zßBÿÍ$©ù½,Öýñþ»ªâˈ°x¢ÁÆ,3Xhƒ<ð„Ùr÷+‘èjràA<Ù7²=ikL£.˜Æš³}ÝÛrüÃ×þÁÿÊD}@’1<€Œ;ÒÂqõª0(|x‘s×P°j '\yý¥uò[Ï®¢6}ûïŠL‘ÑØU‡@Þ~iFŸ&ÅŒÊXßomûtúÌ|ÈŽœ£Px=Võ²µqx’KC U~ŒÈÞÍ®éNé“»ÆB' ? ‘—H«êaà™boÂÖŠJÀ•©ª ‘“¼YŽCIlÏeѽ@ÀŸ­)£ ýYלuä 5âà³£õÅ7¶% Fþ—Û°\¢)„BÒk; }‚ìõOèV8ÎU/út™’° l:1Á˜À—²Øl™êú>'àÇß›“³1þSÔ™þHKj(8ã0äL0UÇ=N)¢Žÿ´eغOØ 4ëŠÓÑô÷¯íüÈG^×jÝÀØdü2V#Œ_ pM®¥Ì1n9öv`…FÐèç°ã÷_8œB)É!V+Yö^LjŸbÏ.H¾L&ÿ S³‰<ýR³&FUþdÐPª²l ã«ð‰Ö’øÁÓI ‚ê?Lß06vº:Ör'ÉGÎ"’ðÅ—‡iöG˜þaè(üÇK® /Ì^6·ˆdO›ÃÇ~ñ„*8ð<.p;±±fQÍàŽ“À–…$Si.Š Ö.^!ú–\FʸvɧÙ~$$6tï5ø 骈hv'aº±[©t7³2˾¾:‰>Po°N×pi]fË^P@!Œ…ÁÂuÝôb‰ZC)À§ª©ttFôt0…´–Â'µ#W©P)%x’áNN%Åóü—`v¢5~¼å¤R×jðgàh½u¥7Í,3'­8I¹¼q­3d%8 iæ°T™ºl}8Aó…¬4›ËM¥'†„$ݧ4ptš—çB/ð'úGT¸kQWdòFbŽ5 6-ì׃„D{I¹Çû/ÊGæH…ôøñâøP¹@ö|Ù—'¡ï¿¹FÏ*$χÐ5£×.J=~…Õ\œr.ŒT=©÷Bµ ÆŠèš‹5?tjDºƒÖm`âÆð‰|« .ŽìÜ0à–/E§³‘i'Rô•líóš×èµeÓâ¨NÕ0wÄ„M©wç9\îÿRƒ–9&L»"ûy@Òƒý0î6þnŸë¢ðÌt²P)–®‰‚*JCK- çzC¥‘A„bÚÀ‘7Œ3'jUïRJM­£›Xž.Ãg’u+ˆåÖ8㣑 J1J_–Ñü³XPG­ tW¡lÙCŸüK9{â§ÞÒã%VFRSÜ\»tj°ø5쑱¸ÎX¨ÎÑm+}íÜ ¤C-0©Rb-†KiŸVïßÑ=E¤µooe ÔÃÛá®òëM”©>ó@Vy΢0.Ø) ¡“˜ §©RV…¤•^¥@yÅ'Qà`†Ön§¸&½~<›´¨xóS¶Àh«Îò¶?õ÷¢l²J=wbŒ3°þÓÕ·²‚Ãdò-I1òEÂù$´ÓµÊ]o‰AÜú4‰ˆ«úgÎiK—ÿ1]‚ƒ_r­Þ^dcxg¬;»¬+9"mþòb§0ù9`§šAúV*„y5 ¥$É ‡ß‡>-ûB]@“ fhîùnÂÑÔƒAX¾xÇ|é’µ<„âroX)-ÓZ¾ cìRõd‰|j^Ñ.C—çgÇ /Ñ^ç½Ë]y¯ÔÅCŽÅʱIQOØÕøbôh`Ò†¢– ö[xMìAÄŒÁdg†Ÿ ëVý3-Wwß ’§\–oÜ i/Éîßf0{Æê˜J"u9ˆG\·ˆ¤xŸUT§€/WÎÚЦmïãsõY5dç¯1[€mé6ØÄ]4)ÕnðQ u©c6/Âý®û?5]ÏÑì [Ly«W¹„ÌÆ›m['¶Â%޼€¸ J¢SÌB¹ê'Y#Ïo¸Z’ýÎ?£,šx)Us @Ù»„Heó/ÉEsõvˆÄ’ÖéO½|¢Èmi-‘˜¬ôÎÉéÀ„‹Ìöó›ãB"9{K.qJÞ©ÙHS…ÕøHx½rFSi%$©«‹êgÐ8¶ÕÈ?ÚºVyŸéŠ ¾C­„Ö$þдJ›¹U”`ÂÍYb „±®ÒåÚz±éËpšóŽÆ¾3Å(o©æµÛ±”ôkŒðþ~8Š´KA-Þ­>ùB¤ÿ˜±µÇ°Ü»J;DJ"'Rh¼Ýæ'«œNÙûS¿3Ä 9Œ‡ØfRžàÚu…6Ê•äö™a.p3Ä\!ßaNKé°¯ÔúZÕÀ<½"K“*i‰µ à…Òü¶áŽ<.É’—«#èÎL¹ANÉäw]˜¹–v­}oêy’ÊLehò…Zü¢Ø•ý„ºl —ª77­^rOö;º †ÅkÔκW³ Iuà ±Í÷ê<¤ýÁ¤X»{$ÚøQº^bïaYc{IŸ÷…¾HÕ‡pŽiÖ.qÇ}±zMÂ^ÒܬS¾8¾ƒfo¡Èjž“û烔ö%V/ÆÚt6nþwY`çsN Ö|ŒO­Ž–{òƒ˜Bd-™ç9º_Áã„T½È°g¦u{šJ‹I»L¬Š²ŒKÓbÄ,x*Ï×þçZ°-*\…Y–¦—oü&ë9—xÉ Eã±&7º¾úq`L·.ò ©”<•Ö°ó6›©ŸB*Hžš$½ò KÙ#S¼7:.ú yœ4 †{R8{€…âEþ_†ã®…£8VQ‡É¦8ÛÈÓø)s -¨$S¸Èê¡2?eø4>äþvj£hTÒÃ8{\‰´¶PËh:hÊ„–ë?ô.MŒwŸ¶mÛð”–ÓQr³U6@·Ö} ” øõØÎ–‡5Ð"… u71Ã׬)Tú±­ðæþÆ®¿Ó×Má€L¨Vu€Æ„Õ¬7{ƒ\ ¥–ÅÀ}®û6½Ÿlôý 0~ž4èóy¡¹«?GîSâZ¤¨©pŠ¥/ò^ÙÛK]kíˆÓ’~…%¢¢vEP7&=+·õ±·Õ¹ío:ÁØðKëÿD…¦±šî‚¸`ÈI´µ–¡|ʉ.’}pÀ°rÎ9 C›t¼œnÙj;G•šþ9ÃÈ®¶ë zÙ)½G܃õÅõhêý÷÷S’ŸS]ÀÄl’ÆMG˜._¹/k(vvâ5z¾i?˜„I[Û^g„•}¼æ[Î"^Æ„éh>=Äî{ƒbE$?öâ„ü>büÃNàî½é‡3RÒ-Ä·õ³í¨Fœ¥l¥•‹æuMºR1j­C0˜r[ÿx*ÉÀr¦¯&×vFÍqµßäíc£b­¥‘Мެ°füñ WGÑŸ˜Ä‹éßL N&@»@’±ÿÃ%НkZž‚1È®³šiªÌ9-,Zq[Æžn’¯O©‘®ÎÅVòÒÚÒI×Þ]¸âzM‰þ·aVCׇ»´ÃÃÑ©–òge‘klþJ£¹CÅleœ <—¿nл„âY ,ž˜ó”äCøÛ̽lüÏVN,‰Ýâ-¾¯H+íÑzò¸;dHä³÷Ҷ grpŠÁ/¾£Ð)À-œ„´X;¾ßS˜üÑýá²b¡ýK€lU\õîgQ'0CNöFõ3˜ÉË2A®–m÷Õ²»_£Á¦Š:Æ^+ñ7 $ч›m~©Üt6•ïfÍ>¬‚©ôM®1Ùïíùr'ž“oæß}މgï¥Äâ†[-¥ ò°ûTʲ¿R™¾U=ƒy8Ó“`^¦‹27SpÝõ8‚„«…C‹E»€²¶Z ¢–M»"ÿ²8);ÂÔð¯öåh¯ÏÕÕÐí~µá-ìæ›ñ©}-lBo˜³£ž^b`¬Éž^N.«“ìI½ûÆGÀK m:9Nâw>"Ýð¨9’¤§¾7:Ÿœ³?S~I H.«Ãc9êÛkc̆!“;7ƒ¤P2¾¥zY…R® ¢ ª†•mWŽý1zû½|f÷‡è9Ø“^ÖÆ\´#6_ôy:f‰æìó0ßçÑɳô¾š›Ë=O¨Áúž!íü°[н…K†ƒ£®§•èßT¯š¹“Ö‰£°Ýf±Çþ­Z¸¤‹¤žæl@hàq L›Uë×&\ž+úxÔ(H†Zq‡˜»y»ìÙêüT½ˆO’Þ2¦û>Ÿp>gñäÿRÿ¢öLÄku{ÝAb¿çü+š&÷`ËpõlƒÐ[ô EðšŒvÁzmölSXùÁáÁN¶Ÿ¡]ZF—öÞÉ,ÝX~ñ‚OŽó\ö‹âÊj}¬Ä÷¼4ͺ~yPÜÚI!ÿTFƱ‘‘ÍZFN¹ßˆíñ¶•ëø9Òó`tˆé'`¿’(<d…¦ GÈBiUUƒ¸…«¾m‹M'I*y¨]ˆÙPç÷‰aòDâÖ8š®-Ø@öCøõÚwž9u>h  ðkÌÄø9^Ö¥n;„4‚m?q]Ý\‚üÿà{M‡‘£ö%}a‰’Éë׈v`æéàÄ;d‹Èèá†{/w0ºô€h²TK¬AÇã°Ó“Õ¯uÎøÎÿôZCÀ—]›y”Wšð«=©I+2¬Y˜Ô¹ó*`mÈ-éUÞžÎܬKk;„#Ê‚*~ªÁãå;úôÕ‹&Õˆà_KÒúÃoØ:®=H1ßF2déÔÿg¬ldòÚ‚íIJ6ònú®ûÓbö6Ááñ”ç„›PiÇ:ÐiLNO+%p8¼wáhC”?Rò¿©’Ÿ^"§`Ï|ðéË׺ºÍöÂñGpé´=qù5Çm<1Òs¤Í'[õƒæ¶‚Éj±Tê ùZ‚KØ‘bº+šÒ¬7­ÀLrI¯£Ê`D¨'ïWðl†NÄ}Œ&'\«¢(aï~±®áÍæh ìwÏšûð‡X›% k6ÕqÄA‚ÊA@½õ.tWÁŠF¿*pUNËüƪôAO•¯Ú†/í²ï6>ãX^LÆô;„2 Âý{Eb÷µ_{7ú(SZÇtœÐ º+ª¨œØ‚é!"ƒÎ!TÅl饼A#äVðx×0‘XÆ gûÁØOØê6Ý!Ñz³aÕ›+*µ–?°ÍOã¿7‚x ž,õÐÀÝO\ÕÙ{XüOG¸¦­ñd³"½S ¡»÷ŽaYÔD5!ù0Îç¥fM-æ»R\Ó/++™®Bn‚õ÷å eÓ/þçø-Ö9@€"²EBÄ•X±+ÙlÊ´¹Xv`n¾‹W»Ö‡Ñ€®ã>\Ô6ê25?Q—`áÉ,š;·sírÙi° ×UH)ðòÿ5-,È×øho‹‡,‰f1GØxA‹lå‹ o»ßŸ×Bç0iB9f} ܧçƒ~)q%^m Æ8äc¡ö¬3m£ˆŽÔwL[×oÊÓ” s dnÍ®-&·ԹK©jؤYüL†‰Äȃ>X{ù–FõS®w:®;te‚;­EDP?rÿ¡¨z‘UD${Íe83<`ÅP»Áø(ö±éƤ¿ ¸ý¥øncsçd2ögABêù娘ð«q/äÔaJñ5ÄÓ+¹'L'£Ìfýšˆˆ%Ûlº O#&-,†ç{ò™ÕOÏ긋¹!DYry…Ñ­Š@ m®GMå<4½ûO|¨P|{Z„ZP0¢qýã½%4ô[À5…'tI~íŠktêxö•Ü^“ÃÓ°#Š9…Y¯"™@ ´ŽÂÞÌ_ÿdí’¡SÐ÷[ÀpNΕ[slW(éý:Œsñþ*¥àÛ‚Øc¸Û%×–%WêAM÷U‹(k•OkCŠŒ¶ÂúæC^6¦ðUŸª–åm] ‹w\ÿ>#!ä"]軺''Á¯¢©ÍsQ¨s'̳¾ý 3¥èìƒUǾ˜³ë™Ñ3T²%JŸ š¾Ì4 ¸äHDÊ©€ÛÁß§x¾XR ´¤%¡‚¨É[ ÇHXr|úáI,Dé*!(-[ÍãfÅŸº–ƒ@>Ãú8º1„|ì~C­„¢ † ŒÊgúÁ@ša«ãÎÖXáoà½!‘ÅZÔ]lÀyO _4^ûMfÀÂO|jÎÅ­Ÿ ðËÈŽãfÔ_ ø³‰Ùèõ,³ –ôG‡"I‚ñ§œ,HýÿC¬ ¹žr«¿ž¬™ØýK™¿läkÂ9Á¼`ˆ¡9·Gö5TT±yWy.tÁ_÷ÎÔ7ç_”ÖF¥ÂÐü¦[Ïî*¤û—RƒÞ+¶2Ì×TÆR¦ùb½4†püÑy>i£ÆK"ÞçÐhÄ‘’*³G.Ÿ4~¢¨H¾²ë¼”KËÂŒ9Ù"Rc5r¤ÚTo&å/iˆ1Ëêå6¾¢@ÑŽ•ˆ­ÜÑüH2²cb ¢Â‘+º$I­ò%£t”Ýtu––b5Þ¤e·}ýoµææeuý»ÊèZ/¨—ÔG’x£Ú¤Ø¶§»’aÀžIÚÁ›áXoR݇ù› R³Í¸:èƒ¹Ñ ýPCuQE²³æ*R60§é†…‚{ÅP 8g;ø´Ñ¤wڈߕ̋47?ïŽ4›¦q­4qîùlW8\ šuÙÜJd%MÏ]ñYhˆ™]ð̇"Q(­á¸Ï¸K`nÛöƒä'\´ºhl#+b‡øFõÕ\¹ÿuyØ Iv²PUðï“iP¡{Ò/[ÉÀófEQ htûwÞCÈüɨ”I&ù§ÞcÈ'.‚zik=WäÛÎ@áL ¨mL7¨#ø]º¸r&¼ƒm+9NRENß-’…Íæ\0/L?>ÍÇŸ«‡WœßíËæe6uà ÛEMVÀ?ŠÍ@ô:þ︲2•O³úu6:ùÜ…Ö˜ Ë”c®`ùòôX3—Iß8ïÅŸ l¿ @÷°yj^«.Ã<Þd×¼s#¤Ó 5bôY] ”EÝ%<¥!zÃøŸOk¹áÞê38j…C}íœH¥H/ª'Þì4ÂËv¨Àa:-0OÊCMämAªØ¼L¦Å=C.îUPèxþ[ÞãÊ»¶»·PŽ#ð¿}—å_åϨ¾¶ A? l=…ØW†}lÔŒ Ó1ò£úõ°º™ÊSS¸LÆf– UâÑæó}v;0)u~#õ>xæ$Á„Xj©ç¸TYãûH¾,È+îÃMt™²ób­ÜäÁo0 ;·–‚:×dÐa·ï™0i"}Aê!`¯_éûø¾>‚j3J Õ¤O³«ï Çdž‘ñ€•È»®cA}(IÁÝPåf$£ÜÛŒ6ˆ*Äi…p][<Ä‘äætš¼ÇjŒ–‘UâùPËþ“>ÍÇ£å̹ë Ái$“Ñèƒñ3·…œæ| ³úûšhÞmÅÄ ~Ìß}¯¯Õ>›^ÍG–¿U Y)õrìoáýŸ¶kžëm쎸›íذ:·"ƒ¸ßÚ¹ÊÃ}3šç!/6ã­ÏŸø{…®Uw@› Nã”!<ÐeÝl…F/,Õ¸s‡D­ÒÈ„>üsôÌnl¯Gî{à”_ÝÂëû!)·Ô÷ËcQš[9üTÉÀ¯FjF¹ÄCðé7ΡV±ÄV¼ïp=ÉP~RbTy± ZpSRDÄÏM냈ãž>Km×DäÂKƒ¦0‘f·²š!4D÷ãC®*­kÂ3°i£jÆV⼜ÐN“/»R6‚{ J[ý3qú¶& ã?Ý,šÂ±½·±\+LU‹NLû“Z•dÕEÄß%Ô5Æ)nÝ2©ÒÂõ{Ã…7†À„L¹°*J³Æ”áš;wÜ£”[F?4vñŠÁi%©)Tó+Ã@ñgÌR×hín(+í6•÷U›Ú a†ó¦%04­{‘0$R³“ 'ý­H¡åŸ`ç“ÓñjO‡b-åôÅ­<` *¦qòôÄ•/;àㇹòs¹X¿µ§C¬ƒp«¢a‘³¬( n†:”QÊA½AAgOI¶žuÍd;DÁBtÀ•¨çŸPjx:Á)2Ï |ÓêÀr¦×3w. &ROÆDy4ïˆu¸ÏÀ©-RñbÑZ23HS醯d I ìíâÒ®ôZÐà2½™aØï=‰C õ®_š—gµulÔZ$·×÷!&5ü~# E¦æ!óÂh˜Á&òÝu”…Žq×4; ¬òp¯È‚û·Áè©Æñ$u÷“áÿOã¨+nBöñ•4T꣛3÷kº÷¹òPHGJuÔ};ÃöbÐ,ÇBo|”Rïø"þÄ.f¸o¦:ÐíË–˜µOÁ^ÌŸ(—%¯Ê$mæƒc´ñý‚ßµU«±ŽÇÄJŒ®ð„°ò¬¸(ÄŽ·M}"›>Y§>s|„Å!¿ý§VVº~dþûliGh<††±·ïVÕz\o£ß}ƒmç•-ú½˜#r_©YLFÀÞ{F±lcBÛw‹M&’G潓*ÞË}#Puèäã,Ú ×]´Ò°à”zæ{Lü±¬._Óᓾ¹=ÞâZÎ5¥ÔfÔñ¼ÜŸÛºù9ÖŰýùÐ11q³ˆ…ˆÿšvßžÔÞf“Îé,µü¿ÒC¸È9D¹Þž7åŸbšÐÔZ éûã›!ª<¢,8Ÿ=ïŒ2ä'aš®7m†"Æþð”¢Ý…?胭0‡ÒèsW&D¬Í=i9|sÈÖ¾à”yjN‚ü#ÒÑkŸ] TèÁyÊ RL½ÃË| & ÆY›hq·|ì€x{æ_‚H. ”oŽ‹§:A!ˆ/­€ú±x_sšXÙ„½›Ì3’¥?-U ±‰æ{oqIJOLj]|7âÔ›¿2q6(ô|†yƒ³&(·ýS˪ŒkŒf´ñ/’þnc“ +rÅ3‹«¼¢Á>"”ý˜Å)ÊÁP”nw^Ü}K•ð#©nž« Q™£-ìž®Ø`XœÌéÈôô–íÈ«þÀN©¿9§Š+ÖõžÎÊ O®Â‡xøûã¢G§–Ë&8>¶ÀÿnlÕÜ“·® WìÖ—ôO ½~ÊU Ç¿cK@vÓ«¬ñÿ'"Ætg›ŽO ÚÊ//i!ÿ‡Æ~…KThG|C¹[ùÆÚM@çJüt1éó+LÐê{¿è„¡çT‰Œ¯—ö8NL§DA;œ,žsE}ëk“Òqc¼YØ+DsÄ™ºn Mß™ð)U%ðê„n|[Ÿ& ¡`s,¼¯æ*„Ç,˜ô_ÌmBJ«‹ËÁã%6Êl]Ì<ÿ:À5Ÿ0ñ^ßX²ˆZ`‘3%4(ÂÆÒXàuâ)O+~·üFhK§¿¬›yzQ†„âžrð£³â9µ õ9=‹j¶¡MÏM%Qö‚]ÞüjžÆé¿è ¼*­ñD꤃çLÿ_ë,Y½]c­æuùÕ+Ú~™7î :Šdž“(÷ÅÄ‹qëŽ.ÃÛ¼ÉEϤæÈ‰¸Ôî÷uÄ|uèøÓØ•¯1XÙ/´ø®‡•ˆjÁmÞž¨–›vñ£´®)rŽ?®d QȾp|B]”{uŸêìÙ?žÛžÎ;šÎ+ E—ôÜö°ã£>Y•Öf¥ØÎjE¿8 „„á³ Öƒa/¤Ôqve—~$¼“ Ëóf±QÃXIqO80U°Ê:IŸ©IÉ%ýÊ·sƒEU` ì4™iÍ#õ¶—¡Ñ $¦^[ÅÉû±¥wdB§yõ¥p(¸Ks# ù1‹<éxëp"c‡m§]:ܰG«ßå,«‰’;ú¨»Jæ?4»Zϸ¬‰ôŸÖúåˆè€zLB­w s<#´£$*Ó Égþ”J©bÆ'Žü}~”ÉC‹ '[Mlũ߂˜ÒÕùI²Ž0Êrƒ-¯wÔË «Æ* DWò3Á¶Éô߉Km÷ÏäïÛ‹Ê…=Y˜Ñ“ÈA3+”‡ŒPk´&AŠª¡‰ šöš0Uc†4”Å0f6ô›ô…<¤sô7j[FÃÅßéÞ  V‹åéÙ¥„¥h” H¹LbõÉñÊZÄô]å N¾Q˜wÌ,…­öVã<ÁR‚m ö#tÁiÃáqùĹ.Ó»H¶A 7mFÊÈ‘ Î=š.]bSîÿ%Ý;ÀA?‚ãÊâ5 éÍ­µÓÄBÉ!nøe2 ²¥j4*FˆíF–T”<'üð'Å?j‡*J¹ ]vΩ1—Õ"–ò§æ•XH¾SÅ„áŸR@ªrñfÕÌf¥FVó»‚&EIÌô™¢eº]¶“| î‰GyÒÈî­ÙKÔ=¨Ç« Fý€ÁÚÙ6á¬å+¶cPÕ‰vO »·ÇsƒÒa(†”Öÿ}E]À†ì•tñù‚£ž-»°dœ…ØÏuý°²P³Ü6Óüšhú/Ú4‡,¡`1¯r÷¼µYœa9+w¯p¾äZÖ£'5½$õ¡üecš—­nì$ÙD‘SpKKÚEd–)–íÛ\®ÿKðІk÷R̾Ç©Žå×å¤Qú\_A¬ç=Wšjv]­ ß\ûÓw)ÜÖÝŸ`¼UÔ2ËÖ7Žæ›î?éØ$f¥0´–}P žq ®×è÷ÕX#äÉ¥¢I;"œf.3ˆcõ1Ð#‰JjÀÅÕë~ÆDþ }Ë‘^«{ÊËæ¤QJŽâõ N¥F¡éÐ\nú˧%=y¶j¬¨¦Rs-9õÍM#^µfι»+•…ΜTÁêó«lÿãŸèYî[IÍ)†Éõá·Ú6,¡D]ÈêÂlŠD;³…¨gtÒàîàVä=߉NCÜüæå)A©^”øšËnÅàÆµDxƒa•ÚÑ c.Xî‰~ßµ}ùæ!Y=H‡œÇj{ò`%qˆ€c›CÕæ¢°ØXËçŽn_s©ª¶¦kžq±Ÿ>)ÃÒs¦ê™2ÛRà=x¶ÀhÇ4®!>“«ì‚!ÕI‘ÎØOàZŸˆQÔÿx&¿õë¿~hPó·¿ÄËQ‡ÄPÉØNt]ì7°e(¹(_«„›å O˜ÁOµ@F’PñŒù%Æh`«ÜÎjÓZ‰Æ|º6$ ðŠuÖqo„©²=ˆ¢øb讹dÍÐЈ.`nƒ[ÃÍ*£½G¿dIæð’½"àÁ ]¦&²(Éy]â6oLðPÊJ]Ûÿ‰nn¼z65 ´ž \x~Áϸ HÀ[ÅÉŠé“úëi°¢Óó4÷‡»(hzF~ï½üß¡·èÿ{‡¡/ƒG)|>EûÆšŠsÝ÷')EóW‘œúkye´(«ÄŽÔ‡¬°4wYP¥MÌ`M:´™þICÁ÷-ÅÁtP£ƒAêLɈeêÀâÂû¼?Y ÏÝ^qxË¡Sê*&ä`QðÌs Ä…rY¶¼q;Ú ‰³ËKÀ‹õO(!iýAœEŠ .ÐIÅ…ôb'¿ß?ºÂÄ& ÂY…MKÂ?¸–cá1Þc[ÆGò^˜%?‚”ˆV†D¾ ª \ó"nAÎ%5üc5Døj'©¹bS[s ŸŸ•j¼¬?YWµæ/ŽÒ už»”r;ÔÞ™Ñ9*yù³EnùPpÀÃãªÕœâ<¥‘ò¼&ÆÝ|¹ÚC5¯9ã¤[Êp=Jzƒ§&„¥ijßiv7tˆ`U-³BùÏwäa¼š&¥zDÿ˯èþ¬ 3É~E@´u›ÓSdô*ú*í¡]Hý<™=,Øx É`&/YcÈæ¼q¥™ùŠ>2 Žœ$p®IÇ—Æhâò‘£È`ðoâ¯EË£ˆRÆB^;.E{8¬A¢‰0ˆzôæ}ã4…+¯EfàÎO .”7 x«'±3zQvm7v»•*Œ*ßÖµZ,Qm2^ ùu”øe†íäajEkÔd®v‘ÐÁÀ×=T!>`”„n'KE扺,¼ú nU³Àó¸çÆã+´\ã*þ•G'°´Å‚9Dް޼Œ\Ä5ŧ_¿¼S·]°´Áº&'ÃÙ‚à =K•h•qMñy²ÏÚŠjÀ³ìÄ[ÅP°Ë]ÑP;ñ?tñoÖÊfÓ¦ùk_Á¨Gñ³®q»u¹öë‘-9S\j6E{lˆ‹ŠK²$Wó˜à”ó>mèJÀ[h7ç<¹ò@GQ­¦>!Bk8­µ‰Ñ4z-€ ÜŒövê^Uïæ ‡[ÇE{2 ö»(,ª6)Þî$ÉÂXꀨAH$M´Ê—ÓŒ¤¢öT.HÞb<™#ÙøwŸëO ¡é²€ ;›¶ó5¦¤¡ß¢3?jõ4áæ °.÷•qâ—À•t½É¶öÆÙ9."\¡Þ ºh=Äý0áÑå Ì΋_P3MÈêòc¬kÁ nT&ˆòîDæ¾9ïÏ}øµ„NÆÂ>˜¶ Å>ÌŸ P¹=ò”X½qJ5Ò$m“id{qlÁ+¾ iÇØBû’“¸’„¸î±²Kc,.RÒ8 ¾kë½x'(gÔX¡o{=hÕNFñìáµ4|i!aøòJÁØéê +wE³Óœ/ kÛDTµÉÑwÙX@Q ‘f+äî\w¯È$6æK¦bóÈËí¡ƒ² [Œÿg/ÉTÞ×tÍZX®!¶ÂîÈvQQIJ@øíЇTXàѸmÿ8Ë ¢]‡3·½ô{CúárRœŸÆîYA]Ÿ*®Ï=Í4OKg?å]9&;øÂ.‰i(Ú*lXa6‘GÎy+;ûäBnŒ–Aõ7øtL˜`7šÇ˜2ë>'¯ÞY$µ¸íTÍvÄÀd6Ž$5s„ì"' HT1òlD­È ñ?)d® †¢1^j»7^n÷,ìlt¡Z’¡S·lò°[+% ½-n×\ðÒ©cÑÔˆ´0Ü!Ío†Ó¯ˆ†N[D'zjåiÚ)ØD&© D!`;€VüÑ¿·°FžñìÑó¯r!oÊ8ÆÓ' ‰J¯“Š;aÜ.dÉüµýšŠû±ªÆ&¼¾2ù{ºW³ê 㯯àU¹m X#ÔìÞ)Fm³õE<¯o{y² 5@âT›®/¤ï…X²²9ËóqÍmÆûÖí¼Sï“”mƒ)caA 7ĆÊì0yð×E]£?`Í Á¿zŽ,ü@OÓÙ(ä¹a ·ƒ¹ÿûß=‚róŠX´{Ôo»@ÕG=']ƒB¢þªæ‰×kºš‰²·3núG> I\¹È5$ÿ̱­ôkÑ€'¸c;¨½]ž+¹{h«1¯8¡;4NtªhÉ:}ƒLC‚NÔ}\å8MÛ9”¢‡qñïF¢}—·òGMW—·³4iìÂó1ý[ !LJ4ɆâØIåñÄ¼È b¯˜šJPälccXáuk)‰ók~ÄCƒÄj±L#vÜÈráþ¾s‹Ÿ 2ý·½ “T‘Jy3m¥G!ªÚZ|¿Á®¬…YœÕAÉGpÀÝa÷dÄ*eÕs¹ít ^"ÊØ áÚ ÙQcylèHLl ;4üè~ßcDÆ8¨‡ˆ™­YZI;oÈäÍjLœ}n4p;CüÊŸE½p¼¼Ìü=œÆuw—ÜbÜ‘‚Aë®\žÏÀ/©h¯B@Cæô 5i Éü¯$M ÀÊAàW.Û4Φz*¨@j%ñì kY¢nÑcð_Q¾oºÙ§‹È.GŽ„ïæðUø¨Ÿ8bÕáÝ(s‚¿Âãi;ô¤=‡å›ûT}5ãQ8Ýj—q›’W®aôªÜe̬ »–ðcøë‚ø\…àO­yúA»ƒ8JjOšª1$ÌK ¹uÞ·æó”Χ×ï£í–{0TP›™0­Û{Í[§ª2>¯¶Ã²;‡-ËrÆ#w:¸Èd’˜ì&@Ä«E›¡y÷Ñå4Œ(ÏÖy:k?`\!´òd ÛÁS<ŒÄ¨ð“ÞQw‹zÚlWÉÈfÐu´pÂÔµu|ù!êØ´Û®›ç:1€ȤAµ9í[t "Ћmx”Ã|w:S¯jüŽÝ[ ÓGÀòæR°ëŽÚ@š¦ÿ£? >:˜´xa‡öˆNhEºè­óä•bCôÕÙÒ-ÌðÊj¢®ãˆœ̨B«=àá‚Ü W/\~A¹u±Ì`ḄÖ=Ñ #ål·0·›mcð¬ŸàêýQÒɼ;o )ªgç¼3 oÝš°*ᲄ ©ƒñÁµê¾\Ž1hQÍŸ‘p‡*n^=šV×n¸»ie& e)èÌpQÓ²’ŽQ<ŒS™ú6ŠUH0÷eat`´lãc´qdœ¦’fTnuñªá±ÛC<ð;Þ­ÂAÅ…„õqXD’«rH¶‰tA5— é fÇ™"p‚,)¹–§É[D²³ø›ù>Ë»»B‰^w:_FÃÅݎ쨌²»²}tó‰:û#‡%qŽ3ʦc<ÊöŽ ÉTrSS+•晆îîôÆá.çZQ”sIóX÷är'ù;2.ñ9‹H®µÚLÔBÓ;úñ÷×wk—n—Kø½|ןM¸ßìœì­0¦í*Ø Ì[…+)"¡ÿⶬÛÞSû3\ eÓ`¶ªÒšz”£ŽÙUGGçY²¼¼Pé_é¡òûœg“þú/wÕî‚t2qÀ 3HÞ@|¡Õ‘«5‡‡²R’ÿ—yiîœT5Øžj~ÊÀÊÝsnKÍôyµ0(à ø|Ç@t^½òýŒŠÞ‡¦<„4¯ÑyTm ‹Â_¶Júùó<×ãüH±ô8øêÖÄjö“<¬oqÔ¬Ö-æ‡Àò½çÏÁÎFš€©Ï +Ùüí:XvÖV½³Ô%ºšHƒF Ê_¬·®6»¾‚øÁÈõ/ ×2èA{óU Jgþ1F6ò¢òƒ‹~%…IèÃÔ„´õKvõÑÉÈãÜ€-L>Jµ+„ •-ƒp“ÎshX‡iÀ:`$Á,…,¬îÝÄïžÍ~ä"Í{„Y}ÝBÀÜÜð_ÿ¸`رJï¦R¥âqº[LI ~ªß¥«Þ …Ô{L@WçˆóÂ#Q]Gó$´×<Œ£«œ9Ò!¬2 Âìºc1;ß8Æ W*/̵ÞÝAÊø5úKáê¡-dþñU¬¯ ¡Í…ÀzVæ3È»;æµò`"{ž@Üà\Ü[Š ¿†­Í•\PoOmTøÂ5j˜RÅm(±ÎÙc$vƒuX0)ï¹gò©sü3Ødå)mÙ„øl8Á+IÄyN8ìù•ÛM£úDq4|tœÎä5CL†{µ.Gã#±^”BqŒê÷ªnÙ}¤Ë.=¸š×¯Fj€åõdÛ˜}8ãu…1O~Só͇»ßIŠÅ pXI8¨ÐôQ#"rgþ¸¥ q³¨Á‚þoW&^w²oõùóæaGãTà`^•,w2‹OxcŠô¤—~òz›†Ð@GÚCT!œ7TÔrÊñ¦tY#pÀÈ}¨¯–ÖÒgeý¸×zEôÖâ²DáJ8*á-~ _9¥F a±ÓT4‚mÝ© ¶Gæ…ZŽ.½iQSˆ¡³£µ+eäc§¢rþˆû97zX¢Á·RçU^‡é± „cªÞyóíµ8K6²-‹Ø^»ô7=.ùô×1|ežÐQÒªFÜÙÄ}÷@«XHÊ©µ³vøŸHé(‘ò 3CÓ3¤Ç(‘Œ ÆÅgáæ‹›Ò%mïêq¬îòoT1Ô¡Ú»qõŸRì/VuâËO¼§9,èýe ¸[¬×$%aV´ìÚÌ…†ÚÙë*¸.Øé÷ìÑÀ1žIïûÝÆi3Óôb4©éó4ˆ.`e0sm;åÝâ'€,d·eþ‹„àì¡r‡61#ˆå´Ñ™7Bê¤Z’k{ûÖÈç,R¬YÜöÍ©öv#£Š¡»”DXÒr?«÷NÀõ]ÒŽYæ—ûq ‡ùœ /kÊG{Å,|á;曯ý˜Zù/DoJpÆec.QNª½É©e3l¾JY»ûýÎ3©Oã4E <*•?Áè³Ù‡÷^÷J\Æ_^1IÒ {uV`Þ?ߘm*=çÙ2š7Vl+h= 'ñôõ+´Qùñ=Ò¨Î=Ï©ý×Uçù5>Î%"C4âÕòúG“}ñ0-K?À¯•9þ6ä¢ÜÌ~jfßd¦äÉJŠÁßAX³|€C¶×¦ÂÈ•ðá‘iy4VýËß{ª¡s/K¤RLXp•Rˆ¹2}Œì˜D—T_”ºû¼qk‰ pÀÛ˜+Ý!¢Û"22¸˜Ýe"rÖÇwÛ#2 ¾‹¦–†Y~çžÝÄAá©ÂfÒ-ͨ fbÿ‰+’Ö­Í¿OU×wYLwÑk9Qo°5Z|×GÅf±fT¡qLùÐU %S¤2¿ñ»7ì¨7vÝHYz»S¡o®"“É ¤$A¤…Þ¨b…†ÁØR–íæÊ²Þõq6ª.ó>¼s f¯%Ön×Wkø>0t¡h&ü<[Ǫä ç–×|Lý„™Ì Æ×ç[pòüí;%Ï{ ß2²éÁñ$ ,ÿûaƒ´ë–xÌq$s{=ÒäRB…Gú•3R¤|ÿY3쟰{¯~ݾeüO;»GC«x{˜éÛùVþsꙘ٦ÿäç ¨.†ûÑN˜Ô{¯Óœù¢ Ò[lzd¢ŸjÙx÷9ÝŽõ?¿”d“E"iÊÆ£-âb´])^¸î‚¦½ž·øýt…¾c"–î-F`P{XÕWõ ŒÿZYŽ8qTãÕÛ~¤(_Çlùù‚"1Àp“ïü$Ïê0 |DAÖ½4|!DœÒÉáYÖÏt¯>Il•w[ã„ ì"°ñŒáɪBÉ-B:>\gf&Õ1T2‚†Ö[!uixÇ;ÆÄ[ëÚßßà⇠¬ç½RÓ†ùw:.7mÊªÕØnf*Iq°£ ÎÅt0ïb\úÈv¿<ÒÜF-Jú³RéÇAÌûóNÞœ£å©/ü}=£"˜ŸjT4ò‘‡'p•¼}H䜊`ó¶_Zð.7ÈÂ3ßÁÐyƒÜ9ªùò^œ‚ókËøC¨}¼ ʲ]m‚åjO0Iˆl³úÚ¸—ž I¿­ë²»Ë—çÅ ë ¥ö×À"ö“\kœ£aþÌÙ½1/˜ÈŽLînÉÄt0€¦W—ZœëDÞÂi Œ¾B›n–Òæè¥øEI±(ªÅÕ¯®|)'+c&5B{"ìøµ•Ü;P%h¢Å|4,A+E!¬mYýCG¹çšµž&È<÷’Q¿m‹©·äÊ=Z$y…gÒ§E2™˜Ù Áƒb07‡-2OK¯âs¸ÈöXËÂËÿ*³s7&4:Ú¥[Ë&„Q$~Fî ´}(éÈÉá{¾öúâĸÿÆâz3qâ6!*³£»z[¦1Àlc”׎ø§Õ—ß4Û€âšk·XŒ-\¼a&y9¬kxîËM†HŽq¥sy>Z U=5%KXjPµ¢€É¼@ø.t^ñœx%ÊôžUw'I9B6±¾Ó¥?˜AÆk_M¼§ôi­9Ž Äs„°K9r»C’»é‡dÚð¢ïÍ>IGIh§€\íPÂ_Ti¯…[m¾D¸Y4F@Nw]³º‹ZŠÛ§â$¼Yé³Ï ó¿:ÎA`ð}žåj L4ÂêŒàãjÏSO¬×%çÁKIoQó³mÓ§xìDXT»Íس.]L‰5f+“ ¹RÆs8ª]  YÏ´õK}£³YP”õÉâ{!Y£×É»Ê ¯M#55å‹Ôc¤ÑþÇul·=zª+˜­uÜ8™º}áý¡ç~@d×üy®½¿À0[,-â)ÐAÞí/eÛ^’|?†‰}yÛ¡Œ½Î*}Á¯BÿïݤöyçnDûֆÂÂ(w!Fì^§ôaÿZ:9­A>B/-» °ò¶²×!¾Ü56ï5ÒITñÉÜÖužI <ƒÃVIJu˜£há‘ —Áäø8AeØE¶»þfµµ7Rp“{ôC؈Ã_“0ï±kʧҺP0Á»#„¤ò.®ä×¢_¤“¡Ó ×\JFäöy{y5’ÆÂÒj¼þz>¯ô)Þ.†˜eõŠ"0»¸í†P'^ãÓ# Ä'fï;'D72ïl}tGTUÑO1‘CCÀh™iWuòÂT Ø’f© n| ozȤ 'à|<¼Æ{¹Î×Á'`«ùn(} wž¤S=JàqV< ÷rb§°ý¶0yÅZ’é»D—[ýHn.EréÏ\TÌÀ8¼h^ÿ%ËÖ˜­%Y ÃTNгæ}½îY¤š–×”z %“!eWÞ’N¤û¯¤ïL7[H‡B–‹+j©ÿšñ·ý "­:õ:—û¦û4ˆ3w´X»:DŒE¶@ä õdnùJ²y$šÞW.]óÜÚ£eâXåïÎ8œÒw¤P¨ŠêŒo&Ü·U çX×Ai4L°ž„W˜ÚǬW•ýŒÚ:C™«Gzí71‘È÷Ïh^ÙLò¥—ó\lŠV‹Ôóäq<Ý´v¥Ï¼9?Õ×ô';?ëȃ„îú]`«F‘˜rÔ˜Æ ¡äŒ2>ý2 ˜?l86wi{=º™íJd Ì7«ÖŸ…ß^7¨êN ­‹R&¤h{®+Æ•¬ˆ×Ì9ë>8y>ãqÓc YÜ Ë‚iy&¥5tÄìM,²1Œ Ô‰jÆÀ_)úÌ/qÞ”Þ—rtoÜoƒ±nyk©iܹAÿõ˜/Ä’ÀU 6::ähcŸÒ“Ä莮OäöK´PÎoH„¾1$êö&8DÔæ²lQûc–œãÁ Õ—…‡‰6ÿµŸÕVXç6ÁÏs´˜¦Ó ¡†ù‚§V(`$êò7Ž —S¥ûÛ¼0T&¨J ìN`þ×"ÀƒÌée­IY¬£¨Œd³ç'ñ#´h;•IÄb‚EÞYMßñf(F>ÌÄanp’ÎìÇ¥ªTnùÏ_{É¢R@Ê‚˜ÅÑÈ ¥¬ŽE³Y  pz¢£^Rȇ¬~& Ô\Äš`OÖ!4HÛk‘ôž‘hB¾?…[¯„§X(¤ÄÝFWåäöDaþŒeÕLoô0´ôvxÇÉ"ŽN>NŒ&6Iþ÷™§øóÂO×ÊNŠ ›_ÖM)¹ŒȬ5·Ç&ê¯øÀ,;q ÒµÙâ¤7­Ô ¾X|v;­ ÌÙª¡ë^ 1XÑ4¬Ä;Sœ#+l„9®Sòø· 9Á²I÷@5þÃoâ\!8vG½Hu1ޤ{H ”DßJùÈowqëËsU-áõaºŸZUlÈ‚6÷Œ#U[Á“Œ# ®ìlìg}LeÕS_ù·rªÆ<¼—$h‘ÙSCTA_‹¶)ÂÙè °K$iŒqEÆ(W^\[-k@3W0øˆÇgªäÎPr­°~·=jê;LnáQ&í^*ÿ1sûÔŽhÂâíDš_qëe%—À »ÁÂõ}«{ê'_§»Ã’pLÆa$èíœKð§iuæ˜]õ%* ß¶Í[³š8 ³œkŒÑGA’á˜V]NÅäÃyÇÊ _iµš•M+ ÃÆJà„µñA%;›óë «èb8X»õÈM_Yaºßí›åR0“fu«Od*$:G³§=²Êz½î´Loäâ3îÍÈåmo5Èþ¼suD[ÿzôu¯®x#߃Jðú³¿ñÛC\ÜHAºZT¼€ç'bU½úÅÿZ|L§ðåh&Ü&;f¸*ø*-‘{àNî…L¤–Í Oÿ1–éž4KJ¼JœuI]RaìfA„pŽ‚o¢%áSõ3ñ©á»ÁœàEšƒâ-…þxÌNÇV/Õ½­Ù™§ “!À¨Œ5¿£ˆNã?¨M‰0ÏÝ„1ÓŸN)ÿˆÓ´AV ÖªNýÔòfq¬¢ˆnYIeôg—Dìñcã]4¦êgi`–W¤SÉùË—É€z¬Ý‘W<Èp-pʹl·t8¹Äh#¤PÅ=£a®éæ4Ñ# aôô +ì1”•êlW3¢4Æžž«5:è”j´ÄlaLu¬‹)J†/`P#³jÿ™‘n“ÅðÜõ¯S?¼Ð“IEˆ]Ÿ‚õ`¹-’3s!/Úê ¡VLnOrÄ…ú£î¨éèjûÅßä=œéJ™wR>”3#.‡\0ª?“²M^ƒÓs ÏÎoBQÀ„†ûªì¥®qà»[LdEXø>M¾y£.¸¤¬$â]³Ø-—ÀD­yhŽ}è<ˆ(IT¡»ÄßÕ„{#ì‚SÇìcŸmÐáÌ©…­"¨xøœÐHE›\ÉùD*Ξ@´SdiE·ÅÇnª šÖ/åÎ*ʈßÎâ™T8Þ ;Ü&¸° cg6…-I€\IŠR¾{Ó$mûkY†'<%Ö}”«—)¤¹©æà/V«ÍJ¤Î±:˜&ã­«’‚˜W12úÜ™kïÜ'+Å‘4Wß÷-·7¶êW¹oJïpûˆäÌÇ´ã€"!á‚Kå.Ï ?Qß Ûfû4ÊS@]ë‚-2:BŠæ™×& ¯ì¾®ˆâfJA)£’•¬Aybd«¯^*ñ zÊ2©LóÕO¨-¿½¼0·T«õÇciHU³Ýæo¯ÙTÒ,ôu•ð.¦DùZõzƒàˆÆç›ÊSbñÕÊU`­Î”(^i×Z'Õ­,óMøþÉ|QË])ÿ3t¨ çX •ébԤ׮Aÿ™?Dm`€Ñ°éÊ[õhx Áüäuy/¤SZ¡û\(Q(=;ÂÉ87±ìížÀVèý¼7¾=q §²ó*NJ>P² I+KF0vªNf1B~ Ò¢ qó> rOqš3"Ô÷h5ÇS6ÃÓÎÛÐÌ`\Çmž°Fr nïi1 yqÑ ®µâ0[oÉ–µÿ¨,Ú—×§Ë“¬çQw$Àgo>ÅEîÖ‡wP—¾–¬N]iñ¼1(ˆvï-ä"™z0‘˜w»Š' 5u½æ»4±´ðÔsÜ3‚fO>ýŠì¦Âþrp°ÈE˜´`#?¤”w:ÿ¶‚„ñ”Å[‘E3Ý'¼»z"œMuçTR£³Lkä´ßÖ æÛ«niÜLc©c.®¾ö{Üž×ͧ÷Èõ’¢ÎœÚî·_lšÂsEq ¬dé9WÖA!ò¤»þ((ÅûÐØ°"´†»Ì{‰Àn)tZ7–µè'»àæz·bˆa Ù%ûÄm5_XM[—$ÐÝ­¡+IÚ¬\§ü;W6ÅòKÒã<¾§m[68“—ÀñHÙ’í³ÊJbúňȖYÔió&_±,›îÿtËÜm{¨qÐ(ðø^?,ÎgZ'ñÝñÔšQ.¿‘ÚvC dÔ¯Ò_脲ŽQŒ¬ã>D0Ÿa„I|HH£û×ÿÀãÒžÝÓ©š¿Œxó×·7¿:ïÒ;MÅq‘‚ô+Ê&†”Á H³\ ë Ò†¥F§ao¹ -‘POƒÉÂÓUr;7Tz¢ $Ý#ñÔ‘NçIö5ñ]wÙfZ6;¯@t õV¦ V2&:1I ˜FBð;^ª4zá€VœõÊ0Š6YêǾɲG69ŒAA“ˆ?ÚÒè²Ò¹ÓæÙá)F²ž¡‰‹€k'ã®JÔ?¯ÃVÖŽý¥.­Zýy!høw'p3“Ú¼K|Š ØÀuÌÆk ø/±®äòŠÊËDmi*S ¤Ÿd¬«òyÒ§˜9§Å3âWjûvJZœŽsÄHrïõ8»`õ­†Ù½E'Tj¥Áãäõ#ýj)™ƒÆ­­2–f"÷Ù¶u|ÇåÉ—–€èE)I‹Üc÷ÿ_ã–é±wŽ/jú…tãë|¢#+ õ³Ž×ÎÓÕǶhHy7·ê3æ'7u*¾­Â““±ŒM&À] uбÂCx9r¹çá"õ÷{ùzºù”Ç·ey®Å)…ì8¬Œìù«ÅýâÀ¶ Îß| # ¾ƒø®–à>›…® zºöî„oxïh ±ÇÛI'ÒØ¹ÿ’&½v~N4â)…¿KÖÁ‰Òo? _ò{gáš‚½#sã¬ØÚoÈ€ß ¦ríL*©òï•zzÿe°ÈÄËé#Ñö£·10×ÌgË{û…ÂjÇ: n3…Ê©tpêá AÕ-оŽy˜î'ÀêŸÕiÆãˆaž­œâ:éSq(tlS«p®iv‘È[0& ƒº…J«hNÁ©¨¾ýÆcMšŒôBš¨ãšTâVM(Ý…qóåчyàBI!’^w!!ž^¨Ig†¦å "ò¬ºÜØC3Rš± ›Y(¦,ƒ4Ú<©6é8¶tê} ðÁر땸3ÿŠ'Ô:û±`¿J*ïA ÖºBsÀú#šzÍdúâUÉ›#|5Q#Ïúâ$¨“£!Ù¥7 *† mô¥çÊÖôá€ÕÙ…&û7Œ‘‰!È·ÿTSdi™És€!3ºüjk±vT5Çóò“†è¹ç›“Ð £n>| öŸ™§ €”ø¹þoÈöÖ}EÅ{;ô誕º(_­EœÓ˜I( ¸U~¼qëë™é¦ºþíjÊ„%Þªâ˜%âÆr-Ñ81ž*ùÃÓ«w¥Òâ&ß8(‡ ;lÛz@‘®A òÀH 6¤”c¾àô† >LŽù¯S'†ÚRº¡þöÍ}‘—šÊ4•¨ð—Á²Á$žu®xÚ`-½\ù,׫»ãC• ŽÖ EÔ‘Rh¯ô“c¶è GùÖk¨ î[U|lSðIO)ŒO¶áâÝu“JóÍ7(å7Ðì\Î竦LiË B ±µÏ†bãqbºeÓËÑÏaH´°–ø¦•ZÙÙ³µÐ?TrCðƃrS»"KIÅ}Só_%›h5~ï(ÊHgÙHgËÇHØéÑûY$~'y=è (g†íÏîˆaƒøøCô2p1Ëh¸‡&Ó¤ e¢É¤²­rÉ´uáÞG]~ü†iËTš¤Å^Áüx:Ä*lüƒ“×·Å㫲§=æ´½ŸÂ>¥ Щ€²˜ûDôòl¸œ±4ö†)§„Ž…½©Â5úíí§«¿‘TšW (+$UIQQ‘{M£ª}þh’»¨¢¡Y©¦'‚ÖRs.ò=hd€”†?ª–í( x.—ï£jß´MÌåÀˆ†°6Ïö†Ç©]Ÿí£iõéWòQŸ:õ4r„‚ÞBÁF™#p³Ú*I7ë!¼*TAÔ ²L+kÅ.Ïp¯œ$##ö"¼!‹é!Œo^5z,ÎÍ“½$óÿdlâð£s´¶DÊÞüqEO¤6)…ÕÈÞ$¨ A*לƒ• ž%ƒ¼£œä´I?oœˆ«ÏÎ²ÙæÆQ$•zÕx gÉFÿ"ïBõL£ˆ4_”ö^X{÷ª•V6˜XwÒÁ%hŸ¸maªPÅÉ™V”­©Õ·tÛ³¡ &0$u¤°9²è òÔÎËE Ø Ç¯ë “…Ê!©*àæ¬ë?7«^tFtŽ .}«¾@ž©P€² µONÅV` A2¸“¡¸xÙÚ5~™ˆw@–‡†c÷ -­ÂZ2|CÙ¯¡X¼eÎJÙ1Jè©P~àÌÀûx5ów>CL ’Ò)ï@ Y´2m"ú¬âg;Å{§ù3`ك׶-žÀÀ^ƬCï—%AAÏ¡QjL×HÃ¥;ˆ^ǘLœúg[Ž~Z0‰sæH×_˽ 2Q3*ò¬ùÙÜò2_±Ÿû¤,wT¯Y2W¦)p¤Ù¦ [;6 ÀÈ£2F¼O»è&çé”O£úy™u] ³º¢½4t¯bÿ*TÓb㚬nß>…F7'ʼNZ¹¯ =T1üKõ“ª´F5@<…Ø K°öŠÿ'ýHùm@{ÚkI´P°üØ UÅ…âÙ„ÐUM&)ØWÁÙ" ©¨–t(·ç§yßt{:âXÿЖìLødLŸö¥g* ½u0¨`Áµ®üüÊä@ÑÆûôS[Úï;‚ß°ãa)"2ð\Kì6yãè|y 7WŸ•‰¾†m:_B%y¤ôʨXpxfõÍüìÌÍÌ4DDÃ0‚æ©·~Ü|7ÿž£µ‡±‡GïxenϹŸž” âljÖ 4ˆcÃö]UHE‰rh󎰛ÖßÔÂ,¦I3dYúE¶ß_½ý -ŠžR`‘ ÆF6 ¤¢Hƒã‰Õs%Ÿu@²Š€Å>‘‹ÐGcuöX™†#‘_3yb‡ë<Êç½$ì%Ã& ˆƒQ(Æ„Ü%xû¢ü#¨øµ=é¡ë;i]£¿†ðÇÖýgöq[‰73ðjE-à7s‡\ëãÖæâÍ(3 3Ý‚!Èua>Ø\Áñ½ Ã…ãMÕê×ç“¼ÖØC`ƒfqî*ÃzK+ýQ *?÷²´jÈÒMgÈ‹cå\]D[·ÖÜÔÕÃNaÓOÚÑÛ=%ÁþUÃFUÂÁAÚ¥Ao”1ˆ®î/c6¬¿©hÏÌ=.çÖZ˳Sé ºß`±DòÓ- Ýiš!@f»Åq¡;sωžL0)Ãc: º&+ãœøné×C]D4&žßèŒUäAõù›E¾É&dAY»ß‘›VMYŒ­fØGysƒŸh¶%L~mæ†0¬—?[|d¯ì¼€¥S^è/–mfÖ•EŸ¯w÷*áø5#gq´û‚d»«Tñ±U YüŸ k¦‚5¤ÍU•ÇŽÍ%*~A?mj˜C„ë“5‚¹LnX,äü“^ñ–§ŠÏ>t´ZJ6¶}ÓZ¾¾¿UHLqSÇmzôøoÀüÖòíl8‡•tê‘ü›Ÿ¥êRÜüÀøTVã`¾âE8½ŒSfÁõ²ñ•Ì/>¢„ãÕoGýïQÏàñŠBþCXCÌ%ö)©Ådju¬“1ȵI¨Â‡wØn¤›¤òr0ùöúòM¯¹@o%7V«¨ÉsuÔË2î.Èg3ïý(špÕÑdÀ’Ó}alb ¢;'h·FÃ’NФÅ{‹¡ô^ÿB)ùÕp<ÛáNËU<"¼8ηÌ;½ƒŒc®‰ˆ#£žné¯á=G*4üãë+˜Åw3{ùÂ×ÀUª°!r³yÚ+ŸÚÜA{µ1üæ@Af7lgDþ ËiQ4µ¢ÅÊò¼ÚVÌbèƒO ’ƒ'»ìÛ©añÐg­k/sð“U‹1m¼–Ž¥£‡»ýp¢ˆåô\FD ÷!ž×~Ÿ÷캗”ªôÎ÷Ÿ\ÌšìEŸh^Å"Ç@LÃZ÷È‹£3Lȼa‡sëÄ‘× ±ßwŒI¡kÿ'a[Ö8/ñÖè‡Äâ íŸ~ÏI[ù<Û%ÿ™¨]¸n /õ}¦NÖ±ÆË5­÷•„_üò’fª‹TT·À clÝ]H¿Ž¾!p=v.æ$íš,æ÷ÚMç'~üÛ8¤Ôo‹ÖzÌÇx‰À(,‰2†cQö×Ì('+„„NuîÇóì<§×šeB±ÆÞ—˜…br©™'Äî šC~ÙªÀ_ÏžÝzebݘ•ûyœú–hHÓ_‚»ö”whÞyþJ 3= É´5ÜEˆ»`nøü3uÕè.AC¨†Ý& [«û‚¶Ø¦„eÌç=¹ƒ™vÙBŠôKLy“]¤c€Öҹż²ªAtîÒ¿É|‰ÙNF[Ý®uXâdxfx‚•a:‡ÓÚœbD^F”ç!•V©ø'Ã@lªF—ñƒ³fø3Ècz¼ß¿¿ìfž!¤ò>Õ#^ø—ð»f@+5 ÔÒ}G¦ß¶VâI²ôiHÎ,œ–Ð]ýÿ&š8‘ë£OôÒyßû]&xçlH£ÂDv8ÞËMê߃H*;âA?Ý4%ÊÃÅAñ ¥,düñ"Ã7JàõPÿOEÐ÷»{B™¤7¯BŠ;øe–ñÇ0¼ QCOüHç8f/~w¥\l’žLâ²½º½6OAŽ,hŒ»õɳb%‡‘·]Ú Èéúj¬ëX£. níÕåñ1òŽ~&Ð4ZŒ«8л@¦¿œù²jB¬éa°"¿ ’»P{O$Y—ý\6˜æW³:éÌï§õó=Ež”k½¸Aç=âðš£DTa÷VÙ¤„fMüãÒiDDËØ¢ja i’ú÷MRÉ„lÿ숀”}“tâòJ>®™q:ڨ˹ØÑ´_]™‡¹ çÔ@ ïãñb¬^ öœâq(’¨¾Nl.R‘F3ÞŒsA¿àˆ5s Ùk¦Ý€+dÛÁV³Õ4»Bâ`'7j¹ "dæáÍhèªàðµÖy.´qÜ%r«>–§’'4]g ¹'hB,Ï6žŸÑE¡µëùéÐÙœnø»EëÔ ÀGL=…¤Ív_œ „§4d@¥SÇ^ûŸòu¿ÎRò]?!]~¹ðÞã„ë‚?."{.ÅaÓǰ‹_¦q×UÖ‚Àâ)@"¯ä,fpˆ²9mz¬6°½™4 PŽNƒRÓ¢dmýÉ2I§ #$LmY_^b*÷Úêð´kL^ó:!Ó%‚ ËCô¹H?ìJ1§{£Y·É‹%/%ô¾ädIe01ß42„°Åìù–~x·4.8>Îtn‹aS€“Öú…”œ;Š9“ôÐŽœƒYcÖg{…Â!››•À`Çüꆽžnz ó=»[,x#“êBÕ^˜ Z©Og0' KÛZâ,GŠbLy«F3 «)|R!pÛ¨¼ß(7B€+1¢,¼þ•³2ïho0”+?E»CÎÝàrÊ…?-2åˆ:”KÅ0dõàE•BÅ4m‚Ís¥T±Aù"±ú†âÙG•öIê¡XˆÖŽVS¾å¥Ð}k‰`u£À…jï‰cΨd¯½LE®™eŽèçÊ2Ô›:ÖêFNX×éQø¯о;ÄšHøjÿ."M~3›#žgÝC…7ZÄ?+“\9Üu§æiJù\Y-Oèê:nh“Ê[Úéçs§ñan–|lj›ºÝø)üeE±+T‰æ~XWЋêP%UHìABw¡•)1áN”,>®Œ*ÜE G»…Vò§8€“|W¥ËA@„XÈ|…ÝͬBfÐ)^«M¥qwºs6Ó{âõ»´ý f¿uìùS“䲦êûº·ªf|/ºJA‹øÁ—^3ÔÕä‚^$ÀYK“BØg E¾Òã‚Ú¢©z†5§è…‰Æ_Úñquð|ïnÚ¥¯álwM[›j€* X¤×ð-ªÍUG„]"­ú—)MÚ’Ã'fÿÞtoÀ€ëöOY |¦ØðHäLküÎbÐé>FGúøó&ZM¦­±F…Ìá™mfYço}~ñy ëô÷ÕXœÖ²Ž ÿÓ~ŸªÎid[Á{Î÷Å*J ñTl‰Zl½ôׯ¦Ð#Wéû$[*™Õ×ÙÇ’=ŒNÞŒ&kˆì ¦ñæ1é®>—ÝôöE”eŠ >§V2‚Zæú¤¥eѲ´”œY…>»ú€Cd¯‚% •¢„C¦ÿÌé¬xÍ6L‚ɨ©E–%¿AïP‘2|r‹Ö¦)½ãI™³Gö[ÅÕ ²ÍâyùÕØ£-lʯ—£H†ÕMž»a`Õad å!ýÿ\j,x˜˜ø™—X#¼Y(ˆ„»ºÜo\!ô4ŸØ†#$äºy£½™²3äàJ|2(%¶EÆ/ÖîZTÚÿdäuH\v£ubüÆÌv°µ†%ºY ئpð໵æ¨Ï™½›ÆñöþþQó¿‡A y—y¯”C%špÿÜ‚g±°m•u[f⊔æÇЕd†~dg\Ãu±=ŠKU%ãîÓ]m~(ÿ2ÈòGq8²"ãn³rþ"›Î´éBÝøÉLåýô9Õ<°u%JÕ0X!‘oËÓ‘×¼#žéŸ=òÌ ;Ô]€ æÅɨè’0¼K]†¡I“rZO ™O´©z­ îÖø«÷‡ŸüºU0ÕÉ™½kïU\ê;q®«€µÚŠæ¶^8"ŠŠ <ž¸ÓöO¢¥£;A¦l®˜³›6ûAÎKÜ„jhª¿Þ2dsá=ý.˜#<Ì̵P+_XK å+bxt¸%&é"T»„`€33Gý›k{çsø)u‹s§Ëë„Â5¶w*Ø›kŠÇ=¯” ðøñ“¹×­L:hÚ K~çž—‡iÂWèÜ1΢ͨ™°/Ÿ7ÀHÓ;©¶5>gk›µÉ0O'³[Ù°Çýþšèìt×[í]K<2>ŸJëD ³cJ‡ t8ò¢Í:ý“†xöaƒe¿¯vØ?`ƒ„ŸÂôZj¹"%ˆ×€ìBÁ™Iúæe²Ýy†4ç&:߱ńL\ðýº¢ÿ•)õÝ8¶v{hªÄÿÞmO¹‡LNQWâhOâ+¡ÍŒ_‡g'&ýå”d‰ö|o©Ü.‡!e–é‰PZ|¥^PGÊAW‚ÿL&"Öà•ûêKÊ~@vòÂÿ™Æ¸ËÀa´;ïh¡¹Ú"¦ UÈ÷Fæ`DOŒ²uZë·÷wî8—Wä&y¬HB±Øpk}#Û Ðº²•27‘%|ú}±K2(~ÐÆ“H¦Z, …ý¬ÌœÓÛÉmÎdp,-Ó{’¢qâ8ê8Ÿ¥‹Jžm°V«m[]™üêUQ£ÕüÚ®E³,s|o ¥Â1L‘œC¾ŸzáOCá{ËùpÑ'5j­°Ã¨­Á4ñ@uë4ë¨C G¦ch#}K£%œÞÝÆ0nø¨0CzB}$)¹²BÛOÒeå½wš'`(Ã’OLòtãJÑ ˜ÿ[O—kõîùñGŸàæÁsÐÁÕ¶J`5ñä*²ô.×DÿMÔ„ƒÎŽf0.íù‚\\=åûÍx¼hÆ+H¡D±±lðfïE NìMõ²õ„~èMi/ ¨¡™Ã|ÉŽÕ8 Äû"]Rá*yË›îÆ¾ŽÍÃô:u·TzŸÅ™©\ðâ9\0üáH~Ä;bögd/šm—MJ¯“K?É+èÂöÝ»•,„¸‰f³Ù„¦œÁ¥Â“yµ(zQâS©×Æ/ FÍ;õçsÏÉý'k&°eCF–»M™ž¿ç½GÏ&.ö¤Gà!­Ú£nÃÊD³À¯ bcâ{½Ï¬vÏ"çqï5Ÿ@¼¿ô%uc{gõ^"ðëür‡fåÞÇ]÷:`˜ö9ñ0Î aˆUâ‘Çv\ÅÃË»S|›Ëæ®ás¡W;К•BÂkÙª¯ŒÅЬף"öd~·tÁ¤!oŽ,î?äjƒ¹l•iï}½!8’ü©ñ>¬ùÞçÔ¾$E? aG®°ò™—±¥XðñøuñP>ŽþÈ}!ܽHÏ,’á^[8Ö êä£_k9=f®•öàeÏW|­ª³ƒíó`"ìkKf `ªhFç_LåÈ¢,l! óý}/2=zõž®n׆iw²y`gêý–Êν¹NÙ0ið³lgÉšdÈÞ(ÙZôŠ.zt⇅yµòßRWšMŇ ûo<餗v‰­s´œÒj[Þ×4d˜•¦§€4j³CXV i? †’"ÔSÖÍûýTH![,‹ÅŽXgømû‹É烛ýj3&è¡Dpw#^Jza=ß<)²Ú| åðеõŸ…2„Ð5MFFÖÎÈÄzòÙ©<7ŸîÙT PÑO©+^PM”Í)\/?(¾êK4n\² úeÜb…ãUwÓ ­F5‚§@Q§ä¡ -œ¢lÄèU5ÍQ=ô:u€ë§çô»9¯¿ ßð³`#un²þ:Q‹Y‚Å~C‡},lüéÁÑX¼Lwó¦/ä9—¦¶/„%·üÞã¼Ls >àÀ[üD*þ€Œ¶”9Íß>ð^µyûÇܧï 4Uýqîì5êÇLâ¸ÆÏÀ…ƒ{ùÈã°Ä¾«üêéñú”=2jŽü ¶H" mh ¼ì|‡3pFO8çùk'™öv¯5-Áê»îléºFs­¶eÝpmÈÁ@xZ:²*ðë7àßÑâ°®FÀ{þ–Z—õ j9¤½8›T??980™ Ú£~Œÿf|Ï¿°w”|ǯôãà0yœuÞÁ3½êjùÙÈûÎ.B‰tN¦ÉŸW™}Wà 8ŒDü—uˆn?޼½sÈNJÍ5·ŽwȽlFbñê¬&Š2î-ü2gdPX,ÙF(™uÑÃïbéÙôŠr‹nÏ”ƒþ[drM›¶p곯Y1ÍÅ}-Î#–;ت®Q£* –c*”,Tdz]© !¢ò¼$"{TÃk?Š 4m"°ÝF€ñò€ûç-iSj†‘—ŸNýJ2PÕ¬…Ûí+D`0ì°ÓÖTûïaT.RRð/QñC“|Aûõ3Ãczð°½ZžÈ×0á5 ŒBK·¢i£läU…¦ÏPP9t_BsÅã()q\¾JLû&H”¼ö¹6–Ðúî«“ÅûsáØž2Uúbž½oçûÂ2‰çEü»¾Äc[ýÆn9_šbšu®ø8 qûˆb¹;íÙ@— MmÚd‚šÓr?NÀw‹õúùžÉ4N¢rÐòÄmJ¤ØAÏ©hbl€êZ?ÃBAu G²/{’é<1÷Šñ´Y¹é¡{½ú'ÐA”cBLÝ ×IЫú=MÔü³mƒ) 9~)48,TKg÷ÐÎCQ.l´'`ÅÁ ˜Ì,žF$ÈTã_¤zí>ÊlµÀ&c­ÇC sÃ"`µYcRd@²”—çŒE Y;ÞõºGG¤Ó TêJ^ž ÄÊèÜÅš ›ôÔUœ úOªT×»Âü³I³GYȲ˜VuÏ4!fø‹ï‡ôüÿ›æfÚë>Fà®{N*[$ß™öDÏË –t$0êDN îCãK~ýüUê¡-5úAQ—ýu—wVᛀEøòƒRÎåkû·„ Ú&¤=“ÓŒ7s‡«U7²É­ƒÙ²F3“ͪÿÛx9 õèÀcÓÍ<­j½ßœàl-j½;áëO;v¹ý‡iÓXŠd@tc–Ÿ‰sVÓ’(¢S½"(ž÷Mþ •~1ÛæäEœðR¤mzük£bˆgù…¥^$úD‹ºâÓ›ÙW³×mp¹ŸÜ m¿ ÖôZ, ±Äš‘[Û2}7“ó/,=üÅpÙ©CÈÔUS;1ô‰ì1ÏÄbÿ·Ç6²3ðRÄÉúo»yY3%ÿ ó ßÊmž¹\$3­È9jBªÉ“+ô¤ÌÀŽg‘phdÙ܃QºƒÑkÒ¯7·d.éHÛöÆûn‹µ2QJ‡ÊÝ>Þz´º˜{ë¢#öI^Ó¢1e†“]âý寧‘]Í kmoJjæ9+Ð=‰PôãÃRLÌò¾§G1¼ÅJ‚* CÚf²ùg/åNqþ¦ Íç.ãÉŠØ3—å‡åƒß_¶^Cí~2€[?ªih—¥|›ëg¨¦_H€w¤„QÛü¹”í-©«á…‚t-¥2ÔQü2,;6ãÑ3OÍFã¢îÝÈuæ`õ+_¥^+ŠW›læG³Z˜Œ;‡ξ¯cGÎ*Fb=Ó?õ(sž&q*hÆîYìÍÉ?‚9¯pÞ<%å\9¦‡0j½*7è¡Ìl¦QÒÇmÀcî‚QµG•S8ŸÍî¶Ø[¯øL06ˆºß"†’Ûé<Ö©¢{(Á;` D´e]ñ“*%vëݰyCƃhÏ m€+d°+¯ xÕss¯A©5MVw=:<Éç?GÓü'×óÛm%÷"-…7ï£ímárì×Y5Þƒ·ˆš  'Ú¶ø^)zÆ!˜‡x£”„#.ªÛÀÙ°…º6QP+Q—BÖ¼ÿÎÓ3¼Ëܬ„< ¿àŒ®Œj$Šc΄¸$˜NCKS©Ô0%p Œ€’߆¹ñï$9G¢˜¨¨)oá«¶&rDZÆZke,‘Ô<ÝuÒÐìà °–Q„('ízõà*üTÿ"YÑŒå@5E9Cÿ[*öx%òÏ‹~& ø„Í;ðCKU„pgÖ8Ÿ™=H·ëð€ KÃh^0ä~ ŠÇ-¾¨jÿ£Q›¾„“n¼œ¾‡´o¾-a ·ÙèÁ2’.Á.gýï ”Î(iÕšs㊛Øôþ±:ßWÓš"Ô}8:É(S²OÿXcÛùEDÞ³~µç«ýNTÒ8Ë™^”@Öµq<•x‡[ë5èjë¼³÷/Œ¹¯}-E0ñî{Pî¤:M{¹úRE™Í~Õ|) ÐótS£kŽÿ4ÖщD¹Gi"<kG±gå˜$HEùŽ€ÈL~£Ô6Î'£} _Mk.ÔðÓòT¯Ø63ñ°îQ¨›Ò¿šÿ°ÂÏc«P¿4á­¼ŽäAË0Üûýâ ]ž¹1ÛWXŽŠ¹ Ã' ·ŽEذptø7ܪ×y2²߈‚Ìʬú”ø–œª½¸¿¯FT‘€væqäÖõï½?9~ G„Í*¥¯åêÑ×¶UWDI<‹Ý¢dÌ”±a°¤t9ªè´véPk_„óE~.FRþÊ_´€¢¥ËÐH¦Éu:™;ú×áÂÛ]ÞÁ{`o\Ø™OU×\«Ë©Ç"]Îæ!#è;HøtUЛ+ž<|_äH5 õζÒÕ²‡ÆS±py($}”[uÁ¥MàRÈå“E£g+®òäˆ9¬dÕUr y³ÁÙ8”n0èÖùNP Ó~äašæeí]<®Gþê`F&ºµ•är5µòús&ÿüîo‹Ñ<»H¬›x(³ó™¾CÙ‘˜µûÃ:²ºùÓåâADú›®&·„âD2ñì|(ni!öA(ÀzW\}IS®–~vv¼Íð6гÈ$¸Aðè"Ó¹%i€WÌ@)j»2Td5hÜÂ]਩EŠÒ¶¯Ð‘5‘\æ§ïVÍ%ƒ=ão¬ ™m³²U‡­aæn‰j ¤xSó{DçéSÒ„ ×¤Ü HÖ0¨Mþv‘½…³mqG[F¢§Rw™ëSzA¢3äSþ?º¬W×*)õÞ't©RªÒîNÑ^Žw¢UtÂöÉ´é‰ (¤@‘¦‘ ¾Ù‹2'ŒåÔº8Ž_’¯îœT²ï‹¦xój>~œãõ(†V&ÎºŽ¿Žh¬”13a²°Æâ©€àãt8K)u äµzk$`ÌmÓÙ‚UEñC0 é™5(‹u+kçfó„<êŠZx9Ãï† Qx"a<Θ_Ù&¯pJ7»s$áÛb"®,e ÐäAFžÀM:Òñð…m™äÓê“àžˆ¦zœBÌ™Š_4J06¿¼Ám¯ WLò¡jæ0¸–[èÍúgÓÜä/¸å©æòau夫=i°ã¼ }ø–!M¤^I ýþW¸œù¹û‡t)cÜã½ØVj„³­š%Îêç&­„Íe½( ÔŠ1`ø1tç¥‰ÎÆ<8àM‡P:nŰkP–Šö؃G0þMN<84·¨Í¼n%̣ݳȜCýélAA#j?žûŽ]‹3$hËã¡ÑÞW:g6ii-o&&&ñÓ6S+ÅH‡jiÌÁ7ßXKO¯Ì9ΰ˜ Ò'$Úyþ-·ZDùéNâûô*D÷+¶ÛѬÒîÛ†5üý{B™¢ÖÑ”¾ Ÿp¬%'ð{Ö ádÇæÔ,œ&J–”‰¯t-ærЀñj¼Í›æñ½Æ  |­Õ‚aý øZìÜ¡eÏêÎ\â¹ÂYGx’‡ …”C ëb ?É Eç ø¦Ñ\átz™ƒWø?I¢œ²!I—*ïÄÉD—½Þ˜B>ü\[æs«ßgÝó!Îßýƒ|ÀôõL¸1„E||¦N¦/ë–ûvÓØÌ".ÿäùª“·iíøC»E›¡¾3‰/§‡k[`r&Ô4p[Ñp1 *4ù+²åÏyK£Ÿìµ±ÿ§À:5ˆ®rdžU+õìê\lÀw­`ç¹¾X¢|€jõ0›öP:—…P°~MŽ¿iñhÛ4ËŸ[vúÄ îì@†è㉩NÊrtÙ\h솮ÿÖdZš†„ôš:­xS.0ã~äùƒ0ôÎòD•ž"ìü·û•Avô^;Ô—„<$ª‚î—o$'\"€‹™¨P8«†ˆ3<ýeéQž/™,0w\·°@x' '†v΃Ÿö±¯òš…‡´ZÌ{ªnê¢E”ÙæèØ5˜©\HG؈ƒ¨Wú´ß›48# £fA(a>¬®ê6"ø¼9´ø c¥¤aÃÂ&öÒ‰|À}&mQÄ0B'tWþÿ$öp”ðbï$g¸Æm>Ðó$ÿ¶ü’@êƒiëe½òÊžoÛŠ.[û':o°®˜¯ΤM'äH K¹'…ùÚ#~/3Š$n¥£áé—AÀ÷Ù‹oS¥ ÿ=ÀÞ—ç«57¦(FšD [Krmh©(MELÊš ‡E§Q>„©;66 |µï-+æA å·†vÚ88¶šé1¸¾˜ Rz¡Å„°™5°-ËÛA½ ¥é´Vïÿ/8|X |FÛd¡yZ Ò”ô¿Mõy´Ó%¥TÆ5Bó”èô p#‡!‰ 9Kñ,àÂÛ>¥9ŒtšJDæz[¨bÜÂcºöf5f{Ë|T|Fºƒ“:|#IŒ¨ãœ}%Î-@'ˆƒ§üíØ*Ùæ×dl³½ÈÅÜŽi,‡kI²Lÿ{ØŸ†P©«ù’ Õ*@s(CäòìžÏ¥9Év®ÈðŠê©4äÄ.‰×ðsä-ã€É†Ž gŒÃ¬|MIáæbóˆ~~®ôÙ6…–îùÝÏJün.2.C ܺϦ;Xí/éµge<£ø·Â”$ø¯Æ\¾r-žbbg” ¸¤Ñó ‹:´ýv8 ²•Z»’ÜÕª 5›à:"0åq‚?h ~F¼Þó©‰á›5–luS'"g:qC°9Åü¾*£<æØdx­æÄ"wå`3ò&À„¹-Ñ|žo™ûŽ¡Åu¯Ã*TyÜ3 Šõh* ^¦Ãº!-¥±ÂK¢WÝôƒÍ¬{/2œ¢½}ERp7óÝe¨5&Ak5½ ¯´!I›FD}¶ŽO#.^¶‹"Þ>½²ð¨WÐ|ì+é¯ñ˜/Á¼PE½3GêkµNË]Ÿ¶Öí]säNxz’[— ÞtÔ1´¥|Ð_s'¯?µ!êÒ¯^ð\£×È¢9è'} ö¥²õµJcvçÃñÁ[uG/ùÍF¨õà^î® ¯RcÐtˬWo"•ÃŪÉ|g Šâ¦GJ`·£=zÝÛ¢Ÿ/ëWŸ£X+Lt½*Òk M%ÆûùÈäR,èµ&gíªàÜÓ•²Õô¨ìÞi€?úüǸ4Yô‡û_› X«¿x]ºD±Â<Ç.næ8Õr;z‘Zd%'[%Ðñ¸_Šø¾‹á²{¸º±]žK´ô}‚ílý0¶»iãÃñŒN·0B× —Å#3\ ž^ßà(/…½’¥‹K#J B{ SXÓ`Oý‡T“ÿ©èËYPT¤,.Ç{¹n Ϥúï >ê9Ñ*¡Ä•ìß«,£ºlÿà„B“?vJ12ß#KÉ ¡Êhû#èdB:§Jðd}¹øL!‡ Åà ÍISH¸„wMÈùŠþ"] 7—¿IëçX‘¦øä×Ïà­1€lR¡T °ÀÒ¤½jÕ×é±PPhÌQŽ”¶·CÙR£ SŸþÙ…¼²PÉÅÄcmÝ}€ŽéQ¼n<×0žÅoXô“òu¶I¡ÄéÆ eÕKrê#Ôþ{Tލ £Ê0ZåÞ+ñÕrP¹-»¹!ßj!W”iÉôïüåÃÒÈ…\2d9é  [ÁbÚÀ"„Òûâ‡ûRzMU7hm¬B=pT+G 6@_‘£–#†NÜ¿œª6oçRmNiÞÙ43ýKÈò%6E! ë !Âí̪%ûÚµjÛÁ>[ÅBdwÿ„0ùz»mO$>ã'-öJ–HSè' ‹59‡MLí!õíÏ©ª6îb’¨ ½¦¿½X®Þ¼¸¶?RÑãx|æeYÉ œ]å#Þ¼z Îÿ¥RGÀUÿ )ÂíJ{E)ÚÀÌ?Øî.îÄ“ 09‚œ瀘¶Rò* v"“ßlÙ ‘´àÂA¦rþ<ÙEwŒ\”ßtY¬Pì¢ SÛžxo0bß)OŠa?Ú-ô D@è†ø U”ß^Æx.k Žy:GíØË2¸øì!MÃÎŽdÞK)]˜‡ƒXÙq D÷nmg ƒ#~'O’z’dùÓ›(D˜È¦¿p#Sx´žLì÷æùdÀßžëMëäLy€?Ä_g¯ZÍIü•-Å÷&×³Žž¶îËÓ[g¤ïc¡Î„ðòL‹ƒ;Ü‘ªW¹" úÜ(ó £äŸ°O09<}†,`¦©vêrzNT¾Å ÷»>Üêh/Y"ˆ¡¸/1¢ˆ= èíÌ̵]n£ôÌ5j^(¬·Ïƒtï¦F,ÁÀ[—™Ùà~ž³ï8ĆX8éê{~“ôÍÖç€bX½ï-—B*_@Ù§^1µ¾ÒÏ»³/²üicXÙÎC4¹ÜHL (õ]pºðkÍ·èß·Û¶é>Ñ›yçqåø|%ûÆbû–Áø9ÿ‚ƪWý Ï|:ÉPÜ„ŠJ’°˜Î’–GÓÁŠú‰Û¿¦ƒÝðÐéîKOÐö<;ªNF¥uš&"#9íA`ýOÌ=!¥þ©‰Û¡HµÕÁAb¨ÂC!©¶ú¦üÌêºXkÌPæ|´‘ú‡ÌžŒ} #úyF-¿H-4,‡:‚):Mèµ@ô™j|(ÿ’Û‹1‰z¾ÂZ§B/Õ´YŒð;P‡”ƒ¡$ÁLb 0>­Â˜NîRƒj#èÄ:eT1/fM6V[þ…þm=¼ ñм›ÚP#Ù ¢%W_7„\>îÓpÀOZFÝñ›\!å·Ö6 Æ=wœÑ­ }X$r¶Œ_Æ©W»@˜ç‡Ï¸s=âŽù q„mÍÓn2ñüΩ]•Xh‡–’t¯] ²y4:5ø/laEw`®Ry$§)¶« ¤³Æ¬ót :°#· ²‘#ÅÃû•XýÙäoNé7ój²äz¸LcaÐð‚Œ|9²D!ÑÝŒÿÄ&Þ»GÚshX…YöÂ!›ðOyߎ0“~÷–ç¶4ý”й,.W^û¨+×Ò¨ïtQcUKSœÏÙ¥@;öÖõŽ+¾S#ôÂ#ñF§Ðÿ®VZJ'Sâ˜ÀYøÔ2«Q™O60yjá÷5¥à‰+y)¸ÚzkXžU¨ÿ.€·v¥ÌA†„gMc60ûˆBRg#èYùkVÝ×NClžÌvCZSg›òÞ -înìÛähëhSé`·‹õÆ$\^Ks-8‹ýõ%²â\›#mJ©s™k%‚l#ZRoô·ÎàÉaxD³j7¾é ³½º«RItš9°ü(„\üo¿¢TîR }Ó :Ï—û=šwºq¬þ$¬ÐáL¦O wÖ?ÑM(Èú:ưÀJmÄä`aì•?«cTYJ1GñÜga³ƒˆèWDàa¸ù¢,î¾&´r(Âûø<0êr©æÝ “Ÿ 4¢‰ˆ÷-Ö¾Þ—IÍ‚O†s3­d¸ËÎÄ$oO5û‹h¾Ƕ0Ãí8 âŸ„³@ï¡«5X l-ןâIɳñÞ¤#o›}dzàòöQ/©ÚmáJ4Ôç«®îÎAMEsó@wÒËÂøhÞ­¤Y¥yr‡9P81€I,µÞò6¬#kð,æ˜4¾Q±°à®äT9וÓaI(….ëд.8C2Ež&³åEß[oŒ¦£0›Á'"û®36WBœ“aß»*vŠK`3yÎÀhØõèï3«£¹?רÍûm¤óü*r´¯%B5ìšÛ—ùž«™Ù¢$ùâ1§L\ñ3­(Z¾äJ]Žãì:Môùêë½Ø/<hüæ±ì B組HM¥ðØî(ª4“Ûë—_&·wåÕÝCôb‘™f†NPãôÓñÇ”H[öøAäÓ¦ V-þ¶Øs[ˆYÈŠŒ©e‘ÍÉ ï¡øª|_ê ù})gP_Ñ>}+J­ðÁÐçTj@¡„·xA"Ñ¢Ԃ×Qg!“ü)¡É ÜÞñæ¥Oe¶„–æôl!€ãÒ}ƽò3ÅÃX1jÍŒïÒ¾ÕYV¬Ê·‹ãèJ.NSF_ºŽ£$\Ò28ÏÔh9ïQüE„äèêÆo&@ù¤µ^a޵Wp¾m\En£ö0‘@º R!ß’ÓR5§:osx”oåâx[wpΟÜn§ÐªÓò9³Äfm¢^ãžfP9J{7>Ÿˆ”›•W·7XÜŒ M,^/¬]lèwMïÑlã õôçüSˆýL/{ä.ö˜‰¥ öÊm]WÃü - :JÞ”L¡¥%uYécçsöZœæ9šU6z”"ýÒ‰âTcÞc]ó½Îµ*¾»•ÜR¢Ä"!õFïýgªŒÇÿ×V.MÞÈଵ‚Ó£Ýâ’~ÎæÑqÎ’ëqŦ×ô<Šn›Ndä¡®øÍ,†ˆßônÁÙNÃ\æI+œqZØOfzFúÒŒ¡f)2´‹ŸêÈG ƒ®A.©ó«=/Ñéio ;[X '5ÅšIÅ+'í¦f{¨fËÄ2Nœf4’‰`èVéæP?ií?¹‹jmOGdWúØá‰Ág0\míìÂC7÷öM‘!(áôeHÒ1Xœî ¬IÁΖv2fC§$lgl€7­FBxÀ5çÛ¿°WH‰Ž‹u…Ò­ÔpÔÁ5BJçZË#­êƒ(xË1â¢ðˆ–R7ý‰5.üá™WÆrå5´àš‡öZé2zÔ^\QwÖñµÛgßÊŸ8ÃPr™) Xݻͥt+ÄFhÖ *ócËéý=_é¤á¶zVâz¼îka¿V:ÖV‹žÅ¾“Ѩsi—©Ê;‚ø¢yò¯äÿ?ò€CtèBÜ `€©,7?3tŠ^jÄdÍÓž©Ú;mòCæZF‡*'…ô¬™/Ygߨèís óI÷«â“Òƒ\¤ÈDlc/µ5¸HmÅ—¿Ú lF«mèVkœlã5Ø|ݺîȳO_SBË«ÀÜ2/ì ÇI)™1˜Y}¸ãÏÇŸÚó ìùˆJŠÓg‚¼ÃŒÐÞ8Þ»]Ýeéê\’qäˤÒ‚ûß«ó‹È|øÐsPðoaè¨[߃›T\óÀ¢™#ðÖØeEûÿùúßÄ}†»j¡œeµötmSãÏÈÀ¢T²´ùV+Ac¾ÕC»K­ ÃázL ‘CHRñuÜQMoôž;'doïÅEêÔÙÛ¬Vy&í’\‰vŒÒ™‡¤#øÏì>„Ñ&ùäy•+@úŽ @/~”U–#“_&\˜0šBêמ{]ÊT WݾBÕ}%U¨ÅœŽÆÙ#ø•Ù›üÜ+p?jÑõL®n“9’G ‘S° ýÜÆF±ÿGåP°rÈ9kÆ)C“É-öŸÙ@ÕÁ¼ù /¢@;E r´ÁMºß­JÖj˜iIÚâþË•ï'-5ù“§A\+ÑDKª«¹k‰\´]·´¦ (\`!Qx­Ö¹†%ºžÛò 8]Ô¥A)ßµŽÉ~Oâñ}1~}éçÐÓÌçSÙŽŽê£·[ÝàÃQ¤€´ÐBNÀ±aFΦoiÛòÏAeByîÁÔwrý0Š¡jrk¿íL!ùÅd¹«:¤¸Œu¶³‰NJ™z– ÃõúÙSK­Ñâ:ð–ˆö66¾]ŠI”».  ™¸Ÿi?릡µ– Öž ÈàùÃ.ÄÞœÕ*pÈ#?¼ñõk£}5µâlÆÒ/FÍLN<~\iµáMü`Táìvz •pVØiø©,È i] òòÝĀ÷QO7EOßA¢íåCåMÓçÿy€~ŸI?÷:;¿Žr•±-ä3;C«û2+sÀºq1£ô—(8Ã$Ìžì7¤Z©zò{(Á)T(,.ñ ج ²ƒOìÁ»ØÜ Ë(v2Mì*'Ó‰™6»ˆá‡wäBgòÌnîÊ5[ ®Mâ¢ßNM}ó>á¶!éëÙOÁq£Uµ€”2˜^,`ÓÈRñõ&aø©ºÛ#œøÞ¥kwÑÉÝ•8 þl±žvÖVZ໚Ï'F:"×”Â^õOü7îbz{lct­Nó<Ž® £ŠÀªÞ°ý9Îϧ Š!lJU<›g .÷i£IUíd²:!yXÞf¬—ƒ*ßø°ñèéý†5¨Á»8JŽ ²A´MPwçE0XyXµ?íÐbÝó¢¦FÚ2VÇï$ÐÛ ª­œ­;]&?j_®8là¿´ÙJÔ×Ùe”똯æö€=ðõõwÍ « z# §Ë ¨Ú4‹`ðؼîsóœqèØóÅálEvdÊm3ŽôIMaSžv7 ÒUÙw“ B"EÃ6¢ñWÞÞ“|Æ)jö»_@FÈDÀÅ,o¦]‡$rP¡èïWÕ!…sN©©}úŰ²Iú#¢"Ö¥“–DÙu,)Iäχô ¦ H—|LšÐ\ä@GО^¼Ã÷„æ(té .ªkPçÕ1uí-U³F‡Ü]òB†+ U@Ùê'о9Ä—”FVý9¬0¾ÔªlíE]œÁ÷¸;#Òeá û'ÄLÍÐH‡¥–|Ý\_T/ZR«eÚåîWè¤ãSξƒ[Æ®Mî)·€7`x^­š$WÐi Ò±Eº¸ äa‘ù{»¬zl¼WéóJO¹Ø†-À/{MmfvêsZ1´fv‚ÁÐsÔ¤ÅЕY4,-©Øtã®4ý¶g@G¤}u8ôÉv­²ñd_­y±¿û‰Îs÷‹Â{\†<\g{Gƒ­údÏ«ÞÿœDò O1bŠééô¨cD×ù^;æÝxßt˜£Ÿ*`ÿà‘Vnï6átü¤‡ÉÑ©èÝ`Äé5¨d@·Jß‡ï ˜§‰•l%$û†ˆ„ˆ<µ[`íqnƃgIe]‘D$`îxùQÊx«T{ÙŒv¹Ãr›¥0Ò÷y(v("í¹ˆ©4¬»¯|_•€ßËÝXôj¿6)ÜÉ&ÊyÜjÃo82¦ý9µ~€Å²4µpP²`¢Ì+§qÇ[âíZoNÚ™QpóÅL‘Ï/0{À6s‹68°ìáÖ ÿNÚüÀĈÕé³ÓVÅúÒ‹ÃäX³®„z¼Y!ð+Rÿ½Ý2_Ò¼yå«—`f©šo…•ëX†å ×.e»É ôC·E"g=\à9¬ŸB©4AQÖ’ž=áx4Ú`bÏâ©“:ý"k³/ ND4Ââ"»›Mþ@š!‰¡oéÃѳò-3Ÿ©Hñ,,f›£da¹g1H…’D­ùðÆøåñ(²î¡‘@¼›£jç MG˜¬AYˆ}“oaמªì#ü>j¶þcȶ5ÂÙZï¬Å£dWÚg.á9 S+•ÊÃóØ«ÄÜ—‡X†¼BT¦/»…!á/'¯Uõ`P D…jbG€šC‡\ÿVÓ]F}¥>F©&ˆr7ÿMÌ*I®CÞÞø…{‘_Ð9ËiÔ=¼e•—öóè³Eêó5U¯UŘëÝ%ñÊ+æÆõNs–ÜX÷þùe¤(E±×í ²µÇî>*=ï"–T=•Än›Šb¼8¢]n°%ÕÍu"ÂÔÔ/Fêï$ ®ê LÈ02npCB•òÐVÚè—‹/z¼³[@äãø¶#qSÛ,A}¡kÑ'èÇ£”1Ì¢Ñ} ¨Ý×~rh:¶õºÖ<[_ÓE׬,3GòS„Uäz{±€Òƒ¨z5t©…æº17ϯ@ÄD=31—Fÿe™ÈQ·ß覆®¥ÜJ§*¹ W©¼6}ìI“Ó[Ë8©œA½tT;%…y>K9]Iåó5¦j ý*RmÇöÑ[FgØA8{½Kƒd ¼1_UÉP§†ŠÊ£§ÊÚ|Ë<»{,cEG?À‚x¡ïx™U´õŠÌ~&Ù }}€TçU€Æ7%…7‡™à£'ä°M$ãá{eo,ö ÓÀ¯¾qˆ¶Àô9“ò/$¡^‰†Ž¤Í/ž·òúm7ˆý›ØXa,í›ÁÄ ¬²GL\Nq(ôcq+?GJ̘Þ<¿à²äŽ]Åí&k1ÔY´@…2qHslë-pœ…0¬×3gÉ“²k¤Ú^ïVÎLN7/¸†X]´.Ò…çuèÜŒ¥>[V³­@Š+ƒe—†Wi©§ÕG°ÌEXÏns‹ÓÅr¦±>0î—¬ñmô³T#Fij¸¤f”‹HP ½ 4†öÄm<~X3íØ‹6aé“0B&'>fvÖ üa±ÄN¼ªØ“pý2h!aÂq†äD·@Ç€ö3¹d«#,:hzú‡÷û4xY†+°„rA1Ü®%FÌœt23m¶9Älýyl1lã!tÇü¯/¶áLYãògÇw‰ZÞİ_ÍÅÐŽP¦úHðM|}Lð6MùΨ*X—u—œª jrúügÄvOÎä®FtU%¹IV†Ì¼¨I¡|øCê x s‚ÐF>‘‹zHíáÙúØê¶PD&ÖÊ‹Êt'ÁO]pÉ kÁµlýOB¤V£¾#`º¶èSÀ½I{LkÙÈ!NÜFàÓ¦{A|óŠºüžîÂùÞwD®Þ†Tb]+±ROƒ7&Ÿ)Y>c€¨¯´÷§ZⵉËOéœ+TÖÑ%íߥ9€Ñ¸äÞE#ÛW3ÌžÕh¡€î¢žXun+I 7ÄÔ“×J¸©Z“jNÌžho«UEØŠøáÚÔcN0Í=×{Â\Ž$ewp™€Ò­ýôƒ$;îñsUH³‡ÓןhúµçogÃ1.@RÀàiª˜.-²·¶évø¨³U+¾„¯0Ë6ž{KâÈñïÇŒB" O±'jÑ‘èvÙüÏ^ÔG²*sZW5 jöl:hhÆO>ÇQ|!LTÁO­#^óÅdu³z%)ïÈîH†þúæö‡§c¦~c¿ÖET#$Ùå<ò+P/(h&ó ÀÌHi‰:òD2W!˜;|vPÞÑ–é'+µhŸ½\Aøv.¥‡úõFÄ¡ùw¾·åFmþ÷Ã…åÀáûúÑùæË¸›k·ÈZu'3LÍh”O¶l¬˜åTy‘h¡hž?òµÍý„–/¥¥ß±[õ–­:‰²KÆ`˜Ðgxî{ÈÕ'±³ðÑ)û–—‡GYÛ¢?z«máòé·æiÀB?VÁ5Šßýï9rÑ)O¦¸x@ÖZø”99™¢ÌôÈa¥Àz-WŸ`³š:P¶]².˜Õ¶ KIŠˆ’r€PQ§05Âp§sÿœ"t{'369Z¹kuùºàÙp LjDdE+íEÿÝwIqµLÂ×ß;1ŸRPfFㄳ›?ÁàHN¢¶QJÕÙ3©Þ~Q h7 ;ã`èsáÙ¨ñ®0P”Òÿ¶¯†;´#Åÿ~H~YË¢@‚}.áFÙ-•&d…Ä{çšuÈœècsw~þ~—%×IAgQïŽbQÿåéyÀcÔ0À€ç$ˆ®ë+£‚Í¥Áw=¢ËÉBMµöW ?pÂÝt¯‚açSŒ+ø}¬yPõ¢~ÌÃJÂ’T¾ýq¦v}¿¦“òÕ½†}²%œ, c1ÊþSü Õg}y=•élx`(L—Ì^«.êåÑó›»8@Û³<9‰øn ‘žEG.ͦ¥*¡ßšb ã lú‡sý4pjã «‚ÌYnhF!œï³Ä‡0†Œ…¿ÁÖ'ò*W•esiªô†tÇh[ûïK@ÚFX°¦BP„ÅktŠZ³¯b­ ˆúhTòŒ³â­×‘r¥rak)ç7éÑ-¬œø¯^ÑL…Ð'ygxí$F$PaÔŒ;çÚÖÊû<ô—‹4í‡5Ä…ÝF€Qö¬ï2MÄd#ód!ÃP¥Ûß–NÖ}ùqe—ÿ´ ¿&MÞ@j&e]ÉÕšÜ'mLÃÃqÀ‚]KÀVS˜‚(ð:WŽâŠÃsDâõÅX|©ô”éÍî ÖÖ>ÆZÏw=cŒõqNËäò«M™?ÖÊ|”l¤§jµËå³ñI]8ŽvÖКˆ˜5±4G ùò~›ÿH55Jç@½5D‹_3M+öÇÎÄÀ45¡qÁµüê7G±~·†ÜÊwµî,Ó Èë@_&£Œ|)®ïf»åv¹6v¯*%(V çºKÎpi¦²Iäsq¥F¿KõuMùÌýZ®§6½•á+¬Š‹‚áô-ÐÐÀÊ®®§âý?#±\cÐ ¡LÅ*` ¸=éIîgô="·•'Þqß,J‡Q8錤Úÿ¾ ض¬¤%XÇÄgC\ÎÔ“û<êH+™ý DGZÔÐXÙŠ[,=*š‰³Uû><ÒxBþâÛ_« ùÎ@3”©õ°ŒƒÐÿ¼aOh@JDÒ}¸¶)»0b,’ºMÍY5È{:9\Jó²qÒ}(g¼ë¬L¡“²#ì—Õð—¾#ƒÇ=©H"@%ûìûÓacÃÍ3‡ ¤…×~›4þ—û·Í™;‰X"©çúÆ *£õ!Vu™æMû;“€Ý_ÜrÌ-Q‚ÄstYM¿ªíÜ „ì×lÐçŒ9KËõÂÈV[{¤ÅD0æ¬tjÎ8Õ “QÿDu5“+ØuNc=JÏÓÂÝyKxÕÜ;_¼Cɵ‚e±ÅŒ‘ÌY;*h8„ò³œŽÅ7—ƒIö[ðÈó„‰Nfë´?h©*éõp‹›«™4Ûú`ÙÏ- L•¢d´v Ú ù† úX$ÑÑÒ½+8O;é jC²ÇB%ï$|ßZjë9#K¾‰³Ë.ö2gϕؿ˜ÎGy!°ùË©ã—ÐUÛ÷3Íš‹Èëø5˜<Õ˜/ýwÔÇ<•C+·+Ò€ÈrgÊ0O˾¹Ÿ#WCœ;­ÐLŸvÝxëôˆÌålW¶ÿÇòÄPPôÑL—p¥bo½z†«ˆüõ©õ‡Þ¤îEص£ ë‹ÆßÖaDïáqËÇ õö à§[K»É Ýq+²€æYˆûÞࣄñ®&~ÑX§æS Ñ³ÐmÇ|srCFú ^\ϵ[+<ÇëN1OëMü†ÕLâòWqYô¨YH m¨e˜ûô;£­ÂJUPEMâ[ŰÓN0S1BÂ7wxQ-·&„ëûÃFUWµá¸ÄuOaùä}>]LóÓ «‹£$è =þ7”u™²`â£æ@çì±o.ÝS!ÉIJ›a¬jNâþ÷…Š ~±üšüêÛ³3µh%ÃRXs.æ{+q˜‚¯'ß%âvë^Þy@ ¬y”Ecì-Ëí`6…¯îk¯£y`Ñú4wjåw§¤4™í‚ÐÚI íÒý2¢ ý ÐÍÿœÒÄqV“f7$%@“O‚ X· UÅÈöÊŒ©éf;L®á*±îÙ1ì#¹>v¢_ sNZž<ÌÀ˜R¸Rÿø•‰hP3E|ƒ"!Î<·õUbjêW<Ɇ›£ÅàžºZO_)W·ö"»ë†*2")ŒËÉ$“*@žbf–¨mäQL»þìÐc¬M6ÉÈa Æ YáTûÅâ>îqI™/¡MU—›T!¡"²œÁº”UûçÆÞ%È{Î$Õ†®#_û¨¸e(¢q"&½ñã3=¿7Õãõ˜ŸÕ&5Û• ã²Àõ@ðÿÄ‘—quu¬¼!l°ô_PlÕ ¯@¯šàÑô†•…·ÆÆ~0*¹Ä)fOH?¬±Ï”øa$"óc›`stºý.½LŠD{×0Q¡:`Ñ!ºX@|þG¥ˆ|3_„“„aíâmÀÎÀòÏR+m8“ Ä¢™|»XÃÇ„Bú`û‘ [«Íóê>?ÛŽf›rÄýò—¬e®ÐСÙx;ß2õ“—œjÖHüÁ†}×½ááº6¾$}{p‡tç4`ÙhÞÎÝ2$!»ÞLüî°<ü¢´#K]ØaƒÖ蓵u´>óæ ©ÌµÅvýTçžßœ.ÛYMÕÝ~_›–Ï8ÿý=B´ö{wŠgŒRÏÓfdÇÅíâ¿ÃˆWNÂ#8·£~Ø6r¥¨ùë¢V7÷¢I–üb¢˜z=º:¥Öß—û Rë 5dz.Þý=Û‘0”œå"Êukð©Ü*\è™àvgW·u "ú?°_¦XObÝ`=ôZHt1ŠÈÈ,½¡FIO’y÷O£K¿’•GXWS¡aÜZ7WæÆî*Ԩǧ°m‚gvÖ_zfPÑ»úN†0•^T 2p ç…"ç>Ebý«•g7AnÇÌ®Þá†ýÑ”ûBRØ œ³¾-g`ØØa5N©¯+++ðÆ`šFvqS&Ó&MSÎ|Yñ¾JõP[Q¿d$XÁBÒ„PI.¢pú6‘le3ƒºXoˆ˜QUNË^"‘ŽJ´O5aÏ‚êëÄNëØ!ø¨oY¹ê#a¾ µ`Öm¢Ü‚±,ub¯†B…ƒÛ„tzŘ»¦V†t‚ÆÊG—8fw׳3.ÒÖ\šŒy÷‰2Ü­ûAÒ˜ (NÑÃOIšÛ?F8³”ïÚ™QÚZ+AΓƒ,Û&cK[1â½÷%¯üPÖ1žŒ ­T="^×’°KOîó¨*J2 4óñlm‹ðHeWfnkðÑ^¾.èà›´½^|ÐÐÙ xW´Œ¶xù6óôMömæõŒâùÛÏ%ýó=ÖàD¤x<†J@D„öhÔ2BgFýh[WשŒ”ø9ÔàÂÓs-êóËeìÆöìv øI„%³Ÿ ‡=,0iFAx?:avu탕_~ëg©< Ž0a©ìÍC#ý¦d€D…÷`0MÞ¨!ÌV õ*=6¡”=B”ˆ¥¨)ÆÌ¶jïÜÖüßF* ?£äÆÊ¡!ìÓN^ÜâÐhÎ…/][µÞðgcëhÁÙXÕÛXD´7îè9Púö£É¸ª—÷Ýʵ;4 s×lG‰ª†CM5>ØË5±(¢ÊðÔ¹Ü#íl¥’ Ú„í½øÄÍf¹^±vûªê{#Tã”Ô†În£‡ìúTB¶´Á6WBh#ÒE¢zÍŸ^­•­c½ÑgZ¡—û–Ȥp< 2"D+˽CŽÀЭ 5od­˜VÚM £B…Z;?õ#Ь[YÒJFžÿš¨´^¹Ñ ®‰»<éÉ(äèî€W(ŠÑ›šy ßãeÁ°¨qPÓ³)Ý9á—\&L»y†¨|„'L‡1ˆúW>LŒ""¸Y´ìdº8z‚8’„ ˆýiò÷óHTE¬&á5Çôe|w¶ÿ¸ä6h{H2ú– i8[‰&_>¢;õà uQtu¬QÜ#SŽÍÆïoN¹g.¥¿PfSï¬z[OuKqôsœAôϨébg+Ôì”ç:Yk¥¦r‰òì„‘N.qöy„ޝ¬Ã"ÍýÚl‘úðÐeêkÙ\–¯þþz5ÇYµ½Ñó]btß´ä@›Lqrö`Y@›ÈÛÕ»™/x>ø-xËk@‘>•’@uu‡l7c1mZ4žŸ5‘˜å4Cû.g't0¶ŠKú°ù­»†Ñ$lî9¢bŸŸÄ‡1[E)åN²ÈL‚$šª€fŒO¸8èoB”Ù>»’Ü¢-ç\ȈÜR°¨Pw,¢õMb¤òMº’¿Y/Ký%**Ù~â Øv»@”Uv¬Z=6|ÚÞÍ”†È—nMÙmÏÏ_%¦Òãö\ÁHŒ±Ý€7kÅgs~§ê5ÊˆÍ \µŠ¾f—Yõ¦=ÏêŸë —ºŒ‰ Š&’S!±ªÁ¤’f¡¼K3µÿ~qص®Î±¾c5èOÛ»vž'Ö6Ê™Jƒ…JÕK(Τ;¸3ÒuÉèëFc ôb@®€>n(ܰß'ð›Ëìb›§„[®ÛÒQv8ARWkúšÿqž‘²óýŸV ÒØÕöNⓃ{9ûÍÞûœšÂI|/‹oŒ1TÁ–×€©¸X29À/þAZù1ØW¢b?JXªºð‚¬Û Õ«æšXHHr¦Ý^î ׯpDÏzðü lj:=¾]{òâ6‡|ÉÅ&`Æ£»í×Aý2ƈWEç„°DN¯Ûüí^XWd ã´oÖxlvÖ´Z `$Ë6Œ°ƒ³KAª¿’Š"Q¾\¤Tµ²äá>9>P|»ÃVáLîKÇ tXÈE”K¯(ÝrRß¶¶ÐûãÖ`û*ëL²ò6Ÿm×2R· Q( nså*z!PÞe¬~•úvÎÊÓÀ·X÷¯½Ë‰³9·ít0{ü—ó1yg¨ Tz» ®ÝòÂpý¥~Éœtƒö†'…àµ'±î3ʯDù£ß±²w³»m„ŸS>Êî Ó=¢ eŸÕÁ] h'h,„wb _ƒˆÒ< ñàµD=+ãò#:Š ÓG]ý@½Ã„“’yç.©ŽMŽØVy9ViïÀÔˆ;éh*ûʱ޶ÔÄá•%U–ï¤þ7€»!Ù8%ºI™|@ŸØÕ!ã}ãÚJµ%(ŒT«¾Žþl¼ÛŃSÕð‹2ÁùC‰©déaqçÖ›•ªœÑ»Qÿè2—˜”`ªƒ{@—èÝý ‹Ÿá†võJ"‰…تnæI×·Þß-P~¶ Ü[ÿ$ïÑ7Uˆ“EÎMý›©vè=xWn;^x ÷®ØU âw e¦Í¿ _ÜTS*šU»³Å<™ùÙ¬¡H5›ÁH@%ÂÞÓV/6»pÏdJ ó‚ÿ¶s÷èûGãð¨—6þG±’¥h$Gñ!£r€¿¬~àw\¦zÐÄwO«:ù88v|ŒöâoÀñ?´å|úÑÎI÷åС«JéœÑèÔÐcÛ‡h$©²XO±sï§Cý¥Î%Á¸²ÑÄêsù'œµÖ 4›” Ró­®«cb¶œÊ´x'|BãÆÄTX0JJ‡ˆ™À`=V!ýÓÑIC æØÊiA8VÑ}Saq´êÂHÇ• yE„N¨K?Ÿ;êî[§Ò6u Lˆ=[ `zñE‹ì‹!ȺÇ2µ·Í!§2«%›eÀBJP÷eÕnUІÞä'FÁáÄ2Ç©uÞñ÷O©ë[i3Ħָ&ʨ阆A(‚¨V‹5TËû1 õLs+•-êsCwo?]1ô`)=§ÕpÊòþ½ªf½Êâ»Æ8s†87hCe¾ªóxPÛš‚9/5ç¿Þ°ÿ\‘—´éÅLP"V7À?”± Tª»…o¸çÏÏVÓ&2üÏÀó6‚ë=`ZÆÆ $Bp@É!WªoÛBdy9í ÅÛˉ¯A½SO›í&ð’‡ÄœLNzTø08ž.þz&Ç•˜ÈÊ-ŸVHsèÖýÁUå\kÉÎŽ†£¦ wŠ˜nþh½~ä]áËTÝ<;'Ü{?qáÑŠÉHÎG?ƒ>rÔ«ÞËÞ2ĬÑãèÜü'Òlê^ä³Mp:#— ÖÇŠÜ{ÛD™“ ¾š‰·à$3¸žðYጚ’ô÷FBã^žPRW—áeÊæYÝ!•þ|bŒóÃ3tÝŽ2+w6ò-áØ“þ®O{^[][Gûˆ ·jB¤úšõ¨½"{±×k2–C›][Óp”åÙbôÀ_´ëÑI;Ø—ÁW*|ÈÀŸÖ°F‚˶æTÁ{6usž­ið'Ä}­FøîYh<È7JÈiLô œÿ⺥\‡Mx|Gÿ$1†3C÷ƒ¿mµ‰{ä¶ŸÇ9Qgc«#ªcp´è—¾¤cŽ›<¢?!i¡áxUÉ­~œœ¢ÖKø²Y@}$œ!¥ò·0€É0|©AEÀ?‚ípÂ]WK!º‡ˆmòµÙ~j–8Õ^PÕC*€¿.ÅñÇ|uYÈ]¥p{KšGï PCOár §nœ ÷Þ¯]vº'· ØãÞ¡‹]ÏžWÐDaÌ(G=EEKHéˆÀ‘ÍbÑÜ Pôé앃^,[±²oŽÜ¿ÀýÝ™Öùäà\RÉÐËÙ)&%* */Ô•Œ…¹\ž¾Èòðê)£#z§zó™(øïØ®–pƒ¶)392‘I>]ç}ž t¯âÀ¥[’Ev¯Óu~b±ŸŽõÕ¶ ¤F1F´wñ†™¦tÛܹopŒuI&ýý‘&˜QÑý ž©7ô&ÏAà$§)'Õh×E—âºP˜¸ö7$¤È›@ƒì4’GìMˆˆ—ªFÖ+;W5=˜Å†?lçZŒzÅø…Ç"<† 7NλÜdÞø²ÿòÔJäº:YnµÅ±œ‰qà=`>‘Àö¾XË3±éGR¦ùRÒжšz%(c–w·ºŽì# è“ßp 너TJìòTÆÂVl‰¶Jw'Òaìe06>ºÂ-c´WtzG_†ƒ"Œô@ÂJ}Ù·J ˆA3æÿ>ÝÝwÃ*’ô0âXt>$è£öЦLþ!‡¤“£‰ê½_ÐÆ<¦xïó/dÆ-ûݦMœ·ïà¢ï1l q…‡ýAà¾çàÕWM;fÐÔÀ«êÿ"~RE 7‰á0tÌ} Æj‡>Z|“Z8j&AûàÀë>€<€#PÈ!i ǼM¼“jåòÐïéâfí1Jî½ñjxâR§Z+ÇPÓñÊÏøßÚwR Ùí¹|,qò#À{¼Ç:çLjҸ&æ' ˜$@Ól²Y†ý‰¶'Ïpœ>\jó¨ \æP€°åœw•Ä¢»½0X‰üW;çŸ=þ,é ehzE`zsKnC’:¯Îà°ÊõžÍë>â\,œÈ ’yqX£5±Kè"^GÄÞÁ#,î`¦U[¬ÖãÔèN±$B³øT ™~ÄÆò,B¬øº1v¿~Xå¬Ñ•òa˜žûî>ÂòS»7=¸Ï@´4À¯ªÂßÙ1Þh%š™ÒÉØ¤‰#ôynôõò†]4ßËõÉÜ¥'…1Ærôy‰/æ}¬q›‘õ vqL äâ>Ò %9n¨Lv^³9­PÕV1L¡ggOLýGjÁ ŽÎ½ÏÅômxêØ™6 :¼®è™oq¥Øâ¸»`Åp#Q²°6¾Rgo!œÒù‹‹´ï^5ZØÎˆ«q†ö1ÀfùA½»¹?›ýQ¯ÂAù*Ðu9äí’„×%nqyð¶›%ÞÈ΂C•[d_±èOfÔ=øúIüð½ÇÜ-³¦¦ öFË4ºå/¨I3_ÞjBÚïÜ=G Ë:ro‘ôÙŠŽ2îλ;ev|L'aáã.?Í~cOÆ7?ËËô‹Hø¤ŠñÓt£ö"]=™FŸåsÓ«¯çÒ+ rçƒ>î€eiC›Ú|Þ*“•Þ¶ubõf%s «üéžvJà«<":rEh¦8t žÁU+7Ë?¾· Šqiû2Øquú*â%4È#ÎëŠPäl*ÝÌÈþ¸)R{ß$Q{ö/Šì;²îsEjH¤(ž8îSVG£EœOÏ=‹•¼Ÿk– Ó¸ˆs.û¯ÐðvJª·Mÿ¤ÛÄ  h Ñ{ZÿvwØ q•QgåÖb÷ã1áiU³Ú¡^Ò¼Æaö·/ŒIPkù–e^¸¦Î’:’+à…̶‹ñeÇꯙšÞÙê€ßзÖq| ”®EOͤ•î+A'HT»uFH§˜h\O€îCf'*°’”O Q7ÿÔ}X|Hb®ðçΞg#ùñ7¾¤2.†=zé Vo¡{²4ŒZè¡ýˆ‚Œ¡š Ù:&yÀV‹‚Ó·­¥n@*Øþ'úo­?4Xß9½*O«yÆ?—ô°ùxJmܸ}•÷ìÁ »c«€ca_k'uõTŠõ*ZpÔPuØ6e²É–m šÈCëŸ4²µ ca¢4?º"Ç‚wGñ·°{dÂYÿ¨;åæ9§D:o µúÄ‚Ø ìÀH´>Ìݪ¢Q`kÊA‰økeè’ñgÊ%NÌ©dI°ŸÞV°lso5|Ê23ÄÃî,3·€äoB4*ôÝö#äÿçå‘-Î|íí¶ôÑ3Ê"`LZHÖÕÿÄqP³ŸïC7Qýà¤G–¨e2É|Ïzí”1$”7YÏãô¢Ê³Ø âX<Þfk¡ÇÛ‡ëÚUæÕ|½9CÖp¿_4òü!n”·Cbó Ö]Cï¡è±ç‘§Òצ Aµø]ºFÐa@œWZgD: -:æáð…ëO—½X–¼QUQðÞaÒçYÂéY(¯¡©CÚ¶ŸLE,ñ?~Á Ì VÃ*Qr0RîuŠdØXn1Ïxš pË{¶.Ò–ëj*xaT3‹;`íň~ ²ÁÞ²­F öÿ*«¸& ÷ê2A— ʪŸBp¿bsÅCÃãI‘…Úþlaå€giè?ÿËÄDA—›Žô°™Ì Tëò! ýÅÖ~mú*Ôyæ¨ DÅZGä„ÞÇÙ¥ÁטÀD›èÕ@ÜTÉ;±sx³>‚Þ ‚# ¹Ûš…×4ÙŠõÐ%^&V apSÈÉ tpz›Í€ø¯²}^3ì}„•ÐõÁMª‰”[L‘ÏõÏø¢Çú[¼„{¦À†y_(«Ñ¢~Cà »p¥S¡½ª‡¯wK¦º@YXt­ìÏðödî󳞥{VÓÆ±™Se”¿dI‡H:v3{±Ù:³•É;Δs&ôuD$ ™ï7fS{ÚGœ fåÖõ8:jO—îâNnÒZ`ñoíª”zãWù$¢37N}–cª­Ü{þªx­Ú¸6&ކÿ%·f~C1Fù‰” ÚÏÜóFD_\R¤¶ §ãõøC%9©ÄzÉOD¥{E16¶ÇG9ï}õ“ek–zÎÓÕEDŽýŸ(XéD—¶lä8/:¾SìÚ>òî…|·ÅéëÊÇ"ðR÷x=]·C¨Ò £&íó Œ `hOú$#Ñ2É®IEdÊzn·n> \×AiòL£Ã„êÚ¬|¬IÝ+¤Äÿb„C–›¨›S<Aät›™ôP¹hwâ>÷FåÖ]SªEºÅ2ê8¬ã ùd†·¾¹P©§=õ+|È©ômqqýÑ*ìÚ>±±—1²nšHÄnGš“Gø%?B¹ø·ùûþ T«ç™®›X’i*:¢Åé[ÃXª¾QBUA ÃtÎw/q7A{Šo1Vî¼aÊe@+ºÈNóõÙŒhÞ·š!‹ô w/X Ή_”˜•Ƙm<¸ÅõÂÚRÐ)‡½³•zá›hxŠˆbË\.ä^ ¼ƒøDtk2÷ßíz'5HºnÀ Á¹fuÜ ¯ú—5õs†ÙÓcì¾ÛjoÓ¥‰ÀfwÀ™r‰|}ë×5•7au¿´K¢ô9Kd¯—úÖ&ÕÈŠ¼«P”ÊFà+x>ý´y¼›aR0kgc˜$”¦7ˉ=#ÿÒÍÞ£kwœš»—€ ýš†SŸ»y"ÁÂA]Žö 36ÞA˸t’ÈbeÓò ¬Mlopk^Ô+)¤…|PX¼¯éÅ:©ŠÙ¥‰¾ìÄØ7/÷â8š`?• †íh”du•gŒn7>à¡ ©¥N¦Y‡KrùGw1KÍâÿßX&¥ hÑ.j¡BP@E°}¬‡ˆû¯“@È£óKðöBÃàÇ4?«*-¨“Ü7ä; 5œ îBè$ÄÑ6Ïd[Ü$®®ì/Åñ>s‰êèGpvÙ¢ÝÉA䖹Н¿‚ŽkÞͰÏhLÁhþþ XQ)+ i†Óý1$•ª½/“^Uf›G„ÈÆÎ„ùÈš]ÑûïÌ(ybp5¸ºdïê75j—óTßÈ‹un‹rTiXòêVnäM)WKÄGê¼ÁPï©®\ ë= fÂRBß“ 柙3¥îö‚½u•ø‘Jaá²{Á)ñĚۆł­¢ÌbºLCÞÖÜ;÷µ.&`ÚÊQ¡!ÅÎ&2à6ªF±È³QÖsåxÊa³ü\ÞuNÂ|Ϧƒ²íaߥðšŸ^C§…쌂X5è1ZI:U#=HÉ•ùVªVÜ>0 ‹YZsurveillance/inst/doc/hhh4.Rnw0000644000175100001440000007575012617067300016051 0ustar hornikusers%\VignetteIndexEntry{Additional documentation of the function hhh4} %\VignetteDepends{surveillance, maptools, Matrix} %\VignetteKeyword{getting started} %\VignettePackage{surveillance} \documentclass[a4paper,11pt]{article} \usepackage{natbib} \bibliographystyle{apalike} % Preamble parts \usepackage[T1]{fontenc} % Make it possible to use danish characters !! \usepackage[utf8]{inputenc} \usepackage{hyperref} \newcommand{\email}[1]{\href{mailto:#1}{\normalfont\texttt{#1}}} \usepackage{times} \renewcommand{\sfdefault}{ptm} \usepackage{bm} \usepackage{amsmath} \usepackage{amssymb} \usepackage{latexsym} \usepackage{verbatim} \usepackage{relsize} \usepackage{epsfig} \usepackage{comment} \usepackage[english]{babel} \usepackage{pdfpages} \setlength{\parindent}{0pt} \setcounter{secnumdepth}{1} \newcommand{\Po}{\operatorname{Po}} \newcommand{\NegBin}{\operatorname{NegBin}} \newcommand{\n}{{\cal N}} \newcommand{\pkg}[1]{{\fontseries{b}\selectfont #1}} \newcommand{\surveillance}{\pkg{surveillance}} \newcommand{\code}[1]{\texttt{#1}} \newcommand{\hhh}{\texttt{hhh4}} \newcommand{\R}{\textsf{R}} \newcommand{\sts}{\texttt{sts}} \newcommand{\example}[1]{\textit{Example: #1}} \title{The function \code{hhh4} in the \R-package \surveillance} %' \author{ Michaela Paul and Sebastian Meyer\thanks{Author of correspondence: \email{Sebastian.Meyer@ifspm.uzh.ch}}\\ Division of Biostatistics\\ Institute of Social and Preventive Medicine\\ University of Zurich, Switzerland } \begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Sweave %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \SweaveOpts{prefix.string=figs/hhh4, width=10,height=4.5, keep.source=T, strip.white=true} \setkeys{Gin}{width=1\textwidth} \definecolor{Sinput}{rgb}{0,0,0.56} \definecolor{Scode}{rgb}{0,0,0.56} \definecolor{Soutput}{rgb}{0,0,0} \DefineVerbatimEnvironment{Sinput}{Verbatim}{formatcom={\color{Sinput}},fontshape=sl,fontsize=\relsize{-1}} \DefineVerbatimEnvironment{Soutput}{Verbatim}{formatcom={\color{Soutput}},fontfamily=courier, fontshape=it,fontsize=\relsize{-2}} \DefineVerbatimEnvironment{Scode}{Verbatim}{formatcom={\color{Scode}},fontshape=sl,fontsize=\relsize{-1}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Initial R code %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <>= library("surveillance") options(width=70) set.seed(247) ##################################################################### # create directory figs if it does not exist ##################################################################### if(!file.exists("figs/")) dir.create("figs/") ###################################################################### #Do we need to compute or can we just fetch results ###################################################################### compute <- !file.exists("hhh4-cache.RData") #load computed results if(!compute) load("hhh4-cache.RData") print(paste("Doing computations: ",compute,sep="")) @ \maketitle \begin{abstract} \noindent This document gives an introduction to the use of the function \hhh\ for modelling univariate and multivariate time series of infectious disease counts. The function is part of the \R-package \surveillance, which provides tools for the visualization, modelling and monitoring of surveillance time series. The basic functionality of \surveillance\ is introduced in the package vignette \citep{vignette} and in \cite{hoehle-2007} with main focus on outbreak detection methods. The following illustrates the use of \hhh\ as estimation and prediction routine for the modelling framework proposed by \citet{held-etal-2005}, and extended in \citet{paul-etal-2008}, \citet{paul-held-2011} and \citet{herzog-etal-2010}. \end{abstract} \section{Introduction}\label{sec:intro} To meet the threats of infectious diseases, many countries have established surveillance systems for the reporting of various infectious diseases. The systematic and standardized reporting at a national and regional level aims to recognize all outbreaks quickly, even when aberrant cases are dispersed in space. Traditionally, notification data, i.e.\ counts of cases confirmed according to a specific definition and reported daily, weekly or monthly on a regional or national level, are used for surveillance purposes. The \R-package \surveillance\ provides functionality for the retrospective modelling and prospective change-point detection in the resulting surveillance time series. A recent introduction to the package with focus on outbreak detection methods is given by \cite{hoehle-mazick-2010}. This document illustrates the functionality of the function \hhh\ for the modelling of univariate and multivariate time series of infectious disease counts. It is part of the \surveillance\ package as of version 1.3. Section~\ref{sec:data} introduces the S4 class data structure used to store surveillance time series data within the package. Access and visualization methods are outlined by means of built-in data sets. In Section~\ref{sec:model}, the statistical modelling approach by \cite{held-etal-2005} and further model extensions are described. After the general function call and arguments are shown, the detailed usage of \hhh\ is demonstrated in Section~\ref{sec:hhh} using data introduced in Section~\ref{sec:data}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% DATA %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Surveillance data}\label{sec:data} Denote by $\{y_{it}; i=1,\ldots,I,t=1,\ldots,T\}$ the multivariate time series of disease counts for a specific partition of gender, age and location. Here, $T$ denotes the length of the time series and $I$ denotes the number of units (e.g\ geographical regions or age groups) being monitored. Such data are represented using objects of the S4 class \sts\ (surveillance time series). This class contains the $T\times I$ matrix of counts $y_{it}$ in a slot \code{observed}. An integer slot \code{epoch} denotes the time index $1\leq t \leq T$ of each row in \code{observed}. The number of observations per year, e.g.\ 52 for weekly or 12 for monthly data, is denoted by \code{freq}. Furthermore, \code{start} denotes a vector of length two containing the start of the time series as \code{c(year, epoch)}. For spatially stratified time series, the slot \code{neighbourhood} denotes an $I \times I$ adjacency matrix with elements 1 if two regions are neighbors and 0 otherwise. For map visualizations, the slot \code{map} links the multivariate time series to geographical regions of an ESRI shapefile (using functionality from the package \pkg{maptools}~\citep{maptools}). Additionally, the slot \code{populationFrac} contains a $T\times I$ matrix representing population fractions in unit $i$ at time $t$. The package \surveillance\ contains a number of time series in the \code{data} directory. Most data sets originate from the SurvStat@RKI database\footnote{\url{http://www3.rki.de/SurvStat}}, maintained by the Robert Koch Institute (RKI), Germany. Selected data sets will be analyzed in Section~\ref{sec:hhh} and are introduced in the following. Note that many of the built-in datasets are stored in the S3 class data structure \mbox{\code{disProg}}. They can be easily converted into the S4 \sts\ data structure using the function \code{disProg2sts}. The resulting \sts\ object can be accessed similar as standard \code{matrix} objects and allows easy temporal and spatial aggregation as will be shown in the remainder of this section. \\ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \example{Influenza and meningococcal disease in Germany 01/2001--52/2006} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% As a first example, the weekly number of influenza and meningococcal disease cases in Germany is considered. <>= # load data data("influMen") # convert to sts class and print basic information about the time series print(fluMen <- disProg2sts(influMen)) @ The univariate time series of meningococcal disease counts can be obtained with <>= meningo <- fluMen[, "meningococcus"] dim(meningo) @ The \code{plot} function provides an interface to the visual representation of the multivariate time series in time, space and space-time which is controlled by the \code{type} argument: <>= plot(fluMen, type = observed ~ time | unit, # type of plot same.scale = FALSE, # unit-specific ylim ? col = "grey" # color of bars ) @ See \cite{hoehle-mazick-2010} for a detailed description of the plot routines.\\ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \example{Influenza in Southern Germany, 01/2001-52/2008} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The spatio-temporal spread of influenza in the 140 Kreise (districts) of Bavaria and Baden-W\"urttemberg is analyzed using the weekly number of cases reported to the RKI~\citep{survstat-fluByBw} in the years 2001--2008. An \sts\ object containing the data is created as follows: <>= # read in observed number of cases flu.counts <- as.matrix(read.table(system.file("extdata/counts_flu_BYBW.txt", package = "surveillance"))) # remove 'X' in column names colnames(flu.counts) <- substring(colnames(flu.counts),first = 2, last = 5) # read in adjacency matrix with elements 1 if two regions share a common border nhood <- as.matrix(read.table(system.file("extdata/neighbourhood_BYBW.txt", package = "surveillance"))) @ <>= # visualize adjacency matrix library("Matrix") print(image(Matrix(nhood))) @ \begin{center} \vspace*{-2em} \includegraphics[width=0.5\textwidth]{figs/hhh4-nhoodByBw} \end{center} <>= # read in a shapefile of the districts in Bavaria and Baden-Wuerttemberg map <- maptools::readShapePoly( system.file("shapes/districts_BYBW.shp", package = "surveillance"), IDvar = "id" ) # read in population fractions p <- matrix( read.table(system.file("extdata/population_2001-12-31_BYBW.txt", package = "surveillance"), header = TRUE)$popFrac, nrow = nrow(flu.counts), ncol = ncol(flu.counts), byrow = TRUE) # create sts object flu <- new("sts", epoch = 1:nrow(flu.counts), observed = flu.counts, start = c(2001, 1), freq = 52, neighbourhood = nhood, map = map, population = p ) @ This \sts\ object is already included in \surveillance\ and may be loaded with \code{data(fluBYBW)}. A map of the total number of cases in the year 2001 may be obtained as follows: \setkeys{Gin}{width=.5\textwidth} %\vspace*{-2em} \begin{center} <>= par(mar=c(0,0,0,0)) plot(flu[year(flu) == 2001, ], # select year 2001 type = observed ~ 1 | unit, # map of counts aggregated over times t labels = FALSE # suppress region labels in map ) @ \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \example{Measles in Germany, 01/2005--52/2007} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The following data set contains the weekly number of measles cases in the 16 German Bundesl\"ander (federal states), in the years 2005--2007. These data are analyzed in~\cite{herzog-etal-2010} after aggregation into successive bi-weekly periods. \setkeys{Gin}{width=1\textwidth} \begin{center} <>= data("measlesDE") # aggregate into successive bi-weekly periods measles2w <- aggregate(measlesDE, nfreq = 26) plot(measles2w, type = observed ~ time, # plot aggregated over all units i main = "Bi-weekly number of measles cases in Germany") @ \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Model %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Model formulation}\label{sec:model} Retrospective surveillance aims to identify outbreaks and (spatio-)temporal patterns through statistical modelling. Motivated by a branching process with immigration, \cite{held-etal-2005} suggest the following model for the analysis of univariate time series of infectious disease counts $\{y_{t}; t=1,\ldots,T\}$. The counts are assumed to be Poisson distributed with conditional mean \begin{align*} \mu_{t} = \lambda y_{t-1}+ \nu_{t}, \quad(\lambda,\nu_{t}>0) \end{align*} where $\lambda$ and $\nu_t$ are unknown quantities. The mean incidence is decomposed additively into two components: an epidemic or \emph{autoregressive} component $\lambda y_{t-1}$, and an \emph{endemic} component $\nu_t$. The former should be able to capture occasional outbreaks whereas the latter explains a baseline rate of cases with stable temporal pattern. \cite{held-etal-2005} suggest the following parametric model for the endemic component: \begin{align}\label{eq:nu_t} \log(\nu_t) =\alpha + \beta t + \left\{\sum_{s=1}^S \gamma_s \sin(\omega_s t) + \delta_s \cos(\omega_s t)\right\}, \end{align} where $\alpha$ is an intercept, $\beta$ is a trend parameter, and the terms in curly brackets are used to model seasonal variation. Here, $\gamma_s$ and $\delta_s$ are unknown parameters, $S$ denotes the number of harmonics to include, and $\omega_s=2\pi s/$\code{freq} are Fourier frequencies (e.g.\ \code{freq = 52} for weekly data). For ease of interpretation, the seasonal terms in \eqref{eq:nu_t} can be written equivalently as \begin{align*} \gamma_s \sin(\omega_s t) + \delta_s \cos(\omega_s t)= A_s \sin(\omega_s t +\varphi_s) \end{align*} with amplitude $A_s=\sqrt{\gamma_s^2+\delta_s^2}$ describing the magnitude, and phase difference $\tan(\varphi_s)=\delta_s/\gamma_s$ describing the onset of the sine wave. To account for overdispersion, the Poisson model may be replaced by a negative binomial model. Then, the conditional mean $\mu_t$ remains the same but the conditional variance increases to $\mu_t (1+\mu_t \psi)$ with additional unknown overdispersion parameter $\psi>0$. The model is extended to multivariate time series $\{y_{it}\}$ in \cite{held-etal-2005} and \cite{paul-etal-2008} by including an additional \emph{neighbor-driven} component, where past cases in other (neighboring) units also enter as explanatory covariates. The conditional mean $\mu_{it}$ is then given by \begin{align} \label{eq:mu_it} \mu_{it} = \lambda y_{i,t-1} + \phi \sum_{j\neq i} w_{ji} y_{j,t-1} +e_{it} \nu_{t}, \end{align} where the unknown parameter $\phi$ quantifies the influence of other units $j$ on unit $i$, $w_{ji}$ are suitably chosen known weights and $e_{it}$ corresponds to an offset (such as population fractions at time $t$ in region $i$). A simple choice for the weights is $w_{ji}=1$ if units $j$ and $i$ are adjacent and 0 otherwise. See \cite{paul-etal-2008} for a discussion of alternative weights. When analyzing a specific disease observed in, say, multiple regions or several pathogens (such as influenza and meningococcal disease), the assumption of equal incidence levels or disease transmission across units is questionable. To address such heterogeneity, the unknown quantities $\lambda$, $\phi$, and $\nu_t$ in \eqref{eq:mu_it} may also depend on unit $i$. This can be done via \begin{itemize} \item unit-specific fixed parameters, e.g.\ $\log(\lambda_i)=\alpha_i$ \citep{paul-etal-2008}; \item unit-specific random effects, e.g\ $\log(\lambda_i)=\alpha_0 +a_i$, $a_i \stackrel{\text{iid}}{\sim} \n(0,\sigma^2_\lambda)$ \citep{paul-held-2011}; \item linking parameters with known (possibly time-varying) explanatory variables, e.g.\ $\log(\lambda_i)=\alpha_0 +x_i\alpha_1$ with region-specific vaccination coverage $x_i$ \citep{herzog-etal-2010}. \end{itemize} A call to \hhh\ fits a Poisson or negative binomial model with conditional mean \begin{align*} \mu_{it} = \lambda_{it} y_{i,t-1} + \phi_{it} \sum_{j\neq i} w_{ji} y_{j,t-1} +e_{it} \nu_{it} \end{align*} to a multivariate time series of counts. Here, the three unknown quantities are decomposed additively on the log scale \begin{align} \log(\lambda_{it}) &= \alpha_0 + a_i +\bm{u}_{it}^\top \bm{\alpha} \tag{\code{ar}}\\ \log(\phi_{it}) &= \beta_0 + b_i +\bm{x}_{it}^\top \bm{\beta} \tag{\code{ne}}\\ \log(\nu_{it}) &= \gamma_0 + c_i +\bm{z}_{it}^\top \bm{\gamma}\tag{\code{end}} \end{align} where $\alpha_0,\beta_0,\gamma_0$ are intercepts, $\bm{\alpha},\bm{\beta},\bm{\gamma}$ are vectors of unknown parameters corresponding to covariate vectors $\bm{u}_{it},\bm{x}_{it},\bm{z}_{it}$, and $a_i,b_i,c_i$ are random effects. For instance, model~\eqref{eq:nu_t} with $S=1$ seasonal terms may be represented as $\bm{z}_{it}=(t,\sin(2\pi/\code{freq}\;t),\cos(2\pi/\code{freq}\;t))^\top$. The stacked vector of all random effects is assumed to follow a normal distribution with mean $\bm{0}$ and covariance matrix $\bm{\Sigma}$, see \cite{paul-held-2011} for further details. Inference is based on (penalized) likelihood methodology as proposed in \cite{paul-held-2011}. In applications, each component (\code{ar})--(\code{end}) may be omitted in parts or as a whole. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Function call and arguments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Function call and control settings}\label{sec:hhh} The estimation procedure is called with <>= hhh4(sts, control) @ where \code{sts} denotes a (multivariate) surveillance time series and the model is specified in the argument \code{control} in consistency with other algorithms in \surveillance. The \code{control} setting is a list of the following arguments: <>= control = list( ar = list(f = ~ -1), # formula: exp(u'alpha) * y_i,t-1 ne = list(f = ~ -1, # formula: exp(x'beta) * sum_j {w_ji * y_j,t-1} weights = neighbourhood(stsObj)), # matrix of weights w_ji end = list(f = ~ 1, # formula: exp(z'gamma) * e_it offset = 1), # optional offset e_it family = "Poisson", # Poisson or NegBin model subset = 2:nrow(stsObj), # subset of observations to be used optimizer = list(), # control optimization procedure verbose = FALSE, # no progress information is printed start = list(fixed = NULL, # list with initial values for fixed, random = NULL, # random, and sd.corr = NULL), # variance parameters data = list(t=epoch(stsObj)-1), # named list of covariates keep.terms = FALSE # do not keep the model terms ) @ The first three arguments \code{ar}, \code{ne}, and \code{end} specify the model components using \code{formula} objects. As default, the counts $y_{it}$ are assumed to be Poisson distributed. A negative binomial model is obtained with \code{family = "NegBin1"}. By default, both the penalized and marginal log-likelihoods are maximized using the optimization routine implemented in \code{nlminb}. The methods implemented in \code{optim} may also be used, e.g.\ \code{optimizer = list(variance = list(method="Nelder-Mead")} is an attractive alternative for maximization of the marginal log-likelihood with respect to the variance parameters (see \code{?hhh4}). Initial values for the fixed, random, and variance parameters are passed on in the \code{start} argument. If the model contains covariates, these have to be specified in the \code{data} argument. When covariates do not vary across units, they may be passed on as a vector of length $T$. Otherwise, covariate values have to be stored and passed on in a matrix of size $T \times I$. In the following, the functionality of \hhh\ is demonstrated using the data sets introduced in Section~\ref{sec:data} and previously analyzed in \cite{paul-etal-2008}, \cite{paul-held-2011} and \cite{herzog-etal-2010}. Selected results are reproduced. For a thorough discussion we refer to these papers. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsubsection{Univariate modelling} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% As a first example, consider the univariate time series of meningococcal infections in Germany, 01/2001--52/2006 \citep[cf.~Tab.~1 in ][]{paul-etal-2008}. A Poisson model without autoregression and $S=1$ seasonal term is specified as follows: <>= # specify formula object for endemic component ( f_S1 <- addSeason2formula(f = ~ 1, S = 1, period = 52) ) # fit Poisson model summary(hhh4(meningo, control = list(end = list(f = f_S1), family = "Poisson"))) @ A corresponding negative binomial model is obtained via <>= result1 <- hhh4(meningo, control = list(end = list(f = f_S1), family = "NegBin1")) @ As default, the autoregressive component is omitted with \code{$\sim$ -1} in the formula specification. In can be included in the model with <>= m2 <- list(ar = list(f = ~ 1), # log(lambda) = alpha end = list(f = f_S1), family = "NegBin1", # use estimates from previous model as initial values start = list(fixed = c(log(0.1), # initial values for alpha, coef(result1)) # and remaining parameters ) ) # fit model result2 <- hhh4(meningo, control = m2) # extract ML estimates round(coef(result2, se = TRUE, # also return standard errors idx2Exp = 1 # exponentiate 1st param [-> exp(alpha)] ),2) # get AIC AIC(result2) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsubsection{Bivariate modelling} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Now, the weekly numbers of both meningococcal disease (\textsc{MEN}) and influenza (\textsc{FLU}) cases are analyzed to investigate whether influenza infections predispose meningococcal disease \citep[cf.~Tab.~2 in][]{paul-etal-2008}. This requires disease-specific parameters which are specified in the formula object with \code{fe(\ldots)}. In the following, a negative binomial model with mean \begin{align*} \binom{\mu_{\text{men},t}} {\mu_{\text{flu},t}}= \begin{pmatrix} \lambda_\text{men} & \phi \\ 0 & \lambda_\text{flu} \\ \end{pmatrix} \binom{\text{\sc men}_{t-1}}{\text{\sc flu}_{t-1}} + \binom{\nu_{\text{men},t}}{\nu_{\text{flu},t}}\,, \end{align*} where the endemic component includes $S=3$ seasonal terms for the \textsc{FLU} data and $S=1$ seasonal terms for the \textsc{MEN} data is considered. Here, $\phi$ quantifies the influence of past influenza cases on the meningococcal disease incidence. This model corresponds to the second model of Tab.~2 in \cite{paul-etal-2008} and is fitted as follows: <>= # no "transmission" from meningococcus to influenza neighbourhood(fluMen)["meningococcus","influenza"] <- 0 neighbourhood(fluMen) @ <>= # create formula for endemic component f.end <- addSeason2formula(f = ~ -1 + fe(1, which = c(TRUE, TRUE)), # disease-specific intercepts S = c(3, 1), # S = 3 for flu, S = 1 for men period = 52) # specify model m <- list(ar = list(f = ~ -1 + fe(1, which=c(TRUE, TRUE))), ne = list(f = ~ -1 + fe(1, which=c(FALSE, TRUE))), end = list(f = f.end), family = "NegBinM" ) # fit model summary(result <- hhh4(fluMen, control = m)) @ A plot of the estimated mean for the meningococcal disease data, decomposed into the three components, is obtained with \setkeys{Gin}{width=.8\textwidth} \begin{center} <>= plot(result, units = "meningococcus") @ \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsubsection{Multivariate modelling} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% For disease counts observed in a large number of regions, say, (i.e.\ highly multivariate time series of counts) the use of region-specific parameters to account for regional heterogeneity is no longer feasible, as estimation and identifiability problems may occur. \cite{paul-held-2011} propose a random effects formulation to analyze the weekly number of influenza cases in \Sexpr{ncol(flu)} districts of Southern Germany. For example, consider a model with random intercepts in the endemic component: $c_i \sim \n(0,\sigma^2_\nu), i=1,\ldots,I$. Such effects are specified in a formula object as <>= f.end <- ~ -1 + ri(type = "iid", corr = "all") @ Setting \code{type = "car"} would assume that the random effects are spatially correlated instead of uncorrelated. See \cite{paul-held-2011} for further details. The argument \code{corr = "all"} allows for correlation between region-specific random effects in different components, e.g.\ random incidence levels $c_i$ in the endemic component and random effects $b_i$ in the neighbor-driven component. The following call to \hhh\ fits such a random effects model with linear trend and $S=3$ seasonal terms in the endemic component and a fixed autoregressive parameter $\lambda$ to the influenza data \citep[cf. model B2 in Tab.~3 in][]{paul-held-2011}. <>= # weight matrix w_ji = 1/(No. neighbors of j) if j ~ i, and 0 otherwise wji <- neighbourhood(flu)/rowSums(neighbourhood(flu)) f.end <- addSeason2formula(f = ~ -1 + ri(type = "iid", corr="all") +I((t-208)/100) , S = 3, period = 52) model.B2 <- list(ar = list(f = ~ 1), ne = list(f = ~ -1+ ri(type = "iid", corr="all"), weights = wji), end = list(f = f.end, offset = population(flu)), family = "NegBin1", verbose = 1, start=list(fixed=c(-0.9,-1.53,0.56,2.45,2.05,0.33,-0.49,0.21,-0.36,0.21,-0.09), sd.corr=c(-0.02,-0.34,0.68)) ) if(compute){ # this is time-consuming... result.B2 <- hhh4(flu, model.B2) s.B2 <- summary(result.B2) system.time(pred.B2 <- oneStepAhead(result.B2,tp=nrow(flu)-2*52)) meanSc.B2 <- colMeans(scores(pred.B2)) save(s.B2, meanSc.B2, file="hhh4-cache.RData") } @ <>= # weight matrix w_ji = 1/(No. neighbors of j) if j ~ i, and 0 otherwise wji <- neighbourhood(flu)/rowSums(neighbourhood(flu)) # endemic component: iid random effects, linear trend, and S=3 seasonal terms f.end <- addSeason2formula(f = ~ -1 + ri(type = "iid", corr="all") + I((t-208)/100), S = 3, period = 52) model.B2 <- list(ar = list(f = ~ 1), ne = list(f = ~ -1+ ri(type = "iid", corr="all"), weights = wji), end = list(f = f.end, offset = population(flu)), family = "NegBin1" ) # fit model summary(result.B2 <- hhh4(flu, model.B2)) @ <>= s.B2 @ Model choice based on information criteria such as AIC or BIC is well explored and understood for models that correspond to fixed-effects likelihoods. However, in the presence of random effects their use can be problematic. For model selection in time series models, the comparison of successive one-step-ahead forecasts with the actually observed data provides a natural alternative. In this context, \cite{gneiting-raftery-2007} recommend the use of strictly proper scoring rules, such as the logarithmic score or the ranked probability score. See \cite{czado-etal-2009} and \cite{paul-held-2011} for further details. One-step-ahead predictions for the last 2 years for model B2 are obtained as follows: <>= pred.B2 <- oneStepAhead(result.B2, tp = nrow(flu) - 2 * 52) @ The mean logarithmic and mean ranked probability score are then computed with <>= colMeans(scores(pred.B2)[, c("logs", "rps")]) @ <>= meanSc.B2[ c("logs", "rps")] @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Measles data <>= data(MMRcoverageDE) cardVac1 <- MMRcoverageDE[1:16,3:4] adjustVac <- function(cardVac, p=0.5,nrow=1){ card <- cardVac[,1] vac <- cardVac[,2] vacAdj <- vac*card + p*vac*(1-card) return(matrix(vacAdj,nrow=nrow, ncol=length(vacAdj), byrow=TRUE)) } vac0 <- 1-adjustVac(cardVac1,p=0.5,nrow=measles2w@freq*3) colnames(vac0) <- colnames(measles2w) @ As a last example, consider the number of measles cases in the 16 federal states of Germany, in the years 2005--2007. There is considerable regional variation in the incidence pattern which is most likely due to differences in vaccination coverage. In the following, information about vaccination coverage in each state, namely the log proportion of unvaccinated school starters, is included as explanatory variable in a model for the bi-weekly aggregated measles data. See \cite{herzog-etal-2010} for further details. Vaccination coverage levels for the year 2006 are available in the dataset \code{data(MMRcoverageDE)}. This dataset can be used to compute the $\Sexpr{nrow(vac0)}\times \Sexpr{ncol(vac0)}$ matrix \code{vac0} with adjusted proportions of unvaccinated school starters in each state $i$ used by \cite{herzog-etal-2010} <<>>= vac0[1:2, 1:5] @ A Poisson model which links the autoregressive parameter with this covariate and contains $S=1$ seasonal term in the endemic component \citep[cf.~model A0 in Tab.~3 in ][]{herzog-etal-2010} is obtained with <>= # endemic component: Intercept + S = 1 sine/cosine pair f.end <- addSeason2formula(f = ~ 1, S = 1, period = 26) # autoregressive component: Intercept + vaccination coverage information model.A0 <- list(ar = list(f = ~ 1 + logVac0), end = list(f = f.end, offset = population(measles2w)), data = list(t = epoch(measles2w), logVac0 = log(vac0))) # fit model result.A0 <- hhh4(measles2w, model.A0) # parameter estimates round(coef(result.A0, se = TRUE, # also return standard errors amplitudeShift = TRUE # transform sin/cos terms to ), 2) # Amplitude/shift formulation @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Summary %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 \section{Summary} As part of the \R-package \surveillance, the function \hhh\ provides a flexible tool for the modelling of multivariate time series of infectious disease counts. The discussed count data model is able to account for serial and spatio-temporal correlation, as well as heterogeneity in incidence levels and disease transmission. The functionality of \hhh\ was illustrated using several built-in data sets. \bibliography{references} \end{document} surveillance/inst/doc/hhh4.R0000644000175100001440000003110112617067300015462 0ustar hornikusers### R code from vignette source 'hhh4.Rnw' ### Encoding: UTF-8 ################################################### ### code chunk number 1: setup ################################################### library("surveillance") options(width=70) set.seed(247) ##################################################################### # create directory figs if it does not exist ##################################################################### if(!file.exists("figs/")) dir.create("figs/") ###################################################################### #Do we need to compute or can we just fetch results ###################################################################### compute <- !file.exists("hhh4-cache.RData") #load computed results if(!compute) load("hhh4-cache.RData") print(paste("Doing computations: ",compute,sep="")) ################################################### ### code chunk number 2: loadInfluMen ################################################### # load data data("influMen") # convert to sts class and print basic information about the time series print(fluMen <- disProg2sts(influMen)) ################################################### ### code chunk number 3: getMen ################################################### meningo <- fluMen[, "meningococcus"] dim(meningo) ################################################### ### code chunk number 4: plotfluMen ################################################### getOption("SweaveHooks")[["fig"]]() plot(fluMen, type = observed ~ time | unit, # type of plot same.scale = FALSE, # unit-specific ylim ? col = "grey" # color of bars ) ################################################### ### code chunk number 5: readInFlu ################################################### # read in observed number of cases flu.counts <- as.matrix(read.table(system.file("extdata/counts_flu_BYBW.txt", package = "surveillance"))) # remove 'X' in column names colnames(flu.counts) <- substring(colnames(flu.counts),first = 2, last = 5) # read in adjacency matrix with elements 1 if two regions share a common border nhood <- as.matrix(read.table(system.file("extdata/neighbourhood_BYBW.txt", package = "surveillance"))) ################################################### ### code chunk number 6: nhoodByBw ################################################### getOption("SweaveHooks")[["fig"]]() # visualize adjacency matrix library("Matrix") print(image(Matrix(nhood))) ################################################### ### code chunk number 7: fluAsSTS ################################################### # read in a shapefile of the districts in Bavaria and Baden-Wuerttemberg map <- maptools::readShapePoly( system.file("shapes/districts_BYBW.shp", package = "surveillance"), IDvar = "id" ) # read in population fractions p <- matrix( read.table(system.file("extdata/population_2001-12-31_BYBW.txt", package = "surveillance"), header = TRUE)$popFrac, nrow = nrow(flu.counts), ncol = ncol(flu.counts), byrow = TRUE) # create sts object flu <- new("sts", epoch = 1:nrow(flu.counts), observed = flu.counts, start = c(2001, 1), freq = 52, neighbourhood = nhood, map = map, population = p ) ################################################### ### code chunk number 8: plot-flu-ByBw ################################################### getOption("SweaveHooks")[["fig"]]() par(mar=c(0,0,0,0)) plot(flu[year(flu) == 2001, ], # select year 2001 type = observed ~ 1 | unit, # map of counts aggregated over times t labels = FALSE # suppress region labels in map ) ################################################### ### code chunk number 9: plot-measles ################################################### getOption("SweaveHooks")[["fig"]]() data("measlesDE") # aggregate into successive bi-weekly periods measles2w <- aggregate(measlesDE, nfreq = 26) plot(measles2w, type = observed ~ time, # plot aggregated over all units i main = "Bi-weekly number of measles cases in Germany") ################################################### ### code chunk number 10: hhh4 (eval = FALSE) ################################################### ## hhh4(sts, control) ################################################### ### code chunk number 11: controlObj (eval = FALSE) ################################################### ## control = list( ## ar = list(f = ~ -1), # formula: exp(u'alpha) * y_i,t-1 ## ne = list(f = ~ -1, # formula: exp(x'beta) * sum_j {w_ji * y_j,t-1} ## weights = neighbourhood(stsObj)), # matrix of weights w_ji ## end = list(f = ~ 1, # formula: exp(z'gamma) * e_it ## offset = 1), # optional offset e_it ## family = "Poisson", # Poisson or NegBin model ## subset = 2:nrow(stsObj), # subset of observations to be used ## optimizer = list(), # control optimization procedure ## verbose = FALSE, # no progress information is printed ## start = list(fixed = NULL, # list with initial values for fixed, ## random = NULL, # random, and ## sd.corr = NULL), # variance parameters ## data = list(t=epoch(stsObj)-1), # named list of covariates ## keep.terms = FALSE # do not keep the model terms ## ) ################################################### ### code chunk number 12: fitMeningo1 ################################################### # specify formula object for endemic component ( f_S1 <- addSeason2formula(f = ~ 1, S = 1, period = 52) ) # fit Poisson model summary(hhh4(meningo, control = list(end = list(f = f_S1), family = "Poisson"))) ################################################### ### code chunk number 13: fitMeningo2 ################################################### result1 <- hhh4(meningo, control = list(end = list(f = f_S1), family = "NegBin1")) ################################################### ### code chunk number 14: fitMeningo3 ################################################### m2 <- list(ar = list(f = ~ 1), # log(lambda) = alpha end = list(f = f_S1), family = "NegBin1", # use estimates from previous model as initial values start = list(fixed = c(log(0.1), # initial values for alpha, coef(result1)) # and remaining parameters ) ) # fit model result2 <- hhh4(meningo, control = m2) # extract ML estimates round(coef(result2, se = TRUE, # also return standard errors idx2Exp = 1 # exponentiate 1st param [-> exp(alpha)] ),2) # get AIC AIC(result2) ################################################### ### code chunk number 15: neighbourhood_fluMen ################################################### # no "transmission" from meningococcus to influenza neighbourhood(fluMen)["meningococcus","influenza"] <- 0 neighbourhood(fluMen) ################################################### ### code chunk number 16: fitFluMen ################################################### # create formula for endemic component f.end <- addSeason2formula(f = ~ -1 + fe(1, which = c(TRUE, TRUE)), # disease-specific intercepts S = c(3, 1), # S = 3 for flu, S = 1 for men period = 52) # specify model m <- list(ar = list(f = ~ -1 + fe(1, which=c(TRUE, TRUE))), ne = list(f = ~ -1 + fe(1, which=c(FALSE, TRUE))), end = list(f = f.end), family = "NegBinM" ) # fit model summary(result <- hhh4(fluMen, control = m)) ################################################### ### code chunk number 17: plot-fit_men ################################################### getOption("SweaveHooks")[["fig"]]() plot(result, units = "meningococcus") ################################################### ### code chunk number 18: ri (eval = FALSE) ################################################### ## f.end <- ~ -1 + ri(type = "iid", corr = "all") ################################################### ### code chunk number 19: computeFluBYBW ################################################### # weight matrix w_ji = 1/(No. neighbors of j) if j ~ i, and 0 otherwise wji <- neighbourhood(flu)/rowSums(neighbourhood(flu)) f.end <- addSeason2formula(f = ~ -1 + ri(type = "iid", corr="all") +I((t-208)/100) , S = 3, period = 52) model.B2 <- list(ar = list(f = ~ 1), ne = list(f = ~ -1+ ri(type = "iid", corr="all"), weights = wji), end = list(f = f.end, offset = population(flu)), family = "NegBin1", verbose = 1, start=list(fixed=c(-0.9,-1.53,0.56,2.45,2.05,0.33,-0.49,0.21,-0.36,0.21,-0.09), sd.corr=c(-0.02,-0.34,0.68)) ) if(compute){ # this is time-consuming... result.B2 <- hhh4(flu, model.B2) s.B2 <- summary(result.B2) system.time(pred.B2 <- oneStepAhead(result.B2,tp=nrow(flu)-2*52)) meanSc.B2 <- colMeans(scores(pred.B2)) save(s.B2, meanSc.B2, file="hhh4-cache.RData") } ################################################### ### code chunk number 20: fitFluBYBW (eval = FALSE) ################################################### ## # weight matrix w_ji = 1/(No. neighbors of j) if j ~ i, and 0 otherwise ## wji <- neighbourhood(flu)/rowSums(neighbourhood(flu)) ## ## # endemic component: iid random effects, linear trend, and S=3 seasonal terms ## f.end <- addSeason2formula(f = ~ -1 + ri(type = "iid", corr="all") + ## I((t-208)/100), ## S = 3, ## period = 52) ## ## model.B2 <- list(ar = list(f = ~ 1), ## ne = list(f = ~ -1+ ri(type = "iid", corr="all"), ## weights = wji), ## end = list(f = f.end, offset = population(flu)), ## family = "NegBin1" ## ) ## ## # fit model ## summary(result.B2 <- hhh4(flu, model.B2)) ################################################### ### code chunk number 21: hhh4.Rnw:627-628 ################################################### s.B2 ################################################### ### code chunk number 22: oneStepAhead (eval = FALSE) ################################################### ## pred.B2 <- oneStepAhead(result.B2, tp = nrow(flu) - 2 * 52) ################################################### ### code chunk number 23: scores (eval = FALSE) ################################################### ## colMeans(scores(pred.B2)[, c("logs", "rps")]) ################################################### ### code chunk number 24: hhh4.Rnw:649-650 ################################################### meanSc.B2[ c("logs", "rps")] ################################################### ### code chunk number 25: createVacc ################################################### data(MMRcoverageDE) cardVac1 <- MMRcoverageDE[1:16,3:4] adjustVac <- function(cardVac, p=0.5,nrow=1){ card <- cardVac[,1] vac <- cardVac[,2] vacAdj <- vac*card + p*vac*(1-card) return(matrix(vacAdj,nrow=nrow, ncol=length(vacAdj), byrow=TRUE)) } vac0 <- 1-adjustVac(cardVac1,p=0.5,nrow=measles2w@freq*3) colnames(vac0) <- colnames(measles2w) ################################################### ### code chunk number 26: hhh4.Rnw:682-683 ################################################### vac0[1:2, 1:5] ################################################### ### code chunk number 27: fitMeasles ################################################### # endemic component: Intercept + S = 1 sine/cosine pair f.end <- addSeason2formula(f = ~ 1, S = 1, period = 26) # autoregressive component: Intercept + vaccination coverage information model.A0 <- list(ar = list(f = ~ 1 + logVac0), end = list(f = f.end, offset = population(measles2w)), data = list(t = epoch(measles2w), logVac0 = log(vac0))) # fit model result.A0 <- hhh4(measles2w, model.A0) # parameter estimates round(coef(result.A0, se = TRUE, # also return standard errors amplitudeShift = TRUE # transform sin/cos terms to ), 2) # Amplitude/shift formulation surveillance/inst/doc/glrnb.Rnw0000644000175100001440000005470112617067300016313 0ustar hornikusers%\VignetteIndexEntry{Additional documentation of the function algo.glrnb} %\VignetteKeywords{getting started} %\VignettePackage{surveillance} %\VignetteDepends{surveillance} \documentclass[a4paper,11pt]{article} \usepackage{natbib} \bibliographystyle{apalike} % Preabmle parts \usepackage[T1]{fontenc} % Make it possible to use danish characters !! \usepackage{url} \usepackage{hyperref} \usepackage{times} \renewcommand{\sfdefault}{ptm} % Brug times som font - vigtigt i % pdflatex? \usepackage{bm} \usepackage{amsmath} \usepackage{amssymb} \usepackage{latexsym} \usepackage{verbatim} \usepackage{relsize} \usepackage{epsfig} \usepackage{comment} \newcommand{\surveillance}{\texttt{surveillance}} \usepackage{pdfpages} \setlength{\parindent}{0pt} \title{The function 'algo.glrnb' in the R-Package 'surveillance'} \author{ Valentin Wimmer$^{(1,2)}$\thanks{Author of correspondence: Email: \texttt{Valentin.Wimmer@gmx.de}}$\>\>$ and Michael H\"{o}hle$^{(1,2)}$ \\ (1) Department of Statistics\\ University of Munich, Germany\\ (2) MC-Health - Munich Center of Health Sciences } \date{\today} \begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Sweave %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Put all in another directory \SweaveOpts{prefix.string=figs/vignette_glrnb} \setkeys{Gin}{width=1\textwidth} \DefineVerbatimEnvironment{Sinput}{Verbatim}{fontshape=sl,fontsize=\relsize{-1}} \DefineVerbatimEnvironment{Soutput}{Verbatim}{fontshape=s1,fontsize=\relsize{-1}} \DefineVerbatimEnvironment{Scode}{Verbatim}{fontshape=sl,fontsize=\relsize{-1}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Initial R code %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <>= library(surveillance) library(xtable) options(SweaveHooks=list(fig=function() par(mar=c(5,4,4,0),cex.axis=1.5,cex.lab=1.5,cex.main=1.5))) options(width=70) set.seed(247) ##################################################################### # create directory figs if it does not exist ##################################################################### if(!file.exists("figs/")) dir.create("figs/") @ \maketitle %\mbox{}\hrulefill\\ \begin{abstract} \noindent The aim of this document is to show the use of the function \verb+algo.glrnb+ for a type of count data regression chart, the generalized likelihood ratio (GLR) statistic. The function is part of the R-Package '\texttt{surveillance}' \citep{hoehle2007R}, which provides outbreak detection algorithms for surveillance data. For an introduction to this package, the vignette for the package can be used \citep{vignette}. There one can find information about the data structure of the \verb+disProg+ and \verb+SurvRes+ objects. Furthermore tools for outbreak detection, such as a Bayesian approach, procedures described by \citet{stroup89}, \citet{farrington96} and the methods used at the Robert Koch Institut, Germany, are explained. The function \verb+algo.glrnb+ is the implementation of the control charts for poisson and negative binomial distributions for monitoring time series of counts described in \citet{hoehle2008}. This document gives an overview of the different features of the function and illustrations of its use are given for simulated and real surveillance data. \\ \noindent{\bf Keywords:} change-point detection, generalized regression charts, poisson and negative binomial distribution, increase and decrease \end{abstract} \section{Introduction}\label{sec:intro} For the monitoring of infectious diseases it is necessary to monitor time series of routinely collected surveillance data. Methods of the statistic process control (SPC) can be used for this purpose. Here it is important, that the methods can handle the special features of surveillance data, e.g.\ seasonality of the disease or the count data nature of the collected data. It is also important, that not only the number of counts of one time point (week, month) are regarded but instead the cases of previous time points are considered, because beside abrupt changes also small constant changes should be detected. CUSUM-methods (function \verb+algo.cusum+), LR-charts or GLR-methods as described by \citet{lai95} and \citet{hoehle2008} can afford this. With the function \verb+algo.glrnb+ these methods can easily applied to surveillance data. A typical assumption for time series of counts is, that the observed counts at each time point follow a Poisson distribution. If overdispersion is likely, the negative binomial distribution provides a better alternative. Both distributions are provided by \verb+algo.glrnb+. In the GLR-scheme, an outbreak can be defined as a change in the intercept. The function \verb+algo.glrnb+ allows the user to specify whether increases or decreases in mean should be regarded. For each time point a GLR-statistic is computed, if this statistic exceeds a threshold value, an alarm is given. The function also provides the possibility to return the number of cases that would have been necessary to produce an alarm. This vignette is organized as follows: First, in Section \ref{sec:prel} the data structure is explained, in Section \ref{sec:glr} a short introduction in the theory of the GLR-charts is given and Section \ref{sec:control} shows the different \verb+control+-settings. % In Section \ref{sec:extensions} some possible extensions are presented. \section{Preliminaries}\label{sec:prel} Consider the situation, where a time series of counts is collected for surveillance purpose. In each interval, usually one week, the number of cases of the interesting disease in an area (country, district) is counted. The resulting time series is denoted by $\{y_t\>;t=1,\ldots,n\}$. Usually the data are collected on line, so that the time point $n$ is the actual time point. Our aim is to decide with the aid of a statistic for each time point $n$ if there is an outbreak at this or any former time point. If an outbreak is detected, the algorithm gives an alarm. Observed time series of counts are saved in a \verb+disProg+ object, a list containing the time series of counts, the number of weeks and a state chain. The state is 1, if e.g. the Robert Koch Institut declares the week to be part of an outbreak and 0 otherwise ~\citep{survstat}. By using the state chain the quality of the surveillance algorithm can be tested. %The 'surveillance'-package provides standard plot routines for the surveillance objects. As an first example the number of cases of salmonella hadar in the years 2001-2006 is examined. \\ \textit{Example 1:} <>= data(shadar) plot(shadar,main="Number of salmonella hadar cases in Germany 2001-2006") @ The package provides the possibility to simulate surveillance data with the functions \verb+sim.pointSource+, \verb+sim.seasonalNoise+ and \verb+sim.HHH+. See \citep{hoehle2007R} and the vignette for further information. \\ \textit{Example 2:} <>= # Simulate data simData <- sim.pointSource(length=300,K=0.5,r=0.6,p=0.95) @ <>= plot(simData) @ \section{LR and GLR-charts}\label{sec:glr} Our aim is to detect a significant change in the number of cases. This is done as follows. One assumes, that there is a number of cases that is usual, the in control mean $\mu_0$. The in-control mean is defined in \citet{hoehle2008} to be \begin{equation} \label{mu0} \operatorname{log}(\mu_{0,t})=\beta_0 + \beta_1t + \sum_{s=1}^S(\beta_{2s} \cos(\omega s t) + \beta_{2s+1}\sin(\omega s t)). \end{equation} If an outbreak occurs, the number of cases increases and the situation is out-of control and the algorithm should produce an alarm. The change is assumed to be an additive increase on log scale, \begin{equation} \label{interceptchange} \operatorname{log}(\mu_1)= \operatorname{log}(\mu_0) + \kappa . \end{equation} If $\mu_0$ is unknown one could use a part of the data to estimate it with a generalized linear model (GLM). If $\kappa$ is known, LR-charts can be used, if not, $\kappa$ has to be estimated, which is the GLR-scheme setting. For each time point, the likelihood ratio statistic is computed as follows \begin{equation} \label{cusum} GLR(n)=\max_{1 \leq k \leq n} \sup_{\theta \in \Theta} \left[ \sum_{t=k}^n \log \left\{ \frac{f_{\theta}(y_t)}{f_{\theta_0}(y_t)} \right\} \right] . \end{equation} Now $N=\inf \{n \geq 1 : GLR(n) \geq c_{\gamma} \}$ is the first time point where the GLR-statistic is above a threshold $c_{\gamma}$. For this time point $N$ an alarm is given. If the parameter $\kappa$ and hence $\theta=\kappa$ is known, the maximation over $\theta$ can be omitted. With the function \verb+algo.glrnb+ one can compute the the GLR-statistic for every time point. If the actual value extends the chosen threshold $c_{\gamma}$, an alarm is given. After every alarm, the algorithm gets reset and the surveillance starts again. The result of a call of \verb+algo.glrnb+ is an object of class \verb+SurvRes+. This is basically a list of several arguments. The most important one is the \verb+upperbound+ statistic, which is a vector of length $n$ containing the likelihood-ratio-statistic for every time point under surveillance. The \verb+alarm+-vector contains a boolean for every time point whether there was an alarm or not. \\ At this point in the vignette we move more into the applied direction and refer the user to \citet{hoehle2008} for further theoretical details about the GLR procedure. The next example demonstrates the surveillance with the \verb+algo.glrnb+ in a learning by doing type of way. The example should demonstrate primarily the result of the surveillance. More details to the control-options follow in the next section. All control values are set here on default and the first two years are used to find a model for the in-control mean and so surveillance is starting in week 105. A plot of the results can be obtained as follows <>= survObj <- algo.glrnb(shadar,control=list(range=105:295,alpha=0)) plot(survObj,startyear=2003) @ The default value for $c_{\gamma}$ is 5. The upperbound statistic is above this value several times in the third quarter of 2006 (time points marked by small triangles in the plot). In the next section follow a description of the control-setting for tuning the behavior of the algorithm, e.g.\ one can search not only for increases in mean as shown in the example but also for decreases. \section{Control-settings}\label{sec:control} In this section, the purpose and use of the control settings of the \verb+algo.glrnb+ function are shown and illustrated by the examples from Section \ref{sec:prel}. The control-setting is a list of the following arguments. <>= control=list(range=range,c.ARL=5, mu0=NULL, alpha=0, Mtilde=1, M=-1, change="intercept",theta=NULL, dir=c("inc","dec"),ret=c("cases","value")) @ \begin{itemize} \item \verb+range+ \\ The \verb+range+ is a vector of consecutive indices for the week numbers in the \verb+disProg+ object for which surveillance should be done. If a model for the in-control parameter $\mu_0$ is known (\verb+mu0+ is not \verb+NULL+), the surveillance can start at time point one. Otherwise it is necessary to estimate the values for \verb+mu0+ with a GLM. Thus, the range should not start at the first time point but instead use the first weeks/months as control-range. (Note: It is important to use enough data for estimating $\mu_0$, but one should be careful that these data are in control) With the following call one uses the first 2 years (104 weeks) for estimating $\mu_0$ and the the years 2003 to 2006 will be on line monitored. <>= control=list(range=105:length(shadar$observed)) algo.glrnb(disProgObj=shadar,control=control) @ \item \verb+alpha+ \\ This is the (known) dispersion parameter $\alpha$ of the negative binomial distribution. If \verb+alpha+=0, modeling corresponds to the Poisson distribution. In this case, the call of \verb+algo.glrnb+ is similar to a call of \verb+algo.glrpois+. If $\alpha$ is known, the value can be specified in the \verb+control+-settings. <>= control=list(range=105:295,alpha=3) algo.glrnb(disProgObj=shadar,control=control) @ If overdispersion is present in the data, but the dispersion parameter $\alpha$ is unknown, an estimation $\hat{\alpha}$ is calculated as part of the in-control model estimation. Use \verb+alpha=NULL+ to get this estimation. The estimated value $\hat{\alpha}$ is saved in the \verb+survRes+-Object in the \verb+control+-list. Use <>= control=list(range=105:295,alpha=NULL) surv <- algo.glrnb(shadar,control=control) surv$control$alpha @ to get the estimated dispersion parameter for the salmonella data. \item \verb+mu0+ \\ This vector contains the values for $\mu_0$ for each time point in the \verb+range+. If it has the value \verb+NULL+ the observed values with indices 1 to \verb+range+-1 are used to fit a GLM. If there is no knowledge about the in-control parameter, one can use the values before the range to find an seasonal model as in equation \ref{mu0}. \verb+mu0+ is at the moment a list of three argument: \verb+S+ is the number of harmonics to include in the model, \verb+trend+ is Boolean whether a linear trend $\beta_1t$ should be considered. The default is to use the same model of $\mu_0$ for the whole surveillance. An alternative is, to fit a new model after every detected outbreak. If refitting should be done, choose \verb+refit=TRUE+ in the \verb+mu0+ list. In this case, the observed value from time point 1 to the time point of the last alarm are used for estimating a GLM. Then we get a new model after every alarm. In the following example a model with \verb+S+=2 harmonics and no linear trend is fitted for the Salmonella data. The observed cases from the first two years are used for fitting the GLM. <>= control=list(range=105:295,mu0=list(S=2,trend=FALSE)) algo.glrnb(disProgObj=shadar,control=control) @ <>= control=list(range=105:295,mu0=list(S=2,trend=F,refit=T)) surv <- algo.glrnb(disProgObj=shadar,control=control) @ The predicted values for the in-control mean in the range are shown as a dashed line in the following plot. <>= plot(shadar) with(surv$control,lines(mu0~range,lty=2,lwd=4,col=4)) @ The information about the used model is saved in the \verb+survRes+-object, too. <>= surv$control$mu0Model @ The $\mu_0$ model is fitted by a call of the function \verb+estimateGLRNbHook+. Instead of using the standard seasonal negative binomial model from equation \ref{mu0}, one can change the \texttt{R}-code of the function \verb+estimateGLRNbHook+ to get any desired model. The standard code is the following <>= estimateGLRNbHook @ To include own models in the \verb+estimateGLRNbHook+ function, the code of the function has to be changed. In the following code chunk \verb+estimateGLRNbHook+ is modified so that weights are included in the model. \begin{small} \begin{verbatim} estimateGLRPoisHook <- function() { control <- parent.frame()$control p <- parent.frame()$disProgObj$freq range <- parent.frame()$range train <- 1:(range[1]-1) test <- range #Weights of training data - sliding window also possible weights <- exp(-0.3 * ((max(train)-train)) %/% 12) data <- data.frame(y=parent.frame()$disProgObj$observed[train],t=train) formula <- "y ~ 1 " if (control$mu0Model$trend) { formula <- paste(formula," + t",sep="") } for (s in 1:control$mu0Model$S) { formula <- paste(formula,"+cos(2*",s,"*pi/p*t)+ sin(2*",s,"*pi/p*t)",sep="") } m <- eval(substitute(glm(form,family=poisson(),data=data,weights=weights), list(form=as.formula(formula)))) return(list(mod=m,pred=as.numeric(predict(m,newdata=data.frame(t=test), type="response")))) } \end{verbatim} \end{small} Additionally the fitted model from the call of \verb+estimateGLRNbHook+ is saved. The result of a call of \verb+glm.nb+ is in the standard setting an object of class \verb+negbin+ inheriting from class \verb+glm+. So methods as \verb+summary+, \verb+plot+ of \verb+predict+ can be used on this object. If refitting is done, the list of the used models is saved. Use <>= coef(surv$control$mu0Model$fitted[[1]]) @ to get the estimated values of the first (and in case of \verb+refit=FALSE+ only) model for the parameter vector $\beta$ given in (\ref{mu0}). \item \verb+c.ARL+ \\ This is just the threshold $c_{\gamma}$ for the GLR-test (see equation \ref{cusum}). The smaller the value is chosen, the more likely it is to detect an outbreak but on the other hand false alarms can be produced. <>= control=list(range=105:295,alpha=0) surv <- algo.glrnb(disProgObj=shadar,control=control) table(surv$alarm) @ For a choice of $c_{\gamma}$ we get \Sexpr{table(surv$alarm)[2]} alarms. In the following table the results for different choices of the threshold are shown. <>= num <- rep(NA) for (i in 1:6){ num[i] <- table(algo.glrnb(disProgObj=shadar,control=c(control,c.ARL=i))$alarm)[2] } @ \begin{table}[h] \begin{center} \caption{Number of alarms for salmonella hadar data in dependence of c.ARL} \label{c.ARL} \begin{tabular}{l|cccccc} \verb+c.ARL+ & 1 & 2 & 3 & 4 & 5 & 6 \\ \hline no. of alarms & \Sexpr{num[1]} & \Sexpr{num[2]} & \Sexpr{num[3]} & \Sexpr{num[4]} & \Sexpr{num[5]} & \Sexpr{num[6]} \end{tabular} \end{center} \end{table} \item \verb+change+ \\ There are two possibilitys to define an outbreak. The intercept-change is described in Section \ref{sec:glr} and equation \ref{interceptchange}. Use \verb+change="intercept"+ to choose this possibility. The other alternative is the epidemic chart, where an auto-regressive model is used. See \citet{held2005} and \citet{hoehle2008} for more details. A call with \verb+change="epi"+ in the control-settings leads to this alternative. Note that in the epidemic chart not every feature of \verb+algo.glrnb+ is available. \item \verb+theta+ \\ If the change in intercept in the intercept-charts is known in advance, this value can be passed to the function (see Section \ref{sec:glr}). These LR-charts are faster but can lead to inferior results if a wrong value of \verb+theta+ is used compared to the actual out-of-control value (\citet{hoehle2008}). If an increase of 50 percent in cases is common when there is an outbreak which corresponds to a $\kappa$ of $\log(1.5)=0.405$ in equation \ref{interceptchange} use <>= control=list(range=105:295,theta=0.4) algo.glrnb(disProgObj=shadar,control=control) @ If there is no knowledge about this value (which is the usual situation), it is not necessary to specify \verb+theta+. In the GLR-charts, the value for $\kappa$ is calculated by a maximation of the likelihood. Use the call <>= control=list(range=105:295,theta=NULL) algo.glrnb(disProgObj=shadar,control=control) @ in this situation. \item \verb+ret+ \\ The \verb+upperbound+-statistic of a \verb+survRes+-object is usually filled with the LR- or GLR-statistic of equation \ref{cusum}. A small value means, that the in-control-situation is likely, a big value is a hint for an outbreak. If you choose \verb+ret="value"+, the upperbound slot is filled with the GLR-statistic. These values are plotted then, too. The alternative return value is \verb+"cases"+. In this case, the number of cases at time point $n$ that would have been necessary to produce an alarm are computed. The advantage of this option is the easy interpretation. If the actual number of cases is more extreme than the computed one, an alarm is given. With the following call, this is done for the salmonella data. <>= control=list(range=105:295,ret="cases",alpha=0) surv2 <- algo.glrnb(disProgObj=shadar,control=control) @ <>= plot(surv2,startyear=2003) @ Of course, the alarm time points are the same as with \verb+ret="cases"+. \item \verb+dir+ \\ In the surveillance of infectious diseases it is regular to detect an increase in the number of infected persons. This is also the standard setting for \verb+algo.glrnb+. But in other applications it could be of interest to detect a decrease of counts. For this purpose, the \verb+dir+-option is available. If \verb+dir+ is set to \verb+"inc"+, only increases in regard to the in-control mean are taken into account in the likelihood-ratio-statistic. With \verb+dir="dec"+, only decreases are considered. As an example we take the salmonella data again, but know we look at the number of cases that would have been necessary if a decrease should be detected. <>= control=list(range=105:295,ret="cases",dir="dec",alpha=0) surv3 <- algo.glrnb(disProgObj=shadar,control=control) @ <>= plot(surv3,startyear=2003) @ The observed number of cases is below the computed threshold several times in 2005 to 2006 and alarms are given. \item \verb+Mtilde+ and \verb+M+ \\ These parameters are necessary for the so called ''window-limited'' GLR scheme. Here the maximation is not performed for all $1 \leq k \leq n$ but instead only for a window $k \in \{n-M,...,n-\tilde{M}+1 \}$ of values. Note that $1 \leq \tilde{M} \leq M$, where the minimum delay $\tilde{M}$ is the minimal required sample size to obtain a sufficient estimate of $\theta_1=(\mu_0,\kappa)$ ~\citep{hoehle2008}. The advantage of using a window of values instead of all values is the faster computation, but in the setup with intercept-charts and $\theta_1=\kappa$ this doesn't bother much and $\tilde{M}=1$ is sufficient. \end{itemize} \section{Discussion} As seen, the function \verb+algo.glrnb+ allows many possibilities for doing surveillance for a time series of counts. In order to achieve fast computations, the function is implemented in C. An important issue in surveillance is the quality of the used algorithms. This can be measured by the sensitivity and the specificity of the result. The aim of our future work is to provide the possibility for computing the quality and in the next step to include a ROC-approach in order to have a more formal framework for the choice of threshold $c_{\gamma}$. %\include{extensions} %\renewcommand{\bibsection}{\section{REFERENCES}} \bibliography{references} \end{document} surveillance/inst/doc/glrnb.R0000644000175100001440000001354312617067300015745 0ustar hornikusers### R code from vignette source 'glrnb.Rnw' ### Encoding: UTF-8 ################################################### ### code chunk number 1: glrnb.Rnw:58-69 ################################################### library(surveillance) library(xtable) options(SweaveHooks=list(fig=function() par(mar=c(5,4,4,0),cex.axis=1.5,cex.lab=1.5,cex.main=1.5))) options(width=70) set.seed(247) ##################################################################### # create directory figs if it does not exist ##################################################################### if(!file.exists("figs/")) dir.create("figs/") ################################################### ### code chunk number 2: glrnb.Rnw:106-108 ################################################### getOption("SweaveHooks")[["fig"]]() data(shadar) plot(shadar,main="Number of salmonella hadar cases in Germany 2001-2006") ################################################### ### code chunk number 3: glrnb.Rnw:115-117 ################################################### # Simulate data simData <- sim.pointSource(length=300,K=0.5,r=0.6,p=0.95) ################################################### ### code chunk number 4: glrnb.Rnw:120-121 ################################################### getOption("SweaveHooks")[["fig"]]() plot(simData) ################################################### ### code chunk number 5: glrnb.Rnw:154-156 ################################################### getOption("SweaveHooks")[["fig"]]() survObj <- algo.glrnb(shadar,control=list(range=105:295,alpha=0)) plot(survObj,startyear=2003) ################################################### ### code chunk number 6: glrnb.Rnw:175-178 (eval = FALSE) ################################################### ## control=list(range=range,c.ARL=5, ## mu0=NULL, alpha=0, Mtilde=1, M=-1, change="intercept",theta=NULL, ## dir=c("inc","dec"),ret=c("cases","value")) ################################################### ### code chunk number 7: glrnb.Rnw:187-189 (eval = FALSE) ################################################### ## control=list(range=105:length(shadar$observed)) ## algo.glrnb(disProgObj=shadar,control=control) ################################################### ### code chunk number 8: glrnb.Rnw:195-197 (eval = FALSE) ################################################### ## control=list(range=105:295,alpha=3) ## algo.glrnb(disProgObj=shadar,control=control) ################################################### ### code chunk number 9: glrnb.Rnw:205-208 ################################################### control=list(range=105:295,alpha=NULL) surv <- algo.glrnb(shadar,control=control) surv$control$alpha ################################################### ### code chunk number 10: glrnb.Rnw:219-221 (eval = FALSE) ################################################### ## control=list(range=105:295,mu0=list(S=2,trend=FALSE)) ## algo.glrnb(disProgObj=shadar,control=control) ################################################### ### code chunk number 11: glrnb.Rnw:224-226 ################################################### control=list(range=105:295,mu0=list(S=2,trend=F,refit=T)) surv <- algo.glrnb(disProgObj=shadar,control=control) ################################################### ### code chunk number 12: glrnb.Rnw:231-233 ################################################### getOption("SweaveHooks")[["fig"]]() plot(shadar) with(surv$control,lines(mu0~range,lty=2,lwd=4,col=4)) ################################################### ### code chunk number 13: glrnb.Rnw:239-240 (eval = FALSE) ################################################### ## surv$control$mu0Model ################################################### ### code chunk number 14: glrnb.Rnw:245-246 ################################################### estimateGLRNbHook ################################################### ### code chunk number 15: glrnb.Rnw:285-286 ################################################### coef(surv$control$mu0Model$fitted[[1]]) ################################################### ### code chunk number 16: glrnb.Rnw:294-297 ################################################### control=list(range=105:295,alpha=0) surv <- algo.glrnb(disProgObj=shadar,control=control) table(surv$alarm) ################################################### ### code chunk number 17: glrnb.Rnw:302-306 ################################################### num <- rep(NA) for (i in 1:6){ num[i] <- table(algo.glrnb(disProgObj=shadar,control=c(control,c.ARL=i))$alarm)[2] } ################################################### ### code chunk number 18: glrnb.Rnw:331-333 (eval = FALSE) ################################################### ## control=list(range=105:295,theta=0.4) ## algo.glrnb(disProgObj=shadar,control=control) ################################################### ### code chunk number 19: glrnb.Rnw:338-340 (eval = FALSE) ################################################### ## control=list(range=105:295,theta=NULL) ## algo.glrnb(disProgObj=shadar,control=control) ################################################### ### code chunk number 20: glrnb.Rnw:348-350 ################################################### control=list(range=105:295,ret="cases",alpha=0) surv2 <- algo.glrnb(disProgObj=shadar,control=control) ################################################### ### code chunk number 21: glrnb.Rnw:353-354 ################################################### getOption("SweaveHooks")[["fig"]]() plot(surv2,startyear=2003) ################################################### ### code chunk number 22: glrnb.Rnw:364-366 ################################################### control=list(range=105:295,ret="cases",dir="dec",alpha=0) surv3 <- algo.glrnb(disProgObj=shadar,control=control) ################################################### ### code chunk number 23: glrnb.Rnw:369-370 ################################################### getOption("SweaveHooks")[["fig"]]() plot(surv3,startyear=2003) surveillance/inst/doc/surveillance.Rnw0000644000175100001440000007306612617067300017710 0ustar hornikusers%\VignetteIndexEntry{Getting started with the package} %\VignetteKeywords{getting started} %\VignettePackage{surveillance} %\VignetteDepends{surveillance} \documentclass[a4paper,11pt]{article} \usepackage{natbib} \bibliographystyle{apalike} % Preabmle parts \usepackage[T1]{fontenc} % Make it possible to use danish characters !! \usepackage{url} \usepackage{hyperref} \usepackage{times} \renewcommand{\sfdefault}{ptm} % Brug times som font - vigtigt i % pdflatex? %PSTricks \usepackage{pdftricks} \begin{psinputs} \usepackage{pst-all} \end{psinputs} \usepackage{bm} \usepackage{amsmath} \usepackage{amssymb} \usepackage{latexsym} \usepackage{verbatim} \usepackage{epsfig} \usepackage{comment} \newcommand{\surveillance}{\texttt{surveillance}} \usepackage{pdfpages} \title{The R-Package 'surveillance'} \author{ Michael H{\"o}hle\thanks{Author of correspondance: Department of Statistics, University of Munich, Ludwigstr.\ 33, 80539 M{\"u}nchen, Germany, Email: \texttt{hoehle@stat.uni-muenchen.de}}$\>\>$, Andrea Riebler and Michaela Paul\\ Department of Statistics\\ University of Munich\\ Germany } \date{\today} \begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Sweave %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Put all in another directory \SweaveOpts{prefix.string=figs/vignette} \setkeys{Gin}{width=1\textwidth} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Initial R code %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <>= library("surveillance") options(SweaveHooks=list(fig=function() par(mar=c(5,4,4,0),cex.axis=1.5,cex.lab=1.5,cex.main=1.5))) options(width=70) set.seed(1234) ##################################################################### # create directory figs if it does not exist ##################################################################### if(!file.exists("figs/")) dir.create("figs/") ###################################################################### #Do we need to compute or can we just fetch results ###################################################################### CACHEFILE <- "surveillance-cache.RData" compute <- !file.exists(CACHEFILE) #load computed results if(!compute) load(CACHEFILE) print(paste("Doing computations:", compute)) @ \maketitle %\mbox{}\hrulefill\\ \begin{abstract} \noindent This document gives an introduction to the R-Package 'surveillance' containing tools for outbreak detection in routinely collected surveillance data. The package contains an implementation of the procedures described by~\citet{stroup89}, \citet{farrington96} and the system used at the Robert Koch Institute, Germany. For evaluation purposes, the package contains example data sets and functionality to generate surveillance data by simulation. To compare the algorithms, benchmark numbers like sensitivity, specificity, and detection delay can be computed for a set of time series. Being an open-source package it should be easy to integrate new algorithms; as an example of this process, a simple Bayesian surveillance algorithm is described, implemented and evaluated.\\ \noindent{\bf Keywords:} infectious disease, monitoring, aberrations, outbreak, time series of counts. \end{abstract} {\large Disclaimer}: This vignette reflects package state at version 1.2 and is hence somewhat outdated. New functionality has been added to the package: this includes the \texttt{hhh4}, \texttt{twinSIR} and \texttt{twinstim} modelling and the \texttt{glrnb} outbreak detection. A description of the \texttt{hhh4} modelling can be found in its own vignette \verb+vignette("hhh4")+, \texttt{glrnb} is described in \verb+vignette("glrnb")+. Furthermore, use of the new S4 class \texttt{sts} instead of \texttt{disProg} is encouraged to encapsulate the data. \section{Introduction}\label{sec:intro} Public health authorities have in an attempt to meet the threats of infectious diseases to society created comprehensive mechanisms for the collection of disease data. As a consequence, the abundance of data has demanded the development of automated algorithms for the detection of abnormalities. Typically, such an algorithm monitors a univariate time series of counts using a combination of heuristic methods and statistical modelling. Prominent examples of surveillance algorithms are the work by~\citet{stroup89} and~\citet{farrington96}. A comprehensive survey of outbreak detection methods can be found in~\citep{farrington2003}. The R-package \texttt{surveillance} was written with the aim of providing a test-bench for surveillance algorithms. From the Comprehensive R Archive Network (CRAN) the package can be downloaded together with its source code. It allows users to test new algorithms and compare their results with those of standard surveillance methods. A few real world outbreak datasets are included together with mechanisms for simulating surveillance data. With the package at hand, comparisons like the one described by~\citet{hutwagner2005} should be easy to conduct. The purpose of this document is to illustrate the basic functionality of the package with R-code examples. Section~\ref{sec:data} contains a description of the data format used to store surveillance data, mentions the built-in datasets and illustrates how to create new datasets by simulation. Section~\ref{sec:algo} contains a short description of how to use the surveillance algorithms and illustrate the results. Further information on the individual functions can be found in the on-line documentation of the package, which is also provided in printed form as an Appendix of this document. \section{Surveillance Data}\label{sec:data} Denote by $\{y_t\>;t=1,\ldots,n\}$ the time series of counts representing the surveillance data. Because such data typically are collected on a weekly basis, we shall also use the alternative notation $\{y_{i:j}\}$ with $j=\{1,\ldots,52\}$ being the week number in year $i=\{-b,\ldots,-1,0\}$. That way the years are indexed such that most current year has index zero. For evaluation of the outbreak detection algorithms it is also possible for each week to store -- if known -- whether there was an outbreak that week. The resulting multivariate series $\{(y_t,x_t)\>; t=1,\ldots,n\}$ is in \texttt{surveillance} given by an object of class \texttt{disProg} (disease progress), which is basically a \texttt{list} containing two vectors: the observed number of counts and a boolean vector \texttt{state} indicating whether there was an outbreak that week. A number of time series are contained in the \texttt{data} directory, mainly originating from the SurvStat@RKI database at \href{http://www3.rki.de/SurvStat/}{http://www3.rki.de/SurvStat/} maintained by the Robert Koch Institute, Germany~\citep{survstat}. For example the object \texttt{k1} describes Kryptosporidosis surveillance data for the German federal state Baden-W\"{u}rttemberg 2001-2005. The peak in 2001 is due to an outbreak of Kryptosporidosis among a group of army-soldiers in boot-camp~\citep{bulletin3901}. In \surveillance\ the \texttt{readData} function is used to bring the time series on \texttt{disProg} form. The SurvStat@RKI database at \href{http://www3.rki.de/SurvStat/}{http://www3.rki.de/SurvStat/} maintained by the Robert Koch Institute, Germany, uses a 53 weeks a year format; therefore a conversion with \texttt{correct53to52} is necessary. <>= data(k1) plot(k1,main="Kryptosporidiosis in BW 2001-2005") @ For evaluation purposes it is also of interest to generate surveillance data using simulation. The package contains functionality to generate surveillance data containing point-source like outbreaks, for example with a Salmonella serovar. The model is a Hidden Markov Model (HMM) where a binary state $X_t, t=1,\ldots,n$, denotes whether there was an outbreak and $Y_t$ is the number of observed counts, see Fig.~\ref{fig:hmm}. \begin{figure}[htbp] \centering \begin{pdfpic} \input pst-eps \TeXtoEPS \SpecialCoor \begin{pspicture}(0,0)(10,3) %lower y -2.5 would be better %\psgrid \psset{arrowsize=7pt,arrowinset=0} \rput(1,2.5){\ovalnode{X1}{$X_1$}} \rput(3,2.5){\ovalnode{X2}{$X_2$}} \rput(5,2.5){\ovalnode{X3}{$X_3$}} \rput(6.5,2.5){\ovalnode[linestyle=none]{Xinv1}{}} \rput(7,2.5){$\ldots$} \rput(7.5,2.5){\ovalnode[linestyle=none]{Xinv2}{}} \rput(9,2.5){\ovalnode{Xn}{$X_n$}} \rput(1,0.5){\ovalnode{Y1}{$Y_1$}} \rput(3,0.5){\ovalnode{Y2}{$Y_2$}} \rput(5,0.5){\ovalnode{Y3}{$Y_3$}} \rput(9,0.5){\ovalnode{Yn}{$Y_n$}} \ncline{->}{X1}{X2} \ncline{->}{X2}{X3} \ncline{->}{X3}{Xinv1} \ncline{->}{Xinv2}{Xn} \ncline{->}{X1}{Y1} \ncline{->}{X2}{Y2} \ncline{->}{X3}{Y3} \ncline{->}{Xn}{Yn} \end{pspicture} \endTeXtoEPS \end{pdfpic} \caption{The Hidden Markov Model} \label{fig:hmm} \end{figure} The state $X_t$ is a homogenous Markov chain with the following transition matrix \begin{center} \begin{tabular}{c|cc} $X_t\backslash X_{t+1}$ & 0 & 1\\ \hline $0$ & $p$ & $1 - p$ \\ $1$ & $1 - r$ & $r$ \end{tabular} \end{center} Hence $1-p$ is the probability to switch to an outbreak state and $1-r$ is the probability that $X_t=1$ is followed by $X_{t+1}=1$. Furthermore, the observation $Y_t$ is Poisson-distributed with log-link mean depending on a seasonal effect and time trend, i.e.\ \[ \log \mu_t = A \cdot \sin \, (\omega \cdot (t + \varphi)) + \alpha + \beta t. \] In case of an outbreak $(X_t=1)$ the mean increases with a value of $K$, altogether \begin{equation}\label{eq:hmm} Y_t \sim \operatorname{Po}(\mu_t + K \cdot X_t). \end{equation} The model in (\ref{eq:hmm}) corresponds to a single-source, common-vehicle outbreak, where the length of an outbreak is controlled by the transition probability $r$. The daily numbers of outbreak-cases are simply independently Poisson distributed with mean $K$. A physiologically better motivated alternative could be to operate with a stochastic incubation time (e.g.\ log-normal or gamma distributed) for each individual exposed to the source, which results in a temporal diffusion of the peak. The advantage of (\ref{eq:hmm}) is that estimation can be done by a generalized linear model (GLM) using $X_t$ as covariate and that it allows for an easy definition of a correctly identified outbreak: each $X_t=1$ has to be identified. More advanced setups would require more involved definitions of an outbreak, e.g.\ as a connected series of time instances, where the number of outbreak cases is greater than zero. Care is then required in defining what a correctly identified outbreak for time-wise overlapping outbreaks means. In \surveillance\ the function \verb+sim.pointSource+ is used to simulate such a point-source epidemic; the result is an object of class \verb+disProg+. \label{ex:sts} <>= sts <- sim.pointSource(p = 0.99, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) plot(sts) @ \section{Surveillance Algorithms}\label{sec:algo} Surveillance data often exhibit strong seasonality, therefore most surveillance algorithms only use a set of so called \emph{reference values} as basis for drawing conclusions. Let $y_{0:t}$ be the number of cases of the current week (denoted week $t$ in year $0$), $b$ the number of years to go back in time and $w$ the number of weeks around $t$ to include from those previous years. For the year zero we use $w_0$ as the number of previous weeks to include -- typically $w_0=w$. Altogether the set of reference values is thus defined to be \[ R(w,w_0,b) = \left(\bigcup\limits_{i=1}^b\bigcup\limits_{j=\,-w}^w y_{-i:t+j}\right) \cup \left(\bigcup_{k=-w_0}^{-1} y_{0:t+k}\right) \] Note that the number of cases of the current week is not part of $R(w,w_0,b)$. A surveillance algorithm is a procedure using the reference values to create a prediction $\hat{y}_{0:t}$ for the current week. This prediction is then compared with the observed $y_{0:t}$: if the observed number of cases is much higher than the predicted number, the current week is flagged for further investigations. In order to do surveillance for time $0:t$ an important concern is the choice of $b$ and $w$. Values as far back as time $-b:t-w$ contribute to $R(w,w_0,b)$ and thus have to exist in the observed time series. Currently, we have implemented four different type of algorithms in \surveillance. The Centers for Disease Control and Prevention (CDC) method~\citep{stroup89}, the Communicable Disease Surveillance Centre (CDSC) method~\citep{farrington96}, the method used at the Robert Koch Institute (RKI), Germany~\citep{altmann2003}, and a Bayesian approach documented in~\citet{riebler2004}. A detailed description of each method is beyond the scope of this note, but to give an idea of the framework the Bayesian approach developed in~\citet{riebler2004} is presented: Within a Bayesian framework, quantiles of the predictive posterior distribution are used as a measure for defining alarm thresholds. The model assumes that the reference values are identically and independently Poisson distributed with parameter $\lambda$ and a Gamma-distribution is used as Prior distribution for $\lambda$. The reference values are defined to be $R_{\text{Bayes}}= R(w,w_0,b) = \{y_1, \ldots, y_{n}\}$ and $y_{0:t}$ is the value we are trying to predict. Thus, $\lambda \sim \text{Ga}(\alpha, \beta)$ and $y_i|\lambda \sim \text{Po}(\lambda)$, $i = 1,\ldots,{n}$. Standard derivations show that the posterior distribution is \begin{equation*} \lambda|y_1, \ldots, y_{n} \sim \text{Ga}(\alpha + \sum_{i=1}^{n} y_i, \beta + n). \end{equation*} Computing the predictive distribution \begin{equation*} f(y_{0:t}|y_1,\ldots,y_{n}) = \int\limits^\infty_0{f(y_{0:t}|\lambda)\, f(\lambda|y_1,\ldots,y_{n})}\, d\lambda \end{equation*} we get the Poisson-Gamma-distribution \begin{equation*} y_{0:t}|y_1,\ldots,y_{n} \sim \text{PoGa}(\alpha + \sum_{i=1}^{n} y_i, \beta + n), \end{equation*} which is a generalization of the negative Binomial distribution, i.e.\ \[ y_{0:t}|y_1,\ldots,y_{n} \sim \text{NegBin}(\alpha + \sum_{i=1}^{n} y_i, \tfrac{\beta + n}{\beta + n + 1}). \] Using the Jeffrey's Prior $\text{Ga}(\tfrac{1}{2}, 0)$ as non-informative Prior distribution for $\lambda$ the parameters of the negative Binomial distribution are \begin{align*} \alpha + \sum_{i=1}^{n} y_i &= \frac{1}{2} + \sum_{y_{i:j} \in R_{\text{Bayes}}}\!\! y_{i:j} \quad % \intertext{and} \quad\text{and}\quad \frac{\beta + n}{\beta + n + 1} = \frac{|R_{\text{Bayes}}|}{|R_{\text{Bayes}}| + 1}. \end{align*} Using a quantile-parameter $\alpha$, the smallest value $y_\alpha$ is computed, so that \begin{equation*} P(y \leq y_\alpha) \geq 1-\alpha. \end{equation*} Now \begin{equation*} A_{0:t} = I(y_{0:t} \geq y_\alpha), \end{equation*} i.e. if $y_{0:t}\geq y_\alpha$ the current week is flagged as an alarm. As an example, the \verb+Bayes1+ method uses the last six weeks as reference values, i.e.\ $R(w,w_0,b)=(6,6,0)$, and is applied to the \texttt{k1} dataset with $\alpha=0.01$ as follows. <>= k1.b660 <- algo.bayes(k1, control = list(range = 27:192,b=0,w=6,alpha=0.01)) plot(k1.b660, disease="k1", firstweek = 1, startyear = 2001) @ Several extensions of this simple Bayesian approach are imaginable, for example the inane over-dispersion of the data could be modeled by using a negative-binomial distribution, time trends and mechanisms to correct for past outbreaks could be integrated, but all at the cost of non-standard inference for the predictive distribution. Here simulation based methods like Markov Chain Monte Carlo or heuristic approximations have to be used to obtain the required alarm thresholds. In general, the \verb+surveillance+ package makes it easy to add additional algorithms -- also those not based on reference values -- by using the existing implementations as starting point. The following call uses the CDC and Farrington procedure on the simulated time series \verb+sts+ from page~\pageref{ex:sts}. Note that the CDC procedure operates with four-week aggregated data -- to better compare the upper bound value, the aggregated number of counts for each week are shown as circles in the plot. <>= cntrl <- list(range=300:400,m=1,w=3,b=5,alpha=0.01) sts.cdc <- algo.cdc(sts, control = cntrl) sts.farrington <- algo.farrington(sts, control = cntrl) @ <>= if (compute) { <> } @ <>= par(mfcol=c(1,2)) plot(sts.cdc, legend.opts=NULL) plot(sts.farrington, legend.opts=NULL) @ Typically, one is interested in evaluating the performance of the various surveillance algorithms. An easy way is to look at the sensitivity and specificity of the procedure -- a correct identification of an outbreak is defined as follows: if the algorithm raises an alarm for time $t$, i.e.\ $A_t=1$ and $X_t=1$ we have a correct classification, if $A_t=1$ and $X_t=0$ we have a false-positive, etc. In case of more involved outbreak models, where an outbreak lasts for more than one week, a correct identification could be if at least one of the outbreak weeks is correctly identified, see e.g.\ \citet{hutwagner2005}. To compute various performance scores the function \verb+algo.quality+ can be used on a \verb+SurvRes+ object. <<>>= print(algo.quality(k1.b660)) @ This computes the number of false positives, true negatives, false negatives, the sensitivity and the specificity. Furthermore, \texttt{dist} is defined as \[ \sqrt{(Spec-1)^2 + (Sens - 1)^2}, \] that is the distance to the optimal point $(1,1)$, which serves as a heuristic way of combining sensitivity and specificity into a single score. Of course, weighted versions are also imaginable. Finally, \texttt{lag} is the average number of weeks between the first of a consecutive number of $X_t=1$'s (i.e.\ an outbreak) and the first alarm raised by the algorithm. To compare the results of several algorithms on a single time series we declare a list of control objects -- each containing the name and settings of the algorithm we want to apply to the data. <>= control = list( list(funcName = "rki1"), list(funcName = "rki2"), list(funcName = "rki3"), list(funcName = "bayes1"), list(funcName = "bayes2"), list(funcName = "bayes3"), list(funcName = "cdc",alpha=0.05), list(funcName = "farrington",alpha=0.05)) control <- lapply(control,function(ctrl) { ctrl$range <- 300:400;return(ctrl)}) @ % In the above, \texttt{rki1}, \texttt{rki2} and \texttt{rki3} are three methods with reference values $R_\text{rki1}(6,6,0)$, $R_\text{rki2}(6,6,1)$ and $R_\text{rki3}(4,0,2)$ all called with $\alpha=0.05$. The methods \texttt{bayes1}-\texttt{bayes3} is the Bayesian algorithm using the same setup of reference values. The CDC Method is special, since it operates on aggregated four-week blocks. To make everything comparable a common $\alpha=0.05$ level is used for all algorithms. All algorithms in \texttt{control} are applied to \texttt{sts} using: <>= algo.compare(algo.call(sts,control=control)) @ <>= if (compute) { acall <- algo.call(sts,control=control) } algo.compare(acall) @ %res <- algo.compare(algo.call(sts,control=control)) %xtable(res,digits=c(0,0,0,0,0,2,2,2,2)) A test on a set of time series can be done as follows. Firstly, a list containing 10 simulated time series is created. Secondly, all the algorithms specified in the \texttt{control} object are applied to each series. Finally the results for the 10 series are combined in one result matrix. <>= #Create 10 series ten <- lapply(1:10,function(x) { sim.pointSource(p = 0.975, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7)}) @ <>= #Do surveillance on all 10, get results as list ten.surv <- lapply(ten,function(ts) { algo.compare(algo.call(ts,control=control)) }) @ <>= if (compute) { <> } @ <>= #Average results algo.summary(ten.surv) @ <>= res <- algo.summary(ten.surv) res[,5:8] <- round(res[,5:8]*100)/100 res @ %xtable(algo.summary(ten.surv),digits=c(0,0,0,0,0,2,2,2,2)) A similar procedure can be applied when evaluating the 14 surveillance series drawn from SurvStat@RKI~\citep{survstat}. A problem is however, that the series after conversion to 52 weeks/year are of length 209 weeks. This is insufficient to apply e.g.\ the CDC algorithm. To conduct the comparison on as large a dataset as possible the following trick is used: The function \texttt{enlargeData} replicates the requested \texttt{range} and inserts it before the original data, after which the evaluation can be done on all 209 values. <>= #Update range in each - cyclic continuation range = (2*4*52) + 1:length(k1$observed) control <- lapply(control,function(cntrl) { cntrl$range=range;return(cntrl)}) #Outbreaks outbrks <- c("m1", "m2", "m3", "m4", "m5", "q1_nrwh", "q2", "s1", "s2", "s3", "k1", "n1", "n2", "h1_nrwrp") #Load and enlarge data. outbrks <- lapply(outbrks,function(name) { #Load with data eval(substitute(data(name),list(name=name))) enlargeData(get(name),range=1:(4*52),times=2) }) #Apply function to one one.survstat.surv <- function(outbrk) { algo.compare(algo.call(outbrk,control=control)) } @ <>= algo.summary(lapply(outbrks,one.survstat.surv)) @ <>= if (compute) { res.survstat <- algo.summary(lapply(outbrks,one.survstat.surv)) } print(res.survstat,digits=3) @ In both this study and the earlier simulation study the Bayesian approach seems to do quite well. However, the extent of the comparisons do not make allowance for any more supported statements. Consult the work of~\citet{riebler2004} for a more thorough comparision using simulation studies. \section{Multivariate surveillance} As of version 0.9-2 \surveillance\ supports the visualization of multivariate time series of counts. An (multivariate) object of class \texttt{disProg} contains matrices with the observed number of counts and the respective state chains, where each column represents an individual time series. Additional elements of the \texttt{disProg}-object are a neighbourhood matrix and a matrix with population counts. However, only modelling of the time series as by~\citet{held2005} is currently available. In the near future the surveillance algorithms will also be extended to handle these multivariate data. For example, consider the weekly counts of new measles cases for each ``Kreis'' (area) of the administrative district ``Weser-Ems'' in Lower Saxony, Germany, in 2001 and 2002~\citep{survstat}. Figure~\ref{fig:map} shows a map of the $m=15$ areas. The corresponding $m \times m$ neighbourhood matrix has elements 1 if two areas share a common border and is 0 otherwise. \begin{figure}[htb] \centering \setkeys{Gin}{width=0.5\textwidth} <>= data("measlesWeserEms") par(mar=c(0,0,0,0)) plot(measlesWeserEms@map[-c(1,5),], col=grey.colors(15,start=0.4,end=1)) text(coordinates(measlesWeserEms@map[-c(1,5),]), labels=row.names(measlesWeserEms@map)[-c(1,5)], font=2) @ \caption{Map of the administrative district ``Weser-Ems''} \label{fig:map} \end{figure} In the package \texttt{surveillance} the measles data are already available in the form of a \texttt{disProg}-object. <>= data(measles.weser) plot(measles.weser, title="measles in Weser-Ems 2001-2002", xaxis.years=TRUE, startyear= 2001, firstweek=1) @ The number of counts for each area can also be looked at and plotted as individual time series. Here, the x-axis is the week number since 1st of January 2001 and the y-axis is the number of measles cases. <>= plot(measles.weser,as.one=FALSE,xaxis.years=FALSE) @ \vspace{1em} The data are analysed using the model proposed by \citet{held2005}. A call to the function \texttt{algo.hhh} fits a Poisson or negative binomial model with mean \[ \mu_{it} = \lambda y_{i,t-1} + \phi \sum_{j \sim i} y_{j,t-1} + n_{it} \nu_{it}\, , \quad i=1,\ldots,m, \, t=1,\ldots,n \, , \] where $j \sim i$ denotes all neighbours of $i$, to a multivariate time series of counts. It is estimated by maximum likelihood using numerical optimization methods. The $n_{it}$ are standardized population counts and $\log \nu_{it} = \alpha_i + \beta t + \sum_{s=1}^{S}\big(\gamma_s sin(\omega_s t) + \delta_s cos(\omega_s t)\big)$ with Fourier frequencies $\omega_s$. <>= ##################################################### # measles if(compute){ # algo.hhh cntrl <- list(linear=TRUE, nseason=1, neighbours=FALSE, negbin="single", lambda=TRUE) measles.hhh.neF <- algo.hhh(measles.weser,control=cntrl) cntrl$neighbours <- TRUE measles.hhh <-algo.hhh(measles.weser,cntrl) # algo.hhh.grid grid <- create.grid(measles.weser, cntrl, params=list(endemic=c(lower=-0.5, upper=0.5, length=3), epidemic=c(0.1,0.9,5), negbin=c(0.3,12,5))) cat("running a grid search for up to 900 seconds.\n") measles.hhh.grid <- algo.hhh.grid(measles.weser, control=cntrl, thetastartMatrix=grid, maxTime=900) } @ For the weekly measles data $\omega_s=2s\pi/52$ (i.e.\ \texttt{period}=52). In the following, the model specified in \texttt{cntrl} is fitted to the data. The counts are assumed to be negative binomial distributed with mean $\mu_{it}$ and variance $\mu_{it} +\mu_{it}^2/\psi$. A linear time trend $\beta$, seasonal parameters $\gamma_1$ and $\beta_1$ (i.e.\ $S=1$) as well as the autoregressive parameters $\lambda$ and $\phi$ are included to specify the mean. All in all, there are %21 parameters to be estimated. $2S+m+4$ parameters to be estimated for the negative binomial model. In case of a Poisson model, the number of parameters reduces by one as the overdispersion parameter $\psi$ is omitted. <>= cntrl <- list(linear=TRUE, nseason=1, neighbours=TRUE, negbin="single", lambda=TRUE) measles.hhh <- algo.hhh(measles.weser,control=cntrl) @ Depending on the inital values for the parameters, the optimization algorithm might not converge or only find a local maximum as the parameter space is high-dimensional. It is therefore reasonable to try multiple starting values. The function \texttt{create.grid} takes a \texttt{list} with elements in the form of \texttt{param = c(lower,upper,length)} to create a matrix of starting values. For each parameter a sequence of length \texttt{length} from \texttt{lower} to \texttt{upper} is built and the resulting grid contains all combinations of these parameter values. A call to \texttt{algo.hhh.grid} conducts a grid search until either all starting values are used or a time limit \texttt{maxTime} (in seconds) is exceeded. The result with the highest likelihood is returned. %algo.hhh.grid <>= grid <- create.grid(measles.weser, cntrl, params = list(endemic = c(lower = -0.5, upper = 0.5, length = 3), epidemic = c(0.1, 0.9, 5), negbin = c(0.3,12,5))) algo.hhh.grid(measles.weser, control=cntrl, thetastartMatrix=grid, maxTime=900) @ <>= print(measles.hhh.grid,3) @ <>= if (compute) { # save computed results save(list=c("sts.cdc","sts.farrington","acall","res","res.survstat", "control","ten.surv",ls(pattern="measles")), file=CACHEFILE) tools::resaveRdaFiles(CACHEFILE) } @ \section{Discussion and Future work} Many extensions and additions are imaginable to improve the package. For now, the package is intended as an academic tool providing a test-bench for integrating new surveillance algorithms. Because all algorithms are implemented in R, performance has not been an issue. Especially the current implementation of the Farrington Procedure is rather slow and would benefit from an optimization possible with fragments written in C. One important improvement would be to provide more involved mechanisms for the simulation of epidemics. In particular it would be interesting to include multi-day outbreaks originating from single-source exposure, but with delay due to varying incubation time~\citep{hutwagner2005} or SEIR-like epidemics~\citep{andersson2000}. However, defining what is meant by a correct outbreak identification, especially in the case of overlapping outbreaks, creates new challenges which have to be met. \section{Acknowledgements} We are grateful to K.\ Stark and D.\ Altmann, RKI, Germany, for discussions and information on the surveillance methods used by the RKI. Our thanks to C.\ Lang, University of Munich, for his work on the R--implementation and M. Kobl, T. Schuster and M. Rossman, University of Munich, for their initial work on gathering the outbreak data from SurvStat@RKI. The research was conducted with financial support from the Collaborative Research Centre SFB 386 funded by the German research foundation (DFG). %\renewcommand{\bibsection}{\section{REFERENCES}} \bibliography{references} \end{document} surveillance/inst/doc/hhh4-cache.RData0000644000175100001440000000603412617067300017324 0ustar hornikusers‹íXwT“WOÂ’¡%©‚(XE´ ’ 8Ї!(¥("Êr1DBB¢¬"TPQ"­((‚{+âôa ˆm€†²—°(»Õ~í9ߟß9æœûþ~ϸÏï}OîùY¬³¦HYKAd¸‘D†©(iøA$ˆ$‡QÒjÏØâ¨n@Ι6ì¸ái;ó&xÕÊU'œiÒ“KµˆºÚ_ŠƒÞ'dá™eõsUð³Bb {w*{˜ÈŽãNQ:Ó…=ÎEX“”M¤Nì *Ê`øøYeQöèìD¦s™á&þט««ëòÏòÅÙžìM{þâq¦s>K’pd2¦øÖzæ&lÁÜ¢+1æ™bA°Mtÿ×ÈR°tëõ&‚°rþ7Äs"˜Ps±Ì|ÿ¨²™“j„-«¯HN¿O(ÓîÕ4^À¡ƒŒ,a? üT?ÚÇÛA§èùiG8ø<Ý­¡ÿúOÀï¿’zI°¶Äí¤24ªmž¼ Ô˜ïÌÃ÷?/µ 2Є.Ñ`÷ŠöXûW{ÙÌ€Ú™…{6ßÄòË Éïà᎞þ­-QØ“[jS‰Ýú{…׿Áöœ°û+§ÔBÛöº?¶úëC³â®gJÍǧûívjÅ]|u;\eÅÐËßåB^ŽÎk*;ÅzáaPLpÂakh~q˶7‡dÄ“k÷ˆaçVÂîÅ4 H¹Ã‘ ÅF…ß‚wYØ•ä°×J`†EÄ™ÌoˆøÚͬ;ÃÇ—ûMïžïš¯Ú꜡ìŒö‚ÊìÒ82ÕvOðMrL¯wea•”Áh-4nèmõz}2ÞÎ>1MVêDš"v6ùA{ål/—÷+ñBÞ‘ÎÕ)t|>r¼4z_Má„èñá½ÎiriO¾º»B7G‹-ûýmÓ#05Œr•¿ ê{¾ÍŒ9«M‰|¹âÁ¹Ø-\8¿(œ e».æhÙÍK7œLŸ®ý-³Ù ©„ã ùI À»²ô—ªÌ“PA~žF¾i¡ž {°ujqòW¯=°Hu‘ö•Ð~調à⳯KÜNeÏ»t?Pˆ‰eü°Q}õèõ`,u5õãîè†"nw¡Õ ìVÿ¤³Xqá^îœ'ü¤y”¬ Ý2V ­ùd옣êOzç„ghyõC”±µHµN› Q¡ŠïsÀ³K£•b90°Ïºýú»r(Øð±íÉ9]hòT©Á²‰ßø;ÄK›å0]ehï†Í¥VR UR¢îFL®á)wG_Hò„·ç-gCãJš§‡.@ËŒƒ¼ÎcÊÀ_u²?lC”ß4ô]\ÍÄ&¯Ùæ¬Ú«Psó«…‡gj@9\Ûî©>¸ÆzG)ØsãôÜŽÃW±ÅçÕ•¡6?¯±RµÖÅ>KOýCÚØ'µ±ÿ–¾ >‡:ÂCè‘Ï9õñ÷Ç(˜K¿oþ-´Üž–¦M‚;ÜJ9Ç'±DJ7_…X5eéªkİË(Ì|Á>6~ÿëòéÆÅÀ{¸ÉDqP„sºLŒ OAàsŒ×…Þó7g@æëµŽÒÊ™˜Ñg*[ü>:"ÊãÍ¢€wYYjÀ\|鵕°.W•ÙJ \,qéòu wÞ”×; |Ánî÷Á)˜–"piuä@'ç1¿Þ8[;]ü9àk¸¦˜±+.~k„/œåý{(Bàí×bû¬ƒ×Jf+ªžB™V~Ïl¹HhHÎ&ùßHÀò J–›k9Ð`™²â’ «7‹¤ [±¦ªeÉ^g+ÌY¥nº¿ï82•,aÊAldΊæùâd:åý½œëP-­“¢SúÚd¥›Í_‹½’²;¤¬xPzÀOÁðe 6©È[$øÞ…‚9Ýá·Nmƒó³ž}wCS*2žë°4vArÙcBèlzÈÔ ˆmΤÔA™È´5Xµût ý¶2“Y‚s‚dŽ6vÍR®| =K8K–Ýy±6©´ª7Ðf©ǹ|µ ‹.ká»´„ü«¿ÎÀz/Ê)Ç[(Uyph÷µblT:W²JÄO×þ®ã{ ÊãZ¸Û­°¬@ÚF3שÀÿ°¦³¯V_äÆwÌ¥ëÂÀ¥€7S–fÁ«)ólÔ#ó ¯¹QÚúY'–'/v2h‡t)ëô 3b¡2zy‡c1$gPj¢íà´æW´#!ëÑvùoS¡¼#œâ’…ƒ?®ÿ:ßõ'®•9S I•Ä_°ôºÚ¥rß¹Xcæa³U– ™ñ•Ã[%m¡J½8曥eû‘ ±;]7vyD Ư«&|%Ü£jêg7…À3«]æ×îb±¤gª"ÿ±­~(1߸g(чÿ'_>ûýÄÊ_¿eclEc!üjz3éIˆ:8ïܶ' ùo™î¦ð°Á-wts 6„g˜{Ï;æ†Z¡ï‘u³Ý­KÐ^TpL"ãÛ~ÖÊf@»ÎËÌ,ää=wö¿¥û £úW`yÐa­,¥Ûð²ä¬uà5¾p¯¿¿ùr"tïú!ŽL¾Ë¢?ÚŶà€çæ·®Ñ7 }pÛ’*µiPãvb›]¾Qd„\-¯fùxûfÞ…*޲¦Ãô!¸z"çi8yø\±úEáBe+îDÄJÈ[?¨Ì]” ïëe[÷A‰D°¨†WΦm;y3g|Ó¼ç; hPXqÿº JšÊâ’l#óÆ2¥FªüU¼›Ð¨þ.Ø}"pýÉÿlŸˆ°2ã颎ötúŸ[ÂØKe¹PŽÔqר9F§Ò™.tš•Nse2'e[w{–Ëd1†%Í:ileÐ<'Œ­×yÂ`Ù3þ4,ŒÜí'ÒDôM '¨Á0ýL:w¤Û³'¤óÉ÷Èæ¸OÂ[Ý~Dà[ëG3>Ïsurveillance/inst/doc/surveillance.pdf0000644000175100001440000056243512617067305017723 0ustar hornikusers%PDF-1.5 %¿÷¢þ 1 0 obj << /Type /ObjStm /Length 4113 /Filter /FlateDecode /N 84 /First 691 >> stream xœÅ[[sÛ¶~?¿om¦S‚¸Ng|‰S'qêc»qrÎôA±h›'²äJT.ýõç[€)QNdÇŽG¦ ‚àb±Ø]ì,gŠYÇ4“Æ3Ãtn~¹dŽY­˜gNç,0‘ LHá˜Lhú'™0•Š ',*q0a˜”í-“>ÇÝ1% y¦œ°€~<åL+ï˜L…Æ’iKõŠi¯€’f:xÔ˜J2i™‘^0é˜Ñ*pfŒ êŒwèLÐ,:eVæ!†¨4ê5Æ S†Y«5C—Ö¤˜õ4ZúÀ\D æ¥r‚y|È´dÞ ¤Yè ‚©´ÁcY° º p´gðב~À€V9×€xBÞ’ x$òI#ÒTÀWÆ  r¼²T4H4ÁM…¡6€,/N [šMI`e06 ÈÒ G ÈÒ²d0\š4•{´d%‰0€¬áh~ ºp€¬¬g²ò@Þ² ¸ÓÄ 8ˆ(´ÄGÜ 1‘x+´Á·µDZ<:ò9¼ežø)`ìžJ`š04ð°F`` aŒÉÿõ믌Õ`8¨˜0ðãÌ«Q9.f¬~>\àA§‡“Ï×ã;h?š\°ß~‹ ¶æÕådÊ~|‚7ÓbP•“ñî *Ø»¿È}cž0g ûO¹ø!ÏhÚÑ7»ƒådìù}âÍ‹âóÇÉt8‹à&ïA:œN†ó³ ž¾dÏ.'³jv6-¯+2‘£ÁñüÝÿг*Â;)« í ÷¤Ag2W$hüE‰~ÿ Ñ¥±úøüG·ÿÛôFˆôH³ï˜Ñt¯çéQ' uºÛº¾¾Éxû«!j¢sCÒñxR.P d¢H‚m>Ý™Œ«bŒ–Â%p˜Ïa9Øž|Â·Ô &#nÐ"ó¾8LñA3ŸGÅl2Ÿž¡cêõé§êÙqEu¿|oB´©q%bŸ`óÃÝ=`^|ªô·ßºƒX¦«Œr:«X¢ 9@9$‚Õ w‹Yµ ;óö?$ˆ™ÚR`ÁðãùhDÈ¿¢þ¼o3ޤfÓzj÷ÇUdbÂ'=jÊDz™'Ó¨dBF&’È„F=µ2a-S—2Í»JPT‚¢”šT‚¢ÌšR÷9CZw&H›;ÌÏ‚*& Òø58ëoÇyg2šL¯giÔØ †•aXõ-Ãp‰.ÍœKƒrëeîs"\èŒÀçwÁ6ôXÂBD\ã믅x42Hòò ¬—gSÔˆÇé9âr9Ø ÚØ,@gI«3 c¤ÊRK(Å*âñ²¿opŠ”l¥wA.{¯š¥™ä¤Y¬¾ Á  &Ó«ÁËÕáÅO^°j:/šÖmÍ'ƒY{äG¯þ<Ýzý­9ŽÏ&Ãr|A«cB‹”ÕÎå`Jª7" úÇË•0­Km  ZbRߢA!õvZ«Ë(dÑ 1ñòQYlò3y[–dŽAù©¨žb `ÑZnzÉúÛ%¯ï&±ƒ^t˜% f¶0qÈü¢w Ò ‹"¶µP“AØô =GÆw0vh|½‰Fšt+ÃiÑAs ]ÖÜUnõqxô,ºD¶HÂú=Õ« péH”¦Žº§;]vÞíÿ¯…☿’°h®/Ê‹ËæsKÜø#ßâÛ|‡ïò§|?ã¿ó}þœ¿à/ùÅÿà‡üˆóþ'ÍOù€*þŽŸñ³rz6¿:Ÿø”ßÿ¯®|ȇe1-fåŒ<öÆ‹ñp0»äÅßóÁˆŸósú+yüûPðsÔAˆø¿ä—Ÿ¯/‹1/ùÿø{>âW|ÌÇ0Óø„Ãpâ×üš¤oTœW©4ோi9òëÑ|ÆÿæÏ'U1|7Š­š‡Ô0>¥â”Ïø¬¸*æ³âz•ŸølD˜V¼ºœ¯>Nøœàù'þ™ÿÃÿ)¦“'QWE¢þ,‰Œ{£Á™ŽQ¶“êøž@|+òßúÐÌ>ZtÙ®»A÷!¼èBhgÄú³÷ÝwÓÁÙû¢ŠR—“Pœ­òB~ÁâÚ“Õ[Kj+¤µÞQú`©ÖÒKtYüÒ[_…È·"|~UøV„cUúŸ:´_–Eª©e‘Ške‘¿©' þm_0·ö¶_Ÿ¢ïí70~6Lú‚V5 &ÌÓu׺¥Úëîñ½ËÓª§…¯ßÃwmBO‚™ZYùµ­,›b6Ð9*vNÏ*Zƒ†.(•Vä5m(ª˜nêÑΣ]oéË——¾|eéÛ²r%e ¾_åõ–ÉG¶ÃöXu‰?s±àO¹ÄŸyz «ÁD|Vø³ck'þ\á‘WõUŽ4ö¡ìsåàÝ‚[¬ ™³d÷ÈLÁð²Nf†×Föù}#¥uÈ4«¤œÊ¤vß ) —%€+H å2 “Ym3I!Páàsøˆd.ôã %¥Ì<<R¸“”}'¤àÄåNöÒ*‚‚³2³P4ÊšÌRZ›L[ó8H)—gÒú© Ñ,|'¤t™P¢ÇèFeÊC)*ŸQXC52&|¤„°™Wä¶ÀU§X°Ï3…¥Ë4(& )o3ÿªAJŠ<Ë)âþíH‰øØ"å[œšØŸÎE–ÛÐã)ÀK”Íp™óþ¯Ë(Ziòð­<µŠTè#%Ñ…âWyJ,é o=¼Ne2PiÍÆß©­)9füÏ£ýEƒÈLU?^VÕõ/œüøQeÓ÷e6,uúâüI •ÜÌ¢«+” Pq´Xl•™ ’ÉÜe*„‡^Àl!ï‘~Àr˜tC(ÿa‰ âRù(()¯3J,5HiÐ&ówÂÉF豿€–Š’ÄkŠ‘h±@ &ˆ…ypÛa=RÒÂV¶EÊCA(wK¤vÿîë“7;»°éŽß.‡èšœÄÂÚÏ{ö›êyáb#c¿‰¨51±/ÿ\§åf_<üÏZ»¶¾‰ûÑO.p½}0ì<â䈾L£ƒ\,\å:ztA‰½bšüâQ1›¥ÒU9žÏøÕ|T•ףϵ·K=¢éþÂU9Äù8fm6ˆ"Õ1¤&иì%4AøÖKXá¨M½Ø~ƶž¾>}ú ì/³lìþRTYõT(çÍxÖâ[cÉ?L¡Î¥Y÷*î>Ð1Ûf\çMÌ#Z¨4+»Î¬5Ënúµñã6´JÓ°üÓq\[áëèÃ;µ¢€Óºj|¿ Õ«£MDÛ`¥øIaœZ¤ÅÚ;X—À¶˜œ`jRÔ°9•M-,uÊ™ëpûÐï>QljÞð·|0º¾P¨¨1 TÇt‹žÉ1¾P EhGƒ«wüâ«9Eæä_ŠþÔ!ÙË’.Á¯qŸ•Ém®c<1ª³Y0ä‰o½_Kõ$ní./ó馂 nr—{‚ð|ëôàäyìÀwåÀl ZÜ]à$š°^ûÝ×O†/Åkú?O±ýeœôŠÄ×ߣj‰ißkJuøTïb¤g]LÔåf9¦cº<#9K|µµMy¿i°PõyPÝ™½lçÚ(±t­ã£n{gÖ7ýµ}h×@Jý»Âq‚´gè~kûš1FÖ;±t¿Kߦh`Œ‡uœ¢€1ºM™&Òemðïs?:ݲԺèŸwÛ5ÁißI'ŽZšñM ãÿj0zú;’´/‹u6«eÑ丕¦yuÙ2Q»±G6nˆ«Ë–6ÃÕerkë²£® ù»ùÂé,Àg°ðï=¡*a¾ÃÓ¶\k¹¡·Úl»Ði zÍF ¿»GLÝ MîÓ²íí»¯½«‘€zXt…¤¡¨ 2\Ï psš•Q\^8häÑ:“Y±a( Ujÿ>yyzô–,×—ß–ž4yO±™[¤'—“€ß–æûz*ò¦w7½_W¿œÔl¿ýÉÊnO÷•´lw4{NûÉËž?¶š¸NFäik3—µó¶šÁ$7®McŽçWïŠé¬¼ßeïÁÛ –óEó1¤rv6™m–óæ'¤pÉ2‘yzMò¶fé(´Žô„¬»–ü,6Nt¹ažªig‡¤|HQÖ¤9W$ÿ÷bô¡¨Ê³ÁÏۓѰkK×–Õd·§FÀ6ùìÈÇ]ÕÝEoóeðvKÊéÚÿ=¢-RM=9tK=Þ^S b]hÕÛ¥yTÓFë<Ï4í»6ËmÎÆr(î5¼} ¬”C5åáhë+íòÇ"“'¯DF;®n¹~ìì=Û=Ý£üýþÆ«‡6=¶ýÕcS³XÚŵ™kætíÞPNÉùE]Ì×Dj¥ctn µLmèÄMYùZïÇp¶©Dw÷C¦ç;I[ó 2b–ŸR é+:R‘c"(¡ÒWÑökœ/LP×ùŠK õ§õ²¤ËWRëK›Gš¬ú"fíê˜L_ñÐÌœ^qÑ@²øZPÚÆ%îéjÂÞ^«vÙ8Pn±Áã›ÔË’•}[õ²P)ü(P¼àëêåîùtaóÌ“Á¤He1j®3©6M 5Fv½MÖ&2Ø4o6 Þ¦q¸4|—([¨÷œ×Û¸—óšt÷u` ÃKL4sô¸û ¥ËHC,¦Ààîo9÷¾{€¶0¢M tÞÊd.i)sè §@¹ÓNÑtƒSÞÃ)®ƒaM>Ðdsª­Î”qŽs“ÒõBÝoömc¤”Ô1ɼ@ ÍèˆÖC µ&M¯eFþUMƒ×´ÓÙ@(‹+-p£ã*3„’T2îXàdLæ¡á'p5°Ó¸ÓÔJ(èœN"*›Qhõq#yhlR—«ï…Ôú}ÊøLËiûI m-J±ç̨‡VQ7íÚ©·§58Õ»Ó¾NNÐ64Ûçrƒõ„ ÜD(¥Èý YðÍå7ऌʜí ÍDçzo…Ô챎ëñ/c·> stream GPL Ghostscript 9.10 () 2015-11-06T10:11:31+01:00 2015-11-06T10:11:31+01:00 David M. Jones CMR17()() endstream endobj 87 0 obj << /Type /ObjStm /Length 3188 /Filter /FlateDecode /N 84 /First 760 >> stream xœÍ[ÛrÜ6}߯ÀcR[!ˆ;X•J•dɶֶ’HNb;¥zDI\8Ê åË~ýžÉÞÆ¦¤Ñf­’‚ ºÑ}ú4í=‹™O˜š%1“ʰD0m–Hf¼b‰b.ö,ÑÌ‹˜%xLÏ,^ ^Ç„4–%ž ƒ÷LämÌDŒ©¤¦†`Ò†dÒÇ ÅTz4S* 6LY¡Ð°L¹ðÈ1•X ­4¨Ä ÓÖ²ÌĘCÁŒ[B€Q…?S­UX‹ñ40ÌʘVg™5‚ŽaãÑð„Ùü c¥DB æ¤ÂëR2§55 mABj4< 6ÌY ¥eÎѺ¥c>SBzˆÊPO¼ „‚ˆ5ñ¬˜^(‰†Â¥8¥G°¥y ïÀ¦P–ycæÄ¨‚Ä­ o& ¢q¢h]‡ÑЄ$0ib‰ , ñƆòƒ™5I–¤-‚h¡ ´ H¤ñc‚¦,Q·¤Nk©ÏP‹DEÎÓ»Dà âB$Ä•1d&¨_ºŽô£…ûÇ?2~­Jö'# 8aüÍÛw4[ä¡?‹‹dÅí|ÎÎ?Î>—d%aà/é2+Jfë»eö‘¹ªý:/çûîôvù1Ëçó´˜eì -ÓïÙO?µ)&CŠR¹HfŠÅ6ŠÞo'¹7¿\,óòêzµ&¼W‹rÒz‘pR]U}ÕõÕÔW[_«µ¥'‹¢+˜x½€WÙyžî/>cÞ?&1_‹#ÎÖ|W3ó“lµ¸]β#Ž?—ÏNË´Ìà€§ @W/s1;ÍH\ü—ƒ§X)Iä BóËMF³_f}ÁÆCÉ*]ê¾dåvÉ&ɾº—ùÇt™««–˜ûJ#´ò‘u®G[m¥Ý(¼¦}¯f·«U¾(XZœ³§·åí2cŸËSˆ+Aêkâcôd‡ÞÞìC±ø4ÏÎ/³kÒôšÊþbyž-k5‹†pCìžm˜&’82pJÆ‘szÍÃI6£‘ðè–ˆ36‚“b2‘‘õäâ=X·4òôö}Ôü2/>4*0~0S6ÖQ‡ØcJÅ2RpL SÊAypo/SÞDU O:vQŒ¨{7žÒUl‹¿Ø?~w|øÏ'¯Nà¢ùa1[œçÅep¤•æËUùä*]"üVö†gËü¦\,)ȇA/Óz ÅÐ y",ú¹?òóòŠ¼Ž &ÞüPäŠwðc%qd}h[·uœ64ŽbÛú/z(HV|i¯ë–kA U8[ûÒÕ,Ørþ$½yžå—W¸E®ÄI,ä³¾ã¿ðþš§|Æ3~ɯøÕ—›«¬à9ÿÀç¼àÝ.ÊlI/ò%_ñ[þñûŽ0ó©:O/WLW²Üo¼lxfaÕDþ¬zø4Ÿgˆ“ó£®ãô:ë«û¨Lçùl¯¸„©ÇpÞ9ÆPýzà³ÄDýÓž­£[;楒;Jƒpe6Q]åXH4ÎTžÄÁû` §kÿ‡*þÚØŽ:ß tá¶å_^¬ýÉ|QÀŸdðä/Jþ‰é:ˆ¸Áö¿AÓ÷¢úé)p‡.Àååóýw¿8ÚN`3}¡F0b{QBìkBƒdKÕí¨Ñ¶Äo³Iò>*LÒ“·îË»+‰âvÉT{Ü{{üì×àð“Ž|]_¾£‰Ã +ž8xÒ`õ×U‡[Õ»£ßjL+ypõý6xoœ³¥3Ý6]ãÚoe ‡$?ŒÔÆÁA芺‹×Ôéêë1Í3Êh±¢#4ðžh:µ"§jÂß6aê`»©ƒí§‡H^"y¨Ò†ÆÈGR‡0C“@\¶Rˆ"/È#Üð sq^»†òj™e!‘ø4šJد¤É™Ìö€Ûä¸dMuHïîã&^<ûõèÅ¿@ëõëdbPÑfˆçf'ßÚeMų‘&üN“FM™£¡ÙÌ8ÖîòÕî„àÞÇF)²ãîl)OK’âMk{Õ¤­5Øj·md™WB :xnƒëKÏÔT[Íy“¦vôÝWú¹µ†.Ô¨§v‘þ›HÃ>¼щ¤SâÀźGÓ |u¸†ä0Iš¶ïՊÙ{}#™hŽãè„Û6mË„oÚ>ÉW7á ¿¡¡e8ˆo±ÐJª~=>úãgˆã°›T Ûœî}-“ƒTŠrÿê¿9æÍ æÈuÌh{_múïÇ;~:¢î:ÆÒ© 2ÇT–`ÇÃD?îäùqÛ„ò¢Ì.—éü<_ÝÌÓ/ü†NçÙEù>¿lÝ”›vySµÃÑÅzTuW¶n0n™žç³tNƒV·e¾(BëŽ2û -6:Qÿ¶‡z(”w´¦ž­6'›„± Ή‘@ÆÛìs˜#ž>vò†êûG6¢Ÿ,NßPØQœ(Óïõæa°ßÐ1úkÛQíÛ›«‡¹Gu`¶íülŸ²kdpâ_=lž|ôÄÁ9æíÁ£Un¨óÛ¶ö¦¦ ÂÜáÀaÄyS¤¢qÌ"0¯Ûuà[|6vÒjݦƒ£¦Mõ«ºMÙ¤l“]qdsâö"Îhhyz“βP, #Z…ÙÚ¹…ÚéÝ ;;ýù`ïè)”ôêhª­|ÛȤè%›“ŒL#a£ÝõÊÝÃÛ=LÉù¿· wlLõ¦è Vƃs²®@&ÂÖ~cWvâ%3¢Ô»A—êéTJ4 £°¦dxë6M¿Ç–©Ãèx1¦r`›bL]á¬jg6‰” Z9Õ~’aݪ*Ym#}¦tID;?k|d&M*Çlj±²®µJW_«•ŸuÌTîÖLU<0SÕ‚Vø4áfzß²—NdD ôË^ÊE‚–‚ ñŠi‘Dп”*òVûh¤÷¿q;[„©!¾7²ÔBG‰¼›(Gµ K»Ã†Ö22 <T¢cÂDYí\¤A•V5>¶g Ü'™‘èð»Ýˆ6É ±TZõÈLˆÄ!ñíÎx&5$¥ÅZRÒ@Rò±Î¦II IÑ§Šµ¤¤‚¤\òÈLmó7FG´ëH…¤§$\D5jáM#úü-L)+¢„$Ô0f}Iøp¦úÙ"}(¹æJÆ€ U5?dK«8Š)®ÙÒô‘Ÿ½£¬Zþ×î6¬…¶O6­bløÂs'¡uÊ©ã¶À:p’“Rœ6Ånîo¿0“Èa÷CÎ%¦·à\`»~ª§Û„fS¡iìHhv;††BÃw ‘Ü;÷ÚØ†iúB¯°ƒ€)ÎÝEÀ÷Øñ>þ®ö+¹´ßif;{?{Ÿ½ßC2žo¼KÿaPoøÊÑÏA~q‘aÝ´Ð?©ÔÞ®‰“T*î×/ÜkÖ„µ>ßÛѤ¡hÝTSÿçŒY§HÀºÕ€p¨Ýª°NE€Ñ±X«ªÐy¹dswêôû t@Ÿx÷ë¬SA¨JG›êÃîV¾{  {¯æ[(÷ú3)Ö|8µ+uR5"ub|ºÿë£Bæendstream endobj 172 0 obj << /Filter /FlateDecode /Length 5368 >> stream xœµ\K“¹q>è6áÑ¡‹ªœÞùâUH^ËÒ*V$uÒúМž—w¦›;=CŠ'ýuç($ª«HJ²c‹©F‰Ä—™_&Püi£F½Qø_ùÿÕãÅ/_»¹=]¨ÍíÅOš~Ý”ÿ]=n~ý{¸Ž£ÑÞmÞÞ\ð«z£sÊ›Ô?<^üex»U£Í9ë<ÜAS+R®·—Viø!¯·—jôðX¥áz¨l}Nzø~k³ ÃŽzäœb®ð©Ïaøqëõh²5ð3L¦´µq¸=i œ; ¿OÐ;¨œT^šeb#&†Ý€ž·¢kñ²oŰw4¬ó°„{±Es\9ØGøaØ—°¢!N~pS”Ó%Ycƒ¦ô@£ŒÚ‚` ;‡!ñf‚¦"Š‹#g€Ý-O˜ÌB@7ª:÷¢–I @ÆÛæIRP2v›ª  cIº ž`¤ /w(S .‹¾ÓñÞF/§8XŠ £œäÈòääåSRgŠš\Éž #)ÛuIºÏ‰Ý((EÚPd! ¬ hˆG/‡ÝmÂidro&‰i!ɘê%ð†ê6Š6§mºg3‚ð)Ô茳¥©ûCÃØïžN#¸&ð*Ñ/Úpd•õçK «®€üJ€àÈ(êQ4æ´ƒ)PpHâÇÄl“Rÿ¥'9„ØäãCí„#qÂÁEض'HÎp|i á´×1’1òtH–»Ëm÷r×$³Ñø:$ÑÆDXx}sz€^Ip/Ëß¿W;2’¸²åÔáŒÜBZ«œ©ó²÷êZàq¬hš%¨Ù[•ù$À4‡lÿzÈ"žLö£‰º¢m¼—_p84”·„ÁòËb; 1ZBrC$ÎDgçïvB«»¬BnúŠmƒ¼ozßí ZQŠá 0ÁtdÛÔW:Òcñf1IxôRÑvªsEZ¶ƒÒrï›§Af–¢]\ÛÍGV¤¦U($°jÍ»²RTLæÌMV)Ž7µmW㤩fl ¢…~®ŒöÍU•øBT‹…-í{ "N˜ùsøÃÅÛýË܆‹»:à©Ë ÊçŠIxh ³{è†,¹HÉt¨ªüÄ—ÿ¬wÑ«9òãK[æû2ØlçžùqÖ°3Âù!Z£&Ö÷ÃЇ„:ÿ°%¶a-$CHr¼Bî3üÇ6Y°y¼Äu”ÞFº)Æ!9=Ü 8P¨„Y1õ‘g1¢ˆm”±hÔÓ˘ÈH¿!zeXÚ— ˆá.Kn4î®ÜÇO-ØÌE(‘»÷ˆ,£U§Uìn-%zçØÙeÀÓŽœFÌ–×d¤qaÙ¯·è8AÓ`3ïó`2FêN¢a8¿o;ÝÙ ´<ÒÛ»&Ïï¸dÝp(-äòÔ¨u6-ÄP]òö¯«@®Ûúmƒª0Mášvæí £pÈ‚±R%ÇíDq[Žú¡ñ%¤K(NÜDÊÚhÿ‡Ö§B¥9#Éi…9¼/fQèØ#Aú D¤‚¹ H`¬G¤¶®M½N±/ráS(_sÂ{ÐMìRwØ,4Xã DfÓ)`7‹t—u&Î’|)=ö±Ž ìÜþ ,…ÊXÉ>E™Ø¹®=‡eñY&na™‹Ë˹q=jPçŒiï ·}ÏP–SŸkîëf¸ÔMº1F_‡šz£¿ ˜Æá×[tØú=pê e¸,þp|¿Èù„{Ĭ¹#lËÏ[4”â÷¹Rݯ¢– içû*Ï[bÒw-rÉ$åAäDÈÕ³&÷ØrÙ@ÿ®8µëY:½˜t…é!ÀlVÿ+nPt•»q+» GBŒ¶KòÅ<ŸQ³¤¥„ ×2U¾“·Ïû;åý$]”øxZ8 ¸ÆIsR7³ïxĤ˜Œ.ÄÜkƒ²ÇóÏÅh(v{–!÷lx!5Wy!3Ÿó_¹fäÂã;8Y°¡<+fŠhñ5µ áø˜áTºØQÜ€` Z®'Ov,¶Ž ó)Hï#âªÀÐr¡Zؼò¬î$I«wåØº,cNGfN ±W*ÍeÕån'~Ú3õeÈh((‚­&§%ék~}ŠK¯8ˆEØ#ÊvÀ$gâ= x–ø {"´öʸ}uY$öè cö¼lU2û.YK§þó´£<»³¢8B˜¹•I“ûFŠÆöæÂéÛïgÁ)kƒnšÏ¾2ò›[«)U:n)|gÆ%D6Œ {’¡†‰ÕÌrálȃGPô{5/ß4ý| ‘i_˜RM£‰?ŠüCð²•ȼ›?/[‚œÌa .çM*í»¬‚Ç?º"2ùµjm1öì¾\Õ±¯HuN Þb2z Yß-z1+¨R«…í8³¾²˜“mU\NeQ„Ã*[Z*²\@K~ÇbNŸ Q3ðªë‚xÉ”:/–˜…>³œÙ­ #kÜà©°ê/@n[­uκî´\žÌóÅ‹³ŠÝt÷òÚuŽ §z³lL#qÊtÅ[<ôžŒ ,2xT›¡‹L ÈlÍ-sŒõWLÇŸ’Y PhEàÐ] “ÐNÃmA¬µÔâÌ”j)0 Ù¼æÁ°~D¥ SÊ”¬ÃÅ™ÄäºçW¢ÍeBBÐ,ÆËD¤ˆ¿«5HWŽ;@ >ÉÄÎz¢±m¼pÂC5þ#ÔË©øn†Çµ.b; y9F× Î>À[纴 D„ôȾ¬á§`d V‚moµ˜“k©k14Y ò7Ë×7 ”àÝ‘£åëbl?Òà%Λ934&õ+ô ìÊMuŽœR‰D9OŒ”P‡7Q8ú¹K¤ &«êuËVTƒr@ùÆç3=OúÚ·ýÇ$GáÕ;ü±Ø~yAc %‹:´ãœ’£)Þ·8‡M0ÖH……Êw…@êÍçžFÁ^•[, ´E¹­ÉT_¾‹9±H Š’cóì—Å ô&S^…cxwûf8¦MÈ3m”¾®Ç€y6¥¬x(Ä™6ô³&¡Ñ¶Ñ&PØ ^N¥IÙÔS)ž!û”%¬jÜÊ5MÀ°*µz_ÑÖYÙÅ•r¿ø-`ÅCⵌlË݆IŠö¢è]¼ž“^/f¼kXНaÎÀMŸR×tÛ%׉•Øà¦Q^M+_šÌBMíûÜÆþØš÷­yhÍ7­ù»Ö|½(’C‘òäÍg^£jgI>C¹xþG<µæóbßÇeY2´iFéTŽ|*Yé$úš ä¬Àì–Ð2¥8lS  *¡œá§zÓ¹¶RDJ2¥·´Ö¤ 瀥ùÔš‡Ö|·¨ ¤Î@ȦâÚKÛ¸&àeS_i±éÝÌÇ¿kÆXóârÕ ¨"]Å2­÷ÄîöÝš'sV%íîJDkϽ¦¦‡^Z'º»ñ Έ‘Ì­í詹qéšE쓼ŸGÈ¿m˜‰Ak TÒi¿TÞ„ãnQ¥Ý†EB,í½ÅÜE|Ù[€0ívÒÿ/Ú=^ .gÅÇ }pÞPîàÃrÝrê\ªwÙ)W¨‰´/jTó¹i`Õéÿ¹ä…°dòÖ™Éh¥ÞT² ‘rz×tiðªVŠŒër'ðsSâW1Ö¿¥Lô9|)*8Ç\]µ)KX¸oÍÛÖ<´æuk>/6¯>è.AiÿüK`êpµôÚÛE¸a‰-¨üuÁ £!°¶ÞÑè­ù´èüWÜ™ì²LÝMõNs^õÍÉ0Cðà[R F¥TÚϹ‘ÇrþЉ,‚4†¤f[?c·‹;ûÜܼh^·fÙzjÿ¼5ÿ¾ø±4 â¨ã´¯c#±?Ðn­-ñ™ö¢+ `‚¾cbœW{kó ñ“qBxíÎÑñ ÑÇØuÇÒ+@¼¹öÒ”8 E„“v=¶rcñæ]ðæÞy8óß>òØ|#z8~¬Z4÷¿»Scŧ/EŒj¬Ê_fI§åX‡`¸`>r=§í,•ªyô$ønÏ 7ýY’–’þ4Yì~Ñľ_t Gi,‹¤ÏŽÁÄ¥•XT›úä™ãe}rKJ‰Fp„„åÈÝíÌàŠq©Ü¾t¹_p>r=('7|Ez¼£21T‚õ¥=ázž×RJëukâ«©ñnfÍ é°Ñ°@LqÁ/sÍÖôöRƒ=Žõ¾ü†wÄ»Vå’¬‡ÔÑpÝÐeëù‚:rS<ÖÚ¿\=Ó)Ín¸´­ÿaÐôÝÒ$Ì÷´&à·ºó1t±™³½ŽçLþþ ˈÅV<ŸR€(³¯©!¾ˆWäw/A]É"ÔB3Y˜x:‹[†®vô™ÄŽ?÷I±¯ñ:òœI‘‰éšãÿº]_1t,þ…¬½™sc¸ îäG¾éðFžÎ+9ü\7t££twmÅZVÜq=±)eØ¢^•ë´¬ºH€ˆ¬;<ìrµ‚KEÆÞ~ò-Mºi<õ³%AÀ–]d~ ¬yå¬NÒ‡Å}\WãÀélûD©„ ô<óÂ…ÅÚƒ s·Oñã8®Á{c¦Y´îœŽ(>ÉK!ŠOd@FºX»’HuB–8ÅöìY¤ úQê ‡Î_3¸P°½kž{Å¡¯TC;;A)ð•©r¯)—‰}‘šÍ`QÞ Ë5Òú%PVqÚ•> zâ§Qåõ¬±J×éè¡-åQ‹ß6µØÚ‹?UÿZž/qO\ ;-ç]¢TîÚ?ƒTUÁe] ñW>ZºÃó é «ætbÑÍ™tEÅ¥.ùYõó'ÒU8êw–¬ÙùcÂDìçvŠ/îÞ5™ÊíÆgYî"Œf“ãxXÕ%:=}J° 4’dÇ]rž—†I(Öª0ÅØœ Ó·Oלwßó€x-u­ú+ýÜoß^üéÂÙÙ|¼P›o/PÇ€&àï#m/LÐfLíÉÃÅ›ÕïãmÚÀ !Éî>ÇbtZbžòò?+ 9¸X¦ NmÒ˜AÔx؇§…)§ú-"eðwýŽWG÷o¨À¥A´RpLôqø‘”ïŸalÁ»šâé _EË™¿²1bdî^{’‡h•ÞÏw¬Þ”r¥?0®ú-ªÆêC9E®ìV:ñ¼1™’ ià!â žm8÷7¸¹É“Ëeš…!ŸHÁ@.Íkêç`eDºƒ”çË1ÓMRt¡‹7rú°8ÁЧ÷L5æKRCÏm·îI¤h˵’²^Ù™.0‚ ¡ÿÜÞë4%çàâr…Or@š’;?cg‹DçS¹ÂèFÝ;ç:ˆtåç;žÚY[/¯V9V…ºÂy ÄßÉ.ei¶ï%|yÝ~Qì|°=T>2ã¥ÚðXаTU¼8leýª-‚à‰éغ—û(ð›Ãã?°µzƒÒ6x‹&zOgp—†ÔžªÖô‹¯e|MÓW$ß•O¬~ÐaøßTÐfú'þVˆ#ì+ÉŠð9†°é»u†}z!6õÒci èñŠ•/å ¿Þþ¶$)f†´";Ó›'6^]û´MÉO’ƒýV€ŒL \+ÿ> stream xœÕ]K“Çqö¿b3ì Þ*aJ´eZ…Ln„”ƒ]p ØYakü×ê®ÌêîÅ‚d(ìÀžêzf}ùå£ =3{fðOûûòÍ“gß8v}÷Äœ]?ùëK¿žµ¿.ßœýöJxoÕT{vñýþÔžY›Å•³lÂÁútvñæÉw»«½9›}.»ûssðµ†wö.lÍU½} …‰¥ºÝé?4ÑäÝ,áj-%qé`L¬awƒu“vïöç!ÛCµðÙ÷üœŒÝßcáXkÎÊÀ«!íNoà9sÚßa™RkŠ*‡â%X¨òŠ«‰5©ˆ±¶”Ýõé-òÖøø%vןJ«ÞdSv?ˆV±¥ljðvw‡5:©Û}U”lôå-7”íf/¸„¯{%^à ¬·µÊÛlÓîRÝLÓUÅÔ¹Ýñ¹h醺kBt;½«1X^o‚O§zP]Hjï³ÅËÁ9Ù(M3W}'ºxèþ×Å¿?±þC)gÿñäâ¿Û]ì]Â_óħv·]¸¨Ù\ ,Ø%ÎŒ‰>å©cäe÷º—¸ß½±i÷tîBמûÒDëý~~¼Ä†á!ã¢8¸düîxÓž¡ŠÏ—ìtrÐ¥7XK µJÈO4ã5AºŽ.ªm!Lõ;Ž}A9ò#T³{?®`õEU÷aL$ì®ËÛ¬–éH2S²+†„{ꋊ(=lRî^`¹w©É’B,Z2zé6ª³’‰­Ã„Ðâ¶Qô±° µ‰z»Û£ yï9€¨‹+¤÷}úeç^v ¾é%®©†ó©ŠsÊê¸&˜ìàëÁÀÞ¹ ð“-tö¹”Ïy”7¢ÛGžM[\^ìK¨ñ‡ö%>—*eGÎÉæÂëMRÂw7 4l\Yä’ÛK°UßÕ=•½8ÁÊ䃱Î6¤Ÿ&–j³¼Sp;¢ ]ñëdqij“AÊ“9±£©tõ ´ô [>…Âp­úšŒ º£«(*ðô…6œ^·.V9P”¼ûÓ8ù¥ø‚RÐñQ Édð *í$“¢7(<Á:/·; aûæ|FFþ´KÞGjPf’uœO0š[1^ÂÃRžÔ—¸`7[`q ¸Ù\[¥è\Tp›7z_Y;ݕսìzüuŸ?ñ(¥‚ן^pË2 ¸@B*®Œq¹á¡­Æ¹´©³ßq…EK€œhg½Qà§YïœD ¯x¾ ¼~>/Ø}ùm¯K´ÐÆaBAìB,Ì -¸>4á&KÕø®ÕV s˜Z‰»¿ìf¨Wÿ²ÇbÕÀ¶ó(1¨673±÷ÆÒîûWÒª8Š>ñøJNy)õ„a×JÝ`}´íÔÚ¿ã×K_Ä7žaÔë6# ­ ºÝ! G`[S¿äOŒ ŠÉ{ËÖWÒíB(‘jHØú¡oNùú¦¿ÞPJ°±0<‰ZËý€M/¶U{ÏS’k¦Ý…µ!˜7pÅ;¥ÛYkÀVЬðøŠk,°Gà„,R†èƒê™*œxXœX˜ÖXÌV?5VYCõî æ& #0 € G}êKmʼ¤Èz_qƒ Àï@P ð-¬•bÍbæ¤6E÷¾ ƒ¾Å:vHÙk›¯Ä±¸ŠP‚¦RGæ^çi«Q§ #)%²B¾dòES.T¤h‡VÍà¡€6ç3„K>ú”V`œ1~Ü2MoÑrÁ„ó´Ä­›û'Ó–ðX ɔϑôô7X¢­áù~¶ä;^¢tÃ?àßį…xaû`iBõ1—YÓáÂF •÷ýñmüÐ_ôÇ—ýñõêã±?ÞôÇKYYë2]Á K%שwì(¥9Àü[µ( ñ ’ 0^Ùb‚ÒDG˜:YWá’”5 „GÁÂæuƒEy9cìþÎ[fÌX"5©‹\ªÅÜš¸3 ˆÃÒÕÊÈ=#$Utl Vä ×Üè ˜|"(6E4Ì–,°A3„ªgÛ´I^Ç— @KÉy+‚éã´iæƒ#sl0®ñu6þçP™Y%ü<*ƒ-“M¦© Z‡1FÅo…¼Édpºbð™T$˜é°"Â$µxÓڰؤ7Sç~'¤±ùEB±áï Yõ$}Ãü—o›ÙÙÍ[³­uTQÖ,ünkŽ»ΧŠ4"þQZ£ïȽ^Ò½€Æ9ªÛTÉKÐ8IëïªJüüòHÅð \ºí5È$Ôr‹y˜°Ebi;%ÆX.,Í_Ò˜Ù¨L{¥8Y±ØÄm¿ƒØIüáíìR•}:^u‰f—X‘rÍ(…ŠÓž®õD® ²”·<1¸~âéÐCº¶3—ZYú}Õ«tÇ%‚UÂFô ©8 z—]ÑB2#ÓeÎ7Ã1Æ-_&lÈš€‘Ãl|-¤°h÷¡Ú¸å†âEÞS£‹)‘*°YlÜrU0Ëšå¶¿ãæÀ¦PËõÚÏ2×ÖzŒZA²*Á*âêl¿¬Q‹ ƒ££_à)üò¶—fú/+Y"Ta-ZŽÖ#eêmk±lQn1MR°= ÃÅö¶€ùX:ßÀ¨ýÜtdšxGÞ >»8Ðê-1Ûwl噜'Žðö$éâ .í›S7:ØÃYª@QóQè $'¾â:¿ÍçX@¿À!YA,-Ñ´fy”<¸¥¤·¹•ÐÐÄV ð&Ad÷â ^ºMÙc¯yÂÑç´Ð è,#½šV2jf×çë”M˜ `ÿM¾À$å=;ò ìóÙáˆèp³L«MÊî¿Er¹á´¼Ü¯9ÍtÁ(‰rÎå4]qͱþb  Þ\Z²f*ë¶k“Íš’½¡£{løR$ãYóKš)¼³A‡Þ`ë Iì® NÑÕ¹æfŒÑÍÐ’L³6Ú¤JYèØ¯³‰&š~'a„ª,]éQX0¯V±f^›‹ÄÖy¦´û3Íõ!ŽA”އɈßʰ–@1a¢m‚Å…9"ˆÏh` ¬û¹ G¾Çx©ŽŸòÏs쇹Ë]ë Š¡`_1ØÖi°¾n³ÍöûIíôV£ä„°y× a’J´±PSý¸íÑ8«¥Ø6:ÿMˆiGAa NX'Ìóköª¸œ¬B··ì(É& G¯1B,¹Ø¡•†Å“¼4q$.—Áù¡÷•á›§òuGŸæ„ŠÕÒ„ ´Döc9òD+Åq×Aýž]IE;N­çES!E–&-øâ2ö›Hî/õ¡O<Êýô¾? .zÛÌ—¼ÄgV-ì¡ÈäïÛðrèB×¢š9¦s9 ^3A7Xƒ ²`/@ƒ,šCÅÇ¥À²5.0r6Ú î2ú6#ÁhåiŽ\@¥î…g겤`ÖA‡!å?}@hpû,:˜uà%k[ÖÍ¡V2«MÍ–d;gb['ÑfŸ§ƒIMKÄ…ÓèetùäÈ4z¤Sa¤uµ°N’7ž MK$¡ÙñŒ@³TA{“º”Ôä¾é÷ûØ›;Ь“eDŽ4ý†½›6zCÎßo÷«0ÍÈ]Õ܇YwAà ó<?ÖRDYôµ("¼‹ráï¸ ò?öÚ6uÈ<9,þsx´É—œê(–ZF œ†B ³Ž)+ÍüB²•&\g-šJµ¯r“š°ë#ýšÜͤY 2è)€ŠWœîn/Éɬ›®¸4ZWØ$L.È›rÒ!M,îk~˜B·ý«*ÚøI@{€óaïÙÝ$ A ÑSÞýTÇo¹\^ÍÁwXáÝq“ÁÄ-óošâ%F L–¬E[É>P—ex=ø¿y­LGË.ËxˆÞMÒ×”;ÈæCZþV…VÉ:Š òFìB­ÙÚã†ð p:û(SÄX2(0wÇ "IPÜü‰‰¼xø; î ¾®‰†Xnz J %‡$<úÒ—$UÓ`s‹Š¶>dýÎÉ!¢‡ó¸Ð{:åÝsãXŶ¹̦åâ$¶Ìq[qÎû‡ t'WôU×Ô#51 ”çnƒNҚꦋeÉ]+÷É>®§=­JeÉËü'Ÿ QS9Ý$%ü(ò]SÖmùQEHH:`…Ì<¨(ÀôNKEAôº) ÎmTÙKÂ+Ž¿»%ù¦¦€|Ò„a¥óm#ó¼ ›÷L'I Î"Y;϶±Ù²U»é­ý¼V¬Ï/½†4ÄXý&&u}ßdêqyÅMÚTÒ5•PÕöwcÉ/µy«NÃæ&‹Ó†F1:óF1\zd(sJÔ+ŸrW,©¹ž`³n ñ\“âÐ3)@ç0…k#MÒù¶¢0 ad"¸3’Ïa /RÏÛŒ%‚)]‘ªðe§³Y¦D]YÖf祢É¥®*-ÝûSÖí6_Àªýà¢9¶‘£k\ÅÏ&KFøÄÔd³£“‚àÃ. êê–—Ž%µUü8k‡(¹Ÿ”ê!çkò-rœ( @w²`¬ÂY–T ¬?ÂlÞÊÙÔðëPo°Í‡ÏÉ{&[OU©1è²:Qƒ=èQY®=ˆÌ2u´û±˜áÝS¹ç¸D½ ÍMßp¤+”´×Ó*FÇ8MϸSU[stùͰĺOá€>Q§5øZý€©ä8•þ'”År@·ŒÝ¯ÕŽnYX»© yÌŠŠ,Bò2äkL™âÖèԊLJËÊK®»ß.€•ü”’yË aKSÝÈ; Ðm²¶rœ—ÃêÚ) Œ],ÂÖ\óLC{ê4ÙªF‘)W‹€(Oò=׌äõ¨D†ûo´|vf!fû1÷Ä6¸êÃ%¢,Ï#?ŠOÁ²ƒ¸¶xµŸ³¯ä°ÚXŠ¥x^ú«uiË/2µª‡fèBn†§V £À©°f»ñ7ÚvÛð( ™T¡$âGá©’'. ø€ýJ&Oá& Ÿ J¸‘K%\+‡¼FÈ =¬žl™s¥>Vèô9ˆïÿaQ\wÅ5ìý\l§IÒ€<= iüvA²UŸ€UçgYtIø\‰6}Þžx`Ó"ņÕê3kbŽõÍ;aUÊ©Dš§XÀeî_¬º*(rX1AèËãìS¸ï’¹P9ûõ~•õ±q,ŒG«Ž=SQT±áS"É‘[Ú‡`­¢ct;Ëkãˆê `7'»uNC=*jâÆ^ÇIÄÀúô©zÇ¡Y0•(I³õ„ÖU¡ç®LUÉm-¾¸¿Õ«t²;~lÚü¦»]6\Eù€$:™ÿ[SeÅB\Í Ï‚à9åv&µ9‰>É? ‹ WGRæ:¶Ôc<`ºë™|XÝ´ñaõ@É^[ ØŠþ ™÷íd_Ô^öç‹•¡;R‚èHd,4Ò Ùã £µ^;4.;ö‹6Ž…uÃþµ&ûHŽàá‚l¦?:%±l 9%c³®@‹ª¬+qz^T+çTç `kx­Ê˜Ç ]ËœC5YÏy¶8E%?Æòà¥2úÜë© ¿w×°t64FÛðo-ñ¨c÷šÈ¨}óÞcÛ- Ÿ‹JÃ÷U·%Ø`OËü!uÈîú>FJ ‘ùû:enUø–!Ÿ)w‘ê~Þ×#éôäú#½-lÉã3…dա㹕åÏ{áÃôÜbôM$"aY MÉŠ½§ž_‘,Ø>¨a Q@ü¢Ïõx ƯòcŽgLr´Cã«u ò—Zt_lÔIâ`‡)<³ÕÑÓ2•Ô*òChˆ8¹À•K@¤ì^]$7|Úw6¥rLß­®QpË£-ï0iö|:‹²î'…­jëg˜–ųi ]ÜðÝêpPœ©o„µóqdɪIkÁ¤&bѤ´9GwñJ“˜.ìpïø>ì;†6ásí;æM¸NãMNUùŽK¡s&¾cü ÿL³ï3\Ç^ç½õ`Aƒµ3º2COèkk[Ÿ!ÇC¥þ>Cîê¬w®;/Z? uÃûx‘ /sI-–V(kü°·Aïþ¨ÐpVÚW8Ó3fæ˜ÜŸF ™(Z¨ÜäÛ$p9LÂ…¶À ½4è)Ìóà¯h®²1ÓlÓã]üS|ÛOýñzuŠCÄ»ÛêÌzk#|(øÃVºý ž>€»¦üN×"OfëPD·)èN†Ö«§Pw­Dp¶bÒód³ec¢#Ë&q&†Þ1øãË÷² åuÏâF?î×ÖÔV€â¯z=n¡b]n‹JïV× ¯!‹=ÃgÈK£ëÁ²PÊ™ÆbMW®å2µó8‘õC¾ý¢Žâá¥9ž.+Ó_Iøe4B25™À&gü ¾ß#—ò€Û8°ywz>{h›\Òqê 2·W\]ê!­ òY{V¢Ç#s|½S [ì>3h†Ÿ¡Å2^éü{ÀµJwž¼‹¸‡Ú“7­C6lD³Tvûš1°&Ä´”éȤÄu~<®¾]‡ùó©F¦d’å,nðSA¯›Øä}K|TDîW´0"ÎÚç‘2µF#¶Koø9V%HÜݹ9ži]ÄTɼˆ¦…«‘f2/^ª°âÅ]n‘=‡Ö¹Íø¤¯¡c’r)×.ž,õ^»¤ÕFŠtIF;YmZÞþùpè‚̾~Îç´8©.UÚ¤óf:)8+ ž0ºÚòކñì.¾ôEX'À­*ÊuOú6É/犥;¾´ c+˜X»ðkÀŒ˜³¦ #{'ß®j˜ˆ UÖ"Óûy`"3R¬ãF¡.2€H£GœQöÇëñjgžå[®²4çÑ껵º´‰K,¢·Âƒ²á÷Ü@‹y\ãmžÜ=“¶\62à?ð~eÂ*Ç_}1Yô–Ýýi"0M~>ÅCxQ‚¢(ž8Õãù&mâ-ms3”/Ò‹Ã\VOìѧ­k–HŒ]Üe,Ñ?Ý…ÖKïkÀ°èÿ‹`Ç'½H«,™úvìÿè™»ê_­P½ÕðA=Ñ"+B:¿·þŸdH}¿´vËÁv«NÞTC”ù/Oþþü/÷™iendstream endobj 174 0 obj << /Filter /FlateDecode /Length 13452 >> stream xœÍ}]“¹qå;×?¢ßö^¯úºP@ïz#d…½![«µ=ÜÉ=l’C‰è±ÉöÏo&> yp‘ÔÌôjÂ1sy:+‘H‰DUÊ?Ü,s³ðõÿ¯Ò‹¿ú—ÕÞ¼}z±Ü¼}ñ‡&ÿõ¦þïUºùÛ—$aWB.q‰ææå›åRscŒ¿„5ÜøÅ]ŒÝo^¦¿9½<ß.—uYÖèO_—‹ .®áôú|kívqÆŸ¡{Ü—ÅÏ·«¿,Æœîù²-FïW’%cMŒ§÷|™»„e=½#t5‹ÝÃé¡ [ÜN¿=ñ…qY¼ßOæ·gþ‹½„O¯ø6»í§Ç|qÔìéãžZ¥¡Å­ôóIHMVíô‡Åžß—ua¹7ëY˜Û·Ñœ>h¨õ%pg%«ïŽ_Oôç-ìÖ9²ŸÛŒ~Èš¼Ù÷ÓÛ÷¬ îѱ‹nÏl£‹Û–=~êýxÕû!•ü¬9Ï£3RþDzšÕåÁðKtÖ@_sû† Œ§oÎä  ŸÝU‡è+1\<0&PÏŠ!}φ6ÔÁwÇ#Î=pËìš}·ÄàüéËó¿¾ü‡³ø2g6#þü¾ÏG©é!K®‘fìÛÜÁàWž¾_ñu†&ùàMѱÑLyh?÷+×Ôiõ¥puq‰[×Ñ#YI0V®’§j)¡0ügZs–|!)ý§ùø(Ç-wqÙB\åØß·žld©rÆÅÓw¥1O³[¨-nÛWêéërõoÚî˜|eÑ„-À¢W‰¥ôØ<­Û£µ¢7KËR:ðîËîc¡[vú]™‹.\¢oSñ#÷s‰Þp?åŒû«ÙwoëueƵÍä[^äÑøzÆÓí²®[kêr¾Ý×xñÁR(妶}·°ÞØ“Ñåq•Qó®ôgÝ—]ÎÍ;MMZÉtÙvÊ3ÍxëŽuq5<Ñø§ 8»ÄÒxª-/uÇÄ£>qÅpÌbnYÉ´RVx¼F#‘fëÝSÞ –¸°ê0…Ô€ö Ûz»tQqu;¼ÞPž0KÜœæ1ÜsÄ `Í6``*ÛEûp 4ôNÛä긬VDÄ™=ñôOe½-4ïßûÆS žþ²¯k›FO¸âo›ÓK˜të…Âä}ŸbåÅM´±Z)È->r¶¸/»†O¢«yNšx{ #aßòÜuÎä…+tQgýºÉö¾êÂ"}€ ØÈlaêêºîùÇ> f+’~.n7bMú=äñs6„i4¿]üªÄTšÈßå˜i÷Íi3ð±oùo߉ȓ·qãwÚEîºÌû>ß•Æ=Åce±—í+®D\ÎE,„Ç2D»õNÎùoΛ»pD¾+;ÙFSÈ[A–(-î³ø:Ž8»¯°–îº4´Lþ¤‹>Ï]Z&šÇC„}%vàŽ–-Â&Ͷ®Ž\¶ÎóY=£Ô€œn](”>~sTÚ W9{ûƕӄã¾ù¢ÍÒ(Sº„ü“̰7V{vÎKsæLq:eΙ2ÅéWçlÍ@¹+܉TSš”_BIJW=Ƶ#J˸û©G­/ÇÑ:váC Gîø†±#%Ï\½ Ýåž³÷é$½ôÄãí¥¨öÑÃ6ýø–sÔD"̧G±õ×D7Ï9šŸY]Î2+bXÝÊ“Š§ÒvóòW/^þåoNoïäÊ(vsœ£AZcÀ()s­cÎÉa;¦‰pÅ—9%؇e¶YæÙN 'l|ºYãNRþô¦!¸79©?FÄôÍYŒ§È'ïÊ©3¯=ѧ?Îí}iøyˆƒÐø¡öšò œŒ ròÂ÷å:¾¥Rî<Õ]ö¿ÛÁüWÿýøÉ3#»€|«.éM¡ó,…¥9{ {‹0ÿ'+\ ͪp¸ñtô\²l¼,–oÍÝšËnÉ×í[¶= “³¬7\¶¶Ù¸†òŠ2Îã]¤söÔÚ22ŽÝÊ®Ü(ÿ#7$CT[hP?1ªÝ•Y²->ßm|¬ Ãy@æ$$²]`ù5l±95'—¹å¼·­´;ÊãÇS¹ÎQoÞ`V‘qž0ùžMà„Ãm˜²§å£íwE$ÔÛ†“™ô=Á)˜˜%jxžHc­çDFmÑæˆ8A„›p5ž[ƒKLœÁåŠÃÃpü¬]™'xØmÔy¢øóð1ÈãÍ„¾Â¾ìþR6WÚòNL³q·ÇIï¯Ç[„õÏx~[#æM2Ž^­Èýb,Eä’t1.»S–$áË’Üý K’Z¶³%/ëNC}×üÍùvË™¬?ZœFm‰ukÉq:¯ÙÀ²¨,;Þéq>ÖCÁ1÷îçaóÇîÓ^M—Ò9PÖ¸‹·pØ"G§¥a³®gч*™Ü}QÁG«'À$½nœŸúTw« yëÿ–#M!“s8ZÖöÄÉB.³?ô=MîâÖù|Rç)ëÜÅÑh´)»—YûV¹1ì7ŸÏ 6Çë€Éa»÷WÖ‹ëˆ@¨\ ÷E‘ˆc°ñ¼å»b‡'GÑG1†O¥ ÛnŒçö|‰²¼³óS˜vg|ž%rz¿S–àAÆ¥Oz>iZÞÜóúÉ6±å'þp],‹é´WBëpÜá·¸^OTqÛ¤>no…fÆêÀ¢ðÚóù®]›¥cõërÙpûf8Hdߢ—‹rÅÛßåäë~Û°âhY¦$›v¼çÝmÄG5¤",QîÓwòþÁ8¶lõ²g‹Œ†ÓÛa[ßâÚMµúäIér*y(cCþx–ÉþìFÞã¥Üä4ðâÌ|‡a°Ì8s±ö˜q㽘|ES«᭡¨Ï&¶œl¡¼ò}þûÎÇÙð:GJµæ—ÝwµÃa;£#£’àMC¾ÈûÞžóMyÞÇåÃrï9ç$—ŒK¾Å?ùî¤þ{2ù®’ñÚ†dTóæìõ/æYÄáÐg=9Ê:B¾6¤é.?º&}yÚ™@y×Ó®Bž¡ÖÖÉQò6xÌ!î0]ÎÚÎ~Ô˜o³â›‹;ù€áëìKËqC ÃoË«ËrÜçã“X6×ÛåfóQ¾_æ—Ö9eªQÄ-ùP{fÛ·Ô|ïzN©ë°šÉ2Õ®áf¥ÀžÅ¬4L‹x°Å÷µ<¯”Oýç‡þó›þóuÿù®ÿ|?ýy×>ôŸ¯òÏ-ä»g³Ý>_õçÄêÝI·Óøm0[ÅsŠ«Í²¤úÝvxÔ…ãj–»ð®ÿLýç¥ÿüºÿ|œ^öÐ~ì?¿˜^ö©ÿüÐþI†pqκùF±:Ÿï8‰\Ëðï‹Ó÷åêV²£5j6|7GÜ^ã, Ä Ý¡ogd“¸ïü F3&M“ÙŽØN¢[½ñQ]}¼ØR=Âm"të’AëéÈ? +ïçÐóº4ÈÇ‘ÊA(¿ÅûÀ4Ñ•á¡ØüøSn7ÿ¹4Æ»¡°FJ¸qóÍKfHù-¨HN 2^~¬¾[ü˜+QXäcIÎmH‚ïó[!Û–?ýn¾O•ü,(…꜒Â}1W¯;•ª¯,lÎ^ÝÄ—êJ’ͱí~ºæÄþ§qI³úºæòÏ·Ó%åøÔïäãl|‡ÅG|‡e!«VJÀVú?%zåªÿZî:pÖ!bðÇþó© ü—ŽÞN/á8õŸ—þóëþóq¼ìÏ‰ŽŸùÞþ«í¡ÝsáŸË4tÆéÏŸõË>üeÛTÃû©ÁÂo§>ùjÒðvr}Ò,ÓŸ?ËS‰Ÿü§ó­Y7Š ?ŸvÁL½ëè{éQaÖñóîèýrê„JÙ2Q¶Usrw¿ê?ßuá°Ï»æÍtŠ ÿ0Žóq3ó»àš'Å3ôõTﯻÀÿì?5þ¬N8\óS‡™.{é?}ÿùÛóáG\ÄÊé™"äÔÅZÃÏ<(uáÒÜß½|ñÏü¢3EeúËÍŒ£ÍëÆòÍ¡°Ý³…‹w7^ßü´gyÊÛn¾}an(™½ù…˰Þüâ‹å é/~ñë†MßÝ m—U%wóþÅX~Î"¡`)ßhRñ²Z”ÊŸ.Ôn‘¢Œƒb)Ukøý×½JmîPWAPj§ýЀTAPÊó.RAë=ýuÄ®†Ž«¾Jñc™RÁ>F{ñ诂€.Ú„)ç’Rë÷%òoʈå,Ä*eüÅÀ VÄ®a¿ø­J­î7*;9 ªR”,xð}Eì=ƒªíËø«"Ø"ÙhQWA°Û~1¨« (µó»ñ Uk¼å‘*Rt¨ñ ”ŸoÑ£¦‚ÀŒØvÑóA?ÄGTJ¬òËÊëSHUìòüˆ¼u t0®IÑ!uìò”ãj<©Ë:Ê®@ ‘"å²Rª!R—#ß¡P¤Ìæ)[¡†H)ŠfØ\Z@¢¤uX†rˆ„…g¡iˆl‰l›G©Œà¸D:ÿ¢.D²TÈL)u ¢Å@×à€T¼ø¥2v¾Ÿ B€™2«„ k+8{iPˆWtjÖ_E ~3!¢TEÚЄ}¿8púHxÚÚ°wiÂ:,¿9š ñŠd}Éonáè5¤)Št´p è@~S¼= E 7šòÏCņÅVNÑò\ U¿Ñ¹‹ïT–މƒº S$Rëu¥v?,»Š õžg+*‚º}ÑßA©h.ýUÞÈ ê*ˆÔµR wñrlBh~ÛµJQÒå"Hu­ëÅ¢®‚Èå¹.–TAä,'ÌS*‡RA)Çïx€TA°ÅÍb2×´~7—ÕTAP×/ ê*êò;.À†ÈZ—@^Aª (׋³ …H–2œÎ€ï+Ö›Åç$ZJeZ¤œúPWAPW~¤ ‚º(m†d®#uù/& HFPʈŠ)R”3{püÍQ¼m ÒC„³epùt‘€ \GzD_ §Ê¨‘"Å©2êB$K­üê¸é@šQ+çÉ(QaÙyYPMC5´ò¸z@ŠßšCE ‘ÍQŠŒkï@Žæh/]Ñì‚Àø¯”/0lR¤8?F] ‘Fyƒ§¨Ž€TÞ¦sz ™è0sëHSc93– 8Ì‚§†€‹øi®µŠÈˆ‰º‘µ"(e-&m.ÊÁEA]”㊫ÄLËi18³"(Ey1®»Š@l²œ£®‚ ¿8=¡ ÈL 0¬ºŠÀ>d)9^!VvQGÉ1dn A)jN »%Ç;ê*xÞñÃÔU™À®ü66.ÀŠ`‹”/Z+‚-r‚ ž¯êâ…Ÿ:ÎQSAÐvÎA(hS0˜Ç5ÄF˯•5):nD”ÊJ±…¨«!b]l”%Ãñ©#RŠen¨X¿­ æqiáaãWqV©È!¹2j)¬ˆseTÔC%ʘ¾Uq¢lP "µ{<95&ÂF‰2ž:rEY2®¿9D¢ßt‘0dm"Fm§üx‡Q;)Åù1è:)Eù1žÎÜ9?F]ˆT)?dmÒ:¸»mHÙDÅÉ1*jÈ¡ˆ2cƒŠÒE¯U&÷Ni±‡ðZt¥Åêjˆ´›Òb‹njˆò”㢫´è9-¶(U©‹ÒbLÜ*}ôœ£®‚ÀÆæ9-F]A»(3ÆÕ7 EŠ3cÊZEy1¦o±aãX«¥Æ˜¾UDºWïùõ*öd<:U¶O 2.Š õ” ï`+›Cà<_‘A*G§Š€]³dÔUˆUeÊŒa 4“¹Š`{œ&ƒPÀïz'§Š MÛ6¬ÄŠ`{”'{ˆ1 ü% ð{E°E~E}Õ%Êq¦ŒŠ R‘²e\†Ó#gÌk+2H–?Ôž¯XO—â#´† õœ3[”Š%—“ºÜŽªŽˆøa9kF]A]œ5£®†H]~Á|®# 5ˆˆ;…– ¦Ãß)R”,oèò†ˆ†%˸+ã(Y†LnDŠT~±¤"[¤‰ïQ"EŠÓeÔÕæþfœ¦:"›ãl5äPÄ©2HPd(QÞÑO ‘q¢ B8š¢yE5 ‘j˜6Œz)R”&Ã㳎]¥ÉpŠj ðÆŸT/ H• ÃÊ;Ù"'Ê+aãD„2€Vq¦Œš +}ãL…ÀÖ(OÆUw ÒòÝᣳ† U”'cWˆåÉúª h;¥ÊuuÅ}Èã*}Ü;,¿Š@¼Þé7<=k´¸sƼ¢TF`ßÚ9c¡ @wΗQSAÐvþüx¾"%†Ú*Eù2æqp§|Ù¡®‚ ]”/¯¨« ¨‹òe\‰AoQ¾ Ó‚Þ¢„ºŠ 'ø›9诂Àôœ1ƒ®Š€.Ï3èªêZ—!§«øËsÆlPª"-¸y»GªŠ Q”4ã‘j@ŠÔfð‰ZGŽæhpÈ!²û!•« Ÿ÷>S눞“fÔÕ)—á0u ð™Úˆd©ÀI3¸|@ŠTyYVJ!R¤8iF] vJšqH‘âï‚¿¤9>PÆ ÔF¤HQÆŒ'ª‘FQÆŒ‡ª©0¬Á‘Rœ1ƒã¤H7drR¤8gF] -FΙAׄCÄ p@Š'Ì TCÍj‡T®"C#åÊxžªí<á›PV_E 8r71“«„½H©2®ÁŠPÀÝx .Rd¢E]Ã`äT\> UÊÇ©ŠÀªœ3£®‚`9g¡ Ȉæʘ!©kÈ áeÄ   åË5D¾ÊìöîR‘~w sÈÏn¬3GY²E]á(KÆÕXÔ#>Skصq¢ ž¯øt3¤>e‚ E]A)ΖQWAÐ.J—1‘«Jqº BÀöøM ÔÔ±~˜!'©†€ç™!¸`ƒˆT)?drAÛùÓ‹è­†´-é5D˜Îô@\ˆRQ‘Rœ-ú"ÅY2U@jâ€Û¤KeÒ*¿ÎÙ?°ãSÔÎ7Ùù£XÉ+g53T_=U†êÓ«µ®9,Žž2Qׇ¿É¹s¢ºó‹Õ†ëúœ>¾K¯Ï/÷‚ÿ~Ë‚†ß+Ë/O’ÿhTsñŸ_?žó·öõt¹y÷ðæló¿¶ÓëW_ßwúíÿw®Æ®•\•Z+)¬*µÈ©? µ¥‚B­ëUj-pUj-Z R:µH³*µ¸*µVêR©µ ëyÔZdžjÔZ¹Ì>C­Ò¬J­…Uj-èÒ¨µWa× .«F­EE:µVºáÏÍ®=Dtj­$à>—Z R »ö`ƒêÔZI+ÕÙµ‡"Z+íÑ©µ@À sv­hN£Ö"W§ÖJ£žK­•R»ö0\§Ö “~<»VЍÔZI(}µv Í*ÔÚ€«QkA×s©µRJ¥ÖW¡Ö"ýV£ÖW¥ÖYô™ÔZ”Ò¨µ@aU©µ@=Õ©µ’ĪRk‘4«Qk‘€;§Ö‚&•Z >U¨µ`¹J­Eµ õLj-JiÔÚ€ûãÙµBD£Ö¼Y…]+ ¸ µiÔZ*µ ¸nvíÁý)¨µ(¥Qk®J­Îü »öè N­•F=ƒ]+Dtj­$àjÔZtÀ󨵃”B­E¢«F­E]*µÈ¢*µ ¸ µíšSka"èÔZ°J¥ÖW¥Ö"W£ÖBUj-pUj­´þÙÔZ)¥Rk ªQk%_T¥ÖW£ÖýV£ÖW¥Ö‚U*µZT©µHÀU¨µØ¢Æ®ÜgRkAê9ÔZ”Ѩµ°ÀTj-puvm'àªÔZÙÜó¨µ(¥Sk¥C5jí@ÀUص¢ƒsj-¼ìøvíAÀÕ¨µÝK:µi µ ¸ÿž¨µRêßµVÊüÔÚ4«Pk®J­•ºþ¼ìZ)¢Rk%‹U£Öb×4v­hN¥ÖW§ÖW£ÖJÓuj-fUj-]Uj-p5j-PXUj-puj­´K¥ÖÑU¥Ö"W£Ö‚õ*µt)ÔZ°J¥ÖUT¥Ö"W£ÖW§ÖJ®N­•\•Z‹\Z ÖkÔZÔ¥Qk‘«QkQ×§ÖÊ¿ëìÚƒ€«SkEÈV©µW¡Ö"W§ÖÊuj­lQ§ÖJ]:»¶pUj­lNc×jtj­´G£ÖýVe×éÔZ©H§Ö “Tj-’J5jí@À µV¶¨Qk±EZ+ ±*µ ¸sj-PX5j-¶§QkÑrZ+­R©µHÀÕ¨µ`½N­•O•Z ÔM•Z‹\Z -*ÔZ ”ªÔZ ºªÔZ°]¥Ö"W£ÖiV¥Ö‚]*µt©ÔZ$àjÔZð—N­•üTZ+I³:µVêR©µHÀU¨µHÀÕØµ‚îªQkÑ(Z+BÍsصBD£Ö"÷§¡ÖJèOC­)•Z+íÒ©µR—ή=¸:µV*úi¨µRê¹ÔZ!õj-pUvíÁœÕ¨µ²1]+Ô¨ÔZ$àjÜZIÀU©µ@NU©µ@ÀU©µ@ÀÕ¨µW¡Ö¢¯Tj-pj­d§üÔZR©µ@ÀÕ¨µHÀÕØµ’€«Qk€û\j­”R¨µH¿Õ¨µ@ÀPkA‹J­•¤;Z \Z;pUvíÁ Õ©µ’¤ª±k…"Z;pUjm_.:»V47§Ö"ýV§ÖʾýyÙµÝU§ÖJ’§Î®í\•Z+\øví¡H£Ö¢Eµ ¸Ï¥ÖJ)Z+;¨Sk4«Rk¥.Z‹ºTj­ ˜:µ¸*µ¸*µ ¸ µ©¢µi§?µ¥4j-ÚõNG¦¡s¨(œ4Š3TN Å+ '…⌅Ӝâ&´ÌW¤¬ÈŠŸþ%Kytø$a)çTÇz7λ.›ÝHUÞ#)YåcF49åÝ_G8€é=ÚGË c¿Û”ß|ç»ùü$©"eÿeF4PîN'´5?{™7¼V^þêÅé|úøå‡×w¿?ÿGáüi³ø%Gʉ!4³{8©å{±´ji\ åôŧçÛ岑/W{úæÌo»EúõšÑ5ÆÍØÓ»3eGq£‰sz/„ߟùçæÖpºc8R væôðŠ®µ´PÐ<ýüJž‚Êé-£.Ò˜ÓcFC°ëIZòî|üü(à¯R·å‰qc°;ûŒú¿’GÈŒh¸ÿÔ=J#ûðå_þæô_H)±§OYa¤‰Àm2oe³6RçùnëÒ:o#Í-².[ˆkîÀj»ùóîA¨{EøNA-V”rgÜé¾·}—{bÜ7ÏncòÛéñ Ë,‘ÎÔaš P—Ð, vÛO,Íß@øßX:Ò"§¯r;ûºÅbv1ðKaôþcìVVG–> mÜöBÓeq6û†ß÷>=æ.î˺»|YØé:æjïÖ90èî);Á­.À•wﻥ¼ìö…œ}úîÌÜÀÅÅÓϨÇoî'é¯Ò?GÇVh°Ø¹Ò„&øèêÑíÇ,B‹Î¸>.öÄ“i4^îôˆN(}\<õ‘ç¿vê=Ú˜~Chh›¦oàùCyíqÒŠwrÎpOcB›?ÑšÈó‡Gž9A4}º¢‡lÂm³áÖÐpÓ²)Õ©òÑÓÛÚM’â WGˆ[O´ÑÛêÁ<S]á!ä-¿)JºŽXµ¾˜ÉlJœ,âIß§®ä æM‹‚(Ol^Ì(À=%S»˜%Èq<õóoê”~,(… ¼ªªEµ¿;©kPΆûcÆ•¨!*˜°rÚH~8oü¬5–™C“:Ò@æ™ãiV„‚R _ý\4;‹? cv²’_Æ_lŽäÙôoºl’K ÎgÓ-Å|²3)§p[zŸJ@54|³Øæ#OÎÖ‰»§êùhi±!àNz³ÌCG‡Ï6ؼ†5’ñ=˜°²–”÷VGÎçNSÊŸ¾=óT¦ƒ„-­NkžÊ–\D êm^8·|¸ñËZfíVì}%Âëc™ýyNHü}»ãt«Ò9”E»ñ *J¶¼^»Äå|KaˆlÛO¿ÊK2¬1øQh³ò¾îû.}Ëoc­‡o¿ë«¤ûåÆS"»dY¾-Dn ÞQMM–k–Ü:È Í¿)%^Úõ{×óMX:&´Æ>–‰gœwÓQ§õ¿’iÐEw”æužv”’#>5›Ä‡]~h Ûaâöt8ôŠxw›ß /«–ïåõ9þò§"N \*ö:±{e;É®ÆsvpêAƒ»±­‘·ôC[¾,Rãã‚äOÒ† ò0Ræ6WIi–¸Ÿ{íÿvÍòˆ{˜óõüXŽgáÄXÚþ®ÃÓ8¿sº£Çùï;§J;ŸSŽ8§þæóV&Öêý*€.t\oÒT}køQ–v Z>žï²óíbwÜ,þçÿ݃ãendstream endobj 175 0 obj << /Filter /FlateDecode /Length 4365 >> stream xœÅ[Iw·¾óùGðØã§ic_rм;¶_›y9Ø9 ·‘"‰#‹¤e&>µ BO7©ä⧃šM4ªPõÕþzªF}ªð_ùÿâÍÉ'?{º¿=Q§û“_O4ýö´üwñæôÓ3Xa¼³Êúôìú„?Õ§ZÇ1™t•µ §goN~î6[­•²ƒÚÀÙ§”‡±=Š·º=šÍÖjgàǧ?nóϳ¿œh;z—ÒéÙw'gÿ<<§ßG¥òðËО„7vT* ·Ç·mÁËÅwmÁ'íÑË}¹M;†^<†[|ŒO^lÚ£¥Óã‘oÿÐ#› ò¾]ÔÑòéʼnòÿ û$?›N¯ùǼíNœ² ëŠR¾‚î<šÅÇD<š8ªœÍ„Ï×›C{Ü·Çm{|-9¯¯ÚãÕSk_,R—íñO K•ý¨ŒÔe^ÔÚ²ìùM{ü¬£“ %IAè:,JWÐõ ŸþÄÄ!Ü"±Ø´š”º“J­Fu¿Ç+©‡ºözQQïÚ‚ejo‹çíñ²=îÚ#HÁ†Pì ê,‡?æ<ÂV^_vìÂÚ‰Wd𦭻Ÿ‹€Ï¹D+׋oÏŸ:â»öøÛ¢”ïÚ£8Ì¡=Þ´ÇÛî´“ ˆúE\2ò!B‡SíFë‚ÁmáÑOºô‘ýðùf«F_j‹žPµ±DÛh¢.îÅåQÝ-Ǹl½p€­˜1tn…ÒÐn¸¹œÞûáËM6cRÉ ÷wb“ûw´‹Ö@¦°Úü~c5¼¨lqA @Ö¦ÉùÁë³³ºœÜÈÜÎimÌÓÙ¿‡­‚|Ä»› £‚ÃÐûY“:=ñvøO«lðާP¨o g^ô¤.§M>o‰;Ø7;Ò­y$Í Pi ’q*"q\n’5hø:€œv—te”&CµÉÆŠÑÀI"F€û¨k æ”} #zVìPb&[Yº&Áë(w~S°Rv{þ… *”CãÊç½×mÅU£#ø;0E¬.’yK2ÈÞR¨Uí ”’“7`B°§Q Á°ØÿEãK0ðVœw[€6 ÄCN Tál¨â R„ÇÍÖA°ó—›d‘\ïRÉ83¹Âj<,hcšX @ЇRÊÀ>Ï`˨Q15/ÚgWHÓÁOŽÀo‘×0z ‰¼zñÊ‹••B¼Å·Ðщ–ñ¬áXBJŒg‡„+ãÏÉú€HÄ}AbîÐû@°A#›°G Öõ`e™â“TðËfAÓ©í #75˜ôá5L°âmSí"0*ðÅé/Û7LÚ™÷̈I!XGÉE)©[!Z” ç­8Û9&º ;2>tLxdDõ$ @:»„rèEc»~½å€kxÕ5Ù~Ôxn@£õðfÊŽx^½æ›ödñ)' Öχˆ&§Z—òx–—;¾ç :ÝoêcUÖo¨, K© ¯› ÙDŒÒ)^ WLð:ì^“o àe÷l§LV§âs•1aÅGH\JöÁx…. C®Ø–\ N˜ÏVy0‹û†ù[2ÈÙ¥‚Ž,Áákæ=ã¨ë) €íÄ 4ùöèŒ9âÛ*g;tØÐÏ-Ý;-‰¿dÈ9?f(Ñ ääÁ ¿²t[stüBø%¡)¶qoCì„Ɇx—'dý(1Ô Ù(²¢~ĵå»g¼6&ôè& žf‰§Š¶kã"\ åYÒn¦$}„- b2Gç‡o1âˆðw¸c–²fóG–¼ä¨wå¨ì?q»päÅëê[’­3. ÷â4$rmÁ’(T%PHæ bÉa&÷xË {-’yZvÈÎÓã´òôÀœ&å„gœEZ— Å*ˆÍ{†õèp&رÿ ¬†5•’M3‘S4ƒ i^dX–­z¯øX¡^žD®X¥}WÍjáºæ+1“3. #×å9¥õŒ}‘XÈ$¬ø.å¦î„T¶½ä£ÃMûb“IUìÓ÷™$ÄXMètÏ=Jñ-äÍà:½XÆë;þ.ä>œ2êà7NDô÷¼V£ƒïcÚLö=®? ÙÙ}[ Ô-ÖN‘™ü2`*0Eˆ–òù¨½>†#oÐ{I¤¥"lÖ”)¾µè5‡g»^E‰¶H‹ÄéßÇEî vgçØd:qòxúƒ,Jn[_ž å‘jRÌœâ~àßo0>Aöcû2¤ õçEËÙí± ‡Z J´Uû¯Ftˤ15¥´°:‘.d¹êrÞÞ wALÓ[pߟ "c‹Æ”øÊEdË CLƒèµIQ?ë#ñv"Ñö¼!H‚å[pÊ4ÛuæXÚ6ßûLX ›k3dͺȒ!o¢žöÔò{`±zµ#.®xc¬µúHˆo±ù­õù‚dü±«BzßvxÚò$CçU­yvÜ‹Öe˜ö…?‰tŠSææl¾füP©}·ái§Ì'v{>MÆà$×;Þ0¤¾¥VÔ‰É(ZÇÆÔ3æ; j3h@egÛ(«Î[1v‚×2vø©©î !)XdK§ QÛ NO¸4u°^É´ ‰8í;,qöCƒ.»Y,¡Ö[©Âß6Oú ÓÏç½Þ…z‡mÛhãÖ:””æF›LÐkp#4^-Ö»\Ñ.gè±jp µ§&íi-{0 ö_JÊ%‘r,¦oÂ!£Ç¤ÝZ" @)>‘¿Ü”Ž®BžÝ˜ãÙ¿N¶Ó;Y*Hßó¢y¼Ý)un­{rɇ Ëqv¸@€ìP¶È +¸©‰ñPö…Ïvå÷ÉËn€¬<ØãÄàºÁEov´F8Q-Êâ±k#Ô= bÒ&1…õlþñzP8Áš”Œ>RW®Ÿ>r\K—Þ.5ôŽ{gºïÄÞC£1ënRªÙQëkG‹¹OX=?EÓ0ÈV–DfP2:ú¨mBuT¢„ ¯L ß’ÌmRU)ŒG'³Ç1L¼í;¹»W"Ca(ˆRkËžëj ½–‹„g5{u´ïùF¹¡ ¥ŽvB<Ç=Æùàg/‡…8ÎÑd?ãEs€"kë¨#K\X¶ÆôÊt”A1+¸‹˜ç¼TÎDJxÇ4n4FOœuEæw ¶Óòm¹e€ß„zÇà9‰‘gü«pêæéÊ’É]ÜÍß:ðEÔlò`ÿ¶ØUùìªøCpž—{-ß`ñãôГÏôÊ»ÚÚà×7x} }ž:Öë d³ ·°ze Ù)_øöoA?”ð˜Ä.ºdlÎЕúz/Û^¤¨jýäRèVÁ5+^%ø²o¬ì¼h®Û2¨1êêBšò­Èz¦e?u /R‚ Ч’¯˜±ÈÈ®­š¸Yø9YLö6l[?MZYEŠˆL8›Ã‹ `¯/wLIººo…iã ¬Ù“ ´4ñ´÷«lÜ,YùlCQÐá°‚:뮆ݔ-]Ê-1ÞÑI³YËÄç¢Å™5ßnÄãb©5»ãqte@ô{hþ(Õ~”…Jt”Q–÷`îXÝÁF7OÞqsœ2êÄ©ó ó°C#.³>Í­X.Þ&tÉ‚ˆÌbˆ+É#ó\)Ø…T§ Ýs0¶…ŠÛ—ÈëLjEq³;¶LRÎk³¥Ž½ÌˆëipLSÚÖ/¾ßÈöi*ç.'hn¾$šŽêÒÉ“ÏäáÐXãòÊ>ü÷í)*掟‰´tä×h7ßíDU¶Gƒ ™¦¿ÙÔW•HdéÛbXúñ UƒZºqE„u¦yöGßo*Ê¥*ojåڵ§“’+|'¨ægSa¢á bõlÌåu•E?oæL'Žo ÇÚ=\²pùÈ!Wºù+ÙÅq¼Vm€Ynü0’yÈfDÓ»¾<ÜN æBµ,.Ì!XÀ0—oé0Ÿ •;a¤LÝÜp6íadí]TIF0]kY1å•1Ï;Þ9:š ÂkȾoØ$&ðf—Ê9š–ßgÚõe+0Í,¤J|ñÌŠ‰ˆ¾òÔ0y(¢Â†å5?{àAœƒ= M‚o$¨·­…޽Tåû!má<ép,‘Þj™RÓeÁî$÷§»'_B~*g­…ÀllÇÄËhS–’†·êÚ‘uR†ÖA¥àÕ èÑQ{b_b%$Sy}P]&Gí6êRïq7ßÛy7æÇ‹ª‚Õùé¦2±›ú &ÛÄ;^7UiãðT]b(;¹"˜£9¢#û©1'ÉÉîàŸ«¥PØ#%@Ð8›—:Â/"Ÿ©ëͬ”ä]q'N+=?«:uýÅYtD7v!ªÞÒ ;_éÝŠêúM&gx¦óa=fãÈ }ÔÊ‹µÂ±\lZaX‰Æ~ZËÖú¢o¹Ô…°;f#åÐOê§–oð÷€f½v‡îŠ7À )ÇæeˆJÏ2ý+Ã.,g%kÝ箤èÔÍQ¾óƒ@ÂÒôwå6Ó‘@0S·lerhW=¶¶Ó¯eãOD¶/ÙR” t½Úz°)”¦‰^«EM°Ò¾œ:vJd9¯šz€$²¥ÝôUïÀŠ 7“ž‚ïmP1+n˜TÀ|°ÙBìÌ¡×ÈÔ“Cm1–k5åšS<ºþbèšì‚ËêöËÚåæ/›¶x¬ÆöäP&±w¡ÊaËŸP\úLT¡{ͬMÐÝë› Rf a*D?¸%Q t ‰t3 ÷§;02øC:7b?ēԑ\ü—š$Xv¯fIH“¹be«#?]§p ±ˆT½#¼pEEdÈ]Ï­y›–,ÏŠJ"\3KòXíC¾®K7×W’H ¢ÙáÅCθ2âÝ=ú³£ñžL"ÏË=Ÿ‡•fÆïŒÓI‘F·Ò¶n-¼\u`B±k÷ÔS­rIkßP{{œé”»Êþhúj!Å;ÊÄŽû6ó¦òRß&Ê çXîü?°3qm+™œÄ4#y> stream xœÅ[Ks·¾³ò#xólÊ»Âû¡SèÄŽüŒ#1ÉÁÎaEQ#‰K‹’E‡üõ|ÝÀ ³;$«Uʆ˜Я¿n`9V}¬è¿úÿ³×G{|qs¤Ž/Ž~9Òü×ãú¿³×Ç_œb„5x³É*ëãÓçGåS}¬uÜ$“Ž£rmÃñé룟†“«•ÚØœ¬óÕZm|Î1šá¯ƒ¶:çá ½ŽJ¹4Üà­O9*G¼uJùì† Iî‡ÏWk“ô&©4<Úà9¤MÌvØÒ§¼Š4 yT¾ Yr2ÎÈY.ñÖh—œÞâQ+!M<îŠ0“¬‘ó’¬XÇ4Ô©æûyh_¥ÔÏ+ü[a±ÊY‡isÊþï§ß@u¹W]2¬*u|ú ÊzBƒÒN,§M¶[y¬ Åá ’s Ù¦áý]åäâ°m¤@ÈŽ>èNo9[ ÍŸaå9ntü%Ï—sJa¸æÑe4ÚbõÁ›Ùç+¯2tòz5-󲩕‡ ,ú=}¯cL™–Ž%kë÷%ÑL¯HÑpœäÈà´®¬¬ÜЕP 6'¨6–½Õ×/¤`ÒvÊ´µÚ¦7Q'2ÂZG½1&¯µÝx—R§|…EŒâù¹.&Ã/ÙG’66F¹ñ¢t¯µånƒýtšýrн°W«µÍþ‡“•qëó¸ß6³nŠªðA„Ñͪ7ZÙ0ÇNVzòº>`3‚Â¥ÑéàànH&x¿2“;ìh>‚ï›(,îµð—s| oÐ^Ó?,ÙtØ=§AAÁ8‡<>¦s.òøëfÇ7m/b[Ò.È…´¹Úœcâ iÔn4úù]ÌÊáïÞ`(6%¢GØé]³Ó²“U9H¡7EhV~ø¾ÒA;¿ž+ãL8àM1o.ŽPQèªÓP`ìäWØO–¾/ü²…[7å|,*­Sê¦áf¼‘£ù b¬íÁpUr¨X¿4®† LY­F.-6|-œ‘¬µ6WˆU6¤bµ:â‚a_)hHòšõj"vñ×|›  ±¦Ì‘]ôÅ”ÑÆq TÉÛ‹]×e_Çkƒ¨Ò¡¬õ«U²¤D?ly}Ù™~r‘ ®Ú¾.Þ2ˆG ¸¡|Ðö€xqÖÁ\ÃïE¬b%NCWÙÌRQ2_†ÅDX”æÚ†yįͮ7âu;",¨3&Æ,ÙyB@à›ákš"ኾõX‚]H‘poC9~¼{ÉP Œ ü!À®[í 9Û[a´IgfxÜü{ÔÂu+5ü¬¼àò*oÝlÅph¬ß¤t •î}ÆR€}Qޏœœ·RâÂÔ®ÖØ+Ü)'× Õ®z¾j–hÁxS'IÁƒá½Iì’µãbEZ8ö%§—È'0¬q¢‚³\!@SPþ%¶C²Q³J –ò¼Œ°H•U•ðDm$¢}¨ò²_j-dÙû@üUî)=¯Ï »y2.¬á^¹kIpØTP4â_Kß"ü„@s¡zÎIGGme¶’Å?ê3 9©bÃŽHÚœ”²Î¶Oöœ¬êV¤*oïUQ0;qUB Z÷xi›¸¹À"+T®¬ž9®-¥z²DO‘•B ²HŸ‘S|LxL5>ŒÚ}ÿ5±ˆ…¹–šl³\nóoé­½†ÃsŸä¼i0{#‚¹5ÌD»B4Aîî,àMYäu*à^œÖµ^«kó•Ž·ù{b«b‡¸´ñn““¾¥£0¢§öù!Säø]a)› yƒ,ªyÝ;îY'G¢f ²®Ža^t±öÖxð2Yât´7lŸNéá)7Ï}²¹âû›¶½¥P!yabôóü$Ѹ¯‚˜ ›ú¼±ý»*Z/uñ…hiµЙö(ÖtSÄ!Åví…ËæÃ}YHƒ}ö—ˆ¦Îk ŸQoŠãFárUc…| ÐÖ$ËÔ³“oïg èÑ2â</çÜÜ­šh0ŸšD…ôøjñˆ„9³s|=y¾°žQãq%=,?—\üàQæÁRD ˆ#N²À3+ê"œÓÙTwtLe³±VL'­Ë‘3’’ÞväóÆE€½ÖŒöp¬à#RЬ¹ÎÜjŸ1ÿÇbM…jÊuWè–JžmD«a¡ÝHSÈ©,m*E´4w}`Ž«˜Sø­ùÄ5Ä—+Ù2×*²wAúÄdöŠu w;ÜÈš-ðú`°z`jílÀ´¯‹Ã]/щ• o\ÕwÚ~Šjàî¬!’/…賑:û=,>°¨§™ÚPn#mÚÁGw”z· pü׌†Vi¢à(lJCUa~F~"Ȉ¤¹%Mð£È<8aÒ8Zc*Q8ÑôD™»ï$áe±XH2çHrElæÉäÛ™.HIt‡#q«=ÓÞe0ÂpTHVònñé:­ éšÆ³JGl©­H£ƒg/kâÚƒ KmE@ŸuÞÊ+Ñz¹ë9yëBª›çèCØ9Ýoʇóºy`=†ðN‹zd©Tf»;dp”tSçêÓ ×¨|r;+—ÃJ§m¸=Üô³÷‹ÆÞrJ|ÑØî}\47Ó‚º•MZfCI÷˜¯¢²‡ƒ)]¸r…Jžlï4‘•äýÏí¾)‹¦Úz¡A/ÕqÓ acç|õÔdfÝ,™õK‰ó-ñs(3ëáÛ)ÕŒ«÷ðŒÕ+˜x9Òû•#‡¾Gê( 'V3ëw¹ùµ˜dàùéV,ãNöûfŽýˆàb¼F„Wþù»I â®Ë·Í“Å~gÖ8x°ô‚ãW‡1ÖëED¦[*Ƽ¦ƒùI9HZþ«¨Æå³-5g2 º_®¦³]¡kq@÷luð¨ýÁ“Õ,YÎO$‹é˜mv­g$êV8¤È:· >G~Èpþ¥­_,c3>´ÁiBÇ}Ò'‡¿¼4jO"ÆÐËÄô¦¬2€È?Q(:º*î EH,çk1…¸Qq0ïð`¦8/Ó€Ù̃QσÑdÇ'•‚G‹‹ —wú_)jµ7}ÙûªYxwqÙ* Ñ‘¼“mß”]P/Y»èa”¶­þ@qKõj´‚lfX>?y¿òƒB¶—“åý§)½jn4êºGÙÈDr“ó#Ÿ½ò …Ç‚gf<öSÂhEý×øsÛ=7]ñžµØŒìâ•Ë@\®É›­|G:qÇî–kƒ|wà ã]ië|Oy=Š[Y6îýú¡ýaœæôi Χ½u$àæ£9ä• Gý=Ë1Ù-L±x¤L1ëÚHÔ( ä‘ ´]«4&|þ¾þž¢ ‹ÎÛ|>–ƒ³þÜ<ØözEû‡eȬ';å;„å _£¢@d ÏÁ ]¯¯zóýš~‚ô¸€ðaD™Ì,—<"d¡+w+ºƒ‡¯¡õõ”æÎVý$ÉÛþ³7ð–jÕ²—8oHŽpl¦#»:“ë:œÝÏßõ+Ò}°j~7a­Äõ­ÙyñW*t£#Ñ¥³±K¸÷û ëIYYžµ.¡ø…OiD2”uצɮÄ"ÏžAÏÕ~%JÄôpBkìGkò¬aèó&›Dç[€—-äkO'ù_žýÿýóü–5endstream endobj 177 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 7830 >> stream xœµztSWÖõÂz怕l O¦$ôÞ5t0`:ÆÆÝà^„»-YåHrïE–-7ÙØ¦˜â†@H€¡m¹Ï\ÏÌw%Ù$³¾™Éü³¾±–@Ò»ïÝsÎÞûìs…€êÞ¢+×Nœ`þ×ûü@?¨ÿ®Ðë^ËÛ“m ·zwß=hÄ;~Q?TóÚЗ AáÉ ‚C¢ÃvøúE8Žðé8qæÌéc'M˜0Óq^ wØO÷ Ç•î~ÞîäM€£s°çïˆhdzü""B>?>22rœ{`ø¸à0ßFŽqŒÜáç¸Ö;Ü;l—·—ã¢à ÇUîÞŽ–ͳ¼. ‘Fx‡9® öò ¢(Êi^Ðüà! C?[¾8b‰té®e‘îË£t=ÜeÄȹ£{é36vÜø^¶5„r¢†R«©aÔê=j-õ>åL §ÖQ#¨õÔHj5ŠÚH¦6Qó©1Ôfj5–ÚB-¤ÆQ[©©ñÔ"jµ˜šH-¡–R“©eÔj95•ZAM£VRÓ©UÔ ªeG‰©·)–z‡Š¤úSö”5€H ¢(Žb¨Tª'5˜êM¥PT*ˆ²¥‚©·¨¾‚ž‚^ÔjR0ª;¥  þÖ-VØG(òݻ߳Ymów‘Aô„ÖÐ?2s™ƒ=ú÷øºgX¯½þÒ;¼÷}<ûœ³õ¶=öÖŠ·¾é;¿onß¿÷ °ÛhwG\,~õv#Û•¿3üã;÷ûo¶bÿ­ƒ‹CÍ€AŽì?ðì 5ƒî¿»èÝ‹œ7W̽– ’¸Jê§:f8~?øèfÈGCž0ôË¡ß å‡½3Ìé=ö}1¯´mOÚlâ—êõíó„üölZ*+bA)O‹ÇžßÛGoòŒ[¯fè Ím˜ MU¯>Ú{¨‰Þf¬Òir5ZÉaÔßè8«Qhå pt†.€nÒ]‚=p«[Tæ%Ñ´ÄgÉlàsYdƒoØ`©È–ooÓ"5Ø¡n‘÷ÅþâC¨zÆârÚUKÈ5Ç´ÕPEž½Ûúì%28$A+è_/Ÿ<.oýZÇÿËk7B¨ëäLÃ}04Å—ìÔ¯ùà²=x%#¾þ’ƃe6´øÐ¥ìÔ-ÛöM$+ h¯ÉIî¢ÓÏæ?ï/æQßEjºA›ÕÊ¡¾¢gÓ6,ß2 %“ÙgeÏÃUæÁø;ø®£[@¥èºVæ+騤Å/}U²¸ð~9RSûX“Ýɼc˜±¿øéIô=‹=Ñ4<­BÓDÄäBV‚ äIj.uœ‰À¬Â›v£cñϨ mÜ} NÀïë9m<( )]¹%Ñ%%S( 1…Û<ϧiÓÑÑà ~ŠðT<o'¶á &4ÆÀ;´„í^]DÅwû‹Ÿ¡¹|oö‡™kq9Kî&ßîðë*ênM›¶ ªá˜ªñ˜Eçб-ë¿õúõGÄ"ñ¨Ÿpw‰øÙlpw‹”2:\Ä¢pºöØ‘ÚcÀ\9;Ûà>OŸçé­ß"‰/ èI:ÒÁÔ.0 wŸ?6¶Ïa*é®vU°›ÍBV£µx šˆçHðÛud-Eä÷X¡ñ\ô9\”[x`uÎT˜ Xåä»%2díš÷IÚùÊÎÈG#õv»ï¢b‚õÛ|ß³,^üï#åOIiï 6âg5 ç>ˆ™!£ð;¸ß³÷Còt ö0Ô2:ÀâÁ4øGKÃâýC\€™¿ê!¢Q¯Kw¯Þj™² {A÷jØ-@ƒ¢-F4Ú¨3 Ñ lWœWE-(Ï&L†ÇEÌÇsÁ@Õ?¢ŸåùO“Qi˜hª,`7¥Š¬”`Eh,T¯+ÆÆ( FR›Ž3]<°åvüÕ…W÷û‹¯£Ñ·,êFc‰¹ÚÞ‰ýN÷½šVm ìƒVا4ç`=O•×$AãM~“¥µ–Sª#!” .3”óëëj·sâëóÁwIüvRQGf« ¶†¹Îˆ†…üÍöYlÇá7ô,ï*­¨Qwƒg?<†&ËwÒc  Q‚Ô÷ér»žž´s47evÜ[„Fѹs$`[ž“øiev ưOP´1â“þâ‡È m` Š;±°€Ùäç9{ºï©o£8e:= ˜H–`{:Ró24š²2N«miÙA÷Cêrgúð—_¬KÌ—ì¬÷ÊvÏ&J圷¤àô€Æªý÷Q·Œ‰ZN“œZ` £Lò³…vi*HLà”Š¤d…Ò»ÆâHõl½—8ûWK%â‡õ¡5ò¯ãI~ŒRS²…™ø÷,*0í¡_cqÿè[ Ýç™LdIÐ|zozÆœ‰öQ¯S‚'L_ÉP@=ýH'ó‘,§Å­¸;'/Ã[Ñ1¢ ›Îüöx"þoeÁ¿~ý‰à€WáixvÇîh žŒÖJÄqWàVÕîÏWìeF4\‚Mh†^ðëE4€ t?ŒECMx(Z&RÏ t©`¤ßâZ¿õ4±érÍåóÜ©°u4±6>Kàq gmqŸ›Ðn“m…|;ÿ ۤͻÎUšD~ÊyD½a.øY¢ê$=NÀm(þ“«~—‚Ÿ«¤ÑíkÐhÁO8ý‘°E¨ ýÙUDei !È›þżÉN¤Ñ°<ýqJÖB„h<ü ]ð"zÊÖÅó§+ZÛ8ômç77@9I‚GѳaÉ£NÂÁšÚÏ[ô×N}ôPˆ¤æøuy7¹*sd³H\^0«3²*ú¦®32¥ljÞóM²ã½p³sÏ¡ô,¥eÏ•²r~€IPÆÇ ù)è>›SQrà‚†1Ѫ u„Ã6mŒÆ|OºYQ¬R(dïál{ÜÕË pµU{¡”€+Pí¬Š€ðÔj-KÎAº¼ ÃÈ>3^›Vž“žKP‘+5œFÝù]&Á~Ô¼/DŸ¢ìøÍÎä‹á´/×–_WÕ¬–îˆw›wÙéá/W.]Ë“h²Éãv3üjz!œ#OtSy«]À&ƒ·%ð&úGHð#òèc «Ôì‡þ޲¥GMæ°¤$,)«6ÊV“ÚMÞËA•–0çØ@õŠ|µ2ª÷‚ž<#H½IÔU3«r2äyYQSqšý¤OË'KïZa̓6h|­+ŽB¾2ßÙáßì3âu)æ!±ú¡Qû´„øòéºàEË! ˆ¬•šÒ³ PÌTEGDJ][|žÛêT%g˯&¬áI³Ñìô6>‰7šÇˆ(ˆEÓï´Ï9§ömä<”ò@H`BK#kªô%u_ÍÙûî7S¸/'~‰ßþië€zÔ;77 ”DAå*.hܲD`Äü†ÉÐT‰íë¼r¬á+o ‘¼}$›lP’Í1xö¯£¤CÀe˜e<:¢m€8Òå/‡Akµ„oÒÐHþ×n ¯y ËNÏCêö>öšŽË¢.V5ë¾"­`/| Íd_ÙÅL<[  NÆÁgìIÀÈ¿m´Ñç¤Úø÷Øœ<³à1)Íá+"žjceþRÖŒºÓ#áúŽ>É2PAšC|)º+*ANÄ&ãž»Ü0C‚ê)êê˜Pwúè8¾ï§ìR ÿ½gáý#ÄqÔ´½j½ùCFb‹ÌÈ>‡vëTÞ»Ó,*YLàVWév3€«Â÷„îWž"æ°Y{¦öP¹iOà "-q&×¼²ÏhÆb2¬ÊVÃϬ¢¸öIlr¾ZEôQ@­¨ôê"u…R£†(¦£ìO*QBg¤iÔér~LÇ3ûœD: ˜BÈ*“ðGèjh}Aê§Þ¢Ú ;a‹ÖÏ êà"é˜C[1XŽæìÈü˜|!̺î(ƒÍD#ïwó"ô’àä],ªtPþÓúg„}Ìøa¸Ÿ„`nÀËQd`°=„„e¹)Ú´d• >ž¶a0‡éY7ñõ?›!®!‘‰¶ŽA{ªÐ9óÐ÷µ¾¢Ht‘E³E¨7¢n?ÿqÄwø] ~õ‡QþOZ‹•°¨Â:>¡É0x‹ "O6OôØ£­=}¯A…]M[ä54ÿZc›Ûéþâßd( Íe§ÀóŠjM}‘Q’_Q³˜0<"Dí&IIŒö$@b¼XH‡ŠýÞàýÊ2`ž^¼x½9¶9¬BÒ´»)£”°*tj™"M‰LLAbqnYVEIb½W¤›ÜÃsop×I·hÑGnoã.IB\ôNðcÄíx›"bü·ƒ'³à§uÈõüõØÆøc›j¸ 5k`ÑËíªñOßeB“aø"ûþ¢cÇïi>¨“|&ººÃÔõ 7”Xr,´X½¬uû†ýÿwŠ3Üœb¼ôâ<·mH}P›ÉŽ õHlæ¼ø¡ª¿ø5Š@¯X”OCät¹ÚZÐóuWà÷…€GHž'°Ï*oœ…ÌXtçð—ÿMºË%¼Ü90vù‹LDÓâ¿7Õ¸c/ÀXžû½÷û~*¯æFÉšLÈKArªZ"_è[ åXüÓ„[öÑç·4¬+#n½Î2-£>¯ì®½úøBñSô1¿ŠÅŽæ¿È‘!3t¥©^sB[I䨱+MK{%âŸÓù=l}Xyp€4$4Äjª1–דŽÔ&5µO¨±;Yz}u~IÈô oÏâ·M+‹¼NÀi‡K'ÎÞ@ð ×LN#y^çx‰¶Yæ·Tµ:1•ó[X뱙߄Ó'žq|þIžâXâ¥Fü´:µ.µÆ§<4—(³pó‚éAs2ŽlàÖœPžW7©sS@Ù5üºX†ß,6/‹N×pÜ´ã¼ïCÒzÜúu“ˆ¯Àó¥w¦ëIJN“_ünÉŠç“¶—Ë.˜‹écÎËs^®ç˜=Œ#íš®}&ÛDQXJºT!šZÔ€FC)e®ª\2ˆ`&v@üÎ3@´_÷ &^À~ &<é!P¸ÛÜ Æ KÓó Ë€Ü hg!žj94°šKÚ"xuAøê QˆvÕBìSïSýN”ôùO¯nq†h‡¨E¹®Fó™¶œxÄZu­õ:‚÷q,F‹íÕÚ´Lâ»Ò/ŸÉÍ>w¬E[nöžAÊ&.{¥6ÞÚ8ÊÔ¹2H€ÈøDâ²c[{>â™”LÓßjØÚMfÃËâ!£>ã‚{ÑZŽï÷§¦¼#“[ úÑS$*átzÈ} ºB7À!s?óUoUí?تõýC?³¡]@”DxAˆ>n_ÆþÑ®–Ðo’u\k#i£ÍPóÎËÛGؾUØ.àï°…ÍÕµ_™“ ò´Xö5ÚPëÓÚÔå¡Ä.¥(å*9^Þ±Ë;óZy¡eB­=Fó•‹Hh[a{׿0{Bo×ñÚ>+*CY% ÍÈ($mñê?f[æù#ÿ—çÙÿWªÿ`^žë›sðÛoÎÁXKÿ:ßšÀÒ×áÂ׃IKOÈÝköÔª5kayW¿Tëw’ _®L! Õáa§ð êtU&†ëNC•%‹-èØ®õ°®9åïkøØK:æá©¼L­#NG÷/¯¿éiù>È¥£Ý^—¬K*RŸ¬ô4“ϰGtdZ?t°~j†¥†v{ƒ`ï]”}WÈoGWX¸•vËïê¶f»ƒÌõç¿(m6|sÓ'îŸsàƒ+‘Gà|S~ðûú‹7à&ƒ}ñÖ V£'𜇠Ù'ÊP¯k9FbÜ.D—Èu†9°‚€~±lyܘµ®æc^%@³é ^€B® QkûÛl%h#¸•Ë'ƒ?aMOnÕVÅt‘0'rþfSñ€x•}ð ÓTøÓ•yÍfë×ÑË—?›ì޾Dn­vN|}õM@Ü™ð܉&Þ¶ØfÞøIÎGAWÒ˜¿¿*ºÊ/Ej%WñʼnæÓÀ<>ðÁÌ7ÏZ·R‚×á2³¿w¿äiQ šOÌuZ`ª[R\jÊR¢–ÜÕ\&ƒÇ° ÔóçÏv-¨û´_ЇOæ¼è/Æ:€^²wªO_"º3ùäè÷ç8ÍÙiˆª5é µG] Ž3¹PÐÌþO¥UkBÝ$[w(ÃÔ)êpU*¤¨SÕĈ;d²,(áŠî4/‰- rÛ>·ä3?IcšÉ{˜¦}P¸¼Û„§K‘Ù>~ü G wVÜZnM0`âÝI†[¯“ £™ìsožÇí2ëpé¿-p¼S‡;߃ç¦áüV’ûÌØd¥ùŸéØAðŽŒ&+EHÉ÷°±„ŽºýˆVPÿ»vGÚjBQ‰Mã×£m,ê5ó9¦¶nõóåÐFZ/oH­'Íê­K 2•©j(Ó$‘É["—€'lËr)OÑ©H¦™$H‰•à#t4¤fiu™é\^qó‰ÛÐÆmÙÑÅ>Z/ØÌˆ_t w÷ò ÝFX¹öxÌg: ҀJŒ••1Æñ~©Û¦^…ºKÄ¿!æ—Ø ^R¾ µ ~e×€zK WÍ/ýÅCcùûì™ðCÛý¢CBCKBšô…¹™¤¥k5 0ZˆWø§.X±R’˜Hv¨dR3yw¿A=9´áÿf™%süŠ»÷ÀEÂïÿBÖ‰'ý€…œ¸c1ølŠÜÊ ^ø»ÏÈ‹¢[á”27êŸ?*> +M\©l">j+lŽñ tÚFú¿Äåü×'ß?ò!ü+6Ç|ÖVÎ`…Û‚ª@QÆ„‰vbÒÙuÅ9ç ò³2o@©§§H; ¤;'â;±Þ#t=|årÇhøT÷iö‰ôŠÂû?·2}y •˜FDU#ŽšËšÎoc·Õ)vC sö‹–ËWÎo\°Ök«“gˆc¿n>Ò˜'“NMþÁ¼qÑZ×./±9ÌHÜÓ‹5ASG üË’—Èæû»¿5Éy·pQå±¹Ë÷1ÃÝYôÖ욨Ö@Xå0oîÆ™S|~÷týùo[­éozr¯‚fNÿ²'Èë‘¶Bt™õ§qÂÐmkbÖkw‡p³kKLáEÒØÀd¯%'<¾E,±ûƒ?É>2`ú«Ië¶D»nç<\#Üa.ƒû}7uçÄ¿…ý-§Ü÷#6¶AÀ¹èf8 f½l-o®>º§ ‘Ÿ†%®ùþé+`3cǨɜ¹¿BÁ¯÷_ Ñ:Þ–ý_® ßø'N Õáõåh®y¥ÝýWQÍ?ÿóÕâ§QB–šÙË祦üȯo!¦Vuu}†3´ ÑpYšx!î‹í¬I“§+2s}…ÄŸqÇP·|$„{æs ™õ0 óús濉 ê"*¼ˆ(£ÿ–µB­‰àbD± Öȳ¶ÛXḛ̀1ã°¶û~Ü‹ŸÔ¶ÔIr7¶Eíæ»Â¿¡<9à©x9…'ã­x5âðGÈ¥í|VÑyIU&êÝÅLn*ÄrÉä¦*HSNó>–ÌðËð;h"ZŒœÑPôšÞEsp7,Ÿ:q©+’,:ÌB4(âw¹­Ø$fÓ}$DÂÏî_©ÿ$Ö¹IRE†'óSéŒrth:¬ð6û„üXc>Í)ìB)®G ¢B(‹Œ„¨x7à:¾ ›ˆ¼ÅC”^e…p]x.xñüés!rãÿÎVFVK¥ÁÁiM¾ª’Cëß©‘‚#CÃÃõ¡u5C ×ù?6Lý°Éü«.ZñÄ<‘Ewùaìᬠ®ø÷ÒØ.9VmŸƒø®Z¥‚ø¸'²ýtßçuMIzÎC%†XfgUBYEEqÝgëZæÃ½6a‡EÿpØóÏ®ÓV113±œ0±‡•‰nö|ø~Ï."çgfçrZ­F£Ž_¼ÊÍE"—“]),$Ì¿yÑo"F ½Ì¯/‰ö/&ÑþÙ.ø¿Ñ¾rñmÁ—Bë_èAæFf8•ü§Q _bQv’Ô<ýæðÕœjH®á’±I ÑÙq%r2ßGN§y¨Tˆj‘{—®¡IiQ¶A¼BÈ+P6kèPHi‹$[õøøÿTóI••…'ùþB~Y» ›Q`æ8“—œ#‹W$%)9ü—¿ÍOK 8T9Èr’ó Óssudá-kz2 d’E>ž>òëÌ?ÖÒ&RSFôð“ÖCÿôø®Éo·ój7oEÔìœÌÌlÄÔšäó§'~„ ¯XdC?»ÓòÅ‘š(Ðpj:Fi„åš°êd2'C"ƒiºsv³ÀúICg™;‘}LÆÿúÿm/åE lU8ˆïQÿ)´'¯õŒ‹æ"Ýõ›‹{œÿÇiðýP´´DÏìý¬²1-¸šóR%‡C$HócKÓ[©_P‚‚ò2 "ì‘O›z^ìÅõì>]ß»‡!§wï‹úÞ}(êøaðËendstream endobj 178 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5153 >> stream xœX XS×¶>!prœ…x¬ïZë׋Î Ö  ”ì8ågl­§ŒÃ¶XúÃ$°«~;ûàÙ¬³û­î—/_»~ÉmÚ÷EÎÆ%’õB^tÈW.ˆ…Xá6[†jÔ»Ó28õ¤N”7lÕn gɺ#°^ä†óm×ýÖH”œ…ÂÕ|Úøù‘¾ˆ™6û˜ã¿û¥ë™­óKøì¸¬ø&Ä@:­q3,×ÃT=\é*Dê̇röü¹Óožs™5q©ÛÒ·ï}Äá1Ö‡}ޤ´ D~) ™ñÓ«›½•¡A¼ôQ£ºÄÿ°ö4ü_°š¨!¨ô¢»¨0ˆ/ÀöÍ,å«zTÑôËøÒ`œ`6Ìš °#%='XAõ£l:°#fp¿5x[ÜäfoèªIô='¶U¢8nW£o‰™õèIXЇ~?¬®o«Öñ8d“$AN0¯!˜Ã›ti-9h$9è&zë±iÞœ»a¹r…'/ý|¿i)lE¿¼éÜ9ß<‚ºÔPJ౸o—`ã¯è©F’;Šámh`a$ý—g Áýg·5G¤µGlìs ½èycw]IúP½½ô | lTŽ"[žžóN1ú€©kiþá«’°ˆl.3.+®¹Â‰1;"÷¨ÒÔÜ6Ý6K0~3j^ÀÔgqU¼´»=õËÄõ#vî ž¶emÑm9—Q±§(1FDø ’x$o*,Ël+æÚN«µg´|õ/}‚þY]H.c:Ùýßµ"c¼g8Èš…¹æãã¹wé— Ï›e©ZrÇ{x/=ñJÀ›wŽtU ]`°&&ŽÓ¸{ìŽBÌBtªÖ$žF8_hd,üÖÂf†èPbnÐeµ¨¹)©xo¸K÷ôÂDäqúü¤¨µ…ƒjÉŸgÒ ‘78iìatø½¶æeæA,¹ÈI£RÀ43 ¨¦,Æ-æQFÀöœ‚[zQ°K,¸ˆ4Y¤Ÿ™X 4á[X·lþ0#>²/JM4Hpwqéc%ªFE­ÆsîѳÄzQ™,¶wБhD"%ÑZIÖ¯F•|;½l£¡÷Ô%O:¬¼¸·(í&$HŽÞ›æ‡¹= FC{ÁÇ6í¦b…b_þ»5ñpWNTvÂ!äxeVèkïe–dW1™t®Wî—“ZWŠQÊ.Ë©b^À5]ÿXowư½ Ü d1‚U [ú‘æ bªÈå(Ágwnv*¡’kë¾Æ¯o\Âtñ5¥ …m™*ÈÌÔf•dîC…ˆùÛ©Ð%¼ô^ºÙ8qIJ‹nO9iLêÌ?ÑÌ$“´~CBêrÌe@œ7JEŒ»ïþÚ¿mƒÑ9ü % 5=H ‡@Î ãlÑ%õ/pêá ÕóÎcÞ~bS×w¼Þ'}¥ô ýñ8<϶ñ3 ýLhÅ Pþ[Ò…‡ØÈ¢û#Ï^îágÊ]O€l^–RëXpû3'{òhŠ! ¢­å¤í>‡IAyÅ¢žðÒ„ÍÈ[ÊàÖ7$*BFÕ ûõ¢#ßýâ-ÆA‰;Ó•i¡Ž:£2E—V9Òjÿš…Í4¼†ŸçìFj¤qDjù¼Dy¸g€:Aƒ2s Ð>¦VY!ß§ŒðÙï×þø8åp/‹ý Dv‰… bÂQzünµ"KOŒÝ⌘9‹¯>ø¨$ðŠî”ÂgVªjS£+o¼1 yãE«ðÈ™xà÷£Áøý?•›Qm7ÀaRÃÖÁsV§ÍÌFåÌþhËán:855˜ß*y©µu%Á—q{ŒB³Å9U¡JNBWå!-*eΙ ?®’¼àð•^´ÞÖo'Ù¤:ÄYjŽ÷š3ƒ–¶7û–m‹&öVÒû~! u ë±^"Yë=wá’U׺~¼zùê¥öµžÜKÙé1x×Ù¤Ö„ì]ˆyÇŒXmJnýbÆI.È2iXѳw_`™¦96gä…¼ZÉ˯š¬í‘iúêÉÈ 0L/:c€È°–ÕU¢6 —ÿ„‡ãÇß0øÉ`ÁáÄýZ#pÊÔ½±i|ô†u)2´-:ÿ-“y-¹qþÌUD,¢¼ðuæ<`K4t…áÑwbÈ3–ƒÁ¬|‚¾ýjâöî8 ­.k¸ð&ŠsáÖYÜú±æÚðwޱP׳ºŽé«¾+ô°W/"ù¤&R=ÔFë ÌûÝÝÎ÷±„ÇQ¶ Gea=€5/F *ë_è,[¿~û²‰$PÆR^ç³g.ÀÖ vçb•çƒsk®ÛKM,a×ùœ8}öèÑSŸ|¸e½Ç¶m^üô@6[}0ª1o\ïjJiŒkàuÅ59û2óvU§½‡˜òêâÆêØæuÉ›4A[ùø¢ÀÊ­ˆ™¼dÑœíåÁ¥±¼SÉñ)Ña#P`‰¼0ÉÙ½ƒ’™ÙÏVÂ0ö¬ó›6åÉ õ\b¾OÕtÄ,¥SQ"JÍJ@é(©$¹D£EY('«$ç=à‹ìØEGŽV¶´hùÚ²Bt1]`ƒfo[´}l_òôR[Ô[PÅÂÛpœ56ïVþ… ©þCÿñÿè>è^Ǿ±Ï.Ù}gWƒAKÒ*¦‘ {~xtõæMÞk¦ñ‹ið a?m«Ô£ÃÌ·oßÅý9¼Ô’º$^Ž`€E@0-=y›ØŒ&Ô"«ŠAÑȹ¡°Êò°†øýˆ¹XóéÁâü‰µÓð©êq2tüôETRÍ%5FéTE/©{ç±ø?^FÎ× ÂÖä _³ £ îă,øô‘™O¯ÑÒ'‚Úº!ºJ&‹Ž–ɪ¢ªª¸]‹Ý©ËPvÙÿ²qñv¨gÒ¿R YŒ×öÕ d›rêý8Ÿú=j*4嚊>†z]XU^IK!w(L‰¸0æú½®K&íã}íÊ«‚‘>™_áSìpü¸ý£kпtrh—]”®í3‚à`r‚qa©œïuÅÞÄ Š-˜óîqׯ"‰ÌÑ<Š*Ùkö@up4€Ã #äðöõ“غ˜Åö48ö¨¼,çó±&y@äÁªÃX– X›öiŠä6ÏÁ“là™iC7³þµ÷¨6Yøs »¼éýåM’ SMÝx/Wú›—¥ÿÝå}Ö‡ñ ž'ö޵ßµ°á–]Æé`ü5¶…"a4«nR %bBL|Ñ¡÷yÜ) ˆéËŒ{¦sÄ Þ‘HÛ»Ÿ8\]çÆa•$öEúÜúäÿ:%C¢E@ÏóMÜ!ãöË*‚#½‚ÂT‘ÑÌËvù¤> ùçXX9ì±¶ÛÛ¯|JZ++°~ #€ìˆ Ø·Ü ?Œƒ1†ŸoÞ¸:ÅãÜpÿ·Lú! Ö?%f?ƒ„îR_””ÁùÏñJŽUÇkbÔHÆÈ+2J+ç<ÊõÌŸ&1'mŽ9ŽÓú€ *~ê4ÄŸcSRÓ3Š1¾_àà¡©E¬ë«Ð±2§Ðç?þñÖ‘C;Ž_B_20pÌ-<÷_0oÎΆär]uyCqƾ”|®ôø‰æ3ˆ¹ûùÖ™K7­qõ4½6€¬ ÆWG»VuÁ.ƒIñG‚¾c;Þo8‹>anº|†%xàÒÍË‚kUZãb%éïíÍæš›¯½è•“Þa »¢ù¹:@í±'¡pFúw#¹ãôÏ¿»fåÚÓüˆàssó‰Á`jbµò¨è„ÖžÛó°›“>B×¶œwmêSJ/ôÓŠ¯‚¼C|ö²)‰Äc)˜à´fr1ån!yçÔmóè-xF·¦q2:eh¤ÉëaXÒù>µÁO%½·ïø8=Ì&ÔµÞrû_¡IpdѶ4ßh< Íìpœ–ÂãJ‰EµTää¾WÀÕ·®8GÈõÛÝc.no.Yõ†lyÁ¹jA>¹jcTYLBXÊŽ¹_/k°ýù>ˆ9é¯OþDdÜþ¶N˜G2æ Puyõ¾q Øxõû»÷Ð~T–œ›A~Ò‘’‰¬PÔÕjË›Ú>™@8:ÂÞœôÞ Ö.?ƒè§¯a Ð3»°'¼Wœ·/Nø0ë†v´+ôêÓyáäßîœ~×y¶«ÇâÞcé„6½è¨á,IŽADç°3^„w!lŨPðòò¢F.Ú`2¸èÏk+²²P cŒ‡¿¢Ó˔Ʀ#EÇò>}XÙ'ö¥‡­„kOãËcïúJ¡‡uq?Öqªã£/nŸÝìåá¾Í…ÿ"”ý²þX;:ËÜsÀßX0ßãøÆ/"8éßÅ,_½hÄ„î™` vï=ºåvÞYÇ-À-ì\׃þÜÅÏ®X¹Ìuí\#ÁáœýN%^ ~¸ûƒøwêöï”p‰Í>TH:¾ðäìmûð6‡Ì„ì˜T‹r+2Ë oÿÏ3L—™× m9ƒW$Þ6¦ÍëPÇîÆCß7¥ €Ì˜²œÜÜoý§ïŒáñºz÷ªè à)Üá1[ÜŠØIŒ<þ™VíD­¨˜‡gx[ÒFž£$ÿF'“'mDqÉótÏ#‰ò9¦¸®cQiZ޲ýz+8"°F#”åç¶¢ CŽ·c\ˆŸ~`#wÚåÖZÒÚÔåj ,{ŸÈè38Ï"°õ~àÉõ7uD"Fž®HM(JËÝËÃ\,*ų‰™»óø•i »S3P“š§¨m„í$Â…Æ»Ý×Å‹q÷ErñšÖîŠà€ŸÚKÿÇ ÕíÔ^õ©ÏBˆÑî«(-O*TgòòòwZ#J€:ïPœ¿/U29¨ÑÃCgÕe~Š Qkp0 N ÏtÍŠà0uQU¨FiÈQ‘¨Lˆ-Jߗƃh5¦V'¥%¦#…ã~ˆƒ¡×ÕW‚[[Qka£æSuñ„sõÏG‘Š+'Á[õ|kW“Ðüs¹$4o÷~\-*í¤ç£z 9¯‹rl«³#¨Y~É(²Ù÷-ñI{vïUf½L(+oyú Xéw|°Í/*,Ä¿QÞš—Ÿ™•o±»ŠDûÌóWû꽫…˜ôÏQx’ÅØÕT{Œ´©¹*ꦉ…yPà Ô4RãH¨q€ÆÄÊŒìü3!Ð=ÒŠÎ “Ä‚÷ó!l~Y&BLEB¹":-!1¨É?—¥ÅkJuT–Æi«òK÷åqƒ“‹„Å…ðv•ù}R6°Ÿ~à@ÃÀAõ¿|,Vendstream endobj 179 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3394 >> stream xœW TSg¶>1$爈U{Z{´>Æ'¨Wk[k}áÅWQMPTˆ@òdä!y‹‚„ ÖAÔ–VÛªµÕÛ—Ó.«u¦Rmké>ø3wÝ?@§³fzךuן¬$kíóï×·¿oGÂ8 a$ »ÄwñïYޝÅ%âØ!âKR Ï {ýdà"§–±#¾…FbÂÜú#•H41ú%šqQa!¡Zåä]RzÏŸ?ošr–—×|å¢ðਰ]ꥯZ®ÖÒû•5»Â‚µqÊɯ‡jµ^9366v†:š­r­:ÑÚ˜•ºXõ.ßÝÁ{BB7„mÜ·?Ü{Öì9ÿ5—aÆ1ë?f³‘™Älb63o1Sf ³˜YÊÌ`–1>Ìrf³’™Í¬bæ0k_f-3ŠÍ<ÏðÌÆñ¤ebœ˜CÌ#É2I©ä—!¾CK½¥YÒ«NSnÊVËNË}äí¬‚Mâ–r-C7 ­t^æüí0·aöa}.šá²á›‡?v  ®½ÀŽ^vqU¥DÜÑ;Ÿ×3ކ(0fêãHv߯îú0j Q†,ˆ.N%?n~,PŸBñÏ.ãíl ƒ¦(§ÌæÜNãŽUòkÄK6]%o4wC34ÂOP×o:%÷Ä9Ò*#Ir×^ØEg«¥(Á(‘Š'°‹ÿ>è²Ä7ôÍ0Á„CädAºLÅ^Í‡Ý ò±Š­1'èùÍ¿†±È|ÙùÁéªè…©ÿ#ÖUìʰ‰/X% è‚Åè"ëQÃã‹3o2oÎx2†¸=œŽÞ8ïÞc%3YÏ“1€C?WØÕgγÃ;`;P®© à^Â^píý™&Ñm—àË8Z‹c¥Í½‹yUO_·§JœÏâ&œŒ#p/êÈ4AüÄïïn¼ØSØ{ðqØiKPÅ6 <¡‰þ¡ÛCWìõÎUÜ9P™§OFNŠ»1†·æãl*$ÒÇCd¯«³–·vøŸx=ÌGDk%•“WþµVwh,ðÔöbëÚëOûm¡¯·»ãì6i¯sï¾ï>ù¡§Jn1£NC'܇ ý´\fÙ¹Xц'ÕòÅé;§ ›Ð‚ãå8ê—á\›ÜU\—a•'%Í70á†T..ä+ ?1Ãi‰B–á>Ó )Û“\8™dÌ8|.¦!SQŸiÍÈ…3ig¢@ͽáº-kʺ5BF¥);8´ ²A_šo†²JáxÅÙÐKp <.ãÈbôx;Ò{LÔ–·¹puѺ"x›ûð>T¡4oY”YÈN>ÅÀUANÂU\I!ÀÚqa¥ä'Š·ámR 'ðø²¼ŒÕrÓä€É“ ÜÞ¯HëyWûÉíö+·…Nµ?»2hÓûFæÇåê«Á£ˆ6ôHesï!e1ŽŸÕ“—ŒN=ÊAõ8Ç*i¢- r0Š /ò_%ž‰sæzþ.aó6Ÿe”^X2öû™8 ½Ë\Ÿ]ʤóâS‡““8š'zñT O$ŒÎðu9ĘL‘YqÆXSpZ•¼Æüy?~1H‡Z։蜈\S6Tsâålëú~=|(/µ<Ê!¯ðpžìâží 1y½ù)4Ñóêû÷»{ì$ŒÕA¤é¸¡xÁŠ›;ú³ÏsŒÅ‚S±ÓâC³7q6Q’ñç¢ÇåóÖ…?‹>¿‚ÈIß^½vK2e òàè(ýV7+®tåÕ@+´ÇYwÒ6fØp£ß ó´‡Rq Fò5yPwR'ð¼Bݶñèzzƒ×Ü dQþì…SqêÙžòÒDÈH0’3‘«Vê¨Å¾xEaq2·f·TÙ*OUÛáW( .Ù[9W|D©ò™£©BÉžÞwq¸ƒ0äv2ìgùÓʬEf“1OHLM‹·«1îxµ­´½5¤m©‘N˜°Hu›<ûc"»H`#Îzx§“›$ w1º'ï®Çà*þíÈ+P  —?û¸#–R¨°”Õæ–› ™T…“9]ÉÁãÇK*ªjãÕª ]œNªÝ]°…¦#lzcÙþ ¶0EüÁ¸P:šªš=U ѾZØÀù}¸×à«__ºóízKT±P»fS¥ß ™Ùªü”f: G²K‹Žr8,Ÿ7σ›÷îO` øÌQ\!ü§'û‡†®'îÄ=äJó× Tñ›†;ºÿ2>qÛÒp‡4ý '‹þA‡}ïþ¿e¼÷Ë«Îާ­h³r(.6£§ÛèDñ8þ•ʹÍú \➌ûšø }²¦‚ölôü–üâivô&?)Õ‘'Ãèb³‚ž Ž°‹¡wMÕÀýTü ¤<='ù IŸlRdnݯÓÀjÐ_OÈNÌèÔß&Œ•Îr%O†¢^„óræûm2Í!¯)\ñC ±ãG|Ù)F÷JùÖ½ »ƒö‡7„µ¶XZ²”¬¤óÑõOB}“®T'àƒA|øŠSi²²{/{Frõ~ú@Šùâ~rµá(á:¬]ÝÝ÷¶·*!G¦ŠA‰C?Ö!¹zƒ)5MPm‹ªÚÚ2…²Âø…ÞD²Â¶½$IqÑÿDÆS퓘bcµîh²E[8•îuâ4›(NâÄtÁt rb“]¿ÙÍÎ.(ŠŠ ŽÖÕ½x7ù= L¯zzþæû€Hꨬ>˜’€º­Hñ´ò8ê§â¢‚›àag#±°"a#h$¢¸Öž•‘e4*È*2Q&ªØ‡†£õpóÐx-+.=Z} ‡/÷ütÊ^&.5’[kþˆšv@ ´ ¬£  ‡²“r²r•pýí»;zÞ»Šÿwg·úÝúdÏüÓZºsà-íý†búáî‹Äiâöåû„„o–—®†©àï« àþã=UòÕÅk§«cüÿLÄAÃ˱·WJ0 eR|ÜËò#ì­&RÇ’~PU!?ygŽr}ÕD¡bÛÌ¿ÀyzzkD^ê¿ñôè°K® úáóRÑŒûxµÜ Óû%¦¦ë@"å”™òæÆïþ»´¥¹Ñ8tVÞ¢ ›²zÚ[öÄš[Õ¹¶ýUûs…3ç:s«€{Øþæ’o- R)H8‰MM£ÍŠóˆ_q¸L9Ó‚Ž:õ5>ßf“|ŽCÐ=¥X‚_Ó•ÆìOÂèVæ4(ì¥ p’k°©#"Ô3Ÿl¦kôü/¾{r!ê{2³^ø¶þý«ðwgÉ5¢ Nóý^ÝÚ’pÜrªâ\MjÓö|¡­õäw|Âó÷)"Ã"ÁÆS¬)˘a=dqñyP)ô—“Rºã~æ ¯eèÍwÛ§ˆ‹äu¦Ü¨8#$¦¤»oL…§‰œHT¬Åü˜òI<TÄ)T¸D OnÈòŽÄéÖQVL/eΡƱØÍËø¦ôzÊìµôŸÄõֆЋgé6qŠSLFÈL¶Ú  h{¹Þl0€KÔxi§ƒx¨²Ðœ]xD(.±µC« Ó__ãɈ=kJÞ St=Sm‹¬ß¾7nûœ/æá0œÑ}ŸC×Wî‘—v¤ïS)úCb½„Î'l’óÈcŽ–âbüÞϹzâRu[GˇTl†Ú¨à¬ àBêµÇ­åíïízI, %+€”b*ºÿð9*Q9å6»æîPBÞãWCÔ¥¬#IVø 8Ñy±ë1¼6i2¼6^pM)ý pgea±œæ³vg” œæUº m*pqAIËðlW†ù_ƒÇßåendstream endobj 180 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1144 >> stream xœuÒ_lSUð{{-0§/®Úû€Æ#™Q„1dŒ¨e%4å¶+]oGÛ­´»k»þûõvý{×éšv,`aÊe¦Ä@Ð𢾨ÑbŒ¾sÊ)Ä»5èƒ17'÷Ü›_Îù|çÐTƒŠ¢iZ½§ó`×¶¶Åé‹x-שðzH¢j®ú—A# ×5gѹÕžFgŸ¡Ô4íBvüüG¿×iµôº¹¦Mܶöö›¹WÚÚÚ¹ÝvÞi5®ÓèîåíF·òÑÇt˜¬¼ÛËm|£×íî}ëVÇÓj´»ZNËÎM›9ÕÝ˽ϻxç œÛëÜÜ£çêÂÖúkÃÞ?àæ\§ã8ï\V»µÏèìã].þ䀱o@°:‹“7*%K?(ŠZE›OXT”Ðü\KQNêe ŽReêõ&£ŽÓÕ¨4ƒj 6Pש_h'ý—ŠUP•–13÷p¤ ]D]è_0èJ°e×” ¸\‚0å*—§¦Êº&!‰6Oak‘F}ß2h?b¡rþ¢ÓÉøè(¤4rÄ–¶Ã»c:rJ ÇÁf:Ñ+ðÑX(à § »ž³ÈÝ ¢`Ñn5Á6Ç_µß¯‚F΀œS ãúý£ÝÓgoF² ÁŒ™Õ0˜°M–„œ#óÓ¹™YøZ£ÒÊgU…AÛ«GÙ<ðzu_U{Á[,B¡ð„Þ[ÂÖRÞGV°`:ÙAè`¦eÈþùûüqRèWaºòÙåòi2^K¨}£=3â|D®›ú0ÝsÅtioÎ ¿âR@ýíð¼-8á¯'T膌oÚV,hw[ 𞦩ZÈ–p§"oÁkÑ%–A=CcQ)Úáa¿”¢²¨GGˆ(C£QjÅœ?—‘¤±1êQ1I±t(Ú±LV–`4’ÔÇ$²m뺉:PGs2õq>™ŠKJ„´r:Ù¡@8,Š:ewä«Ð?cÄT[(@±èŸ¾ve¹Ï O&ôõ®-vw?ÏàÈ ›<“Î+‡”]ÜL éÉwLDÒgA+úýb¢É!ýâêÚÔ´@/T·0U3úÉB੘.üò¾CoÃ~è¹Ö}íð쇳ÐïU›-q9QLèG‘êûëßÀm˜;6ì¦áKÃw Aô-¤º¿¸2Y_A­%|¹X×ïÀ÷Y9™IÂØR¼? ëj7ȸ/ B@ þTp|ß ùæ|P‚DŸ §|}­ˆbËpªæ©ç„ÓúÚÌòÓƒOòW[*ø+%~ #|ëßëE«ÉKd‡m×ÑýÙÏ?Ð휇;pAƒ©ÿ©¨©Ôd3Ú²­FkÐÆ{¨E÷_ýkèGv<•JCráÔGéÚÊ7ŸI‡•‹£ øÅ¡LHéñ$Z‘€Ç ÀˆVÌúå„é¼_&†ÿ±»¦ªoM.'keueee•neÃóPãŠÊ'ÊxŠ¢þI:lZendstream endobj 181 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5528 >> stream xœ­W tSe¾O”+”j°ß½EÇ"ˆÊZ¶–®i›¶iÒ6mš.Ù÷ö=ÝÒtoJwR@ ˪DAßè8¨Èè¸Í8_êÕñ}]tæÍ8ïÌyçžž´§½÷~÷ÿ[þ¿“1u ƒÉdNݲeÓòec?>žÏ ?0%ü¬ÚòݬQå4ˆdAäÔ¶8îÏœ‹f#ÛF“)(RL6·¯&ØÒÖÞ+J x™Y¢˜Ei‹c–¯\ùô’˜'—-[³ŽÏ-॥äÅlIeqù)"üKnÌNA+’Ä,Z% W=ñ„X,^šÂ/\*(È\³xIŒ˜'ÊŠÙÁ-äsÓc6òD1[SøÜ˜‰ƒ.øˆð…E"nAÌA:· /%W˜•",ä¥rE)éÜ\QŠ0‹—™Âç}.ÏM᧦§ä y>73…Á`,Z—·W°OXP(Ú$Þ\’*IKçflÛÁۙ͟÷̪ggÆDF‘³aßÇyÁXÀˆc¬dlc¬blgìdìbìf<ÊØËXÂØÇˆeìg¼ÀXÏØÀx‘±œ±‚ñã׌͌­ cc6cÓȦ‰ifZ˜V¦ig:˜N¦‹±O1•QÏÜ3…;e€ežúâÔ+Ó⦊X=}:Á!.ÜõòŒi3òfÞ;³"r~dÿ¬ú¨eQÏΚ“47jsÛï~öž™÷|poâ½avá¼Èy¢y7î˼>jT !” ¯0Ñ‹h:;mczE’^fT”›ÖI6CÈÒ‡ Sß'#²û Ö£4©)‘¹Ð àµ{œþwнÑÈa.öÓ€‚àïÑ‹+ –{ÁL†W,‡ñ?^Ð7Ž_ï…€GÒ-àhÕS[G§`-NèÔA—|¿‰ö¡÷Ûé÷§E…?—Ùè»áÊ‹¬[¯³õåh ‰_Yé­q¤Éì°7?޶íA[½µÚÙj²V†?ùý®Œì-ûé{Ë’)¥È(9‘Й5p§=ìt+A¯}¹–¿˜½s?¥jw}£«Á¤j )0D¼‘Ü»|ÿfQ)©}-5”‰P’®”ñ*¶ŽP¸Áì6™‚v²újàx4»X/—î¡¢F¯@h”b†%á'ØO£z§Á &Ø«kXÝ&· ª ¯ ôd*$ëS ¶X Æ&£‘ቹÁ7lW¹(4ƒn§3i±T¾?>¡l¯ž#ÀÄ Ù‡,!è†^}×O3u+LJiÊ5C TUVy}_#FôÇüŠVYå&#8 *)M×ÉJ#”2XÉÁÈ6¹ d^¨õ*@Em4,¥}éŸnDËDÃoŽüÍloimèi¶øL.€ZÂn)ɇl}.d×’9~z)ˆÕ6½ÃH¹Œ! B.U)‰¨pÉ„‡¯£Ž·Xajbÿiý¥åôýøk½`Ñë?E4‘èa’Еìä¤ÐÍMˆÑþ*uòÆPe gÛÄ¥‹p_¢²¶ïâ%¾éÉß _fûýmm‡:Þ´q|7ïô´£‘òåµd½ "Ð\ô0zäÎŽËk÷ÈLϦ§“ë2Æ9¬”HxÒ8Ðÿ3‡«ý*®H/וRålGssKMeg¨ÕQ D_CÖ¶mÙôt —â­?Ä&éûv3˜-^**¼G^‡Î}äÃ2ýìÓ_©ÙÚ°Ö8Ռ؛­¾–† ÓÑÚô 4A¥Ì|mQ!äežüÌú®Îœ¶½/%픪þÌö„ãГ gɃƒ·Ð¢·ðQ8Chñ+µì'ã \Z¨ _¤Ñ~?=ýºîê2»ßN£ .•YC [K¼`ɛĥD†ÿæ«1½T•Á®Ç#Òõz}ÿ÷ÑŠtƒj5^NØd –«h¡ê hÄß4ÔáðM˜K†jö ¥’òŸò úN¡ÅˆˆFô Á?Ù¨”Ë'Wr±ôá;œÖö9(©T“ÔUÞ‰½èMyÐ÷JÓtëmôÆmú=:ö7Õß4@T @á¸fƒí5}§¶ùyÛ³âE2²àònwí Ùc0:-f—™êøörcµÊí¹¥3èªlKVJh@žF[° ®¹ÈYÎ/ÈÏI<)>z¹kÄn!½]éÃ@|3„Øc+[iЩ TvÌ‹…9@¤—µwà¥ï9Š¥°nœ(ãs`ɯ±jt-{lM‰žWòI•QnIJ“®”N ¹udBŒ‹žaV¸4<—m[/Žq=(Ê4åJÒ Uåê$XBð ½1ZWž¼~{åG»UŸï¸EU¶zÆ´Ó½ïµp§¯ ÑY 9Š|u •ö d$O^à¿ÞÛQÝÒBJ÷Èö§Åçó¸y‰˜ˆ-¥½Uà¿×írãØF„„V…(»lÿ¾£ç¿ùæ4­…Œ ¿ ¢Ž[}ã:ïSV8&<‡]†¯®¨(+7”‚š(¬‘×¶67ôHè~žOsè‡è—Ÿ]ý'ôÐßzí‡Fk0¨4äêE4d@¼,<1|8ðyÇy*4tæ•3Ð=R¿“ªúgŒú®²Â¾I€Ê—( ¥ ¤?DêÅq´BÒ×|8ô]ôúúáÇÏlº8i½:L9S:³C'Ô×WµWwùΙtF]…ž,}I²-¡¾)0a”›ýl­ å¥I»RË@ì«8Ó{²Í®?F…^ïïîâ’¥FcеG.‡0ˆž 2]CÕ‡X(•±[áºùdÝH›íuðG¹‡7Ð,ú±G騅¯¯þã¿óÊÚ½¦På9Êd÷¢%ߌQh 9÷ýkHŪÀ„©½†ÐÂj‚ÌÁÛèÍÛ¬0 oÚ¥ÔFÔ¡kÿªÝËqÕVWÖ/ÍZI’N‘儨FVÛÔì9–XŸÊ{Y²ˆOjŠõŠBúnbCD‰|ÜZj©ËÏ}OI-]¶8:œjJjŽY\]PIÔK¼%ùyE܃G Ÿé{½§†l¿Pf™Æì}®=MèBˆ9ºèSz ]a£5h¢þ„¦ÞØt¾¢oüôŒÿû²›m&;…î÷³]fË+@|ñþ pCºø©ôLjßÁ8ÎBôƒQ£PÄÇ ¢Sص[ßëÀ¬þŽmo°¸k-.S;€¸ŠX°ˆW¶!=ÊÏÏYŽ/¸RöWA4s¾">\~‘¾¤{"ÄʉÝh®C5UcpAúÏ/!QþCº»:‘îœÞ|ƒË¨fšñIÍάrU®FD©Ê 4E‚ïw_ùñ†6* jµ,X—\*"[ì Ù_µ¶Sf?>†nl ÝDšè?hÞGÌ÷†_f¡îÑiì@E•H(Ì–øKêÛêÛȵßG²½­Ø%š›ë|Ì;çþ+ï(Vë”*ÿ M”%+ò¥ÙPL$tdÇÅh¡ëoÅHòröÖ½“ÅÈî¯?‡);Z]Ö‚‹â*arF7³-‡Rk4VÈÈ;òö4¾„õzIO§g­L|µœú‹ [y¦Vr–¯||ñfšDsl &;i²šLcÂU›´Zž6©Óí¤KpÄÓØtv›Éä÷’'†^ÙþfÅYà °=sМ+¼Žr?%ª/·>Y_dÏt+ÍB¯‰ÿzïwxÿ\2=5G' i¥×m²T[±¿=uæþ}Ø2>Eém”w~±¶¢ºPÄñÅþ²úææ¦f’NüáivÉÚ;vâµTW›k6@TÉk…yÅ™i}EÇG>ü¢‘¼ž‚“œ,œ¡”Î} wLNÚe2Õ:ÉÆsÇÎÂ_£K™ÓQßM™ÈJ£³ÿ¯-¶@-Pñ)Mˆ×êÄJh9c׆ìíNÒÿ.´®^‹oE"&¯xx™;Rèq<¥,Ôá•ÿK­·<>ç…]ÿ£õž:‚3D\J;òÜs{“â3H£Oß!h(¨Ë±ÀrØ¿¹T¤Ji;øSÏ’nû¥8^Uù·8þ[‡^†Ÿ0QúÛVçîÛßå_úWß¿£—á|bà”{dÕuÞ‹™´º|§zÐÒva¿.#ÐÛßÐâ:Ø-8úoø}Ð;àì¤ZÃRéî±VrlõøaT›oä©È:N¶Ož¢WpŒÚËVá]Pxèt«£ÅÑBE¡6zwzî[&Úd¡$ûrAoz¶¸@ äòú¬.7i1›0g “ÉX±.+.;›Â‰Ê€§ ¶élž÷n »p hƒo™~ËB»Ù­… yy……yy …­­ ­˜ŒzÚR÷ÝÎóµð}¬ðæÑ6Î^V0¥K®Vë5z’þò¯[´ØÀÈ‘»”ŸÅQm'£Fïù¹E¼Á ç#9-_zbýtôØ>^:¼öë ×êϽCúâåö1:SåÐX4j½^­§$û3ñA‰\¸ÙP‡óRwÐŒ:Dà›N9¦„d\ïk¶Ÿc¯X³FžD¿ÿâdxët-Ná_}ß³°ר¨QŠN©CëÆí©<õ²m½Š[@ñè2¶Éj¶c¤Ç´­0$:’^õÃâµ.n7\æ`sn:b¬^\,9æü¡¯uÒªòÒ,ê}7äC),¹™ú™F…ߤ"^/¯ÂƒÓ¹ÙV3†ÆÞhñ÷ ÅÑÝp îüå𱺣ž6Wcð÷p”xMèÿç6°yÏʬÌOnÆI‡“ót|z*ˆ~ úƒÈdþ8eöûŒ ¬§¬ù‘¾Ì~{×ùUÛeùYä®´]–¬¥Wü0;Ú¨³iœ€ë‚ÙdA­ÑµqG3Þ‚·àíÎþ£Çµ_„ëp-ãTfãÙCCçáAo¤W±¥Z¹¡§+±Qa3»» ¨ø´šƒ¶³a=7vO®Ð-6óqÕÛiʦŒ‚S–è†JS›·'Ó–kJ4o/|Nž¾{cæ ÖrÏ^uC¥­–ºˆìÁ¯¡xÇpÎvæÆaým“G—·3œÿ²ùË+,TÞĦçò¥ç=‹xìbìt×ûh9"?I;Éë'3û·áE miE¤•@4V6TË,™Nj§Êp²ÉLŽÛݺ3´•ò±ÛvC,±‰K?³tWê‘w.t£mh~¦úí1~<?Q7Æ—Âä%VxÓè“l0[<˜y&pÉF}©ŽÜN—Ñ+´8âq€~€KFV£(µ*W£Ê•%(¸c6ã0ÚlxÊÒlÆ[~gô” -Dó÷½wãoÓ”›À•v=;ÎÛ _ŠüÅ Å>¢iÞ;º¡DXôŒ§°R•a°ýtN]øÜ5&úk#ë0ràx61M Ðc:võVm©ZL=ϧ È'ä6µÓç öxÈúÜCÖÙgöY}í_\D‹ûÞux½A°nôPëÉ=KÒI{Ø2¾“þyá¹´pž^’«p«fW‡¶žEŸežl {[Xh ½†­“ x!Õjܶ ¥;Óv¨-pÆj|¬Uh)êÉ›éÃÏÑ ãèxzOE3;_ƒkÐR¦ _qºpÏ0Vƒ]!XC/|ìñËÏÿ¥€üÝ ¶ _e"dF“Å\ý î‡!tïÍÏ>âJóîô4šMGÑK1YÞ“Ö. 0ÃJEýìà ŽÓW‰ªŠÜÐ D0»¼c‹Á¬·*<šJu€N_Ž.>»Û—v,¹Êi0Q‡pn|ñsº1šn¥›e2¤œR¿¬ªÊåq;1- Ga"Q8ö)h²µÜJtåjÞr·ÑNú#F¼ˆÙûÍg(ÍnF€k|•¨Dº<¹™ÓKè©tDÆ÷ yúñ,}t‚…jÂw±Ñ´ˆlz‘26â½.tòÜIø€ÔÕì`Öø©¼kp GºAÇiÏ)EDøº £¡J(úVDp!)!+=?#4f8N³Õi'OÜ8;3‡"rèY»éY)ËTåxÒj¢¤Jåks¶t{Iÿ10ûNâ,=E~ ý5Àôµ£‚+èV¿ì~IcQ¾°P¤°ÉÝJ²º¼F)V²#7‘ŸœÁK€Û¥<íiª¿ˆ›±Wë–ªä†r)Ë^‚Ìì„´ƒ/±©øõ×Ðܯÿ >Ê£rÊ¥j©RCî]Ç¥gÂ2bCýºß^8y¦‹tmïM87áø¹®·NôàÉ'¢Š‚áXLJøÁ:Å3=4ãÚLrÆÔ§‘w5Ú##ŒÿsÄí,endstream endobj 182 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2386 >> stream xœ–yP›eÇBÓWAêÚBWß7íXÛj§Õíåv¬õj+-‡”£XXrÈAÈ_îƒP„#„†£Ê%PÔ–ÖV‹ö°®ÕºõXÖŽÚ»3î|Ûq_agvö?ç™yæ}þ{~ßïçû}^:-1F§Ó™»ÓÓ÷lýíë‘øŸèñâ1”dñÂØBÎ2Hf@rbôÁ»ÓîCö? á Ĺ—¶ŒNç‹›Œ°[P#UVð$ìõ¥ØOnÛ¶e#û©'žØÆÞUÍU–røìtŽ„Ç­æH¨Ãv¶ ´’+‘³×?Ë“Hj¶?þx]]Ý&Nµx“@T±sÃFv]¥„ÇÎ⊹")·Œý’€/aïçTsÙ‹×Û´¸ïT×ÔJ¸"vº Œ+âsŽÔð8%\ ‡F£¥ðÅ’ºyVevÕ;’’i´´×h9´<ÚnZm3m/íiÚ>Ú«´{è:ÐVPƒÓi§è¯Ð§4Œûï$v/{jÙ/LåòƒËØ:ìNÜ”²ª‰Ä‰=¾ò‚ó2¢­,{Ð{Üly¬áXlzrü#À†:¤…¯qH¦¬€PUTXÖ¤`ìæb¼Z»NmÖiL¸x§Œ XƒÖ{:½ÝDðø8Z§°Os‡voÏ-àòqÝÉ¢cyP"IÃq¡&ÌX“Ûè X=nÜ?Ývf°—¨Vni«³V‘aT–“¦z1IHh úýnÜîò 8;°”¸Zÿ=üÙñ=xm>Lj¯‹'³$F©D˜Ü¯ê öû&ÎííN'Wq6æi bX€‡åGMïhu³È¡¬J +X@ /;DoÍØÜ#àÇ¢5nuC‰úµŒsÜèùa´bt~C¨Üj.sÃ(ÖvtîÇão6 ƒxJ|%¥á½1ô|;ý¥¡0¾†u“òC¨EõÄÌ!´Æ'XÓ:¼õ•ºšÃø2eÙcL™ dÊ%æ™H^ÔÄeÚéÊwÿ}­öûšlúF‹Q¡Ãëå¿°0©º%²ûì"eÁ¾äJú½xeÿĈ«Ð,W—o \XwKÍÓ‹^Wãª\£L‘ÕÄU V-0KÍö=¥‡[¯L‡Ï»†{{ìÍІ,о¾¾„\­^òÃåµã=ߌ lÖH¤Z‰NN”­“„"líuþÅÖw`nä| ƒy½Þ6xìü zÎ`WƒQ, •.­Û€û4Q_°Q+ȯâåVTþ°Çi9E¤Ä ‡@Ü úôÇÈ|•L YV›=VÌilV˜Ì<ÛXkÖX@ž¦lÿè›ôšR½šüI[ ¨O{øƒŒÏÐ ôG´­ýç¾ó;²‹+dµxËíDVEEä“^G·Šp÷¹#ž>gØüÁщ~Š´¡‚Ãåµìê B˜s¨¨(œ:ÉâH컑EiÏý»Àˆã÷°-`÷¢ª‰E¨Â͆¦ ƒ”²,Õb*Þþ<`õC§þ>Mx»·ž%«ëó ÛpExfr #Ü…+³5eÜCU%¥ÂÃP\{]ô]‡c‚ò³KÖòê ÇJ/ÝBË¿D÷Dñ”…iDCS4»/~öë¾›¬TÄSã ¬æ«}°kÌ/?“n/’¼øzq¨2«10r©XhEÿŸÂWØ7ΓNN1åK ¶Æú Áh±˜T¹êö@׬Ýi25ÈŒvM ¶YÛ‰sÌÐgræjY"Ü$[=!µ™íÐ N›Ëê|êT¸z¶ô'HCkQz%¿­ª‰Õ±*O¡Ÿï.k–¸ªÝÙíp»zýú­ùs…$Ml”‚W7›Ý~«£ÕA5Ö.Šóø×‹²*¾G’ËŒø“”®!EH\-eAYW´'Òƒ“Ü;f)öìÝ  p˜­ýAG/4/òȯUq‡E³gQÂq”ÅçÑ/v¿ÍÁ´“Eof®Nÿ¯”>«=èÆ£ffNÖáWV)MÔ¢²BAcóÁÅô£Ù¿žú&~WúM`6ÈqrÍí9£‚z‹,iõ-ÊЀçX‹÷Žöüì=©ÿHY`ƒYcR™•TçeŒŸíéð®áÖ÷©D-‘¡—qU¡ð*ûB}goÀêw† «ÃÑ >øòá¶<÷pçÀ€?pò½‰á)€ßäÑäè ,XíQEgo´sd@<”Ÿ™[”•…gf‰t±SäÁ´ 1èè@„Y°W™•žn4™ÍÔM´½Ûÿ·ÏÑ]ŠÇ‹xu‚AH0Ül±RÞ¹Ôéã×П2ânÄfݸC÷ƒkÖ;š($¤z\°öÀ_L€™¡»•0£HæÐËe«)Î"W¯¿°ëç‹WºÏ|Nt>{ÚÐØll&äWƒ©ÑlÒ™ˆN¥ÙJÊK#JÁž«b½°o‹ˆj…ÜÃÑ/[ÿ5ùñÖ©÷ºFà$ô—ö_ÖîpeR¥xã·ž‰ [o™#ô_ØÃ´‹Œ_r¥ÅçXÿØ5±•d=F>B&pò©;IfÇà‚4xÀæþu¤†s&+.†pôØM´yN4ž?B¸¬m§ãÄÀà,œÅÈ|r'Kn’›eÐøÛr„œí¢ZÀkñš0´ e² ¿6ƒÇ3¤2½Eà¬uS!|ÕVV=kkïï³ûúˆ¨8øäCFÝ~iùÁôòçÛ“;s1` ؽÄ u~ûZ‡!mfR´H‘vÄw{}>TÓÁ$‹½ËÝ}5 ¿;qK{ò]G2õgõù÷‡endstream endobj 183 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1832 >> stream xœe•{TWÇgÈŒˆT´³GÛîL|ÔW©‚==k¥ââ«Õjñè‘®"B0’ð˜$`IøˆT5A(¾*˜¥ŠRw[Ø-]­n»Ørj×ÕvÝe½C¯=gºgûÇž9gÎÜùÍ÷þ¾÷{>s/I„†$I†­ÙôvÜÄÃñyR|!Dü5xÏxÃøÆ0ˆ  "´ëºfªˆB™Ï ”éE’êü²5Ú¼â‚ì}JA¾(c±<6>~E´|yLL¼|µZQ‘®‘oJ” uº rå)ÚŒl…P,_´R)y Ë– †¥éêÂ¥Ú‚}«GË Ù‚Rþ¶¢PQ WdÊ×j5‚|sºZ!Ÿð¶tâ¶F«ÎÓ Šù&m¦¢@CÄ3I…éŊ윘Øå¯$¼öAÌ#RˆmD‘J¬%6oQÄ b&ñ,ñ<ÁÄtiµD(QBŒÖ)!Í!?R[¨±Ð¼Ð`ØËa'ÃÈ¢eÑ9^ ôG?ê hñúëC*8žÈª<ôíÚ²,þé1:ËZ¶ŠÓ©Ähâ}óà/«î਑ÞO®Ã3ºð.~ŽÃÛñ UÒ]µ }âeß÷®Ú²î­UXÆc²»¬ ]@¡öxm-g«h°4ㄆã’Q¹´îûüä¹/‘æÖp'%Æ¡ÙGÑý1q«s6¨ÝÅ>ÿqW{kÉQëiI{ùrf<ŸKoµ¬·$k^Qìß *æÕäßî=sÚÃÙ>Å9`Gê¿å/ån£÷–õYÐ×Ä%~È.‰ÏÏØ‘Ö¼þñбs‘â Þãÿ Ý÷(ñ-ôÛ6ØÓ°1Zi±B:TÃvÐÔIѪèk‹¨ª©¸ '›=Œä#­=€¦@=žc˜Hœ¤E ŠDáÃÚ!>e;„v•&_ÈQvè}ÝàÍ¬Š¾z¸J¢íè/´]4à{’6zcµý/´£4ëO“LShµ±#C×/œµ·ÙfèB‹ öB*˜liµ“©¯©/…*ÐöWTáù˜™%æÑxñÿè~ÚüK¿8 .¸§~î÷†zù‡ôÐ@ø”΢Ù½Óà4´ÜùPÂì/²˜%Ñu½’è¤$û¯Ét(®ßwž‘PÓûÇÃýä™Qä¥DúŒ…'e×TWÓ¾Iðl<v½lÒîK².‚°¡nAð7}«?/ºA¸çèÿ¾ç³ºQ¸Æ`_c³a­S?V6“¬Ý„O›.¹ÑØ]ps¿+æÈ6xÖÁˆ5§èç®5©`¢·”Ï{s.™ïPèÆxÛnµåq{3¶F£¢Ûa>jgž6ÒYs4§TÉÎÔ݃^éúÎL®CIG[ŽôLü1ð%úaìQ€¼8†„êF{X§ãlÀÙòñà•Kð-ƒ¦.¼£pÄʘ婧*[ÜŽ“v‚™ë¾Ñö{`¾ ®\1/)‡ãi<že.“v‚‚Ù"/ë@ëÂreCÅNsQUE"¥a­l"¸ÒV…Nþó#ùùc´÷_:„¾fïôo‹£~›µ}Û뮋Jþý6oà=Á›“§ÝŸýx’¡ÙßÝÿá« ·^ôðwüW†à.s7vpžéCW]¤ø\%®G—µx¤u`âñy”µ€G@gâpi“N{@:,¤‘Ì:¯<-\¤Þ-®q mã»nNo¢á·¦rá¡+\Süöˆˆ[Έiñ¿Ç©`endstream endobj 184 0 obj << /Filter /FlateDecode /Length 8338 >> stream xœí]ß$·qN^×yò8É‹g툿›´!#±ÛŠbǶp;«ÛÕÞénwÎw+É÷ß§Šì&«Ø¬¾c F`°z¿ûšd“E²È¯8üÃNõNáÿæÿ>¹¿øø7Æîî^_¨ÝÝÅ.tþ×ÝüŸ'÷»_Ã@ŽI%½»úò¢¼ªwZOÇhânRî¨mØ]Ý_ünÿxPG•’iÿ V6Äýéápi}8úd¾TÇ)Åä÷¯ êTØ d§';EDáY)ŸÜþà §0ùý ’§£Žfr*I(÷_à{>¥i2ûW˜wôÖ²b<ƾè)…œœVj‚4žÆmIÚFO$¹{$›”b Ù)_ÊoS„¿®ßRÊœg‰ÜöRzÊ5Ÿ®ŒÒÿ{õØ޵Aœ¡®n Òo 9¬Ž¹ÒçÇ×íñWíñU{<µÇ»Ãœ kigáÑ×l¾¾“az•[Q)‡Õ“òf<\zíêé :%=a­â‹&¤Z§)í?'U­o“1Ϫm܃„¨´øóœ‚rGiüè¦ýu~Œ^9c÷ÿŠM”Ôóoð½Âø ëY˜ý§Å/½4Ö!}w©íÑ»[EÎV8'>™¨ÌþšÚÖõël”*¿Ìß©ü1‹û8WlyþzÕœ1Ð 5åÏ[¹m óø®>.¢À„³]¤6²¿~V[ç¡T PI§bÿN{ V´…ϽÒ…¬¿8˜ piÿ¦TxÜêÀðï0“8ASF ~0}òÁ³Ý=–¬¤öY-Ö)¿¥´Ñû'X‰AfhKÙ‚’Ù]ýçÅÕ?ÿn1´Ü·Úûé¨V* ,ËY:¡m‘¿ÌÀ†¹À1x»ÿèp 4´Ýÿ¬ ,sÛ&fù$£c#Õõ–ߦ ê/Zh[¨I’Ø×­‘ù@Vb¥6Þ_ãc„jÑ{oñ9±^¾Å6Žh¤†©Ù=?TsîSƒJVØ´PF£ÀJèkׯJL_’:åOÕÖêîSKÕ;¹ýáM„O ÌxŸæÏuPM,'Rwä¤na6?F¼‡Ñî^Ýî~»{¸0Ç8³»û<|˜Õv_1G³ûÉçe5ðùO~y¡ñ{‚Û9ð­1©ûòââsÀlÀÜ–8‹#…5é®BÒŠá8±ZmHcMJ3‰ŠStà~`C(Ë‚WÁH3@jkr¸©ÇH!¥ àSpÖ‚Ðü¦€“eU„¤•4N3”µ ¤\èÏ)f iiE˜àg-Hó­M„ .².[Rúèq7€±¤u³s7ož†bEð-iè&ð,˜ÑT„°’VèwVCZ~É€gÁY B>09ð,X±*BsôÙ¢¬Š'Õ5OEÈl`vãÍS‘V¥ &·Ä¬¦"•dx‘’z¤°LÂe1e-HûB«œã+a‚Ô/´ –Üž³*BX“ãíÓ#…ž[ ¤¥¥ÁÇd…ç@áhð*‡…ƒ ‰f¤ŠÜÀŸSœU‚zK³Ö©-î]0 ·å™Í4¤Õ)t¾î‘ÌBoN1V‡Lml!Ü#…SoŸ),?uíSR7/˜ÝtHaáæ³›É,‡›ŒU‘6nY‡›¬ê+BÊå¬)ËÞÆªH«{禮…*BÓ ¦k¡ŠÐrG§˜ÝT¤M>Öñî3ÿÙJäqã‚2  ~w-X•W„lèÚ¥"¤ÌÞë®]:¤°B૬†ZòQãWPÖŒ5¢õ)ðupE(+h}4Œµ yŽšI&ðepEÈrÓ§»f©iðãÅó…¦ 0%f(iubÞŽ¥¤!IMJqǯ!”¥=_ÿ¤YËdU×2 !,ç»–éÂÂ] f1 !i᮳˜†îZ°>ÚÆŠ¸kÁXRXà±õ/AHZ0§±Š),˜Óx uHaÇ]?‚qׂ‘P8¸gÁê´C2+›+cuHaÇWÀi¥J6uíÓ!…å_`õHa…tԜőÂŽ­€BF‡„Òg-Hc9s[÷Haeý—±8RXβöi@­-§à™ù~=RXÐÅÙ¸G +F¾&HËQc c5„°täíC²–·A w- cU„°pׂ³*BX¸ka‹#……»œÅ‘Ì2jâ[i9cºjaÙ©k¡Š´ÙÎܶ`$nZ0Î ÐtpË‚qf€X²Á ÍHiå¶ÚtmÓ!……+œµ $GpƒøêŠ $Gøâ·!möq0Ù'ÎZšc Ü7o©-èÂ|s¢G 7,‰…c5—@z¤°\à«ß)¬ ¹HÕ#…5¾úí‘ÂJš‹T=’Yæ6Þ>RX0·ñöé fRX¸aÁY),ܱ`æÜ!…_ÿöHa%ßµP‡dVЪk¡),ã¹Ò#Èʲ8®.Ñ7tàÐÁZüN0°ÓÁ{äͲxÁŸ¼žEð×OÄ0Y© K¤ Ö$LÖ€§Ô´ à­cWÂd?{u¸LЈ.ºý›—§×/O¯žÝ<;½~öz÷ìa÷ãßî0DèþÏÏ1/ÑÑÄaR“ÂôÈ K_Ý\ìŸÝß®¾ºÀ\/1{ Cž™c2'rÖ¿<ÀVÚ„ýòúò`ñ¯à÷·OooZÜÀŸõZü‚µr Äø•`?Òâù™}A‹_+öC-~­Ø´øµb?Òâ׊ýH‹çgö%-~­Ø´øµb?Ôâù™}I‹çgö%-žŸÙ—´x~f_Òâù™}I‹çgöGr<=³/ˆñô̾ Å3HPâù‰}I‰_ëõ#%žŸØ—”x~b_Pâ;LRâÙ‰}Aˆçö%!žØjñž®0ÇB<;°?Öá»óú’Ï1I‡ççõ%žc’¿VëG:²´„°Œ†q"д*BY¸vj¬¡,¿@0QÖ‚PV( a-eE˜óKkAË*X$šVE(Ë€g9Ñ´*BY|’ÀÒZÊ 0J9–Ö‚PV„Õ­ei-a ó,ÛlbA(Ë€­hZ¡,2sïn¬¡¬ÎæˆÖ{ü …ý EþÉèª0ROà¢^Ý_ìñÇ&ð—#pÝh¡G]¢‚k#üY‰Oñ_  ò§øòºÌ<þÒ§å5XjM«×Ì;ä&>z+g‹(1³õ{öƒr³˜›û ÜÜææ·sË?äQÄ£E]ÌÔG,ðºP–åE­b ”(œùoFå7z²3Œ4®¥§üÍ(5 `áB¿›á·ßCɲα0$èù§XÔáÒÄ€*òÞã3îµy½× ÿP0Ý&»×~ù#NXí¶_I1 *fn?¡Ë I¡K«[˜ÒŽ0õCRyƒ_£l Ó9æ}…÷Î-cŬÃ#’›p¸Ù| òFþ„õ¸ yXO!oÂy0D\ÚÝ7$‚;nÃû@xg[„lÈ”/r3X^X#Û¹>}øò`Ì’xkXý%øj=ùˆw«íÿëëÇ/^Ý^??|ŸTýûÜWi¡ƒ¡Ú‰ÿMó}•?-w iŸ¯4DÕ>$CïYûæÎ^€·¿~ÑnÖ+·¤ÿáøEÝ—˜ÔÜ|ß_¾}j|ËÞKäƒîiuÿ¥ Ðñâ!LÎñã2†wñk¯ óúE½¿/3û°®\eÐ`¡Œ_Î߬-¿'spG»,¯^þX S^dו=Îy(M“ 9ßÑ›1É5yÂ%l¬’oK¡-ôEšçׇîÍùÉÑ}kùcËÅ/Úw¿ 7N^?´&~Â.ÂË7µ³îÛåh7ôzHrAåa¾Ÿ ––°HÍ÷³ùò†pßi¹æ YÛ_VŠËaèæsCzc<½éñ¿rRÚ1ûÊÍ“VÓ–•bæ(ÇÃ¥ÃȰñòN,^vI úú Z X¹Û?o}ån&ãMŸOšåœ²iAU&ñúGzý`NlŸÜçæä°æÜö?'vÒÙá¦Y4͇’f€QøÍræRÉ:b‡ó—{¼š7ç9™þâÀ¾`¾©ö†}o½K÷Ey/B7Í—=ÎÍÿsLÄêi‚ö'éýþ0ÓaÔ£w—yFŠ8õ²]ÌUlñ&ÖòPvMw®¤Ž]Ðy{O€ÁÅáE›µË .Û•nÕíý…åRÜò[аޢ÷œÂú)¦:—ÿwN2%ðºfvÜM°øR™œŽ ¯Ö ®+äZÞy,†,ì(œöáËvì.u€Iªä±]<ºàTãö.¬¢ç~ Œûì0ÙëÃ(;o©^#K2ú>ÂçÂ÷ƒ-?l„‡6^Œ e«µ<„á Â’ÑÑ1þ4v+ñºVgòUÀßJ¶¦'Þù\yü„*é½oüÍ/º‹Üd|ýzFËÊùÙÀF'™R&‚»Í˜FDçì— ih­—ªµÞÿ§¿Ã—Y+¸Z0¯ë±µF¨èá}º°&ñ°bcït·êBÁÕkö—W¾ž’æCü<•ÃüG}º{¬ñ ‡ø/š @Öc¯Ê¾Œì¸zÁ¤}*×zCBßlrÁî… ±¿Þ/}³¤øåÍÄ5.Èâ꣒ö%~}6Î2Å‚ñüôP‡SâÌß g/}äã_³.î.-¢V—ªdéÔ†ºû?·¥Þkèùc½·\þ™Ë'´jÜroÇ÷ðsÉTB/P&4|+‚["MhÒ”L®`¾œÀ< š›qØïfs»"÷aó¹ åA§ýŸd2ÉG½ì‡L&“ÖÂd»'ôi­æîYßéVÿÍË⬋ ,íi«¹ówæ…LÄm 6Fg£‡ï÷¦%iÞÓ=Á·¢†Îÿêñfx:T_ó@iS¤C?饷M¸Wò´qÙ$@M£4©ãuYk39ꆶS璉ÍE¾¼»kÚVù¤k±œŒ lËfy.kVwºO(mdÓh{ÒÕöÕ)&Ùü±$®THC  n‚çß>ÃõÁ‡iyÇõ®TL B¯¾Z•Èã‰:ß £E™y#(£YÒÿ—Ò×5ŒºTë#WÝÖµ²òí…ÚýìÂÄ)’0Spxàî¾!IA›ÑãH«0äÂì J«>}h…»c³[— ’Ï⸠s7(œåк4—'#ñ°Ô7igðœ¥Êû¯û"Ô¯CÖYú½(ö–;3£¬<Íñw¸Ä_zïhœËn€O¥Áöz¶Ç=•8A^ÚôoøT¹*L~\ÈoÉý&ZºýR ^K.& ¼_ÕÛ´ ÆDÛƒŒ_Ží"wÛz¯ïÿ &h Q)Žiï†U€'ðỄ˙ô<þ¼ß¹µ úiZ<¦ìi¡Û]Þv¨Köà?c»+  k9yµ#⼸Þ!CÇ5zÜ¢ÛSOÛ–ÔíLP–np¶=‡/š?uü¼oÊöàê#›»ð’G÷M©—)…n[³UÚÒ9ãíû5eã>"ïÜ@º¸mWÈм‹˜…wU“«Mé»’ î`Ÿæ1Ta1P°*uó… b\SüDJºdÙøI¬|TYiŒÇf×cy3i³(~Ø­nÚ6 iRÕ÷,å²Q§%³!»—|F_$ ²ùEò86Oˆ„344okáù!Ya]ªѨ¾vºïs{êØþýæÐÑs8õçî&óN3Ú º’ìOÞêxèZó²åßFî»ÆJðµàÛMP¼ ¸.vuÚ¦£—Eó~@AgÛ H˜^õ—þ1·#xˆÊŒ|1¼¹ …‹w.)‘¦ßV‡WS¥Z’Çíõ Ç–l}×%Ï÷·×9à›çÁz)÷ljãYò‡ù–<óÁ¼êH|oÞc‡ok2t|ñП«Öþï°2ÃC ¶›içBæ²>:ÝÑi´|t°ÊvË7ân.“ÝØò0ÂÝu^컑ò¦)Î;ÈeïüC?F¬Db¯}]hüªˆk°&8½µC:p½Ã4íûõ'ŒÂ!‡½ó^CÞÊdº ìœrišZo4»?ç:x°åÍg•w˜ ·s td¦]aºä“ÌýE‡ˆó ü':¥ì–غùë‹ÿ;çðvendstream endobj 185 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 6156 >> stream xœ•X XçÖž3jë: ÕÎP¹Åºá®Õª]\j­ŠkÕº€€–„„„@Ö/+$„$, ;(ˆ¸ÖÚÍV‰Ýµ­mmí¢ÕîÛµßÜÿóžÿK¢†þ×Þ>—åQf&ç;ç¼ïyÏ9Ã#ú÷#x<^ÄâUëWnØ0}ZàXn Û{˜_€$Üÿþk… æƒÁý›ÆF¿>œ›4 6;‡|/G¢[,Ì–ˆÒSÓÄÑ%Mˆž>oÞÜÉÑ3¦M›ýtfŠ(=)1+zU¢8-%3QŒÿȈ^/LJOK¢[&gÏŸ:µ   .137N(J]4artAº8-z]JnŠ(?%9z™0K½:13%ú®qwÿ³X˜™'NE¯&§ˆ²‚XütÖ3ÂÅÙKr–Š–åŠóò Ÿ/ܵR’´*yuJüîÔ´uéë7ìݘ‘¹iZÑôò™³fÏ™;n^Ìü<±`á¢Ç&Lœ4yJÜN‚GÄ1ÄâÄZâQbK¬'ÆˆÄ Ä&b3ñ 1™ØB,&¦/Kˆ8b)1•XFL#ž%–Ï3‰Ä,b6±’˜C¬"VÈmÄpb±ƒIÐÄ(b4Ið‰‡ˆþÄB@Œ%&‚%"ˆÄ b0ññ 1„xŠX‚QÁHxž˜÷R¿Iýò|e¦¿B0HÐJŽ![ðì£ÆSû"¦Dt $‚×Áƒ— þòåœx°hÈ!o?ôãa«†]¾v¸kÄÆ‘3GÊGþ‹^M¿9jã¨OF/}*rIdk¥zhÑCâ1‹ÆØÆ\ûðØÝcŽý߇]sÌ,f #ej8߃œø÷sÔñ¸éÜg´¾IçL”Š”‚\P¼í¾Ý™KÊrÀa ¨bo‘®f°¯5Ùÿ àl²–fôµÔgÚºœÍ /¿q̨£…Ye†bƒš ù’ï‡;°;ñçùp6é{F}äüÛrÁÞ>FÕ$úÉ_ø“^[áfêܼJ½ÿâ{1ˆ]MÃaäçöø‚-ÛDz’[Ñ!º æ àÃäMë㲕VL §öÃË~Þõ^Ø~ŽÏ™¡†ý]œ‚†¡Áh(bõéòoàø c¤@Ûéå;ý—þ¸úù•÷_Ú°dÊ¢˜é#J?Wáç}Ó÷1w™6ZŒåÀD¹K\RM©²ŒÑ¨•RmYú¾„êm€Bqè´mBÌeDbÓ㾄CüNµ'KUÄj6ñ'I35góµ_á|ìdدûí¼«0æí÷VÚš, >‰üpjµ8MϼLûDíYg€ƒa|öêÒ´uÛs sØFàJþ363o·`lŠD÷ÅÆÀ :Ö*«e¾²fÐ L®_Ê]M¯¿Õý& ÎÞ´ÓgÌ aÅɱ½|8½/PÕA ²ûµƒ„áp¸ ®ûãEH£a,¶šþŽ„#ÊÑ !7ÍF#ØÉd8²ü¼K8Ÿn4mö#°P …VÙ^½|g£ð¤YŒ39=ˆ"0HüËOþxñäaw ›†R/„+>ªlX‰âÀV½xòò­›×¾ù¨ö©]ÕrµœÍ~~Í†å€ Q/Ïwúypì¦á(Ò ÑI€†yµU-ÖªZ3Sý«É1EÙuµ{3ôò„2";àNÔ‘º¼²d ¥rk5î6SU½…qžÇ®›ñÓÁê¸Îxc0Aiáq,y­ö“¦*g/°QBdêe" £\*@µwŠô,vm®ŸžÓ'BW ÈCÐ=BZÛ=?š¾ëŸ^½ŒI­Z šj½M§Ťå+årÖä²Ôß­VÔ/|üGwØøáÁLØBÃ1¤¶èšÊjåm&‡ÿ‹©2~À½½zi’†AcÈN¸GMþ°0[‚á§ôáÇÔV A1»¼W–p˜ûùÜrnâ{È0èsnžw½è‡"öhÙ»% Òƒ'Pìö-•”ŒÖ«wg‚L /U½ /V,e”Ô©¨©1Ûö×1/%Ÿ^\ Ovýpâ`Asf»×'´.tn±¯³ƒ}T}Ë1H^5fÈŒŒA£J> ÚÉi;`i¬8Ì”£¬F,VËÊtLȹsþßêxð)\z]IÃaÐLÒõY–dê‹d:¦hª`Z8þÏÈd¤ÔIqvQóß¾ýÛ…ÎRš_¢iùSK´Å€Z ö»mÀd®fïɃ$. 7ìnIü»êæ#Z6Y]$KÝ–¼P+ôÞêòŠ—,M¬µÅÒbmq^ŒÄñ¿ï'w!cÐ#eÔ„_@KÇQ[ëÆœå@]ê+Ø­ÞÂe¯Ä‘wîfŒ[P°("Ü™êI4}¸~(ØþlèàMäitÖV êAT¨žvêžayŠÏyÆëïP "åÙw>y‚^Hü¡*Õ%ÕEƒ= ¤mIÆŠ-H‰¯;ŒU À+ƒc@xK€z3äèkA?—5‰ kbÓJð,XIa¾v{€ÇÅ8§!m奈R”€Çå/Kºø€³ƒ á1×ÿ³Ÿ÷!$ ž¦›d‡OD|°0Û+÷Vt[N2>k¨Ô?-kdZ}AË.Õ!{ @©çßXÿí«=ΦCLMö~Í€jnú&Wk»îSZ®+J-È)ÞUš¨M© Þ…vÂaæ°ê¯áÿÐXP7¼a‘›ЬØYTjÁZAs˜š±ä_+ô/aœ¤¤FÁþ0âGdˆîIDÐN.³÷ĈKÂ(#=wKQ!ejµì´Ø5¿Úêïƒýò&z MB³;ÂŒT lPÀÞ‚CΣ!‚´ü»êp.p¯˜M%cálAüPp§Vq§EaÂ¥úïÔ~ü¶VW„©­ ˆ“Û ^61Ý._E×ÿ«öë¹tOÀûhNˆ¬yn¦y)Þ¹À ú³ÎãÊQgêå9!/ 6ÀB8œËðój®ñû–X0¿aÓ> B¥™«t À¤n‰ÚžWïûdù‚f%N€! hæªä»VîÖK Ör« Ø)·ª.Kš®Ü¾«UxøÊÙ/Oµ0÷ô÷ÖyhýšÏBíR¹DyZu‘Ч$äíÔü­=ç{ÏÀaq¶ƒ5Œz# ¤ í°§½òй8°=7 M÷Ø…é8ÇQo|ëeÂ#C § í5¶*ke$ÞÎHÃÍñÊ]&ä³W8¹ :LàÍÁAX.œ‹DŠ·e­•§QRw*VhËUµRP¨ø» ô±ÔßßìÇœP`$ÍŽ•[OÚÒ-9¶=æüܬ»êË®ó¸ÀkB亿âf£ÙEµ»[ãA£(õÿð™/ó¶w±ATTà|æO*ж¨éµ;^þò¾ùúê¥ÚgóµšÌÒ­¬|ÞÒgïÎ"Á<Õanõõ‘°Ö‘ pÚ äxN[¶_fÎQ‹ûÞ ŸE…W…{ýµü„ËÂáÿ|[cYAT9éÃÒfÝw'ð±=p¤Ÿwí×Íéè[»Å6Þl©þP_¶)ž^±-+IÀs3Q˜å—º+NxvàÁsæ<¼OsŽ -^£ÃRgëléþ˜:€Pî6ç7ŸÒ;“JÏuÊ¢©TLäï‚ËLŸÜÃÆ°ÉIÁš•ôÀ§ß:Õ·÷ð\§‡Ú3|˜é§Kñ¦Uj¢”yà€·ªÖdf=Ê6Ù@ýtí«oÔ>U Ûâö™«ŒV‘·Ô (¯·º¹ZѱNœ¨ÉÜÆæxÓí{õè¬SS=&-[(–ïÁÓäºÅ³·+žyÔÒ+ÏÇpÒþ_á4Ѳɂèm™ÇΞîñß·gûªµñ«Ù,ô#=1¾û@»ûH#Ûâq‚ €ºq,]ùhR{w ªi\XMïOø³þëÅ. ©ÿÕ^dË–;épøÇ¹êÞÑ#dÜ#ðýñ‘Žsàuaý%$`ÐsÿõpP_ÚæÔ'?'?rl“¨5"C)«\T ˜zò¥¼ƒZ¯6`m(“É@–†1T;òñâ]fivZ[-¬¥ÁÚ ª¨2àSؽŸB‚zIÐâEò‹ŽÍ‰×-Ÿp¯/^ñžÁÃá¿ò¹ñÜÛtC¡O˜!Šr¼ùM­­ šrÛD£á}²q2L§ñäëðR(÷¡¹볨ä½*‚#ÞƒÚ÷eô§³P­Ðè`z¹pW÷{2™Lž5qSƒ°.ŸmÉnR\øNQä …/¤P«ãÏ,@ƒÁn“”3K%²RF«¡@Ÿë,öƒµÌ‘Ô÷”¯â†I ‰oÞIë,®b³› -1…ÖŒrµ)ÙÛº¨3ïž¾ ÆYYE ¿£±Üá³ôý(,fpôß. cÈ\\6êT峑Á‰TzÔìÆ É÷›ÜŒ B½¾Ï"ôtx Ú~o]‚ƒp¢>‡4îð‡Ãl@qáþ¸DñhÒ[ð»¾i_†çXð¬¾ke\ßµÒä4û*NÜø ò[4µïë80ŒjöÜtžÊçâDt†lUiTßÍpúA>wÙâ jË®£T‚r““=o þÓk*E¡~—–} ù×!ñƒ§OÞÇü¿rF3Âõ ‡£Cõ¡ã•>sÄÐðêÉm“U~Z”ûç‘P „¬µW~ESý»G::åpRUýDäÜïùÊKU—ÊðP¸½<µ~W’RÅ(í­H/Ék›ó ß×=õ … ¨p~¸Ü¯ýýñØ÷R/×}§¼ú.ú ÂF¼äcèó$#ÀÀ_c+pÖ†ƒ:¿æ²®ÇP™Š5¢KJ•óQrñf±|jü¯F'ÕNÙ‚ ÃyÕj·• )úCŠ!ìÒ'ëw‚ߺí`'U$ö:à­b¬öo ¬²‹2JHPdÞ`L5í6~7‹€`«³z($9JŒaàË`®6÷´àÛ ðµs|®•ICúyÈ{7Õ±hJD‘ï=ò3|ŽàN¹ÑWôsÉWƒ+ƒÑ_]ìš=MŒC«byzÜ_ üð 3t ×C[êËCÖDU6Û1oŠ&ÆŠâd¸ÑÎ×å«¶ qº(•È!l0¸]¿ë·©åóuŬ:MµÈ©88Xñ¶'¤YhT3™Æ8#8 ʽ&—ãtÅ1àû¥ÍÙÕo·W¼drÝvôÿZÇã&ÄÌf´b1s©ÜùÒ2¥ZËÈDÛŸ^¬–òõ “RÚ¤M]Ý5¾6fÙí9‚É}ˆlï!sB¤ ”q:{ùÜ ¸“†ÔÕSŸƒ/¨ïž¼ˆ§˜q PÿÕ¢:©¯Ù[ßèP;µV¦þðɃoêý÷÷>5EÌ‘bþ× dJM)G‡8xƒ¬5ÀÖ`rغ@Eð¥”<lÓ3HAþ)‹³ˆ ¯o%vêЍZ^„Y'l1ؘ6÷t@¯+ÊAÓC:§{ªsš%ñY% Ú<½J>[/ÕÉõ2¬l—z7š §”EÊ|ì…§ö¢É÷2ûN»­Óþº2‘ÖÖŠãð13e©7·¶äeÅ1¦&S0…f.hê ¼O}ï:ìÆ½ý<|¾¹ÝöeO//izMÄZÌ.'¨§š Üy[Áæ’I·v£¿õó«Â7â÷17_«þ4Qg6žChÒÆ%›ÓÚË*ëj[šr`dtôÝ€ê9œœ•Ÿ’ÅîÎÎÔ§ë×håŒV0g!!ü\Fx"\H÷Ñ—gȳœ@ß R%$ó@KÐñÛDdI±FŠB %ˆ<×§>6±žláªh#¹ý,@¢ÐÂv?œ·óo`Ùè;º>S —…A–€ªB©×R2»¼Þc6Ûí̉—ÏZÛÕÛ¾qä)ÏLKÜâ9&gåVªy}ÖV°©dæç›oÂQpØ/pä·+.ÇdïÔæm ,°ë,œ‡+òèÃ'¯€ßÑàˆÞø8×àV¨5ª2 ¦ÄnI³¯©êxÏ–}KУè9üÛˆ&\^þ=‡~Ç}¸þ[DÅoÌÍLa¾DÇi!Ȳç·Ê|ÊnЄV“ʼnÿm?vÈj=Ú}ÁõKvÇL_¼ ·—ë îW'h­nüŒè¡ih†1@CåU+g¸Uv`¥¬ŸÈ¢üíö)šL{ÔÊÜA¤2ß9ˆï„})õtmey%pšb‡ÆŒN”H™C‰§ª¨P!–8KË5,t`M¹ŒV–¨å%@äL…Ýl­5Ïû¯\ŒvîOOm¤«Ô¦°?z¹öÃ;á•V¸fÂQ6‹½¸(g©'/ U¡'Ñ¡DëÌ33™–¤3ñ-€j´ÕU°aS7±©)Ü`Uµöëìîx¿P"uA©¼BíT±¿.ªEýÀð„mAYh´Z‹5PN•Z šºpÅ.„Gn]÷rÕñ~çæÞz´ÓVcÇM©N^!Wéôj%ƒ­¨‡º°FU•¸$%"Mš†‘ ¡“ß)¶kðü•'-ÈmeUeìOkРµ µT ò£TÖÂzG9& ‡œËC”NŽ_%­*qWÖ—·X£µü¤Ñn/òûç1ŽÀ ¢|Õu5•MeeÇ÷ÀÃz·°.ªã]ã6ðá÷°†ãÀƒ pœÑŠ7XSTµ¼&?S“U¢gDh’7Kæ¢q Ö}”Ô%ñ¶Y[A= 0w`ˆ¶ãøp¿‘®Þ*—ªÕ†B5( •Þ—`ÿ=.ìÞ‘“º7µ)¿½ÂŒæ 7ôòþà¦ñ¹ ìUØ¥ ásCÒ0>œ¯»¯ Lîå½02uò_ØPVr‹íðÉJ¥‡D’òþç1ûK„ƒ#âÿ[µ„endstream endobj 186 0 obj << /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óûendstream endobj 187 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3958 >> stream xœ­X TSgº=1ÖÒ FMí=‡¶ŽÕV­¶]¶Ú—V­¯"*ZÔZÞB„œœ/ y@áyIEÄúB-ˆ):í­½ÚVÛ™öÖÎtîíëþw­ûœ©vÖ²½³²² a}‡óïoïoï@0iUø¶õK~ËÍpOàþM˜ÅÇÝÖŒÄÁT!LØú°xf:5 >€v>H‚Œê y~–49E6/a~Ø’eËž[öôâÅËÂV¦'eIâdaáqŠ”¤ô8þ™‘ MRä‡Í{1E¡/ꩼ¼¼EqéÙ‹2²’_ž¿ ,OªH Ûš””•›”öZ†L¶).=)lüîÿX•‘.ÏQ$e……g$&eÉ‚xd¥,C¾zMV¶b]ÎúÜ q¯ç'„'nJÚ³99e«42-}á"‚x”ˆ 6[ˆßs‰Hb±˜O¼AÖ¦‰ L£ŽLã…â}üõ >IÌ ê|ÜBŸ%¡ð!!*@«ÄvŸ£Þî«8 –êý• }\òˆ5:7<†¿O@k¤L1ä’1-ÉǾì@óíåz0hÀ\h¢ôrùü-@æ²ÞÊÆò&W]×߃&Âùñ6ß®eoF(5”Ḵ5’!O¡JW&h6ƒ™,*{…Åâ³S5Wjûl™NÅ(M*zßo6²%ÀHt®Â:Oµ³ÖIs®;w<á ò\räµùò³üƒ¼˜”Ÿ;çBø'èA$F¢Ç)ÞÁ׉÷øß;Ñ„„m§é®¡c­<Þ³96gNj-Û¶#zøªü~´`ìÊ\Ä»ÂÏùéb}šžIdÉbŒ²Á^⤛q‹Z  :ÿʸEž"PïG¹ÃÙTZEw¢¹Î‚ÆøS Atš‡æÿOÄñˆ]±ÉR­ˆödÝÃÉ 2dЃ ±«ãüµ3@ö•oM“ó÷É6ÒÚ¬Ø5;€ÜRtÓe³Ø¬.:xÄþ_0²î!Zñ¾X/5êשÒa^”AΉÐ‰¤(=¶ü^Ló—DcuA­¿ 0›Ôôµeœ–v ÿ"úèZ4?s³ŒXú8½kë글œ#J›Óa+·8ð\ŽÉ|ÎÚ;#º„#¯ ­Øbµ•…tkÁŒVS[x*eÿ |ð]µ—QKÐg¢a§Jn` õ2Ìf#0¤¶n›µ¦”:ƒäcUâÑ‚IL®‘R®Væ,r¹h±®öÀMJÐ4"ÓWËÍ&›fKØâÀUÜPZi)­±RûÐ[“rA2š,*(‚|ê@_Ì‚ÁTHó¶Ã$ù;L\¶¨,§ó`™®]¾æÅ,˜CˆÜ¨Gl±õ!ñ§`‡¨S§è˜T(!5eʦåÁSÜ{_KÞ™£¢tý‰µ{#³[û]VÌì:ß;×Ѣᾫ7 gQÈ;»ßŸzÚ)>RÔWÛÉTù sr¶ØOª¨“v8 V²VS‘«È(ˆÞ4üôD7 >úÙK5ñeTèŽdWïC õÃ×›»ŠÝTªI/‡"Rç(h¨nòô?¸žŸÿdz^¾¤n1’Áè&Ö–ÄVÕaþž¢ nŽø¦¨Ú‰^ *úQšWZ V°Kê ìEYE¹Xö‰ü3AKEóºhˆ5™T –ìlO8õß'ï -°ùz*ÿÍ„[”Cc•ªœ-ôø|<ïG~Áù¿pDÅqbW›ËuÈú2¨q¬: â™DH€x[b@zFÍ?Rxoâ›Eçq¼Trï¥üìÑCw3 6ºzláô0EÎÀ@5@Þp••‚µ´’~5¡fÑz¾îW”ZÀYꥃ¹ö;ì©!´dHÈ•s³ÅV‡Å6Ò­÷æ¥dz3õ*ßW’æbD™!K2ºøHûPûçô«Þ^ µä‰½þØE)ü<ã8Ϭ•¥”ËßüÕn7“™]$W'Ò™k2WBùì€ìtGkkU³½×X ]Pßèõ×t{0ƒÆzò9FJ©|] d&4WÞé '0ïp›…ÜLáÆ8Ê.ãÆ”Í>qL<ÄC¬->pZÜä1½uìÇèš5,Cóöè÷ë×$·òuN³“>‡m=н̡1ˆƒTyáàt[À1QìˆUžEKŽ ¹"nªø€Ö/Sd)§Áa 2m©Øˆ2vó¥ü¤íºímŸ5¿GÙ«Þ{D'mi^ì&_” ¢¢ÿmÂôåø.}Í©ý‚[ß ¹nTìlqºú€ôb”mz‹œ‘B4ì¶Ån>àc¼÷ˆªÁ 5fãb¡LnñäèžYÊ[×lÃ¥4ê{¬¬œ@vû:›ò*r™ÍðòÚÓ oýç_øèqk›]gö… b½243ôCô͠ؽ«+÷À=÷l5Þ%ÑTƒ´„¥Bûz•©U©³y!?…_ÀÏ]ztÍtè‡p¤þÐqò4rŠwó[ô©áË·d·~°õ„M®9L7=уͿ1*ÎÌ–˜X«“Æùpžr3¸ïÄeåY>>$t˜æ-|Ü8[½éml¯ùðvT_E©³ÀRêÆ~‚M€Ñ²ŒÒ@¥>Ë“ü†ÜeE\>çí¿~ÔÇÍ©ÓùBþzS6ä=;3ô4Ò$Nâ—­ŒÙ ä›ên»Ov í·{š¡Š¬W¹óµ‰ÆÈ¨é™ï¾øö¯Ô×eqX±ø$w‹ïí Ð?Ë ›gÿu‡'ñQð7TTc¬FÝ×úÆÃKÜM!·–»_¼ÓˆÑ2“*·j_sƒ¯ûxlׯ¿e™yƒëÿˆ¦ò_^»Þ­7±l‘žZ¹ðiSÛ³úú›¿o:Fw^:q 3¯Ïì'ƒoOoÐïo¿(¼=í§“GšŸ.Êtùü—£çgErfŸ²AÂK~!ðÓG=êÈ$m´Y¢×±ùÅÆI·B‡ ÇT8p'áùæ1X´ôV«¹ ¼`îB®e–E44ú­µ ^T€Ýéps“Gøkþ‘Ñ ÿ85»à N°xv2]ÿljŽç>´ç°`\BîôÈñxb ÒdŠX–¡æéµ¬Ž¥DW•Ǭ†"†Ñ‹3‰¦Ð/oŽÃ'½KGê¢ï]`^G½¹'ÃM/lògRqÁ>¶&£\U.%0¬ÉŒ=5`oc’ x›‚ûH\uñ¬m¿…´y,Õ.“½˜Nƒ½8S¤‚Ô–8z Œ®Œ-£O™]y8Æ› f=?atã,>‚«6V±møiï–ó4èY03E4?k´Y½mæ­_Û-1ç™…RGoÙ -æJà(e±×Þ¡«Ü‡^À|]F%ÝB¤G*q+¼k;V{­ .“<ºçàÆGùÇæòk–[úÕ/suƒî»ËûœÍ´Ã'îEÏk+òÐ>¹ô~ì¥ƒÑ 竽Î)ýháÔûY7Ðyœ½ZqøøXT]~‡¸/‰*ÿÝVã½âêr÷wb¤ëͪôu6ä‘95EUuzã÷ÅÏÏâgH T.?!h}£Üé~:åpùHÐñyÀÚ°ñ·º¬NüjƒZ /~ ¦EÛ·Óé² ¼cÍ¡5^2;‡?ƒ÷Ék¯\æ§Q|õ=Ó!°¯üçt¸„ª‚!:|JµJÍ«#iÝn“”äÊ¡Ô 7Zp9͆-Ñ2TAdzjéLs[“­ÁÖDÛöÙ@=œM9¼£'úñýI> AÓϾ}&î㙡ºß…’Lþ$FI¯¶47U´WtÑÑ+åûq×j%g’÷,”òóK~ôº²ö¦/Ǽ®D‘­“”túóš½Zü’¨“LXodbCü©[íè‰R*ôO%œBܘçRçÊó2²êô•u-µûqÈÌñ,n 7‡Q̰pdÊÈKbK©Å¥¤•u•°¬®˜ŠŽL|wµ%Ϻx~OŠò½1 §ŒÏè5WÏ:UèbªóÝjw$“‹_züé+:¿Ûgo¶¹)°Z¬˜rîb0jÍFñIfËàuËh79œk¹‹r{šÚÊ+º¶_,<$Vµ=„Böz2Ûè,¿Ö¶ EiO++±J½mÐC~üáŸnÞjY»2“5˜r(VÄm³T—RÁó~D|Xpëܯdü´Qì%yP(y£sÏ±îºæÆ ªú@åE¼ºSb„†2d¬QÆe€äG øñ©Í¦!ôÆOÜ«§~ÿ‰ÞÔÂŽB¹Af.¦7ð?{˜r=;^#ùYÑo×Ö-u»×쌉I§ô—£j£!v핾õ/xòƒFPÄYÁ§È!Dï q-^Ém«Ãáü ì§%Ê3˜4fc‰2°¥» — „B”uAìSÕg¤îMß›YSÐÔáoo¥‚s|Ü*7ʶVùD|œ{’Êð}Ô”‰ÏÕMì+›:• þ+ }ãendstream endobj 188 0 obj << /Filter /FlateDecode /Length 5726 >> stream xœå\Y$7rös¯^ ø±Þ\íUåò>$,`Ik/ì]²¶a–l ¦{ftLw¦5’õïA2É&³ŽÖh^ýЉ,žÁ8¾8˜ßoÄ$7ÿÊÿÛû«ß}¡ôæåã•Ø¼¼úþJ¦_7åßíýæÓh¡¼™¢ˆrsóâ*w•)ýTØxa&©ÝææþêËí'¯®að(µ±ÛàQÄhCÜ^>¿Þ‰IÇh|þA §…Þ~ FzíÖ¶xs½ÓZM^°Q¾Æ6Fï¶Æ:ší#¾6BXx~­ô.Í-ô¥Ü^äÖ6fÎÍómÝö¾ ÊEö67URöú!­Yú`¶·äuY‘‘jûãµµ“Úm÷¯°ER†°}Û:Òñç­l¿JB¿_jXT(ä^ €r8ƒ.c9ecíìöŽQI¡eŒÛÈk\½Ž8.]ÃÝL G§;ä·F~v½S~²ðDºýÏÍ¿{8GÙúIë7; +Õ&lnî€/¾ÀN*ÆJ'ÎSa‚=‰Üú«-6°?œÃLÊÈ0·þ)--Då·_ï¤ó“ßáctÖç!¼Øø)z‘FPbòNÉÍNNN;­óH"mMÍxZ¯UΧ}Ȕϰ;ÐNx´É8Y».û«k\wÀŸ·¿o\’{J)˜Ì…É7JN°MÀbo¾½’Öâ¡ÍŸ¯¶ÿxý÷¸ä@¶) ™Ó «HdYqZ¦‰äo8ÙÉ•‚#œ”WÊçn_b7ƒ)ôdÁOöáÜ•žŒåÜ¿ÁNÐÆx3:…)$h¡Èï³ K¶2ó‹þÌd^o@¼Ò• Žo ØXZh}ɦܤeð¶ÛÓ·G÷¤aO Ë=å¶ŠNO1;·ý›®-[ŒÃ“ôŠ0=ß/gÕ" B¾‘zùûüÜ ![Œ¥w"qrM uç5>l]×ÿQ’!ż~À“¶ N¸4þáÅ… uàß^°àÅIvLcÐ(`4=Yg3Aì¶ŸdY3LHA8]ŒÀ-@d)á0/„K6Èot!,%»ˆ3;"PÒ8ÉŹ?!Fܰ—UÂd¯àz)ñ“ÒØþ)G+|HRâ¥+Ròݬ Åh]fíΓ’îÐNr$Ùï@+¨…ÖÞåÖ»h‘å%ÍØ››òБàÊQ*éÌ ¯†ìa')qçxÐÂø…^°Æð xÂ+©dÞ6oŽ,¿8š É‘¼es /¡ FQÍ!wVº`Ø]Ëæ¨~ÊÜd´ST¿ì¸(ï4ÈìdæU—ç٧уW`J“{¬”Ï6nå|ÆIO÷Žybº|– õáÊ–yVmh“3Ònÿ÷z$Éàzs_µÓ\Øuñ NpÉ€s5ü È"rG3Ç(`¹-ÊÓ˸"g•ÚŠJÉX†‘bJEŽ£ài·P[C8¨UmHqkP°ûÌùMó‹³´j’ Ùcž¶±"²#ù^òDj‘yÂ)­,3 n ñ­‘ŽHÃלÑ+#ôápŸ!‰Éë`Ù§õG F¶‹µP«¹‹7ÙéùŸ²!à—=h¯úh˜Vjr+ÀéyþY½=ó5ž.Ù˜¥IÌýtÛ’·œÕ騄KlB=Ž6á=¾õ ÖšË1óҨPöùÌÆ æ=wɶ§w£Éa(„î?áKp t§É™Û …‚4=ƒÀèþÕrh/s€¿ðÙ]î ëc€'™-xï¢cïGàu`U]ü&/sdMŽŠÈ 9ƒ ™²q{æÝ9¶Ù—û¼ ´í I]ÑcBqN³DðeF®Ùÿ%‡ï¢=Ñ@À‹‡l,ŒŠr-ŒŸ²"°c8?š[ÉcDà¶»& äíÅ~B…Àgø Æ-ó  âÁ¿LY¶™¬ÏŠ»ü¶êÈ!Ì8åÜ@ÂÆÂ|ÔÏï§ÝÊzÖˆL£IÈô?®‘³ˆwñŸ@ D<¢ö)obv€ñÙb+ Ë1L‚-\(€Ù·ƒø.·RÑ1Î’‡.éÆCϵ¹g!RšNꓘƳCZO[…I¤  Ü¯Ê 0žÃ,К òeƒ¦^Dv×—-å$´:óÌ1¡ûÒºC8=¥{Õ†DúŸµ£%ˆtzžO16u¤‡„×:HwA,l‘= [æC/Ž…ÍùÐKbaHã_ n ËæÓ„rYÙ‘ŠÀ ùq­hpÈJŠÜthb¹ùË­" 5×,8 Æþ_su¹v&¨"õ !r€R–}ÌÇ€ žîbÔUÞ g;ft±‚ÁtÓíhPÁËá~E]ÜÄT…ä Ê¡CCŸ?÷m’7ø‰ˆã"2¦±Ï(O3‡˜À”Ÿ¯ƒ†QMD€mD\À£Vº„.¨ç¿Ç`±~ž@#––6Iø*,¨ÄN&$@v+j¼àr¡}§Q¨wˆsc¸‚©·M-½ÉñÒì×{a¿Y™œ•¶Œ 8wq0Þ &¨ZYþ5ñk -mÂyÅq"v`gMÆÑ…HCüBC)yl tK!š«Z½sAÁ0ó<ÔÀ B!²/oÚãíñy{ü¦=¾>îÛãC{¼¥ƒ”  Xt# 6 ˜¬ä¸5z› ¼þŒ´È è!¾yŸy,#e]ÄרïÉ38H3ÃáÀ—ãÛ%ÊL@eŠëD³Þ•N¶ÁkˆCã{x•§†Ö³ªOÚï.fi>o®ñÐÝMjPF»îÏL×yt8/bm0¶s‹ÏšË”ˆ%{¿0[ó‰r=ǵRO¢^©n;¤pŒ™}iƒ*UÎ+K­ÿBZ'JÂb´#”|[ åkl´œe=1~ÈoCd¹ƒ©ÑäÃ<±¸8Â>‘T ¤ßT Ÿ­gB°7fB(›Î‘Ò¤yRˆÉK¥(¼"ùÂp)ý!À+¾xÖ„!«|¿Ìj€ÈÆ[bÇdNsOýÓ"Q0þõ—¶Že°%@`8Ëo.e€ƒ[uœÓ8ã•è… ÖTÓ|uu‹\Li¹0£b£²B9‹ZdÊô”ãP¢aù¨˜S›M -ÙEèæ8Ñ0‰Ö•LžT)àc –KK) õÏÙŒHÛwÉñâ"3\Õòt4ï„¢c¡èLÌc¯³?vó €\Ïþʹ”R_Åp‰²"?©Í•hߘ&+YJ‚Iã}ÙY–YX&›*9²:û!Åo™c•± V&öC,®¸_×CuåTÿS¥ê¼)9Çóz´À\Œêb]dMÅÀjCÈ‘“·oÇêðy¯"У,þ™ñOI^ƒÔyå,Ëq[P YÛ ¬ ˆÛ?6ñ_Sô¼÷ÅÓ4ˆHÓJP›R/õÒ) FX©çÀ˜|ŽKµaÕ õ,1Âáz+šižS°ðˆ÷S:W†À×; .räÈ¥èŽ êjOqÊ…Á’ì›Aƒàï8f—ÉI˜m柯nþáË. Y™¨©–,)†¿ÀÙÅe)8›åɺ̖†iAz7-½UŒ[ò¦« ´MìaNåÐhˆìüáè ;º”6õ¨\±ÔOK=¸ç:¬æ9÷ßTq#f§O6á äj™8=ÝÛ“Nßë±È-®è}–||ÌãÈœRžb”™âºØí]¯²›5"Ê–ëÌyŒÙaG®Ü<æß10ÌÌ,liéÎmi“ – @¬Eò~VÓSØ ¿³pÛÔø¡øUÑ)Ú:U—áÐ2¬œ®² ڲʕCW‰QIZ¬\•ðl x~ÈÃEÉÔ!¿ų}Ù8ùÍyñ:)|æŽé GïçqÙt<’›g!þ ûÄIÁ Ë·B>zÍ‚ùßåá|”c×4M—Ñá§×Õ¡maƒŸ‡€ð±à7ƒòV*Í”'KxÎM¹±Mý(·YÕªM΄ÒÉ¡:”ª½â'ùH’ÞI¬˜2í u‰#;ž5}˜çóRä]j+ÕåÚ‡ó³Óõ%ü–î{ô%dXf ¯xˆËûBTîI¿™*Í@D—Ò¶ÿy]KÞ:hrTJ+Ádæy?! ŽÚâ_UµA&Þ—]òé³ –mµô­&eOC-K.•`€+ÁM£™KR„ªÅç@ð÷í-U-%c&ƒ^xKK6'b”ÓXºt„Óý½¥ì¦Æ§ƒ\Ïq•k=§S)òëV°q  G2Êã˜LØ€s•18Þzxo™ÄÎ(âIÙ Ò69M‰®~®bJ’lpÕ'i{½Ë­S8°hA)'S•à>ÿŽú–³b眯Ö<ô8¼dÝÓ\{öÅs:]UXÓ4TùÐZ0éÅá€Ø‹BsvÀ°âžÅ}¹Ë'Í“Ž Ýˆ„³à‹»ñ)t•)ôn#sÏnˆ›ÿõu ¼cØ.!$K½ù¾W #Æí\¢édGtQ-"µâ?æ¹u+ú][œ&®Sòynåw¿æMOœ}Š‹ozæÅé^ª2Í͉•óTP”£NèÅÒگؠ‹û™œUcÅì}°™ÓKëÌêwW쉞ÀÂÌBL×¶°-¥7å˜U£—LèšÐ­0Ùé¬H`öóL%ås¹CÊg–ç쨀Ñ|ºš­m)ºI™šØÝá]ødˆlÎÏ–He.…59›çÆrínÆ>'¦¢Ñ*?±CYìjZWc·,[Éòßò³]&sñÖ£éJ9jØAV¨ƒx¡˜DRöT°ÐÇîº&Ú(Oô¼VÆE ìpV|t_eˆ¡w_0Gðï¬ìع«Í‰–˜Çd7Öjn‘.ѤÜì¾ôĬÎç »ÜËëÏÞäÖà€P öžp®=}q×|RÃÒ Ò¨ý™¼„E$¦Uê1sè–…>'F4y"^Ô«·.êÙýþ4‹çZ|í‚U2O¸^çÏkþE—öÓaf yhQ‚˲áÑ í$ 1,©â¸iQ§ÂªF0'ÞßæU#ŸÎñ2›½ã€5š½˜Dóåò@¾š9µ4ñ,_aa ›¡\—ÂÅ•´¨šæ:£Ö†”,½çoðZn¸^è>çÞÙÑO(`RZjJj Á/?=ÀK´TJŠ–¼ÒÍ·ƒû°ÆÚc» ö¿îdq/ù²B£ð:6?’·ùñãÖ`±<~ñ/wôGó•J»`ÀIdËÅÒ¼‚D¨þ¢ÂË¿cy´ÞQM/Ð^~WiTËuÎõŠ–jβè•6–MÔ51wŒMH _–˜ Šä°0$Y†6ú­ÊCеRלU E^h}A÷,Ëx’²b²‚+¬¿Fˆ—|eäå²+ñ-|Y¤%„ÝÛå¹G˜?OÅê¤×‹OÃ×àŠý”ÛªR-Áòb5¬“+e…uæÏ}‘‹¹rª×ìñN[п¿w Ê—ÈÆÓx4m¼ ›ôTZȳ´Ê›n§“ †Öb_0ê•Ês0\ùxVíóëa8¡ºåq`;ðë¬Ë)Å ÐXÚ'›;KŒÝœL+4cTóO~»Àëì Aà.áwu0 ŽßñÖû¯þÀ `ßüÕ9Ùÿj‚=š LRúvNú6–T+¦ïÉßûrrøæè׬––yÁ£KËìzË<û#=@°X#¬ßæÔ)è;êÀ9„™íKa}Ñéq'µ¿²Ó¦Ç©É›§ŸõÑqY˜ iô× m—*“Xow> stream xœÍ\[o·ú¨_!´/ç¤>Þ/ERÀi“&MZ¤©€>Ä}XëfÅ–Ž¢‹c·èï É]÷Ìž•l'ü`jÅ’3ß|sáÚ?ŠN üSþ>¾<øø;¥ÏoÄáùÁ2ýö°üu|yøÙÌðžtQDyxtv_•‡Rú.¨pè…é¤v‡G—߯þ¸ÞX¥;!Üj»†w¢"®îëð®Ÿ×áM¾¬ÃÛ*ì“útSŸ¾ªOû:¼NCB3|U‡oëðÙªŽ·ux_‡wuø¼oêðeÞÖá“:AÕ-»‹w]úÓ÷ßñd¼ßêW¬© §œ×!‘ðgöµ;ö)ÕÊ9{ Âëݰ"®–6D "ëðü6M~T‡¶Õâ6yêâOzËn³]ƒ˜ Šÿƒ¬Gæ²o‘àCxëé42L‡>o«„3–(ꎗˆ¢aí‘q‰š¶õ)Ïð§;ó!–lŒ@¼[">â$¯Ù¹¼;ÜíYbÊŒ¾¯ë?©O7õé/*ß?ÌïÐ Mñaˆ°Ð–Õß1;á’-Ot3¡‡Ð ç¬N:VÙ¼„W?—†Ÿ°›àm{Ç Û²»üôg’;¹*uáCe;+¬d\ù!Ã{õ%;ä!ó–pêjº‰©ím©õmrh~;qsùíî½—` óñwÚ4•–“òp“`£ãáÑ ”XGõ½or„ñH9_´O ‘¹gç’§·¬¯è鸹×ìkÇu.É{ç’Ïâ¶ 5Hå ¨Ò°¯Ãó¤¨Í¨™£Êšá«H‘)À]>Yz*ˆà~ã¥]éz€PëêSUƒIlÈCŸŽs%•;E Xè‘×<]báµÈ¾æ—^ ô˜»§°%sL&ëêÐÔ¡æR›ŸÍ€’1 ±„­$'ÓKTÆ€–Æ«T±F 0 £O^#ÆÌ&ç Hžú1Ê=ÊjfÉÁÈSÅX÷ ÉÇ-PPõsÂô#,¡Ù%]‰7 \zͱ ›wòÀ±€"m’, ”$óø@´ªsðóŒk6ÞÄ–Ë›Ø>ÂVd‰Çpsd%,r³ßÿš-§˜šØ×¡äHö6ò„zµ4 ,ÙÖäý"°6l"µËÀêD˜]R»e^´Øiaµ9#ë:t#˾=3–å³!Þx6'– t8Z¶ÑßÃê1&rìpÑë {L÷N–%“:<^´áG0§mÍid”39R¤‡\±’ûkÈ‘‰`1Gò¬‰YÍh@ÒMäËp2$™éê‘Vé¾ñ@Šýh¤c"{·Î2<%êáÃ4Ÿ¢ø%?_´ y-²rSê,òzè9”ŠÂq(îUSÜC®£/Å=ö„°„ýj½ÀERÓX)u®fß(#/W[´¾^¡ð §Øh(Ê‹/Pˆ›z•À$C”ÂcýŽ“uT8ÝG“_ ÎèÔµ0Ò)›nóF!oñMÝù¨Wý>wB¥Ê¾¬ž…H!<¨ñE•qŠ,þ”BO‘Ö#ÖUÔƯPš€;U$(:ù&¯á…Ë›Ö1hëò±¢2ά.רš¨$Ýý«$LhV=UØE]o;èWè mpÚ4'¹'*@ÚÕQ‡•aºPqï©?ƒ§.eàÔ¸Í,jSùN ¥qæx¢ÓØfHúÎ(XõØj1B­V×dk7 _ZÁ‰E8HÛþ—qÂЇÔ=ÑÚwÒØI÷„b hsÞ{ŒÆçöŒ‹ÒªÀÛ7ˆjá=^H¤§ðCR˜‘^ûŸúäc?¢]À,Ök¥ ÕZƧY˜Ž~õ*/é•%# ˜ª¨½;ˆ]*€‘ÝêË-ê@P•0jî5k „§J*ܸQÑÂ{¡µuUþé ‡@¿©ÇLê 1:;,í­6àÜ ß‚¥ïP¬§ØžeiÅ=ØJ:±Øb·¼EËx©#(žB£ÏgqŽª˜"m‹QCA5©h›÷Áù¯êF€†ê´î‚tê.“h`k¿DíÊ Õn`~k3–&ørÿ*9u­ÿn³ã€§Wf*Ä4ȸ"Þo´‰«quðξ½ÁÇ¡s!ñ*^H‰ŽŒOƒ,¸&ÍUÂ0di¥4:»_ÃëªP;׋"F~#V¤;)ª‘L©¸¡-­¤b¡%¸FäjÛíéšT8úEDòó«?ác£Dç$„žh0"Sê{UÙè.ï;J=Ïlü6”Ž’uZxðeáQQgU ßåÀŒ/ì§­l€“ª#aˆ¢#_‘j›âÚC²^Æ[ùuKx)K*\£ÀੈѪCÍže¥$P%øÀsˆ1Àâiûl ‘M¼õ‰¡pŠIñ¡ú~Vзl²½¯ê?QêÃx7‰’hæ,Û6ƽ]7©BBÝë|üU$8a’ÒK4´ÒÌ¡f«g_eÑ.%'ÀÔü4‚ŽA«KŠ'¡ä^îPŒS˜{iZ1vD ”™Õ߆ôËB`»Oɉ)>oÊçS~žCTÑAœÃCÈ옜„\.ãÏ`ÌÌç5@_J–)À-²„…"ã-X2—åJJDÉýM}óõZ#b\2HU*ä}” ¨mX_N©š- âø´ ÖJÍe¤˜ê ­<$i´ÅS…O¹ÒNÐL© š4‘ÈÔ˜7Y;É€Lº«T7Ä‘{e'Á ƒ{?æšÜI‘Û'þ›ÿºæ˜ ãôæe-ÙÜ{GŠ¢x]²zžeqBé¨%Ó˜!²‰a]lü÷?)~:Úë©éÎÍ,¨’{‡ÚÜ{t¾²oT#îõÚZØ5+µºù}_rJ#µÞI¤2rq’<¼‘šKeSÊYÈÆB–>‡a¢žäqÂB­–2$‹iEÈ©šEr !𷳺Ðya¬’!”í ÉÒb*´zz•å9HLR`*Ó—ª"™ì9+f4ÅV«aš]Ô-aTÁ1îAÕ bð0«j6Egç“¿¸”ÆZ4ZÑ È€T·‰c$_ï)Iܶžz¿‚M€[¼Oþ–åò©À9ëÆFuÞ˜8,ÓàdI,D2Ì0Ké/F_¢Ñ²@Ä”O/\ÔtÖojbœ@¬"8“ž^`“Ð>Zõ¸"‘ÂéÂkø R.„»*úblíÕ´5 =–ìª}:–b§y$Zh<ˆmúKjC’+—¨àš2èdXM¾`"Åq÷ó‘ÛÚæ3倠p¹.!™S‘¾K£ð¦ï}ª\ré|’¥Ú(÷ÔtY¡fÕT¸šQ¦õáëÜšH>+&…Åa53QsvPa$oÅ[-¬®‡ŒUÂT´¢ú0-¥é›”nT;]æI›)m¹˜.‹§Àz±+ÆòD¦u‹‘bÍDØÀÒV¥=â Û¥ÜIê?J£9ûÖ¦ŽXzÏVÿ8ml1–ˆ#8¦Å8…O:¤?© ãpCn.Kf³Ó&8–?©\J|bsZŽß"f6˜9„´›œ©²j.Iœ±L˜ €Û?=© ÃIÝ_Ó£©eÍEåô-q28MB©„Ê@Žœ:Ó¼¡i!ƒËÑÖ@™€'Qc3¬ÕRj®1]ŠÓ³Œ7€˜‹> à&ÁgÚ¦'—ißÖ!ié“6ýLðYËД8…a Ñ,:†)oÀy-ÄoÓÄþÓ¬êËŒ gÐ26¶†šTa¿)ı ZîÍž‚nRÔm"t!±Ü­Ã“ÁŠö\z ¨¼gu“оÉ{ÆleÒÆÇ)>‹*™ˆ®ÌIÛY¶ Po޲ÍÀsûdFÝ‹z€k¢Z•OC=”ÆG?ÉWI÷“ôÀóv#¢Qîäß *ei˜mœÓ4 }܈Ըn£¥MC•¢“Œ>îéŒjì‚KÕtrf ÔäR{M¥>_Ó_kÀÀ$·üí‰dØ›Pxë\JÔ¤¢}a]acÆ0 ¤¦Û<Í ν¿æS¶‹â0«z>RÙÛükTЗSf,““r¦´£ÜoX»Òã¥ñ÷$47>U‹Ài½]7GPu¾-Mcˆä®ŠÒ$Éñk@ß ÙETK3ULË ØËÄVvO”ók´Gšú´Ci¡#mÍR„¾YÝðöú‰`ÏaIÑ”hÚÑѶÍ÷ÇmØ6/Ï·.ÂXÕ° ñüq«{nžFÊœPöTu ±x˜oçsy&ñ=’Eg4¥È8màzFRÍ43ú 7ßåÛC´ùë Q¼ÍÝö€7¾C-˜‡Ü¨õ4¾^Þäz6¨¢K÷ “’~þê5·Ìg,öœ¼ßuCüÅe>W*_ÖM€¿Íð½Ù4éåÕ‚š³Ûü¢h–bÀê{ŽÈ~ÊAmè«Tw[k§õ¦Žám– éw‚& ‰!BJÛ¢Tü·Y?_bK·{‰-°ŠÓ öìëoã´Ü­5¸ðN›´Pöo&4^sÆ&2–Ú¨|»82BŸ¿XEÅgMC鿄ܭ1Ɔmª%A5'5nQ _T€SZ&ôÊ_‘C–ìQzëdëÐ$< ûhJ»†BmÔ5Ú5æšQ wEuà±Ïžýk^a4—–Ëý£Íz¼âú¼©ý«†êíä`+ÈuÛr‡Ã|Sò[ïø‹ÿ›<Õ ½úgi§ÄÎk=µþMUûöj¬€Þf–Rži›wšÒ©)âL«„ž¯»Œe{É"Ýä¤Òbí™›Ì?á•ö´Ï%ñÇ“Ô0I5íeríºeœ6áÝe‰x'úõ˜„žoBÑZ±(œörÒ4‡|³Œ\#– ™û$oÍ7\åÖ›tL5Þ8ûô/Ÿšò.׸÷Uk´F<ÍB1”Žêk ü¢ÒñvL]i y›_ËU÷ø-6’U¾ckÌ—ÃNEb÷Ю¤Q¤Ÿ`ñ%Uú °ÌÑ» áeðØšù͈Cè•´¸¸NîÕO84û_?-+µOoáã’Iå6¡r±ª±½ (wæÂßÍ#í)reÖ"œãɦ>ä”#-hTÉV9®ý§wÀæƒj~ÓúúŽ4¼yuj¯ªñú<ŽßfÍ„c’¯Ïv]Xœ’Žì|Û¥PAó…Nr îhh§m»44§¬BüNhŽÀ2Uº˜Š6\6ݾ1©Ûù–¥@ª|Ëâ&Œ”׿ÏM‡äžìõ¬dà) áÉaeÂþ$ŸôÅh¶S6ïh°m2wŠÔ’÷öU2½ž ‡k¾¹ª¥5.ñ´œ"x=ùj¨|‡‚™ñ”èµî†ëvR·Ãd »uƒ[Ú›©&(´vb ¶Hµ3)¸—ýÉ®ÚFÌ"ö\FÁ¤Ïk‚±z‘ð²–*ç }\¯»`´ùµ~Cx¨ŸÑí©+,~0ûXŸ#iúÂp>_•bmÒÖkµ†èó2xí;í 'c4½&þž¥Ÿ|=ŒòR)8mð`—úÑ žaüUÌø‘”Wó LP¦‡š¤ùhp8Ùev Ê×ÉÛ†ÿ˜h 4ç:¡Õ#/ [Fî»0ˆPÌ=è  ݈\Óáðî«ÁØ>¤/ÔWR`€ûüèàðçÿü€Ãendstream endobj 190 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1982 >> stream xœ­U}PgÞ%°»¥¶w{§£îƹ¶~TAOïÇ¡µzø‰§ˆxÖ+_!%!$$$Q$@’ý%„|IB$@Å9jQŒ¨œçhµ´wzzÎxNOÛqôæÚ7ÜòÇ­píL{½þÕygÞÙÙ÷÷<¿ç÷>ÏâXt†ã8±&=ciò‹§7"³ðÈì¨Èð¹ã©ãc ^ñÑGgǾþ*²½‚ö¼Œ²¦c"/-¯]£(Ó«Š ejñ|ÉñÒ””äEâ_.Y’"^-—ªŠ$y¥âô<µL*ÏS /%âí I‘T­Ï_%S«ËV&%iµÚÄüY„E‘eè"=|à>?mUþI%Ã=#øi51JrÔU¿›å{I©±a£$;­ƒÖÐi>ÿ‹¹Éh;É¢Lò³ 7?snØÍð†þ6}5üt‘7Dh!ª¡??õ臃39ÐÔ)ËÛ´4‡Ž·½µgµìË!œà©ï¥sZèaèž‚XS ¼ÁYáŻޣšã"t%²’ös–z#ÇUV3&c퓱øh¶e/P¼H²mÛÒç=õìÕª 1 ÷T5PHå•ïHZ^rý¡ž1yÁbÊÀqZ–Ô[8{“Åâlbì®–N»»½ì˜òPOÃçÿ2\Ö]ÕÌÊ{eŽpå‡ÿê¡ ÔLÃu8–wòý¾\wP«2Ò7¼Øl÷t8uéî56pœ‰ \=ï?ÔÙ‘œd6‡Üj^kØ.ß,Óï)•úHî½d¬9‡$ƒ@ÂÞ;ì}¹¥ÌP•癬NzyzN殂þÓ‡=áKG˜¡îÛ«@i¡Á‚·Æüxß5”w[„ž£Ò:È£§ñØ­uçSç.]Àÿ”ŸùxÉs4½‘m\c]ÇUYåÊ m.P›RGÑ|´hldôä%]f*«iAk}x÷5T'ØçTMÛl‚nnêùŽ¿óÄÜä7ø—ùŸ=yóK=øeÀQæ:Î\md4ë2‹vB.äv– – Ã(|HYZhzíÏGàœÞdᣩ„q Bh(€n„p4ãºò©½‹Æh´œ@ôã¿=y’ôÿ9Ë*‰›!›8Af×@šà‡kz…†ž)?¤Õ~0£NõG­MÌ3¡BÿêKrÖó B#Ù|n+zoðQ+R\ÁÛ\h÷èЀ‰Ðzº­²oïPwn\¹2 È{ÙC‡O¹;Àvh2¹Z#죪\µž§ÛÓVÙ^,‘é” FÞ]è.Ƽ.}EF_¡û+—A>4€Ò-=Z±³*_»¨5O²¢ž‚fóó!U–¦¤©â®S°-H}VI/„µ· ÛÇÀcZ­°-cCü¿èyiá‘ÞÖž íju ¢Q÷‰™iYóدc )úÿ'ÙR$öT3B÷M–Lü˜Ñ6¾jŸOÜeúãÔà†>ýÂ/ŠÌFé'mw¯Á]êñܼ˜áƒß3¹s““;÷­É!Š%/µ·j @0á:!ŠÈ6;x¿ÕŽZWod6–jJ ê¯Ö_6Ì-æ`ýYÃÇ|Üq*ÅEó “óÿ˜¸ÿE)?§çªÞ‚Ò*¨׿Üß‹PRd‚êÛÔ^­ñë:‚mþ†å· ñtÁùäýtA'œ‚Ž)¾[Íöãl„ Æ“ 4NõàèüuÑxÔø*zbŒØË+cü„­ôö Dð ‰íäÚLP jjâ$YhªYÁ(”Äå¬å œ³Ü÷¢¦‚\a:(=IBšý6§¥G8‹CK©‡_Iù !ꬸ~á_"B^ÔJsÖ;4‚õÖŸ\΋CÇ›B!õïǽËÍP¾+³RJÒ˹ °ŸÒjuÿÉ31‘*òÿÞ‰.a ~ûND‘7¯>ã6ëÝû¡j¦^oªþF?ôs­“ìÉßCK>HMŠü‚ä …o¤)ô$álä×´úŽ’}"´|<޶ÖXŒ°6«¶äf)£ÍhsÜúEÍc;5ºJ¥²­2èjmô¹˜tíÄmÈ&BN´ƒäm9dÂ>_äf¤pz}Ÿë"CÓÂqÌ´h½">ÖçŽ{â_°ÿAÁf‰endstream endobj 191 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3738 >> stream xœµWyTSgÚ¿1’{UD«^‹ËÜ‹­vÔâ‚û6nP­8¢XEeÂ&$!„U);$yÙw²°TPAÅ…âR[·Úª£X«~vZ—±Ë´¾7}™o¾— mgÎôxÎw¾ïŸœäœûæ¾Ïïù-Ï#¢¢D"‘ÄÓ×ßcNÿ·×„ "aâ áwbÀ!öGö 'pƒóàƒGåB^B{G -#)±H$KÈö”+R•Ñ‘Q*·©aÓÜ</^èî6göìÅn«â¤Êè°P™›o¨*Jª"?bÝ6É⥪T·©Ë¢T*Å’Y³’““g†Æ%Ì”+#—OswKŽVE¹ùK¤Ê$i¸Û¹Låæ'us\n¦ãÓS§HTI•n¾òp©RFQÔäU2¹ÂK™°VõfbRè®Ô0ßp?iÄ£ü£7ÄÆÍö˜3A†;E½Bm þHm¤¦P›¨ÍÔT*€šFm¡Þ¢VSžT åEͤޠfQk¨µ”µŽšKySó¨”/åG½D¢FSc©—©j85…àE ¦4¢á"… ô®x·øŸƒW~è´ÎéŒÄKrœ^O70+˜C–©:h¨|(vÂÙÅùáÃe.3\ö»ü8B:rÈHyö%ZP»Ø•`C!6ÁË$^¶û°•šâtH:–ö=qMß%_¯edôE½@3œ‚FM·ó«6:T§4“ßÅ /ª:ƹ¢"É9ìQ”P‹Û JNF[ôwÉ#Íp,‡¼!Ò;lêYÄà?;ὡlÂD“QWQØU±°°ðšUûeGvGÃt.ÊIf´ßIðÄL'ýain ­tP&x“—4êÏ’WØàìó›­Ï€.ùÑ?|tþÒ¥ê­~ÎøÍg·´-Œ‹žU/Ì1‰ZzQK¯XF1,b§}‡ìì> Âc¾yIÐЧ_¡QŽÁAlÕÊN+º´ïÁQ8 [»š¯mƒ#p4µ)¼u'ø@Doüùö)R ¯èÀ[lh–I˜Q/úþ*ªí# ^ÌÜv5mPv†_Ñß>E,=ã+,š»Ã§@Í_£1ß_öõâÜ`¾/æ7JY!”³`]EmK×iãa`n¿?ÆÃÖÎ[+«2&ó*Ë^43.ö °Ùl"ô»»ÂØ/ÅGí+X™‰¾¹/+‚ïk¦#ÔYž\² }'AKÑx4ù¢<ÍÂKx<ö¯°Áš’¼p”> /9Îý y„u®ëò‚× 6igø¯Š ݰkaµ#šúýåïŠÉ¥³O;¾¼Sªm!—S°'ŒÌ’Yk2U5µ(šCÈf¥äqZ$–àñÿ¡ÇÍúsÐMpã‘’éÕšŠvÞE›eDºPj—Ý–²(ÊÊIIÌÎåbb‹wƒ‡G®Ûœ Q‡£øýòƒ¹'²ÏeV©’ {«A΄(·Ï]·ýð7‰\tZ¦°ÔÀdB~*'Ò©_^¤Ó™ë¸¢Ð×ÔÞqê€ù¡çÂݳ1û³ËøÈVEñºÊ¸âÕÕð>Ój>ñÏŒÕsºœØLx{Y’ ½m¦ÚDg Kï‰í< d]ált¼f ÄÁn˜ =©MÖJ¾/#’_Oc ~9'~Þp AGÑÆã×?ûÞ¿ÑÈé3A] L5ì3ñ(‹î¯8O«ÉÊã—ÉÚýιÃ8¼ÏÅ8‡¡¹x6ò¾qÏråoØ} ¦˜R(®%Ð$ŒoC‹L¢ï®¢‰õb´LxE“lxòI”hgD¾>[Í$Š[i,¾¥:sùÀ¥›Ü»‰›iOYhøZxTÇ ¸ÇU:DØ4ñê¹' ß³‡ö•ßäL6I‚f1ÈHi‹!ÁQØ3–á,ÜCný‚§~á¢Äª¿OxÞ÷Áú¬ùžêòC<2 lxÑSDv„":ž» zWXÍ>ç×ZzA×ÊÅù'Ïpè¿h<©Ÿy½ žÃãé4øBdKŒ5¾3ãÒñýpÐf³Ô`µ?¨:˜Å>Þ2cºÅZWg팄½¼åè)C0'Þ“zða4Þ©^±–3Ë*/~ÐÕqÊÈîh<ŒùBõ'üùÄM´BNºÎÔpÞ§Ùi«cBwµŸB®hye»žw– Ew¡#±´¥vovÀ¯÷=©§ K›» K,ǤÿêoâÍ;”¡Ñ¼>€è+j­íÇm§iù!o~3+4!’OŽ ‹ÝÕ–Öô¶ ¡¿ì*b2ô ™6‘ñ¶X˜†>c›®ÔáÞ»AEÀÛ4Þ!M™ŠDÁ» k .rÅbÔWMBK7®± Lõ‚¤äˆÿÀ‘ Pš_‹¦õ r žš‚œ´8…4˜ØðÐVØfM©JMKÊ’IEœ9ßyúr#áØÚ¬zd»¶^ÔÖ‹‚ˆÑ 6#v%Ô¥Y-ÆjÛµ7N-ÁCf¾ÚŸ$†œk r.+Ëu¶V¡æ½â€ñ[r¹£%Ÿvv>·7Ü»üÄ>3kÞ*ÔÝ£4»;›kÔ’åõóå·½ùæËhÑß$¿¶óÿé¤gO2“²Ï›Ð¹²>úÊ,– Gì×–;—áó;=À“9Üó ·8 ·ÁƒU *C }e6ÉJ‰á¯e<¤fïQÕy`>®úÌ\ e™Y—¥åó7È»a'dÌ9£-É;¦nÈí.ØךYß´¹†™QÉ’T¨‘€*Í…eº0süú¼ëñXÞY ’Lý´Ÿb´Zèc“,òøÄ$Eœ5ÅÚjh¬ç0‡ýˆ¯”å56ü„Säòp>È ŠŽðÂ`ÂçŽ$›Ý£ItöºyAŒÂ…ùìÖª n¸Â\?ùc´¨/)æôPPþlªAAŽÉC]oçr1~Û/­« &“‡xÉœ)Ûë‚…ñmámÙ7RÛrÎ¥WçTµÀ&få¯EA¾Ç¹=7µ´ý|>m9¦­b¾²„+,5*­i»ýg’ƒï=Aƒ.ªºøˆ® Šðò~ ÷?0xü½I,\Ci,vs_ÿ¯;Ïÿn?J2ÙÇ›D½¨”ìG›ÑŸXx/²w×Ïú@Ø^²ˆErŸ,_ÀL/YÝîudÅG =ðt÷Ø.´ßÖ‚o±»ÁÛ‚D™ïC/\'r«ö½ºkï´#KÔ•q~•?‘ÎZxVdú¥àA>)QýËD:¯ÃvœÀ'ÿHŒ:í,k]2— Ø1Èvj!pŸkdú t¤:c.+“4韒}õüš•ÄÒsÕ•ýC:Ü@?=&^*:ýÅ< >h›(Q§ålÎÚ“›íO˜Â`_I“åâ•F+Ic·ó=ð5[fß!Ë ³vêü­ÇaŸ¹±fsŠQž­­š3~xöÄU`>íñšµ p•ÿzBeœä” ˆè~Üšý9ò7!þv…IômÚsOŒÆ×ÙcémÚ Bn§›ª 5Ey dó›¶«ãaì0¥”æî#Läíáq7QG^%ÙE*˹æÎ“Öîþ< ,M« ×’ùE þò ÄÈpe09ìÝ•ú§"M±¶˜º¦òƒÍ)µÊÔøìðö§‘Ó×Oç‡-ýúÿ`¥<žwÜQ˜lzx¿Ó*ê¼ î‹Ñô-‹ŠÑˆŽ³íí™qF.C »kRêjl=Òwæ‘9ƳX›‘³ï§Hôè ‹ÆÍüËïçÄ,—gñhþõ¸óÙæìÆ¬Óp¹ÛþõçlÑ5\mlƒØ A)RåöÈ´0G…ëEß?|úPŒ¶ ÿd’ÌÊ„ÄT¹¼>ÕÚ`67phãØæDC‚2)I©4'5Xë ÍÑ#0£•Ä=MbôV{)éH¸,%1^aLl©©()*æöíÓ=¤ç¯ß¼“/Pk ÌL~Q~QYï-Ds.IfÁ³ÉËKÍZAÛ†^Æ ¼Ðä<ÄTæì|µÖy8Eýã…ˆendstream endobj 192 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 799 >> stream xœU‘ILa€ÿŸB;¥uDc# v怆*aÕ@ ®5¨A–H0.1±‘NdZlKe‘‘ÂE(È&Š%¢Ô=àÁ¢‰11F=¨1.šÀ?å÷`á`4yïå½|/o… 4@冬¼ciK^Œ´JëC¤ 2”¹xAz†Ô2¤( 4Û\õ-½ƒK‰ÃÊ™D6¶@Ç&éõ©qlrb¢žÝ#pV¾Àhf³Œ¢‰Œb0(fó,<':ØØt“(–lOH°ÛíñFÁo±íÔűv^4±‡9g=Dz³ÈfŽ]/~Ù,BI©ÈYÙ,K!g5Ûx/6ZyóiÞÌ‹£-ˆxÛa©k1'pf"“dÉ Áˆ`#lòàÚ èÀEHÇ!Ñ’›Lc»~ ¬“r°]Ó=€®_/EåÌï×òòR$Ѝ›YJ¢§ðš)è ¬‘ZñÍHuó¥Êzk…¶ÎŸ¾å wsŸdN¹Ÿ(¢È"jßánnõ¶62ÍsÓÏgÐ$zTäÏŸÊ™0¾B›ÂÊŸ ½8î“TcÐ?¼¨–I÷ð&÷M×tóähöÐÁ`):•%*¢üDV}œ}€#>1þ}ޚѳ>Ó³’—ÁBôç¬ÂÊ4 ˆJ¿å‰HcnÖŒ½øø ‡#jarsÒæ=»SRrßbõfÇ) wHC‚„Í™û67óîËÿ^¢žehiøÎ5)ºâê§2) GjÚj=è2¢º»:{ûœÍ­ÌÛ¶+Çû±r"ÒëékózÚ[<í¨ê¨í´$F×…c›zêÍ(Ê*+<•ÔEÑ‘¨ï®7º„¢Ê+«eíuW/2ÓÅ7ªÛ‰òHd»ÌUãvÖºÈE9ºªº½M¨wP‹*ȶ0{«³³§­¿½n¤¡C[wÇ=æ¥èÀÑL®_øu\&½ÿïm‡å˜ÁÔ<Ž žF/ÿ Hºœ  KöÞD¼ŸÁéÿp½œÄ!BÍWa†¢m7»®É‰¶Cá ÷©|½juPWðnñendstream endobj 193 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1785 >> stream xœeTPçÞó¸Û•⩜W@’ÛƒTE@CcµV£ˆÎ5þÀr*œžÜ!?D<¸»÷î€ ÊñCD G!¸`Å$¥æÄXËL:©Á6fšš±eÞ¥3éi§ÎÎì~ûÍ3ßû¾Ï÷<ˆòYB‰D":îÀ®¤1óË0>XÄ¿²„U D=ûÍìA ø‰ÁÏgðü±j%f-Çä”X$2æ_Š3æ˜s³2u&Uxz„jã–-›#U›bb¶¨vfks³ÒÓ ªi&6;Í$üœU5¦giMfUø6É”³5:º°°0*-;/ʘ›¹="RU˜eÒ©Žhó´¹Ú Õ£Á¤:˜–­U-vµø‰3fçä›´¹ªÆ m®¢(ÙNcnž©0í-9=C»•¢B©CÔQ*:F%Q»¨H*Ž:Ní¦â©=T0µ\˜ò¡J©'¢m¢?/Y·ä3ñqñ>>(I”üNº]ZÈ[e³³ÀaÇïkÝžíó†ÙXÅ…åP F¨®¼d&޹¿ZJ­•;€)PKc΄ xÏz×ï5޶ÅB“ÃÕàp°wq™=ÒOI˜$Rº¾…‚¯Á»\G“ç¼^RÒ#!ERÿ¥eˆ—÷‹zqºq•˜DƒWGO6“_Ĭ!AdÅ×kñ—¸íé÷¸\I.“ý "¤žŽÂ-¿f¯¿7ì‡a.iÓy² R˜X ‘+e|¶0Q¾–pß©”ÈGñ>S „&[+%jzÒ ,™Ü£¦½ŽQ瀇пÐe,ÆÑò©/:QöBi·›KÀÀhz »»{=CëNTÊGã!=Ù´Ÿ‘ñÉ–~>¸×`8í– ¯ùf"§8íÞw8fò¸þdÀP«t”:ª<Àt@m;û}êÍÕ6(ÊPžkÒÕ¥“M¢€¤·æ´³CºËÔyF>ÝoyRvhõ›ÑrîñH¹²ª¹ ΓKDt\¼ævÂUÒmW]Î;ú¡˜Œ )ôên²ò©Œn}ݯš„NZ†ðw´Š^¢}9ñK>DAºhÕÓüG¿}ðXù‘:‰Þ«Ï3†‡íJìä@Â𨚶¯=ne2iÙì£j¿‚uÎzijù¼Ÿ¢¶©æò'Àp´É–mσP;óƒjº~Ü~ÁjµØ­l(©'Rì“LpR½=Ñ– iæ,Y@}B{’Áv¨žGn# ¡xe¨±iì8 §œY?qܯ»¸¦¢‚:¡¦ÁÝ2ƒ3¤ñö„)',ýÙ¾} 7ôû÷âÒí¸cQ /à}§gáÄß•cÒÖFèh/ƒ2ö š A==½û3q„Ȫ_?å-êêéõ ß*j±:•7ëzÀ<ñ¦í`³h9·ÛJÜÉšÕëq…ùs¥¼à+àn· 3ŸQI¯.ËMJ÷¾nj¾ëRÊþ?͉p-†Šy3¿E—PÝvmnAP 'M·*ÐBdºXkêÝêrG½uNJ&ñ1R­µF@ªðD€v‡ÔÜ4¡Ôô€ë;Á]#ð ,è–Pxš~ñGÔŽZ Ø\– se!è€QÓ·]Ï`T0âç?:Ö@¿ÖšòwÙ¬¿@™‡µÏ[Eе¸*@^Šgø5 ¼C“øÿxeî¯=>!‘W^?6Œ/Ÿ!‹Až“5¬¼t$ò ™:r_5t—w¬û>0(²,^ ç2XƒæÄ=ÄCÆ½Š«ÂM½$ê~þcNÔ†´˜w br7»ÜçÅ”'ˆ)rᤳ`QLÎQ(·WWØí,¡‰È±]r“ž±m´Û…|:éÔ,ÀÒøö\ˆ)%?E¿w7›£ÒU_ÓÞ ^¦/¯#Ëh(ÊHâ4ŸN}<ù KˆËBô, ѳ WŠqŽ_¯0—Ø à"óoü‰0u‡ÉÞBY†=Ä(|ã2îæóPa¶Ûʪ”çö§%CXÀµw&Š o‹ÕÚÄ.òÊñâ^ç‹ÔÎë°”cDqœÆ·ê$}à ²ü?þ›c’HËÇ“ëΓ°Ð×I üK$† üþÆ:z:ü­qÑefM‚ÅD¸ì‹1¸wcíæzà éÛ ½‚Ý÷÷áÖÅl­üVÌk„hmk€®Ëãä»ìéþw®íNˆýYIV¿X‡?ÇM#3-׊ ªØVUba RŽè÷ ˆ;}Àöù8Þ¾CCÝ€KÁI:F†_Æ` ƈþ€1b¬à—(FtÞÔT.5Õ«ñzG”ä¶ÏÿíÉ.\áÕãIOÃ)9á¦9_”þDéë³¹ÕoéÛÏ¥7ý–9üdõ/Ä5Ÿçendstream endobj 194 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 440 >> stream xœcd`ab`dddsö Ž4±T~H3þaú!ËÜÝýcåTÖnæn–…?t…¾§ ~Oáÿž(ÀÀÂȘWÜÔçœ_PY”™žQ¢ ‘¬©`hii®£`d``©à˜›Z”™œ˜§à›X’‘š›Xää(ç'g¦–T*hØd””Xéë———ë%æëå¥Ûiê(”g–d(¥§•¥¦(¸åç•(ø%æ¦*€Ý¦&ós JKR‹|óSR‹ò‹ìÌâl   ŒÌ Œ] LŒŒ,tðýZ»à‡Ô|Æ©ßE—VövOêæ˜3{Öüù5›ûå#D,Ÿ÷qëò©s'Ïš4sB÷|ŽùÕ³ªš[ÛÛšå~+öÌì_×3]²wþäãÝs8æǪ̂¬ª®«êœbØÓ.×ÓПÚS÷[é©Dó„ÖþænŽªêšòòY­“Ûå÷•í+Û_¡š˜ßXÙ\ÓRÛÖ]ÎQ>»fÎä9Ó&O—›9yíÂSÖ,˜>yÁô®ÚöŒ®úF-‰ªÙusæÎš1§§éi×¹®ií»fpð/þi¿„í·âtöý\û¹÷/àáb^;K®:endstream endobj 195 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4088 >> stream xœW XS׺=1’sªb<Þö„j¡ÎcpVTgE4"“!Ì a Iþ„yFæ@ 28Ѝ8´Tmí`iµõÚjÕÚ^­µ¶îC·½÷m‚íë»÷½Þ÷Þ—|ù _öù§õ¯µ¶€<ˆVnë6»öÿáÂÿEÀ¿:ˆMxÏ/£úv[µ¬·¼*~}zÛ%Ø"Ïá”P ‹T¹É#â!AÁJ§qþ㦻ºÎ™ä4cÚ4W§¥aŠi¸Ó:©28 Lª$ÿÈœ<åþ!Êx§q ‚•ʈyS§ÆÆÆN‘†EM‘+‚Ÿä¢ vÚ ˆ Øë´R®tZ/ pêÏmJÿ‡›<,"Z pZ'ß §(Êyi¸¬|ÉjœU•H*ú…ÞHßc–0·_ñåâ‰CÐPÕÐ[Ö`ýa l„6*ÛWm;‡» ÿÌn¸ÝJ;•]5¯±é+3ò1óîU‚–¾ÍB~rßV]¢ÉO„DÐfd$âÐ’÷)ƒé}$«C+Ôè.jÏX5Ó›õ f¨„CŽ!§±¨XtOÌNÑk@íæ ‘œŒ>™uNÁIȂۚþC ô:P¤˜<y±X%BCÐV6ü50óVæÆhp/ 쵟DëQ1ûó§ç®¼S²c‡i_¬&Oì4TêOÃi(Ñu¤á Й´…†ÛÐ(oUšJ¶Ãؽò€œÑ‰Ä7ÑØYe%£?(Hß!ÁUÿãƒV«à”Ć/T™ø FAãÔvGÈÇ¡Ù}†m±ØÅ ÄvÏÆ![$þádËáXìÍn©Qy4²]×M*= —ŒÇ›Îž)kƒKp<´*¤Vª÷)Â&Å.¹¯o¬R-ÞjF“Œü(s‚iÄó^TsÇ^¼­F÷Ø–·/Tµs³g:¦°È}æ<¿€úÖ(IR ’q\Ù²ï}`ÐP4èoÈÿñÚ½'@"n¾Bãqýu~œ›±[ò"øßÔÙWæ>Y€ÆÜåÇ~/¼ÒçÄÞ0¨%/jè@­j§”ñŒ-EcÐ8´mÆ4/—¼`d"”ú«€Ý©Ík‘ðmt‹!¯“{.z=Þ A'6•¹Á8Øc¶¬Øæî³–Û·€¬ÇŒš[Èé>Úeò}} Ø×eµ¢€•¿üJÔŠ¬ä"žé†ƒD–@¨ò!ý¸X6KbBrѬdÙxn JY‚£Ñ"4 L^娉1‰lx—ß ôüãç_÷i%Šg¡7‘ˆÓÑZ]b2D1Õ µÕµeM‡Âšü6H¥ë”\?RžÑx̃”nC‰þ,ƒ:ÝKcéeš¢Ã*ãUF~Z å,J:+DøyìA(HVk!9‰ÓjSS3Ô²Yn©Ãaß2ïÐÒÈÚhI‹ìHúÙÔ³)55 …iÆ8`fºÀçȯÎ'sšB]n20 -^‚GÒ Zœ«×WVpÙ¹E%99í{NiŒdú¶ׯŒmˆ®•„4å--ÌYV—˜Cµí•7WaàôÉQL)äU’QwF›Q’™Ã,¸ô”w¿/ì[Ò7ß’jºF“šÁy/ 5o¾èŽx+ž‹ga?¼ÍÁo!ïo¯·u™$#Ú‚ )‚‚r ZBËιƙi ¶Â^˜ÁY¤)²Côìä@ÉZÛàIäŠ7v¡Ãèòè¾ýýOKðì:ΤW“œÊ!§šôn,Y3±Í­üÜ‹F›„è&ÿkÆÎh­œÖÍ ~c‚†QÜÅ4|KÙ}­õêÇÜ%¹½T´ ¾®àPMöHe<@†ÝþŸ¬Á;¡ùìŒíkÜæª;ÎsèKOìè ÐÌà 4x€ôTpcìñôcpºj{qœ~®+²2Óî©y]„^ž±€À†?ªªæG›U¼VˆV!Äjrµ¹ÇÔ·A%éÂn­R· ‚!‚,] ; #–"Œró5Pù†¼ƒèUtË¡úlkq«ž1Óa?Ђdz¹ÁrªQ{p?DBŠN›©‹slú^†íÛ$ì³CwÙšwgW÷Ÿõ×haÀðˆØ¡+€XHÑfhÒ§â,Ô@ÚœYŽõfC=ÉÑW³‡ºŒä:pâT銨JüAZµ t®8Úa*É(#4“íØpÔR›/©ÍŸÄ ‡s„C´Å!ˆÅ?;ä$g¥”Ade>EÍ?âæì”lU8–AVav!ÓÏ£ÆØVdlü¶Õ8¢ã¦ÏC4¿÷ºÉ^ì£Bß]gs¤AÀ¯”}!¹(ßB«`{Pœ.çM¨³Åïx`³OÙv`欮‘U'Ô7TVÕwìÊÑIêO4söRÀLÉ>Z\Oyi—¨W…ºGoÆõQÄ5ŽÄ¸ G.”š˜ÔÙ KÂvíÜÕræýK¡É¹œMߨ—ÄGØè¾YȇŠX¹HårÀîÀ¼5À8¼‰>œ]ü€;dk¦?øÂ:ð³ô¡–þg¢l$´sKå_òJ2³¯„ÈýÌf”B˜ú¨&ÝÜ¡ÕII¿7ÃÞnž„Jmqšñ‚vPlŒÞîîŽ H(Ñòõ¦|haêãÊ•ŠøÄ¿öÀsïu¼}¡ŽC«ùùEõǯÍt¨FIÑ)-A&¨2S2Ó\pªƒ ¿SeBmM‚–;h×C!Oñ¯±1™± œ‰¬Š­¯¯>h¾¼âÈLl(ºÁÕšñQ ¤Czòo%ªÉê=¿#NÂzòX<Ûÿô&²A6]ÏkóÔ¹©)šôL$Äy†v?øÀže˾.]´3ú:¶M¹_n‚ Ð#Õ㑌 0MÈ` «Þ¢n …EVôƒ®“……ÚÌB.%“ž‚‰¬Œ76TTÖ hÞ²Ðu㛦È>ÇŸýC½„f ñž´öÊ (½AÐxí¿ÑrQˆì;kL4ï?Ìw×?ø¼KÞ’T*9ÖÖ Å Ö¤©!žQåÅÕ––VW0û‡û©‚‚¹ˆš½¥ÄMrs_àÝT¾_¢ÕʃÉj…”5Ä{'úÂNfù÷›ÑHdûS÷ãq'ë8ÏÖM0‰\(¤ÂsãȬÊsÊ J˜§™ì x\Ó`h9X')«j(3s&(•0aºä^ÄB¶ºy›ùM¿´óByáûw$FÓ Á€fÑš>öc{QþçÆ yÐÿWº vË<‰+µAGú‡×ެ5âsD-%}ˆÖòëYüF*W 2ˆ©þíñ' ÕúPNÙeÙ%Ú#3ç¨DüC„mŠª “)ááµ sS]]GŠŒ6÷M3 .]E·® Q,?›_yN0×Î_ý±ç&º”rYqzu±Å!TK]ùÉé:]r:—_X²o[BÕ¶3“ æ_™3Íya§OŽZrrW… •ߊ+Ð6‡èu-°‘qß±dÚ"L(Ã5Ó‘eO²x—X ö¢c!­8O¯/ÎãJ*R’šÏ]ÞðyJñ.6·ž<¿s"ªI²û‚_‘GqˆE$]{ !8 Qÿû’"D~O_ðü'îBc4ìuÄ¡7¿D¯=áÐ º :ŸžõÒî×ùÀHÒ{ÐâSð‰à'4~uüì77a«V´Š³´¿OÐÞ¿8B´öÏp :á ®ë¿XçG¼­õ¿íÅ]– ¢nžé¹P±wÅŸaã7ý¯~ü ÝÓ¾Ã1uþžà;¤ò­Éïø·Íù°c[Œ/#¾¥{,ú¿Ýt¢}#Œ‚cwP)¹é„¡OX¸¦¹üé®o×m‚ °8j×ÄЕêy°< :tξ™x Þƒ^Sû7M×r?…/,ñaàV‡¬RÞ;Dº?€Ï‹/TÝ»ZÑGàJl唢-°Öùœ“²1‹–¦(úï@…Ñ&‚{4¦ yr™$@Û.}j/þ;zýÄ>l=ñ |ÈܘÝ3vì‹÷ÕÄ56VW7¶F•…põíïV(Ý._½3,ÃG ‘ùkõ ­Ò€ÿšªKÓ©F'åÃA®St÷ÈŠIx¤{wÜ„œ^?I›Úd$ÚÚ¬¨W„í—Îx¸1Èîáý§œøïpweïÄêÜà1ò0"ûÛ‚³­f”r_ø =fãAUšŸ•]Ë5µŸ®;ÌsÀS‚d°Nî'‰JãöÂFXu8ªW¹Ú<`ªKÚÌÑ1òdÿiŸMEB4ìÇÇh86ë{,ðÙ‘,AÛé¦T³ÚÜïê¯ß+)ÈÈV“2Ô©’q¾iR"Q~ù¾•)9Z¢EL2¤$XÆfê³%;y™NGž·ß@KølX¥’ÜЙ÷>:úþË^+VlðõWrÆDöLÝ'gàóíä ÓǸ.™PTÎŒËÍ|;ß›)ݸÞuôë?­"Ã`ÿQ–žV”sªüðŠä<Æy7‹F,¬Ý&Ö;.˜ï³à­e—o_?ÓóQgIäð7_ù×I2<¢°öâç¼-ú€¦± woVzg7GrÙ¢|íÑ|8ÆÔÇWÉåqña«»wßG,y9 9'þÕaë÷§cÚy ¶Çâo&"+Nüü8Ö]ÑÁ`v9›HÖ9ôrÜè7§áLõ‘¦³GKÚÒVf§”f¯‡Ý̲}c'[öšÔŠ(Á׈"o~˜…â¢ÂÂëMMuÆF6¸1ÊH¾S„‡ÕE5½äÌBþ½§‚ŸŸ>z*D{ù°&e­\®TÊåµJ“©¶ÖÄ!ŸQÿò ‡½ªÑŽ€…¸¾r–øe×Ån™jbÄtŒ:7=¯èÖ 4äÃÈÃ{ƒã"""*#Zeeú—‰¾Lò<û¯ùD×ðnQxQnï)¦ÍCz‡rCÏ©²~ŘkmÝ[n=Œ¢þ϶LMendstream endobj 196 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1479 >> stream xœ¥SyLwža—Ù©"`íë1³ÖØ¢ˆ¢&Zh£Jb-G­ØxÕàºË.,; ;Ë ,¨hQ|Ô[,hYŽº+‡ŠG=Rm»¶J*S‹ÇŠš6¶F´µU{¥o’Ÿtïè?M“É/ófÞïû¾÷¾÷hJBÑ4Í$§Îž|© ¡•¡!Ê0ÍJ½r/Â4¦mª›ð"®éÙ˜IihÚæ(OíE–l³¤2ŒÒ‹›êM³$ÙãÇs¹\c³òcÅ‚ì)£Æè]ɬŸet Kô)¢MÒ§eåõ½ÚÆöžÉbžÝ) ô©âc¢¨H›èœY†%F³Åš—3–¢Ò© j6•IÍ¡’¨iÔt*…šA½E¥RiÔp*œŠ ú«%SZJ¢Ó3éæˆŠŸ4okvj‡hÚOCg…ž EfÒ®4€Œ§dú—f4JáîÌ;·`aqŽ‘÷­Ý±˜ŸÊ”Š›ã…Zá0ñ/zá$¦Æ­mvp ‹0‘¹Ý½çرGO¹ºR›šå f~"‹Qù*d<#Ó'X§òYÐÊadÌJBc¢H$‰¼5µ¨½õFòÄ@b¹¤ô =×;¿é:{:uÂøô¤$áÄy·Ê%QÎÕ‚7WªX¶j o¬›ÅÀ’dw¬8ç€cÛJaw¡¯âÏ’«¯”Á\Öj3G§êO¹øUžÕÕ"°&\B¬Î öÖÚšM¾ÍüqóIð‹ñM7÷³¶8jÃ'bj³6Ψ†vvg«ïÆugÿ¡è…ÍÀ¶CcÝM§ä?=4Fpt@ƒN%„Ék'¿gê Ñ$äßx]Wb‡œÜ`¯73â¼ùÜO]=ù°¼ÄU™»–¯œopZ€MÓ#ôG&)/sm+·Xž¶ÆÄLž²Ì2vµðØ {öÿz&æLþ¥=64â×çyàc`»Ÿµf¼|S¦¿  S噂{¹Ëé—‰~á«`k(jÚÞ²ñ3Þ·îcØì•£9iy£’ Z£Ø©]©¿më†ý~¾Éâ‡6`}MÐÖj‡w!lZ*$vq A¡Á•]ü>¬6cqÛc¿ïÆÈªÇvž  õgbBš«woq–•‚³œ_å.Κ줔®kŸ·üƒ/í¨Y ëOeÕÚªòuïŠíÀz=ïÅ‘°€$¦‘!Iøí(ŒÀ-wj@wÊ"Ó»XÕÛºoŸÓº1Œ³ÎÐ8GMt4éO"zF#uäÐŽ½{+Ê?Õ§DÈe¾Ÿ’ñݵëò™ ÇßËäïSqØOíÞeÜÚ­QâñÎÓû}ëW‘ð1#I_ùW¾„ƒô4k,-Sk³fÂrx&ïvÝb«:¹ºNïÿÎÂÁ…›؇ ¬á¹;Š3Ÿõúžóÿ¯©Êê—¯üAc¹:̲r’óI¢(I¢Ø(ù|>ž¤“œû>ÍvC‰Ÿ„?Aëgjv©€¢ ø ^bzEöâ*N™Î~ñÐ 2‰qÛÕ{;ƒ8ï9ÉÀ'âkL­WÅɇAýþPýy2ÁG£,Â\ vŠù0w1_¹~éÑLuÚrVÚòWïrA°9÷á`@ü:³óÁæõÜGv‚YÀiº«ð|TšÊ“b]¹íAçþSJA=èÃ?vàTU¯¸¹²Í…[ €›9‘hHŸ®¸îã¿„NÀ2 #dI!Ó±ŒÃ{®žln΃Ek ¬TpHÙÅ`_‰þõøÚÝ;wµå›j„ r–[h8uñûÃ~UTFBü¢ÌÅA~¬¿H¥Äj”ÉXÏUïƒö}&X&3Ìr#˜Œí°-˜8€Æù8@ƒWNsíVo®ÉnÍ5µØ[Û½-­|øòj%y3&T3déFÜ'Зï£-Ã^ÃÂaý(ê_@Ô‡endstream endobj 197 0 obj << /Filter /FlateDecode /Length 183 >> stream xœ]O;à Û97 ¤(ʱ¤K†VUÛ xD DÈÐÛ—OÒ¡ƒ‘Œí÷üÈ8]'k"&àä "ÖÆª›Ûƒ<Ãb,¢-VFƃ•W®Â#2Þ„<àd]ù]¬@ž-íÊ­!él^HÂ.€†¦áƒÖU«YÎKrfèfž(åº×]¢,)¬ª*Ó¤°ªöeø9&ïÉÏ‚Xî!€å¬R;·5~—{çs ' /o|^dendstream endobj 198 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1359 >> stream xœU“ LwÇïèƒB3UØÎötв0„-›|ÎL™› d쮵ª¥-×ãQ^…>î×R(­òr€«[Ât1¸ÍÅG6Äefa˦3$šÅ8gâkÉÿÚÑà†æŸ»ûþï÷ÿ}ŸßÿþGÒ‚$ÉØµß*ÈHŸ‹…HŽæI€F[iÙîS2ˆ—@¼ôsZ}N˜?Kˆ›‰ÆŸ%b"a&ʈ&¢•è!¾ ‰!ââ ñ'ñh“°Öl±±†¢bŽY²#…ÉÈÌ\–ʼ’žžÉ¬)ѳ†³QÃëK4œ812¹æ=gc–,/æ8KÖÒ¥iškš™-Z™’ÊT¸bf«ÞªgËõ:fÙÄ1›4%zf ²•l#ýd; â'¶TJl'†Èydy ³;fT2S”<’æ .EøžÓGËoö’‚I$Ât8G Â$Šï®G,– :œ´5û­N¯ÛÃ{ªª±CƒÜ65º­º½íϤjÛ _uZÞmàÙKMZÏÊzPÉïm†r òäeÍP»Ç¥Ø«Îvâ$ÁfüSS#ˆ¶TC;tu{ÁëUùZÐl”|¢DÔ3††DË@Òj ž„GÇ&*ĉsetª½á÷® WÐ}¡Öщ 6AuµèíV9]x6NNÆ…8÷¼‡wF —±ë7PºXO}ôÁSô“Þèâ)e94_/.‚(B$Ž $ŸÃ,’à:”µ]6ŸÃçöò¾¨n?ŪÍ5¾&h ?ðaÕÙ e*…ð½ø ô¼EǶÞ:ØOß¿}[ò€F{”_z{ú!Db»9+[S\pJs¥žAuèÛ ªßÑèº8„~=‚ GÐLJ‘rßIñ6ªô9w¹«Ê€¥v…ª|êúj(0oU.&ñ'y*W=¦£<Ž_PŠ_6áì]Xm{³oÉ‚"°àÅV…m4¶õÑR‡Øjê¨DÈ ±] b/î–“ë¯jÐ2îFã}¸ ¨ûgô.ŠGs÷ÔΚüÍ5uªE8aÎl¼ „ Ñ\¼"¸gdÕ~ |íT?U¢~T‚~ŒžQZÀ¢B<­hØ·á7PŽ&·Ýéuù\êïd}_=Xiܸ¨4E™-Ù¹SÄîw·v>Û¹Ou%Œ @VJ©¡q¥XÄ)¸å¢T€ÇüT8FKËý"r µ×ØSçl¬w¨¢ÏbƒÐ„ÕLWõ…!™‚–…èˆë:-½w‚¤¥÷E­D è’Œ•ë^œ¿Ç–”;RJqPÑ;r¡MøËßîmÖ¤ Û¦`tgxV¢ð=7jî!ûõª+„ªÏm;œE…ä8–ÑX+ç€ç]ͼ *¡^88^œíŠ>hØà“ê°_¥ˆ}Xs:2ï()dF”Eß±7ðnpN…Ãçå×WDbWçlzÝTíXgÅ‹E¢rtGXãˆD¾$ðñžæ¾,lM9’ªj:7‹¯¡:Ùøy¹…çjEäo±Å1Z6«— _“D¶?|I‰m8¯ÄVqä£U¨R~Ûßh5 ­U ±8ˆÌØ‚‰ÃŒ,(¨ ÓqEE¯\üн±ÇãŽÏPÅImæøgŽúããÅ+ þ¯ÔâÁendstream endobj 199 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1053 >> stream xœePkLSw½—î+›$7êÜn¯ d-2жDe—S#ƒÐÐ*K”–‡P \~ÅñFy3¤Zunqâ60Îe›dÂL{è ‰K£¿Ûý÷a°¯ûrrÎINrΡ)¹EÓ´¿:5mï “vÒÒË~Ò+2 Ù¾N_’?(d _ýûj0ê·bÆ ˜ö"%£iƒ¹Rm4•XòÎæZ…ðœaO||\¤/4è,y9š!UcÍÕ4ÖuqNH7æäé¬%Bøþ\«Õ”m·Û£4†Â(£ålbD¤`ϳæ iºBÅ¦Ó ‡ŒVá˜Æ 6ªEm€Úh0Yu!Õ¨ÕY (ŠbT…š]LE…PÇ)uš:Dm¥vRìú(JN9èmô%¿(¿¿g²h©>È÷¼8ëÆa/êÇ’ð\ö/‰Ó3À¡WþÓÉèÁ±7k¥wp7Ê~y²üæ2ÙÕ«ü«gu–ØGÄÿ'“|ò ‡Ì´NñøZÀŸóo¥$%¦FI‚É*wZÇ”xm R·ãÕ*•Šø+ƒ¤²*·¤¡gçphN&EH{¹è(» ‚ãQeN±Í‚#lì3óòÏÓŸ~<È·œôXÇýð9¬)çΜ`ª K«…ëíüÓ\HhYþ{§<Ó·n.â±f>È·d»¥/=ùP&9q…™Ÿr8Y/SÓ ©?fH»èpN+B´Ì„Ø\ਫ®«&›HÕvÂaW}S}3´ì‡ÞˉɢÊàh£¥ñ¿Ì´Õu磚HÛk嵕æ“y‡“¡lPÒÑÑÔÕ C¬«¸×\h+3dLå~ùûÌêh$}V5Ž™£릿XÉE™”‡6n°†–²q3I B˜@$™PÜ…¡3H 6‰¥b­£Ni8x 8ŽÃûWŒgnÀ]p±£\¾ôÇÐ5@Zç,`ׯ·¹}~nz~ g×dÒ ¼Ç-‘ˆ@†Uj (¢8p_78 î/\)û žÀmø–.ß¼òðþ¥qøî &upª ކݥéÆ×Õz`ƒð) ÓQA#‹ VJ ç1¹ôz“I¯w™<—ËÓ;òÿyA¶IÝ…ÆöÖ¢é`¼+›ù@y\¿b“»E¡XéQl¡¨é²û'endstream endobj 200 0 obj << /Filter /FlateDecode /Length 9609 >> stream xœí}ße7r^žÛy´<^øÅ·õñáoRŽ ¬†½ {c{ÇN­z~îH3ÓÒôH²ò×ç+ò¬:‡¼ÓRËB‚0ç|]‡,’Åb«.ùÍi]Ôi¥ÿ¶Ÿ½½úËÖæôêþj=½ºúæJ忞¶ž½=}þFYÒšÔéÉË«ò©:)–¨ã)¬vQÆŸž¼½úâüýõͺèuÕ)œÿx½.&Ú¤ãù5µZçg×Ú/.Yúû1Ïø3¾ )&w¾/ Uþ|[S´çW/ˆÂ$|æÎïP˜]W”qæð{ªnÕJÛóí<«×\v«úêh ÿ|ÿ«5œæîÕj¿†óÝËÊa<¹Z×°Fâ{–BÐÄQð’ÙR^£Î¬¢W·åS§ÐVÑwÔ ¥Ô2,Šþ²ï!šÑ Ï~È‚¹*ìFl9ƒfq£r•}Ù„yÔ&³`nøT+øxk’ֻ֨܃몒Õ`—`ôj$Su}£|ÈÃò)=z<ºòÈÐòøWàÀžè,0êjÇÝ»Ë]ïQˆøä¿ìÅ`§pÔâ”kcò;1»>‡dùµÕ\Þ¸DþᜋOÉ»0´B«6"BÔ¥Ä3i±Ê­Rÿ·ƒóR á;e¨¹aÒAJ­¼†Œ:äÓCî „9ö¿è³¢öF5A¬|‚Ük³X·nsåõ¾*!]PÑ´ný¬”¯ ­Uõ Œuµ†ˆr j"Ç‚»ñ¬.6¦²âþ¼ísö §û‚ ­þ‡‚Ò³›ÍzpÇ“Y‚×jŸ?\_ž£vÁtìsôÓÈntHèy‹ äÝá_îû ’º‚×`B<¿Ââå,SÈ”°üf;f#xQh©þm&ðÚha…üI×GïK®–¾º¥S™)q]WŸÎ‘¹P6†l÷ dØKçÌõY )_š›…t÷žH#J¶ç¿íUÜõœ0¸Ðʆ®L‰áR’eXC NÞ¤ ©Õ^L߆\’ZYá&µ(o¡I›‘Õ—0·Xü±HÉîpâË!·KÌ f“•䉺 î|[»K_îÞeûtµNŸoöv—‚#ì®—üË<,ÊeÏÜ+–žò&ì-½@3Ôtññä^§#ìU±†•q†¦P]c„Q ºÕyo7©AÛc‘›²>Á¦£ö& ¹ù¶—W=Ú h³Lës×ôÝò(ÇîF9¼¦‡mdã¶ýÙ~uد©˜h¡Û\læ -í¯|Ë{û–¦Y4XÅœ,%:4óî‹ÕîùÿVÿíþê(åAÐɨ y/LŒEVG1êaÕu£+뱇Û\¤A?fs¹ÄÖ2Ÿ0ìæ6—ªrû“m.^ÕÇl.c°ñcV=7ºª%ù£+šbt¹ªGìÉ®ö8Ò¹â›Ïd‡c BUО¥ÙàþÉ—Ûò±»¬þ„¯Ñ—–VÌÎÅ«†\ZAÆ[ (“”æÉE ýjiÁ"‚Ó² )À‚Øä»ÁÖ°±‹J=d¨I¥ì‹b¬± òÀl†3YkJ'8­!ø²*©lPa4nöúu5uÔ”Òì#qÖQš:èfx@£*4f¦5•øË2=”Z!Ö¼h¤‹¼UÆÍq-–2äm×Ìÿ¼75%ç~‰¤²·Š•Õ?ú<ëX|Xfo¯Ë¬è9Ò°*nZ¾¹rŠt&ÕjƒN°¬p‡OÊ..„Ï€RsànÑåí¬Vè^°g¨~-gÖmÙËÒ¨ëºzø¬ÛŒþÍ^qÂŽ1ê4uVeÿæÇ(ìî›m“'@{°ÉmBÀÚMî]uÕ«L*³Oî‡5ì‚>hפYû’#ÆVk^´Öe}U×D‹³’ç³bÏCçYJCgM¨.ÏG·‰² ,fÞl›(.:/©B´>/‚ G"aÞiò`Šüp­¦°õۼ˓¹Ø…vÈ?FV¼Ý/e›‹x@EB¹0ñ°6Q+&v( bAerñø™;ò?¶÷¼¾Ø{{)„ älß%ijöÞ_Ù•›£XõèÌo.np(ù ?Ït¸,ûi]Ŷ¿?ú«+*;HïÏ5¨jù lŸe¨ú€e·/Ìph;„‡@†Õ–LBM»EÚds "ÖKè=€˜›.|qþªÐ¢eû¬Ev¢:ÿá=7_½*5Æ i<³ì CySÏ(•lÌüµ_UÍüð˜íÜX,Ãauº"ÅßÒùWµÚ­ˆHMÜþ{/­±Åþó›¾ÓÊ?$ÃC“,ø±…q0ÊŒ®›ƒˆ¼¾@”½T k¦w{ü¡?¾è÷ý±ú RV ¶«4r{«ŒJ&ÍvãaAa ¡S,ŠN†¶6áÉâEÕÓ|²²Cï 1Œ¹ ¶2QXnßÞw!øPþž`(³:˜,ý;À8²Ø9(ms:‘,6Ÿ¥ñUD+s°º‰ä¿ìV­¾Ï^Ý»>Ÿž .J}QK ¾ŠÛ·»*¼2*%aÄ’ˆ­$b†·~éÑ+6?’hSf ÞNæ½I‹Å¥/YÃYì–Œ¤H²Å’R¾ß—!·äÖ,éöËy0d:‰oX•O‹‰¦0#'n f`·T®‰ï¹Ó{‹èÆXˆ[Š» Wé— þì‡n{ÂãûüxŒ“ì›bûúÍöÝGNDøáåÑ‚Éc¦u ªãDîè-š>ßbc1]8襯óŽ¦Ã²òuWwÌË=Ðç¥Úu`zá®î/8©-ªF1BKOæú*kDG^óX#¨Çô­ä,æº% WõÃ>‘{å zãû¾É¸5Xûu¦òF’á í1<4) Ý…ú¬* Ý:Þ,‚âfRwÙÕ¡½46 Vµ5êóvv˜£P‰m“æ®k1¦ÂïH' |ßçÐg’´<‚*¦p›[T ìýõõÓäÉûmx·¯=.ýñiôÃǵöß;zÓQ¶è¾é¯º\ÝõÇ¥?>í·ýñ‡þø¢?Þ÷G(ö,d·=~RY+['G&ÞõÇýñýöM/ì³þø¦¼rùaÌðûa›?¯xóG5ëL•çÐ?íª?¦þÈ>û¤?>Í3ÁÀæÑ>ö™Òþ¾¿ú¾?2Z?¤½íoúã×ýñCÚ1Ëe †²æÏeÚZ'mF6C¾Šï]üз±ÌÏ?ÇÌjŸt~žL¶Ø¼¸ýÁgýñÏ?6o›B/‡ì¼V̤þû!;/8#ñOãq·CvÁA—ìÅì}­ÂuŸ+ëh‚Leï(o9KÂVÓ¾¹RÐëøä¤ÉÝröd`h/Ñ”¢ä5{zÿâô?Oï(Ü àï¯Ôé·øŸ¬š¨O¿þýU‰ýþ׿»¢põSN;²(®ÔW‚J Nýbµ ©ˆ5K•WX›UE8UH°=UCà$Vª”ÛÁ©*âÓ‚e4SyŠÍ¾:ÒËòÆ/Fm€ÅJî7ø «àª!Ñ.ÞmTpÑœª ÆÚÔ²à!yÉUEXY2j9ÑxXJf#1äÿ š ñÖÁÎØ¨ÐŒ$˜jH ôëŠ,sÑ –†²PE¿È¢6 ‘E[hâ —JpÕ640§ÈnâTáe‘u/¸jHL”Ï[¨ F^ ªŠ¸z£Šd& ªŠpª”åUCºÈ$ÚF¢ÜF9òBh:¨¹‚ª"lZ$Œ‚BÓ&¦)‰Îâ¯ôwX~ŠJì$ iÁ^I©pªŠtŽôjóhrª†°²|\” @¡Å(ˆÒKR+m`sªŽ0*H‘5‚J"…Š"â‚H…2”W a½á&9äTéãœ\ZAÕλ¦M5ÑY;¤PAõ¯‚¯Ž°² CÑ ª†0*ÈÐíiÕÑvŒdª!½ ø)R·ï‘B1J‚©†°.5”¢/˜ê«r$t{GxY뤞’©ìêájqª†°²,Iô» è$jHçÝzM«§’H¡ŠX%W aeA’ŸŽt*G¬‚¯†01u´/)øj§r~Ñ‚¯†°Þrë£à«#Œ/ÈRrÓV£‡,9ÁWGzYÞ(J–çTa|yGkAÕVdI(øŽxKr]¨ K^òUÆ}€,YÁWCêPøÕZ0Õ‘ÎT°&uŒª"¬¢$u|C8DÉI¦ÒkŒëºÓñ a Œ*¯Ÿœª"¬Æh(<,¨Âj„(‰µ¼#}•Ö¢$ÖòŽÔ.”»$Ʀ!•$Aˆ’èƒR¨(GNpÔÖº!²¢:Ò[—`iÁTGUŒË*ù’QxqKäcÃV–Y!G. *‰*k•D •7‹²‚ª!¬FÈQ’|5¤S)È‘¨P…Rd%‘D J*¾#}| ¼ˆe\íB)Š‚H…&Q¬ ’H¦ÒpÌŒàª!Œ+m´Tñ{¤PÑï:QzjŸ¤‚ß#… rd%WÉTf RÁï‘B¥\Ì÷H¡‚‰Å¼#¬ äH,æ{¤PE½hÑ;$SÙUIW­#]gK1tÁWC_6®Czß[H’|5„—ü¢$_á|A–„·Ö‘¾ðY ‚¯Žt¾E ÑÔ®rNIW­#$¬ÒOëãÚAŠ„Ÿ¶G2•‡ ©ë%¯½Ôìé~¡!ÿVÉ¢*© CÂ!jˆ×ÐÍQÔR½w¤»˜&@„¬`«!lXŠê½#}ñ2ÒÉ…è5¤öT€üDÁTCxAÁït{C8Urr gH—•¨¬ðÓ:ÀhrÞ£ ’H¡‚ ?!¬,H‘ðÓ¨0‚õtš!~Ú)T"á§1„•)~Ú)Tô[`A$€BôÒÒê³+„Hxi{¤PAˆ¼T)T"á¨í‘Bå¢Ü3bã+x©Û÷H¡‚É—D2•¢ßŒ¾vH¡Â³ÐíéÚÁ*§é÷Mœª"œ ’$tû)T%¡Û÷H¦Òk”º!½¿à6KݾG íÊ ¾vH¡‚0‰•œ!¬FH“pÕÒ©`ìÉ•œ!ŒJ+éª1„QQæŽè‰Ž0*úáªà«#Œ*éªí‘B•¼tÕöH¦²&áª1¤×f¥«ÆFå´tÕ:ÒW;kƒ’ÞÚ)T1Io­#¬,·Fé­u„I´ƒ49ÁWG:÷Îz©é÷H¡òNzká5Bš¢ä«!½FiûGé+õ&èH¯1‡-TˆÙüPX§=m›Óö²?åÍvÓÂ9Hñì~ RÜ?{7ýY ,¸D)h+O?Ä'Ú02”2B?kùÕ»Û7× ˆŸ¸}º{yúJ¾½ýîÕééí5T.,sþášN)PI_Üÿáì?ñŸ¬[TõY^ŸÍ¿£ÔLsèì¦ùðúí ŠÔ#7đҚ²tN4+só»»k»Òa ú¼œ^¿{ymò›;¿xöáÅóëö«ŸŸ=Ø3ä¸ìyl‡SÍÃ8<@3ãð`Ï,ŒÃKš‡qx°gÆ‘ÁžYG{faê™ÇqX°gÆÁž aì™…qX¨çB‡hæa왇qxYó0ö<6ŒÃ¨~¡0§ºÆaÁžQ‡m¸] ã4E)ŒÃ4ó0öLÃ8¬¤ aœÎÕãÃ8ŒêqaNu!ŒÃ‚=ó0Kaz¹Æé|=:ŒÃ©æ‘œZÝ¥0 ½ÌÃ8Œõ a ™‡qxó0ÐÌÃ8Œ¯i‡—t!ŒÃJºÆaš aVÖcÃ8œêÑaF5ãð`Ï<ŒÃƒ*ó0öÌÃ8¼¬y‡{æa^Ö<ŒÃ‚=Â8<Ø3äÔ¡¾ÆáÁžÇ†qxèeÆá¡— a왇qxó0¯ñB‡{Éi$ó0›†Â8<Øóè0 —\ã4¾.†qXYã0ªG†qÍcÃ8œjÆáÁž_"ŒÃ©æa왆qXIÂ8,ØóS‡SÍÃ8<ØóØ0§ºÆaA•y‡hæaì¹ÆaeÍÃ8οL‡Q]ãt®.…qXY ã4ª‹aTù…Â8ŒêB‡ñõË„q8ÕcÃ8œêÑaFu!ŒÃB/ã0ªÿgÃ8ŒêÑaFeÆáTó0öÌÃ8Œ¯Ka왇qxèåB‡{æaÎ×<ŒÃj¼ÆáÁžy‡{ìºH¢ èõ}q"ãK9GÇ •üßNëéùU‰Î”8„1eã&—¡È˜i¶LÛjUdȸ1RlE ¼áK¸ò¡l£w„~'©†HÝWd¡äYÜPçÛô±6C¤nûC•é27H\Ñ+&#:à6BH÷úŒPÐÇm‹Iï'æY9@lÞœ 3—æäqtârF°.ÐŒìÕJ³ïˆx ÒšëŠKš{¤F.TÄü¤]ð²’7LHXó¼ &¯£„†ùË$ ;M¹PìD•èÌè8Ö,"3’Ö«#âhÛ.frQb¤9Y^ ‘?¡“ŒÊJÕÌ»l%‘:4Y É „ÂjˆTy×ke·£#ÐÕ: ‘VŽ¢_oÛ1bó+<êÁk£wZZ¼ )Ÿ@5çŒÝkÕ®ÃXö0ŽHù„ü¤¯µFZëE³4†ÔJÄ»²%Ñ Ü*Š¡¥9Ž€Ö´,»0DúGr#j¢óȳº:"½ Ÿ=Zi³oL­bM‘V°5¶lúw£‘ƒ´V1ætܤÓc$w¹[S1·W‹?¿½¢·£¼ÖÒh}ózˆ´¶Ð<Íõ«)\Gè%7Fêt"“ àŽ RI²¥*ŒVp [,ôˆÔ¯z?š!RW0^ Ä™âMw$è¢:‚ÞO¢œ¸¦2ßH«=ê¸å56ĆÍù="µ]ÑËW Cc¤’02Î ‘Æ^Òº>d gk:÷T öM¾@ */kJ¡¸­G¤ògV:ß|T4tþvŠcÄæWŒ[pýƒæÌñµê0³&%~Šj7¢cq5;‚áñò+ïË?"¥f,·Å{,¯tèwòÇ×ö9‰¬@¬*ÞàÙ ñ+›ý†. 鳿¿öÏÑÿb#Ï€ébÔuĸbÔuÄÙmãõˆl¨1èæ¤ÆHû /~e,z^ÄÐŒ¥iÍ)‚«Pl¼ýk•›ïzÂñ…Ü82þ쩳ËÐ/²•"UžÑ ª¸SG¤ ´Ãy?DúW!Wj€lSÐPæ“Òx:ù$‘ZŽÇhfqD?£éì©&”¡l£‡HÝ04”«“¥RsnLÀ€“§t6ËR“òêzªùi(I‡\¤’7Yña­Øè¶´õ=PY#!ïuîf|šHW%¤!R÷> ¥ådÅ~DÚ¸QRÎjÇH·ˆ¿E5Dڸŋ7@ªS:Ž C¤L)ÊÄé6žI…n㙄a÷]å$Œ° Ç×:}-eÑh'ʻӡ'`°\#›~±”#~ûÃú¥ÁÍEçû-iÔRFÇGx%;ÎVL\¥ÞêHî«Rë4 S›.Ìj¯èpçú+ŸÆˆ1Þ]©÷×VQ>Ž+u‹m‹Ä4ĬÛgH)–òHT¯³»˜oÛ+z6èÁë¦>­]Ýâ†@þ€ÒAt/?VöWôfì=eÑqþøÖJNI†³’¿ ô 寕ޡ¿“"uNXÊ7nœÍó. $i²u¤•LÙ«"í+ÒcQ]Dhƒ§oèìOÙ6tY¥òÀYV©ÄfY¥òÀIVéîÀIVioAÛ.¢s‡U¦‡D¶XÎÔÉ›´šÐ¦EGv_Q™¬WvÇ‘L’VÅq$³œUyÉ$g•Õ\7­zk`“EÈxwk6à"¿ÚZ³`±)‡š•¢1=É»·Qq.:‘E¾…ß­$ëé&ÛLTr‘Ò¡§äA*“l[F_7ÜzûP®Š²5ÅeˆüjÒ>i–³æ¥’#Ú·•ÄÚW‘qûä0“Da~Ì$MXž3K–'ÀÌÒ„å 0ãfr„åñ/³ayüË,GXÿ2É>fs„åñ/“$áC"ñ(GXÿ2Ë>fr„åñ/“á6Ë–Ç¿Ìr„%6Ë–Ç¿Ìr„åñ/“áÝñ/³ayüË,GXÿ2Ë–Ç¿Ìr„åñ/“áÝñ/³avüË0AXžý2K–g¿Ì„%6IÞý2K–g¿Ì„åÙ/³ayöË,AXžý2Kfg¿Œ²ƒ90L >fRƒå©/³Ô`yêË,5XbãÔàcñ85Xžú2K >&Rƒ Ä£Ô`yêË$5x‡MrƒùãÔàcñ(5؈S_f©ÁÇâAnð!x|L ¦ËS_f©ÁÇâAn°8õe–|L ¤ˆ‡©ÁÇâQjð1x”,O}™¥ˆ©ÁÇâaj°<õe–,O}™¥·âÚ÷ÃÔ`yêË,5Xžú2I Þú2K –§¾Lrƒû©/ü` “‚åy/“¤àcêð(+Xœ÷2K –罌“‚»§ßcÕÓ7´á¹§o|¾P ò+éïk§sj ¢óàË c5Ú5k`†È¯ö<ˆ³j†ùÌœƒáèİí7ôúRÖî ‘_í9á̲¥åA8³liyÎ,[š„3L•–§àÌR¥%6I•Þ‚3É•Ð,Uú˜P=J•–§àÌR¥%6Ε–Ð,Uú˜P=J•–§àÌR¥ Õƒ\éC>õ1Uz Î,Uú˜P=J•>&TR¥ Õ£Tiy Î,Uú˜P=H•>&TS¥ Õ£Ti#NÁ™¥JKl–*}L¨¤Jª‡©ÒòœYªô1¡z”*}L¨¥JËSp&©Ò;l–*-±Yª´Äf©Ò›¥JKl–*}L¨¤Jª‡©ÒòœYª´Äf©ÒòœYªô1¡z*½;g–*-OÁ™¥JËSpf©ÒÇ„êQª´<g’*½;g–*-OÁ™¥JËSp†¹Ò?âXœ‡ð²%V›hK¥E47$ÛªŽÀ#¯ûÏ5A¸S5¤SµÔÔFÕFU3+;UCUÍ ìT aT59®S5„QÕü®NÕNÕ’˜UGUÍÚéT aT5;¤S5„QÕ¤…NÕNÕÂò}¨vcËG»Sýˆã”ìè8%:ÝÈÓî%þ]á?y{uÖXÁé”#O×Dº²’ÒL¾ûüúK¾Ì6ÿCý ˧Sè=ùUùŒ÷Âð+8˜ äþ«òúY©qmæÁªößýëöYJhõî3ý“š¦RÓôOlšþiM3?©iæ!M2ú,·-¸yÛà\Œ¿£”™ýw½möPÝÚ¦ŒŽƒ¶åµÚaZm±¨ˆ4¨?èI…˜½ñ?çM·H.DPN /¦‚¨Ç7"ÆòÃæt?•ŒìΜ÷ƒ‚ÌvFÚz}££O‹ gGφnŸ gµÒË :âűtúØYe:†¬ÂŒÑù÷”Ÿih§Í»¤PTÞû…µ»ÞÐ’ª²’9Ù{¨g>þs¤VŠ…O4/fCJ9å»î•ëDQSÊ™Ÿ±ì,Ûlõ ‘úÕ rHkzä7›O.sðUN4d0º²L¿ÛiÀ¶c]J2^ñ[†$Ø¿?^ùƒõ¡N˜ò7ðÔŒ'°½Ûää7ï^^ceKžîÿlÖaA¤ßžüýÕù_¾þúÅû§wß¾{~ýWOþëç_½¡;c5V´íü6pþß~xúþÅíW é4dnw'_]™ ú”|núñMÌýþšßÃÛ.IþŽîW)$–{E)‚L7„ÞJßNf»=1B§åkj·‹L?°K' …‡gvæw8Þ÷kÙŽwïÊ]ÌzUù>GGûéóÝËòLÝ8¾ƒqwdþΊ›ý^ç 5,KqËl¹)2Á2æ÷C¾(eÀZÈ×Ý–KÏ·íúÀèI}~}䤶|­¯3ùºÊíbJøfZ\àK½«#¼ÄóÝí3ê¿K×3–V‹k„7Þ,oóÛr ©…€Ÿo_•?Øhívók¹?òéîÆàvAvCéÂMR?X~½ìÝ{yó#­Éø°»k”‹K¹³8_=¹]Z }â—'µæ«q-…÷£ž]õ»QØ|Ïlc Ô-5ÕDó Ä7´MÃׯ|Ìr `x‹Y¿ÞÅŠ˜ÀÏsVnÉr·2»ê÷ë|¬‹nRXoº_”]‹KÒmóÏ!‹t}ž^+Z1½´”.ÏW/Öáú¶O¢2ÎùÞÏç[…tçlã}ëw%æÄv¯r4¼b~Éh.uÅí¯O­ÔK¹(PÄäÿ¶u_®yÃÎê5olÆ0¡}µÝò¶ÑÊ[©ù´‹¦ê Ç]öê¶ô­7Rp¾ÛÍ߬ÀnX<½nW‰NäíŽ÷ØëÞ!¤)ÿ-f9b ŠÝ3N…ó‘gÂÃæïÓ^ëÀì’ÜR5]´z÷®+—|›Ê“—Öî5F»i;÷£UV2tù&éç|@s0TÊ4ܘx^`—ÔàbïÜþg4³ þ-[ؽµlöqu×êNì’ó»*QLŒ÷›à¡ªÐ.(κ·uDkiù._Ñͺ{“ÆR@¿sð q÷,†Òx3Én×g¹WöÒ5½0ø`óÐt­—óu³Œ¼Ã˜ì"KöíWY/yX¡yÅ£_1A#N^ÌæïI9ÎEúlzäÅ® *+"ÒŸ|yuS1énÜ=eëfÓ_¡Ãü·‚(Lš¬²ß\7Qá)>Av]†Ÿ=ï³UŒKÿÛB¡¥}ÆYë.!ï¯û®•8ñ“^i—Ín¶G ìiM?ùû³o{ÿtõ»ì>îendstream endobj 201 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 546 >> stream xœèýCMMI6%øøø‹û`ødù,‹ ‹ ©ø‹÷^÷Y÷Uns‚Copyright (c) 1997, 2009 American Mathematical Society (), with Reserved Font Name CMMI6.CMMI6Computer ModernijJK˜#øˆøQ«ø«÷ ÁŸ÷ئ×÷ðù£y›tpnqnr|¡«¤©¤Oûñ•”£”Ž”•‹œÃYªY%Zûu†‚™™Ž‘”ާìÀ¢§‹Ÿ’~tw…|‰„Wûn‹‰~i~m†~‹zX¹gÂð½÷¡Š—y}Іx…{XbOX‹y‚—£Ÿ‘š˜ªø“û`«øÙ«÷ ÁŸ—ì÷‚Ûødù©s•{krlsv›x¤¥©¤©ûiý1x@PXQ‹ˆoŒŒŽ‹Œš—’›‹š«q’}pmufVÊ´Î÷ ±÷ ©å÷ú•Ž”‹™ÃY³KûEûx…ƒ™™Œ™’¨Ìÿ‹©’rr~‰}Šˆv øC•––÷p û`•® à  7Ÿ ® jâ[endstream endobj 202 0 obj << /Filter /FlateDecode /Length 12059 >> stream xœÕ}[%7Žæ{a~Äy<Ù¨ŒÖý2ÐÛ»ƒíAØi×`°û!]·®vÌêʲ½Æüù%©PˆŒ#ºì®ØÚ]pé|ÉPH"%‘ÅøÛÉ,ödð¿õßç—'¿ý“ó§×OÌéõ“¿=±ô×ÓúÏóËé¿< ïYª©öôìÕ“ö¨=Y–œâ)›°XŸNÏ.O¾>ÿáæÖ,¦ÖXêùþæÖ—¸$ãί_"îk 9n–`L¬áÌá÷{㬠绷P¶µÍù)ÔRë’«?¸Ùêþ >kÍÙµJZ…~ö¯ØÞÀÛ›ÃRRÀV?{-|„J°¨äûQ|?Š?ŒâËQ|3Šo§Å»Q¼Åç¼²µub4³[Š)®·îŽM:~÷üÆ¥%ïnb\œñé|‡#éK‚AKç vÜÕZ üá»—[œ£V¯Có¸Opê(0Ž„V8íÝãÇóOw¹:ukL6åüÐ4Þ÷‚qàE£Žå –¢“¯G6–9øpÏžþÃb¬-íÖ¦rTO·Ö/1”Ò‹‹Éë’›31 ϵԸ¶>yãAfpl³ÏEŒtÛU”B{þÏV46ŠºùÀÀ¸R§‰ Ç”0 H¾±Â`Ò™÷ïáÃZ Loy¿å£Ø¨âcÂñÅjèý÷íÑ"‹4&âb2ÁAñ•˜X[€î+ļM(©Éz[+oõCòOhæks‘íìC ÛP&è!Hf°¡¢T!X ÛßAd5¼¡Qw!Ѹ×kmÆ3éù˨‚µ˜·çQm †IÚ#ÍCïëRê6ï¨V`vJ‚V¶D±?ØD ô<{†ËV›Î&¥HKÅJÁW=¢öä(®ü*0åáÅ0÷ƒõ‘/zw­•Ùájs§¼wÀƒ@3Ú{ÃbÏL²˜ÜÞ1¹h/²9&+‡`å×­êZ"t옡ôðfäûÑìË6qø,,;>åÝD~FCfŒ««Ðøêhœ`BW_šmJ燷cvӠ𳇉 #Va¥?ÿÈjkñÙ­ÛN›þ¯[ÅÆû!.ëœ'é{ÛH2tKUšG6'`âc#öÅÉEËgëI<ÿ«€Y“çü_Ùÿ¾‘àü»#~¾ |Ã¥Õâ6àÏÿrS<ôËeÁ6\ö § Ššàòü~­^óŽÑP-%Àîñ@œ5ÖY16m£ˆ®Òj´=‡cã+Nø¶}§ÄûÚÞ–¡+V·VY.(S ÊðªñÚÛ›u[àÒÔç"›ibÆði‡Ãš bøSfñËF Š­`¯¼¸aqà•p öäLK);_&ZʇQ|œªÎ.0𛂿 “‡ËÚ Øô9ã›B‘LV˜•K9ùЄ&Ú¶Ä·þ[E¼ï>4 Ô(”]±¿üçf@* î/L ÚäJL¾Oâgo Ÿ´4 ©‚"µ5Æçü€k΄XD%í…Á'×Å'Âné÷]/7A4 €É6AŒÊ2$•XÚÖ˺m'c ŒñC›T&ÂK·Þß2yü—ºý\geIÑ Yû®ï³¨0¾fâ}x}'XÌ•9W-üjúÛ`ñ˜Iw­~¨§ïóX”ŠâØýûNÁÞÁH?ZúTÌ+EŽ> Ó°†T«à6ˆ1H´…ÑÉRŒùòÓU^u“Öö§àkÊ»m)k‚‘@™Þ =—a1ûvP<ð:î‡ÂÛu6²(b@]²ô&É]…¿ä)Mñmwüã“g¿ùZÊ̶‹¡,gø5x ÏX!Ǥÿ2ayÑ…í«oÚ0ÿxGhÙöØ9ÿÞã4%´ž^µªb³uº‚ûýØÁÖH®?®m·^lík½ÙÈ醦.Ö°üe}³Ý¦Í‚–mTßµ—dPîÚ6ém_Š*Ðg±éâ±JYÓ%€‹?²µê¾¿zÕ¬2Òó^³•Ÿ¯9χÂÍu覇Ìò|4äÞ»Ê7Ïá;V!””wC<˜šôОG¡°;…ì·ÊUl&`Æ_»äý3l΃âVSv“nàRñÃ(¾Å·ã±èí@ßôÍ(>Nëýæ|3³Óç÷ë›™õþÅ(úQ4Óâ?ŽbøíÓQ¼Lßf§´?~¬eŒöÛ)mœÒ²!až‰w£ø—)íÓ¾-S´u¨XÐB¿¹ÙÖª8‘—93ºŒ"“­…5àž¯HÑ—¸™e޳iûÿ)‹þÛ³'ÿŽ> >Â_N>t³œlÌn‰ùdm,Kö§÷/OÿãtÿÄ-%ûO?>±'˜?§¿‚ÞXÜé÷_=i'E_ýþË'6ļ8òÉØ%•Ó…!6ƒvzûä+À2ü5ªŽp*4*o+ø³!œ*à¡— ê§‚^K.v6Z”ŒF•ÃŽ‹á#ŸKYdU+À¤¦¿81¤ÂF« _VR­öÔ­DÞaµœhE8Q€ZÅXu$´üWªdv<ì—†’㎇u•ºãaGø¼¨x0-d¹#¼®jËŽ‡ÂF«â¹‡àΆ°‘¯X¯ Z¶ŠÔd%;ÀëÉiÇÁ ámBÿ˜`ÎA*g Œ.çÎ@Ʊu EPu$ÂüÏ+•÷Ku‚ª#£‡Î„²x/¨:Âߘœäá@8UÎ’‡áT诌‚ª#¬]VHòú“ÕbúN‰D‹“@P©NáJPœ|ÜÆIÀ] ª“@¸>ÑKÀˆt'7ÿu'w%èNnþëNîJP¢.ÝIÀÍvÍIÀš“€;t'¯Iw0­ágœÜ• ; ¸1®; ¸+AwpWÂçqpÃ}æ$àf¶î$àµèNîJм.ÝIÀÛ¥; ¸+áSœJwpó_wðºt'¯Kwðº&NáDнÃ4ù'w%¨NáJÐÜ• ; ¸+ás8 ¸a¯; ¸aÿ©NN¥; øu'w%èNîJPÂWÂÐÖÜ• ; ¸+AspG‚ê$m×Ü• : xu'0ÚU/·ÿU'p%¨^^•î$à­ÒÜ•ðiNNó©NN¥; øu'w%èNîJÐÜÌÖÜ• ; ¸+áó8 8•æ$à=ü%NW­—Jé@Õ×§²$ÆÞ ìK:ú3˜¼/ž4ó¿™¾°¥|03S3}A6ㆼeŒNô„ ?¢N°”p‚[4ËóÕï``k €½ËÚ â+¬)™j°sE7E"†‚¥4E@R#v-Ÿ'H00©kCÐ\)Sšî!°eÙ5Ãì ^$رb"‘š—0”#ì‹qË‘O¥ Ú îäˆÀ.U¦ˆ%Ù¶§`v¹4G®0ˆ pŸ!š›6ÁþdçH¡ˆ‹·hÖVäËÄEh+ÈàAÇú þ6A<ή!°1e k sÂËMS þ†À®”fȲÏÀŽ„¼¹FH~¥>؈7×TÜúPÞ ž"ÀY®{,_3À Ö‚lDÄ™kÄ\OÁ+-n† æV©›fAô3$¢yORPj"ÎL‹QàˆTK ø `k7Àá­Þ`i'Dv7b!ž";Oš¡ÂhÒXUØuŒ"ÐþD#^aÏ i†ø€Ö.°á”ƒiû5˜ Ž¸r¼Nç ÁËe†x0šÑ`~ZüÛ±`Öd`›‰ÖTàm zYÉ V|B qp†ÀÜ Ó´ W¦9D±°¿¸ Pp%¥Xº51E‡ˆ·7Gš™ˆ@K/3ïÒˆÂò²”,¸[ÏmÏ+0WKš#®é[ $gÔÃg¬%³ÖŽl§ˆ3dS¹ ¦“u3"6[xs~Ý­?XZ×3Qí¼ØzsÂ6'D~` "mÐ7ãâ-žÙÂÿÞ?9¿Å£Ýâýë*»&“ë,jwHh+Ç#Û«”'·áq5ÉÅèð’ð!5ÂMž¬ãj-™|ÙÇõeóPé‰èÏEw ÎzH`5 ë­àqÔ!5ÂÎȘ‡m¡"áx6‹æ_ʇ #l±pÊpˆì$Ôup åéˆQƒ%#4ÇcjăeÜöÍam¬xifÐçÒ!5âEwœÕÕÅêŒgtUlùCx ;aÀY]Iç<¢BJ vÂ,l)Óé„É €1 @štH  ¢çŒAwȜΠŸV{¤ìk5æ£fu;Žc žX”€ ÷©1€µ*3éAù1ù]9rý³´xÔVÁ‚=fÊÀlFkTÚƒ6-T°Ý¡b¸P°Æ¸dÊâpئ…Ƕèþ>l§Æ¦Q˜ÿa;u¡´ËGz ÆÍÄ#2e½¸v˜)XÂü¡ÎŽ‚—¥í‘ÆeÁ«Gˆº‚—eò‘5Vú,ÉÏÕÈnXï°]”{Ô»ÌïQï°Ëü"õÕeëÉEê«ËÖ³{Ô2ÛE¹G-°]”{Ô×·­g÷¨e¶Ëüõ.ÛezX…ûv¢|þÕ‘ëh„a[²í1ºqÒ‘Vù»Á „•ûÂØe]ØÅìó¼]æ×µ9}‹{Õal Ò;G‘‘±Å$¯ñó©pd÷”ÒAx!]þtždwp«jëà†Ì;(SÔ]æ7ÍýÉÏ:æ/z xw*Œ2D>5ï 64ˆþùÜŠ÷¯×4úבyÿdr½ËüŽ<§§k¼±‰€ìì°|HéZ̬`º˜}ÿzU£™÷O¦¼Ìo÷3úve‚÷Sbì{S…ÄîRú9Ù?¼êTwýëUþudÞ?™Ðð2MLÀÈÛmÞ=TS¬ì£c†È§öM¸J0ÉzÀÈÛeÞ„Já÷»b3CäSû&ÈdŒ%§‚LÆxQr*ÈdŒ%§‚Ä.JN‰]”œ 2ãEÉ© “1^¦Id2Æ‹’SA&c¼(9D2ÆË<¥‚€.óŒ 2ãEɨ S1^”Œ 2ãežQa—Šñ¢dT©/JF™Šñ¢dT©/ó” "ãežRA¤b¼(d*ÆË4£ÂuÞ…yF™ŠQ˨ S1jd*F-£‚LŨeT˜–QAbJF…]*ÆiR–ŠQ˨pwa–QA¦bÔ2*ÈTŒZF™ŠQ˨ S1*v˜–Qá:ïÂ,£‚LŨeT¸Î»0˨ S1jd*ÆIR…«ý–®Ê Î½í·té%ˆív»+³m·™m·<áã4mäP*õ£x¯¦ìÛ±ÞÇaíèȼ2­ä<;Ĥ1`±Ö"ƒÍQ6¦_ÙicvÙ+çI(®ƒ•zÙ<ÂK»Æ´F¼1™7F&ÉÔr]È$™Z® ™$SËu!1-×…ÄæÉ.d’L-×…L’©åº˜–ëB&ÉÔr]È$™Z® ™$SËu!“d*¹.vI2µ\2I¦–ëâ:#Æ,×…L’©$»I2µ\2I¦–ëB&ÉTr]ì’dj¹.D’L%Õ…Ì‘©¥º92•L2E¦–éB¦ÈÔ2]È™J¦‹¦¤º)2µLÓ2]È™Z¦ ™"SËt!Sdj™.®óaL2]ìRdj™.dŠL-Ó…L‘©eº˜–éBbZ¦‹ë|“T"E¦’éb‡Í3]L’fzôÁr·KšùËB®Y1,äHè÷Ò:Ò\”{ªàüsÒÈT¨ÖÛþŒjCU¿GÎÚµ!ŒªßQT¨ÖÛ¯ŒjCÕz§’Qm£Ú¯Aõ+Ò•†iºRX´sFíÊ"Ñ}“Æ¢'¬xS=&žƒö@IGÿ€ñò'Ž÷‡èx–eùÐÚcíþ9÷K^¦OÑÛ|š¾é[FÓá\Y‘³GÝ„$eB…‡ybfmDÃû±qçG'ˆ{ËzLAƒv£Y ŒŽðŒ¤ý$x+ØVF³‚híí bÝÿe"c¶4³xy=Óbš¯kifÍÍ­ïŸ-–Ñxq5Êž•C/ÛrŽ OFf¤õhváŒýôŒ´-¥ÈÓû fAm‹¿GK©zAÕNʨ—TáTÃZ•DˆÊƒ:j¹ðí‘F…n~IÕöFï³ ¡Ÿ9µ êø÷H©18‰Dzl“ ê¯ Ÿ’ª!=%­Tè›”jHÀÓí&íïèXÁšŽTtÚ¹• Ýâ’ª!°ÈÚ~7×£F.¸"ÁʶҨÐGÕŠàýáØßˆnT1è;¤Q»c`G2Xî}\ŒÖ ðbÖÃ]$‚~IÓ©`ý—L술òeÇÄŽ*¼å*س"°¥eå4*äIÈñŠˆÇ\2FRu„I *äQ°§#|°P!¯‚=)µ.ë¸'w<ì'ÂÈD1Xí¦eS@*PE…d­TÈ“`NGDM ˆJ®ˆ˜¨ùÂáu¡F^s:ÂÇ*ƒº"Y¸!lÜQ%—<ܶ~dÐë„©7^¨äQ |GD» ß’‡;¤QÁå6„½Uò,„¹#?¸¹,™ØÖAÔÇ%7„¿.&ò0ªŽp*üà¯å áT IÕÞ®J÷Í8UGX]¨¥'ÁžÒ¨0¤ê¯+8qê´¬U˜ß¨J¢aÃ^3Í ¢ŽðªJÜqpCU0ÆÈä‡{¤Q꜠ê¯ËUÉÄ=Ò¨‚—L¯+f™üpCØb ìh® ª ­«I5„/ÁÂ_¹˜v€-”š#J¢Ü ú\%QGXÿl’‡Âft ¥Kp§#‚ ÓAµ"‚ t]¡Ï „µ ï©ÁŽðºðjNÜ鈠òfÇà áo QæäÞ6¨y*Æa ì?®Wûºß.2^$tš azeå ¹7„5ʃé.Ô¿=Ò¨À—<ìo<ªJ’‡á‡?ïxØ.¦”àGŒ{GDK•J͆°.bÃ"ˆ:Â&’ÔK7„KCðNꥫ yÇÃŽðF%»caGøˆâA„Zº!|DC5R¥ÙN[J9FÕÖ,̈$´Ò áDÞ ¥´âmA¾*HiIÎu„w„­§ÈWI¤QU+u™ aN&îX·!c ø¶lkjóêîý{ø÷ÃÃý7gÿ3Ÿ¶‰tÉ7~äÓ6Þ´CÀ¿÷Ë6‡ú>‡€[õŸê!àT3—î!à¶¿î!àïÒ<².ÕCÀ-&ÕE üš‡@úTð#héGP= z„Añp£J÷?ÂçðH*ÝEÀüš‡@úT—ÝC üŸæ"àDЇ@Øþª‡@ø4¬KóˆY¡{„Aõ{]÷pÛ_÷p?‚ê!u©Ñ.ÝCÀ&î!Ƹâ"à^ÝCÀíõÏã!àTº‡€›Ùº‡€Ûþº‡€û4¯IõˆV©.îGøT§Ò=Üö×=¼.ÝCÀëR=¢.ÕC üš‹€Û&Ї@zTð#¨.îGP=ÂðY<ªW=ªÿD R=⊋€{Tð#¨aŠ«ad«.îGP= z„AõˆÆëîGP=¼‹º‹€›ìª‹€ÿª‡@øT¯JuðF©áGøT§ú$#™xÄ{Tð#¨áGP=ÂÈV]Ü {¸áóx8•î!à]ü¸‡ d“$ï:0h>þ=Àâ»EM.Ë7@Ѷâ:žÇèTå1îÔW¸ºHL‚ûGŠÁÈ…4CЧ@DJn7¸FÚgÞ¢ýh1eþ Iý©»„wSƒðÀ Œù÷íØl˜"˜„¾!‘ôã bo¶‘ÇDõµÎ%÷˜¨Þ+Hi)Ò=&ª/3 ¤uD£¥»VµŒBíÃ4õ)MKk<"˜ÝzŽ¸Ú®7zLTòÁ-Œ8ƒ‰ê)‘Ð5‚— ÝÀ»)‚N2ªSÕ#o&Ht-ìÈB¼™ ã)LD§¦ü¥ÃdõÄ­ B·.IŒÃXò‹#¡ÉWª¦qâ Èfe9f§O~†`6¸68™2QÎ̺Kñ¥³ÔcF¨ RJËRO1¹˜;y‚ åÑDJî Á/#(ct[3ÄC?a·W?Ár1í;3ÔÇ8Cp+¦+PsÔ×4ERnß•ÀÏ›ÐÝ€—„võ÷ðô- D}ãc†ÀvÞ¦8f¨O~Žøvq ZêèzÊ1M}@0G=¥ù¹B0¯jŒJ©S¤äv%Ô­¸ø)àÐÒD 4ÏÈI¥}cÅ×èJÊ YoÚµ¯ë¤9B—:~bÔü)kþ~újÅ[_#9¶¯fQgÛõŠ+dÛB@GLü ’ˆàŠ $ÔT†` mCr¥(ø ’=‰ ,»~™üFw…Á¹‹\ÁA¿j»Pˆ€st™s‚`:z¯õíúÎ0™JmOEr»M¼B³¾CS§H1¡h耙‘é cWÈöÅŒ`+ù4&ˆC׺€Ù/ÝÁ1'ÞÑ×Ù ÁlÊdÌo†Ù©'H¤«lˆ`\í 0ë—·`Tð£6 Rä7Åbœû A%€€[Þßk ÒGMÀ3í#UWæ% -‰Õ%ªÕ{ú Ò )íSW¶gÒ&€ioÀDyŽà.DRä m‹3Oph´1“PKM|…äv ¢}Ëfà—õšLGÚ·Ä®ÌríâÉS1A(s%‘¬Ã °ÆÒ‚1Vˆ%׌3}- $ÛO&lü¾!5cð±nU£ÀÀ²+׈MmG ѥƗ+ÄBßGjßJ»|Á¥»±9%&Hªí;a0§idgH\oÁ…XBS®'ˆmÚhª…®(O¿î6`ðº¦\_#.¯c‘ DÊõY¿Öv•múö5bú,Lø]Œ0CrmdÓâÕäϱ²'Ìz^Rë~øj| ftÜ,.í°PbÚa¡Ä”ÃÂë#Åéaáõ‘âì°P†OÏ Yˆ±vXx}¤8;,”!ÆÚa¡ 1žŽd ›Ù·%K #/ðd d>Æ(ùÖyuýÒcò§âÙõK‰è¬×/GUýúå@f×/wÑÑÓcNÖ½n±²îa¾·ïLå¹ öO)Ýkë¯ÊŠîmUmÝÛi÷vqÝóZÞÁÕÜfÄ„+^vÇ‘“!ò©yC>ÞAß>r+:Ø«ìȼƒ2$}~¸ÚÍ-ÁGÓ£1¶x‘QŽ¿|Jé §´R¬èÏ»þõšFÿ:2Ù×N߯Ïèg§ï2f~ü.cöµÓw³¯¾KL;}—˜vú.bö•Ãw²¯¾Ë}åð}²¯¾‹}åì]@ÊÑ» ØWÎÞEÀ¾vô.öµ£w°¯½ïöµ£w°¯½Ë€}íè]ìkGï2`_;z—ûÚÑûõýäè}°¯½‹€ýùÑ»ˆ××NÞe¼¾vò.1íä]bÚÉ»Œ×WNÞwñúÚÉûõùüìä]Æë+Gï"^_;yñúÊÁ» ן¼ï1íàýúx~vð.Ãõµƒ÷ëãùÙÁ» ××Þe¸þüà}ì„›ggÛ ¾ÝìÜö=¨“¾.ÍùÔt'$ÇRà[!¹ˆ˜&ÒÜ«ê[á@f[áî¦Á4d€wouJ±îaB”}_¢DäCJïÀ”)²w˜Ñïz׫½ëȼwòŠÄ4Úw¯¹ÔFï¬iì—Yw)½ƒ§ωC¾¹v½[k[ißäÍŽyŒ†åää d}Ä-»ž™Qp÷Ò7üþS}s®%êc}ë5m}ëÀ¼oâBŠY"ï£h‘%ò>ŠY"1-²DbJdÉî>ŠY"ï£h‘%Ó"Kä}-²DÜG™G–ˆë(Z`‰¼Ž¢–쮣h%â:ŠWr|2‹+‘·Q´¸yE‹+‘·Q´¸yE‰+‘·Q”°qE‰*‘wQ´¨qE *WQ”˜yE‹)‘7Q”˜’¦Å”ˆ›(JH‰€æ!%âÊ4¨$pUxQ"ï¡h%×q'“ˆyE (‘×P´€y E (‘˜P"1- ä:ìdP"¯¡Ì#J$4(96oÌ}²åAÙ|Ô,oÌ5Õ@F¶”Í›0¨6„Q­GùŒjCU?7T2¨¶ÓÈÑú aTëI£ÚFµž³0ª aT»Ñáãu\Þ˜QêïÈs•ÊÅ~,•ËGÇä_ž¥Æ},K ÝÚî ;mEherëí Uj¹·¹5ש†§SqN§¾¥NÅ}K½ø ìäUGÕðûu*~we×#FÅúø+“ÃxúkºJãð(ÐÆs¼¹µWá[šŒÐÔÆµljKƒå”Î.Êk\ó¦ÀØÐ7ABDj#à2Š=æ¸kiö¿>?»Á¬]ÆæóO7ï²¥Îïn01inœßÜÜ‚ÔÔRãù9 ° ÃÒ}¾{{C)ûM¬ç·ƒâ§›Ãdm:?½¹õ–›Î÷H+Ȥ;¿Dî,ÔŒA:ðÂr~lÔ`Ôpô›ʰ?À·Á2y³Õõž^lÀà!4˜ÎTžNпé9Shõž?ø¢½.Ù _GMKÖb+·:~¸Á y¼v:Õpþžu鎵NV·‘¼nU×êxWþB£œ@5mÃ2cøD[QœhÆ{ Òºp~…Å’-ˆÃƒ ŽAÉ&B“èåÉ8cW®a‰½äáUïì:Hµ„ Ú1 s æ6PA8ß½'éÃC0ü‚†ÁUâkÞé>0ĉ`\ñŸºõc¦pAý €™EO¯T I8¬[±õ7áø£Ì8߇£‚rÖÞi`R¸óÛñz&Š08º%ð9{û…Y™„¿nã˜jõ© ¦…ÕÕd…[$vµ–’„¸-7·x¾P`Îþî¾½'Ö$Øx÷8$õ§F’ëùÇmÞa©àáø+›‚k뛬iˆ†~ðFF¦àwí9˜(®T®j÷^¶ê`•½£9fs‚A¼\ÞŠL> ¨æ)æ•WÅzà¥!A©´ØÎšíèsa6a)PÎÃëHÑØ†¥l•ÀuÎãÅ`?§¦EWSCa[Êùv°o•ËVY“ËêZÿ0ÖÀçsÁ[Û]|k72Þ¶™…¾kŸYˆ×á¥Ú^6\ìØ:»ÉûÊ6kwb‹]ÚŒƒ± N0Ý {~«>Ÿÿ³- W[ñù`Ø>å*´][MŸ‹Õ”zYå:÷BÎF|C«‡‰Š(üÃxŒ¿ãŽ/Ù|a¹o/Obˆ3‰É†·å×.Ùß²ñ¢þ–àäÚz÷ÝÊ?wµ+¡…^œó6@W¨Ð‰߯‚‰FJî‚Éßò¢U«ÇU`ÃWlÉ¥‘/ôlbÓ‚g¨r ,´\¤K 5hs4k¡U¥Dhø?Â’„ž>+FóÎì…“2*–¤ð°ÂíJLdšs©Úto¢Ž…¸PR-0/7ù¼ãSñq¬)|¨Ûs¸ù ƒy-߀ï˜ä²·¼b]À5zYÒy¾Eóuü¥äÈoÿ”ס…bo|¥þ¶ µÔ¸`uÅxÓNý§4:Ę-ƒ£mÂé:oiðTïùw¨œE9Á¤Ì†À)˜àC³µ¬¹@r˜5¿‹ËI<ó6ºäØ60Åö«r_'fm ØÓTú üOzÒXPbVjÞnŒ=†Y?kwÝÄÚOk÷Ø`_îg阥ͼت`‹õÝ6Á~ÀLzª¢ :ZV£+u[SK- ÅóEy#x>–ò­&Ð5V´$¨k1m‚DP+Ä^L*JuÚõw,¤]!D%}E¨ù¯6‚WmÀ06÷4%5V"{~™âTNâ™/pʼn‡ùnÛH™M[غ<A‡®ÀPab†IàQÍ6£ÙB›üX®u Ío"iv•4ª©m 5Rb?º˜ÞÞ`\¶…ô$Œ¿)mzhÉΠݨ-”wH&4«n¤eôtyö›¯gLÍ1·)’ÀX)QSe¨_‰úE6¡‰f} _qb¢ê¤ÉGü;’†“ˆF9·¹32áe³ ^.q¿L§Æóá’¥N=Óg¸:ú|h©ëVa/p|¡èc…MÀ˜ßx{h“x¤%ë[á¡hØvê%Ò’ÊÖ;X—Í$Þ†#^»ˆËëL§–dẘÊ Ï:Gãö ÉõÞW!$Ðø â ø¶qâ&&4ëP²½G‰Þ Ìþ‰Á$ç…çã§V5øŒÃ/†ÁVž©_M#fìpèi–° VÁÕ—m‚üÕËxËëem2Xºÿ»V³:·Èëû±@H·Xkˆ‘3öCƒ«^»õvÖoΛè૾¹¡)bbJ¡©àc_³èNyçxvS\[5ÖwíM|Åz·ÙéßÝ’‰"Þ¨ ÝÛæ“°q®|lm‚nr–~‘ßðVZþÞzoä %·™¯ÉZ)uŒŒášïl9jâÏú>©ïž¼ß‚ûù²&„W,jB}ÅÓf@E¼£b»Jxu J¥É´_â‹u™dw-þm¿Å»Q|;ŠoFñÃ(þt3S'1bɇÍdúü½´¶`çthò Ã¥¯ÌÙ†Y.r;ÝiÖM†Ñ÷M»– š7³1ÄM'ÄÚʯ¨W°fÕu0¨ø~Å?‘}9ŠÓÁx‡­»°†Cç"n*й¿îV¨¢IÚ2¹7©s对ÅH(¨àt‹ß#0¾¶×ý3¼ ?sjÚä½îÕ›Q¼Å£HKÌZ¾Å·£øzFqÅ¿M‡v.´oFñÃ(þ4Šk{¨üÝ(ÚQ\FñÛQLÓ¢a߈òtÚá'ÝnˆŸ.ýÛ홢ŒöË`Y@éJK/þ²Ó–U ÷BvÏåmFûnúØsr†ã·i7½ìG>î·ô žZé0æšGŒs¯ošÍ´ŒØ[¾µ£øtÿ<ÆÑ£ÈK£hÆc†ÓÞ:0ʘïf* uó(Ɖ{¬ŒŸ¿‚¡nÃ(úi½Úcìm³•l %€¯K¨d¥B¿ú9÷¿?ùß@¬äKendstream endobj 203 0 obj << /Filter /FlateDecode /Length 162 >> stream xœ]O1ƒ0 Üó ÿ €ÔJ• ]ZUm?eÀ‰Búû’:t8K结ϲ®Ûò¾(‚±¬-n H0ÒdYÔ h‹qgy⬼ýMù÷Çl2…ßÕLòÙÔ—¼ªK¦Å+¤ x"ÑVU×Ó bý'íÑìÎ3vÍ ‹ÿPR4•8n®!ÇÜ47I,Óïï|JÁño9Süendstream endobj 204 0 obj << /Filter /FlateDecode /Length 4202 >> stream xœå\[sdµγØ¢R•3°s¢û²T ©¤À©Zò0;öΚµ=Æ^CmQùïé–ŽŽZ™±½ ˦x ‘uZ­¾~’zø~Æz>cøÏðïÕÅѾr¶¾9b³õÑ÷G<üu6üku1ûìfX#½gžÏŽŸÅOùŒsÛ;áf–©žK3;¾8ê>™HA?¢7Zù÷£ãžtÇóëcÂÛîùœõÒ)/\w¤àL×Ý̾WŒw+œ,½WVw› ˜b¹fÂtW8®½·Vt·ÈÄÎ]÷Hæ½v¾;%_"C桤3ž§i†é.çÂôŠ +n„öÝ/x÷t¾@’;‘–pR›î:2°Üv›gQ~ÃE÷,lÐrcºå9ÐܯPžñÃqe›¶×¶zs s¤ Šy‰ß9ï¶q˜9.»æð•`0• 8pk`ûPÕ[gÂö9c–9æ2ìvJt™Iî}·^F¾<Ã)Ö;¯“>L¾¢ÛdpLÝM'—óÿÿíHr×3‰žw|rô¤g¾¦¸Lºòð—$øÐ´V@™ ÜÆá‹´Æ‚Ë^+çâR…¿ ;Xi]PJø/åVŒiØÃiæNµw“URÓƒ-¬)Œ‰”4Z•sa3 ¶Ð½Â•EÐã’®qÇQNbãÚÅa†¬t}ý™±Ò}VAf-|aå÷²éVdrÖIRXäÕÜIU¾ëç ¥dïº/â°…Ï¡# §„˜–|4÷è´!‹xïÀ©7‘ƒQÚ{x4 ކ´¤Š´$á04øÔ ð@;ƒÏ2y“É—óK™Ü Wx—˜TI \D:Xy„Š÷^æÖ©©X;‰<е–ÄfQÎdÁ•é¤êç½UÊ£D`]HÈ>>úêHõ£„<ÿع‡ïfFÕ3;»8’ü>ýçùÑ7“• Ü{ªÀL>3 €°¡<é¾ír®ŠòC¿U½PP’â¾™/´×0>¦öÁ N‰^Ve¼ÃÒœ£W&†¿©gW¢2MæßÎki-›ÙÞ[f{Hý2‚ì¹æ^ÇD0$¯Z+X˜k™œ-Š>„hƒzè qìÓ×ø¡hhˆjå2VSþÃÚxšmj\Õ©_PAµX)¶ôq³…T ¡4ø˜˜-Pawåh, ÒòÞsUÇ%Œ¢¾hŽj®BžÄ Oˆ¢‘wž3ó¹ÓBhºt‘ŽW¡~‹X}¤ÀNÑô¶‰‹0¾#é…˜?6W(N³É¦h6„š¾D»Ê`es6–ÚŒp’ŠX鎟·,彇"žœb·© Ö+ÇtÓƒpø±î~ áî=äÁ¸ÿ¨¶(­PF.yH“Ï£¸ˆ*¸0–`R ¦pѠטSíe·Ì™(=Û%+¬RºÖ¸Lp Ø¿1…÷­Ê,n àÙˆtx•õ#bÓ‚X@yX)~TÖ»g‘6\Õvl¹´ˆR[ž{™ÃƒEwY{—ÜÜH¥ ^æ²E7L ÖöÑÙŒˆ"àÎ §\^f‡?öÊüÏ[F1 ÁßW¾Àà›8Î2ÁøÈ3¡•ËŒÖöžÆï¤TßTʈn ¬di‡ ‚Ae÷Ï$Ã9(E\r¦­ûnj7–Ì9éªxÚ ’q$gèßÁyêý<ªé©Z°2T Zƒé `5¢> ¶£j¥†ýoJ´½@|ƒ]FÕI>äS,0uêØÄlGj]Ç?à µçòiN\çy9 ± GciÁcÁ.,s;ÏJì¢f@½Ø*7"¡ó a—™\·Ñ,Ö=;fƒRå®zT)ei‘l æ%š¸Î ô9~µãÔí¼Ûqꦈg!4Ô=_eSL—àcð5/<5{_£í^DÝ3ÄY7ñ;Vǃ¹ôÔ+ó¡l/×Kä„éÊ–ê£çœºŽa´ôû±²©´"Ð'‚¡¥NGA òj‡qô$‹½×g•†±¶½ÃSâ³Hƒ¿ð¯ôEù"n¸9XtÈRmdy÷]†Ý%F¯ŽI`\mÂM*ò€Sx÷S¿T÷rê pžr:]—¼mA—ôè[Ÿ‹ ¶ ôµÎKïÈ1°´tåÉi‰An ’0•-¡¶Î20¬§WQ¨õ ÿ,Üšh TÊKñ­eo†Âª>eIãÁ)9=5¶¹\ œ ¨ÿ`þUpZ#‡Ø€`‡žVŒê6GÁ˜Kr×q•­ržC°~ŠÅ$Š›¦×±ËxL·Âᮯ¯Äʇ/laI·Ÿ€£ Ç…xê“0Øõ&“—™|™ÉëæÜóÌìq&Ïó„³LÞÔ| <2:¦’(ä‡ó×á^ãPf àf Ÿeò¶¹9²û/3¹ÌäE–ò4mÎå}ºîý<á:“/2Inäy&ÉgvFúQPÄ»¹{qàî0ù®:¼ƒ~ÍÑð4“äìþŠrh=U½Ó1rO9ÿO:94Œ~•:Yeò¤9ú>ÝfKäæì*“Ï›sg’e²oŽêw7s?k*çºI’|~™Éu& ºÙ4ç¾mºQuÞPüc]41#±áUSD=$W ÞS‡KÛÄF×͹d b#â'·M¾«ægûÄ™½-% /Ë’;ÿÔÊyÄrm½ÿ®9Xƒ|ÉÓÚ´A²EŒ¤kÖ$?ʤÚ7÷ã¦JN›:»mÎ}=jéÿnÅÑÖëÀàh˜âê¯x\Î¥x5gLí«Û³òÔîux® “%>ú¤ÖæËÓî—p5vÿc¿hfkÞÞ–è/¸÷¬Ø›rµ YL6,ÉÜÙQ]OЛé­w%ÞsáøÁë˃֯žèÂíÍÔ~|9-n*ƒañ·^!nݪ€Fñ‚°Û„gÆ/:=nCQ4'§¿òbH†;©©kÙØí蛼9œx\_µ÷øÃ\+¼±qôª•<½T—eÏXù´²àÆ÷ߪë쯳­>®½`Á{k¥“ɆXÔJwÀ'¥ã#pç‘18»l¶aˈⳂqlKštL³-%5Þ–’GaèW.ùé^i%ïÁîIÇê.—ô–Ølð²½2jŒ§7¦ö=j;Ô>ìãu©=uM«]³û𺋠µ÷n»{¤LiåšbŠi¸ ðþ¯aÎ8ƒ•k Ãò¡P¯Ûìu@ȉéG°1´ ¥œ.vcÒ4Ê…vüLûÃ2ð.;ìˆÊõæ·ù!°i Þkéǘ|åp ¡S3†(mdþQ}\2^0*˜iì q®Çl?ü*"<‰’_Eœ–<ôß@ѨžŒÊº‡Úà^ú)$´ è'©îOóü.ú9Îð=‡Uþ1¯â<°˜xP/á-.‚ýG¥S#c„¦ÄHùWHd‰‰¶Iâœv„ò!Óïo€¬°mÔrÝ$€£‰¼S[dC? }F.Ã+m[‘!îk¹^_ÇŽIl—5cæ¡î™~æÑSž%*D±HÑ&[óÔ- ÌÊV¶Ñ¾è’R†šV6®0ÚŸ‹†Ç¡=׉á—a"ü(h¸>4“mÂæ_åPig’MȰ_¡|Üm4_m4ø{²§úU=ƒìØÁdxÞ§]±tÓÅO‹‚XÓÍi^ÂúPpNª2`{Œ6s¡kf\Äžòpt! 3ºHJ¬41ª3ôõp¯Kÿ>/Wÿ†-UåÜ2‹(åC×ÉD™©}q¶MÓ(¹†½)ZÎã°ÃK›íN…üwj碩 ÁzôÑ}J’zXA™+;qSõ…p3U_Ð+ɳ†TYqKϪ.[@í°l²æë¸‡mÂxÕ{ž]²ºA©G.i°]«ÁG”EYQLJ߮&k³F±›e3omÛj®ñð'„Çoˆoã§vPÀ² Ž¿g½ŸãwÿÊ7õ_4GÉÜ/›sÉ(ÑåiswáGòJ`~'s¯šŸ­òÜ­Ÿ¹qE¢m!Áóáà—aô<“ËL®‡>ƤöÞ…Sï5™|´o”áÎÁs˜ 2(Ä?xÙ•HŸ·Êè#Ê8¡ýÌgLÚ¼Z{ O玤ˤhòe”ÃôÁ4²IªL²æ(Ϥ¦Šjô¾1 ó†…m†7-̳BÄ> Û“îvÍQÒ¢Ó~ÖSû,,ö‘Ĭ.“6“¾VT%Kèñ%ôNÆVû—ŒŠ†±Ý™ï3¶{0¹+Ö~®pæM’D¶hN Æv‡ûž—{¯)£§JEBž¤"Guý¶†f_Ò Ù>ò’®véMk7R7‘wö Ú+çï€Ëï»o <“ØåÍQb5ÓL½$äm»[¿øÛïÙBx|ψÿc&7þ™¾:úSE´éendstream endobj 205 0 obj << /Filter /FlateDecode /Length 3597 >> stream xœ½\Ýs#Åw¥ò7¨+°–ùþ 9*UŠ$`žHŠÒÉ>Ùœmù,ûà*Åÿžî™ÝžUË’|>ŠšqOÏô÷ìÌO¼žˆVNþÓý{quôÉwJO–ë#1Y½>’鯓î_‹«ÉßN€C+i£ˆrròò(O•©MëxaZ©ÝääêèÇæùtf\hcðÍÝT´"Fbs6‰VÇh¼mÖ0줳Ö0Gì›ÕužhchæyXHÌ0Ña£!8Ñ;1L´Íêe?Ѥ¥^„æH%…v¡¹B*Æn'©³hƒ¶ŽŠ¾R ç@üÝÇmþ³p&àî“L³ æÝöìèÅt¦ˆ jXN¸æ¹mŒÞ+TfalÅ2_g!–|IÙ/Q¯ •7ÍeÑk5…eb¿ ³ŒQúPY¬Î‚•m²ù‡¡²MÖ6*{$×a«V|; ºUBùæx:³BµAöΊ¡â$KÔrgG`~ýß“Í$( ŸÌ¤n­ arr 1´ ѦRÿCÓxš£|a‡±¹&–JÃ!J(4±‘^ƒI–Ó™6°Å¨)€¶ GÔ±•åi4„ z/*ÙÜ'NÁ"DµyR"Äè¬O‘aƒ‘ÙÁ(Ù µ_â–4¤ÉÖ8ÄðÂô2L0¦O¤Ä¼îdı¹q:º*@³£•TµŒyö´‚XÔY™lH­E&ðµj¾/¡RèB9¶£†8;¥ö’)‘„ä>Æ­j ûH!]Ä(J 0^öx0¾9¯N ‚«È¬åêvŠ!¥µl£uP R(]°Ï^ñF)*.yEƒúNQW¤ðì…åðŒ*ˤqs“rŠ–¬jÜ"YÂÏS×ü5{ZCÒ¢­d–Â|]FIàŸW"†q·P¦ -Ó^· ·ès þ!ž"Ô¼N¤ ù®·…\òrÚ­R5£ÀBÊ÷ˬ øY;ô²ùy¤n—'‹º((x¼3'–uÇžß «„ Z¡±¹$BDUÁOƒò4Ëv"Ð|\Á¨4Ôç Lx 3Î{›»Ô¥lpz”s$¶,;ª¿m]ýn!!èj'q8¿$¡šÊ‡+H—l"«t¨Â@¥i5¯·4T•{Þ„Eò8 O[ì¨B¿LýËKh“w'º…ÿ¨u(¿g™ÁH™Ë¯V~…­R¶J-Ü ’< ž#·ŠÖȼŠ3„º¥rÑø¢˜ºÎ²-)‰Kô¡0ã6Êt\Iµ^•]SÅ0þÝ(SwÀûé@’žr×™úí©:ƒ44~î\òk‘У9K}¤Yª |CMN¾9:ùèÇæ3HR¥SüS)Ÿò¶g…œòŽ2 ÂdetÍ #Eæ¢g…\§zƒag™}ß±B¯ Ã_Ê謌^²Úܰ$á}[Èÿ4e‹²Ÿ²£¢Ç…|YÈûB’Z¼`Ë21ÓŠF·ö+žöú‡æƒQS.g³~g6lLe? `atlçMø³Å/1Fd÷:§mžØ–ìj çÈ}ÁÚàn—0Á ã·sÁH°[†äß-»Á×l‚ò^$!úöˬ·˜ƒ=cå~[~(ä7,Iþšµ—,öj é Ed «†Ñº{õ—/hâsÝážm@oØJOÊÌ%K’òÎ{‹Xµ*§;’â’õ,±Kºñ,©2|çãÂï’J ¼Ü~×lº`—¸+-!º:-×öpæ¡ z\‰nX‹¼å»Ãkßkê¬ßµ+ß±ØlУ®Lb™ØgÉ6Râ þ›4ó›±±ùÃ߆|f,YK´¬·åÖV;fó>Øããv Ÿ½'¹]íiþÖ§ÁoŇ”Øç»Ê&ñ-ñø’òrù>Å·'FK²óGÆ5¿…+–äãzóx˨½3^²™qË’üõ8ùä!×-µžÕ»3m^8hÖR’å]ä,à8 ˜§L>~¿|û!-P³oÚ*¿ËtìÞ<Ÿ#ÜB' ËVäHyºKφB;[Ábð‘[Óúîò¥{!ÞöÒë4RV˜üXmU¬QDù)õÓ9îr ÿ@|.¼‰OÂQ#ô»=´ã’øêKHçô…tx€îöaƒ§oðo¦Öàó8EtôM‡Rñ*µíõ6|*Øè‘<™–•&olK_ùéËxzUÎØ;‡(!d¥rönzŸ'Þ¥Ž¾îÐ(ªðÑO@5x£@MLh£—ù“×nMöB¨YˆÚô<®Ð§²àÔ!6Ϩ1g²³@5}r‹ÂgÒ¾òó:hªñ!=±èæû-1Ø-ð¦ì Ÿú:˜ñKåÍ¿þþçeÂ׿_emd.{ºÊÑ N¬!IFp—7 C¿Vë3Maª% 4#¹üUY.6„5l‹‚¨HxitåG}#uF@áÖd~0醰‡Ý!vÄ !Uª<`ðTW4Ò ØŒ¢ÍH¨¶6ŽÔ2ðÔE^žU#8yPù¦­žò‹ò™ÅÃZæìÇ—óÒîw4¸š=‚ F?9bqQ¾ÊŠ1z>`ˮõ‚™Ÿ¢•Gu¾.ëÝ—sîÜí–ÓÄéPÚÙ÷AéÛà µÅ¦Ay@Ùk[5vðö<fÓßiÖ¡­»ÛÞæù*¡ç+q²m°#> CÆAõ{1Ò²ªª›Š÷!n$Œr²nT¢wbW¹š•t|·ÌÚx¯éoF°Åél¯ªßdH®€g8,žýŽŽÈ gímßɤÈ.ð€`± ž,òöHM:>Áõê: sp$_«s2<º>È+“>´M%~íF˜ÀCabÁ«Ø¿MU´V€EkÓòÜ–xÛ „–ƒ(~($ÈkÖ8heÁß÷‘iäýœÀÐȳ;I{M!ˆÑY!+\"7†-X ;Ñ/,Ã=»õ=ÀSÌóÃgïlÞg…¤w¨ä¡ÜŽówæÕû{ú1}]8>eÍ~,¸,G Q¯ I–û5+ãò`¼BN+ûëo♇~e4Η[–÷²;ÁŸvv@ðI^¿3˜pqÀ†kÚÃhCâÄž#ÞøeØ#Aò»õ=Î:ùgV=çQ[OnëþmWòôÏB„qÁ ÖØüouˆäáßÔlüc¿U+ù;²wË åÅ6#F*a øj~šzÜ4ý¸iæqÓìÓ^³&ù‰ I‡¿$2ÁôÏ ùA!‡Õ,}]HE§åf…73ù æŸüŒ÷Çy¬>ŽC=ñÁâÿ€j²~œs×sîúqÎå{êÎi×ï> stream xœí]Y%·u~ï_qá—ÜNÜ7ÜÉ ‰!#6±&уä‡É,¶ìé[-/ú÷ù¾sX$o±n/#9±…Ö@hö)—Ãg#Oõïæd†ÿêÏW·Wÿø 翺»úý•39œwˆ>æSJ›ò®ýüêÍá³Ã{¼PÜáÕÝ•9eï‚s‡¹p÷êý•[|:9{H~q'ã·  ”P¢=¼ã¯ñ„¦’7øY@ñÆ,§%’+éä³P’•W\2'„âó)$PìrÊAÛ ¬ì‚£Pr:¡Š ádíZ%DPl8%/”h„bŠesò:Ç[Æc”Z§øS@çÆ‚N(ÞŸÊ!.`Tí;XVŽüYjt±øö’ŸP,¡ÃA‰ŒÎK&kHq xR¬ÎÓ-&Ÿ2úʾÔv z™sJ )9e¶SDŸBÀø0‡˜­?Y™CF3¡°s«Lv9øSŒ g—B)§Í”\8ôÚ¸ãNN¸“°X‰u–ròÒWÂ[…u"~*Áž¢#/‡>‘]ñä¤ :%’â’<ß 8ÃåÑ•Kà–”¥h9ÏÕ'/ÃMeဣgÈ6,7Q) ›y©$w²x)ØrÊ2þB¸¼•MíjƒØwWo¯ÀF‹õøÓ•=üÿÿFÑÿ£O¯d>ýÑÏŸþ ô¿y ÿú ˆkŒé0(ϽEçĆ nÞ‚ ðAi‹%*|œNEðëÀRB¸‹R æÁÆp*Já#r%¤º/l‘,â"ûÂfL‹¨À–v<‘KŠ\¡ðWOF;Æzaãb•µÞQ±˜à’' <þ8l»è…âãÌvìÉ$¡p™ CpÉjð]ZΞ<%à–o->¸ àHˆÊZ'Ë1uQzÛ6F*iWØ $¥Ü à à™ì$ ÏJG€ÏÒˆ‹I: ÐÖ:<‡goøFy@.…ud+‚gVä0òÜ¥`r^:7Ü›|+•Ú—Mº.lYîœ9«¢Gñ…ˆxK»2ž2³Ä¬´ $ºo;x§‚H‹'w¦ÔxDHÂu€QDNL˜^¥€“†íý‹S°ÉÆŠÜV²½#Ã0dlÊSR Z&{Ò*!@‰Äƒô®-c_ž )XšXq½Ü˜ât^ØÓ”iáÇÀ<¥\âFSÔ:/KNñ¢Kn(VH8ö2dC˜‚¤QvÇ :¥`žÙQ¦-\Æ}¡»#˜·²{ï[à å2w3€¬ 4*…5Sè+Ü$€¨Çg¡ð,ž…³PèBAM ˜.€×a.¨k¸ªR4‰Ûë–ízаvÚ5¡„*FKVÖý‰u0'µ™mÉ„™˜1u5ÅÎç×Û7Š™m+ö]È\ÜÄŸIÅŒ,t™¸OªÀŒÄ·Mj¡”’-‘< äÜnI¥ ÌO( ´d­9B™IìVáºU¡Ea˜ÈA³ìŠË4ݰzg5¦Û³ög`öö‹3ßcöOö|˜­Ÿ3ûB“³´µM1ÞLK6EˆÕ¤nÏ9~¨‰ž1õŒ©ïSU}˜ "È¢ºð¡W ]ÿÈ‘“ßU]´Ç¬M æ­Þâæ-v/ØÊ€¬y”–ª)ƒZî¤Ó(YTIZAi© ” jÚÑRñ`{AÛY)^Q`zT‡sG)(1õv•X§ÚS¨©“øÎ‹®^ ŽJô¯£¶ƒýE¶g>©aLhåâW0™ÀeÊQÜuYaG7”Tao0.NÌTßZ`¶PB Ð0æ©[Ù‘™Py)¡aU‹dGœ°Õ}. ˜°Ý‹zË«TËe˜0ÄR"+Ô¼„A†å¸hˆÀŠ’NTíFýÿ¤(å£þ?œmt+“¡zOF†œt#ºˆnÙ;->Ám2FPšéçk @Ã`r%¨£Læò•}HñÕÅxq„:•ËK0\blTÝ# Ø)D l(¬œ=.0>@Àa º‹Î1)8…)|b¬9l>Þé|áÛÚ´[  œ¿#Ídl˜™²ÅÓqÀÚ„³±E7†»N4g¥.ÎY;ÒvÁÁrÐN™[ ìpvl;«á†:‘Á§wÓ[¢Sž·÷óö~ÞÞßÏí­ê<Íñ°ý)º}ƒ¯Û= N8± &ȧbh«‘RÄ C¯°;48jÒmÃ^Y‡æ“ts¾uŠðí®Á²gÔL†Ï žÆsP™‘hn :ÿKYë°åˆŸu© »¡Zž¨"1EZ º)ϸ td¿Hç¤Ô†cÒ‰f5²?ïâíFŸdphÈ¢é…Y¿ R™““žãI–»È«©ï<Ô:†ñ¥wòа‚¸¾uÞ¬è‰g¨ûõçŽÿNdkÏFMõÇÕ!Æâ-Õ£…¥@—=Àî¨hÌÒñ¥€5P„p5Fʰ.–,‘Y#¿ÒM©‡‡ÞgwbäU’ƒ£·¢­~àY§×FJ]ÿ3dIüþmÏhû?B[~¦Àv>̧ ‡ä·{§èÓAûÎYüt\?èϧþ;7æÛó ƒùÂtQ:Êð kdÔT‡ïÅó¢ä“ÆìÄäOK?s!ŠÏgõôÍì[+Ë’×·ÐE’£¿¥zUÁ4R…fÃxGâí3žñ0à¡^RÉà˜ÜMÙÄz YNB~³HWY˜ò°·ˆ*/—hR©þª<]ÄK Uy4=Í㥊¼håÜB°:üPyŽ aëîÈÛ‹³èܯù‹ÅOb?ç*±½¯btX %d6Ÿ¢óz܇rМä0T5ª× ¥¬º"r_të”"šÆªHW™câ!E=“0wb|AO¼‘–„K첇1žYªfõk¸ÉV߇:ÒÓ öfí»2»£žn“ù ظ€SŸ ¥îJjqZåTX~«Áz>ª˜ÎAAK  ~‰@n©|#‡J¬gøÀ';φwÐê)°`Bb ®Þ)8kG ªg>ðÿ€UDįÜTDžÇD¨Óµ2P¯+‚D ´T…€FŒ‰õT¦ªÜ0@ëò{Ì*ÏmÕ. ªÙ¬Èû5óœùžÎæ"ÏÎMŸù6Ð|ch¾U4Ý<šî&M'§Û³Õùøu>¡Îp§SÞé xv)vÜŽÙ5™Ý—ÉřݠÉUzûŒg„Ü‹2` dÓa.ˆÙHòÛ=i?)„1ë•­êqÙièЕªée“]´n+gGyr¦g‡{¾²sdsÇd/Ôº‰ÆNñÚ®ÜÑ(dMªƒ±êá¤Ds^ŒuÕ˜\=Ÿs^®‘%t¾^VÙ*Ô·ÏKó׺4ÜVöÀ²ƒL‰1Ø&‹˜ã£^ÆKräØ-)дìV‰r±'1'Ce!9š#íæ"šã!³ÜhmS¬¿±^¿,œGÊs½ˆ±x±¹‚ž£îŢó‰Çt<ÏGÊó±óædz>¼Þ;àžÁwÊ·‡éÓyûΑü|l?íOÇÿÓqìz‘ ˆ|ÏdÜ¢§ŸYö(¦:Û%ò•G§ú›á.Cr=ÆIì3(¶z6u֨بlÎжDe+G¸ J íO†0êÒ ÌyX^üZonùó ìg`ÿ€­FQÎðåyIp[P£ÈÊŠ´Å’, ¶Åšf»:9V,t9ÕQ5A̸œjÀJÔ ‡sò«•9ùÄ;~óì[O:iÖ[;ºmÒ;'Òó–™¶Õ¼õæÝ9oàퟤÀŽ ˜…É$o¶x„e/‡¸ 8½ïyÞdYÇ´ûüY ­ˆP}/¡ÂÎj ÂÙ’ þ8‡@´IQ¼+˜þÄVª'A&/ ÿf#U.¤B[+ÓýÒlŒM#jØ=Ãë^!x©xó˲æùo rx·¹|q»{AcºÄA‚i¯<ÑÌ”ù&Ý|Ûn¾‘7ßÚ›oöíÜþÛ^yû=™GuÒƒ5–ÀmA3zÏ3¯Ë´«Ô¡C”Œ%nó Ê9«iJ|šr£æü©«9kÎÕšò¹æœ¯¼°9wl'¿l“ƒöö™;÷pGÁr4 mœmAÀu ¸Ý=EØœ2L÷¶WæÛ ó…‡9ž0Ǧ¸Ä6tñöo|ü²@ò… ®ÅﯬþR¼º=üÛ ~É .‹…óâí•~ƈljдuîðâöêh|0îúÅo®0Ü\ÿ‡ÕÆ/^ëSϧ7ÌÅ,7…:žÐú8ècȨŽðìo¯O£•§¼€¸_<(ÉeiO¥cê[Ý0Ë;ºëSí˜‡ÉØ‹7üª‚KmXQúõÌn1S©q²õa”W!¯á‰¡e†‡Û'>†_ciè[p<õgY˜a„Q7ÌëÌXõaÑÉ.°3 roäZ¬“õñÂÇ4ÉJ&·OiS2|Èаá9\)Jëõaå=¶¼RÆdÛSáÓ'/®þÿÌáW—Ÿô1§Å`sËn#Í«ràP?ËþùñÇ×XPcàc¿dÑŸÊñW¸¾a¸;~:,²âËñÍõ øÁÚ£û§ëžsÂp:þß\HÇ—¿c ×ÄㇷZÒéøõµ,/ìã¯Q 6acôöŽ/_“jè£oÙymO…1Åp|?Œ‰d[2ªïPŒ…,;ùŠ•ak…r|I2xoÇIþñš»q~Æë>¶¡æóKñ1I¦¸b‚¯œI%{[ʯ@KR#¢*6D¬ Ç/¾øìºðZ°2±µ&-c`7€Î”`&d£¿5[ µü„Ôd‚ù–dx«‹?Ý®ùâ§@ÁÓpÃ$áKÓ$˜>?þËõ ú°EeÊ`ª1Ëñe/~½KýâØË·½øf·ò]/¾Û­;T8õ⟤KYëJñn—úU/~q-S·r‡çÅÏ®^üýÙ,·;˜»þ+žåו:`¡~Ù‹õÝncÿÜ‹?èÅÛݺ/wG¶ßî]Ù0œ÷úÙÇÍø¦?ÙïбëT#E§<m/Þô¢äÀ¼‚†] *e‡ì7àzñ½øCiàfmᆠ°â¤¡€p±ðÞ–åøç] Ô/‚Í7÷Àq˹µÃ¢¿èÅ_ôâíry@ÛÐØ±ýއ ß<„«¯ÆA^^ÈmÑîòíî–ØgÉ0Èý½8»åäLUøˆj†Rö‹ÄÔÍiõEÜZ†*Âú™=Óу|ß§Ç,§«Ä35›Fª…c¢Þ î ‡jš•0¬(N‚ÌK U4`Ùz‰’!X®€jª^©ám¡tðaýöˆ³Žñã¬^/¤IÛÉ…õÀÍŠåwðpôtÙ9½cãª^5Dƨdxüü•9«â­™<¬€:äæÓ0>¯ù}R^u#AoFzÃÜu½¥Ó7y´ÂCpé›·áϪDxp{+¼³Îj9›ì5?‚6ŽÆ=¯' ï¤ì—ïUhc¿ÑÃôã K ‘|FÉélå½Yä#a`iÐŒ“ñ¼1Ï5ìUJf£œrx‡×/¼àw¤Ð1êÀ”%lÍx†KPÅê·ÞH¡\Î^ÂbJ3­áÀ\=ÖY“wäª?ìá¡ïž-¢^‚'ÅN®wc‡fèX‡q彤9ËèãqãJaŽG:#…G:ÃÄïïÙ8€îà†wàK,ÌêU’*ÛԠ3ÏÊe+wv=? ƒµ³Œ7ù0}œóaç.%Ø’Ý™óǃÿ”Ù¸®ôý¾þòö = >¾a=çàL먞ÂÏ?\Ó‡…q|<>¼=üäýÛk,ß’a6¿yõõ›×]>A~~à7-6ƒå‰Óâ¿Ä^ß#íeáØ7@ƒûŠÿ†Œy¬po„Ç£}¨²¢}­²¹Vwnq¼—gÐ/ŸãoqŒAô*˳ö@Ô ³b¨-BÑ·Xþ`|e húÁ ~,ó¼`Œ jˉ)ö"S2¶ó ëÌËa6&A›3ë%1-è,ÎÖBšM»ðÒÞºXÕKÂìkJ`U/"êí¨_ÖêÌm œL:‹´õ¾V³FX›~i¡Û®_ZÃM¿4-°ê—^gÕ/ƒ«~H®2¾é—®qVçéf47ʪ`ºVj ¦Sª†é-7 ÓtÅ=ñ^§j˜ŽŒ¦aÚ[«†éz©šHí¥Çéüþs Í_ïîùwê°?£éª¡IÐU^véø ¼¼ÇÐîVôê§=›#»0´;–VC»ÅqŸØýÖžÑ=£±dW¥Ò «NéÖÆªS:å’ùÛ-ÑÞùKÅ šó7)ˆ®V ±æí÷‡Ï>žÀN¹(xÌáÂ'èÍ4vÊÅ8AÁMä51ÔÂ./‡g‘·‚™I£q ï2ü\ê0üoÆ*>ÉyÀ@X$~tï¶àE÷îžÀáeÄ÷=± »]ÞÐ籡÷‚{B;‘ƇMɧ„CîÙëh„u4 ¬ÖÌCi„‹‘»ÙÅm„‡O?. Üï6(vÒ;eUîý4`u[hã¢nüÉÇÇß:%Åsô;9 œ=¿{c%|_Ô9O fM*uZà‹G¥9θG¢4?R¾†R`/2„[e DÕJyh·oÛÓY;Jyì9XmÈËWÊÐÐJyòTÖoòSä·e UΧøà©Mk§M±µ3NñÉ1àÚî0ãÚîùŒ'ü.ú‡iú¼œáiðv^¹i¯“í?°ž›áõi­-»¦êµÅßܽùêæ“Û»ì0{ÃkëýÎÉSnÓÉßJbÞW`г412ÕéõO6}Úâ½R#ôJ«ÓÕ*uÂP©Z~½R#ôJkªUê„¡Rõez¥F*Uë¨Wj„^iu:›a¨ÄÜæ~DÍ’ø‰dƒ0å y|°¾«:ò^ž¿õ“šD¹á÷^ƒ5¸0'eóš¾I.tNšwþÞ××ç·o¹:5«I6»SƒäÙ{ëéSs™è…÷0µ¸}¯O-MÝùû—M¶ñzm¬û`+a)Y?ðé^%þ„ÑnlUjì²×iÁÌ¡R½âÚ+µ;¯C¥Üí•Z´w¨”õ“ê½R%œUªS镆¹=nƒô«z’úDšß½«I=æúÆ.ð ‚?Z–£µ – —½–Á®cÈÑlnñ=%¿ˆ Ã&uü²¡ä…dòhzÓ~| ‹Ó4"þ Ü…I=ü®©MöøI½É>3¹…IS‹³Çÿ¹¾aÑf»¦Í,!GæÇH¼¹M2bÙ†ã«!æÛ«å÷l/XçÇ ¡;}*úøvÈ,úPۆΓ+à•üòÛàwT1íïy·Ðfw–ÖóR'È;鯆6Þ+9âE&QØ%CþÒ‡õ5/çÇ4¢2‹ŸF“Ä‹š‘ôA }ø-YhõÊzÂëΖ—_k‚™chyV¯µ»„™þ®ç=½h²S4¡²¾dÈÛnÖùI„å‡6RÞä@¼$³aL0qlÈ•z/(³|ÝW¨ðÇ>–!k¨;æ©§ÒI1¹v‰å,kL,{£•ýâΨ4 +'Ùš„¥m„ˆ‰ñ½Óõ ½æ\üñß÷Ûª&oýŒ§mïÉ‹ã_~)Y²CjÜÍ0ü—n:OTÓIq±Q7ixu•°k"Îa­æq¦ãŠÿVëæ×Í–³u¸%=Ø3é„2·lÏ ?L⽦ãXþÕ¥´¦ãHZõv9c޽¦–,øÔÕs>¼Ý rmLQ¹8mó§˜ ²5)"Œ=“Cu{˜Ço4¯þ˜*wùmáJŒy‰¯•K¹Õ̶ÆÂ}óÔ¥…¬Çv¹@}(Ãò£‹_lĬ5›ÓÑ+Úl$Ööð”e›·tF•#hú>wëüϤõË»¾;.åGž¢÷rùgL´ßçÔ¿òòN½ø¡ßï¶;$„ý¸ÿµÖ‹Ÿ^È kÅ?ïŽl ~ùÐxŸ’&¶ŸÖö‘³¨‰[“IÃopeyÁ¿­\³Â­Ò¯ÿuuwendstream endobj 207 0 obj << /Filter /FlateDecode /Length 27569 >> stream xœí½Y¯-Yvg¿¦ ¿Y¶_Œk=´+£oD—Y¦a †!‰)Ø€è‡dU2Y¥lŠ•U¤©_ï¹b®ˆ˜cŒ¹nwN]U³!<9ê»Ñíhæ7c­½ÿîM÷Ü¿éÊÿ«ÿ÷gß}ö?ýÛa|óÍŸýÝgýÐOÏËöf÷幟Þ,Óô<-û›µßž§axóë¯ßüßo¾ÿlxÞÖq›ßüÃgý›eÿÿ—¶ˆmxó/þò³cÉoþò_ü_¶¨q{žg[ÄlËÞ|'É·Ÿý¥e¶† œ™»ç—„I¥æç ¡8³ôÏs&•ZŸ\&N­¸Ý+oõº=¯¸LœÚÊ §öîyÀíÆ¤RóóŽkÄä Æ®^#„AeÖç©G§úñ¹‡m§¤RÛóŽË:“u/GÕ©ÁN¼¨3‰ÔØ=¸FL*e'/®±&óÞ?wK¥¦þyÃeÕd¶rÔ*µ>Ïx¸j²vvl•šÇç·¾&‹}æ]R{Y;PžlÛþÜŸËZ¦ç ·¾&«ýßk»ÖîyÆ5Öd3j¼¨åyÀ­¯É¾ŒÏë¹]ÛðÜá²jËÚÖç—U“ÅŽ×x.kŸ'¤jGu·Ï׈ÉAMí/,‹§úîy…e]ɲo¸,L*µÓ•F‰SÛü<ì@aâT¹Îq˜Tjy^qëÏ$¯Ù®ó–u%@mÏÄTM"e÷ÇÖHI¥ög|¸PâÔ0?O¸,LœûçŽ%•ZžwÜzLœš†£8Ô™Ä}œìn€kÄÄ)û»Ç5bR©ýyÃeI\ã2?/¸¬3 ÏŽyí˽,Rg—µ®Ï®§ìþ¸ák2Ûª¿(«wpYg׸StaÛ—Ž+ +±óÚî)•šŸ×)OâV-}_îw‘:“°UKÏ5%N °åþŸq»®Î¶hœžò Þ™—Éê` ¨ ×?W÷l¦úç €±j—„‰S ×?”TÊž{ÅÀ™Õj\&NmÝ3~pT†kJœÚ¹ö¡¤Rëó‚ËÂä Ön¤ëŠ’JqíC‰S=×>”85td”TjÁë gÆ¡Tg¤RVçà¶câÔ4’[PR)»:pY˜8eïHaâÔÒ•.R˜Tj!àĩÕê¸,(©W>”8µqåCI¥vr JœÚ¹ò¡ä 6»n°FJ*Å•%NõVçà²Î$Ü!6s˜Ž(Hœ¬ÎÁ5bR)®|()Ô¿)zn‡èyØÞ؆¬ålg»¶çåÍ0Y1õan>GÍ?Ž„ûýJÜ'…º’ò©O§ÕØMhŠÔ•j²'rñÕ›º’@Íöì(õýM]I {@–j覮$P´Gqoê86?û±›ö}9Êþõÿüì»7ÿë—…›ÞØCißìöþåß|潓þMoz0”óßJûnÞÞ|ùÝgÿþ©ûü »É÷fOCù{´³šÎ?·ái oåïÞÔsÿÔwÝçÿï—ÿ곿øÒ>ï«sŸ5Y»u.®çŸ’P½í1×'5ÛdÏ•@ը궊¶{R›Yñª P»=^­>TM"uîÑMÅ}|¿Ï¤|_”Æ.“çr± cïd+MœÕޱý=Û­fýã)/ËÓþžÂßsö‘„“Ê Ò>^8g²öÆÎå`\;)I¼Ü⾌v›í¬&Öã›rX­j8/q=iÿÍk÷î]¹?Ý®\¤^Ú•ªÕ•ƒ5¶»rлkuå ËÔìÊaï®Õ•ƒÞ]³+½»fW{w­®öÛZ]9ìݵºr°¬fW{w­®\<ª/îÊÕêÊa¿­Õ•ÃÞ]³+ý¶fW.nW»+—õÒ®PÍ®\\ãŸvW.PŸ¨+Ô\W¨fW.îãü®\¤Ú]9è·5»rлkvåⲚ]9Ø®fWzw­®\ìµ»rлkuå w×ìÊaï®Ù•‹Û•uåÂhwå`»[]¹¸=®vîš]¹¸M/ëÊEêÑ•{tånêÑ•ûcïÊÕìÊÅÞÝëuåúmœÉ1(©4 “µHwêÓjÝ*Ô"Ý©O«u'>­Ö­JMÊø´ZwæÓjÝ©O«uëóD­;j‘îħպSŸVëN|G¾´|³¦O«u'>#_š> #_Z>#_š> #_Z>#_Z>#_š> #_Z>#_š> #_Z>#_š> #_>­Öú´ZwêÓ0ò¥åÓ8ò¥éÓ0ò¥åÓjÝ©OÃÈ—–O«ug>­Öú4Œ|iù´ZwêÓj݉O«u§>­Öø´ZwæÓjÝ©O«u«OÓÈ—¦OCÖòiÌš>­Öø´ZwæÓjÝ©O«u'>­Öú4Œ|iù´Z÷œù´ZwâÓ8ò¥åÓ8ò¥éÓ0ò¥åÓjÝ©OÃÈ—–OãÈ—\¨qäKÓ§aäK˧qäKÓ§aäK˧պU©q»3ŸÆ‘/ ¡†‘/-¡éN|G¾´„:F-ŸVëN}Z­[…Z¤;óiµîL¨EºŸVëN}Z­[}Z­;÷iµîħպ3ŸVëN}Z­[…Z¤;õiµîħպSŸVëN|Z­{N|zëN}Z­;ñiµîÔ§ÕºŸVëN}Z­;ñiµîħպsŸVëN|Z­;õiùÒòiµîÔ§ÕºŸVëVŸ~ß±0/Ýao{¼•±ÏÓtŒîx§nøüË_úx€cCö²u¯ðÒ}/Ö»NÉq€vÓv¼QR©•䧬Å$%•Ú胣ĩm¢Ž§LÞ±]BI¥ºARR¨¡+ö×ÈI¥V|%ˉSVŒ¸,L*µã+YNœ&,Y9qÊô}Â5bR©å§Lßw\#&•ZñE'N™¾O¸,L*µã-’§Š¾ã1qÊô}Á5bR©å§¬íqY˜TjÅEœ8eú>ã1©ÔŽrÈÉA•ñ] ‡œ8Uô} “J-øªˆ§ÊÈ4\#&•ÚP9qÊô}Å5bR)^)Hœ²ÂtÀ5bâ”éûŽ[I¥ì!†kÄÄ)Ó÷ ·“Jm(‡œ8e÷G¼Ò(©Ôޝ>9qÊô}Ä5b┕§=. “J-øJ–“ƒ²Ñs¼­RPSÖ !Hœ²âÔ“JítQâ”É;”°œ8eòƒÊ˜°âú0qÊÔ¯2J*µ=ãFAàŒý= „‰SKHøÏú¿ÏXºÞÉ­Ã`Ê>áº0©Ô nH3vGÜqI˜Tj{^ðd9“»ô3ö ·“ƒ­$9¼“°¬Ñîˆ;B3¤}æTýpR)ª~8qj ê‡“Jm¨‡w>±x;R˜8eæ>â1©U?œ8eî¾á²0©W?”8µpõCI¥vDNœ2}_që1qjãêçJâ±qõC‰Sv?Üqgr7„,[é*£ä &ø Öx%áÓž:®~(qÊîˆ;. §Làñ:£¤R\ýPâ”)|kĤR+z'N™Â/¸,L*ÅÕ%N™Çt¸FLœ2…ßp˜TjAÏàÄ©•«J*ÅÕ%N™Â£gPR©[М8µsõCÉAÍW?”Tj!Ï Ä©ž«J*µáKNœ¸ú¡¤R;y%N\ýPâÔÄÕ%•ZÈ3(ù¦Á{ºº=1ãäÛÇåô+t'÷ S"ï¨Ý‹º’@õöˆž‡H]I »¥ qzÂj² ‹3vî$P¸Ca_qöŒÕ ]9ù³Ù3sÏžÙ†˜>³S£apâ ÿï&üT:rO™9‘8efï¿߈È=YæDâd™¹gÊœHœ)·ÿF^2MÆê¹müM”‰M±rÏáê¨A˜sìþ§ÌŽÙì^Y^"}Ìì˜WëÒ=úoþÛ£ÿöè¿õè¿Ô£ÿvRþÛ|ÿ-Ríþté>Aÿ-RíþtÖšý·°¬fÿ-.é÷©ÿ©vÿ-véý·w÷߀jößâ9Ñî¿Åeµûo¡K÷–þ[XÖ[úo±K÷è¿=úoþÛïKÿm˜ç<ƒ’Ú4“Q0©_«…'~­žúµZxâ×já™_«…§~­.Oµð†_«…'~­žúµZxâ×já™_«…§~­žøµZxê×já‰_«…§~­žøµZxæ×já©_«…'~­žúµZxâ×já©_«…ëF-<õkµðÔ¯Õ¿V OýZ-<ñkµðÔ¯Õ¿V ÏüZ-<õkµðįÕÂS¿V OüZ-<õkµðįÕÂ3¿V OýZ-\ýZ-<l‘ðįÕÂS¿V OüZ-<ókµðL°E¿V OýZ-\[$|Nüz WÅ&OüǼ4ýZ-\[$<õkµðįqÌKïÕÂs¿†1/ Á OýZ-<ñkµðÔ¯Õ¿Æ1/-¿V OýZ-<ñkµðÔ¯Õ¿V OýZ-<ñkµð̯ÕÂS¿†1/-¿V OýƼ4üZ-<÷kóÒòkµð̯ÕÂS¿V OüZ-<õkµðįÕÂS¿V OüZ-<ókµðÔ¯Õ¿V OýZ-<ñkµðÔ¯Õ¿V OüZ-<÷kµðįÕÂS¿V OüZ-<õkµðįÕÂ3¿V OýZ-<ñkµpõëO5uÆ*¨ãåíp˜Tjïë¡ÀówôCJ*µ¡ bà ž ŸÛºã—õpâ”y;B8c•'š!%•Zèý%µ›¶cåJI¥6òCJœ²š®¬3U÷nwÃׇ‰SfíX·^I\–i;ú!%•ZéÊ¢Ä)»âûPJ*µ‘!Râ”ý†H‰SV‘¢!RR©™êVJœ2GC¤¤R+"%NYEŠ}hJ*µQÝJ‰Sfðhˆ”ʾà ëœTjƯêáÄ)sxø‚\N*µbœ§¬"…¯Äâ¤RTûpâ”9ü‚kÄÄ©‰jN*µ !râÔLµ'•¢Ú‡§ÌáG\#&•ÚÑ9qj¥Ú‡§6ª}8©Ô‚o|8qjÐ9©ÔŠ_ËÉAõæðð¹wrß™,ÛÑ9qªŸñJãÄ)+ùW\#&•¢Ú‡§Ìá\&•ZÑ9qj¢ê‡“JíøÆ‡§Ìá{\#&NÙý¯4J*EÕ'N­TýpR© ‘§ÊyÜzL*Eõ'NíTÿprPƒY X'•Âú‡gÌà¡–ç¤R~%'N™Ãt¸,L*Eu'NXQàÌDu'•ZÐ08qÊœnT†ª NœZ° ¢àCºïiè])E¯Icù¡ù tafʺy#톮$P›ÉË‹º’›²ÇéäS ®­º’@õöÁqŽÎŠö'îáëÍ™9Þ“”²?33¼lÎÌչ렚Äy&U¾Z곓ºæÏ\T˜?sQך‹ Sh.êšEsQaÍE]i.*L¤á=º©Ì¥ìþ>ÅÈëÏ¥á.Y9¯vÿ.ëÊ9“{͵›’ð´ša±i›˜Vóº¼GoîÑ›cêÑ›{ôæ"õèÍý‰öæ€iöæb×­Ý›‹Ëj÷æ ƒ÷èÍ=zsL=zsÞS/ìÍÕìÍÅÞ£7÷èÍ=zsz½9‹vÁÊIm¨é¸˜ÄªÕ½3«V÷N­ZÝ[­ZÝ;·juïĪսS«V÷N¬ZÝ;³juïÔªÕ½«V÷N­ZÝ;±juïÔªÕ½«V÷άZÝ;µjuïĪս3­õN¬ZÝ;µjuoµjuïÔªÕ½S«V÷N¬ZÝ;µjuoÕjQïÔªÕ½«V÷άZÝ;µjuoÕjQïÔªÕ½U«E½U¬I¼«V÷N´ZÔ;µjuoµjuïܪս«V÷δ:Ž‚iYµºwfÕ8 ¦iÕêÞ‰U«{§V­îXµº÷œXõ,îZµºwbÕêÞ©U«{'V­îZµºwbÕêÞjÕêÞ «V÷N¬ZÝ;µjuïĪսS«V÷N¬ZÝ;³juïÔªÕ½«V÷N­ZÝ;±juïÔªÕ½«V÷άZÝ;µjuïĪսS«V÷V«V÷έzÄŸ°Ê­ZÝ;³juïÔªÕ½«V÷N­ZÝ;±juïÔªÕ½«V÷άZÝ;µjuïĪսS«V÷N¬ZÝ;µjuïĪս«V÷έZÝ[µZÔ;µjuïĪսS«V÷N¬ZÝ;ÑjQïÔªÕ½«V÷δZÔ;±juïL«E½Åª?Ù,šrã³-¦Y4Ì¢ÇÅËçåïàDZ¸;kJŽCTVfÈÉAMvŽãçFI¥V4CNœ2wÇOŽ’JíøÑaàŒã;®§ÌÜñÞHI¥–g\ÎX]Šw J*µ¢râ”y;Þ¯$<»&óö&NY] ¥Θµo¸$L*µ qâ”i;Üú1¨Ì†VȉSe¨ @TfÇ ãä f«HñþC‰SPäÃÖÿ}¡û!%N™­ÃOqR©*VJœ2_ßqY˜TjÇ["Θ­O¸>Lœ²J´ÇõaR©Í§Ì×\&•Ú¨^¥Ä)«DéÃÁ¤R;š!'N™¸/¸,Lœ2sÇz•’J­T¯RrPKßk¤¤Rš!'Nu‡5Râ”U¢X¯RR©Í§FúùpN*µâÜuNœ²;"š!%•ÚÈ )qªüÇ §Š»ÃM„’JÍ8w§ÖžÌ’J­åo  qÊ*QèŠsR©êUJœ2wG3¤ä Vswè>sR©¿¹‡§ÌÝÑ )©ÔŠs×9qª¸;<)©ÔŽs×ïäþ¦‚q5wG3¤Ä)sw|+KI¥¸ö¡Ä)»?¢QR©•̧ÌÝÑ )©ÔŽßÜÉS+W?”8eî¾à1©ÔBfH‰S;×?”TŠëJjë¸þ¡¤R;™!%NwGêLB-µÙýqÃ5bR©…̧ÌÝÑ )©×@”85Q „Aev2CJœšéGÄ9q ?·…k Jœ2gG‚Êlt}Qâ”ÝñÝ'%•¢ è â'l¾ŽfAÉAíf.póÆ 2\ÿPâ”ù:ü¼1'•ÚÐ,0pfàꇒJqõC‰S#W?”85õd”TjÅoîáÄ©™«J*ÅÕ%N-ºά\ûPR©¿·‡§6®}(ùÁûyù¶FÅ?v±?îµa0B]I˜¦2[•YÞƒßÔ•ªüèy¹KßÔ•jµšo‡© W¨ÍžKœ°s'¢=ŠûøzÓgF+?§röÿ.¦Ï\˜ûĨIœZ’QÓ&¥àI]Óg.*LŸ¹¨kúÌE…é3uMŸ¹¨0}梮é3¦ÏðÝÔ ¦ÏŒ¥­½{ëêµ§Ïp{ì»Ï¦òŽ©×Ιܓe®Ý”„§ÏŒãØFóÓg^·u÷hÊýž5å€j6åbëîÑ”{4åM¹›z4åM¹GSî§)©vS.¶îM¹GSŽ©vSZw¦ÜTS.2í¦\ø„M¹GS.PïÓ”³l¥¡ª”x#£Ï5îÜ¥Õ¸—VãN]Z[eZ„;si5îÔ¥Õ¸U¦E¸S—VãN\Z;uiôÒri5îD¦E¸S—VãN\Z;“iîÄ¥Õ¸3™áV—VãN]Z[ušt;qi5îÔ¥Õ¸—VãN]Z[eZ„;si5îÔ¥Õ¸—VãN]Z;qi5îÔ¥Õ¸—VãÎ\Z;ui5nui5îÜ¥Õ¸—VãÎ\Z;ui5îÄ¥Õ¸S—VãN\Z;ui5îÄ¥Õ¸Ë_|¼0kº´wâÒjÜ©K«q'.­Æº´wâÒj܉K«qç.­Æ¸´wêÒj܉K«q§.­Æ¸4zi¹´wêÒj܉K«q§.­Æ¸´wêÒj܉K«qg.­Æº´wâÒjÜ©K«qký£Æ»´wâÒjÜ™Kã —¦K«q'.­Æº´wâÒjÜ™L‹p'.­Æ¹´·ê4évâÒjÜ™L‹p'.­Æº´·Ê4 zi¸´w*Ó"܉K«q§.­Æ­2-º´wâÒjÜ™K«q§.­Æ¸´wêÒj܉K«q'2-º´wâÒjÜ©K«q‹Kª©2å×»VÛfœ*3÷0Ufê6ÿíž—¿oŸz[Q¼ùPPö}êÍ×Á 9©ÔÎX5Úá’0qÊ|>7N*µàçÆ‰SV¸FL*…Ç`â#`®¾âº0©ÔŽÕêÜõËÔ[:à²Î侓M½á;n÷™µ qâ”éú„k<“¸,«C{\Ö™Dªû &•Úql'5˜±ÃuNœê{¼3ÞIØ®Á¼&¨_Éì?±ê”y;T«w>¡Á¼}ÄeÕ¤ý~RV‡v¸õ˜TjGÿºXÖ4ãõ+™m‡±Reü.«&s9·“ZñÞx'qÍÜ¡Z½ 6œ ~'ñØ[:à1©ÔŽ^x'qYÅÜáb¤Ä©½ÇjõNâÖ[Úã²Î$P£™;x!'•Úп8qÊ̾œ‡§¬íqY˜TjF/äÄ©bîHaR©½§¬ípY˜TjC/äÄ)ûêUNœ2s‡z•“J-ø&–§ÌÜWÜzL*µbOœ§ì;à1©Ô†^ȉS;ý„8'5™¹Ã×ópR©½§ìþ¸ã²0©ÔŠþu'áê˜Êp@\㙄«Ö.,ôÂ+™»ã»ã²ûã†Ë:“ûÇ='Û%øec *³`íz%ñn?YUÚáúÎ$nûL? ~'ñ8,\ ¬q¡è âþ­\]I\ßF?~%pDKŠqÿv®€®¨ ‘ ×4›­ƒÞIXÊÜqt%‘2[‡.Î \ÿPR©ÚâW×6rõCI¥¸ú¡Ä)»‡‚AevtBNœš¹ö¡Ä©…kJ*µ râ” û‚ˤR~9ÏÄcºqíCI¥v´BNœÚé'Ã99¨¥ãÚ‡’J­ø³Æœ8eÖŽ~AI¥6ò Jœ¸ö¡¤R;¾ãáÄ©q&Ë Ä)óö ׈I¥VürNœš¹ö¡¤RY%N-\ûPâÔʵϕ„ók±;"Z%N™¹£ePR)®}(qÊ,¦Ã5bR©,ƒ’é¼§ŸOQõ#±÷Ý0€?¡®äžtbFt´Ðnè S~ü|Š¿s'*?=Àd„+ ÔlOÈ=Nѹ“@ÑþÄ=|½ 3åW¾‡rö§fúwO˜Ùû{ÂÌ4â„™«sŸ5‰“I2ªü ˆ'uM˜¹¨0a梮 3&Ì\Ô5aæ¢Â„™‹º&Ì\T˜0Ã{tS/˜03ÙIÚ•ÈëO˜á&™mðjÆ=MqÂLMîé1×nJÂflÛ×ã ÓGL˜yÕÞ£9÷Òæ\¤Ú͹ØÂ{isÚnÍæ\Ü®—6ç€ú$Í9 ZÍ9hý4›sØÂk5ç õÓlÎa ¯Õœƒ­o7çâ²ÚÍ9hᵚsÐÂ{is.Ríæ´ðšÍ¹x$Ú͹¸¬vs..ë¥Í9 ͹GsŽ©?Òæ\¤ÚÍ9hᵚsÐj6ç áÔjÎA¯Õœƒmo6ç°…×lÎÅmo6ç°…—7ç`}íæ\ÜÃfs[xysŽçG7ç°íÖjÎa ïE͹ȼ¬9™vsZxæÜ;šs‘j7ç …÷hÎ=šsDµ›s@5›s±…÷ûÙœ›Ön"Ë ¤6ÔxXL*ÕªÞjÕbÞ™T«z§R­êHµªw*ÕªÞìÕäÝ©T«z'R£`ZR£`šR YKªU½S©†GMKª1kJµª·Jµªw*ÕªÞ©TÃ(˜–Tã(˜¦TÃ(˜–Tã(˜¦T«z'R£`ZR£`šR £`ZR£`šR YKªqLSªU½©ÆQ0-©VõN¥FÁ4¤š²¦T«z'R­êIµªw*ÕªÞ‰T«z§R­êHµªw*ÕªÞ‰T«zωTÏ¢Þ©T«z'R­êJµªw"ÕªÞ©T«z'R­êHµªw.ÕªÞ‰T«z§R­êH5Ž‚iJ5Œ‚iI5Ž‚iI5Ž‚iYµ˜w"Õ8 ¦)ÕΖȥGÁ4¥FÁ4¬FÁ´¤GÁ4¥FÁ4¬FÁ4¥²Ì«ã(˜¦TÃ(˜–TcÖ°j1ïTªU½ÕªaLSªU½©VõάZÌ;‘jUïLªU½S©VõN¤ZÕ;•jUïDªqLSªU½©VõN¤ZÕ;—jUïDªU½S©VõN¤ZÕ;•jUïDªU½3©VõN¥ZÕ;‘jUïTªU½©VõΤZÕ;•jÓ’jUïTªU½©VõN¥ZÕ[¥ZÕ;‘êO5‡f*?ÚcÛLsh˜CÓýñ+°ó|–òÓǾ‚ï»GÚ•:/Ã1oî;IÊÞ÷ÃT&6Egæ®<#„I¥ì,@(ÎãZ¤Rky‰S+n÷Ê[íãuÄ©­a 0qjïJ R˜Tj.OA  9¨Ñîk„0¨ÌZž‚AâT?–§`¤0©ÔVæ ‰Svg´«3R˜85vå9)L*µ”ç P8ewÆ —…I¥Ž™Ü@Aâ”õˆ[I¥öò §ìθáÖcâ”Ýg\#&•ZÊs(HœÚ†Òˆ&•ZKo(Hœ²;ã„&•:ÆÅÉA•P;,‹§ú®|gB¤0©Ô1“(Hœ†Òˆ&•ZËs(HœÇRÅG “Jíå9$NMsyF §ì®¸á²ÎÄ–Ù¯'µÐ•F‰SËPžƒ‘¤R[é‰SëXz‘¤R;]i”8µs¹#…‰SfP®“J-¥$U¾@}†eQR©cN7P8Õ#=#…I¥ög|¸PâÔ0—ïLˆ&N}éD “J-¥$NMÃQ “Jm¥TMÂY8[Ôã1©Ô^z@AâÔ2—ÞD¤0qj=fvG “J­¥ $NÙýqÃ5žIÜÇm+ß™$NíTap0KÇЙ¬Åt¶“šK¨š„­Zú¾´ "…I¥¸º’¸¬¶<þgýß¹º’¸”ÑêU€j™Éê` ¨ ×?”85SýƒAeÖò AâÔÂõÏ•ÌGŸµRVí äÁ2U`J ˜8µuÏø©AP.|®$Ê J*µ–PÔÚtQ]IXãÚqáC‰S=>”85t¤”TjÁ‹ gÆ¡è„0©ÔZô(HœšF J*µ—¯P §ìF¸#…‰SKWô?R˜Tj!½ Ä©u(ŸU¤0©—=”8µqÙCI¥v JœÚ¹ì¹’pvmv+Ü`”TŠËJœê‡ò¥l‘¤R[Ñ  qj(“%€Â¤R\öPò!M‚÷ó9:þq$öòšãL\&…º+*‡õTšãED ®$P“¿ÄÔ•jöW~º’@-þ‚$PW(Ú£¸7õÒ–J?”_6±Ï³,Ò„¦ÏLã=}fÿ🛹:1÷yQ“e(_¤y*¿Pý¾HxR«mè¾Eª&@mëñÙª&@íûñTªI¤;iÊ5vSgTÝ£@…}üÀÙ3}ù%£7¥>Ú“æÎŒó=wfYò¹3ëÜœ;ÃͱrRÍÇ7’ÝΙX™³”:õÛ°“œÄË-^àód7¹å'ϼjçîÑ“{ôä=¹H=zržÜk÷ä€jöäbçîÑ“{ôä^»'©vO:wp=9 š=¹¸/êÉ!ÕêÉAç®Ý“ƒÎ]³'טõä g×ìÉÅ¥¼¤'ÌïMO¨FO.öíÚm¹«s÷²ž\¤Ú=9èܽ°'T³';wžÜ£'‡T»'¨·ôä s÷Ü“ë·q&Á ¤öÑdLbÓbÜ©L«r«M‹q§2­ÊÈ´*·ú4ùv"ӪܙL«r§2­Ê­UîԦŸ™VåNeZ•;‘iUîL¦U¹S™VåNdZ•;•iUîD¦U¹S™VåNdZ•;“iUîT¦U¹™VåNeZ•;‘iUîT¦U¹U¦U¹S™VåNeZ•;‘iUîT¦U¹™VåNeZ•;‘iUîL¦U¹S™†A/-™VåNeZ•;‘iUîT¦U¹™VåÎdZ•;•iUîEdZ•;—iUîD¦U¹S™VåNdZ•;“iUîT¦U¹™VåNeZ•;‘iôÒ”iUîD¦U¹3™VåNeZ•;‘iUîT¦aÐKK¦U¹Õ¦Å¸s™†A/-™ÆA/M™VåNd½ä>M¾È4ziØ4D-›ãNdZ•;³i1îD¦U¹S™†A/ ›¾½¤&­²©´èvbÒ8â¥iÒêÛjÒêÛ¹IÈ—–I«og&­¾š´ú¶ªôÀºš´úvbÒêÛ©I«o'&­¾™´úvjÒêÛ‰I«o§&­¾˜´úvjÒêÛ‰I«o'&M#^š&­¾˜´úvjÒêÛ‰I«o§&­¾˜´ú¶šô§š(cµ•ݵ†2ÁóÃ9Qfĉ2{ÙºWx×¾Ï3}p”h7aÇ%•ZI )qÊÊPÔBJ*µÑG‰SÛD%N™¶£RR©…n”j芷Ç5rR©µ§¬ pY˜TjG-äÄ©aÂb•§LÜ'\#&•ZP 9qÊÄ}Ç5bR©‹UNœ2qŸpY˜TjÇ[$'NqÇ5žÉ}Ã:÷׈I¥ÔBNœ²2´ÇeaR©ßq┉ûŒkĤR;já•lvu>j(ãº@ ¯d-MÁz$ú¾Ã7DœTjÁr•§Êˆ4\#&•ÚP 9qÊÄ}Å5bR)V)Hœ²’tÀ5bâ”F‹&•ZÊïV‰S&în=&•ÚP 9qjéJ£¤R;ê'N™¸¸FLœ²ò´ÇeaR©µ“ƒ²Ñs¼­RP™­ün#@8eÅ)H!'•Úé:£Ä©aÆ–§LÛáÀcPSU\&N™´ãUFI¥¶gÜ(œ±Òt@§–ðŸõŸ±tåÄ)“õ ×…I¥V°B œ±;âŽK:“ÛÒ,;æn‰Sæên;&5ZI mñ; ÏÑîˆ;B3¹£}æTý܉= ¦s}=U?W²–ùá}¥ª~®© õðJÊ/ÕÖA®Cù €©3‰ÛeÎ>âk²Ú³â< ?W:ÃheÃEIù¹äsY3?g;å7±ø9“­\ˆçXvôÃ+ÙÆÃ„œ2{_qëkR$´?—µqñs&ñ¡9n\ü\Im £Ý w\]Mà34yÇ+ìLÂqŸÌÝ'XÛ•„°üN>WNåÉn†;. §ÌÝñ£¤R\øPâ”Ù{kĤR+*'NM#º!'•⇧La:\#&N™½o¸FL*µ bpâÔÊ…%•⇧¶‘ƒ’JíØwæÄ© Jjî¸ð¡¤R )%Nõ\øPR© ßðpâÔÀ…%•ÚI1(qj䇧&.|(©ÔBŠAɇô ÞSÓíaç“ åÛ„p ¿BwrO:1òfÚ½¨+ TùÆyˆÔ•ª|gÝg$ÜI &;º8IçN…;öð'Ììå—MÆ|ÂÌûüÞÌ[gÌìÔcœ+Ãÿ{y Ðk¹gÉœHœ%s ÷™‰Sdäžs"q~̱q÷䘊À䘸ýyÁ̘R#Œ¿£¹1±Vε|ר}uÔ L‚ñ݃ÿ” 1å‡ËË›£šójºGïíÑ{ûÃï½EªÝ{ƒÝZï-RíÞtèš½7ìÐ=zoÞSÞÛ£÷öâÞPÍÞ[ìн´÷T£÷ûsíÞtèZ½7脽´÷©fï :tÍÞvèšÍ·Ð¡köÞ°C×ê½A‡®Ù{Ã]³÷;tÍÞtèš½7ìеzoСk¶ßB‡®Ù{ Ÿa»ùºfï-vèÚ½·Ø¡{ôÞ½·Gïíwß{æy Å ¤6ÌdðKªÖ*à‰Z«€§j­ž¨µ x¦Ö*à©Z«€‹Z«€7ÔZ¾ ׈‰Sæîh†”Tj¡»$%NMÕ¬”Tj¥š•§ÌÝÑ )©Ô޳Ò9qÊÜ}Ç5b┹;š!%•Zè.I‰SV—Âé…AeVœ“ΉSfîè…”Tj§{$%µYYÚCÝM‰Sfîè_Wj»gRâ”™;Þ#)©ÔöÜ#gÌÛ7ÜvL*µãŒtNœ2oG/¤Ä)«—:\#&•Zàky(pƬ­’Jm¨…8ƒ'èÆgç¶–Á\ˆ@â”Ù:B8c)ú %•Zè%µ›¬£RR©¬§¬&…+ ƒÊìø<œ8eF€u+%N™¬£^I¸v«HñÊ¢Ä)»â PJ*µÑ‹YJœ2_dz”8e)¾˜¥¤R3Õ­”8eÖŽ/f)©ÔJ/f)qÊ*Rì>SR©êVJœ2oÇ®8%…2mïpv:'•šñy8qÊ̾‘‡“J­ØçÄ)«Hᛯ8©Õ>œ8eæ¾à1qj¢Ú‡“J-ØçÄ©™jN*Eµ'N•®“Jíhˆœ8µRíÉSÕ>œTjÁ÷<œ8µhˆœTjÅoäáä zsxøFN*µ£!râT?ã•Æ‰SVò¯¸FL*Eµ'N™Ã¸,L*µ¢!râÔDÕ'•Úñ='N™Ã÷¸FLœ²û#^i”TŠªNœZ©úá¤R"'N•Aò¸õ˜TŠêNœÚ©þáä ³° N*…õΘÁC-ÏI¥6üæ+Nœ2‡épY˜TŠê Nœ±¢À™‰ê N*µ apâ”9=Ü"0¨ UAœ8µ`DÁ‡t ÞÓлRŠ^ÓÆò½–=ìè Â\”uóFÚ ]I 6“— u%7eÓé8µï­º’@õöÁqVΊö'îáëÍ’9ÞŽ”²?%3¼l–Ìչ렚ę%5öRžÔ5cæ¢ÂŒ™‹º&Í\T˜4sQ×¼™‹ óf®m½¦ÎœTœ:Ã{¨Ÿ=3Øý}>Š‘×Ÿ=Ã]²r^íþÅ9וs&÷œ™{79á‰4Cù ó"63‘æu[xæÜ£9ÇÔ£9÷ ›s@5›s±…÷hÎ=šs¬Í9 šÍ¹ØÂ{4ç͹GsîÑœêÑœ;©Gsî¤͹Gsî†>ª9gÑŽ3G9©5“XµºwfÕêÞ©U«{«U«{çV­îXµºwjÕêÞ‰U«{gV­îZµºwbÕêÞ©U«{'V­îZµºwbÕêÞ™U«{§V­îXµºw¦Õ¢Þ‰U«{§V­î­V­îZµºwjÕ0 ¦eÕêÞ©U«{«V‹z§V­îXµºwfÕêÞ©U«{«V‹z§V­î­Z-ê­bMâXµºw¢Õ¢Þ©U«{«U«{çV­îXµºw¦Õ¢Þ‰U«{gV­îZ5 ƒiYµºwjÕêÞ‰U«{gV­îZµºwbÕêÞ©U«{'V­îZµºwbÕêÞjÕêÞ «V÷N¬ZÝ;µjuïĪսS«V÷N¬ZÝ;³juïÔªÕ½«V÷N­ZÝ;±juïÔªÕ½«V÷άZÝ;µjuïĪսS«V÷V«V÷έZÝ;±juï̪սS«V÷N¬z÷N­ZÝ;±juïÔªÕ½«V÷άZÝ;µjuïĪսS«V÷N¬ZÝ;µjuïĪս«V÷έZÝ[µZÔ;µjuïĪսS«V÷N¬ZÝ;ÑjQïÔªÕ½«V÷δZÔ;±juïL«E½Åª?Ù4šrã›fžF3Ã4šq\ü—{^þ~‹»Ã±¦ä8D£U¦`†œÔdç8~n”TjE3äÄ)swüä(©ÔŽÎØ¡Üq}˜8eæŽ÷FJ*µ<㢠pÆêR¼QR©ßÉrâ”y;Þ)©ÔŽ?âljSV—Bi„3fí.éLîúܲ Œ§LÛáÖAe6´BNœ*c]‚ 2;þÜ'5[EŠ÷Jœ‚"þ³þï Ý)qÊl~hŒ“JmT±Râ”ùúŽË¤R;Þ1pÆl}Âõaâ”U¢=®“J-h†œ8e¾¾à²0©ÔFõ*%NY%J&•ÚÑ 9qÊÄ}Áeaâ”™;Ö«”Tj¥z•’ƒZÌÜáKã8©Ô†fȉSEÝa”8e•(Ö«”TjF3¼“pÕ—Asx…QR©¿°‡§ìŽˆfHI¥62CJœšéÇÂ9qª¸;ÜD(©ÔŒ“×9qÊÜÍ’J­d†”8e•(tÅ9©ÔFõ*%N™»£RrP«¹;tŸ9©Ô‚ߘˉSæîh†”TŠ~.œ§Š»Ã‘’Jí8y§ÌÝÑ )qÊÜÍ’JqíC‰SvD£¤R+™!%N™»£RR©¿°‡§V®~(qÊÜ}Á5bR)ú¹pNœÚ¹þ¡¤R\ÿPrP[Çõ%•ÚÉ )qª¸;R˜8e÷Ç ×ˆI¥2CJœ2wG3¤¤R\QâÔD5•ÙÉ )qj¦ çÄ)|4nü\Ü®(qÊœ!*C?ΉSvWÄwŸ”TŠ* œ1_G³ ä öòe3 2\ÿPâ”ù:ü˜1'•ÚÐ,0pfàꇒJqõC‰S#W?”85ÑσsR©¿®§f®~(©W?”8µàïƒSàÌʵ%•šñ s9qjãÚ‡’鼟—okTücûã^Fó'Ô•„y*³U™å=øM]I Ê›—»ôM]I V«ùv˜›p%Úì ¹Ä;w(Ú£¸¯7f´òs*gÿïbþÌÕ‰¹OŒšÄ¹%5mR žÔ5æ¢Âü™‹ºæÏ\T˜?sQ×ü™‹ óg®m½æÏœTœ?Ã{¨Ÿ?3–¶öQ…¼þün}÷ÙTÞ1õñÚ9“{¶Ì½›œðü™q»Ãh>fþÌëöî]¹?ñ®PÍ®\ìÝ=ºr®Ü£+¨?À®\¤Ú]9èÝ=ºr®S®Ü£+ÇÔ£+÷èÊ=ºr7õèÊýwå,[i¬*%ÞäHÆÁèóD;wi5îÄ¥Õ¸S—VãV™áÎ\Z;ui5n•iîÔ¥Õ¸—VãN]Z;qi5îD¦E¸S—†Q/-—VãÎdZ„;qi5îL¦E¸Õ¥Õ¸S—VãV&ÝÖçHbÜ©K«q'.­Æº´·Ê´wæÒjÜ©K«q'.­Æº´wâÒjÜ©K«q'.­Æ¹´wêÒjÜêÒjܹK«q'.­Æ¹´wêÒj܉K㨗¦K«q'.­Æº´wâÒjÜ™K«q§.­Æ¸´wêÒj܉K«q§.­Æ¸´wâÒjܹK«q'.­Æº´wâÒjÜ©K«q'.­Æ¹´wêÒj܉K«q§.­Æ¸´wêÒj܉K«qg.­Æº´wâÒjÜ©K«qký£Æ»´wâÒjÜ™K«q§.­Æ¸ô ƺ´wâÒjÜ™L‹p'.­Æ¹´·ê4é¶Ö@‰qg2-¸´wêÒjÜ*Ó"܉K«q§2-¸´wêÒjÜ*Ó"Ü©K«q'.­Æ¹´wêÒj܉K«q§.­Æ¸´w"Ó"Ü©K«q'.­Æº´·¸ô§š+S~·kµm¦¹2 Ì•™ºÍ½çåïÛ§ÞŒ=Þ|((û>õæëà„œTj‡Žg¬ípI˜8e¾Ÿ'•ZðsãÄ)«F\#&•Âc0ñ0W_q]˜TjÇjõNúeF+äÄ);ÃwÜnL*µ qâ”éú„kĤRzá•„Å›ú"ì+PgRÃÍ‚GÝÉ­Ó`ºÓÓ9qªïñ¶x'á&í0=§LÚ¡T½“¸,“ö—u&÷¯þMƒ¡ný™œ‡a(ÊŽ«;“ 1aŸq]5 ¿¬7 ¶u.èL®YíÙá‚Î$n´Ù:T¨w€ßT€Úxîú4Xí9àÏ$.Ël}ÇeaâT±u¸)qjï±Bå¤R+ºà„íÍÖÁ9©Ô†Îu'áDÍÖáy8qÊjÏ—…I¥ftANœ{œ•~'q»ÌÖG\#&NYñÙá²0©Ô†.ȉSfëP£ÞIÜ®¥ÃõN€ZÐ9qÊl}Å­?“óÒ‹ªãêÎ$žöDpug. +BQ¯$ü:åd5]f5Yº}+_ltP“©:|!Ï•”¯ ©¿ jÙ‚"ȉSvOÜqY5Ùm™ÝtR+ ו„ñ““Ý¥P¸Îd)¿[¾œÛe…h˪ÉnEÑ~RvOÜpYž,e¨âvn½©:ÜJkPJâú«§-X¬^IG:MV†v¸>O–òÝæÃ¹¬™~)üLp.zj²”2ã:¦ =5Øl«Æ“Y¹è9Øö~'üJÂïºZ¶<ã¢<€%í\òœIÅ_‚¹“@•„`ÆÁ•Ê.º£º©+ íOÜÃ×›S~Ë{(g:+¦÷¬˜½¿gÅL#Ί¹z.÷iQ“8c$£ÊoÝЉxR׬˜‹ŠÏñ“ºfÅ\T˜sQ׬˜‹ŠUݹ­×¬˜“гbxõñ³b&;I»£yýY1ܳ ^MÖ§)Ί©É=æÞMNxVŒmûz¼Eú˜Y1¯Ú¥{tà^Ú‹T»ût¿G8 š8ìÓ5›pWӨ݋}ºv.lÔ[:pÐ[kvàâ²Ú¸¸¬vút/hÂ…öZ«‡}ºfîZP»}ºfzkÍ\<˜í\\Ö§éÀê-8èÓ5;pqYí\ì(}šPÍ\Ü®OÓ‹ÔK;p‘jwàâÛM¸«O×îÀAŸ®Õƒ>]«‡VŽút­ô隸xÞÒ‹}ºVŽútv±Z8ìÓå8êÒµ:pЧkuà¨O×êÀAŸ®ÙÃ>]ÚÃ.]³}ºvút\ìÒµ;pЧÓ\š2Œ_i™2Ž_iš2Œ_i™2Ž_i™2Ž_i©r¿Ò2e¿Ò4e¿Ò2e¿Ò4e¿ÒPe¿Ò2e¿Ò4e¿ÒPe¿Ò4e¿’Ér¿Ò4e¿Ò2å0~%óäû¿sG†‘+ I†¨éÈ0r¥åÈ8r¥%É×È•TqØJKqØJSïa+©Ø•–Õ–㕦«B'r¬ ȱ*t.Ç0d¥%ǘ5åX:‘cUèTŽU¡9V…ÎäX:•cUèDŽU¡S9V…NäX:“cUèTŽU¡9V…NåX:‘cUèTŽU¡UŽU¡9þT“Z¦ò3:¶Í4©e…I-ýпË:•™›½-_>ämy?”çËlKÚ_AýN’²óý0•‰F‚À{u¸$L*e'B1pæƒ&•Z˃(HœZq»WÞj[$NmǘŸHaâÔÞ™&•šËc(Hj´[ã! *³–Ç@8eO‹¶’JmeP8UÎʨšlVÓÍ»òô‹PM:ä Hœ²Û↋¤RǼj  qj‹ÎG “Jíå!$NÙmqíÇÄ)»-θFL*µ”‡ P8µ Eð#…I¥ÖÒl §ì¶8!…I¥Žl@ArPeÈÒˢĩ¾+ß`)L*uÌ« §†¡~¤0©ÔZ‚@AâÔ8–o0ˆ&•ÚËC(HœšæòŒ&NÙ=qÃeaR©…®3Jœ²‚}Ä5bR©­>P8µŽEð#…I¥vºÒ(qj;fVG §ö¾~¤0©ÔR(Hª|Ÿù Ë¢¤RÇ k  qª?ÆdF “JíÏøh¡Ä©a.ß`)Lœû¢ù‘¤RKÑ|  qj¼2¸)L*µÍ §æ©h~¤0©Ô^4(HœZæÒ~ˆ&N­Ç<ëHaR©µü $NÙýqÃ5bR©­|ƒP8µSýSƒð@[:.(©Ô\<(Hœ*‹…M?“¸ÂžëŸ3‰Ð›ÿ³þï\þœÉæ?RïÔh•*@8c¥(ܱ0¨ —>g7y¦ÊƒÊ¬En‚Ä©…+J*euB1pfŠöG§¶î?5*Ãu%Ní\÷PR©µÈ?PÔÚtMQR)®{(qªçº‡§†Žœ‚’J-xMaàÌ8õ&•Z‹ú‰SÓHVAI¥öò}@Aâ”Ýw¤0qjéŠúG “J-ä”8µEý#…I¥¸ê¡Ä©«J*µ“]PâÔÎU%µÙ­pƒ5RR)®z(qªÊ7¤E “JmEý‚Ä©¡Ìj “JqÕCɇ4ÞÓÊçà÷ÇØË{Œ¸G2sV/§Í¯næ nfòWÐ7s73ûk¼›¹‚›YüÅÇÍ\ÁÍànÄýº˜—6Pú¡ü²ˆ}‚öÌVÛÁÌ–i¼g¶ìþs/wßå:jbEÖñ½jþÉÕï‹T}'µ—W.}¤j©ù˜]1êL€êËë°1R5ªöU ê*ìãNléË/ Ùîov5ï>­ÅþnMk¡VX9¥æÝkçz©œÁ\¾t(‡âÞENÂõõÚ}¶GíÑA{k ¨—µÐ"ôè =:hÚ£ƒÔ£ƒvRÚIý§é E¦ÝBƒ>ÛË:hH}d þçV ÖÔè A—íE4 -4è²=:hÚM=:hSŸ¸ƒÖoãL~AIí{Ɉ•D¥E·S“VßV•ÝNMZ};1iõm•i’íĤշ3“VßNMZ}['êÛ©J‹n'&­¾š´úvbÒêÛ™IÃø”–HǨáÑ*Û©G«m'­¶z´Ú¶>OÛέÖú´Z÷®>­Öù´ZwêÓj݉O«u§>­Öø´ZwêÓj݉O«ug> CXZ:­Îè´JwªÓqKæ!jÉ´·>YT¹S™†ñ+-—†á+-—†á+-•VßNTF¯´LZu;1iõí̤շS“VßNLZ};5iõíĤշS“ŽƒW"­¶‰´êv*ÒªÛ*ÒªÛ©I‹m'"­ºŠ´êv"ÒªÛ™HÃØ•†H‹k'­¶z´Ú¶Š´ÈvæÑjÛªÒ¤Ú‰G«m§­¶­"-²z´ÚvâÑjÛ‰G«mç­¶­"-²ztºÒÐhˆZ WZ W­¦Jt·Òph¶ÒthÈZ ÃVZ £VZ £VZ £Vš G­4 ­4 Z=[ Z=;7hõìÄ Õ³3ƒVÏN Z=;1hõìÔ Õ³ƒVÏN Z=;1hõìÌ Õ³SƒVÏN Z=;5èXþ4Z-;hÕìD U³VÍÎ:ŽYiø³JvêÏjÙ‰?«e§þ¬–ø³ZvæÏjÙ©?«e'þ¬–­þü©&ºX½t¼k§‰.;Lt–rÑ\ß´ú‚×ìÃR$vž’ã-¶ãøÑQâÔFßVʉS&éxƒ¤¤R ½á¤ä ÊráGGI¥V’@Jœ2IÇ$%•Ú©P¥Ä©ò“s¸FLœ2IG¤¤R Ý )qj¨X¥¤R+«”8e’Ž/_)©ÔŽsÊ9qÊ$}Ç5bâ”i:ê %•ZèI‰SVÂé…AeVœQΉS&ê(ƒgî£åÄ;$%µY9ÚC•L‰Sfêh]”Tj!¤Ä)«ºðII¥¶ç¡8c®¾á¶cR©§“s┹:Ú %NYUÚá1©Ôß§C3fêøê•’Jm¨ƒ8ƒççÆ'çf޾âš0qÊ!œ±j=’J-T³RrP»):Ö¬”Tj#¤Ä)«Fá 2;~•'N™¡cÅJ‰S&éhƒ”Tj¥+‹§ìfˆï9)©ÔFo_)qÊ<ß¾Râ”Õ¢øú•’JÍT±Râ”Ù:Z!%•Zé,%NY5Š]fJ*µQÍJ‰SæëØý¦¤P¦ëN.ç¤R3~'NÙ¾N‡“J­ØýæÄ)«Gá+«8©•>œ8eÞ¾à1qj¢Ò‡“J-膜85SéÃI¥¨ôáÄ©òKì¸FL*µ£râÔJ¥'NmTú\IèX¶àûNœÚtCN*µâ×éprP½Ù;|'•Ú±ΉSýŒW'NYÁ¿â1©•>œ8eö>à²0©ÔŠpNœš¨øá¤R;¾ÏáÄ)³÷׈‰SvÄ+’JQõÉS+U?œTjC?äÄ©2ú·“JQýÉS;Õ?œÔ`ÓÁ²(©Ö?8cþ¥<'•Úðk«8qʦÃeaR)ªƒ8qjÄ:ˆg&ªƒ8©Ô‚‚Á‰Sfôp‹À 2TqâÔ‚UÒ+xOAïŽR´ŽïË÷Qö0dŸ‘ë¿ïé%ëVÛg'r7³Ùlq1Wp1öü”>·æ n¦·{ Skîàfp'â^½Ú„—ã=H)ôÓ /ÃË&¼Ü ˜«ò©Iœ$’Qc/5àI]“_.*L~¹–Í9©8ÿ墮)0¦À\Ô5 æ¢Â,Þ£@}üD˜ÁîèóQ~¼þDꊕ³j¯_tS¯•3¸§¿Ü;É Í‰ʯ‚ù˜91¯Ú¯{tâ8¦þt;qHµZq¡_÷èÄ=:qNÜE=:qNÜ£÷èÄEj“Òç-8è×=:qNÜ£÷èÄ]ÔâNœE;ŽNå¤6ÐtL"ÕªÞ™T«z§R­ê­R­êKµªw"ÕªÞ©T«zï|¾gêIµªw*ÕªÞ‰T«z§R­êHµªw*ÕªÞ‰T«zgR­êJµªw"ÕªÞ™U‹y'R­êJuò’;õÝKJZÍ;uj5ïĩռS§VóV©ñNZÍ;qj5ï̩ռS§VóV©ñNZÍ[¥ZÄ[µš´;qj5ïDªE¼S§VóV§VóÎZÍ;qj5ïLªE¼§VóΜZÍ;uj5ïĩռS§VóNœZÍ;sj5ïÔ©Õ¼§VóNZÍ;qj5ïÔ©Õ¼§VóV§Vón8µšwâÔjÞ©S«y'N­æ:µšwâÔjÞ™S«y§N­æ8µšwêÔjÞ‰S«y§N­æ8µšwæÔjÞ©SÈ—–S«y§N­æ­N­æ;µšwâÔjÞ™S«y§N­æ8µšwêÔjÞ‰S«y§N­æ8µšwæÔjÞ©S«y'N­æ:µšwâÔjÞ©S«y'N­æ8µšwîÔjÞ*Õ"Þ©S«y'N­æ:µšwâÔjÞ‰T‹x§N­æ8µšw&Õ"Þ‰S«ygR-â-NýÉæË”ß4Ó|™¥ƒù2ã¸Ôߨyéû÷q,⇚’ãV˜‚rrP“âø±QR©µ§LÜñƒ£¤R;~r8c§øŽëÃÄ)Óv¼5RR©å3V–â ˆ’J­¨…œ8eÒŽ7FJ*µãoƒq┕¥PaàŒ)û†K¤R 'N™³Ã¿·g[²¡râTä•ÙñgÁ89¨ÙêQ¼ûPâ”øðŸõ_ènH‰Sæêðƒ`œTj£z•§ÌÖw\&•Úñ†ˆ3æê®§¬íq}˜TjA/äÄ)³õ—…I¥6ªV)qÊêPúp0©ÔŽ^ȉS¦í . §ÌÛ±Z¥¤R+U«”ÔbÞßw%á’XLÛA ¯$BEÛa}”8eU(Öª”TjF+äÄ©‘~Æ›“J­øý;œ8e·C´BJ*µ‘RâÔL?æÍ‰SKGµ*%•šqvú•ÄCoÚŽRHI¥V’BJœ²"ÚáœTj£R•§LÛQ )9¨Õ´ÚΜTjÁï½½’p Vû’JÑzsâT±vxžI\¡¡®§LÚQ )qÊê&TBJ*ÅU%NÙ­Õ‹’J­¤„”8eÒŽJHI¥vü"NœZ¹î¡Ä)“ö׈I¥è÷¼9qjçÊçLâǸsáCÉAm>”Tj'#<“°Â­(;B˜8e·Æ WX“ðÅ–-$„g”); á™Ä͹ö¡Ä©‰jŸ„ï ±h'<“¸º™~É›§ð‰¸áï Ùsås&2MG‚ÊÐïwsâ”Ý ñe'%•¢²gLÑÑ&(9¨ÝlnÚT†‹Jœ2E‡_æ¤RÚÎ \òPR).y(qjä’‡§&úånN*µâ—râÔÌ%%•⚇§– }¢áÔÛW®x(©ÔŒ_{ˉSW<”|HWàýT|[ƒÔ;Øû=ö¹¯ÌÜ“Qf«*wÞ's7S~tü¸UŸÌÜÌ:ö~bŸÌÜÌfÄ%LĹƒ›Á݈ûõj“cF+3§rºÿ.&ÇÜÝ–ëT¨Iœ8’QÓ&5ßI]“c.*L޹–MŽ9©89梮É1&Ç\Ô59æ¢ÂäÞ£@}ü䘱´®‚ãõ'ÇP ì»Ï¦ò©WËÜSaîä„&ÇŒãØÚò1“c^µ9÷h»=Ún7õ’¶2­¾[lÎ=Ún¶ÛuÛ ©õÝ"ôh»½RÛ ¨fß šsœm7 š}7hν¬í†ÔÞè»Å>Ún¿‡m7¤Z}·Ø»yaÛ ¨fß-®°ÙvƒE½´íT«ï7«Ñvƒj·Ýbs®Ùwƒ¾š¶Ý`U/é»òh»=Ún7õ’¶0;4ç^­ífÙJÃO)ñžF2¶E$*Ù¹>«d'ú¬’ê³J¶ú³8v¦Ï*Ù©>«d«?‹c§ú¬’è³JvªÏ*Ù‰>«d'þ,Žê³Jv¢Ï*Ù™?‡‘, {VÅÎôY[íY;µgulhìÄžÕ±S{VÇNìY;µgulÕgQìÌžÕ±S{VÇNìY;µguìÄžÕ±S{VÇNìY;³guìÔžÕ±ÕžÕ±s{ŽYò QÃU°SwVÃNÜY ;ug5ìÄÕ°SwVÃNÜY ;sg5ìÔÕ°w†a,-uV¿NÔY;UgìDU°uVÁÎÕY;QgÅÒ2gÕëĜկSsŽƒXâ¬v‰³êu*Ϊ׉8«^§â¬zˆ³êu*Ϊ׉8«^gâ¬zгêu"Ϊש8Ç1,¹7«\çÞ¬vx3 aih³ºuªÍ0‚¥¥Í˜5µ9Ž`iX³ªu¦ÍqKËšaKCšÕ¬Õ›ã3)sfˆÎ,Z(³ŠuªÌ*ÖêÌâÕ‰2«X§Î,^(³ŠuªÌ*ÖêÌâÕ©2«X'ʬb)³ŠuªÌ*Ö‰2«X§Ê¬b(³ŠuâÌqôJ˘U«cV¯NY½ZŒùSMr)¿­µÚ6Ó$—&¹LÝV_ç¥ïѧ޴<> ((»>õ&å ~œTj‡nÎXáÙá’0qʤ>6N*µàÇÆ‰SVx¸FL*…Ç`â#`B¾âº0©ÔŽ…)'NYÉ9à²0qÊNð·“J-¨Yœ8eN>á1©Ô†úljSÅËW 0©ÔŽ~89¨ÁÄf–sâTßãmñJîûE N,¿’™œCiÊI¥6”?Nœ²²³ÃmǤR;Š'N™žÏ¸FLœ²²sÀeaR©oŒœ8ezÅ)'•Úp^9'NYÙ9à1©ÔŽȉSEÏáR¤Ä©½Ç┓J­(€œÔhz¯X9©Ô†ªÅ‰S¦èð:œ8Uá²0©ÔŒ ȉSEё¤R+* 'NYõÙá²0©Ô†ȉS¦èðˆ§LÑ¡Lå¤R j 'N•a}¸õ˜TjŶ7'NÙÓuÀ5bR© 5§vú oNj2I‡oÕá¤R j 'NÙ oÇeaR©…‹§ÊÀK\#&•Ú±õ͉SvÜpY˜8e ÜV1¨Ì‚e+'NYAÚáú0©ÔŠoY9qjá ˆ’JQ„3+W@”8µuø½UœTjyÆEAàÌÎõ%•Ú MÓlv½oN*Åå%N™ŸÃýg.~Î$n”ÉùŠÌBÆ8Í#W>g4ráC‰Sv3„OƒÊì肜85sÙC‰S —=”TjAäÄ)õ—…I¥6üBNœÚ¸ð¡¤R;Ú 'Ní3]V”ÔÒqáCI¥Öãç†#‰Sf먔Tj#µ Ä© J*µã[Nœé§¼9qʤpÂ5bR©¿P‡§f.|(©ý˜7'N-\øPâÔÊ…%•šI0(qÊœƒ’JqáC‰S&0®“Jmd”|H—à=Õ| ’ˆÍoº×ˆ|e®àš@b&äm³9ÿû&ÊO‘Oáw\îàfÊ7qRÁÜÌlÅ=L¯¹ƒ›Áˆ{õjS^Ê/nå|O§¼ôïžò²÷÷”—iÄ)/wïå:j§ƒdTù•:õNêšòrQaÊ˵ükÊËIÅ)/uMy¹¨0å墮)/¦¼ðêã§¼LvfvGáñúS^¨!fÛ»š³OÓ}­œÁ=ÁåÞINhÊËtåñ㦼¼f«îц{´á~ÛpH½¨У ÷hÃ1õhÃ=ÚpL=Úp6RLm¸ø¿·ûpЬûÝ·áÊûpÐakµá`AÍ>\\Ô£ ÷hÃ!õhÃ=Úp´Æµ›È0(©Í3û’ú´Z· µHwæÓjÝ©O«u'>­Öú´Z7+5)wêÓj݉O«ug>­Öú´ZwâÓjÝ©O«u'>­Öú´Z·ú´ZwêÓjÝ©OÇ¡. †¨eӪ܉M«s§6­ÎØ´:wfÓêÜ©M«s'6­ÎÚ´:wbÓêÜ©M«s'6­ÎÙ´:wjÓêÜjÓêܹM«s'6­ÎÙ´:wjÓê܉M«s§6­ÎØ´:wjÓê܉M«sg6­ÎÚ´:wbÓêÜ©M«s'6­ÎÚ´:wbÓê܉M«sç6­ÎØ´:wjÓê܉M«s§6­ÎØ´:wfÓêÜ™N‹r'6­ÎÚ´:wbÓêÜ©M«s«N‹rg6­ÎÚ´:·ê´(wjÓêÜ#aÎS.Ój܉L«r'6-ÆÊtç’Ë´øvêÒq˜KC¥Õ·3—ßNTZ…;SiîT¥U¸•VáNUZ…;QiîT¥U¸•VáNTZ…;WiîD¥U¸S•VáNTZ…;UiîD¥U¸3•VáNUZ…;QiîT¥U¸•VáÎTZ…;UiîD¥U¸S•VáNTZ…;UinUiîD¥?Õ옩üŽm3ÍŽÂì˜îÍ7Í…šÛôvíö>.´/3HËík(?ÅU&|ùùV¡u•ÒOûy÷\æÝ ÛÓןQJ·©úyæ}_×áé«ßÑw¦šëÓWNìÛüôÕ¯?/U^)ÚÃ?üêûò/—nèìïoË?Üw;tOÿXà®Ìn~ú±ã¾óbÿÐ`SÝu.«,˘÷ñé·aí?~~ýù‹²ŒÞ²=}ˆoÊ?쟻nò-íÖn;vË„|˜÷kë øîØñ}ß¶åé‡Ï¿°‡m‡­:²×Æ}ëÿnëÆ§_Ýį ±vÝ´=ýð«c³}XO?»eõÞ¼O¾[Ý2m°[ýyùá¯~íhÔ%ÏOÿG8ßÞ;øsß)»— «»ú›zø¯c»ØÊž=\÷í鯞,íömZŸìÓÿêóòŸ¶»” VÖØ÷ÛVF–|a^½Ëúæ o}ùs;/þ¹-Ê*”®[ž~æb·ºæ\™óãqP Ùúù8ÚݾÛS¡˱ˆà¾ÇôoçôµåCø?EºÍöã·åÀvÃ6ð™þì8(c¿Ãgú‹ãÐï›”îó¬ìýœýV³Ø]©óÝúÊQ¶È6éÛûÏoî?¸ÿ|¾ÿüÛÆŸu…p¹Y°­æÁuvŸ/aûôc7Ù U.¤­œ´ãÓ¿þ|XËi±>ýð‹ëCÉÇÙ4 åŒûÞ1—ó÷×þ÷²/vìÒ3ø›zíÎý6ÅËçïË*‡ÎÎį}£íØ_‡ãlˆíжÅEÿp\>cgêV‘}°S9?Ž¥¬û`WXÙ¢q]ü+ïï'_ߟí·|NÎ{yܧ¤Ý‘üXþC¸Yù>Œë0ÓyV¾rxÆëûëpA~UO®m™Gÿøìù>>ÛÎuÊÅP~oÚ|ÍÿäøGÝúδ½±»ÿÚÿÆ.üu²Rá {h•¯ðsœ£‹]ÓX.×óïìœ)eu¹Ïÿÿ©»÷lCK[ºšõ<û¯Âþþãýw²µå·6í“xËÖþyù»ÑyÎMßL:}aC\Xù…¹ÑÌ¡nÅVïë´9¼vxœ6û N¸÷ÍÜ–%=(å`×năò?ây"åøó\ÁwÝ%œíû.Â¥.WªEã1R¯ü›ÿç>W²cw\+Ó›/†òýM]=;~é‚~Z§ä•Ÿ´«ðܨÿÆWÐ[~&mË:œì/xÁ¸·³ýUFèõ¥­³Öxû‡_~§Ðôáÿòx€¯v)úgoÏøÎΣ߼u¿J½4n#|ôa¿ä“/k‹Ÿüh—Óyõ“·ÛÌ >ùã"÷‚#?ʓݖ²+À÷V÷Wfo{TÑ©ù_—cÇÝîßùßöîë´+M/‡?/£w—òãᄄi·u¤Ç´4ÆMÏôÓrG¶O°íÃHçR6ýútËŠŽõ¬OÿìalÎþgHýÏ?¿ïþ¼Ü­îÜëÙäÏ¿ô¹i>+O>hí¦ù üÞÓÁêœ?ç ·ï‹2pxXÆ7_Œå‰˜<’°~¾j¦RÝÐSŒ³]ËøØû*ù¥<¨²)Oc¸­¼åi1ZÍ?lpciŸ,&&Ü×ÕäUñ:®¸c^”#úáxoë°uÔV½”þÛhEo(T¿õtÃj%ÔWu÷Íß5Q· ¥*±ªÙÜÝV÷ÛÛ-üðÚ-v»VV긿¡ª‡-t^ö÷<¥7¶]7åŸØZL<·nõSzÛ÷e^K3•ï ³Bé«óÏÅʲÍûPë[ßÕPÝç5íß^¾Ù¤/Õ¡»UùåÛX¶}EÇ»ì¶= k)TªþÇZíëóµä+Î_ÜDõ[á¨GÙ?5/ÛÊ™i¬uÛVŸÑ ~ð:ÿ¨Å¾÷zwéc íÉL¥ Ä/Õä¿<µrò*¹·;ì§ñÏ}ÙÕÝÊFO{yÒ›a'!,ãÿ;Jæqî\Mr&|WQf@ôñ¤ÿê?Äú<øh¹éØ~À¢dU¥Ý·•Šïc7ì Ï„PˇkóßL+ÏÏÌv?ºy=ÅêMî:UüdZ–xnÿì6âb ~×àƒÝ–³©¼l›î'ËK-âIúï5× d6Yùá{:eϵ j >”`ÖÛTÚóhÛQ ÷J9“­|úòóÃö­æe)~Û“aÙ­2X7(oü©Ó(o®¯ÔÛ¡#¦äÛø÷ñNôu9¥ÊOqÏpòø1·{’­â«ïoŸ‡ÒuN„^Køhÿ#Ü–ð \Ë«ÐùéWÇ ]þúáW÷Jàþzm~ìåÈöq5å4ðåíçíéXÍq{ªuiÐÜË®Ûâ]Ž.ü×þÃ7iérŒ‰¸ŸóV8ÿõú]6òg¹ù-ÿ(ËkŽw©åõïúŽZº¨åuÝý¾;Zy-½¯V¤µ70­õž§u]Gܨwø»}VÃ]þÙç_”oíÖÝÀñÔËÖUt÷~xËJÈ ¿ç®t׿(ïp–úüú×w›*÷éCÄ¿M[.'üËz‰zEQŠ÷bj_þŸŸ}ù?üûzÑÿY*ó¬r •ðéÔ*N´ù}ùÚŵÓÏÝ2ôQÊMéºôÞb7ŠòÂÿúþêîk¦'ä’¤ì®b*O ;‹õßxû4Ô_zo£³|Åë~UnõtX—]›ë’¯y(ÃDNü¿GgµÛÞô ûö›»ZÉ Ê½|íÚµŸÛÝÃm·›Ê»4·|ëä|=þËûÖ•ìÏô\l„ûR?ú£­Øþ{ïÏÏâôþÜ~¬—¹ãÆgeU}V^.¿ÿgÕ[Y‘V{QðÞ·ÒéÖϪí¥Ég…;A—à¹pMýçÜ”aßZFKð:ü‡»‡QŸ\ƒÕMøf£v;û§ÿýóm(WMØÇS)Ô_ד/>Tí X»ù)TòOþ¤·§&Áw¿Ä ÛHxÉhÀÕ_Üå*¹!µÚè)´=ãþ§ÃòÎÓACzª?CÓÐêºbý\Úám—úùè½Oe¦î>`u•¹£]:ÿP* »ŒÖZS–&4Èʸqð,K(½EÛÚõX~åoÇÖyœâ¿dßJi7ÇÒ Lò«¼Ó2•œï]Þ÷ÐÒÊ|Ÿ¢?Þöoàßü´<áË0ƒáiÈ·«üw(ÜŒžþ[;±ççRØbÒ5–wèëµOóà§¼:<^]N~Êû¼ˆ/õðlá—Oelè0\5˯îwG_ßþúþó鋨Ÿ§{0N¥w~ goeŽ—}}W^I”í+ßÜYÞ\þË«L*ÏØrBÍÛ:‰ŽœÏ•/ÊxÌåxê߯ÿæhw­}y¿j^wS«ïFۇ㵪=Ôon¾¿¯’o~âM“­Ë{ÃiìK‹9}yÛïoy{[þáÖ¡êú+Û¥¼x‹ôÏŽ iv¸kþlÈõÚêçeÑVöw ¤˜òJ²(øUÞýìþ ¿¿ÿüMz~|›Ÿ å;¦§=ñä}óЧåï!ß$[åˆ-¨Ïžîû/¿ÕÙ§÷¨´`†ö-ÆÎÈò«½:ø 7.û¤G;YÞÏÍüþ‘NÚ~ŸËÛijFÑh…2y,ï„×%î¡]Õz¥XÜo›žË;q|^–mçüÕ¹\ë'[co¹Ã)u¾©Ýñ±ý÷e‡í_ïEØrƒA_à÷Ẍ›ì­no¼l¥-?64¼¥õYGç¯ïþ6=ËØãmÍE”ß«Àq¸ýÜã·ÿdÚVÝm“Âm^y‹;,/RíùèšcÛ„šÇ3 µÃk§þy>ÎØŸøŠÇ@ä7fÞ_»Qo庤råݯ¯Ç—ô‹Êû:»ØRo½(ßô¾løÑÄ-äׇkyÕX¾<»4¦Ž2ø)q¿>†*ÏÉêjÜoÝy¹wüãs7Û²>_ßp±Jõ„ÙÛ}O/ݾ¾¼"˜Ê@šažáy‡7<c%h§…ýC;÷÷_¤}ë¯á²»®ÕF‰ÚrùU[ÒýŽäϘưà+£Ÿ”[žoø¢á¾mzɺmsy¡ƒƒÅlgFû·ÛSl ßï¸;»ôó4®­[Nx÷ãÛ/;°¥v¹\ï×ì·pVB+ä:ïßùn{î»~yëMâmŸÊ` Ÿúæ‡B—M¿vë+l_Mqê4¼,Ù=Tíy× 3§PåÞ/…]Ä÷ÎŒ~ôF~ùø™ß=}U†ZuÛѰúu_iáeÊ·ÎnÝÿî-Ùb|úÊË„¹[¡#]øÊ{Ìo°‘žépè5`Y %@YóhÅrøUXÝWåÉÚÙ-®‡•øÖ-Ã8|ì%²›MÜcx°£ü‘¸Žýp ú°ó|ÛCyx5ÛÆÜÑ«Š±üœ{ ï¶b…N…PÉ4†¬ýÜ?„¨P?x´Ó°½2؈ùG_^)Ó¢§e–ãšf*0 ]wYPbØE»­«ÕJýÓ?÷÷ôý8͇:Y¼õ+ùMI—kð©Ýá­¶ÝýgÛ„­ßb ÙÉ÷µ/¹”Çô!–¯S+uz£p´(f¸©Äá?rS1ýh¿·!ûrÞƒì`~ùK]`©ö°¼ñèMŒO“o¸]Ôt¡^»öUË*üMtéWÆ¡áÿÑÕÄŠV׆K„£Š7œë­7pwzýR^üàûTVÅã\˜kC`Ÿ¬êùžœ_”éÉ£±Ðn—Íï—wRß­+ˆO˺ÇEüõ½àÆ ñüeòÑ6 ûêè”C±}èXñëRTwô¾Ý¿¼›ÌÇåS캟beÿ¯½Žícá2>KÆÒ À¡Â÷'>Òxúá{ÿ‡¥Sü±;sôgæcÐT³gtögZƒÊàÚr«øëë .žÚå߯öðåq%—Ìx1ÿ«ûCÕg^oºÃÞ7wîûûYȳÊÃÞîcm·ÔªùjÑÆ'€7!;Ü0®åëûf~-lÃÁ"%,¥Åá)øµÇe¾ÄÞŒwš½€ÇALgkmpwvOFs{õ½ŒÓ^¨·î4gíBãîýíÃöjEÈøÞ‘TÞêí»ð¨>Vbã­oÞ%agãütZ£Øïóûþ+™x@¥Ø]wòñò¥eÀ°míXuü±Çã0ÖÉår^KßùûûÏßÜþúþóÛûŸýÏwúÅ~{§¿¸ÿü1]îQÒëTˆÐÝÈЭ3(Bcò§÷Ÿ_ÞþÛûÏwÿù÷Ÿ?9·}‹kûñ]+Àéö†Íéßµ¶¯ÓSBÂŒ¿NWüÛôüø–£SÆ×£süùïî?ÿâþó'G©SnxVQ¬æÉvÁ7¶ü›tó3lÍ?M77ÿgaߦÛðOÓ#Øð ~—nïÏSö#Ï-óÃóð…ëí»û øúþó«ôjù6eð|ÿù·?ßzÅn¯=éÞù§ôX¿órÊ?ÙÓø‡w±ù;®ŸÜþ,ÝÏw¾ù!ÝÞŸ¦Ë}ÛÂŽ‹ìÛûÏzÆÈ£¤L[{¼…ÿoǃ¡+¨óíbm •¥i¿ÙCî˜ÅxÌ~òº­ü]Þ/½¥&(?½ ¿ it±c¦Ö¼oÅj3z\âíßÂJ®âûǺ>óéhªÇ´²¥ûˆ[ s/Ëw'uËï´gQî=cùï}z÷†Ð ÓwŒÃÊHÓ8)¶5Ò´áÙø¯Âü6»þïi—kO²þÍÇ~õëºégçãœêÎÌýñJªt7†m}âW=uŽm@¿”¢üx}qt'úèÊqÔÆG_^½³Äü¦Ó2ÁσÒ¹†ÚzË›Çûôm.V^JÆ-ú¹åô¸*¡½F4Ç >Niûwëa9ÇtH;¯ÊxìûØ{•w¼r:tÄÎô•G2ý¢Z—o¼€qõÒlœÒÕ(ë9½öû˜œÓ>,UjàÛ›í>Q¾2Ýî=vÀꯧ>Îÿÿ™5»Iendstream endobj 208 0 obj << /Filter /FlateDecode /Length 2645 >> stream xœÕZKo#É ¾ëWèØJV½õ~,â 0$‡ltÛÍA#ɲ³²4cÙ;³ùõa=º‹Õ¢Üjc±@0‡á´YU,òãG²<Ÿç¬åsþä¿7O³o¿r¾?ÏØ|?û<ãñ§óü׿iþçhH_ZÏ<Ÿ¯îgi)Ÿsn['ÜÜ2Õriæ«§ÙÍy±d­bL{Õ|Zôâz¾Kï•ÕÍn±”ÌÀ¿Tó*‚3i\X)™…¯²y ¹•Öa…ýCØC{o­h–ðÝr¦u³E_ƒ6wž3Û<…ÏÂ{ç 4¸—¾9"íó¢Z˜9EÃãÍú6ôžƒ%íb©¤jÍ_ƒgÌ2×¼¤ËÀ¡° |¶Þy.WtzÝt/#´>þpR›æ>K&¸PÕçûðÙ ã›ÓsÜ™1åzç9×S­ZãÀ]‚¬ÁëQNŠæP ÍÛ6ô”¾‚þÚŸ÷K¾3|{ZÓ/xóŠ<Ýæà×3ï”Å>þTqXü{õ·™ä²UZ®V[@Qo•L€Êw‹{9¦Dk„׊ÓGà@ïãËî%ü­•s鬟Z·Ötц|u›Ã%à ‚wÛ{1ìÎÁ]ÒØ¼¹ióUD!cÂÛ}éàG1ˆJ¤ûÝ'´± ×¢cIœ:骚ƒ5—˜Mæc eNYc[.DïÞ ¬ô^;ïswE\ñ…Th‹¸'7{,âv‘M“´öÈ&!˜­Z°7X‚N>‚yÔ%¥o™êïx m9ã‹QfÁÉš÷V}‰‰žò?¹[fꔎVi§+cÃé‚içE&Ÿ¤š“Šö1\À`ñÎù¾Šë¬»ó ì*°f7¹L ^1•Äx'T4#ªpÛœîßÎRp×ò‹œùÝ„ÔA%ŠÏäW8M Ù2ðÛ]7EáǦȇ"žŠø¥ˆ;ò¸oJX_‹ø‰w$^ÑR÷H"eÇC\ØâÆæ5yà[¡,]¶¿UÖ‰…¸‡„¥Š‡´QÂ. œ¢ ´¢:m ê¢A…$J9¥š¯iÇ#Â*F,ÎHPÀÙ‰¶HäV^c´g÷}¹XæÙ`g¬?ŽqÈñÄyÐJ85ÈöÀ¹Öç…ÂZ ¸Ë_NÂÂV€ŽäÞ9·æßâNèA Í ‡â  ¸—¹E¢ÅW[?Ńã«M0ãïÏaG ‹uCØÜ»Ê…ørŸKWñJ·Çâ ˆ]Ú:pBˆT ´)‡â{Ä6U¬)ë­”ç6SžàÑiÙ@e€Œ1ÝÞ‰ ,8ó„h’20P—ñ”§"~¹’ð¤UúT%:‘uæ…ìõá@[h3Ë Å]o9ÐCˆ—DÁ 'B›ìªîaà%¦—÷FÛÔ÷PV)5t:e]:Ch !‰bÊÇ•.oMnV5Ð 23&n9#öqS”l3ÚµE!k þz‹gpHÙì‡$œÁM1ÓU)qŠÅSúªv®ã à T7üù"®ëõ‚Æ!}u\Ū”uO±³·éÊ÷¥³E4Wqì•Y"®dž›pÕÐiyÑq–ô[@ýDô%m1 ³NÅ')!^¼©GèvÔü¬B÷[ù¦¢§Ø¨C Ù'ߦhÞ4ÊývÖ­{ÜÎæ“¤†°BÏÆ÷M„ ‚1‚ÐYº Ô@ìÉ^¢-âØØ7›ÜåZOWï ¸½¼-nƃǦÀ n %ã /b©ŸÁ÷7²&h®¯£4H×úЕ…Þ.+d^‡0p\ÄŽTTSmEB} ñ¥¾eN'{5HÒnçA_’Zà5npS6B•vâz_|"[õ%÷cɘšØ`ÐsäÉT s ê]¤Î׊ˆp¿Þ§Ã6i{ÆþFjÈLØ$DYË+$Š:½þ0‡'ü¤ ¯çi´Ö‹‹zÍ—¼ÃðSÁ<¿qEæZ¶#SEÉÖi×÷q*¸DØ1»(åbÆž‡®çéèÕãŽÎÙaé m5«¸¯Å­›‹ö†@ _ˆ0„?gj€¡Äå—‚˜´õKAÓT{“îZ§|õ &Ý0uEñýD⻢ø§*d˜Ê嶘Æ9A½Õ[¥ }ký‚×ûlÿpÑìç"\ÁèX¨`XÕ? =âã€È“ öÎhyíȆ0_Ù–qÁ±¸MöêËwH)òzvëÜ‚) ;<Ѩó Ô¶\¾~:úö{p0npu«™ñï³Õï~hþX¦fTÒÐôûXÄmÑýCùº$çn´šªQ-}*¼ãé§ÌÄÍ. Ø=ÓÐóÇ™´‡núÏä×jöÏîqøe 8/ä²Þ!>v)’âö{@ŒŠ-PÈ´÷’^<“O'¨Å¹ö²Ezß¶¤Š:cSuGú 7m.£6^FÆ[“1œöty°Î§Å‰­-¢.â7E÷P¾¢AïXÄ}_ŠøPv¸Kµ Ï$}K+‹*T(tpꬳrÝxà$Wá'8¡ö*¢ ’ÿ‰ÔÝ0¼v:RœŒ­ëI]ëìNƒ3ƒEqÔGÔÇ) ¦-–ØêÎGŽñ@”ßlÞy³Òôâÿµ#>eùiï&Åw–ŒÞ2úyGnváÉ!±¤ß@ŸC½éØä™Tý^E) eEüZÄ;’æèeÛKËF^°LyáýôW5¨!†a¤XðÕÙ™LŒÿbfíSeäý¤~®¿+L‡øÆQSMê÷ Ç"þLdÍžT@;lH…3i9¿âùŽä^H/<‘.=’çîHçU_ûðožñÝz š`F©5Uh‡0jv9B¨Hî«tƒ§Âãû£Ò…áõJ€FÀIÿ.ÁaIž†ñ'Ò{ôofHŸžHŸ~×#]wN@¶ø"ò"&ŒéÖrÃÄ€r*µÁŠe¿¤ózXñú(zß®†à|çÌ@— º:ž ¿V8îèùâÚ2Já™Ü—¶Œ.À•éC4°ð¡º0Uq®@ ËÆèÿ8Jû©‹\€2ùä˦˜î^be ¸"Á+K¯døgn>‡¦ úE¬ãÊ1Úê"‘,=£6ÊÅÒùðߌüø¨WÙˆ˜qÄ\…u‘ØÕ›Qi#'󤂳Ñ`?ö¢±Qc–»ÝFA*˜1-wÉãÆ"`Ž¥°Ý樂˜ÈÆ)Àäø0t‰Û©†½ÉF5æGFºt4ch?N@£&G“PA”½£ ®Ðr³æ}6² ~´äÕÌ;2ÆŽQ¹À®»wh/ÚweŒ›1Žôíh‚Ó`0ý‘=ŽÞíÉ3˜WžwQ¹Á&ŒØ¨I—ŽùÙÈǘG’–ë Ϋ*éƒ,"mHq†¼£ ’ÍFtËþ±ˆ[¬»téwBнÖã{NáHz™¤ÿ󤕭³r¾”07Xûà†ËÅê?³«Ù?áÏÿ—£F=endstream endobj 209 0 obj << /Type /XRef /Length 184 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 210 /ID [<3930cea7b2b92a39404a1c6c7cd5a9f0><0dc120a399be0e72ab5dbfdaaad02fc7>] >> stream xœcb&F~0ù‰ $À8JŽ ò?ƒ@ÛZ ›-”^5Œ¦‘GþgPŽ¥Q'PìKo‘¦×A¤`8ˆ‘òA¤h ˆä "Y/IF±Ï 6×ZÉÞ "ï€HÉt°x1Ø„‹ R|ØÌ] ’l&ÿWÉR Ö"™„Àj‚A$›ˆ–L »VÉ ©¶— ìƒ4pŠ} Öµl&ØÍ2›@dÎÉ=ŸWü Ý endstream endobj startxref 189266 %%EOF surveillance/inst/doc/hhh4.pdf0000644000175100001440000057256512617067303016065 0ustar hornikusers%PDF-1.5 %¿÷¢þ 1 0 obj << /Type /ObjStm /Length 3939 /Filter /FlateDecode /N 76 /First 625 >> stream xœÍ[Ysܸ~ϯÀ[ÖµâˆTj«dÉò)[‘ì]Ù)?Œ%Jbv4£¡|ä×çk€œá1²)ï8JÉc^`£Ñøú¨˜`š9Ï S6g–á˜c^Hæ™7šå,7’&Enð“Zj&%“6wL*&½Á¸•Üáé!SRá¾cʼì™rÇœiI了Sýå™±ÔX1“;5³ÒÒËÌjb–YcAÜ1ë„fÊ3ë­d °ªsÊZ¦sLhÉ\ÐèD1¯Žšy¦´a>7¸¶,WÄŒÃè¼fÚ³<àe³ ‚bx5 Û,ø# x<ÄPCžCX¯xÛLd±YœhÐ709âqâÀ™Éq<î@r`VÐINƒÄ‰T-d%-M ×c0Z ÂhÊJ´!yKP³ ¬T€ @YôH¢U6Xæ@Yypå@YaL fG€q§iî0I”Á)‰ '&Ï$.µƒ€©sðã@YpáI# ‚N0pš^#}ÉℤJƒ×€œXà€²q ëAÙxôˆ›`=¨¿üãŒÕälRM0€ßã¯nªi9+–@^¼>œ\ऋ×_® ÆwÑ~:¿`¿üIìÜT—óûéž,ŠIUÎg{“ª`?íý] i%D‰‘*ü,ä_…økÓŽÞÙ›|,ÏØAÆžÍÑ'žºúèëcͦ«ò5+¾îÄ×ïûºooêcMÏ×ô|M¯Fô¡ánw>«Š˜Q:ÑdÎÊÉÃùg°G½뙊¦)ƒz¾§‘,ðB™£b9¿Yœbl4°GŸ«ÇÇÍ© uƒý9‰?Øn‹ùéqQ6?ÜÛ‡pŠÏˆþòK[NÝ©ÃÌí—‹eÅÒø‹ Î¥Käë–{ŲZM-?yûŽT;ËÙ<3ßìf:%î_R‡Òúýq,µ.Ôøy:«"êéS¦’¨Uê_¥.U¢ ÙˆpŽ4ÿ¦ˆÊþtrAZ”ÂÃCñ™䨧÷éá~9-¸ëJ^N®ŠþÄ=E”WžîÌ.àó0Sår‰iŒÒ…)Å㪸ú•‚å¶ü[“9Æþ¯GÇŸÿLñ—hCõ  #ï!ƒlÙ›p`)¼‡’Ûh¦ïú§ixl½¶ÇU¼£u<’ ÆþTýn¢"꣇[ò‚bxdHp.§t@QvŸi¸ ‹h‘Ú"³BœàÒ;t×4`?htDCħR¨DÄdþ‘46pÆÍ‘2»æ~]«Än®kñÕÏé¾F´¢Á‘Pš{Ô9éi‹vEomEˆ—+EØáù.ßãø>ÌŸð§üÎ_ðþ’¿â‡üŸüˆó×üWþ?áïø„O*þŸòÓùt>ÃÿWW~ÆÏÊbQ,Ë%/x솳3è/þ¸™Lù9?Ç¿ÿ>ü×0¦ü‚_òË/×—ÅŒ—üßüw>åW|Ægȉøœ#Ká×üš¬ð´8¯ÒÙ"’¾†æÎÏøõšúÿãfNªL|É—ÅU™X[AzY~æQyÅ«ËEQðêÓœßðüÿÌ¿ðÿðÿ‹yGÇI@›tüoF¤§HƒC”cOÍ[!PRó®ŽUs+Ǫù£ßŸ<{ú¯_wô9Û™-ËõµÆk3 «Ä@ã79ƒ¯ÚšNWÍæü[¿ö»ëãðªß¾Û_·Ø@iøÖ×¹Ëÿm¿¾:(1ßùØÌ·êx'G_+åÃZ!I £þÆßBõ†zW¬5,êÖ@±µ£Q¤LÜàø’V}˜&º›þ¨ÐèìYWÒSKUˆ£«>u6ÓRŸ¼ûú3ùÜ’eW›èNÒ&ØíÍÊÄOjÙ$NÍzsðîùÎ+týðDª‘šeÂP³Ô@³äXÍB@Öÿ}˃z‘¼‰>œþ¤p~&éX2ü E2FÔŽœ¡F>™ºÖ21@Ç “‹l˜2Ƚª#|¯ïǬZÄãÀ‰Ž?rH[Ð߇:ˆŸìð.´Ëž }\~é€QÈÕ bÃC¸oYêQöÁØCÄhc®¿‰?$³_ͪRP±Îªj7Ó®­ æÌD°Ã¬* «±ˆ^|f<ç29¸2i͸¬ê»S=­LFðé1eêéSÆÓ1Ü/SRº,'Éx0'©¤k 9&]&1ß÷Ô•€¸âÉ#G…ýØO}HÕõÕ¦dPHÁÃS½çŽ9‰QàŠ ÝÁÐ;›gögW+CûâÕîΫ½˜ uS•Ƭ̫Z×з®B´®M^ð {ºj5®ý¶þru×7šÌg`l}7 ö,ø%ÿ°˜œ1ˆg)˜Ëe +®n¦Uy=ý‚0úªœNãâdÌK|hÁÄ÷³aÓ$¡+ÓÚÃÀXÓ _52N>yözoÿ1:8xÚ™îƒlC>ÜTã¿Ã‡;8\Kk_2%j£…&A dÄ„x·>)¦Ez‡DÀ©¶×wÖÜŠ€öß:ÿ%y­r`ÛogbÊÒÿspû6¿½'«hQ?–Ék 9¬—ÇÜ:ò m¥ wOTŸÆD èôú’báE5‰q …‹)® ~1¡« Zö*1±œN®>œMe>»áó«âb²Ê /KúI~㲤H·¼ÀÛM¼#Üq‡ÈâSl 3CÓàlù"ÇB^äc!ÿë“ÇoÄ:¥AÛG¼Ú€xÝG¼tc—í¬úv¬:îO…»V’œqwhM¸4j¨†Ê.ù¦àÕt0/W=®ÁØ‚0‡µ’šÛ@dÒSçM¤ÜQk/¨;Ç£14º¼ðbÿéÑËwT¾è@¨ ×FS!d]D Û£›ß¦çMÑz[Ä·ñ ð×ÀÍs;“Ýdþ¾ ­Vª?¾b 4k’žA ¾Jz¤–»a©šåÖoÂXcÖ¾¹±S·™©VÒí†x{õæääéÊ÷{nºAþW×Z”®ÝôØ`Ðæ.¸ÓÂðÑÝJÙù‰÷¨}û}Úrä…ŽÎ̧ò·Ž÷)SjJXyHï¥"fßé[‰ÞŒñלSßÍuä;òB;Zrhh,4¬ø4´E .GÃÑ[Þ#jÈói÷žP»o¹qòýzó£U­ù€Ön}cq«]K>_Õ{¥ãn…+Uµßº:pך/ YSóU›<{³Ô¶R˜ˆG× îT§Úr¢ §“™œvIåY€¹PÙ/ààœÌ¼¿§”\!¡ aÍS®²¾ë~yBòƒz™g¯Ê}FKHð1éÅý0t&b–‘˜ÒTˀĶÀÔWJOƩ̒)2“0}¦¼Í˜@•‰CR:“Ê0lFvì^$¥ƒÊ¼‘€–ÌB£³ i‹%Ž0g÷S3iGÄŠ)¯3eüaJ˜²ÞgÐü~åICé0[JûÌÐÖKNÁÂfä+î…§@†`Å’R˜Ë\Þ‘¥U¬ñäÉÛ¾;‚™~tÒ5š½1ëX#Ød3X"—cÌhÙëñ‘g.lüm3RíÿÉ~mbÄ+bC±Ét¿é¤ï«BÓÃòâ¢UlŠ—«E©««ø0^.&gåédŠs¾¼A`@ëSgåòz:éææÁ†Í>\ÔjO\õz‘o˘¢äËCÛˆ9ªÛÒa«CL¥¹GxÛLi© !³fJÔJs¿L{ `Dó–R0n»8oÒ¸`…,UÑwYà%÷‰G1–©¸ÿú˜ñ7GOW âç!éÖO—UuýwÎ?}ú¤³ÅïevV€êâ#íŸ~w`ß>,ÙžUW§ÐR ÒkC¯tFK<ÿWÌJœ,‚ÑŒªû´OÀ8Úb=`³¢ÓÛ‚Ða ‰¬ê+;¤öÊóó!=mŸÿ-ã7«Ê´ñp½ØLò4ëÌ´-‡­sÖJh8õÆø¦‡ïaƒ*ÈçÓmC¶w~Ž_‰Â&µ¶¥¦Btªa¦½ÔÍfÙ-ö×DY\ei ”¥%Ѹ¾—Ö¢HðŒÏnèS)~]Ò7RiÁ“rZ[¤®—D\&ã õQúÀ¦^3e©8K_פÒêv§£-ªín Ÿhcô”&¦Al§È.~5À@¾ýY}²Ôý’ ~c±þØ`[¢£Éi'Ь—AÇL¼“³^NßÉ ’ëTÔXgß›Ùý/-¡Íendstream endobj 78 0 obj << /Subtype /XML /Type /Metadata /Length 1534 >> stream GPL Ghostscript 9.10 () 2015-11-06T10:11:29+01:00 2015-11-06T10:11:29+01:00 David M. Jones CMR17()() endstream endobj 79 0 obj << /Type /ObjStm /Length 3010 /Filter /FlateDecode /N 76 /First 677 >> stream xœÕZksÛ¶ý~>ÞN'ñît:c;I›©dlçÑvòA–›7²äJT’ö×ß³ )ñ!É”ëÔsÇ#$A`±Xì9» OYʼ`R£LkϼbÖ¢Ð,˼aBI”– ƒ ï˜Z0ï™”eÀ»"e!eÒ˜€w˜t©eA2é úPL¥)JÍ”pŽÔuho™–F²à0hŠÒ3mSÏB@‰ñDš2íUÓA*T$3BSE1#1 @¿F«€ŠaÆhÙ¦^¤ŽYƒÁú´VУ€Š“L@Zë ^G‰ f$æî1s!4Ã,è‘aN:ŠE%PÅ1§Ð™ž9‘…ÌÁdÊœ3K æ=’I… /5ó©  ”)ÑPv æ-¤ƒZ•P¿ÇR …¦‚– ¥Õ€`J@¥‹’„JA™$‚–ãèÊ@ЄPQ†Þ'H(N(RŽ2·TœE_šti<þce¡C,ŽÐ’tgè)©Ü“ž´&5Rš¦’QhKúÃØB;R §7H•†f¢IOÐ-Œ‡”{6Q‰Ô+õ. Ôé“F7¤ýM UkÝ¿~øñƒétV,ØïQ');*)KQ•²*UUêª4Ui«ÒÅòãG³i‘MÑ«„ÀtŸd—ùèpöãPï0 „ÖB‹vŽ7^æx•=óÓl1[ÎÇÙ‚‘„Ͼ?£"‹š žc€¨Ýxõz>Ÿeú毟>gü<ûZ ÓDõÏÛŒz¿ÊpÙ™¯®æ¡«yèjÚU¥ß0Ÿð óÑ­ùùŽY|¿yûêíûÃïN±ù³éxv™O¯—O¦‹|}ãy>_G×£99‰8öÓl1žç·ÅlN^* q<ªÚÐvägË‹"MˆZŽrÜwùeqMÕž4¨£^µµQ3ð^έJ20?'D%Úao*òa¡¼cpýaµV‹1iÑÂÝð£ÑíÏY~u]_B4ÒÑ¿ùˆyÆs>á7|Êgü–Ïù‚|É?Ç8ÍŒúxç '£«ƒAGÑëŒÉAP×ʇÏóI¦àzÓõ ½Ýd]5¿(F“||0½šdhÈOòÅ:Ž*‰³ägEvó6z§†Òúæï«iilÕÞš¾ÿåàåo4ØûÖ¢Ò¾.åZ­¥í/¥¹÷Rz•²‡ÿ3ÎÜÙÆÛÜôŸÁGŠns¯· дp©†ÐˆJéV"(b*ƒñåóJ8íT\ ?@÷{,Ò·-Ò7-ò€ò~–_ÝŒøØç,ô6zÕ°Ò•ò¿²ù¬i¨¸\ªîÚ)= ˆ8bÇPE×P;¶3ÔRt›-µgœ¯ß½~zŽÎÏÃ@‡£7X©ëZ)°}˜•iâ¯ZpÙ¶®öu÷éýZ¦«1»¿´SÛ~½ý;™Á>׋$ÛnÔ´6:LmTDkÏ&³i´¹üV÷)ZÝ-¿Íæùì2ßb2Z\Ëëy–ECüÂÿäµ,Qº•ËT-S|b˧n„옢ìšbÛRº–8úÚ˜`Û.éNi— :w9P°ƒÚFgóËl^³ˆNˆ/?ĺVpûþ×߈-%^’# QÏér2¡–§Ù˜ZêT%øeµE30kf4wã“b­ ö8Ÿ~ªEdc·Pik-”Pk©Bš&:g­¡@ÿkAûdW.„DÂ(5$V=’PÒ( ¾–ɹ|àDÚµxJcш‚cuྺ‹‡Û-iÈè×!!Je\¢J¶öP2‰´oQ ÜI ˜é鉣¤Ø-!j.­L›x(N“ê òÉ3p’Ó«ã"ŸMË[ÿ¾.ŠÛÿpþåË•Ì?åÉe†^矉}~ùäöåMKS ŽáWbE)¬¤xŠ7Ö Tá 7^Ÿ¿yopv|~>˜«*ÝÛú¡Gpòímø¸ï/Ýéèw÷½œÝà0|ì¿7—¿óÛÀT—5ñ§üÎâ/ø1 í%Å_óS@Û9˜Ô[þŽ¿ç¿Ì-Æy^äØ3– ¶øÜ»ÍùÅ|4Î&ÙÇ¢¬Íi¤Xý”«Û¨—j¤ÏnÀÕ.ùål2A'òìåhý˜’"„…»šgÝæ€Õë?o¯³)Ðõ¿À× Ÿd‹E„Ùéòæ"›/ò+ây³iF¸Ká`>ÖÊÁ+0¾,üþÇ>;•Y‘]^LJ”οvºø2Z/§Ø¶‹ñlžEàþJÐÝg’ð'~‡ÐÆo™–)³Àëàbà½-ÛÄð'b0ŠÇ zŒkÙw'ç'/ON0þ©Ê4Cß]t™&µä-¬}Û¶mk¶­¨ëÞXŠ´^kŒõVí Æam/ôÔÝUhia ŸGT³“ΟRŽªiuÇQʲÌ\P®ÈÕuJQVu+˜uÝ1o«:Â1éëºeU. uÏTÝ'B}UgF °~7ÄlfU·”ÉlH5¨ˆQ>$}FG\!Å„dª“Ò$¥J&.ÇN„ßU*)-§I™Ô²¬Rei9V ÉT õwRHGðZó³[8¸˜u-i%шcöi¥‡U7|M¢X«4‘èÏ>ê¾7U5àT"ô©*ø²”¯s°U’‰òظÜ@ öÐB)D†µP^$Áï)ÓÊmþòæíOÇ¿~ÿ2¿¹X.NfÓã'§ÙÕòÕÅ$¿?颣€û².›6Ciºz¨_Ý_¿ç͵m½ljÑì½ûÿ[üú3+k}ò vE-xd®öØq«Ÿ{ÜŠxÕVN5”:íâL=®iRj´Ajò¢ì3ºÄŽ6s#áí6nh‹uÙ^žÍvQy×&kÓ$Õ Iq¹Z m›I8qw¶#Ò$8óGG´ã/![uÓñ?g“ÏY‘G;wiÏy¬^{r8›\¶’Ï¢ÜÝÛ)Á¶øEqP :k,¡Žð‹Žë+Ïwó‘Í<¢ê¿¾pÕ_Ó߆ÄCÍýÁ—¶-½PŽ7¢<Š Õ„ZëP3ĵ¿nÛ²¤h¦Ó®6ã“6pœw’"®¯íú‡†gW]‚ >Ÿ½™æ cÒVÔc£¯W!‘k—5Ôv,= Q/É’Ú3„{³étLÏt)„‰WŽ)')èd,’rM^C£û²HQΛæÙcV<¬áÖä½a¸R6 Wª’5nÓ/Ët­_%H¯n/ý>€å5ík·£io\:—VnÚ¹5C_í\jÛܺˆ¤ÔéÆ+VÛv•ƒ\Ó1Õ¥c]«vìZmš»v oŸŸ¿øíBÏ“‡“HÓ›Šè“FÙ'COyÜŒ…ÿ3aû©ÌÿçŸõåêÙèÝit)žKe“Ô•—ë£ïÉíõˆ_dň_ˆ†-ÁvÚG8bÇa"ž¹TÇNÛÇö2Ýåz˜˜îŸ} Ïbt½Û„5ñì¼¾²ñóžjWÒG-u]1_·’²Ø;M1 IîÂ$iãYGßx¡™¦C4§:" ô}ã`ÔA8Ñ‹E=çk™´†Ã[~L™´¶‰&½Ô2¡”0‰F&+]<÷ë&“„  ¬†K€dLxñ•é7Ool*èDEêX %„2ßD¦áx+§Ok™T“ªÇJ ƒÛ~-˜«‰g—ÿÄêmÙzÎ'޾—ô)%}ÒE_ •˜ðÍsS›·žÂØôua- š=eÚTùÑB› Y†„60Ì‹øAè†PeP §í1®­¨ÖC}£Ø ô}‚;#þ!š¸o07xËEd¡¯›«“øàè#g“”_%>–KUBdÕ2ii“`ÝãÊdT¿ã”&›¢Éí@Ï•‹'*!S ÀFPœHér•¤ð FRœ8ô…–Iû$ЇôµLŽÙO¦þÎyšü˜aãÒNý=z1r¢ê·Wtcóưtà üý&Ÿ.Û_ qÇYB»?ŠLé»È¡ãß9¿½F§`(ÆL,M¬Œš6wþ?—™‹endstream endobj 156 0 obj << /Type /ObjStm /Length 2863 /Filter /FlateDecode /N 74 /First 669 >> stream xœÍZis7ý¾¿“Ú îs+•Z±ËåíNéØYS¡HI9v~ý¾Æ"gȘRäp‹% 0À ^7C¹À$S.2¥ž‰i£™ò’YéñTÌY”{ͼEoXôô´,Ezod°H ²Ö‰À” Ôª9Mu#‰$%(¦šT¨§•Dy0Lk¶´•h#8¦C«Á3$}˜Ž"BdFJ´3ÊQ«’c5ÏŒ§¯¢f&)*2ÌÖ’-³¹OÑ1ëÐQ=³zsÊOŒè.õ3&æ<‰H’¹Hx˜HT”@ñ£’'$+YæC®ãÐŽ:Ç|"Y)°@0UŠ,XMu x´”,  ÅBZj%øÑ,ÅZZ5éý:PÂ#‘è«À"ºD„J$UN,ôŒ²˜ ê(…ÕQš%i(aX"&´‚©§ò’£•g)XÀ¦„Ï@o¥´T=ÔaM •&¡5Ø‘j 椧æÉd ö5lB&˜’&>”Œô…§˜ÐD„"=jM†G|i Ê€ m$¥bø×·ß2q\.–ì7a¥çLüòë[”ñ7Š[3½›LØ/ËËlɹæ«b^N—Ì7¹yù…:ýºZNJöÕènþ¡¬&“b:.Ùe±,¾fß}·*2 Eå¸L‘i«HåÖ…žÍ.Ë »šÍoî&ŲšM;¡G³;|ûêÄC‹ù0>=tòO«9ê’5æª/ŠÕ\ f´\\wz7&6.Ð|1½dãÙt9ŸMØ¢\.«éûE­¾×Ï´ð$œL¸V­¡5kø:2Lo¦Õ‡b^Ë’ÝwÀè+*ªMš ÜÃ8×5ÕÖRÕ;ü YÓél¹ ½¤! àú©š§ÎÏ bgºDû ¦}£þ³ò²*gñ=}å’ã­âð4 FWçåbv7— Vs=™ÍG·Ì”ØÌ5N>.¿- )¹†üêB³h<JbG¼:>E©ÿè ’ŸnK’ø¾ìñH^~@¤‘€ Ÿ×Ù§®¶¤V§­™ßM–Ÿ×›Ú 7ç ONõÅ­›íº‰ŒînnŠù§®õÃÙü²œ7L«¬œ!i…'Éܤ2‰[so3çå˜j%¹—µð7Þ€2kø2k ·)«ot÷n™Y}QMoÎó·AÁrššû |ä)­€Jž+·gPV*›”Õþ!LF[n¬écÒ6ò@År <‰7 ÿ`Ì~0!zÝa2ZóôE ™$0ÐÔPs†›Ô²NrŠ0ö IÙÀ—˜hPH!gâ1Æ Ñ#rø²¼Üj;ÀDHi´5 ´ÕÜz·_PDy2¶˜rdU_ÔW,: @%ËBÄ”qŠ{eœç Sh*DL:ú…E—Ÿ©½Î>“J-i CÏYEá×Aíñd¡¬S„;Ðî)0©œ½xH\ߺ(k(IYš¥á›4éØQì¹Èïê GT#&Þœ?ï*ÔAo~õÕMQM–³ÿŒÊwˆN«bÊÏÊOåü¿ÕÕâö†ßýyÍÇ×_ç(j;åjmldÌ}Ómà@´³FrZmîÆd±(st'Î<~pòs,ÒÄÉt<»D\ÅÄÏÕô`º¨î_äPû躘Õס!øÏ«ÛålžWÉ]ž+)j®BT‹¤üsu¹¼^ä©«ÖàSý|Ž7ÿl^ŸØÒÒ\~ç°4Ò–‚@m®IoÚ’úg@2å.:Í/ÆHDé⨸}VVï¯WbÝ"ˆŠ•¿¯E!Æ¢W⽸ןn¯Ë©¨Äïb*fâV,ÅÝ×ÙrsSßP4.N'Åûfðš©Ã6ÆÏ…S* ¼¨ O«I‰Ä76O¯^7e_­Ï—ŤLß#¸º³j±€N³˜Ã¢CŒ–åÍOXµ¯ªhE½â—¦s«ù =?;úiô3d½~­ôŽ6äô2}"6v²!§ì“ÚÐöIê[€‡ÏZBQcÕ¨ðÞ®° ×+:—ÂMOá0@„¸ô}OÛ©¯ížúê.>® [W>½©•ìåô}|üìå6íì3â&}»ž¾©ÒNêöÒ•ÖiÏÙŽöóMŒ#ÄÁÈé“îBÊ_¯“dŸô ;ޱèw¥ùåóWggõÞuTY»åÐUzWšibnüfLÝßj~‹N4’ƒ½÷ÃÆ™&iÿÒØì§}ͷ͵Íýv)®{mÚ;µ´tÝSç=ʵ(éI{Á¹FƒÍÐ6.(§'½w˜Õi_Uæµ3ôækfTg;3:Çâ¹8/Å+1oÄ[x÷wðïãÙÍM!.³Ÿ¿ª>”põ•˜ˆ›ìågÓRÌÅB,ªð÷Ë?fâN|ˆOâOñg9Ÿ=hˆðœªgªoëÖ³£q*5ŒNýåä° òïx„ôh`‡ª|2à1¾7xÝç¼Gî³®ÞÕ#¼xvrðö'jÿW¿Â2ís×H:rÍÛÔÐ̮Ԛ8 –V¨+ÔÖÙŽZH(çÕâ÷›b¹q¦³CŸ‹Éé1lú ¯3°#Áðç;üýÉá«Ãg4hÒ®qLÜÀô ŽÙ9ÖyN¼ÿ…ð1 )Ñ‘uX.äHÉ­µK9§LóÖ"¼¤Å’‡¥7 Ϲê!s¶ÓýAö†“Ù´ñ†×M K°ìÒ)×V_G…ÁøÜ|Ï*lß*ÖÔ¶««£ú9WÛ®ŸÓ‰e-·{£ò!a½»nM>l2. 6™Àî êÂ:ãð½kÓ†uÐ:´i:ÝkÓ)&ÖÕ¼jÓ&Ÿ)6—›L`¸¥Ÿþøúõ›(;íì²x}^ìlì¥W,:•a«ÚÏoËA•3«ƒ‡ š}ï[Êf È][™U“>§âEžôßd“®çõõu›n-Y•—-½™[ÃͧÜpϘWŽZjcîkfW{6Û¼\gÏì·Ö«èp¹=ç9W2µFGG§ô÷83¥`«5FÚ[mmjÚo¯ÙåSï_FÏéœØó€ð×8Ç#…6‰»h÷³¥j¼âF¯€ŠŽ+Ìzû¥ '¤½¤wÆ=7Éå½$—Üž@%ÃI(Ú¥3ä:ªóto‹Û«cŒ˜wÅr±4µV:pU³7Ó •J Îf¬x¯nüÐEÖg„ÁÑeŠî7Ä.GwÚaC§¬tIãÍÂÌÿŸRžGCWYWt¼Q ¤Í×´ónj{&®ruCÑÚxx‚3ð•óîö^D}ÞÝîi?è¼ûÉɤkXÕµdj†@âAd~Ö"ìÄiCŽ1ʇã°!O%=ëc(>%î½~¨ ©¸nHÐÍLF“êgcc*6Ïæ†–ͳ¹‡¡›v´ižvƒMÆ'µI½vC?æÆS+Ç ˜vZåXÌ ‹Ã)çÑ ¬’\j=°¹# q‰ÓÍ;ƒÙ"ïàÍÿÒ§ñ[@y•˜jAÙÀ%1õ@í>¯B«Ô¢;t¹o¯ ¬­/Èt R#ýgÔ·í¤`(`Ä a$]¥žâ•ïÇìçœYGNþ°Fä4·Ì÷Šˆf$‹ÉXÇ¥¤¥LäpGù¥O™·Š–“wnA9ÝRÝ+(á7e¾ÁJ÷„è†G¢‹·ñíÞ.SÐ ºÐ` ¥†éñáÅ–Ðu^|VÂêîʃ7Nh„ûm¢iñ›"ÇÕÕU‰‰œfîßh+uuÏ“è«ùê>xL«´VE}9bØÜÿ­õ{endstream endobj 231 0 obj << /Filter /FlateDecode /Length 5572 >> stream xœÍ\K9r>øÖ˜QÇjcªÌ÷Ã'ï†׆טÝi_<ëC©_’§»«G¥–,]üׯ$ƒY™-­=€ ì¤ØL2ü"â‹ ³~Ù˜½ÝüŸü÷úñâoþÌæþtÿwñË…¥¿nä?×›ß^a»±yïl ›«» ~š\Ú›7)™=üáñâ§íÕ%<“\Ù¾…G ¥no/wÞØ½¯y{‡­5¶/½ÃS¼¾ÜèY«­Ûølà9ÛïphkbŒÛ#¶ÇZK.ð*åÍΖ½+QÞú{‹³ÙŽ‹øHíÉOÚOÓúb(Þ:vMámŽ]wØš@gqû[Dš !£ë1Nð‡\Àn Û=kƒ´L .ñTf]ƵMºV}TÔÜ.TرdASèâ’h꟰—k4…ecÕ-Ì}Ê8›’t¬úÃ-k4µ¢³­ *v;yXË»Átš2xcÊ žjDe? PÄGZ†F(ùxh}B­à•W7G|VÔë]³z1åTÓÙö8 ü”™¢ŸÖ,7Ü´¯…·õßžVÅU`÷õü 7K(`Ò¤ÈbÓè»iÁiûï0`,Âå ïW´¶æ@¿ï†6ÂãÓš+VûòeEí,tbG¼ì×FàXÔ¯/°æ²Ù9ðKàÑX¿ÿzD½x ßqÎܘ¶}ðgp·;ÂMñs/ÈŠ´Û¤ù}³ë2ÕÃrÌõÈboOê7`ßÉ%ôŠÎïKDD‹®S ñ ¼!xÅ”DÎG­.DöH eö^d¨YÉ-*Ûë>2sT3¡'øf¥ûìĉYân½´u(~™[W1ƈž4¿"C{ï–'C” `nI¯®à¹S_Û2ŒèÕ¢y’A@rxfæÉó9‚0/Ôž©ž!zו¢Ç`?SÉ«øÒß<õÞtCwмÅARå‡ÌFÖrK9GŽc{{f8Ê#¯ÚDš˜SœŠ¶\uî/w!X ˜™2ë\p¦–º"òn9øÀ€¿’a{ˆ‹] <ñ$8ÁsƒžÆÓ E6’ƈë¾h’Cl¿*Û‡,IJ`–bÁO¤=l›{ÜÐù܃à3ßàçn ÷³£,·$aœ%¹¨º—îÞk;âOª°¼öIªz<¨@¬ Înl´•G[P¸tÓSqa,ù§@ ’Dh‚?ïµõ„èšÐêßNÉkQ»KK1hïØ›âä·Rœü#\|çÍ€U4U“ÒŸñ}l=¶«ÎwšL ñJq¤giø"Zû²t+ûzP“«Þ_TovÝ0¥¤lChäÙq;²§íP~s=ÉÈ]Ò!us$›.XD£p+JgšúF4cË05¾\ £eVàH>ÛZçfpT櫸Ô;ž$V;¸ÊÁ>Z° ¤qñ»µì]Œ•Î'=yU¿À¥c5s3p’¶Ëj¼Í#›0꜉Y-Ä6ò⬧sXm-bwÀ‰ìsVâ½éVO®f¹ñ`¸»¾å*ÈÍ<É=],Á^„ð)£•Œ1# ióåµïi+V~Ò_¼÷„ Ð&]Ìín·£®¥ M•â빂Рæ*àó@”a”‡ B»™Y‘^ˆÃœ@HhuÄ^„T±î%ïÕW$Bi¤M·Úöæß‘©C^ÙàÚ±&HKÛþ÷åÕ^à™Doûi{TaëA9¿6|ÐŽä·ÂÚç½W/~Ï] ¡ßÆóŸ.ñß^Ég®u[ætr§µÿ¡êA.ÞÇójŽ»†š‰„ß‹ð5­V¯¦×;‡kä×”óZ ™âù% «´E•žÀ ƒ©îrG vg¦Côa¥¾ø‰j+¸[¬§ªÛ¢O²žxÛ³Š­*ï=>óù†ÔãZ䆇AsƒÓý©Ä¥dìß)€½¼—fn«³ó@çm€øy,‰K°8ì½…~mÆýáõX4èþKxð ­Ç6µ×kâ¶µçy4åé~hœê Õ¿†®utÔ¼xࢅŠòÅ@ÈÍšÿrqõ×?Mú oú(¢Ü+ê¢e.|nëÑw”y<´¿Ï9´Â.½ºyØp6nˆµÜ=,ãl ä…aLB[ &Õ!ÿ<ÞsÿJœlàAØŠúé»·çÖYâ‚0Š.±Ó ûäCâÃY$éÙov>À³ð { †‡õˇ0¨KàxŸ.½ÅðÉu¹Šƒ]~߸™û€ ¸y¹Æ>¡Â~Zvžò|¤f-‚­9r‹.«Ò!3žâøâ§Í¾º,˜hž µõ+s.Ę­º Eô•;Û"d ÆÂ± oDäÒ«yìÀ^!g'^!úÙÈÀ©’L'žùÀTïL&Ižc|â#Û`“‹µ•:ppÞáfb<ÅÇ$¢$à{zŒ‰ƒÁö¶Km•mwzŠÀ4žT9Ê-‘ÞÄ©úiR€Ð­»Ï ­TëøðÄgirÆ‹Dàq&J³k9©²yª™lÊtþ’Z­q&ŽŠÄùm××ùStS6izA»³MüÔ×ùYð8ˆ¼QºzèšUJÖz`Æ'ìÍJáÌ•d<Ø¡”Q‘žÑñÈcS,ÆùV«ƒƒ|]]F’Í%t’LÜy"‰(gIÑOÿÌÔ —áæäCÐPדëÍ>ñxhwÑEQjNµê}U»ErXª[·¥Þvˆ<ùé$ W?ƒÈ`3}³î±Ô‚#ÈÀH[å ðpPƒƒŠwX”;±`ÈB}»\šå¦½‚¯Ñ,'¼×ðʶ\ßw¶ ûÚ‹–À, NÑpmÅq ¢ñ Ÿ9è–BÏk0ñLœÊ¥ð¯¬W‰¥,H¤ƒÀÕD>—Á6¬]sO59§©3I¤´w˜ˆ^`v lÞHù2S*P2WSŸ±j,ö®ÉKêü1L‘ÒƒdW rÏJ¬è±b¡¶µª®'²Cj¦Ü×l!; TÙ ÞÔÉbZ¸[²éÊÝ“W¤‰Gm+}8åBôº§[&£6ä­Œ úȲًûDÃÐËU7Ef Í%ƒ¯gú&àHÝ Ç{‘¸¤(5) ·²µ¢“/°BÈ/"sÈ‚ÕʱXn—’)âmG‚òª33ô¥¨n5œÂŠýMžb7ˆÄœwÉäÁ·NYcLeMƒïp¶­ù/ÇV†{*=øJGûâä*°Eçxpe€1àŽ‘Ã'K‡ëÚË=w÷rcg› \+¸p­)'æq©j•nºÙª •œÙ8ÇjApªsÀ8&ȹ$p6q︿ëZöP“R¡D!i Kƒo:e?]É–W÷}9Š©íy<Ìrÿþwâ×µò)Šä¾†øj ÃŒZWßQü3!:ÁTÁô];°‹ãù „ËÎÛÍ«äL;ù뮹¿v@P$†Zl%S†±NhèÀ­¤¹…=0(b†_¾tYìš[Uàû®³¶kÆ–çlt 9É5¨Ðy§üŽ<ÝmT?‡!ã ùÜyèJ‰r åÐõUx¶S™.hð¾ûºAåH‘O|}ÑnWÏðs?ÃX4o†Åñ‘4ÖÅ •Sõ9Q ‹ Uª ¸â¬Éð0»>£4Œ ú»߯=Fß¶N%þ{¼€vì<‹Â¿÷”œ‘ÜXç°^H aòuRÒ–ìWxD®3ÑR˜© SóÀÐoY@ˆ/]W£ïß)"(õ;ODp ,Ö©ÄFÇíúÏR-šd-ÕjÑtö(Áxþ¹ ¿<¯D>‹ç'cÚ=¦¬°ýxŠÑ]íD³b/Í7ø™Ä9ÍG4´7º†î-z;ܹádp©â’÷°ê¼äÿZ«árÖèŸ5" šnÝhIðÛ’>v…e;?mXÊuè6f[ÆäÝ¢™ê£:Yálï$#èƒ-i BôË©i@í¯òbrœS³|¤@PùDå¢fñË¥€EA c…®»gïZö09ÂÁaã!W¥ÜŽfÆlqf@?ù±aÌäu| ¾žÓùy6Üþ~\`~íX\šÏ2jXÚˆ’~¨ô x‚£#ùpàÐEÞõ.äMñ–3¸ê™7ÕNTy«å‚м áîþ,± ÎÓåºçîc5dN}?§ÈGåÄ–ê|½È0NÇLhÊGt½Œ%£rĽö¤bÑø‘W£`¼ÇH)œË—¦q¥¥Ú5@+1ÇÍmƶ ]:ƒ§I‰þ8b¬t,U–4ð¸Ð?eµÓÌrÖžy5­vìkS¸2Õ©¤eGçy.´ðÒÿ&¼(‹?'&R»á™Gæ9dm̱$¾ƒPN—;Ïj¾œì(ˆò¡„ a©ßÃSñ\é,í7<2&“gôÎã—Ϊ3 /×—!.ÖŒ§s{7²Ø—FW¿¡R÷Ä’ÇGlutÙn½¨i1ù¨íÀ -×—S>‹…8ºúO—qcJ^¯Sñ-ŒE1íœûR¯g°vv’͵nX”.Eògkµ¦ˆ÷4˜}–½ïͪ$iVÙMR %å×F'ªRœñÄ…î\XðvkIÊj²LD/ÎNÔÉÎÊ Ä¼ „:1O›å1'žË=÷ïxÖ–2PÙ¡2ã=•Þp:ø€×ÓYÔtcï'O7†€]å2»1ÔÚäÆlrL·<$^ü›gQ¨‚ŸoöS˜/Ê(Ùu‡lÜP›jÊ© á†4r*È‚‘oîÚ:?³ÂLa„j$ŸÏLÿ a,(}^‹í>Yù¹ wyèò·´ExGʼnr²R޵ûª$vê‹gÔÉã›þxè§þø¡?¾[ìûÔ÷ýñ÷‹³}^l}ßÿnq¶»EÉžûã㢠/ýñK|»Ø÷ZwXŠŸ¡Ò/Hìðܼú)‰­Åô— ãÿ»ýOendstream endobj 232 0 obj << /Filter /FlateDecode /Length 6295 >> stream xœµ\Ys$7rŽð#Cþ û¥Û1]Â}hí Ëa­¬Ý•cWâÛÊ=M9ɦØ$¥‘ÿüf&P… Õ$g예L5 G"/Ôϧb§ÿäw7'ŸgÄéåáþ:ùùDÒ¯§ùŸÝÍéœAkáÉE”§gïNÒ«òTJ?N½0ƒÔîôìæäo«‡µDŒ6ÄÕ4ôÚ‡ÕÅzctŒ«»òt»[+7Ø Ìê§µµƒÚ­¶—ÐÉŒZ ëwbðÞ—;|,­Ñ~µ[oÄ c4ÞâÐØÚºÕºh#4aÆ3ÉÕö»8¡`”s|ì¡“Z=áSC´«÷ðž’0{ !lpÚ˜Õ#v°1z¯VÛëÒ…õþM¾¥­A„ѼÏþ6-ÅF³ºÁF'„©Öˆæ”V@´2é~½úÄ<¬©æ”­wvÓD-¡óEz¬£_íˆqh)T4nÕßÂ-›ð¢Ðï< ç¤_½]+Ó™¸úúè`'¸|تK¯Ùh<ÞòáØJ÷ïÊóÿ9ûã‰Ôƒ5!œžýùäì_þSLLÁ©ŽË”!Jáùâ‹m°³ —÷d£Ó¸'m52î£b"† ʯ¶ØÅ Bè|äV©‰™ˆ±Ò4V=p'°@!ð '­pÄ“ßàc)„aœèûrVüw…Jø8Äè¬OËAjb"„•~ƒí³ø|„4ÉUuXÔÛH–Çy)safIÿS5“÷û³.;ÎÙ×i*–tî™â™?ƒæìÉ·L‡&à Ô ˜ï'Q0(†»ÂÀ¨/tP.®îéau¢ºåX¢žAŽÒJÒGÐLgç'ÈQ°4#•F¦¥Å»üW»8<Îw^3çfkClU²fŽ1 þbÒ 2à d z*W?¬ “*à›Öã e™É OROp!‰ÛhÓFÈ|`e0YµÎè}Ÿ†ó2pMƒÇä!•¬¤ ûõ´n>Ú¯´±(}à,È{ÐFÀ ÀŠ8K‘ØFeœ!žOòfѨ&Åe@qÑ9t·•Ôºw@÷]µ[Ô@J‚ù`,õ–v òœÕí•ïmJ"Vý2= %žX0¾ORÞ¡&ÿ¸z2\ÙvpÆÞ¢šãÄVòe„ú[`dw˜ÎUš) „“2TÆë¨ÖäT€u÷Ì« XôjœX¯5Õ˜­é’™”ÄZ$†53™¶Ro‡4žŽzv耈ÜâÖÆo´}¿–MŒx;iPÄ4HS+Èêdò |ÅÌî6ñ¬‰cšŠw>Iªªƒ9&Cä’¦Én €(ÏA”V`|œÕ®6+•_hšu¥‚b@qåå¤ôú*>©4+­m£ÒÎ+ˆ6ñI6î@S‹¼„ÏML jRLÜn$^v®68|D žÖŠØªVÿZ#³éÍé”ßèFF“F@#jFýÇ /õ4ÓméqYÞëÀšq[ºTë ë:£Ò»ÓdœyvE7¬–¶äºÄ2Ÿ†0`dçªê"@¥„ÄZ ½´qŠšVLM­7tÕ`Wß?’M²`ãOk-A¨¡u‘‘• HX ¨«kÖEË kÙX(#W·;Ä2&„uo“Nƒ‘ò6òËì®(Àë:èq½ÿI£€„yY1b:v?÷ ³˜4ã]': ‰„p1M Ÿ\€ÖIø@qŸýˆ=\Õc0‰˜åóCOy<ðž†èEî¬ ÀÑÁi8æQ¦ õÀêu"Gj÷H¼œKäïÿn’•u;œwÏlÿ8#¦9˜,8±/óÎÚs°žâ´qâ¦&ýFƒ„ÞD"+ËQLÒe,µP§ãXHûYÂyŒO„KÛ#Éòåæ¾4w¥yÕ¥‹F_`ÙxƘ»Ç ô0B/¸{\ú¨39Œ N f ÿšæ µ§‰©5º÷ã†ÿñ· dZºÉhÂ5õÐnˆ@Ùk†6aQÎ<6Øê$.ïÒ6‘cùîÇ„¢£4õà((¥#B¤tþª¤l$üX¸ßÅÁjS‹, ÜÛÒüÙÊVjS¨¨^d,'§oJò8É‘\ B˜º º’‡#ŸýTö’ ]F Á6`œ%ÉžJ…HÕæ± ®ÒîïbïQ< +¨sxÆ—k+2FHjt«Ú@kÅÌ``&©Ûf%Ï7·?tå¸Ïä ºC>r1þ_ift,"ÏØô@·u¿äbp ôÀ$Êçè™Àˆº¦zaà ¢¶´ý2þ‘‹Ó®„²ð¨V+QZªAèÆ6¼2È‘ªºRSÆÕ©€O[ë{ª²± œ² T2nV;ßÈvÖCûÅ(Sù•ŸŽš1VÈì]®÷ f´{ _•Ý_zuèöƒÔ…²¯Û>ϲðûå¡< ³äMöl4¶¹…6Q–¿çaò£`Œpr>2‰Keº©Nzqg`ã,ÒÌÔ*¿Së\±Ð*µ´Ö'Ú¹vÖ4ÑÉIs²¼ô–±F"™ñ^¯~+¼sÜKšm¢z5XÅpD»bMôÜ|ñtîsÊS9%%wÓµÖw}¶Í—âŒçk‰"/¼cÚ#RØP!õ´À¼3àV™v¦‰Wy9E×'ê£$æ›¶&-qЬž"Ï÷’ðy‡ê‹ñó.>¤1Œäx:=Ëy¾iàý¦¸Š¤¥ƒ=Ø´ Mä¿L"hÊÝëS*x’“n ê’e‚öÍ]|Ѥ«*Š! Øãc”Ÿ¯Ê‰òÜÍw%ð„vß±.:-©´+@˜Ï‚Ÿõyá"†—Zx.æµ¥‡´")— À9X½`Ÿy¹uÆT6[%'G-ÿ!ÑŸ;®ˆØá&-O«Åâç‘,á:¿Ö#SÒ6‰¶©´ÂL#²ã¢Òÿ(QItÙµØìaµgÅ÷sw¢ˆ`W©³lyÿÌÙ`­ªTf ft¶Õ…“?…½¿J!W,¥©+ŒéqÀR‡ã‡rorפ ôÖÒS®+‘] m©BüKA9_÷ÜËÅêÏÉ>/9A%‡×%ñÒ„9‘ŽäÒ$ÚFï[¨éPú~XzJÎÇÒ¼.Ími>”æûÒdÁÖÛÒüCiÞwÛu-¹p€l?ëE1– ¬ôš¶¤6aò.ì†)aôYqR¡‡l@7+_mA·Ð%¬õlEñºTоã‘y» ò®0q÷wæ>á ð{Sám0»É‹ðöwEÌý’{œ®j ’wå-nõnæxm]]}HëÓ±Ñ;ô4ÕM”õ¥¢¬hè‹|·zJ&•Sê†&±BjÑ=k Ý09Xi!¡©-h£F,Çò² Ð':5‹¹mFQé"‡¨£pU6cŠ‚nÆ__œÌˆ\{ÑUÔI®{ÆË™A™^^Àê÷Åãk"ž'f;]Õa”P"ñ ‹“–Áºeá0¼-Ž;÷yëlÀxס܅i5UˆT˜»MM ÛN'ƒ=ó|Ð,­Cïû|1TSy©µÍl‹:t<1Ní8_ŽAÒ ä:UÂOmXʌ̻­ëˆ­<ɵPÛ¥ =R•êØáâ6K©;Dã*”ޅ׉g€ç³3Ú~Ì6Dð»ñº$¹¯&ßfDò¨Õ·Äv`ÒœXª v&$|òú7g¦‹¶(ò1,y0ìÖ!uÖ±®œcžÔeŸ9ù]‹ÄnÝ \2b-å“ÏÇYªTÕÂ¥k–3çQ#ffòý?¸ñ‚LŽls¡,.}©X¨ú^QÁ0Ìž]ݬ¯·)['~‰½·¥ùÐ57¬Öæ×~…bÀ«᣸Š<ä‚áS½r°uÊd²+ù35ŠRG¤ 5«±L…ÀTÍ+C.˜ ï’{µ« èÃ\¹îxaÕœÁR>¬n”®F¼¼dð½ªúضyâ@ùê°ìÑ·Ás­é+$Ätã.¾ÌÉÂCSgž.˜U‰ô!·æKBžûJûyEYåç/ήGܨ |2VB)W)¹óõ¼o¢0´áþñ[Š Îä U’9}7qñ›SÝ|Yÿü;8É::)âTÈòÛî¯5^˜Žý†–ê‚Ë/ȯ‰ ^é|“~ðEªñõ’ç¢õ²CöÃýdu#¨à­¯†¸e<ôí6:J*+kñ«2³Xzø<÷Š–œŸÎžÜÂ,üñåZöÕmµ…1 µ[[…>¯Ægž9Éž•[ÖuZŠÍß.dõ ‰Ô¦š/zÖSÑ9&‹Ð- ¥Ö’§8ƒæøºâo9”OåÙ5H‡pun r«±‡,ÍÏIs«ä-(H•ßE N‘ -ÖJd#üoiÚÒT|Š2D;ò¬é¦f?ÛZÉ/s¢–>m1fÇÏtAœpQmGsæÌWŽû´Þ¶Öóµÿ9”½¿fh©)Këø¨Ö¦ödx› ¥`IBµWMpÕR}B‚ÇÐ7rø"R‚gVSA¸›„ºµX¸ò[y<„i SÞt–<ªk@ Ò,Ñþ×Iª§Ý`[úX&–‘¸\¼«ñû%8¹ðÎÖ¢Žoq´ÆY¨ùÍh™·Ò„fÊ«“јÀtK n?Y¸ ¦‘±¼«Þæx¿ñ¸yN®çæ-6³…Ô ™ †Ù±¯ÎNþz’¾{luz¿ü±ãhNÃVÃô¾u,éòBLß:þ}¾O Wÿ<µReŠ•˜Á*ÍmižO]Ï»¿?ð§T> ÿu”îï_óúÔoL`ûŸJó}iÞ–æ»Òd»y,ÍoKó¢;›"ߘ¨—^ȵ뒋 õÔëžoxë5>Z²Æ5üky¸iA{^ŒgþÒ=|vH—¥©º#A? n֘͊§7'ÊI pMO®O¾?ú}ûèNíöÝU*_cé³>•ø©á“ÊA)øu9Ôá<3fÀÛ„øUÝ)S~Õå Öd|õEi~Þmþò\S—æÐåןZÖ%Ê\‡õNäóÒü¾{Œ±žº} Uº¦{ÁÇá…:¤¤I<ü\¢ÂÏ%ÒÙÿõä£Öendstream endobj 233 0 obj << /Filter /FlateDecode /Length 6301 >> stream xœÍ]K$Çqöy$øf¾퓺ev+ß4 ¶ Ã$j$š3Ãácwfwg—Ôþ{GDfUFdeuO/—„@€[[•Èx~‘ûz£z£ð¿úçÍË«ß|áÔæþé þwõúJÓ¯›úÇÍËÍ¿]C‹ 7Ú¬ fsýÕUù^éxH&m¢rmÃæúåÕŸ¶v·×Ú¸ƒßþÏn¯*gïÞ>îöV¼Vz{{‡?X¥lpÛð>ºƒËqûÕßš¬#¶Vð.£·oàµK!ª¼}¹³êàUöÛw/vøäIÛ㇉Ji·}‹zèÚØí7»ù‘÷÷°û¿ëÿ‚5y«Pg&Y3Í-YÊÐgº=âÜt0ÜKlarN)àŒprN›J }—Íuø _Ò-¢ƒñ3 iœ²"òØg_Ñ–•¼/Ã%[øße€ƒÊ‡&»°ý² 2oíø¶M(ÿTVç”$Àmy´ÝþyÛfôÄ:yµkýÑþ%¯\å°:ëÇ=±•Õúµñ¸¾aøóŽv·^×O.Š ¾DæIÙä™wüö—b2ÊÍñ¶MJë”p€ý4Âæì]6e WD†hcšfMR¦ÈC†ÅP9$8í©±aÅÐtãêT‰û¿n=3¾{,ìS Ûû¯Ë‡$”S­Ì¦á¬œ#ÛZ{Öä¦16GJ "8Wÿô@/kd%€kƒ¬,áû÷й r‘|øÛ‰@ø•¸ßeäí²P`ô”³²ó‘Oâ`cöLâ‘ÉAäq%s÷­ßW}¿)Y”[âY/Bšx¶Só3i9ÐZYìráÉÚCáÉ”JG?Ð)ÓI-Øh¼ä­½±z œ |g›t°÷Œ‰æZ{ã½Ç"à4Ò'0ˆGâ¶Ÿ÷Ñ‘«TÖô‰ú² S¥¹-¾3N¬›ë”G& È¢àLX>¡N»üæ‹ä„§-Àª®`©×ßb“À›À´½W³F{ßJí|ÖxŒµ±u1P^‡`C¬õmÙí¢¹‹À•H²ß|:“§#&å T£&õ¶x˜ £þAÇ¥ÃÔø3 %ÈKFÖ»Qç æ=X…©=ÌD‡s‰Ûßâc€G_ÙÛòøikp]D eqDy˜†iTÊßÊËy#åmÖÓ<½ó2¬œ—PZ]3Cñ5iøÂ? “,ú¦ùÒŬŒ^}Éd¹Uy*ß.¢Ìº;2}EKs#Ô™r܉ 0¼e }‘ “i#n_æi ²ù†©¸§¦ø4ÀxQw´ ×»ÌÊ“ø¥`ãÓëæSpÚÃé pã±Ãm™3ªŽ«!LS™gÖRÂvœ^£ù7«°4Ú³)À‰$pË‹E²±wíÆ¢ qoãfA(ø“…Çþ¾D€`[Ý@„ƒfÒ°ögé€@;`7â›Ï$Ç/'1ð,Öǘ촒"§_dzÔì0ç>™i¬¿)²­MWVrý {­mu Ðu.<´ª[ø¿œY8=Nü…%]–±FN°Qç+@ìñÿ¦×ÈrÚ"£ør¸„œƒcnœN£½cêöôÊ4hØ‚ËV6mŽøæ_{rwK|¦Ð-åKï+¬7UHâÀc—Šx†/JôªÀñ×à ÑðñFôM8›43ȱùïLƒŒ†1ðV‰q–>ÇR(´ð!ÃìXÀ³šXjþ¦7)ªDÌïš’åžØwÍ3gÞöØ3(½Aˆ¾}ÝÜ\Öñ‘Ü%Ð~y:¿]qdqÀ6;ëAÁV»_gQöÝ„ÌWÇb‚NC“@Ø ó Iý§^…0 ß´ |Â×0 ·€¥ú‰a+­'½¶i-86‰r s@ s:+Ïyn¨<›;Ðåx;bÒjæ²V‘{%ëCЮI’Å0 „½R¤UxøäDÍ»},Mx‹¿+DA~À'ÂQæŸ=ÇQ¹wóª8,ÊÇcÂØˆŽô´â¤Ïø’lÔ~Ä ‘ÏŠWc'`… øäJ`GŒySºFøî±9:Õ˜¡l8Àtg]2{ÚÅÁ+ØÇ[Æó­Å›½…ôÝ¥pÙ÷ð8ŸÙ¦ús¢Àj~ùT@6=ÅEL-¨&Ÿï©1!Cƒ tð&Ž˜¾ežÒ¶zÒ–‘äø:Èæ£8$B¡žqH€÷£[óH`á‘ wjjwˆÖôÉ'¨€x@/iNLFŸÕ `mÄGÖˆR_çÀvüJýºåw»‚Ÿ€Ø¸ jU¸n¼±‰Íê 6Þf˜óGÜx9`ƒ>ª#¶ ŽÔÜŒ þéa'„yWö¥`[³ý`’^±À¨¼\ú›òa$ôyVJ¼ë‚8€>ôþ9¡Úð-…‰_²N؇¬I‹cËKÔk±æª¯5fFÁ±lUdu4˜dcgu&PN‹c¥2¦Ó1bt+‘±zÄ0QŒ®`p´×2 .èkØØÿÅ,Xmr=ZÉÊB‹ 8„öV¸4™`;ÖûvD“²ÙtA¦`l6ŽgÉ&’KàËÐAbiö…Aä/š/sü¦¹b̃cë=–G0”,Ð{Ph\òòôaä0Ý•Þð®tÈc!R$$#NÀyN¢ŒÜù#¸ß‚¦³¨>ÿ¬¯*hÀa[é MßKËÁ×+~¾œ™®— }p•a¦KÿÄ'aö gEîëúá× +ÌìÇ]uTQD†üœa³½Â€À*îܼ-P'5šÊ[DÕ†g8uضgžÌX+섈dEBô#ϪÓ)Îpìd…Cwdìø² ΆÉ'"6nzS<„dœáìv3ƒý~‚úG|:W§‘6[zÏ!U¦7ˆ"Á_VÎ4*ÈøóÅ-mKÐZrQ ‰´7‚\73ä÷qlù¼Å¿H†‡ècë½EPÂå"ƒLm=Âf53*ò‚k”Cà!4ƒ¹gИëqQM(yp2€&ö EËž,ÍNà/ïŒ!ç\;{¿ú%Ä0ÖX¢úY±ðc^D;»%m`%`A"š¤!\k{H!¹ÍÞƒQ¨ª|ôÇI>Õx$l âí'&‚²(ŸýoÓ#ƒ¡fä€C»Ù ž*×åàÚB=ðÌ«4†ìh¢âŠ““Þ¾ë(”C/Fƒ—äÝÄ oúMíØÌ&¬E²Ýb‚=ncæh@~3# Eà¢~Ä3|æ8íŸéS¥Á˜ 1徑=7õcD@>n–R¶Î‘°!Nµp—äËAÙœ“PDÑOþ­t?»åLÇW?~'„fä~ÃYò'œÃ󩯕¹œúN…K©o1FbÔ—kèä6Ì Ó»Ó 'ixô¹øWŸžÆ€]$…ÈàíÉë2^VÀl¶fp` ‘žýÄ`~ <˜‡,”9ƒpp0pȬËeÆqPTOÏAé'C¼Êúçrö«×2]ÈŸT C¢ú‰°Àýꢾ2†Ù¹Ÿ SZÆÍhuŽâ x,È;â$¹1Üô¶|å3g*fm5ºk‹“Mæµ/ϙˉ4ÁO8ÏŸ«#žðHqMÙJ|4FI›À'F ™åPã›÷®­Ÿû—/šù¿Käò žè’‚Ïúx³£0ù»†àì%¶× Xa&]ðÓgˆNùˆP{_°C—×àáñØûiÇI6wx[Z{yÈÀ®¥Ò¥™pÔ[”©zÌU‘kuQ)!ä8š1YÆ!‰g­åÊÈÞý+C„äµ!âó><3Éd>q[`šîŸ1ÆçX²„¿…bæo:18yLÑ®‹ö[û!3Ää ÙþÜ–AháÔix-6œ8­ª’ñP¸s«D4¸o`9iW_§ÃjÐÆ Ï¢%ZƒeËIªî}Ó| ÅÎ0˜A.®b~t±iC÷‘œvœ¸mê@4ldZh—²e`l›¬TŒ" mt9b©Y¡lg^"ÝC6šàÉ3J­i5(@‹„L°øæ %Á¤Ê1©ÎS…e– ¾Uë‰g7;–8·àJ®DÓK Z‘i±èË\$SàR˜p¥DÊspÎÆN¢>+Ñ+楘qþ  CØÿ³à@O»šZmÓgÓy@ìr°b³"C$£€ó$1õñ®=¾ž*€‡jºÈœ[;KÉ„ÿ±K%ÚK˜A:˃äê÷A… ÌÀåR¬~òòlóuƒYß’¨ÅÑ/cÏ>Ò:æèorh_Þwih ªÃÙh$Õ}J¹RïÚãk°\/£íý¬=úÖÀ ·´¥Î-¤‡©`G"„l? ÔÃ\#—u¾°ï-™Œ½¯=ÐTÓ\9K5BýÂx¾ òĘ6OD¨šQÆ&vžRQá¹;ßnÚl\òP¸‹0Â……øjpÅÞñQsŒ:×£!bŒÃ>)`!Kf£s‚[JP–yÆÏö“jæÚeþnÉZìë¦ ;—ŽÏû(ÝÇ™ˆ?ìæÓ·q¶ ›ò ~>ÏI! ¯)üP¢: &gT‘i…k:'€7vÆbàq€¨w€î“ÖÂùØòxC~ó1€¦|žµm cå3S_‡:äÉîEPÇE@Sz¾÷‹¡ôߊŸiº„üÎ÷cÈ Ž^]’íïjÊ<_úèFÙ¿&ö÷ù'¦ÿ¥ìNB`)ŠÏ8_Ð &ÿU k·¦qù‡kXfzÆ€~ßmA&x~m–%ó!c4V 9>Ë.F#Xe¹«7Ž£†Ê; -ÌÇæÕX‡N'k÷§7˜E zÁ«»`Fÿ~}õ ¿ ›®Ôæ?¯P`Úë(ÀÞ¼¼2`a&Ìo^\ýqµººcœZ]R ûÄðÁøR]½„6º¬)ƒ'+ö =&gÑ"Mäb’뎕,{_A‡çQ3’(PânnÕˆ…`–6¾l% S DO-T#ºb%+Ø· %ÒbÇf0)ø²9÷kU¦(_þÐ%óö>(¹Džçßï»è½ú\¬“gÅÛ|t¬`ìK¡Iæ5GùœŽ,ŪÎÏf³Våñ îHÿ·ÆÁ‹“.ƒ>°2ì…'@Uݑ׽Ÿ‹ž§?‚΄;ðO[€ö«)ZWÙÏE¸Êž¿™ 9½j$¥B>kÈgbªtÕZŸáºcÒ0Ó¾3¨Él唨)M7ÎÏ%w¶Dì«°\•x‚Æ Zþ¶~©’UB/}¶g&E«i`sÀ6årg–_Áó— º‡9ä©&»ªÂë]2s^¸Éa$<øhRtÓ–¶Zh_ÂŒÒ"O_cLWñâà–‰î}þÕùê¶W+Ч€3¦7®3P°¸0lŽxÿ¾„ X:Ü®¿`“é‹ôhÅÊ^^2M· È4·#eïƒBgU•³[䥖iÏ_5xƒ§F®qÞ–îP¤Ä•eäÓ)¹‚éZÂÃÃxE÷=æ?}Ö•K¬^ À¸ÄjØ é— Î ‚ V»ý¸¬ÐàmüE{“Oæº%‚ò•IÙ®ç+ÏëçdAvÓ%‹p] ÐàÎ9–L6%Í®•öt Ãhݦ«^³m”!žî ¨Š9d9_2iSï…ŸÉ „wã›…d”ý÷³íŸ2p‰ŽšgŽéÌÅöXd•|ÖdµFv/Ò$ŒÇè¤sNÖ c¹m†W//2 “EVìtó^ üª¢KÞ†h 0vùÈ"³²œÓºë:q*?ã0gºRÿZ’óSY:¦hˆÓ£q¨ŸÉê xnÒ}H=‚SKrfZœ‰a Þd>îlŸQƺéc¥ElK'¿ Búã="ϫᎆò«k=[ôÖ×m/+ W7öŒòœy~üNÀBsiÆê9³H?ÇC?XТ(bÕçèÓ”±¸ÏBg›Wîð=wD(þŸÌHgoœ{3”CÁñ´ë›ržîŸ© 6a¹ù„[õw4h‡çTýÌú °Õ_ž¯mr¢â¬.ý ºsJœúÿe7—`ˆŒ®>&œ F6ú¶ôä¡Ìcy‹Ž[;mgLË<©±^Üs2f¦–]¤Ž?ˆ[rÜèÕbß™Ã*É‹TlDmvî"•Æ*çïQ™DçîªÏI|վ;_2’0Ÿ”=÷Ð6ùT GiÑ—päÕût%‰®c¹“S‡ô ¦Mjyâ.jÁO¡S¼vÈ‘;t±Y‰Rd ½Fd N ô|&ï”ZÏ3#‰€©%œŽí®stÞs7fî~×¼ñ-@,b½¯SÅÌŇ2´4Ò¦Œú(’1áëÄ] R¡uõ¾ ±Œ÷"J©Öãn§D™×b²z^òèËÆ~‰¥½9—ܺV®2'îws%Ý-o°Ÿ/z¢éáe¿õÍjhÃ0PžEí%À‹  ìA²ýÅ€,`’ “xC–Å`N ¤“Ù1ñJÐ#óMtT’Æ Ÿ, Ûã½M)‹»|:Rh.CÎsÇmô6h™tµ>Aœl³Èa~‘%šÜMÄÁ¤˜–xõ8VïY*@®2¬eØ]©§2Uª&lúG  ¥çœ…ÞVæ÷UH±\òÊ.éA$Ž' )ú7å„ÝÉÁ¼<~&»¯ò}çML}Ho‚CNÕuÓY3³Ót˜Î}p>Båˆ),É_x±ÔE!øk:ÎUh½)nä?ØVœù!ÆI‹»LvŒ:oºï¹;6夬‚£´û†ž ¡Ê‡vÉ”0R'²8÷xõ^Ð 1øÁƒ"ÿY„yúÍ¥W<5åÇ^©ÀgKZiEèR?s-ÎHMÆ*“ç^þÔ_µpúò§éæ»Ë.š=¶êvº;uM`§±ì ^YÌê¾>_ǦѲfOeläÒ7ßž$èiñ¦{Cq4aÔ²ÆmÌdt ˜Zì׈ž@%oðše¼ò£Æ‹tyÒ”4Þ(ùçÑ6þÜ,ØŸ?×_η»éDç"NLƶk?2'. ’‹ª>ï$¶° ‚JàQ_¢=ú‹»Z@3ÿ×qõY«4Z† oVjð°4¯qákÜÃïî–æžµÀ[ÇwµVÔFkÜö¹?ÝUZØY0½ jÈTÞb¹Úšz[ÜÌ&iæqqÓs¯díÒíø¥ ¿™™è¬{ŒoDçq™9ë­­Ë}úÀú=]e“Ëa(>ã5;ÜU\qÞÔ Ëi3ä©d,b<“ ­Á;˜sN¾= Œƒƒ(Ù¾X…€=,3¤k„÷Ì‹™/Ã÷CYMå¾=n-¸ÿÒc×ü‚ÂÓu.ì»Ãñ¬MQ°ˆ›¢Ë¼Ö û‰DæRãô%ž”‡¯8õÆ‘P½.„Â~D¼/;€'ã ÐW@²ië”+úƒÃ#Й]ÅGe†Iä㟠eHGÈá’Š¡Û 2û´pÿ'Rf ú‘°Èc|M¿Op|±Ã|IĵIHi`´Åu\%tuýqÛcÍ*J0j_ÅrßœÀÍèD­ü{¥ò3—»nð;ª#xªÿ2‰ÒÓy:êíã«^;’Z»¨?@@BEž9ÑJán:34úW&X°9Ÿ²Q0NÏ)9~ÿ;>_à8.T~h虜Øtï,›1‹«EÀNxXÂúãÃi±pá`­6(MVDEU/U*±æ”îºNÛßUI²¶D®àåÔ÷¤Ö©Œ³+î*‹è‰…¼ˆŽYÉJ±y¶Qãe.ÙÛPšé®þ÷uZendstream endobj 234 0 obj << /Filter /FlateDecode /Length 5670 >> stream xœÕ\[IV扇¿Â‚P?fƒ«ˆûE£E‰Õ.Bh—m $›‡ru»mO»ËãöÌÚÃàgsNœÌˆs¢2ëÒžE KîTVd\NœËw.ß_ªµ¾Tøoü»}ñwÿæÔåÝãüwñý….¿^޶ï/ÿñZxoÖYe}yýú‚>Õ—ZÇu2é2*·Ö6\^¿¿x1¼¾Rk›¢aØ}¼ZY«ÖQ¥á¼V9û”‡7ðèt´1 ·ÔÀ)7üáÊ„uR:ÂKµö9o‡·ðh´²! wo°SZ󾡓¡;mW0TNÙã[ìTùìþóúŸaþ)ðù'¿Æ'uy}þ6N9ÇÆ°¢uŽª´…ªãåJ¯ƒ…þè›wW+ŸÖQ›iX¥]Çêh È._ŠÏyµ21­“¶ƒ& (-ûš–àíØ¿Ï03< m³M‰·Ejh¥ÈeÝ6'ëÃܺ}\GsZø»J°¹‰ãòBšÚnph§L²f¸i3šÅèµ®’·ÐÇå¬Â,}âÚúdê0q]ÙjXlå ;lnÚèï=6[x ç°ù´v “‰ÀÊq !a{q +lm”Æ%}ã Úì c%¯œ±À¥mäHØ ½|,ädœÎÆÑðe¦U÷ê„»€z“å¤ÖW+ç 42Ãï‹ã³hq+·o¥s‚MÀ{ví°e¡Ñoiq&Î÷¸ûé§~²‹Dx5Pë9%' œ µŽÃË¡‰“Q*½¼¢ßõ5€¤ÙÀâݰ{M~¸ikaLÉ8qØ6inÆ×è$š<–}tÆ ÎÞ=à0~‰Ãî5 ŠaZN„1?§$²‘UF7WzÏUq5%4°Bÿa¶m]q¹5Huq÷¶lµqÁ¡ Y‚_Uò#m#4/¢Yœ gAÞ]¡“ÎRËŒ#;Šv¨*¬hŸq4©|>4Û½!m j4ÎÅ»»²)bDÇgßkT:+4*Æ0NÙä…µÛâ”AU b€aÀƒ›©µÈê/?V3ùâpÕ×?µ×ê:DZÀ׈ûßšœS #¿YååèeÛRÄNÚÆßíŠtÁ=éÃqð5p¢¥í—¨Æ’÷4|•y3?Ζw6-ô{ÕWÀÛV(%ϵ˜TIetä²ÔØ«*¥ET´ði!ÐÈQÄ+:&7"¶äP, '[ ¡"Tô¸Á°ÙEÑsx±šÚ®ªÅO¸û¾HJ†‘F¹$þÂ9퀥“ä”ÚbËú q(ðÍÓlÛë[ÅÁ(Rºk×£èEiìïÛ€Ô…B¡$ãs½qŠ6m¼ylBWçø¶2­9š”²e¼Ã÷ð†ÎRqÎì{’š´Q¸ƒ8d@´¶müÈÆÜ=6¢±Ÿ‰o§Ï$Ú/«ÕÄ Àã@5®¡oÅü ÿç |d?Î Æíÿn˜Mbzr”*Жì=WŸ4DáZOã\_%Ä΢؃´Fx1b[´î75Ýh «MÄGÏ'‡H¼&Y,[´VðQ ±-pÇè|í‘…HŒ5K8 µzæ¡yy¼=“¢OÅ”‚HSêPÝäNÝð)Ñ¢ü_|W°ÁK`·Ã¥f4 Å›•Áôì02FùŽ1ˆÁ ˆ›ç=ööv^f¡ ÃWÿæÏšý˜s†`.„vjý¼sÐd×7 U&þëƒÞPõ Š©à™ §á Y<á³+Ékuuë~q±R&ÌøÌfþ^ç3='©yG0F“t”¥…§Í̓ǂkÐ[ÁNœ¶v4zí\[¸Ý&Œ§½G]å°æâ´+—L®Ù 2{йâ5)“U!*y-™a,¸’œÛ N¶ 'ºØvj7?Ô®¨£&*oŠ<›;ÅŠ“å*ÉÃèª<¼"§A'Ã|'f¸v GÝŽÝ)D£u¶Å›+š¾bþ+­@ˆ ì©Jj_ÀðßW×ïæ¢- •IاsÖ°,”´bþ?‘,8 ŒAsœ“Ãî=6Ök“„||ÓKÓ~¬c>ªZ‚Y—¸Á’áˆ@70¯O”¡ˆ"mO—!7™Z4ϧÊJÄ¡õ›³e(/ÊPV½ iÛÍP‘Ÿ¨tžaX+ pMÎðoÏ*£««QÜH7r¢Ärw>Ý&ÝS¿9 Ò²…J?ë¤:ò‚&¦˜‰Ñ*³O´»Äó ñxx#KŽODÚR ¬M½ýË1Òí‡-óW|‚9¡}¶nZ,gtØðù= 9¤JÐW:Ä¢ËþªI×̪5ÀŸh/A <*¥ò±éYJжôdQ‰ @S2ñŠ98;»å -‚lØzcLd¢Z%g(IšC¶?Ìú‹ šœ€ºFx†,Ä[Á€~MÑSàºä¦`µd@—å¯õ¨ü)ñmǘû¨ 4:f¶NCUÐrÜ%æXˆÀ}WÌ€—í@84|q€yH‘‡((湞ê#õí„/Èb2Ò…Mø›Â³løµ8–àÁõŽ%}f…aÿÐÀðNºê5RÈÐõ«æB3Š~¡®c2 ÎçB’ÛØ¯¼/͆ü2‹¹yŒùϬ׽úÜ‚*ØÞ7o…›ßͧæa8 ©#ˆŒ|ˆÙš ?ÍÏM夡p …^‚jL žl²/¨5аu™ääiF9Ã|\Kj7Ê&åóËžÉÃñ΃¦IÇŒ²q˜1D£œP†p–QÖf­b =|îÕŽlÆz}ËÈf±ÌS¯/^£,F9Ìiúø.hwR’§:«¦ûÎMÑUî~VôKÆÚŠ-MÃf?ɺ[Ñ… âíg06<9ÞÅI¨Yi,mHV8ëGª³H¼V€Û€;&Ðs»ï{:¹½RŽ·Ä+0„=æÍÕo¸Òÿuo…LrÓJí-ê´é´oUN®]Ëë’kWw°ZwnÜM Ëìò ÜnÀCIØòÃ?`¸ÕìQhËÃ\˜Q˜ ÜWÛ8 |ANg€5ÞVÄÑ"XƒRyáÑ]ͼªe>¬èIc‘¢e§`‡Á8ü¶ÿ~vo+©*J.B¹R=Sò)øœ¢À,¯s7Vä ÄgäMJð(L/„áUÖ’ÅÂwÜ:ÓDèLÊEA'1Ù’cÔ ^³F/%Ø&Ð6 }3.U&)v^žÒ‡<ý!j/ZÝDa#,Å ²›ël³2/Tc™‘w¸iäÝ??"Ê>ìYÌPuÙÚæµ™72HsÌíÕ$[§·B±ÔÀK×ÚûÔ-ìŒ(K©Žž5Î!ºvVbS\Š…SЃ- nxf}+ p ,8:ð ÷ð‚ªÞ³ì£È¢`ï˜Iß!p¤¼“Cô»”åí’+ØqÓñâ3êÃ¥®ðæqìC)[„gL½³Ÿ üŪÑ,ÅœÑyav `“¿EÐè\qu—sì°X80ß`ÖS©t1OÏÌ£„ølÉåÂ<¸÷¢b£”f .mií ‘Gi?S]7ÌÀ—½=+«Fè…sÒmKÞ-d~i/á‡(1%5`cóXïBÅ!üÓšöXûÑ(Ea=JÁ)@ø‰ªsÅ©2ˆ„óOca%kÕ\PÞ–õ@. 8'YHn›ld!Œ ±Ö´¿ï0ÝSsŠkÛ‚ÊgD^ž¢Ç@w‹Û¯K/†xz&Ûn²G‚0h}¢²_a}Žç |è'u$våQ°U:2)öf¥Õ§Aø)ð¬qÓ¯ÈC6A—¿?ŠÐcS1MeÖ‡‘_èàŠ*¸Ì””DdûÇiÕ…âÚ›<—ð˜õ¢×dªíÃdAãÎö®Á›š¡J—Ö;€N ¶*ÁÜ'ú|…µ±~N„ýG°gýu¦#&ÅΖ°¯Ãw¯š§>C> F` ÷l m}¾„M³>Ï ˜.° ü ãòõ¡Â›ªg@ÍËT^‡ Ÿ&SM¦nŸ(SSŸ£LM3þYdê >ü>G°žœÔo‚õ’tš‘,¿ÍS;5Àm×É !YÛ½ÆR²¢©â~jÞ…Û®åI¬ë%`5㉂ºÔèŸnÅ𧈗rÕ0‹xJ £—<ïœvEò"%®qOg³»&oÏ8Ó n›Ä1á»™>`—–…Ïzßv¨±D)À¬›Ç2E—Dã,ù{$aV'+³dLí牦ê/Éã&'ðcf3ë¸_¹Âêž‘ã‡öz¾®„çgòåÇC«Ôf ½Ðì Ù‡OgêsFÊ.wvk+|™Šáƒ;$NíÍU-n[4Ÿ{r݉’ùú¬ƒ‚‹~´ ²üï@hI júr¿¢¢Û‡äR 9õf®Žù[|õ”®§‰,É1š¶ê'õ'ii7ÄIÇ#eo;QE =±42&WÂR3U€8TI1úücoÊÏ”¾"'mø‰¢¾DÃ>ç}çö~?ðxq9/I•Œ…N} ¤¯9`Å‹;Q»3W ÉŽ¡[GÌrìccã[$ªñ.}"2гx·Ô›M~q¿%¢z$ñÌÞQòÞÐÞJï­óÅÈ{›I·žǬߟ (˜˜·›ðA˜Íÿ/Mk0tþ•ònÒȧÍp ÖïËÙ›Xî8ç0^[ížR¿87ñ¥ŽÉ”prNÖë°3•×ÞÖ`ù9CN5#sCF™0dI²‡¾!ì•ôÓ²ÓÀ`HÒÁ²fñ1VY…ùuƒG¬Œ›„7-t1OvW‡ n®ÄƒI?Ð CoŒ/1iC5W¿¢ã]ÚÓ1ä€Ç—ÊþyõCUâ™~ÄGbNÏÇ’KmÎN —3XZmèâáûO+ã9$$`ÐLBòûžc÷*‰,CÁò.L£äÜçÚvðSž¼`¨œFö•uƒ ’—„ÖuK#v÷X‹‰By© ábª™ÛÐhð ÀE™ÃÅ7Ôžk<ÉQ"ÕD÷âÐåtK u!òc÷ô¾¹“}o+X5G‡,¶ÊëRÓ'L6ËG" p.á7ÂT~sU] Ó¬:ôKz¼;T_ÞZyÄc+ìâyàÑKC05ïyC3 J$£wÔ7q[X«äñVʯ?2@A¬ tY8—ÌsVìž¾ŠÐéñË3x‚™ÝŒÂ° +ä«g§0»:\=¦¹Yò›™h1…ÿ†&”¤Ç[9n¿ŽÎ‹Ò%¼Ð*OªdP !Ï­/ù+ë4pHoT—ÊxçË1ÚÁÞe€ð·Üç vèldeÓŒlŸ÷,ž¬áŠ¥nZåŸV”´ÉŠTíV.DÁ’[½TþQæÊñCq“Ÿ÷ÁEáµ#{·È¸r•¨â`Ç(nèKh/ÀêXü[~Ëýýzåƒ,.êbW@Tê-ÞîÂ/6þ¢^¼¥©¼Í[)ªûŸ¡Â¶º­ÿ aüŽÕ¢¾îƨ÷…0,É!a ümŶÈO.5Âòh•¼ÇÄxq°WM‹ÎÜ’ãm(±ãU¹õ§\O¢WÀoK›ÎûD骰ãÿ¼ÞšMä§ù5r§[Yʆ{äÓ´pàê»#E L`Þ0ži“tžh±vé|×T<ìÞõÑÔqSå»»/Ôwœ.oBâ~,ÜÇ/‰¯TÀóλý ®Ü8W'+lyÛäˆþ†<šHî5ßÔ]'˜¥Éc©NU™{jrüYiy¥^-Ý:€t¡hèT°ÌoŒ/ó§;Z6jDqÿÀU‰(26à*yÃᎴD³Wª¡Su¡ã!†“ÞФÀšK”Ëî š"¡^Œ²x#v‡§™Ž¥™4ʲaE+ é.&v5ÇûUáý×ѱkš–cøù¡=žœÒšVÈ›ÉýB¿ã…[¯*áné¥ÅHpù*)”â C Ü)7ÞÅ?›˜*ç…ðz묖ãÕ¹¿ukº¯§Ú<Ž…ccIg¹Ò-¥ëvLÊSz-ú¯xrÁPè÷Ž=îj¥5f‡_]áh@‘ᇇmQN¥t)•Ë)rÂ×Ê*9ħ uÛ ñ†?¶ÇO³oŸ×!¶íå®=>Ìvðq¶í}y´ÈÙ ]νWq²bdŒ–Á_ ÆÑŸ)ýýîâìl@ªendstream endobj 235 0 obj << /Filter /FlateDecode /Length 4527 >> stream xœµ[[oGv~ç¯ žÙxZu¿Ø\G°²ñ^‰ ‚Øyó&Æ"‡Ë!½‘õ°}Ï¥ºëTM7E# ô b³êœªsùÎ¥ŠY©A¯þ+ÿŸßž¼zçÔêúpŸ}PÞÅÕÃõÉ_N4}Z•ÿÎoW8ƒÙÙ­ÒCp«³«¦¢WZÇ!™´ŠÊ Ú†ÕÙíÉëÚl½±ƒÒë‡rö:§õ¾Ÿêð®/êðÇuŸÏ’¸¬Ã«ùu³“³»øX‡4´É†õP‡§u¨êðëÍý¤5dŸWgßœýî‡õ?n¶Á¤8(#y]Nùý4:«„ÞÕá¿ÕáÉi­uðãúFz½«>Öá¡÷uîCýzY‡â´Ou(æÞU ‡Ùe;9w^ÌNx&º—³x¼ÏEí4_Uø1ÍHW¥[‡÷³J¿™ÕÿÓìyÄvß×á‡:¼©Ã+)²éÀ¿¯ÃØÀVû¨ñ@Bñ³"›WÅav;ûY ·³Ú¾™¥ûªÏgéf÷;¯íÛg–xÖÕ~ÜT ~=y˜ȰÙlaèñ³äéìîgýêF*óåFòjV¿Å^^ ¶¹íˆ­ïú­“Lof]ìŽ$ýæìäÏž ZÅUrTZÆ£Ó`¼Y§†Ç„7‡Ç›ÛÝ#aP Ž•Öï/8dÎCNzýæáaÿ@¬·&8ãVÛ<¸BX]ÝàÁ ,_£\6[gˆÒ‚—¡•8ß©0Ú¬ø¸¿þ÷ݹÝ+ž«›äJcëÊ䯕—wÌ VÁ’Ø,Q¡gFóO{ûêÄâÙãj Œ²Ë÷¾þÝæì¿a¾6Ä•üÅý þF»Áº Ö ñ‹Ö¯L@s¶jÜQÍþ‹P#Z•YŒt¸ Þéw ÔåV½Õó[1³Õ£5ãVË/êVÃÍ™õÒ%÷ª´¶eC–ÌÚÌ%¸ Æy64zÓÆ ~ýþ ð ŒC)k,9‰Ë!ë îŸÁ"Œã¸èR6A¯?áç³³7õê÷+D•ɼ¦µqBŸS* É<ôžøä#ĤhUJƒ MÉÚ®÷W< ôAh”2à@]y‰c ü£/ü³äQ@A¨S,Ûw8; „<·[€Eµgoq¶É9%†7›¢ 矌[ÿ¼t4 Ñâšv:óÙ1mÈ mç@Ü6Ž´¼ïd=ãO¢ úkXÿ²1 !Z ÊQ)ÇAWç¬#‡b£w3$5©œ\Ä4D¡èÀh0ØøìM‚Øœà8)G;îòk–"ù£èï"±ÓNLDŠB-@nU ‰eÁÛ(ŸqA[8é@+*>TÙþ¾nºl¯bHDöqw|"“˜ºÍ¬M‚òôd÷t–`(Qšä¼Gg¨6§4L‘û¼¨«.…&‹yƒ7£"JòùãCc¯“þGR&»Ô:¥õOdiÙ)'õ*¸P™h†D b_a®: ¤±`? ÷a’‹‰ƒe1cˆô9äÖ·ð`ÑFb‰¿·É¯o…' a” `ÂÅüÁæ-“ÎA¦ž2¢²‹kf’±R¹Âqícö dIŠë\LÙ øºCµ9 ˜ÅrFÒ*g2â—m8%fFB‡@“h€_6ÄÝy]ÎRÅD€˜2$U ©Ed 41Dßíen…€§ÙÌ&èéZø ÕCÒdpV)_¶±M¢Š ¦B™‚iÈŠ¹É9Á¾}ˆHG0¡ÜSÃð¹û‰vd’5Nà ›Ù35ˆ{½¤˜z=&0…ÝÀgyB ïû ËÀú¡È‹l©ÁcZ Î7vºO;ÝÝÕ³L ð Áûjd»GNE æØ°Ùo¹Üm‰3m"U(ºÐÞ`u‹ºðÉf„DôwgÀÉqðÿtk|€?_>„†2éB?ÓÂ|à \È׈£[ÿ- ü$6¾((—½‘ì¦Uæ-I˜ÁZíeî"ÁYο©ÜÑ<@¨³?’‘òŒáWŸÍèŸÏÓ]ªd¶v¸sYÎ ™Ç|œä J瘗ÄXDgÞw{/ $Cn‚ÅA¥G¶F/ó8H0ì„{þ(rOfÕì‰éEl–X|6x× š€m¡‚½%`1œ­¬CÜ&·6KDÞ ñ”t 5rj4Ãg ÆöV?99:׃- xƒ÷í¯žM up¤ÿÛ”ÐCš²Þê~ä\¸­7 Î$ݧ*£C/ ¨¸”³Bµ¤Ý\0C¬xžªÁ:‡ÑÙ@yZ<ƒf\óºœMg’SdûOÞÀ)IQ ¨»ðHärÐ6•gßtÇ.úc€‰Î@­ºÁ:êlÒîU¤<k»Üõ¢fž}µN–\³+æÒ ‘.í"Ÿ¼1ž³ R «¼­‡1M÷c” º@õ|Y¼ËSIƒCUh>‹úW~¾;'q§F`ˆà¤6¼ 0þF¸à¯›18ìdr°Çb ôAärú@‚¶N\f$ØË·µ–a¿ÓQÛFhÛMà³^ Ò¥eæT¯Š;ààÖ%ÌY×o{.¹¼@V"b)~7ðʘ,ßQ” ÇÎÔº ‘,ƒ5BDþ^l™µÎ©w° ÅY¿ _M9n]ÆÏÖEv)Ž}äó$Ç´,Ü.F>W-Ÿ‰¥…s‡&ÊsÒz(ÅÍT ‹š³TúÊÀÓU„ÖÚ~(uF Þ–ŠbB|J “å> ø¥JM»c8ÐÉÀ1{_—í`1Uâ …~1ÆYHï4¥Êc%q[M†zÅ)dîMæ(*xRp²\ ”ÉNõ´£®ýY $åMû<¼,øbƒåŠý1@½®!@ï>ƒ;èRéÄÌA žmòjk pðò¾­™±t6¡Va€%ëU1ŽQ]í®¢&ùh™:â de!{@V? ÁwI}PK¼«2Þ]MUÀ—ÇO›daŽýYƒ³†(š7›©Q$¶Ñysì½ÙSj«×ïÅnÄOAôËþ+õ§Â?·GF Œ]û{r`ªþ¼,§.²Š sß÷J`䌗:9×HÄBÍ”dÈ]èmˆø,9’ŒYã={»óÔ0£µŠ:Kî_t1¬ÇB°«ºEô #RyâBŒØK‹Â :C5ë‘¥9$ÔÖ`„:øIe…øÄý–² uêK©.£UÙ»pï[°æ¹QX¬)¡@˜§ªÖ)!ûG[êÔ‰þ*â9$Ÿ>I⊿j*Ud¢T¹e,^­O7ÒQ mbÏ7ØPÀþCÛì…"hDºaÙ¾›v &?Š1NÆàøžtC¹ò¦š÷,ïQ ÷S‰ÜÔRÉC=Ñdã6÷}eøµ8Û3›þ±Õ–ÐËlŠ…ùnXÞöžH/ÌD,„èCØÄä],ÈD?½®Fo}þ ŽÒÚÛ–9„wÅ­ÞÊÊú(å!wÀ ”Ö}7PnïÀèù³§¦í[òvŒMàÒ+¤—èRï‘þ†÷Hø¥~ûa½§.®ò*Êúä²:³àù'2y@c_’9:¢˜Ð5g ^½ÝS¤ÈP™&ÚqQq¥jå@I!Ï)LHÑR°è‚ÇK°1XÓ¼à)|œò’¾Ô‘uÖRçeiþB$¡’=,[äIµŠk“±ºð¯˜%%ô=¥$²PÓÏL.™BBõá "†]Ó³9$B)ÝQ6åSQê|'”þ‰, R,K# xeñ‡›Ò’²iû-ž dÂÄ>HQ·õ ø6+øÙ¾ÈÏiÓÖÓÑeÏ‘¢brZ…—4Ú.8žï1Ž;Çä ý]Wo’œÆFóüÝ™E©´s”‘¼/žYúœ €Mãg]Ÿ‹ô[Ûîun×wïC#¸ÿ`Ü”õ¾À[ÂöWñ=lY'ÓAsµï%i` Ü€ÊÍ$×Ì€ø¡±F2]ühúã~$4LóAü,ÄXVçÔÝ[Ò@ÎcfÑRf$om•Ï׳ !̬ .Ï\Œl+?k p~ëœû»0¾ø\¼¨¹é¯¢ãRTZ~†çÅKŒþ|É?Övlh×7 bÏŒ*Ôæ—¯ š¾×ü½ó¦gHWejqöUÅþgÞ¼¨©iÐ$ûí»$‚ö–j¢uËwMM)„Tt¶mŸª{#úWöŠÕׇ…-Þ8‡2áÍ7”º»œ§v&÷·ø-£PùüÄáŒú`”Vso§o•·Ú{¿äã}çÆ£%幬¶m$¡„›/j½´¯uÀœymŒyIÞGý£òë»4ønÎÛçáòÑ;8š¾½ ŽÆ[¬ŽøþÇδGñ†ÌÉÙ»_…yqÞD}!v}lRÿ\Ó7q÷Fíw—©uÓåÔêøÚLfžþD­op{»G‹<ê¹W-È8èÅ0Q«ÿ¶7m‚t ôQˆ’K·ôÓpá9X™ •³rÕ+$s1rþiz)õ©Í8ZÜ3¥&.Ü ›y ú€!Ÿ´/>Ê ¤ècÓ”ß}¬©º G/*´â—Ú–ôíZr¢]׬›.õ_ó`LAg„&ÎSŠïø2¸*]ûP¥ÚÁ¶fžoL—­:0u§ vÖº»ˆ&NØ]ìKS’¡[ÿ§Ø½+¤7 '^âè;ÿ1ÔZ…>sÉúå«äjIMïïP댮}tSѾ`{öZ”TOm0*0”§Öe BÿRáPÜ.jØ2Á7w‘ßRa“-øú‰‡ ¥‰CÓDí5¾Ûƒ$ Û³XßH7Þb´‚Ëy‘›öÎ0Pj`šøìï/ìô™е k2ÜÎÿæì—¸‹–ªyçRûæUã$tŽÏÎEÇ€Pk§£Û ||åòè†è¾{~GE¾ÖßðݼKþ~3ݪöOÇr°{†î¡\ˆ>ý¿çåã©þľmÐÜR¢ëk1á°6îͺ`u“qÑ“W¨GTÿäuš!Ô&HŸÖ³Ÿç€Âbc­Žº©øþæ©N ¿fU¤¶K6qûÒõ¶s.n NPuÓ•&/¬nD?¥ýÛ"òU%2ð;Ýàñî é`¼£?X[k‡fFÙôç“¿£~Íendstream endobj 236 0 obj << /Filter /FlateDecode /Length 2406 >> stream xœYËr\·Ý3?1KL*¼Âû¡U¤ŠcÅ–\²8•Å"-’c‘”Ç?ŸÓ ÌEc8Œ“«H  Æésº1ŸVz2+M?íïéÍѳw^¯>Üá×ѧ#Ãÿ]µ?§7«—Œ=SÑŬ6GuªY“¦ló*i?W››£Ôëóõ±ž\)>õËZO)‡`­º¢îTr ê½.cfPÇÔkKÉ9ªoÑmµ .¨í%Ú^ÔŸÖÇ.†)£¾›Ðm«¾Á]¢uVM4Ïh³ü½±dëÓ_Ö!ð`5ß² ›±Â ¥¤dëÃzGݺdŸØ†É.+mœ®—iÛÛµ8v.êÆjtVwtR#¶°ìñ½0ö™þ_à 9IŒÅªµÕFÝ×Ã{°lycúµyD}E§18Ái¨m(ê_õ.°ñ¨ÎEû®NK:ŽŽ¬½Å©·k›ÈB¦aë0r,C÷½hßÐëd°ÆÜ<•à“ä 9¯Ñ"%du¹þÇæ›#çñÑz@jsû$ÿyÙízÊÚ˜œiÒ±saŠ&¬Ž›‚ϹNn˜ú­ÓFt‡Ô`Q\4j–×~ƘtY/Gc_3&C.vèþuúµß-Ñ|Á )ÚÚ(»_ ˆ_õåÞ÷[øüH~·ØÄv·‚IêU]Øú臀ù†1c‹û1ÐLÿ…îËšlèÊéf´Ïj¦ €¹´;‡/rÖIßÙaþµÎ8¶õZ¬?‚†×:_!n¢Kþ©=>E7'ÎPƒÄgïao¹ÅÛýåØºîËâÀ–.ÎÀÁÈ–4¹dwØ{³^œ{x/_s<îhe¹•zö ü¨ù³ØßV0ƒvg®‚¶Øjµlr /gÿ³£…¶P"q)BGàÐÜÛbûÿ×Ô›£G|m¯y‹Y ;%EœæR#/FãL)ý&yUÜyNÿéšš]Á–Lk¹x˜lÇËØC®ð¦‰%«¿ïdÿ&¹ùÃV^ þ½§MkoˆÌ혲 ÑÖ!Co TàR÷ÈN=¯ ÅùÇ ±`K¬lØ­g¢Ú°ym8mEƦØùëJöŸ:™5giì9{|·°Üë£Íh1Ê÷l²0ោ†%ïB7ÞðÅBf‚šO}Ï£C‰N}> I~,œÐþìåÚOd7⻂°’sÈVŠC7ÀrLÍ5¾b̼\(ºOĶ/—Àß Âxà 5)D#'nÖäå£Û#;"ÞËÈÕÑøÁ`%6HÍïûhA;5Í;@ªÄr£Eý¨Ö» ¸ôkö2í××ýv„<{>Yš³§Ù1ÛÍzçÜõçÞ<Þ××:}dª<¢ªuÀ„‚Ôn[W¢>4bȺÄÁ©³+Ö9õ|}2Å y<­+Jc¶t p<ïzïcO9&|rAëçàziˆ….0w·ƒ4­;ÓºESžsÖzÕQqË jßÕZ ºˆ¥„‡nE\ŸÑˆ<ÑÖ/ûˆaðÕ Ôû•'bÙÊÞÚaa6½s˜8Ü û¹°Xÿ¡ƒUœA ¸nîÁm{ïûµ™4R/«~ê^ìN¢X,Èé\î—¥»hƒk©ð‹‹ýE¿à `Œ^sVüŽ8¯À6±dsÍú@›Èq('ÏÌ Vëä_jêi‚.Ùöž»á Çr]%¶í‹êæôÔu0É Êùô<»pulíÀàuzO†ñ©ñm£f²öÞ!  ‹•½5ðˆ'‘y ÷G yU6x×p_Ù§æ¢ÉD±ðë¶\‚§˜Z±?šÆ 8‡~¦®·=>˜œu"ߣfœÉC²%_è&® hOz5ËL¯Þ”Cê²— ÒiS„†Œ%C¿ê¯Q·K‘ó@fˆ P^P›(˜ÖßÞv1•÷|ÝYDÎZ7ßµB #ñ×” !Ñ“‹³:7Ø<™ÖÝÓ£>4cñ‡½£Ãy&%%µ¹êV0Øy E3íapږ˲’M*Yq¤ë:1!v.¤»îZ?è†Ü ú¹G­eÅBòÖŽXàX&奀@Ó\÷O‡¡ÀfsçZËèZ=ÚdrKõ–óŽ!Q\/ œwðÞ×<SÕp4åñ;ÇÙEoJÄÊÜD&’€>wÅ&E~%’½ûžHJ;³HdÏkQl–LÁÞˆ0Q5ø?¡\k9ÇÓDXì@„™•mjAɲoKãAþô¼ßb@ÿ¶®Ùw*8Ê 'ÑÆÔ²l8•æîá ¡ dýIOk%ž%aýyñxˆû¶G“<îXô i¿²ƒ©.«!7ÙÜü¹7Ÿ÷泃Í_:ð7]oN½y×›{óêàØ³Þ<ïÍg Ÿ®ðWU#­žð8„fá{hÍ»ÞüÒ›bìCoβ÷PˆydÙNËrÙûšk¼8ˆãâËPØ?õŠ^eØr™,K9Î]^è£:~ô ¦Kë(6œ{9 }©g[A·Ëä#±2a½ùéè«ÍÑ÷øù7SÃèÆendstream endobj 237 0 obj << /Filter /FlateDecode /Length 176 >> stream xœ]1à EwNÁ ¤R;D,é’¡UÕöLăzûiªªÃ·ôlë›õÃy@—(»E¯¨uh",~è“CÂ5N§Õªgë/*<_h^»ñUÍÀîâÄk‹o&í ,Aiˆ ' ]ÓÈÎZIÍß¨Ý £ýÙ,‚ ™±•U[UB¨C½¶ûÊáqODõ#`ªÔœ%žCø¾|(.šEÞßYÍendstream endobj 238 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 595 >> stream xœ=ßKSaÇß×£gSçú§vö^l þ+#ŒÂ ‚º‰ƒÜØvÎØy×qÎ9·¹vôÍ™ns[›ºM-( ºë@Ýt+ÔeÝýqÎé(t2èâyø~Ÿ›Ïó µ@鉩éG×ÿ¦+Z/ÔúZ´K1üz^ÒFl±µ6´oÕµ jòœ;hy1•+N¡hØ7çÅÈ=ãAÃcc×úÑÈÐк侖GS,örA›%€¦…‡£È}Ó‹qèÆà $IlPÂsãž~$ù°=àD.ü”›Ew£{lCgï œí !Š`.Œ¦„Y.̳¢™}¢ß$x,61B<7g^ °¢Ð ¨ñ«¼‚kÀç Í”6oðvÀ;šl×UI?ô^J¿¯JŽjƒ4›s|¡c‚qƒT]víõQ]ëÙƒêògJV»…L޼ Öj¥¼³›ÜXÜrM¾·ï©íŸºó¹ÝB>WÜÌIÁZÊìã²§¢º×k«êÈ—É:Ù°n§JñD&XaN„S-½DVIÖ¹\HTJ›ùÒc÷õ[uÚ`J¥CéTvl6sºø9:endstream endobj 239 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 7938 >> stream xœµzy|Seöþ-¡¹W„"WZÀ›"(û. ²ïû¾º/tßB÷6]Ò&9IºïKš6¥mZÚ-›@YEAFdAEEQ<·¾™ß›”¢ó™ÅïóƒÏHsß{ßóœç<ç9ïÅŽéÝ‹±³³“Î_¹nÒDë¿ÞÛ‰Cz‰¯J¼ˆáWUgª=ô•@ßÞ{‡ŒÈvç ÀÚþ¸é%Fbg™:?4,6b—Ÿ”ËH¯Q.“f̘6Öeòĉ3\æûDìòòqYéåïìE?¹¬õÚåë2r¦TTØÛ&DGG÷Žá÷.Ñ»¢ü]ÖùDúDìöñvYå²Ê#ØÇŶ¹ñ¶?燇)¢|"\V†zûD„0 ³rnÈ–y¡óö-_±(rqÔÅÒÝË¢=–Çx®ˆõZç½Êgµï¿µþëv­Ø´)xóÄI“§¼9õ­iÓg¼ýά#GÍ“Üwl¿qñã'¼È0¯1«™Ì0f 3œY˼üάcÞ`Ö3#˜ ÌHf#3ŠÙÄŒf63c˜-̳ûKû®é7 _Y¿'à𸿾ÿ½—¢^úÇ€€ÇG8æË’_žþò >¿öJÖ+ú:qN Ž;g Z0èäà+‡ ÿêØW C…Fùùnù§.]¼]:†:}øÚ´×‚‡ æ6ìoǾpxÒë DµCg*Xp«E\j´kìœ+_ë\Ágkrã!ÔªŒDâÕõS쯄Z.ˆ­ÖÔ·€:4Úã}‡YØ­æZƒ®@§—ÁöÒ“dœ.S¯‚Lçàõ&±-†O`„#ÚvuI,»s•M1‰<Ú“öD!u;À"Ú·+LŽØë2ú\(;Œ½ð!OªØJXBoÔ¬;¡ßµôÙ{»Ÿ½D ‡å¸‚ýë•3/n\'Äÿxífˆm‡ëY¸– –ÄòãZ˜®î¡+9Ùõ',ª´be‡?ÉKß&·¡Òig±«é\'ß_áñUÜajÜÛxWçla½µ®šð‚íàe wbhM ˆ‚&]I¤d–áq£Æ‘YÎPd*?¨ã,¬¿zø@¬Ôùê­«*ÙÓP™^Š+ˆÅ‰L'‰ÑÁ;Þg ™®]ß­pZÔ¶ÝïÐÅí È7dåâkèë„“Iš>Ó jgHVĹ[sÓl¸Jnt zwön çй…æø’ ÷[Q~Ï=œ÷h LıZ¶IŸ{TÀ—¤›ßÚ´|Û4"‘ßKåV^¾Ÿr_Oø‚¼"tõ ª‘^×+ýä]5¬ì‰ŸFù®$‘¢ó·wÿòõŒkDR$_I>çÉ©«&·I޵¸†ý±}ü’›g —;ˆj¥Yœh²«» ·%b ðøòˆ§¤0𨑄ÿë|ûýôÊN\ywp« ;q>€Ø§jí9r´ê‚ƒŠZ÷ZwXK¡ôƒ 7ÅN·­@côUX:ÇYÏ<›#ÌeÎàw<ñ·È$\…Ó~@9r›¤UŠVH#Ã\f;àV‘-{ñ„\övàæ½ ÝÝ‰ä £ Ou pe`¨’c [¹ÊÌLHN¶ÎõmÙr| 8ËÕd*™BÜi€d“ÇšDçö³ãÓËXv{ ì!Îûò—X2Üʬ+¹*7¹ìV—E÷ê:ôµ°NhšOç™l>›ß¾ñ3àðÅ¿þ€<ÊFÿHzËeg‡[´‚3R#ÙúÇêOwõƒ)Äžô[8m®—±-LžX:0r"Â^ñï»Ëfq¥Y"êÂçÒ¯r¹2D ]¤J¢°7KsѾáN§›$írî"éJÐBšs\6T ¢‡´öÒ4"GVG¦K:³ºK…;¢ì‘¤¹s6TÃö°£‡½¤8‰kpŒ“Èl9yùo.¼â¾nÒ=’~—'\“?f‘ĬöÛ¶ní4¡bÍ3LG›£Ž{ocÕ„[âKðdñÇP<«`}&ÚËÖ%y^xg0á^M^!¾ÍÀ'ÐvÐTÏ0ˆ'CYŒ UD&%†¹7oÕ]dñÅOnz³ýÍMTfÒº9oÁ¦½v8ä.n3ã³Á,Á!7øž8?•¶c!…(‚ŒšGæPˆœŸ•€ñ[öaaà[r3VDH§*ƒF “0]Ú]l¼ÇÁž eDΙ¥¡¨°ï:ßSaâà!|zéé²ëø~Åc/–È­<²é“ìðo²¸_wT_à(°‰Ånv®¦°EŽãiÞý,WZ½ ÖF'C8Z•`ª056Õ» ²ëóÀoI¢;-æQ ésƒ‡QÊ|Þ9“ï:ò¼ð«zR+m6Ü %Ù÷ž©S;Л卽Ã~_Ð𴔀1ÂTÌyp_)Žóú2"ЀDAiߪtl2G¼‡±æ¨÷Êî¢7nâM™_ÄÃ|n‹¿×¬i~g¿ŠÔÅÚ¬à’ =VNœØ8H/ÌÖé*+½ô•‡<k«(wÙ#úóÉà†ä"y@£wžGUôõ…KŠÏ j®m»ƒ½²'é]j>è+†ìJùO¶‚ÎÐ@r’ ÎLIÍTûÔyBÍžƒÏ’õþe¡{rÙÝÆð:ÕŸ)>f…%Õˆñu›¾¼u׿y ,Aüö_¬8àU\>ä•Êq»?+û#ÁÂúj7h‚ix ülý¡‘ýÖ ô•/geGIo"K ]F¶5ã ª8[›Îÿroñ_'°qã©‘àLV‘·ÈdâA<ðM2×Ée WáfíÞ÷i­8)Í8ˆ¡œn´ûëeDY:WÎã0 †+"¤ÚÁ.£29ÅW¤ž%ý$·\©»rQ8±¥ÆÏw Ü+º­À‡Ük±ñ ã®Dìæ[ô…×…‹Ô_=—Š®Ì[TÏŠž$‘Lbÿàªß¤òçSÚ§öÁ5h¶ñ'’}×FØRì ¥t•Z¥IÑN ä¹OˆÎObqx¡½…]˜–{Œ–"KF–šµ2=Y¨]aÙþ3§ójà0´„×øÔzÖ'øjV‡ìÜä°v‚_Md+õo¨ =Çžj±—Qºµø+kCÆB>Bª|=‘æ”wÝ>Cl`÷BÉwB“Eê§žHoéMÔÈ´X!µÚ*SÅ—¢‚ÊÑ—q -ÛÚ 'teð\bÁU¯èÎE[G§­&#ù ¢u"4eh²hÖ¶B¥Ð ¸ß«Ñ{4ÖÝe甑” JRl]´2èxSaÉÊ3AWS­H ÞÙîwüBÛÙ³5‚ƒ¸†v°¦û­f«ÓÛ|?ÑlP^À§}Ñ~2ÿ‚Ö¯YðT«‚!‰ ¯ˆ®«5–7|<{ÿ»dÀ—Ùòò#)]5bß‚‚PSUi„ñË’}“‰›¦Ä©r‡_G>«+—:±æ–U£øT“šnŽ#³ž{5®Ãmcä1:ˆ5Á±9Žî‘‹-:Uë•”Mùê\†¼¬BÔvösÒu]‘öTU«ácÚ öß õ÷U%ÖôT&™% ЦǒЮóN0‹/›ìÚÍø!Íö ñu>¿Ð*x\qÄ ä*uìS©cÏù¹²{QÓ#•’Æ®~©JÐ@†sb.MÞ¦†}5u£©¤Ïn7ÂÑ úH{:¦³ÔÏ|t‚øÒi~)‹#~ë™ÇÄ¿þžâ$ˆ iq¯Ýh½Çk£Od?ŒD+³/Âá½æF«z–’E£Œ Þ¾Sán%pmä¾ð6õYj[õçëWYö5¢BÑž`ÙYG÷Ë=Ÿ¬qH8£N‚ “ùÔ"­.†>èÝ zi)µ¥ÚjµN 1\Wåd¢œÍÎÐi³TâØ®‡NùÉ:m.p%[)±{àècÊPí6MÀ6½7©ƒk˜¼k6Û͹à*œgr¤“iê¥ézc6Ÿƒ£¾4ïîqì-'©»yl”š PõãÆ‡´ú¸ ÃÉ9åÜ '£éÀàp%•iúŒT*M#øŸ)°¼¢ZƒßƒKÐB£®PÔvN«µ£îÑí±¤ÓïóèNÆÐátYLÆ‘7‰'µuãÉD\„Ëp NÁùŠ|Ã!ƒ¾Á,Â7>¾ý5[@òIyuÚ¹ž³‰-¾ùežÉ{_ºÿµç‹óyäØoÞ{ï¡ÒK…äÌØ$ˆà¢Ê¢÷Ô—kZ}›6-|kÓP°3ƒ>'×ÿh†¸†R Û=í«Å Ö¡ï.},Áh¼Ìã,)öEæÖ£F~C^•“§¿;$øƒÖ¢Ær«»‡À»RœC·¹-ä)Ö³âYëÎ}YPíX×} ç]kîp;7Pö‹#pÿ&<ªÞ£k,5ËóŠªë÷5Œˆ Ó&DÈÓ’£B½(‘8o² ºÜ¸?´M] ܃˗¯·Æ·FTË[ö¶dWЪʃV™™¡„d.®8¹¬ 2·º<¹Ñ;ÚMåé!x4yÀ_´è]7“y·<)!6ü9Y'AÅ>–èÕqîàÅÍÿq:`Ÿ¿ž¸ÑœxbK°©n-¬¢zééºÀ¬Ý e2œ\æßXtâä‘}­‡ ò÷¥w°7Lݸ`ë(êŸ*È¦Ç—ÍØß$Ö›Ï<¢Ã.Žh{ü(Â2Pö¯•ñ¤÷UÀ8‹ÑåÖý‡8d*É›•L†%(Î_Ü– wϰâFŽ ø]1™tç[ÒŽ”ÖW5í?eòX[(o‹á±ÏɯðeÀ1Ü¿Ðn'Ž¡ÓÄ2KsN~½ û»rliÉ„ƒ®DçP¨LÕ¦¥håªÁîà {#/rÝgu6=±ë6áìõÿÿï˜n¸­ŽóáðñïÊ¡3Ja¢Ä?‚%° ¼Ú|ÚüN«€»QþE]&)!5B·À?6¶AÚ‰ÄI7b/nkÚPInjۘýž:^{ºðÒ@Ù\(®â‰‹5ÀòUTM=05êNék¨Ž6÷À´43{¿\öS–¸oŒ¨ R„…‡™Â-uæªFÚJ;–ΉuŽgjÃ/âÇ7Q@®âÏ¢O^¶¬,õ>çœ?9õÁ |ÇD¦ïÌt*P>›‹q‡mðL×j“ÓÿuÁõžm“éà)™6eèô“ón„É 3O$ÇÉìIoH¯ó­ / ÒÊ-Ø:ZÈììc›„µ§Ôµ-Ú‚4P÷Lí®¶©=W§/Ì@g04´ìºèw—6°nþ€½ä²«ðhéÓŒ’sÔš”}#FÚPñºßñdÙ%k2}­¸Œµâr=ßj¾\Ø©S—gDAq¸Pše,=\m¬1446:|ó™Ð³×>¼x‚Îñ½ë#kBB"#CBj"ëëkjꩯö¥¨Ï¨Â¹­v-fÌ»‹yfIçøÎ|Jclb%8µ´ Ç@¥e¦*”ÅQNì‚Äׯ i›ág8B?†6'¼Ø× d¯µ­SŽ•TdRBWÒBƒÒ€2ÕvÚÑíŠ1¼Ýîé%ÉÓç…ÒDE·à€ö€æ·ByÌ^<}}hûzˆuŽ‰ËŒ¡×ÕéÞ×WQs[¯­ï¾Îàs’Èp±“VŸ‘C cÖ•óyN´ë«¬¦9D¡t§à³ªCß5^ξŸsÄ\å½a9ö{åy¸ïÃE¸”wª_¼–o¦¦ïRlåÈ‚õ0VÐ)v±ryÂØuÁ;­GÄjJVË!£†}*Á£/ó5 V.Ÿ@=#½UG-×UJÃLž$Z É×Ô瀯Ÿ’@v’º°Õj;à:>yò“Åñøt»×me×ù§q" çOÁ#g”NºIˆýÜ “×CysQ[ml­š´j¡ú£S­ç€»wðíïl¹a¥œl J«7t–=YiΣÆ<#8Ý-%!=m)-avuWèÐ2¼ûüô¡Ù±{¿õ3¾söã2ÂàA|±çÜ'¡/¦œóÆìÕ³L1õ£©þ¸+$–c—Š[€k;­˜”¬Yî&Þ¾K¡MÓFjÒ!M›®…NÖ¥TæB¹pHúEëâQdÈ¢7÷9åïûË›3,&ØÇµ„C"Ý&>XŠvèpïÞÏ}4|±âưªn€qEô ½NÆü›Öö8WØm•ÂÚÛáä3)|æ¿~d!n§Øçħª­'˜ä|×.Êw4[x¢–¢Z|ÁÞ:öúW˜pàmÇã?n·`Ì]jñĸƒÇg<"Ìv÷x?7³FUSz#íý?¹Wœ£ÎN×j@!Nݽ¼`G®kUšAC‘æR -^Nޱ±V’«7äd …e­§nA˜wäÅ–ùê½a+'ûüau¤G¤·oøZ•ëNƽo 5A{`S¹¹¦&Î蟾cêåÑØ[.û¹Ÿ¿G™Ü¶añµêÛ÷Ð<}‹Þ÷—};PÖ…Nx‹¯a©#x©åDM»j—IHð‚A5 ¦²†üýçÝÞ›N^&ƒéø.—ýJŒÈ-x€’ïþB×É&O$‚¬k1øn‰ÞÎá‹ä¿‚Ï«JcÂM¨àn4>ú¶ì¬´¾°…:ˆí°5Î/xõÚùlÜ©?ºnwÆüÝ}‰&>åó­ÇcUÉ”ÐgVrÒâI{š¡,ÿBqQnÎ (¦0zI•ñ3‰"`@äð:Åmç‘#p¸@8ÁÂiÃé¼SYÕ%w}ØMPüÓY,§1:„µ‡¢Ž[_lMwð;2÷B9÷ÁGíW®^Ü<÷öÕþ‚)ÿs뱸ÄÝŸ|v∷çŽÕïlw “[#ÌÔ7<^2uýÈAC^òí¿»ýK‹ò°O»S_°ü7ƒÇþ³êbŽÃ*ç¹s6Ϙ:ÿÃÛç/~uT°í¤åþ—Õâp+üËî£÷·V¶Hð È’¤a;ÖÆmÔï åÕ—["KñÁ©ÞKNy~…ÅJyròoÛ¼ýö¡‰s"†ª_×í~<'Á/I:OíŠ>®œ @Ç@\ 8pÞ>œ‡ýq@±•À.7Ó J™´˜ÈÖ[H¯d"¡mtV!éwšØŸ'ýï,+.'Ë+ÿíÖOïÝŽn(±ß´_ý§~”œ*3S¥Me¬ü‡‘gÉ >@fû’ä%â˜Ô½UUVfNÁ·£ì}áö*B |iÅPiÂLxÑxÁú7-2d.cÉedÌñ+Jþj­.Jˆ“ƃV§ÊÝqas‰7pÃÇŽ'ŽÄñ»ñO½WßÞ /ØÜ³¸oJÿ‚Id6:“©d9M¦íd ä]tí¸˜[zQ^›ƒ}›¡Œ+H‡x!•ÞTê·¼ÆGŽ££ì2ò NŸ‡áë8_ÅÙ¤QMHŸ´ÔN”Êá!2w»­Ø¢Šnþê;(AÉûw®6¾¿¾E^C­¸õÜ¥bz>€GŒv¢ý‰8㬇%=Ü Ø$-ÊèhˆIHib{ô“4bŒF¨,±Ö¢xé‘ÝãGIÐMü_]ªP„†šu ÆÚ7¾R§0…G‡GFÃêL¦:áÙð°Dön‹õå&®¸oõ÷Çñ¶8œ?’›ä)'ÕÿÝkŠ–8¦Æké/p–ÝÖj48˜ôA{éw|ØÐ’e<5ªPˆçj“*««ËÞßÐ>wÍß©uBjf| „Cl^B¹ŠN[wpõ9»B¬`=®æÏ‘е,M-æ™ì@Ì”ˆ™˜Ç›º2¬Mæº5î俊”õÀ¦» ψ%â²NW>»ØZã\aj¾213%E-¿ü}^F塯Y™ŸZX’UP`  ovÓm¢sú^zðµDÜ`}gÉZhN9éÝ÷Žþ·§X-þ{ׯqóÉÌBZ×g‡7–p› ó…}ÿðà‹ÃSíÙ‡_´t¬.t‚–ÓD[Ç*•.bO*°R!™#,ë 0‰óË1¤0Ç$%žE¬¥Ïå…>½§û¾`ÊïÛ÷²±o?†ùÔ6†ðendstream endobj 240 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4619 >> stream xœX TS×Ö¾!psE«B¼U¬ï^:8´ZE«­Z묭(Zµ¢‚ˆÈ! Iȉ̂ŒI ƒRë@qh©ÔW£¢]ÕŽØÚÖVmm÷µ‡½ÿ„)éªï½­¬'÷äœ=|ßÞß¾"ÊщD’%^ÞÞÓ=¬ÿNž ㄈ÷`•p艧&FÃÆqvÁrGÀæ‘”X$’Ǥ/‘Gª!AÁJ÷I/»OŸ3ç)î3<<æ¸/’*Bü#ܽü•Á2%Y„»¯—„*Uî“æ+•‘s§M‹‹‹›ê/‹ž*WÍyŠ{\ˆ2Ø}]`t "6p§ûry„Ò}µ¿,нϺ©}–Èe‘1Ê@…»—|g "‚¢¨™‹å›#—F-S,VÆÄÆùÇïPx%ì\¸ëÝ àu!ëÃÂe›<¦Ïxmæ¬æ¾5iÁËS^:¢ÖP/RïRs©µÔxj5ZOM¤¼© ÔFjõµ˜ÚL-¡|¨¥ÔTj µŒšF-§Þ¦¦SïP+¨×(Oj&µŠò¢VS³)Ê•’R£(–z–SÏQ5„r§œ©g¨áÔj$5‹„˜r¤R¨'¢y"“Ã?¢>oŸqœæØé4Á©ÄéZ'+©fF2åÌÃ!C~urþlèô¡ÅCvå™eÏܾbøã #ÚGîrqvÙäbruu­“Ž”æKõ⨣³¯°ñlûå³Ô³³ãpÁˆÌÐiö6»Þ·€·e´ô3˜+Œb›PY·˜NT pÙTÊŸÀ~¶¼F—@ ”ÈûÁ2ZzâÁçϖÊ×p8n§¤w_uß«öûÔôÃ÷ŽÍ㤟½ƒ|Câ㙾»cÍàkvýÎjËr½3…6\诌^¡;ÂV¼Â¿DÃ9{Éxü êdºVßÁbÇÒš($ ¯Eå|]†–>Ž´3NKƒÓ…î[–-—çVñ+p ‹¥ ýUÃb_ŸïÎäÉÅføÌ,úĵ±á䯩¿`Gì8uvÁÒ§€8üø¸rØÏbyݼ÷ÝåË×®_òô˜êµpßk» 1‹ žð.1Ù@—ÕW£‰«/Òj±ÎˆjøpŠæô\˜½ÛàVcD ¤x\CŒ7Ð0 ŸwÂ+’Áï`¨í$¬¤ÉUXa†if¸ÒŸ¦|§Û0*ØóçÎ^¼qnñÌÉË<—½ü퇞àxÔÿXjb@tÿGˆ??¿ÅWÂKï×g—þ%©=¦—TzÐÁ;¨´ˆ/Àöï,ã=šzp;hý-¸Ã,˜9 ^Án<–ô´±‚æ' 8u`7Ìà!kñ,æmžÜ0‹Z-PMBç-¸³UÈŒ¹ÈúÖ!;ŽŸ‚¥x䯀Õ“-Õ‡ùØèM[€|èåì:Ÿ9sy^½ûýUËç7OÌ_ÁõA+Æ ~½m9aÙJ‚öç}3+³Y.ðôÁ‚¢&¾[ÒgAl·ë%҈ђ(±ù2Vq÷ú'îàðhðƒìt<Š9ÔŒ z®KÒ˜±/„ëB«­€´žÚ@Û‘ ^µÀòoFKO€V³?œÿ žátÑqµˆ1êËëôÉÌ~o¥j•7/ýìPßQØÁÛ¸s®m¥t™5AQCXÜK¨õ#zdqÄG1, ãè§Ú>B!ç)¶»Ø"r°Gj—Ù©¶@o¢XãzÝ ÉæpóhéC8 …¬27.G‘‘ûv :Âhjüñ‹RYT§K؛ЈëM¼ERŽjeÑ{4éÙœŸÁÅ“¿©œ4íqÂ÷^z¯=íó¤cwí õغ¾ø–‚ˬÜS…kFøW$‰HÑPT®k)áÚƒÎf›´g4}ñ!/}ˆ~ì!,é³ìŠùW½Èï$ fa¶Í|<û=˜ä93ûJT-ññ[œEO¾Ôuãö±îJdÕÆ&pZ¯u»•ˆ™ÎÔö ok:*d<üÙÄê ¨1]ty-¡uÒð¾p‡î è_Êf)ŽÓç&‡ÍC›8¨–ü}G=ÙÝÅI㢣ûZLVoöœ›fQ)GìübÉÆ"|‹à¦“é/;£ûk A‚葹U¡jT|°÷x,²€Ø,*RÄÂ6ë âD4RêÒªhr~5ªâÛéÍø´“–Þs édòQÕŬâ`´›ä.%&+=s{â-½ N;µÓ•5är%Šü¹5ðpw®2GÝŠÜZQNQ¥¹ö[]iŽ‘ÑÑy›ZðÜ´’„JT‚ZPNy®‘ˆòtó³ëÇ–íÝàE"+84±Æðµ‡cê/Ÿþ»órÒx—\Ûð%~iûx´XfH¬)3µè8T¨Óé÷–êö£"Äüϙ𥼴 /ËÂ#6O»ü¢ç#NÛ‚: Ú™ÂÆ7$H‰bwª‚|Qb¼v:Òþu ŒÏå,ªBÄÐ H¡vj¥Këø7d Æ×ñ‹&,xèt` ºãÞRÐ×ÿZipÆ“ðH<Ë)Àö- éËV, 翆Ýx„“<¦?cäÙà}”ó6˜Ái°ò«IƒÂçߡԓOÇ¡XB|}-'m÷?JúÀsvm€—ª· _UH8ƒ7;vIþÖ;¬å9Þ,2‹Ž}ó_€·‡$íÊP¥‡»ié̪TCzÕTHSût6Òð~’»e#­ÊVÌIRDxe«µH—Wˆö3µªJEd‚*ÊÿP@ûƒ0¦8—ìÐ]ˆî »@Äš"PFâîì¸t.#)~ë"ļ¾äêwš@ÏŽ T^\¥©AL¡¢¾ëEä‹®Áã^ÃÃ~®Àú¹¢?«/Z Á,ºÚµb8&8±ÉA©Ë»Û^ƒ’ìüÝ5 ¤AÌú> ¨‰ïÑHÂbû¹3»0^ˆÒIŠ·]ÂÞ¹I…Êýyéùi%é%h?*-,,ÍÉÿ òKÎ2ºž(ú©?ÖHš ýYOêõMj3ˆ»v %ÍqÒ£2札³b£d€eWzñôþžþ<Å!M+g_Ì„ü§³´´½>tGùöç°hro‹¾ûÊïVèƒ:S=aŽK%ë}gÏ_ºæZ÷OW/_½Ô¾Þ›T÷: –Ä|pM>¨Î‰DÌÛ6LÕöh¶ÕïvHëhXÕ“µ?¸\{¹5”äæ…üZÉàŽçmP«í‘kûÕ¸ 0Ê,úØ5$ó`=k¨B-@¯ü?‹‡NžHÉð‡€…1mwk­ÐR¥eŧó1ïmH•£…há©Ä¯Ý¶´ëüÇWQžŠ¢—Ó.D÷­²ÜÿF ùÖ>3Ü÷ÃÛè[Ÿ¢nOÑÎf}u¹é›(ñÍùÛfr'ÚšÎCÜ9Á& ÆÖ×'ô·õUfÈ2‹ã³I3› ÙVE L×Ý{÷ÝÅ+íôFÆNÓk;LF Çß韎-߸qûòÉ$PVŠ«.À¢O>¾Û.¸ÖŸ‹·¶´#çÖ^-ý#4°”Ýàßvö“ãÇÏ|ôÁÖëüü6ñÓƒÙœìÃÊvÄ|ßu½»!µ>ÁÄJjr÷ëò#«Ó÷!¦¢º¤¾:¾qCŠ6dŸX\µ 1¯.]øúöŠÐ²x^Š©”ÄÔÙX\ª(J^ä‹ÞF)̬ǫaŒzÜùU‹êÔ{u\R¿q:b–Ñi( ¥íU£ ”\šRªÕ£½(woiî>†â‹ìÄ…ÇŽW55éùÚò"Ô…˜npB³ünŸØOï^h‹z;µXX'YëÌñŽuÞà`õSJ¦æ?Œ5ÿ¡ÆÑóæ~æúVXü-zB«Dð SÁuúûãïnññ]ëÁ/¡Á;ŒýgK•e¾^p;sx™=t WBié©[D¿4 &¹1Å ä‰dUa2Sâ!Ä\¬ùçá¦h”B4‹L˧eïJ£“g/¢ÂÔj.¹^iÐB÷öW|°œØw:…±lŸä|ÁŒN¸?c‡§mxz–>²M1F¹<&F.7ƘLF£‰ëPhv=sÊ/^¶Þu¬)ã‹84“Ù´ýÝyrŸÜºÎ¿nÏÚJm…¶2¬_Ýá1½òΘ_ÚTĵỂ—ˆ¼c®Û})èƒäýüŽÖÈ‚·*éù•þ%ͨÍítû‡×À¹ìÕð|.'¦8C߯0aLŸÄÌL¥q;š7”ø‰)^8ïõwN®ø"šHÌ\í}ei–ÂC …:¬Í½… qj¶×Sm‰h¡ñëxŠ<îÃŽ§­Fµ÷h|ìĹVö¹M~ƒÀušSPÜ@>mLJÓ™á”ðifØañÙ fíÖwìŠÌ³ö#ÆÙjýXgB‘0žÍnˆC*Ä„õåÔ€Þçq§$(¶½ßöÙ‹‚xx["mï>Úv´º4Á“ÃIüÄoþeÓÝ’)Ñ# gÈv$í”sêCòÊPÄHo‡!™&:Æñ4¶ÀJ³¨XЊ9¡Eñ€Æ™gGÚ¶:}“VNTEÆ¥­à£ÍO­V¢T¢:ãÐn¢:·â­™^¤S£§à#HÊm%ê3×÷#¬Òe( ò¼å53²ÀR7"à «ÇÃhì€'â±Ø¯~Df?p|cD"²oy‚3L‚ –_nt]}OÄ“<±ó[ý¯†›‘i$“¤÷’p‹µb3>#99“ |}SJ|v¢66ÉEefYÕÑüÃǹž¹ùsm^yôƒ…tƒ37¡Þ"þô›š–‘‰4Œõõß÷Ͱú;}¼œÃ©ôùÓ?Ý<Öz±ãä%ô9Ã&ÜÄñó¼9¯ï2¥Tª+L%™ûS ¸²“m#æÎgÛ^[æ³v…7ߨ{ÁúFæx÷šnˆ´Rq_Ã7lÇû¦OÐGÌÅŸb ¶lËòÐZÞzXiƾ¬®±ñšUu_9ä+SGÆðaQŠì ìu{ÔE0Ò_­,áNÒ¿œ~gíêõ«<æ·EñyyD¨05ñz…2F6ãþZÂÅÑ_}“ÞG×¶ž_ÑÐÏXÊ, ыꯂ¢C|²ØÔ$¢&ã˜Ð¢ôFò0åeW:ß±EÏ ¨[¶Õ[ð˜>˜^ÂÉéh”©MŠ#ShÃ’Ñü‘~$éõ¾ãKàÌ0‹Ô²îÐïÿ€Á F~é;bXé6åthzj«$*¤lªÌÍÛWÈÕ5­Wkj+8‚˜GG£b’ãwóxü›h `v¢¤Ö†}ù‡8é½}x1û´×ïÅû„Ðá<‹`è¶»Á§6v-ìˆFŒ"#.M]œž—ÅÃl,*óH{ž¸ óø9õî´L¤fÒòãjëa;Œ¢Þ9‹7ÄBv1¸’„LXyÉúÞ³9‡U{mMLÞ³;K•I°­.K¨hzô8˜wñ PÊÂëó t{ zÓRsUÔ!xˆ…9PÖ4“Ð[CN&¡o&IéËú@Æ;ÿžp²a¶á‰R/:'L ¾OF°å:„ ™JuE\Lº:)ƒÃ_üïòôD-Binª²½± l>7<¥XXR Ši¬*˜-C9gG•|Øó°a–aÏPÔÿÁ„×Òendstream endobj 241 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2931 >> stream xœV TSç¾—@î‘¶Ú«ÒŸ{c©Õië¬Ö®ÖªQ”ZTD!ˆ@‚’¼‰äGP! bÀ`D ¨uhucS[mmu]W×§uk™¶eô½øqÎöìºílçì¼É¹É9ßý¾ïyßç}ž—e|}–e¹ó×Θéýù‚ü4+?ã#?«û°b Òè{ò™‘ᣰõ 4<†ëg,«Ë4.ÐmËN×&&éU“6ýL5cöìY/ªfNŸ>[5/%!]»I“ªŠÐè“R4zú'Y¥Û¤MÐg«&½–¤×o{uÚ´¬¬¬©š”Œ©ºôÄ×ö¢*K«OR­NÈHH7$lV…ëRõªš”Õðí¦?èR¶eêÒUºÍ é© Ã<ªKÏÐg.1h²7ElNØ’¸Z•œ2cfhØÏf%ÉD1™·˜5ÌÛÌd&š™Ï¬gÞd¦2 ™pf³˜ e–2aL³‚ÅŒfždf ó Í ãËè˜Kl›ëó¬ÚÇã#+Ö+nø®÷=ç·Æ¯G9Ui墸~þ þ+ÿ§üOûÿ= }?bíˆïdSЀxä‹ dq#² ù(ö_ÇŸ%> "’ÞЊôQ’9E~jîRl–ÈGáj®Áö1¥ñ 4˜â G-‡ÌÎ_9áȘ+’¦ÿ¶„ ’{ŠÝòS.¶± rê|zÚ}2ƒÌ !cÈØ{/á œuû>މ¬È@ÿ[gà—µn©¾ýÔ!ü ÜÛêê!bøW€ðDƒä¸a}}ß#¯À͘)¸Ê0ýÅ»Œ9ÍÇ»r];º£Æ¼¦ ×줰JòʺIoì„ÏáðÐø hð “~Þeñy‡¡Š€9Âàuÿà½ñj¥Ó†J8çáœz‰£ó÷;¸ùR'6k”ó‹â¦ˆo¡C” ó«ÉH¾S$¯,vɪf¶íGÊs…Z(Ë-6Ca®XjÚe,1él±'ŸB&ó>žÙR"5•¸Š÷@{a{:hø×§ƒaíò½:±¸ÎbÍÞ&½D8n;kÊlp N^îí÷-g€B(4ðäÊ…kº‡ÐÛ½´00ÿŸ´ßÈeÖÆ9Ã)úç^%*rÿe ¾p¦ÖuRŠæ0ü'ªËaï škó¨ ÇG@•°¾Mj¹Øco€èÊvÅQ®U»1ʉ¯+ká=…¼Ó„;46oÆž‘4QûWѦ¿<Œ"ªï§ãœrªÿ`M.ï°˜òŠ¥´¥K 1tÅ >}QrúÚ:¬'îÚcÇë=ð”“@ë:>¿¡RøÐƒÔ,üúîx…6Å+Jñ½²ïƒ®J›Åls sÀÀo:–}¤Þ]ÓÕ‘Øùæt¢H ¼8ažúyøß…Vî!±Çpæ½›Ç0¯•m¹…ýö[ ƒK…wÓ.B ð(^øô£îTw~…ä<}>¼}Âcc!Ê‹NJZEÆ‘q‰Û®\†)hàù.ƒO¸ÐíEc4¶áø±£så#øgêun×Çðÿà¹/H„8èGéÙ;d!}à¦ñ7p3 Op£Ïâe;˯OkÖB&,¦ß­=—tËRüwUw«íÎÛn1æY¤’uÉ,ãÕ¢{üèÜâóÆ„qÑ?ºéF8k÷ìÈ·,aäR¾OË(w‹Ï{˨ÀŒ…ÐñNËæødmBB‹¶ã¤«¥C$o’%”±=ÿbB­Ù•G‹§PsôË÷ pí쥻øÉ]–ÉË…Iõ¦¡šïvõôöÞÞ@Æ:ÄݰÔ>2Œä¼&g4Y EõútǺ““iŸ†ÌAØÅî Õ;¥sÑG‹ûô2«Ìõ†ýyN¬åՆ׈o(‘šñ…"Ñrvgýht‘ÃFgµ–Wˆ••åû{+ï7”*Ó?èïÿKÄ]Â6–{»‡Ñ¦ ,ȼZÍே°]§ØšàúO£ÊÃ9ÿ2Å _ÒÉèÞæsÄ÷… ‹¶îw|¹¨fLèC ÿIìçç.Ÿ¨Ïœó?Ƥÿc‰·Yèõv{ºêX܉~ ¼?À N3lç-# Ê~»ºVyÎÛÛ÷óƒõDRs¶¿ÁýÐ9lƒÏí‚xƒ»=ìE ÆH|R!Ûp« Qš ÆÈÜ‚"ãÈ¥}4MÙvì«ßÕT¢â׺áT×)ëý&/{ñmOnC‹Ûqº3Ù‘¼Gl?}~ø{]o,˜óö‚xµDRHVA!•×ìàùï‘ùí'QÄQÇ¿À';ÝìïÑ#p¼«ñ jã³ÆưdwkŒä)¯if¾#Õ¯IMÕL{°ÃÙŸ}õàlú×dZ“ø§¦ß^‚Ïø› .‰øÎŽ|uÝÉGœÇkO7´n(;;®ø;ž’R»5^JÓ¦™Ìù–,K©¹ØF(åsìàu+šN*còRšÏO½®¹g½žÉò ´5Q5;LÙ«-µçNQß Uù3”ˆ±;ÖÕS¹á Ñf²™€Ï‡‚‰tQªïª«°Y+ö‰UÕî®/i–á¥×@ylËòê_i¥óûÛëÝiM[RÞÉÞöÙ,S{ïàãôÊmò즘¢­j)(¿JŽ,ǸºŠ*%‰-ã<ÈŽ|gÕú·–"Û8ÒÄ0ÿúûÄendstream endobj 242 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1024 >> stream xœ5Ñ{L[Uð{[wAͺÐ̵w&†ýcAÍtgc™nq@aYSnë ÚÒÄõÒÚÞ_o´½y´H3U”ÀЄ8 sšø‡KŒî7ÿð?Ïí&^iÌÉ/çœää|?¿sH¢DF$YÞÒ~©³©ñ¿åóâ1R|V&—Ûpô±¾0U r¨(ùäñÚ3Èû4rT¡ëO¥$i@ªÅÞ7è0Œ.ú¤®–njn>]G¿ØØØLŸµ2“Nk£Ûµ.#cÕº¤…¾d×™× }òU£ËÕ÷rCƒÇã©×Zõv‡áLmí1¹Œô;Œ“q¸™^úœÝæ¢/h­ ]äÕ§»µoÀÅ8èv{/ã°9MV“Eë°0N'Ó? µQvAoU!ˆ¢›¸J,’ D¹Ô)QB¬“­ä/².Ùgòb¨²°Ûù¨ xD¢;⊙+s¯‰«öð™…öݺIw„KÁ$ä&„äd&¶¾ES÷ÑÇÙŸ]EU|62û5ÌQS£ð~ÍUíM¯Ênp¾Ñƒ_1â#f|Ô‚—X~Ö Å»è9ó_}¿f¹ˆÂà›sÄÇù8ÖŽgOá©> åöz`zãýóc±0p@½çîtZv= w·Ñ‰)õw¨u ÕÎþMUŠ!͉úyÑ”%‘å{9ZÿQ@þ£»ˆGb1HP‚ؚƎ³œ ß(‡^0ë®mLx€ã‚A…‘¤¹{ÁMƒÐe%‘Â]å ó&³f½Ç®%$AHK#êó±®å›Û¡ð°B!}9lø§ÍËîœ-mOþúáÊ|ó?ɘM¹"É‚)@×߆É@1’bHýùÇÖýˆ I¤5XÎzkq•Ÿ‹ÉpÖÓ¬°[!¡˜%‘>‡eͪné\Ú”ö®Þ n™3Q_Q.‘z’CËæœ{qdÁßì2ôÀÛTea&•Û¥ª=rQ‰–¸i¼aÞÊ‘àëFݸKŲá0”lÚ—NòüÄ„ i¤¡Ã:žK€r"™xˆ…âjŽÇ/¡¦ÎmÔ†Úªã‰2ñD„—Z—^=åõƒ,«’Ò‘rUî;…Sò‚ý¦˜MûÇüœ*øBëå7á> stream xœWitTå–­KA¸„ÀgiòàÝD™g³@!¢ 2ÏER™HUª’Ê<Ô<žSs¦JeȘAÂè#òÐ÷ð)¶ˆÚÚbû¾›þPûKðG¯îe¯^µjUÕZuïwÎ>ûì½/Å;†GQÔøØM›6,^4òõnÅMÃý‰_‚mâaõ8ˆàCÄØæéO½óžŠz'#ïÞdŠÊÈÖš,¿2ÔØÜÚy26CšŸ™šœ"™0'fñòåËæÅ,Y´hy̱(35A(‰Ù$”§ˆÄB9ù‘³##!U$Ï™½2E.—®X¸077wPœµ #3yÕœy1¹©ò”˜í¢,QfŽ(1æ ‰±øQaVäÑ:‡ÞÅ4@‹­ŽA»±ÎFÌtú¡Ê«¶hY¹5Ëuàsz];èé(d³æðtPÑâ=ÆÜbä*}`eNÀ;¶äWu£×û èUAÉ&(m2²›‡Ç™‚`/€èB0hu*ç=Þ @ûнV|o\$—¢ ¿fx:D¡è~4§ŸÏMãÂæÜlȦ‹ÝE¡PmEwïá«qTÒ¬C¯Þ.jÒ1çTç”°“–É—áˆâUp^Îtéëš¡‘®)ôåÈÄ9·÷'|†þ¥MêíÈ«Søi£ÄqÈìJ(…^º©öòýº³ÚÄ2&ý¬ qÑ-(6H]»ÊGG¸çžÑòÙ¥aè9Gœt…ÂS`Ì0§¨™D¼tÜü°\ä)\dï‡ÅâNCäÓ»ºD~èG/¸<0¨ÍF¥ž9´5A3Ü66\äò‘›i ;_Ö\6Çj°ƒ\V—µ”Ž>DšOp¦®»¸†¶>äsGÐ#äé$=V°ùš\-cÔÆáZ™Vlʇ|P‚É¢—ï§'ý Ü®hutŸF“Yo³3Aº7­sÿ¼$:÷¬¢ìl#óö ôù`**8´óHaÐûŠ/vŸmE“kN±-—z;}=°\§3éÌzRß_”!ÿHø…?D5=@ï?à£ÏÑE³¾æÁ-p@-T—dès3!‹.ôæ5„Z+ŸÛHÝ–²[®`2oìòH€ž¹ 2G@uÙ¬n+ÛöÓº6 «ÚÕÛÒ Ö'á¶pSŠðè@9þ:G¨šÐ¿!ÛU$Δ?›Ûs£ã–ÓÆø’:~Ôu#«M­‰M‹y3ë(Љ…­m!gˆ4É­%¤N"åi†W ,à)‘¯Õ˜dŒÆ¬4’+ÜPvƪUiÕ©úf9þX±ÏP)ÑóÎoºÂÑd4=ÿåÄ‘¤‹™ÜUg¬noßõÞ²z ;Ä·¦áñù"6m}|2áSjZÃí*¨*¿J*(ÁÂÐÉû'ŸP”wÍ;Èç ¸©{€L¢t”ªB]‘š1é5é†|BO©Nz¯2^·è½ÊžÎSWÚî³å'ìÞfíÜ÷?™ùðx3ÑUG3U2m›0#;ÄÑK®Š/u·U462%{ûvËRE’x(†ƒ¶‚îrðCÀçq{ˆ,Ò-R»JžV¸_OÒ•G¾Dã™HîueµÝ?¢NÜF’¯ø\ 7EPH®...,2€–ΪTV55Ôï‹ë|OÃÑx&ž±x`åhæ§?ùœºRÞdÒ蘕³1  ß–ö ž~Ûv…mé¿øÎEhƒ®’€”ŽäDä i½¢N ¡Šc|´ šà¶õlõ­fÇ%Ð=¢o`>~i.Žuiå¿ýίª?mõYZÊ.³Î Í{42œÓ ’Ô™øÏp„Dß>!Ã3_PŸ ¾3ÈGÃãÁâr¹T*“æ jkškš™Õ#¾&mƒ+èpFŸ/ú=Às´9«‘Ätáa•¬$ r踶”3;Ñ,÷èN‚±HÏä¿¶y/ÐZOM3Ps™c8»exQ#q¯[¨è8zx£Àf*UëÍæbs`»ìôžº· ÿGàñxÒŠóñï±ÿÌèT_,‚åÑ‹—ÏŸ³óChJ­£Öâd,v‹eD´½Þd6ƒaÎ#±BƒÓa±|L_ÿ;ÛþR<Ñh:át4šr3µ­(ÀÊkŠìKj²ÉµUêNm‚óôß>ùÇ×÷.ÆcòAǘAíóXlvBŠ…„ÍžÏ9Û(Š%ä*Ÿ›A`¬*®È’‹åâÜ@aMCC}ƒã^&È[}`û²ËEïn.%ãÒåÊ*i¦$'9áxö™[_ÿ®ŽyÀ!f[t¿°}߬í¿!í¶Xª\LÝåS—/¨4åF¥¡€àö7háp'Å­æ~”6Ú>›Ûz ªþ÷^ëE†DƒŒ5LŠ‘ÞmZ·×ê*³2 h-AÈCÎ XÀ<>–f³6o ~=ÊlÒƒi$3”z,Žr's-¬¯D³îkƒFGR…‘Å|ÜBLJÑÉ:â’^p64Z¡m„&K#—¹aÄ©ˆi™öŒ¤ È2KÀ*c%6 ÊÁ{!üw8½½â’ìRˆ~8ª=]àøonŒŸ|Ǩ˜¢‹¼ŠŠj_¥ÍÊØÝþs]hA«´×„[ÐÝ[Ûè>Ø™Ñóÿ±ßiW;Ûˆx¶2O—½,ÚQC|bz™9UÃÄá-Š}J¡QmÖX´‚Ø@Ö± M¥¥läpeb5פîqˆ?¼ å ¼—|àÓ8”ŽÇï¢@TI© Œ@+Õj¥Ú¡ hY.„-É»X«×:ZéV{mDíü$™4ã]Õ赟(´!ÄG‡,‚™Ý‰i¹™Ò ì˜Ïow{›ÕB¸L[,æâ5)[ÒÒX%±j2M­Ãàð~òW4aä.ðõÙO|´ó¼ )«V"ÉÊ’Hj³ššjk›IØVýŸ;‚Ô{ܳ|nãpœÀá;Xh¯Ú­Ôj:#ƒ¿ÿe“¾ `-Îo+­p2‘Ãxb¿DðN¿ÏçdH)@‹ô­ÁÂQ#â¶`põW‡j.ßaü»¥÷}¾åby©Î¦ÓZ#›¿?™J§ÃÝÚj¢>ö! ¯F49Øjv)‰äêÀ긭ôú×KW­R&½EÜ{­¯ñZßeOx¡ŠŒï?ûjl³²³XXÖŒÊVaËØŽAô. 89Ë»ÕIh3²ó*³)ßÀà?ÏYíuÂhBýc÷•VüŽg|}¼é7 “©2KRØø)AÌ»{ä†tR¼Û¨Ì]A€Ù«ìV2g-Ð…æDuÂ}xøÏ§ª{¼ÍîºÐçÐC¿' üï ³qÏò”ä¥K6B2â_Á»«ÑË!ôk(BŽõë˜É÷xWù¿ŽYõ+»!øhç•Û2 e)Ì΄sóVã¥?OŽ2:¸€ÐÂv 5EUméIú>„Ú{{Μj½·a(é\rÝÀ±þ+0Dãõx… D¯4e«Ê5«VO‡ÉKäÁ ~=¦ mX'ŠÝ“.õäZÅ$Åî°¤±æŒs¶Jè„2K³¯+Ù‘n‰·nËz-#1q×úäí@¯ |à2G{ 9CŸ ¡¥(¢ÚÓ·9Úª /n¥N^ù¾áû›|TÁmà©â¹øÀ“è—®Å>Dî¡Åˆù2álj/“Ü»•ÄC:¬mo–W3AE°¤ 躲ÚòP¡-ÙÅîñC!1³äÃ[v5íhÙÌú²uñÍ» –Þ Â¯,Øyää«h+šÖA¨þ`„kƒÜÂê~ô]ç˜ë|nÃðXm^Â< ¸*³±ÀÀlÃ…x©žÄÈhÀÓ£aÞ­•(R«I×Õ¤+âT"2gU©Ùá (Û«ÕYûdÎèeš…¦‰²ï~€YMÒú:Á[l;|(â3ƒæøéúgîúãa)àð—ɦÌUaðÑjîò…~©ãŸ@¥Ä‘Ç#Êâ½äű+7ë ´¹löZ1¦AF+Z—ßêò25Ÿzúí-V¿Õo÷·~w Í9þq©Ï"©Õ£“QZ#³g^‹ /˜[Ìw¿ÍºœÐ÷ÉÈS×áyé*7xÈÖ<‡%Õhóú×êl=çkä£Ux•ÀPb6žÎ®Òy![ Q—ãXzÎm.5W²V dPKî&¾†gmÁ»ñž-,æw¼CÐXƒÆ Þt¹Ih³Òv“S•± ÏziþµÿÌdþÑ'ÐÅ×Xh…Ùb³V|i+c[ÐÓw¿ùè› »àqX€#ñB–OJª‡©óœš†Q¯àÄsgðüryy¶€…y,'ØÀf²í*¯®Lć¹Q9»üq@ÅRj\& {ŒdŸº7¿ÅuQ¸ 7(:”Dåån¯ÇEh¡‚y’Br.öÿH»Š8­”ÙŒM†"m±¥Çìda·|ˆê~ô ŠB“Ðtpú’Fnh˜8ÏÃcqX™ïûÊjôë…¾èã£Jn‚ KóՇa=ñ{©+Õsˆ4t°º2è«.ÀJ†à:1Êó¥¼çhæï€¶ÚÈcñý°lÁ¡¸”DY<™Ðˆà¸¬v—“éûëQ2º?ì(ž´ O.Ò¤µt^¹Æßìjìô1S`õŸ¥GMÐ/T×ÔxÏ•‘‚~»>‹óÂðK$?.Ç—^Z÷åhú™„TÀ™ôgà_û:†š}o¿Äž¼9 ºø©kCz\îòÔ½lâÖ]2é#‡Ç(‡Ð/AÊߊ2o¢×I þ£½ùuÙ2i–\åPzÔLEQ¥„·==^|8)5¶Cz‡ú‚·¾æyŽñé=%¥©HÃ(soArZ\ÂÁ·Þsé=4õ‡ÿ?ëÕ¸”%ÚµŽÙ»F„'Â"úš5ÿàôÙ‹Œ{[wܸ g.w|TÛ×EFs…ŽÌq±^¯‰CaXèß>4‘ »,1¡ÎÁãý[â[Üendstream endobj 244 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1245 >> stream xœ-“mLSgÇï¥Ð]¤«lK#ør{5èÄ9ÄéDæbâXæd+LÑÍ©Q TZFß/ôÛ– }yJ[ }µ¶…JQ@3Lf6>@Ì2•d™Ë2·¢1šl_öÜîÎlÕ,'99çÓùŸÿï),@PåÖ‰D‡ö>«¶0ëPf}³ca›s{rG‹x…Ùõ…¿¾ M/ÁŽÕ°¹)BQ…Öît×)U¬]J[[+‰µµ5Û‰7ª«k‰r‰FÖ*V"1)•ÈÅd¾é$š”­2 i ¶¾-%IÕ[;vètº*±\[¥Ô´ï¯ÜNèd¤”8"ÑJ4Ý’6â=¥‚$Är ñ\^Õó\§”«ºH‰†)Û$E§XÞÒ&Vt!‚iIYSÇ>Á9ŠCê‘ÝÈÈ‹¨Hq~K¤q!OQPÐT𧔣åÜgœ|†²e®>€?ÎdP¸~îZâ0¯2<éè6 f÷ŒÄ&C_.Õ.b׊··öi%>jˆ;¿¶] là Öw(õgµ'Ü& }šKóË ŒeUÊÔBýhIò¾3 W_Y©Lœ à'‡Ûà v>þÝã™Y«:†ó™Wl¦t ¾“Dï,s šÙ$xÂM„A"ÚŒÂjîE¸É~à)O™‚F­:mÅ;Y~Ñk\}Ð[" .\á6²tŸÆ.–òƯd7þZ„Ã!û@ŸÕí0Ó¸îä§ï6¬›ŠN%¼!oDȇOó3…(x€Þ¿5u›çs…‚Ó9R­ÐʻΙFÇ&ÒYœÝòGpŒÅûÍý0–Ÿ˜i¿ñø2$"Á^/M¹h›'÷µ´´Œ¢üãéÀùȤ08Oþ\6<žqìzë…ãÛÄ,Ñc8†"žÁ Ï<º6žX4د´¹-6¹Ÿ[Û=•Û–EaýºÃÉíÊÕ <¾AàÇ}~šv¹(+níQf¥Ú>Œ+dKØb–{xRæ§…SÒ‰Þeãû˜ 'è›&°ÛýfÕ¦z¶$ K½ 5˜Æ=Á¢°Õãèq;È~¼…­ÉÛ¢ÎòÞÁþ@À㉄ð¹oGå ­€r¸–À5wÍ|Q•ʧ:†N…¶arPhJ‚ÛØÝ{÷þ\Y:Å"ZG7pàÔ°+öøÎùò$°Íæ·ç¶šAr™ÃìÌûš0'´rµR­éÓÙ±ÌÎJžî˜NÔ70û\žÉ˜o ciC¤[¡ÒtH¦5 ‹°`ò²ø üÛ±òoÎÌÞ(úßÊÇ àÙ[óó×– [:,Î|äÁα§àÈAac†cPo9"9œ.èÇz‡úá_~‚Å7µWÏHuJ•2¡œNÇ¢ž¼ø©Tîõ$Êðà%Átõ"[2Ä5IØÄû]^‡WHEûƒt‚íb¾/£ú¹ €ÙÌÀBÝ~·0éL¸F/³ï—ÍnagÙóV›Êߣ.ÞFCÁáüˆH1¼«(42ÕyÀžg€= b2UÚ]FÜærô;f‰‚ðȰôYOÓÜ¡7tXÚÙŠ2‡‰V'f‰ã>ŒÁ¢¹'¿Ã ?×/öì7ôF«ª?ÄØý›;1~wŠ© †BP•â²ÍÁ¾Xu·_UX“äg|<‚üúPîendstream endobj 245 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1244 >> stream xœ•TLSW¾Wú – ˜·Ä̽>uL$S˜ F· ‘iDeµ£t¶ÅöÙŠ‚…)R<ˆ¿µ˜A(ºZ‘ €ÀüíÜ$è Sç61s‹3fè}ÝuÉ^gtþ5cîÍͽ9'ß9ßù¾\ É‚EQÁiYÙ³—(ñUJœ$¾FƒÍÏŸ J”²#“‚#±-¯³ÃMQÆ5eiæ¢bKa^ࣵÓùø¤¤™>!..‰ŸkÔY µù&>+_ÐëŒù‚ôXÍ/2k uB1=[/EÉ3fØíöØ|£5Öl)xoº†· z>[gÕYlºU|ºÙ$ð ó:>ÐZlàH3‹Ö : Ÿe^¥³˜BãLkWé qñ ï†!ôZŒÞGé(-D(M@2!¥DÉP)ú–ʤ|A² “ôÛt9ý§,QvUtªÄÛàÃ=ÁÆZ\ϱ?éÎL‰^žfup[—“¨²`se÷æ¥jÒÀ,wÀÎÀœ¨é‚VhƒãpÂÙ¯œêe8 [ç3c7ú.]r­ÌäHñÿçJ…Ë=âø®§…ñm1•}Z'•IÌÍœ“Xy¢ŸÃ?2Dè`œ jäA,~ëîÑ¡Ú\u²O¯ ö2ó6íêSã1æ ¨Úƒu]”o¦ñMÊ3ØFl™;$‚Ð1„%ãïGáÈ‹}ŸWÉ`Í3(ñ“òx…b¨,±›µyÖeÚfk{QÇ–>8 j;›|ÍíÝž/ z­‡r*quùa¬mÁ³<Ô¡Q¼ë -ÆãuìÐ4ºô!™LÂc^'á„ÅhŽÄú5mwÖm,«Ú\Q¥.ˆItÃrÈk4ö{à2RT·°µ˜ÿ¹¹pl'“«… ÷JJ¡.¬Ä4…C%j¹âc¶Mh5˜ÖŸêÛl-¾Æ¶ŽÄ…á˵áýO5è¨9.Ø _‚;:Ô"bT…ü§¿)°iÿÉ?èÏjF^¦iW<”í΀ÈKßX¤xyC\ïûz þ£œâerU¢Çæñ‡z¨ÎQÜ4J‹¥xˆ…Ge†Ë+~I>$òÞ,5¤VEC.̯y£÷ž¹ß­;-©uËÕÿGûPÍ( (ˆ@ØBHo°•‡»p ®Â7õg\«;GàêzwÜž˜óàCˆw,²MI/5€¤´GšØçÞ.7…×i<è`[«ª‹¸µ‹­P˜V8Zë˜Oœ §7È;knA·´nCç¿,ôŒÆ¹§=@nâûc÷¼Ôé1,üFc^É6¸Ž{ö}uþâY¸£Àã¦}/¹U9;.aiÇæ}‡]ÇN-×6> stream xœ­YXTgºžqd<C¢8êhö[lQ£1ѨÑÄÖ¶ öXBï]`˜)LŸoz†2 mE{ Š-êšhV“¨©&7›»›lö?äpË? ³í&{÷ññA‘sæÿ¿ïýÞòÉf Âb³ÙÃVmغvÁüÀ§ÓÙô3Cè_q’Ó’¾â É‘C›žùÕùÑèëQžB;ŸfqØìLrUfV~vrbR±³&-X²dñœI/ÌŸ¿dÒÊôøìäØèŒI¢s“âÓ£sñ_Ò&mÉŒMŽÏÍŸ4ó•¤Üܬ¥Ï?/ çE§çÌËÌN\1kÎ$arnÒ¤Íñ9ñÙyñq“~™‘;ictzü¤ÁÓÍü²*3=KŸ=iCf\|v‹Åš¿2ãõÌUY¡Ù9«s×Öæ­‹ÅäÇn(ˆ‹OOLJÞ’²5-}þ‚^Z´øå¥sžœ+~žÅšÂ cMe…³¦±6±¦³¶°¶²f²¶±f±¶³f³v°žc½ÎÚÉZÅÚÅzƒ5µ›Êú5k5kk k-këEÖzÖK¬ ¬¬Q¬Ñ¬ÖXÖ8ÖxŸ5‘õ$+ƒÌÊd=ÍZ€ËÊÊò²·°¿²vHG=á• Ò‰¹›'^{f8­ îƒíòÓk<ìs}OrÐVÄ‹z5J“¤“éõ '´†béƒFSø¡YÛÇGNµ”B•K ¥2$ñ÷–GÅ 4z<q]ÌÒ aŽ4J&‘´Ld4µÃ>دm BO#~ñ ’±2^\‚ÿÆñ:Äi>Mµõm:ı†Èð(Á´Ô0*cë›»€î‹øûæúÙhöÇœ¾}Ëy³Á f¨·Ëuj“¿YumSùNà31L*#`¤ÌËž†H´±QÊQ§Ô*%(´Ô›ÌrfÔú—X¼ð,šrÁ‡ÜAC¨«_|Ñý>ßïîŽêTÐR¶¸L† 3‰oÄl÷£9·¢ÃÞá|ÆŒá)ÒÚ8=QŒ¨´¨mT=†o4C«Ö?€@ ß9½ V§ÕVg.§ö£é¶_ÌIàãóX ÜÒÛò™ï*e¯¶”Aq<Å5/‰™©œc™™´ûë¿êÂåÒîÍ‘gÅQ{C÷®„Ä‹=§Oµ65Õ’•Û:UUÐÕ>·¿²½¤OÁ@oôzŠ,Ú"úM2{¡¾ìaohøûØ~öÛt8‡G#Ü«ãnŒs€M5T,Dkc ¢L1Ûâ&pFk#®®N¢×RÌ3ýŠ”bÅàçC¾Ì¦³Qá©: S{p DjV€pØ\°”(êa‰æ÷–E Žqh9=’·OêÏÈÍÎ͕ؔV%Y»×”Še?scf†m“oéiþ¸þi)·ºfuÒ Ã`1ÿRÆ9ôJ7ú¯:Ì#^÷òïé"?ûËo9t+Vq[ƒÍÞ„CeRP˜¨´É{L‘Ãôf÷%Ü Às®óf¸00Ú"†èO/zmsèV\¢$Ÿ¢Ã¨7âa#Ú½­¾:aiž6V¬>{éË/n~î}(Ô=:ïhĺŠ^íò>úã9žkW[Þ¾ŸÝ³«È÷؈¦*“Õz2¤«S”Zž:‘á0#˜9ÌôEÝ¡7©÷÷ÃáêƒÇˆÓÈÆÛÃlR¤nXºø{皎ûÑðÊC”¯·ûx¶Z¾Ñ:½Z§Â'Œ•yËî ½wʼìSwÑñ»:ƒžÍ‹•C¶˜ýĦ’Œ­)»DrRp~—=ˆÛ˜q¹C¹…ª¿òÀA «rcs¤»Š(YŒ^#{K¼.oYh! ʚ츉º<«$;;/%îPn÷Ñ–ö¦ Ò³ù˜¬ˆoO  ž‡U«©¬—vÆE!Ì*9Yëê´·R®Cî ö–²“õgŽ€ |P^D<J8ÄFÃÞFYïpÐÙ¾¼AÝ$ÍÕÊõz-9S!ÕËô âËœPvÔ¨”kµГ3û)½VñüŇV¿‹†¢áh6šð ñÉy©É¤¶?˜—R}ó°c_#âR¶Z0º=Û[Ûÿž/¦ó™h÷©;Ý^zšGæýͽŒ^÷Ùq!ߣ¾:^<³deäN vµ[ X\ ”ßRRåDµØ•/SmÙÑ‘|æ»Ï¿ýÆGþž& V#æþãÜq$(ä?2”±aáÿ¿´Å°üµ¥¥ƒõCí·»dô=½š~’·S…±­#Ä.qM}­·ýXTÛúGÆræ¹µŸ 1ý§Û¢p)4z½\A®œû‚¦ˆmÙ]=§êÿTw”Úùø¾.<8]:w üØA¾¹òÃ+œFýTp~( ˜1\†ˆ,ŸyÐaüºGçÕaÀðþß³ÐcúKжÄK#t|…LŸ_lÕÚ¨&h5áLûÚBLÏ%Jƒ”ÚlÔÕcÅj.G|ºa¼ÛÛÿ­±”nà—‚ÅfuÑÃûØøÛÌäþ‹MúmpÇLýÚ¶Dúsd—\^Tâu]b_ §sP:Ä;×sô8Ó¬Â8–ªÈ”͵òAîÕIË jRX5WXlÓÙK Æ e÷6úÚÀ• ¯¼¥{(,(–‰ÅÌËÌâñ[¶î^‰]ŠÜ]¡Áh3“eÕõ]í໬2»\èaõõi4¶Ö‰í¦T¯•h¨ü»“£@b›Ð‘^*5 A Pëmöj_Cñ(; ÌÌ'qèÓ¿`f61’BV}4nÐcÔ³ÿpõ±ƒÔϧ5·µ– ¯Åã²­@ü AÙ¡F_™é;3@Z½F§zˆÕ,/Z†Áʽ†Ôí¤@b^¼c:Zu».ƒèN8°~ 3u:ºà袯þ>P×É~{ ÝÙe«§¬^^'zù[“ˆƒ5YÉ“™%B£sL´·ê-ò£¹¿«ö²³ï¢ Øû6aãô!·ÂùµË¹eï™*Ý×ím®Sûñy«u¥âtuQ A¥¼Üçóì댩‰™•ÍŒMV’yÌ µ8 q1ÝÔîëýÃ¥ä1ª<¾"Y²#ä 2ÉÜM–²ZðÞ|§8;[˜Ñ™×ö]JØH¤¤Ñ^‡.úÙ}c?á wÐ5zž‹F£‰DÃï®Æ¡“bNýƒÐù‹½—®Ga÷>÷ú‰½ë……³â#©¤¸¢0dFãP…ËTòþ—^:Ø‹åíÔݬ«ãBþ„>?ÅË[,Ý©ÊËLæÇî‰Å²)4Èryì%ÕPA”WíÍO+Š‹mË¿û§[WnU‘ˆM¯3»±º™ÔMš«ÈÐ!_5e5DMd†2Ø™ÌäEGVcuûÓ èì()!.£2^³N‘ºq9V·mº[®£MhxõÊwúpN¶ç‹ÔOp~ïleï/“ffÿÇzS:¾ÌQXU]Zá2‘fw3kkÜ]8öŒ•ÍžæÎ‹×ÿ»‹5IIéi$Fßà©ùŒFcÎ9ýá¸ÝESy½'#ë9üE‘¡¾®´¥´º„^u6â{UñÏÄûæ&3³Ô?J£¥îÁ€¨ssdJ•þ²$EŠñ‹â5‘D\mÌÉ/[Ðl3ò©šÎåù„ö¢¼,af¶GQæi¨jÄêœÀß7¿v_E‘W9}#~ºPëõ8”Dl‰{ç ƒóÂS ÿ¶Ã»½'‹²j½*·æXÑø“…vmE¾«È%€Dbþò/¼öÚþïj,õ& Fƒ7ÅUŒIS¸á&^§Ôkq TY4V›Áè´“®’ºfgiÛ¶K…'À¸ç  ht£²co3•í—šæ4ˆ,iµ1Ù]Ð ćïzïˆÕ+÷ê•©/ zl×00áŽ;´k ÌIwQÒù= éG×Ð s9”GÒ;·ÌÜÎÌP>ò8VÒwñàüÑ>£ 0¶Îé%Ù·|ðó¡È®3ìs™šÁòŒ'´å¾uçò½j2ä[4¡o ¯A`•fçääHœÂÚZŸ×‡§:ü4ҵqèc،ۚìF»Án¬‡ ¾«)Ú€½¨<œÒÉ@‡Y8‹ÑTi"›Ðjƒ‡p3?ãÈ~'Wˆ5T•ά¯– ü°¬Lf3˜L¤Ñh08ëŽ É ÕˆD+·4J¥®Û?œÿ[‹“Šå 1; ¾°P'à”霄ÓÚ~p”€Ç%‡Bª+†4£2Mj3”aeÅ\#&´>Þ!ö—çáˆêÇÔ®B!ûþ„£ížz_)Y±¯ìNM°«U Ö’Êì‚PQt&ðŽà¾žŠ{ÑöŸî±¤ºñxgN5Ýðfa–2CWL­cJÿfÏw½8ø ÿoúׇùî&ϞБ‘é¤âÚŽªƒ])Éoý–’´]àío=ü"º|‘CŸ¤•¼ƒj4–á­Z¶‡á†‘»æE1«à"  M¸òezö2Ùñ ½ÌÉ~%/5Êó»o¢£ûnPm7O{[èØŸ¾~e(³?j%سóÍkÇ Ìô#¶‡MGôñõÓ®2«Tz}¡”\1-T™¡UzZ@`À˜ÝǬûŽÌˆþ EªB¾øŠA,¹ÀLuB—©C·öð_’¡Ä”‚+ƒÄ 0© KV£Ã`|¶àº-à©Ð|Ñ%Mh¤Mý-Íywüþ»þJ4ïãÏ/âhØòÓË™™K˜ˆuBkT×íChd{eñ>‰J­Vaøt¤Uj–€”ÈH˜¼Q*·4\¾‰ÂQpÇ‘¬—™g_\<3œŒÈŠÎ‰ÞºXŠƒN %F#&y{Cåþ&l'„¾‚º|¿Ç4¬½îz”M4TQLÜš5 qv±9ÑçHëtúó7 â>ÚìEä-öŸý¨ã¢ÏðL.ìúÁ€uΩ­RÖè<ø­C>ùÈmSµZ^§¦"„Š8ˆ„8gF¹Ê¤1j@ :•Vö*óöx½V¯ Ʀ³ÚŒ&›6y™n4´pÃÊ —^h¼ÝDˆ_æ…œ Ê!u±Ž¿•Ä<#ŒÛ»':j 9è>¯æ³Ú+ÝçüNíŦ´EãL$v«c”EöüºÖʆöã aKl~vµˆ)`B(‘ÌÜs£4Í>žõ=´12 OKà0Õ´Ï{ä:M£4›ÞÂSI1—áîØ‹ö¿7ѳ_Tï‡*°(+2Ë3ÊÕPns™m:³T¯KY;ŸY'šlÂdÍ­vÒFB!=èé“hh÷µ†NG)©J­­†,&lKˆ>Ž!nm«¦]ÓY°K±ikÍqü³"°Ø–éõEÊC6ô=åc}üâ´âœ»‹COFý¼oŽö\÷ˆ[ë…2CfL›‘X–é”V…AßˬxE4 "ˆÅ×·ßÃ÷&»þæâfa=©²Åµæzˆ©ŸðòÝr/ÔWn^yÿÔ”MS˜Q«ñ¬¬J²’Ïó jDøË.{~}dç¥wÏ}òÍ‘€ŒÁ÷(óûÑ(±6ÚÎà¯ãBþ€²/ò¼âêÌÔ”ô”½•u­þ–&2¤÷ô;^Ø“™œ–š–[.lhõ7û¤p[u:9¹:ðÎÞº€ÛØåæ®Ø¹~O¬Ã×RkRÚ*ÑSèIôDKQ]jlvRFj¼ÚSî2[pEîøåwÖŒso{Ž™ržÓÜ·0°3Ò¹˜,äæ^¯'×sÁ©÷ÅUd»RMË@4#•yX÷ãÎñ7”ùŸâ·doÉ"øŠ´€EVƒÀ ­ø+‹¼§KÔúišŠ¦Ô“лAHðØ®2 *mÕ>¿›ü¿w,L<ú€WrÑý‘»£òÄɲCØÒwO´W)€hÀÒ{*JÒÀbÞ ÆY/ì,û>²rÐÛ(Œ‡á¦£ÕêÅ–h@‘™X‘u ‘èTjQ`En‡ÊzÝË~@Gpèdç¹àÖþ9ÜB9ÈÂAà¿BLÕ?lñ°=ôý}ßn&Mó€?rÈ*ma1Ùø¿WaÒ ¸Ób§Ýjr;È`—^åB9Ær/—‰v ó¸ú9bèbÏÈá^ÇÈ‘,Öÿ¼Zìæendstream endobj 247 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1036 >> stream xœ]{L[uÇïí󲺑*Ó»rÅh YxÌÌ­Œ9…¨ølnâF¦d-½´ôA¹Ðu<Êk´½ç¶@)PP„"#ñ±á²"dÉH4&˜8¢ bFœ11’éÂï–_1Þ²˜ÿøåw¾9Éù|Î! …Œ IR]\úêÙü¼Dù¼ø4)Ò2q¿臵´ò½ëJH–C²brëÎ^tkš~ M=N$‘¤½¾³wô³™[KÅv‡Ûi1™9&«*›É×é`æåé˜W¬¬ÓR¥·1¥zÎÌZõœj˜Óö* ˹™¬B3Ç9 rs].WŽÞZ—cwš^Ê>À¸,œ™9ÅÖ±ÎÖȼf·qL™ÞÊ2s}Åv«£žcL©ÝÈ:m§¾Š­a«¹"‹É´v„É¡w²¶DËðoØi%’SoLIe]½5¡g·-u޽› UVöÞ4ÇY‚äI 2@ÉnB-‹PSäÛäw²—e¹Rô¥Æ¾’.5Fhów¹x†W5€dÇÑ1\´Žˆ¤AIƒè„Л{C «0ÒwmäÎì(íǾA€*Ê õn?4:´˜Ãi-¸ ÌÔö95CÁ™Üwuå†ó¶ævž‡‹àø¾®ŸOß?ŇƒõàµVCÁ׸•?7Þ€÷Š Bt„¼Œó“øÉ*ò^†D¨ÿ«¢Mz3K:pw°î£ç²qÚñŽ.‰ã¦8Æ?†Mj‡Ò"¨ ®R1Éè6Üÿuzyî‹ÙO‡Â wˆ@7øÎÇø‰µZTá‹JœA*&)Ý­@…¸üñCP\#øBÞ t +#ø(©í>5`ÙOø*zob Nòàü¥ôÔGo~;F'½(i×䱓ôæm tûþ`õç%‹%ˆÀ‡Ð@ZQ:tt m š[A™««ÓÓÁ ä¤ú;¡¹Yb7iñ:^ÈŒWB\ñý¿ÄÂó£Ü5à Ӡ'C@ … ?ã¿Pñäš\üˆÆ4 îÏBó®qö†aÊ3è‡f <íÐæíöüWM‹%‹˜@‡ðÀ^†¸pÔ„7°ÏâÌ#Gôz¿ÏïÕ†Á¡ kÑ:Zx(V‚¨£R·š$Ê­ðJÐÂð„þÅiZÑŠìl2Ðö´xÛ[»´ñÈßß`‹Ø‰3˜áÆn*Siå½å»G+Ì’´âO©Ö ´¤tªŒÏ>ó:V[º²kñ[@Å7Tb¯ø[¨/„ž}‰±ýñêØžtñKz î7‡ý7;î]\©˜hü¾òJ5¡Â)芒Æ<ï»Äûà´Š—·Íéñáø_mè~_kF´©®QÝ£ê™]3»µ»n{rÒõPr²ôRâgÄ Kendstream endobj 248 0 obj << /Filter /FlateDecode /Length 5702 >> stream xœÍ\éd·qòq¡?b H·¢~æ}Ù`ÇdYŽ&È9zçè]ifz=3{Îßž*’,²ëͱZ+oé ›G¿*‹üË‘˜ä‘Àÿ•O.Ÿüú?Œ8ÚÝ<ÿ{ò—'2ýõ¨üsryôÕ1´°¾LQDyt|þ$ÿTI駠‘f’Ú_>ù~õf½“BE¿z¾“&ª°:ÃÏ:Fãíê? %•¡Ÿÿûøßq$OGÒr’ÊÃ`ǧÐõ ü.F/D\Ý6òf]~ÙÍQa·2Ì?=…öFzíû™\¥Ï* µÚc—"xà?h››õÖ2áV[$ W^As)„au¹VnrQÉÕ«ÔŸS6®.° C´i²Rx£ÔêJ íÂêõÚZ`”†n‘!*jé±AýÙ6Í(â4$ÌHLV Mþ¼Î3 Á'–Øà´10ö¦6IðõZyEéyMA[—§!lˆ æYgDÈí¶vB ¹:YÏÔYX‡PÖ”–OÖt™„c®6މ…uh\ˆ“ÞU=pŽ.:ýY8ãNG ´Q¦ÏNäIˆ jZ[|ØH óÞ¢ö0ƾúIHÒi×§£eLKl•&„:::›úÕUà_7ÚšIÛp´‘z²&ÒÊa£Y½„Œd§Q'I– Žžòî~V0Yía€iã«ö53!"9p[h˜FÑ/£¢\í^5ÁfîeT§W¨2F T\øbtÖsÖ)•¢s3N’MÚÙ7òª‘·¼fÛ^°¦l Øe”ó0 "*i[ÀÇ,ôÍ õ2*ã µ²ÈbeÞj³º"¼F-nØÅ^²Êòcù@ü_›Z¼iäü±‘/ÚÏ>kä»û~ö}¬äßîVMlRÍ7T55L+ܱÆEzÓ8GÔðŠ•Ã½ýñíY1\³?Û³ä)¯h7 ˨äÙùüÈî¾RØ7)j]Ds¶ìÐ×,ƒÞ¶ÈšÎÛW¢egTµ*¹käsVsnšî-©lÚÙÁ’\0Å_ næoKG”‰ ßé/ˆ~¿,äÍrä½_€<0YïÁ<øfÌÛ±“ºdÉûá¬àÀ+*È'œÄ¨ÚÓPŒpšÄÜ:œæ°d9Ô™µíW¬­¼¤s&FÚ^±,ºX°ÁZÑ]Œ-m‘±C¤yÞ8I‚ÎKÖhˆ)½c,íÓöço¹»WssÃ>íd’äOò-ûóÇ ÅIáº}ý†e=1‹¯Ø¯XŒÞ7M?eö¢m |`öº^5ò‹m&o‰©öç/X@½föæ—p| jëœ<=c‡ãÍ„wvûGtF˜òú>ß{€IÄW¬$žsß¾>£JR¿¾¢=ÉŸZØý‡9¨=Íþ´|[ò§ÄJ_²®‘ÀïY­[Þ½Þa¦„T¿íàä>áC"Ò–‡ã{aþ’ýúþѪц˜‘{MU£’',~TyÅöpvwîáõ‚ 9¨!jӡΡÐÛþüe#¿n ÿ®‘¿éä M-ö@D}EYW¿Añòݱ ˆew®¢öÛA:n>Â;P€1”î°¡*ipsŸZ¼ =T’ŒÖiðq—ˆºÓ—|@œ=ò±Ûpò9mByʺçÿlä×,‰¡º—£>=‘†mÑalUÉç÷iÿ3ò•|M‰8k'Â&šsÎ*Ü5Û€èÓÛC¯òýà|¾.‡q¼·‰FKdý5»Ö+*hθ.?Šø‡ÚÏ…v:w¶Ô±·™7ìS#yvMÉŸËŽ1³+šúíàð~ñdg,Vóýò;M>çÆÇf7ʲÐÖÞÇK!)>egK¸°g9FrP¿HûAY%¢™`M¼¾WZ§¶|°Î[ÆU5áÐÎE& “xDU2¾0¯>—oKáóOMèg,I‚ê‰Õ>Ô"¡öÍbP•÷%kà]Pµ Qt'7²ñÁ'”ŸX wj]Ûv~‘‚ƒñˆˆÝΘÛ+‘$º¤Aáh79jüÐZ+ã̤æZ«ån£ä¤ãê“u-{"§§ù4zÌJMÃXGB~VjthKà ¶¤Vé •@Cq‰Ðžž%•5‡u&qrÑôGfåÈ;\—r2º† Ÿ×ãr®oàªõ¢ž÷““ý³å¾»Î x0 %S§cÅA&ôÍXYpÊ×µÉÉ#¹Â\mä„èk½r!E:'‡ýôœþŠ3ñèŽ~laDì»O#Â0¥¾î ¢å"ÿ.H×èÐCûyÚ ˜{RæuoEÒ\’‚­súVªIú±påUÓeZÃ’ëR´…¹Óª“Ýš“— ÐÖÔj³¦âÃ}#¯yÙÈW¼häv©(D†ªæûgk`ðÔ"©–Aå"‡ÜèyšÍ×)­:¥Àj0Ÿ ýêËTP‡Kò:O ¢ÌÔ‰åÚ±¸ =t I¶ËZƒãé8WóäªÒs,|½ ‚ë,Ð\Â̦wMKëpä'·T4iãzÑÉiçÕ\B–°P_Ê¿2ÍÉ$b¡a GÝïiÁæÙÌTˆ¨‚Q!d\´à {XDžhaC®i¤œËUöù#š×³l#2tã}›j\„5Ìêì†qèÁ°T6­’Ò1*XÅP½HêdI™QrÌ¥óÄ£d`1Á˜ü•hEj’¯4RÏëÎê®4Õ‰8ù€éšåèR tP¸»Ûf…±`0}Q-)BÃ>ŒDæÕAŸ¬*Ð*£=Kf¥PÊa^êKB‹{:€k]åc…ˆuÉhÜéˆêo›¯:CêÊAaF¨aª?¼Ë )&§\kÉ÷›± ‹¸J4›È‹FÎç2€ÎOùikðM#Ϲk䦿•é$´yN_5Ì|ÑÈ«FÊF~Ê;L`VË! Büž 4”  íf©R|DÆ"™‹e 4b!gðÔr‡PÀeDOªN8%]ʈ=¬ÂÒ*pª[¾ ïýPUX¢€Ó6ôXW ºA×3Ög¦v¼z¢™$ö…¾Îo·!ý\4³"Sü‰-OOäòtÒ–º´@‹Ñ¶\*ì¾iüË•ƒ­Ò¿CÚ•nß&dÐVª™vV̬B}\±Põž+ëµ³ff‰˜k5+òÙaQð£C“ô;ˆöBõ³ÜÀ€í_ŽÐ {ã4é&Vª¯Ä +Q B-õûì弫U¹Êãy²:š~R('t’ÒwVVP›ªIn-­ ‹ÑbmP%`fÇ‚%ÄbÞGf£p1‚e"_°Aý3£ÀC(E1*ÍrÞàßtÃ/KÚ/•¿òÅáÅoÅà©ãï5(ðQ‘Á‚ê¼LýÀ±«*¦ÈYf(Ñ+äØ5€5ͺÚRmîC ›-'ü#„äÝäeuh$8ÙDpËÊè’Œ„H²Þ?ê`q@Çèt#~⃢Uû4 Ûç¥é‡@¿BDÐJ7kj#Dg‘Ï!6¥MíäCsL 4wS_Þ|°¡0wkz>%6<€OÜ×÷$›Y’æÚÈ‹±‡Ü4ò¶‘%™è×Ü6òš OHƒ«FžÐ@¤lÆÐ^'ëèžÄüE´2ÙqxÆ6~ÞH¢¦§|J›J~Ã2š°ôtA•Ü4òlÛ-ÛÙ§,‰¬ƒÌ"’«Æ2Ľ°77x¯å*Ó/$PÿB šø”mÞ7Š \ÊkDˆ}6'•6›Ä <¹H¶K¯l*"#ǃр§Ú_çÏà¸CŠ=KrkÛMk“ôtæmÉ8Iÿèž!x@Éw7¬ŸìRzï,·EÑ0AŸ·¯ìÈʬ‹üÓ üôWÊzGï@æ z”äãb¾¶Ikq^ò¥Å‚KÃcR˜¥sš \¾|^˜ìAZ³Ýë®î9¡ú&$™v›{‹TÇöy6àîº*cóÊîh¿•ΟFç4ÕSúÀ’¶yQ!h0œ1.¨7Šrù+ ltË?Ž–1_ëï;–_ÑýY¼¢V”}dÈ{î[)´§šÍùW!yÒ<`¿—Ž”ÊüÀ)Ú¨Ò&ï÷8§ò93¹FÞÝíºb[U™rB@¦$ˆÏ ¤(Üû¿ƒbÁÞ£‚éÆV øœóð {@0Hö%“Ÿ¾¾]×hýŽ!ˆ »½¨S ÐIø×%?æ_ŽÙl\´‘,º»³<Üî®ðUµ*]~¼ÊΡìõÔ‚2x=øtzNÙlë/ÑkBÂ!yW^4”F1i—P;q ñij‘â§–ªÎ2S–t|hæZ©ô|å}ŒÇºÒ€ añBiíŠí‘W«‚‚@.<.HvT>ŸÏ̉ËÚœØþ!‡Ðqïø*Ÿ,ãþôÙMîÀ órQT$–õ8ËÙiu’e`ÀºìaÒ-BäÞ‡ÜöäÔx;|Ñ ÓçŠ&kDÜ >÷C¦3Ú´•&ÝïóWL<+ù£¬ÍØ#¦ ttÔhâ—>áåtšûvÒôWTóW¡ïp‰óŠY‹p°Iª{ºSÖ :Û`½‚ŸdÛÈ}$+p·}võ_ëšÚê×U³¶WYNª×@ M­0CØt“{6²;Ó©ÂïSH{¢ÇYI1•¬ÇýÏÁË 5ß•¤&&ÔNˆÂæP1¢³Ù ØCK’è¢ÓÉÉøÑU\Ú&Rƒ1Ýà4ϼ]ÞªÏKNTC¶¥Mû ú8_˜.¨õ¾?Žì9]Ü?Hôã4ó.ç±?w˜v™ÐËa~.·ô½ÎóI ÓÞ°À¼Í?ÊŠöòÀâ;ýÇYõú®•‚]TwÐí. ›´leÿ0æÓ†#éDΣ쟫˜œ•ÑKêÕÚÂâ•ívYýv%"¢+YÞÒCÀÇn³A°#oµ÷z6gvÏù Ð3»Úa­‹ÐiWqÇv%ŽÛj,ùaDÆ…Ò…>QUv{A@†$Mn´ƒµ§,lÈ{ûóêÑÙx¶2ÒVÑ>o¡O.l3! Š{”†œò.´]ô›Y"Q‹ö]ÍdD©Î0Ó©pXÊ%¿ ÌBM¹«]9iw<¦”dJ×Ò#Û’IaRNßñÒÁ–nöö院àzµÃà>tqAåœýéÏûò‹ Øù€þà­½¤Ôŧé«N¥‹Œ¸x=fܼN{A•Iàãæ–—€èþ·½ÓE|½Îõó(¤ºŽjÊECCò8ÑvÉzÞµÎÉYߨLž;›WëN$fÈœ.ÊëEq~F©>f~àî¬åI¦Ö¶dP$—5¸]§eWÃ×dþs·~›ãtÌÿ÷gôíLJTvé‰ÓüÝ­~Gv ô¬15°I¬4ϸ"ñ¦qê4¦J°O 7F=YÐÔcíwy!m'ÛÒ9ÀÀ4hŒç‚ôõ¹2˜ç2"Ÿ,h4ɵޯè£j GäRµšøX$QXJãI]už³ü Á€$†è9`II.z¨¿Žì+å«f¤¦ƒÎ‹<ëÕgyꣀé-)“XùÛuЬڜ·ÃEêä˜o¼OÈ Fíž·ø‰@ëÂsL'¹ìê·b¡a˜\(Vÿ¶®ui ËvÛÎ’/6•31¤„YÈ_Cø!ÿjþëò0˜£®–ò²ä”cÚé»NNxK ·W©|èÎêˆ;—y0¢q‹k1µÛΖ©!¤°sù±Û¾H]ŠÙaS¹-y6¼ÇÐg8¸§Fi†£éUÝ/ªrܧ A}'Ýød½ G¯s’ËzäZy5’Ü%ïç´7qÈGòB¯¼áBî™nÙ;ü]NróŽÜŒ$ö–ž*àžâ/>“ük'÷ÝÎ$?ão½ò/ºuÏw>[Ñ žáþü®‘²6ýçöqS?’‹Á§,Iº:£"«ä½O©F~Ô—Âú‡¸ëá‹/˜Í_¿»ï,Òö%+3þvxw»“²졯ˆý¼K› o "ÞÒ ‘`ðvoêïOOþì!PKendstream endobj 249 0 obj << /Filter /FlateDecode /Length 3839 >> stream xœí[K“#ÅöyÂ'¶o„´`ÔÔû,†XÂvv8írÐJóZë1H»ÿvgVUweµJÒ,^Û8ì bÉmUeeåãËG÷þ8b-1ü/ý¶<ûð;ÅF×Û3øãìÇ3~¥ÿÍ–£Ï.`…–ð¤õÌóÑÅÕYÜÊGœÛÖ 7²Lµ\šÑÅòìióÙxÂZæ½v¾¹³Öpɽoþ66¢eΚfº§Ò k8,˜ í•ÕÍtÏ7NËær<‘N¶œËf‰K„÷Ιf 9ó®™ñÜÊquäiŘö hÖjÇqñ ôxE¶^¸ø3^PÓ Ü§Üèâ˳‹÷Ÿ6_¯Ç±R4?iÞ6ç㉂K9ÞìÆýù7¸@{o­@¹”4­â ö Ó:Æm6]ù1¬mþ:F¾Òè(¶à@»æ%r°­õ¤€•oîáwÅДl¼y>žÀïÚuLƒAÓ̘fù(æšõU”ÊpG6­ÃœŽ ¼C\Á í'ÉÔ&èP1Íl°q’vEî~½¼ÙfY¢âifWháÁ=Ý£‘ÓMÉ1[²ñ2x˜5è?[bãËÈD:×=Ýž"!¶ku×ÝAôJ¶®ù©íÑ4 f™FJø[²ŒE^gÈ!¥õz°[—Nu$ 3e5{¶ Æi$a+Í‹ÔL)ç3Í]Qç%D’ó9-q ÐféiñLˆ”C$¶|Ø#…‹IZ=Séº}¬vó gô§lJX )1ž!!eQ°›®†ÄUÑ-NT+Àx¦j-&ù`á·²aã6WŸ®e o44¦â¦ßå4nòld[p¬°ÄBÛµF:Æ=˯6•ÐbJ¥£yáîU:ßV\·ŠÍÎ?ŠbJÙèz°LYU|Â=ˆ®B a,7ÃÄÓÚp®Èï%ŒÉç ´>ôbîAÒ¬ãZo”S#ˆsƒÅ~`ð›hð€Z¨rÞ2H÷ ®F@[eL«ž›4‡–šîykpLÅàx€—OZùm™´÷4)®æ šÎÎ,Î!ö 8^ÂB(ºF§·û­)f"\kMÁ±ŠmØøâÅwØær¿xúVÂùèJˆCþ ™­ª~TÌ#8×CÆèÍÌ Tª8CS ZAôX” ˆÆ%¢pã±T‰»^¥ðT<ÅÀ>{>ª9Ù"[¨^úHüUoËz 9äšÖò¡…·šßr ‡±JKf̱¹?z-î Åóþ?v¯ÒئåñbZÇÅ45AâóƒS1È× i(͆nôûPÉxÍDåîÈÜ3ó3CzÓ’CH÷×¥—0¡Ç,r/FÚÚ!’ö„´;5›q/s:y’+¹áíÑÀ¬OÖRšÖB +Q~¨Xú–4ŒsŠ çâ 'öú¡58¨h i‰ºq.NÁ:¨ÈºZ‚ÖªØz–’ÐÐÚÁ¼’ƒa^i™°à$'æ• @M3œDͳKN騚pœuÃHœ‰‹ÖL§,V]a»èŸÊ-CJQ´‡BŽãá"«.@•W°B0è!P‰êçÉj`Ôõdas¾(üQ&y&¯²ºÖTáý‚eUá« ZDÉ^‘uïØTý€\l^Õ‡®ÂY*&JpÎy‘ ã]EIâ$åA÷—=/’ëea»¨Hµ<žUIÈHަɽGd½í³†0é²þá¼'U¼8ø6ì‡ès(Ú‰•cQñÿߊG¬øE&ÿÉ/3ùäaÐS¥àжGÒôkٖث­š®^qïß'¤FÛÿÃ#r5‚Ž|ê,â¸/÷ïÎiýuU\2Bø¬ª(rÒz¾S©ÞÉN¤«ê]vo,T¿¯jpYUñ†*³š êÍ_ý¸EífµÔÄi€ÖIuÈE{²^—œ°­7zEÇÖ“õQç¢1¤áDø?=¦Hí»º52Œ)šÏ§‹ÅGX·& 777êY³ÝmÿòüE`0ÄôEj®÷_]®ÎÓoøl½ÚmÖ‹ü€,^&é¹k=~®‡4Ÿ¯/¯®ng·—«Ýö£ñ{ðo-÷q¢˜‰Uðãíîv9ÝAâ"LQš'»y›8;Þ<ÞlÖñŸ3LJ.}5Ý´¼%ó®cM÷Á.üÝE¶ð‡±NöÓ• AÔE`1± 4ÀF´”¦(í­7µ!Íêò ›0ã7–²†)ß³ “¡Èær5¯Ýˆ·Ì9á) n´5I"‹ª(øåŒ3¬Ô‹Ù×Kà±½]=ƒê÷=ülÃAƒuIŸ^˜7ïG·ÒAxúÃÝ-þÂU+•9´!?> stream xœ­TiPSW½„¼§"hõÖå%Ö½ZÅm¬KëÅŽÄZÀ‘  &aSQ’/AAÀ…JâÊ!¢wmZ­£3µíÔÎ8ã2êØ©þúsí´,v:ýÓýsçÞ™ï~ß=çžs" Ã(Ôš¥3B{vÄ‘Œ8*@-Ý}¯;<‚d$o¥¨} crF"2†1YwªÍ¹–ƒÑ¦š”8Y5cÞ¼¹SU3CCç©–¤ë-)‰:“J£³õé:›tHS­5'¦èm¹ªI 6[ÆüéÓ³³³§éÒ­ÓÌç“§ª²SlFÕçz«Þ’¥OR…™M6U„.]¯ê}Ü´ÞUmNÏÈ´é-*9Io1B‚Mæ ‹Õ–™¥KÔ§¤¥²šD’5d-ù‚D‘hC–’e$Œ¬$AB$´DNÒÉ=FÃÔ,(x [(óËGËsä×åX!–‹—Á/ʼÌ3Tà\TÈÄìâï[oS™z]Âj“àx¥ ‹ µlW9$)iW˜–=á¼éj…6¸a?á¸4Ö†ze?ú/V»wÏhÝJ-ëužwµAÜ´»ß–°ÁbI‘OâeNàP\Ceb*šy3ëAùé3éx:îù|‚ßîб6e0Öƒ_]{Œ¡Ì $2LçÏšuÆ[ŒgÚ½ÍgºŠª%ÜxgçW;ÔÃ%»·7S4âD¶·•øøÚÛ>ñÝ+ù·NîUÈ›‹Ò­F)‰ÎH‰qÎÞÜ—DÝßKãÿðõé­WsÝ®¾Ø[›“!ä> stream xœV Pgîq`ºUœ(mѤg4*¨1b²šD#б ˜£ú¡ç6µòÑ^»<^RÔɧ•r¡ì"ÜWr8‰Õ›-zÐÃf[š•Æ(”=Ü`Ê·XÌ{ó4„#…„Ç:çs’j«yžÅBSt³-rDì*‹Ë†\ÊõPî•PVXf§ZÎ ¾}_t¸6áèÅ8}‡I“ÇܶAØâIUu9=’9šÕVº÷‡ñìÀòȬ ¢Þ;KKƱÆ&{çñŒJ“M¬/n²–÷qKÄMËKËM¤$̘<ÇgþUäÓ>©£¦“ËÂy‚;gnŽ>$ªåCd𥃧 ÅTìòó|w˜«*,‰n|6n•gØÃÿ§x }'±½çùÞüÒÞµSpÖ£¯Pƒî/Þ'34|¶lHLIçŠIŸ€ûØc-'ú€C5qþ¡°&9Z“–þ}n÷! B)M½gÚ­4õüp‚‡ä9BæsäqÿvïK¿KÞ\JXбû}/ôÆ—#Wrp'ìδ˜s Ää€M!À  GÏyÀgQh©4™*4êÇŸ€$H ô<+ÿJÏ—»p’@öÈu¹µ¹ îD?\6.© ÕbI2¥˜Ì4jœ~¸@^ Å«Î@ÇH2êÙLȲfÚ -”æœ,YY¬ú~zyÁp¯†ÒCûöc“L&Y‡hR9 ïA]÷ÿ•Ì„‘‘H2› ¹«çž.ÉÊÀ‡Ý/Ž}¶ür—°‘Å·žYþé÷à“õ,ßÛ¶a}ñÖ)dæ´ùd*™ôµzRàÿ '6Örxʼn²9™‘khK jÀq×O¹º6MC§TÖ =¾&‘â~”&bÀ \ô¤ê壔#iÑ«)ƒcÆ›NiÞs¬«ZAOðõN&Éfã|©ëçʪ (È2ì0jÒ6ů¢S-è~ZsÂÉÖfí´Ÿ¨ko/o 6âf¥ŠúI˜½¾½á@C‡kÓ}TârTÂ]ÿ/Ýø_r±ƒ„ùp­»®Ý½ +7o†•ó5D½[èI9m®¥Ô™Þwûº¤?‘ý¾æøûvÛ«¹ÀœFN_™YWWyøè‘¬–°ìPSì1³<¾”Ú3}Íëþ‘Õ‘M ?È$Å·¦M†ì}ÛãsL~iÀ…ô½¡èûâõãùWV6‹ÁõoÃH†0(°n)Ém…*(Ûw¨¸”»LÖ 8ZՈν–Ú>*=S>p½ì(|‡·T¾Sa!#|ö¬ßé°3hN߀¿È×%Å`”¤” xK(.*.‚ýP¼·È´d`ó$ W¡'ÜÝ^C^å$Õ64:ÿÊ«ÒwAÊn0—åj°•üHdŸ±ÀXypHä)+œCUid©GÑRŠ×¨Ô¹äwöãf{Ù +a¥1¨+Žqz¥Úet{‰‹ ªê]ÆY]Ô óO,–ñendstream endobj 252 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2556 >> stream xœ¥VyTwŸ˜Œ€GkÓ‡µÎÄ®Uª¶Ö¶PŸ‚¨]­(hÑ* …@H„ä !r•ëîrH8„pyT<+Ö²­ÐÖ©B¯µ¯«[ím»vßþÆ÷³};IеûǾ}/o^&ó›ïõù|?ŸOB !¡o¾àø6‡›)àžôàf ßÁF®ùÞZ/ð‚¯gד“ýEÝ ÝT´y!Tºœµ&M«Hë%s¥ÏI^xÅ_òâ¢E’`e¼V!QIBcôòxeŒž¿I’lRKñú4ÉÜ¥r½^¸p¡Ñh\£Ô-Pk–=ç/1*ôrÉÆx]¼6%>N²Z­ÒKÖÇ(ã%Îâ8¯!j¥Æ ×JBÕqñZA3U­NoH1ÆÄ¦ICÓãâerŦDåâÀ  bNl"Þ$"ˆÍÄâ-bBl#V ˆHb±šxXC¬%^"Öë‰Çˆ™Älb*1x’ áIè‰Û‚Áe% œ°È“ðŒñzm' r;ù‰è)Q¡è7j3õÛ¤<ïÙÞ}Þ?ú(}J}¹–)\ °h|;ŠÂF…Ü t\|gÛñ€¨èôñ´½¸1–^Nfª!qgÔ3ÇðÀ÷z™¬³CO¯LÌLþxy.ŒÆºDQ¦Š?ewœš7áÉçÃZù?Èi"9ÖŠ'Š"»•‡ÒŽ…„?|‡E>K~ÆžQ1é*9sÀ\®ú]=÷mëñæÒăƒý¾þÒ‹kÿ¼beÜõÓ´«ÃV€æñ¹ôhøçs7A—Êìy»jmn´7í:þêÆuºˆH¦[Ô›kUÐØ“4¹¢60ů¹ïв®“/UÍ—Š…ŽvòYtŽ\`Q5+䂹ÙâzèHÔçïÊ+¤ã›¶A:P8Ä´H½¹OW›ËìK±çßÍh/¸f†­T’J>½´yÐHçÙ jÔ@É@od‰L é©¯«´WѧägÀÆ"°íëCýIݺzFºW[þ|}LÅš8Hµ÷Øoß.U,t‰ºª€:­MŒ«¦Aö®M€æ:»6pb´Ø^|l‚V™#!ýÚ«¢ ìLtŒðKl"Ÿ¾ ÿüÆðÐèþdÈÊ0%ÓE‘Rƒ¨`h>Nn†Ø9³ßÑDF¾²l—btvÓ¨Eôðó2òùsÉWö÷•w¥Ë”6ØÔåÿ I~3ºË Ú8 âËï$ë]3ìM޳«|³Ï Ö«}.Þn¼:IäoÖÊZ¡f4Á^¨=@o಄\ÜÞ½=ÎÁLv‡>EFã#^ÅdAGƇ¹]¦ d¦Œð,™9ª@K“[ѯSO&Mþí6°3gðÊø½G¡´ºq¨õºÅf©£,d©º1´Âи¡Ô|˜o»*ߥ\3}ýš|0Š üT—¡â«®bIôRµ¤µ5tWœ¤í¥{À Ôµ;×3øµ"ìÏQˇC¨½ ‡è6Åô5ÖL†)*S™àa1è!EjLHß@…Åööõÿ¼M³ŒAy–E㫸”ûìa4ïiýAž\6ú¿®&žîùG«‡,·—u¡Øv(/©*©«„ªG é4&Ét>“¹"³¾€)/â1ƒmxžŸzI–"ßÈ8¯Óx:y$1~õŠ’¾r2$7›¬s&rèãw”嬸é‹O}#p8º2h|BÈ—·µü~XB:i‚N:A^üØÒE—jš3šjj¯ëù$LËß^ÈlïÖðÀ·´ N·hÌ!xðØ>lÃè‡%ô¾áÿwbgo×þ!@9|k,wFl×·ªÕz½Zݪ·Û[[í4Þ€»ÍÏ à)Ò¸Ûx ]!Eòq³XXÁéÔ;"ä¹+NK4䘕ytD_X©–‡Z°|é’ˆNYõ.æðŽ®¼KéÕ…Ã¥pÖØô(¨-oo Ž•Z4t´½àpqSqC±M>fXìôÇëî®JúD"›õ>¯FÔ…¿ßêÉéK:ÄĽU“P•R¾¢Ñ\¶½&á£úß{ï<Õ/ЖñVÓXÜà¶I¶"[‚_Ð#¨RŒ|§×~²¾ƒï*Ùa5‹ÜVÒKbü´ºãcΓ÷ ‘À]äžJä%òÊE~ls½[Ù u òu‡OGAðþ"!·ýEÜÈóÅìHØK•¥žˆà%|g®*¹ Ó¼†ítÙL ìgð€HnãØ-W`È´Rôåá}¶Ý™¡4N卯ûü:â„°h +¸ø ÊãYR‹N‰ï[õÖºaK’——”3`)±€¥Â %%Õ ”@µ×Øœ¬Ó›‹¿ÝˆAß¼ýÝ¡F5ÓOW~Ô•åŸa/˜Ô‘(Ó$%ʺ5=;º{hü‘çC¿95â‹Zø‹àØÐ߆Ðr~Ö4g›«R¬<%ÞXŒ…Ø{8àò©ï¢ ³€2ðJ< OÅ~x5^…&ã'Ðì[_žéêRBvZ!˜3>!] ÔSóÿ‰$èO?Ýùého²¬Ž Ã#âhéà¥ëÇø‡e\•?¨úÓ‡‹æ¼Ú|Ooœáü…Üö{¾âª°@%ÕšZŸ¦ËIÍΧñÕ_WäfðΖ7CßdÚÓfÝSSNOɪáBªPP ‰S+D¬÷¨í홦öÄúúŽúN&ˆãÚiúendstream endobj 253 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 6931 >> stream xœ•Y XSWÚ¾1æz­Vërª½¡Å}«U«u©KÕ*ŠûR@D@°“@BB ëÉNB a KØT\Û:mm«¤«¢Vmkµíh­Ý[ÇžÛÿÐçùOštÆ™y†åQrOÎù–÷{¿÷;á}û<¯ÿ’Õ¢6nœ>Í÷G$7ŠÇîÃ=ÅÏCbîÏ?V À@>Ø×3úb(5 cž ø<^†X³D˜.ÎLNLÊ?>lúœ9³'…=;mÚœ°E© ™Éñqia«ã²“Rã²ñ)a„ñÉ Ùâ°qó’²³ÓçNš——7%.5kŠ03qÁøIayÉÙIaë²2sö„-¦e‡­‰KM{`ß”ÿY"LMÏÉNÈ [-Ü“™FÄšEi[ ·-I_šñR沬åÙ9/çæÅ‰vG‰ãWçïY“½wmbÒúä û6îß”²9uË´‚é’g¥3 Ÿ›9ëùðˆ¹OÏ›¿`ÜÂñ¶Oœ´sò”˜©NDsˆb-1—xšXG!|UxZx#W;ˆ«Þ{^îñ7û‚Öz4Ž@)È| ÷¡½Ýž,R’ö ›@9{Ÿ¬hš³€=vOg’ÖA.)IûÓA~ìô€ƒMY …EOrýèŠC®ã¥”~? X/+GòJú…ç½××KÇøNØŸæÁ[Àɤ«‘¤ìò Üe=ª·€êÐk;,ß“+Ü˃Á Ì”o³ØwviäVôžà• ž Þ©ΰv4Ö¿~æ¤P'JEi%ºB’õÛÂI±-%Üktcéø-OÜš„"7ÃHACöM Ù² ³÷jò ”ƒ–¢JAzàÅ{=g‚|>7Œ6 22{ͼç QQ"r¬ô#× wa¢/ðáLÒ½ª%çvKûƒ¼R’ð‰Ï~ÿÒÿæJ'ûSûÁKà êãW>Ç v ‡7lÑyÛv,‰dŸ!·££ôa˜+€O‘ßšŸ—Dm\9Íç¯Ò ¯yy·»`ëy>g„6ö]pi2‚¢'‹¨ÏW|ÃApŒ` í¤WÄx/ÿ~óÆõ_ݸtò‚ˆéAA;€ƒæ!#Ók¨“]Šø «3âŠE¡:RëÖÙÒ¿I‚‚¦ú‡+¥é½.U’? s)h• ,x48 J¾¥yd+\å‹“ÜË•zy_bÌ|Ê]£õ&½(gQE^¾ªX^¨”ò|uIòØÊ€BSдmAÌ5Dbw¿‚ƒ½¥+M!ÙJ6ñ'æ§jÖÖ[¿ÂyØÕI°OÇû9V¦Ï9è.³xL >ezáÔ¨î©Yü:]›ÙšvPðq8ö‡c`ß/O[¿3C”Á6€Š=äŒî& ȇ°ø+ aL¡¨Z^)©-iÀPñ‹µÂóÖ»ïê½c[– bú³³‚bÒŇӃÁQéGz8v‘p WÃõ¿¿i4„ECÖÐß‘p˜=+Dá3ÐL4ŒD<ûÄË»ŒãiçFÒFÐU/2Kök¥1%ŒÌ•|| Žäp4õÇÀà_[øã¥ÓÇœUlJlÔ|!P6±$š[ýÊék÷¿½õÍÕêw«+”R6}ÕÚ+Õ÷/Œñòà>ØAäN¥•éV—7™Ë«Lå¯;6ÆjÓTïOÑJcK4‚lƒ1¨!59%{€šÊªV9[ åu&Æq›nÄ«ý”ÐÝ?ñ€’âXòЛm§ åŽ.`¡|€HÕJ2UŒü%ªîe¦÷°i³½ô¬ +e;†4·º~4:jo~ó>ÐÇ7«í€òT»=gçÙÄQR)k¨0Õ= (Ô'püÕÞöù~x06Ñp©ÎZ ¤Òš€µÅàra÷1”ùÝ÷™·_›¯bÐ(²î@ÃuHM~÷‚ð15PU;ɇT‡xa¡—Ï­àfÑ µ›'}vÜü­snüPÀž(ù°ÄRZðŠÜ¹­ì¢œQ»µÎT ´ÅŠÍÚBÙ2PBå;dUUFËÁæÕ=ç€ÈÂÃ?¼v$¯1µ†Ý_+4Ïwl³­·T]ÓIHÞÔ§HôŒN¥Øs´ƒÃrÈÔPú0Rö’ªìl¥¤DÃøËÎð“^Þ ŒÐA°Žc•Ù ö-2Ŷ© µ|ûUHÀ¥„x«}×b=›òÚ¬nà63zcœ…“ìg¥¢XÅètÒ,:¥e¯+»8FQ(½6îޫǪ[ÚYM? Ókt:­¤·¨–½¹Ž(=Caæòå¿ —AÏ{«áÁ1)æHÎ àÍ +¾Âoª¶@¢a ¦ ¦2ó¹É5ù8ï²Ð¹ï ßÿíâ'|ÉÎ-Rfªé‹KÕ…€Š`0V><’I 7äA±þkÌE´d’²@’¸cÏJ@­Ôº+­¥¯š<¬¹ÉÔdnr\ Á‘>õÈwîFz¿EòÐñ¿€¦¶–æãŒ1­¸u9˜¸„ŠÉ µŽJï7?ö |=íÛEí†÷ñ.r¿¶ž’d,êu$š®l„Wô,èÙÓCžEw,IÕ „Ö€àj¥n CÞæs.ßæu½GMç5r,zC #ñ›Ê——t¶$ ÔE)+·!A~Ý®/eèà(þ60ïjQïzÞÍoGp³†lÝ:}¶! ,Q®‡cNpU0vûYHÛÚ)}> Š@žýëf}Qp‚Zàh£z²:Ûû³—w§5 ž¥=ÈCÏÇ!>˜Ÿî–ºK;L§™Zs(Ô?Lk%jmžN;¤A¶"€&P«Îl¸ûF§Ãs”©J?¨:¨Æžî*•‹€9‡]ÿ9­LÖ$æeî.NÔ–ÄúCÂAípˆ‘}Ht\<ŽÐIÒõ€ÕÃzPÍN‹\û‹ ¥îq?D~‹Æ¡‰h¦`W [ê N:ÈcïÃÁÐ`ARîƒä÷÷%Ð÷¬M$#áLA÷Ÿx¡ ·¹–sg}°6`øWp>ß­Ö`pªC}Äçtƒ× Ì¿oÅo ÛÿSk…uÉ>ë{<«(>êoõy7)ö¾À økÁ¨U¦j¥==¤Äß\Ep(—âåUÝâÃÛßþ­kI4§®ÖÔƒ²)t‚æG¯ô`™ r](PÇÎVHwGíÕæëÌVs°QNEMZ~²|çîfá±ëï}õvóÛï_€æ¿ó9äÑŠŠÌµ²@Ád'ÄæìÔÜíºÎÁ!q´ÕëôZ= òAÒ1WkÙÑóSÀvôòshRø¸‹ÓqŒCÏÜu3êOàd´­ÊRn.§ôäüî4A~ ú¯?@B.{“ *•¿Õ?YH…³Ñ¼ìië¤I”ŽÔ¼ KÕVEu>(TôÖ²¾Ð?zÛO9¡@OSìQ¥Û -ɦ Ë>cnn„ ÀÙJð]δÃn/ T}(`Ðd(V+St Å6¬:Òš¥ÅPzÎÆàæÚM¡weEÅ…@šU œ Çù6ØÌLu¥'1kúø¼Hp®µÅ@[K¡:2ÈpWõàøÑôœŽfTïmŽ¡XmDýPê{eñ×Oº[³:•N”ÏUæ/”‹¶)éu»^¿ yßüýæåêå¹jUjñvV:ç¥å$•?%5ÆA »rÎŽË©KJŒé tIðC_œƒÔ÷ý€L‘Ÿqi8Ò?w«Ì™fÙj%qd€ù@/î„ý¼[`+ö=n [œà38zRÛR‚ÃÒ1 ¾žpÄû·<~jTùElÆîí¢8@­^pø'¶¼“®ïê:{P?‚ç³d@«+aÊý›—áÇù\§¡ïïvá–Ý7J1%™IˆHF °‚Š8"† ñ·Š_Û™Ö;‡ \¤P}÷f:\Ñâ½r®p¾Í6|ÛTù ¾j‘-Z¹-+ŠÅòŸ¥`–}ˆ,x𼯓 êäýI“[o7ÕXÚ›:®cl0ÊÙâ8ôÎ"?/&^&g±<•L¥"IþÎ?ˆÅ6¶œØ«£¼Pƒ&Â’>jiø GÞ}¾ºåSÔ‡E¢ÿ a±`~L—ýònãªø¨è‘l¸Ÿ~ÄpÑ»owÂ¼Š³G/@õ9>LõÒÅx /6PòpÈ]^m0².y‹ä8 ~ºõõÝze­¢ŠmrÖËõæLw±Pnwec¥¬m}vœ*u›áN¶íÔ3Ï=;5Ñ•bP³¢lé>,• Ë™=s§l1È¡^º¾ >‰ù„öþ £ ¦LìGïHm?ùÞÙNï©ûv®^½†MC?Ò¢;U9;Ž7°M.¸¨;wÀKQÏÄOaÜøÔ@cxtAù‚ó?ýñH)øŸîühÜÖ+܇ÂßÏWv&áÆÀ·éO·oS7\F½üª*x¦ùåü°Ó7È«öb¥*SWÌÊW(¤¾šsäbóÍzLs% HóÉVÅ®\@)JLs³©5Õ›A95Lj•‡ö¤ ^êßñùeÛÖ¸MëWŒØâ¯»Ïa¥zæW>7–{Ÿ®Õ S²…™î\OsCC3ƒ&wh44(§pK¾/÷ľg¼@áAó,A>¬R8ì#¨þÈW¦ÌEJ™JÃÐJ…»;6Úö`ÙÝoÒs¶Ô krÙ¦tòSÑ!¯ÉjAµ&zÉŒ<4üà4˜•ñM¢ 3jE&zhüSFÉv¤š9žø‘ü Üûé¯ ñÍIí…ålz£ÈÑ 2§X•†GV8Lûðì5(Ð?—VrÛ¬öÚž¡^äåÚzÂR{ ás»˜Ý¿Ñ*aᾜŒÄø}¸iQE ÀbÔ`g›³ÊÅù)…ñËpÚIȳ2¹E=ò¥7RÏ`ŠËûŸTóÈÿ:Ç"³p¹*åËCü²\Ó³ÔèÄó1ž˜œ ñClCМº( Æw>œfᜠ°”Æ"©ŸàX…hJ@b Q4šø.ü.8Ý+°8é?+xêŸ<õÆÚÒ×î|rM ¾„ДދO–ð¹#8í={øÙvD0é­G?Hg/[²„nÛ}â“2`58Øsð¾à?½Áw‹$¡¨Ïåe_AþmHüà Ò+£þ‰Fþ)AþqåÉ 2¸$Åüù+vcØðüf»V<ݳ‹xX4}$Oßú—ä†â ¢4–|)„ß…Ô>W¿Ú]eÜ[ šAh-^Z~ H³ì|‡^:3ëὃl dÍ­˜ÔJ=uok”½B—¨Ðip¿ŒCÁ£Ö—].¿ä¸l=,ÀEáÎüâ†Ýñr#;º¿,d‚ä¢ôlucŽoäï½d¬M¬¯å˜ìÖ?>žpx*l^`79݈Gó3| Ž‚a ƒœèkúå=7ƒQ¿Á°¯/ž9M˜‚VGúâô¼þÍ÷ÃR\£¸NÚTg=YUæÑ·ú®&DfN‘`2W“«Ø†Â5¡ŠL]а^笸§Ý¡”ÎÕ²Ê$ÅF ¥¦À²÷]8 B½’IÕOуÀêè2TØÏbÁjóÓ+ßo-}ÕPÑ«y­áq“|Sšv`3dä_Âÿ©?ü˜*1kÛ¨;¨ùŠ Wa“δèîê@,Э¦ Mïá`%ØW™Ñ(ŽN+ŠUçhÒ™Ú|T+ÑHJv+÷¢ñZJ^ ÏÅV¸ª/j_g?hµ´ÛÞª…Löøg¤LuÆæ¦,½¤0ÂðšÁP =::}×ÿ݆Xï\€oÒß\¿sÙ¢cógÞÌdMÆ ¨£®PW^úõAOŽŸðÂÜ÷YµÌ¼Ü+ÁdjÚgË`øôï°ïÝ3‰oÏó0‹ZèÕë¾s¶ëÌ×NÄĬ]²i.î ïÓ‹6œüàò§çïÜ>¶î•Å/,󢯻¡SÀ.(ø øðCÎKë0S•…õ©±ê8¹ŽÉC¯h¥-Hom0º\&fÃØÿ¾Ê7 ï‚‘]0¼†wž+äs œÑãhííI@Æ®%ÃHÁ[RÈÖß ƒXC«$•yÊ™šÙ‹† "ÿ݃9¤, $%µÛIÆ¡HÁ¦À ÈýaÚ­‡æTV6XÝeF¦Žüò¨KáÏô/þ-"ýú OC/Ã!¨ªÊŠšª"k‰™EŽžOÿà–®/ºxW¹4>gÀA.kÃÙNð‰³ŸÈ_®Z}½és4‰vùpâ{‚Hy2~r? ØRëèê2k¨U…v•† !»Ëª@$Ë;Š­*Úq=^CQEJiû\j3šK}é™ãþ# §& Ö‹›hPQl‘Ùž¹&‚}ð{½nƒ©p„Åd³‚ ÊQìʉGåh!:gžqnÓ.º P –šRÿ„öóM7¼‡›ÑÓ· S…ˆsÒ®ÊÃn\Ïo\UĤ$‰EElrÁÎô=±kWj%ē߳鰅)}Ýî…Ã?<]ßp¡¾Gý«æ£™»fÅ ë¤ÕÕM΃N­Qcb>íN =¹îŒÔ¬ôŒô𼯖úFOßb'&sipBùõº¿§wD{…€ÊTæKK•ûë‚jÔ,/Ñ6”†F*Õ˜¹¤T±9Ïs:á|xÜ·×m7÷d ï7ÇwÝIÐK• ·«i©T¡Ñ*å °²òõ;`-/ªeª’TŒ=1éƒB› «öМü<±ÔRR^Âþ´ X'SæËAn¨Â,ª³[1N8ø|¢4RLÓªÐüò"gYµÉÌèÍÖÓz›í£ïWa3Ó•5U.…EafÇv üýþ,KÇüñ8 § +|ó•N•‚¨?W…h pöÕ½}fEð÷1f·ù]pA ï·‘¿‡õ4`4š¬‡áz³Þ‚g·JiUnª* ‹žL4Q€ÆhŽ&³P¸N¥Smh~…Ø'ƒìÿ<ʺác˜#à^·õ´pÍvi¾R©)A%+Ës¿ û~úë)aǮ،Äý‰žÜÖRЙ€wSÿ{ çzf›AX$‰xFд áfEÐ%¬ïâýÎMãs)س€[¶÷™ÏÀ¡|xëü#9kRïUß&S'ýÛ=z„â߸:>÷Áƒi³ÕdÅÌãÓ‰¢YQ Ó½ñÏ•%2PÅÎüšêR‡Ý ’—qKlpa™ÜE"±µŸ÷± ˜ÇúŠ…ûÄÿ 7'Lendstream endobj 254 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 321 >> stream xœcd`ab`ddduö 21T~H3þaú!ËÜÝý£÷§.k7s7ËÚï«…¾‡ ~áÿ(ÀÀÌȘ[Øàœ_PY”™žQ¢ ‘¬©`hii®£`d``©à˜›Z”™œ˜§à›X’‘š›Xää(ç'g¦–T*hØd””Xéë———ë%æëå¥Ûiê(”g–d(¥§•¥¦(¸åç•(ø%æ¦*€\¦"œós JKR‹|óSR‹ò „˜YütðýøÞ½éÇüMÛç3~_úùûïŸü¢+Û»så<½U»Ó»9RØ—vŸí>¾œãO/{VwŠ\B Û¡þ›Ý‡ðf÷¡ö½<Ê›ØUºg¬‘ç+[ðÃyÖ÷ü©“°ýNœÆ¾‰ë·‹ù|ÎÕ“xxîÍááe` Kq'endstream endobj 255 0 obj << /Filter /FlateDecode /Length 8427 >> stream xœÍ][s%·q~ç¯8¿&âîUœ”írbÙŽ«bmÅ’¸\îE^’2¹ke•Tò×ó50ƒAMÎZ–«R*Õ1}€ÐèþÓ@ÿé Nú è¿åß«›³OïÔáÕÃY)>Ü¿:ûÓ™®ÏË?W7‡Ÿ?™VñO9*}xöò¬þ^´Ž§dÒ!*wÒ6žÝœ}y¼¸8¿ð9ŸrÊÇŸÝnÏwÏ¿¹¾zw~”:)ãŽw/·wWo/–?c:>¼[ÿH‘êûúÙ¯ÏòÉ§ÐÆoÏžýý—Ç—÷×úìüB+£ÔÑ›$¹•äáÝåý»FƒÿõZ©>j©Îon¾›×÷¾~ñÕ9~ê]aöhµÙªétÊ&åõ·¿º¾|±’XÖ·µÂÏÊÏŒ=e•Óá‚ÚöÆž½À˜½¹}ùöýõí÷—Ëðh{¼¹¾}sûêîêîêêýCùéû­ ±þöKýÉוÓc<¿ˆ ÿºBOl½~”­Ûë7¯^?¿{ÿúînáÍÑlb¢/Ú@мy‰7þ[Óá·Þ–†já±ÎÀ/Ÿý;¤ïqÁó%ÔmQð|t'oL¼gçê„i69_Ÿ«“M3t¼>¿°&œl¶Ç÷(u:ZˆØ-c,b4Ç7(Ö)CÆ>÷uØp¼¼'Ѝ”K…À(ã­?^¾Ã³JÑ$ˆEWu)ÎÙcd µFéxSXÊ9¥°çã(| Ö9*§˜Ž÷Ä´2‹£«£§x¨u8]¦’ƒ¦VÔ)dL¯î¶ôVÇĪë;þêîüÂDL©ÑÇ«óVÌJ·úúçË·Ô¼?%¥/J;Áxê:ÄË×>f«<ïÁ%•åŒëfưºïhšZJwM`­TT©‚ =×—·µ˜¦à9zPÆÆôÜ=ïú^',¹x¼|SDÑ:év¯"º·[¯zþ_lU¹_u¡íÉ»”ê¿ëD±Ž½Æ÷Bòš×³¬RÎ>(ïâSÊ8»”ON\`2[—Ä?aÝAk`’HFвÎ4ìíñv{|#–¾ÚïZ]ÿ¸^´Â—[áÛíñýöøoOp`VÜ—Ûã'kµúøw[éÍöx½=v5¼K_mwÛãÕ^i÷ø~{|Ø;ξ®&ûf¶±!Žr7#_ÅâûB“êí긫M“êJ_3>ëïlX§$sÑm±3øaÒ«y éão7#'¾`Ì·ÁÂPDüÎÑă å|\»òЭòœ¥jxñ´g¿}½1Òµ_±Q>Ù cµ¾ÊÒ ÍEÈ0±(y»5ÉðD¥ O@Að„…3™I×OLòàÄUN3æ%†Í$˜ 8˜Df2þUè„ÚÃ( €ƒJƒ6½p<’Zu0è ¦ž±Ô¯™ËÎü·ÎÚ"þ2LѽKëYGký¢ãªò fÂ|—®ÃòC"H€,“ÿ 11‰¤#¤`f‰`™®Úu9ºÒ6¯i1uvR²P#¦ýmP˜ÑTz Ѱ۠ ¥U'|Øh+²YšâȆA˜&¸;ʾR †q½¨ÝÛc§¢¯SÆ.7Þ/€W½Ê¨BŒ3=[ëŠ×Lq}Ö–Ö ÂÚÒÑ ì[#uöúŒ þ*lU ê›ø°=~ÛWа×O·Ç#=ÑP‡Èî·Ç?‹/¶zÿg{|'9úío8“¡`Wo‡+"6üa{üVl¸‡—[iGûVÄ•ï€øð„­u§Å!\†ÿò (Xª:‰Ãß¡ÕK‘yZÿe#øÙöøÛíñ‹íñ—lƒI‘¶F~òÃfâBìs©ooúá—J¯6vê\ïWÌWßl7 -Á?·“nV®Ä5ú¶-¥ŸŠ^JçnÜ‹ÝédìïÎ/P«§Êºq”]Y°î÷D³[­—"gR×{ǰàô`ŒÑàÀ¾=Ùƒ˜‚¿p¸¿>üápKtäÕº›øpuû¸«¡uÕžÞôêÓ(øÉŒ%KT|ã»77×çϾ9£÷D[õ<»8$¿»;w´7§Ã›Û—禸&°Wï®_l])q0ÔÁøDpð º 5ÃGoîÍ): E4==Pµ‡u³`'D:p'cM‹Ë* º3tÐÃÁÊ×á ùQ8ÁÎŽ5ãÁ€-DVŸðÇXÌ9øoÍYˆ©"#:îMÆø1"“g,8µ­5ì¦Ö`Ûw4¢tBµSs xÒ·Îys²iª‰¼Êm#ÂË8Õ„ú]H­¹ÙeiƒÖ30v†ÆcJøG>6š|rfîÄŠ6?¢hO3Chóv¥Ûìæ®‘ƒ±I@2'c¦šðËb›@p¦¾eÌ5­ÿ™p¤åß•ÈÑÒy¤£ofÑÅð:ˆÀÚ½ à¸Í²;QE¬]¡.w]ç•J¬Òy^ðÓ­ ÃÉøiô)9Û†* 4;ÏÌ@ä€<Ö9S5ËïØAk‹Ü±¦wëràsê jo|¸< í,½cCpËç É'ü½[S€ÌÏò;QÅA–ž ¬GM wæÊR]ÈŸÒ,ÀT¸¸½v ¤ÍÂÉs( z°44ˆd6§<Ëí(HP°ÚÍóÊÇ(*}r³äò£‚6K.”Q·È#ìe–—qµt¡ÐÁ¨Ó yĪ`Æ¢°0û9‰e÷j¯{°bf¶b\0#¬Ø~ï`Æâ<}\â`¯U'[7Œ&ÌÌ v¨&̪Z b„ó³ì&JjDVm&Bý.´šÂÜ QT¾õŸ€Ê,¾´ð ø¬DùäÍ4'QÑÙÆ¬Ø<%Z›ÙhÒIÍj€¬xjV<ŠÙY À’œüÆ7¬˜@Cœ7£aÅ’  Æ»ÍHöƒ"¬}ƒ=2~#Êþ à.®|MJøË™S² Ç$˜0 ±iþ‚Éê$7ÑŸsßô)úØZƒôuŽ›ñ&è.݉°Ï¼PøŠK0_þâk7Áz økP` ÖkË¡&Ø0=Ëî°xdÙÍÂ;T&@°&Ill6LÀ`ª½Ž#ú*•¬¯a¶ܵ½öƒÞ[”?gK‚\íµ“±ÖPI±Öú:Ûd‰•ÀXÍVh˜ê [% ¬¡ª cg»0Ri%¬öÚ}¾Ê°S¾â†#ÃLí‰z¦OÜ\@‹ûðA†™ÚYvêñ)Í0P"¼âƒ %À«7ºšbU0Q¼¢ž C%À«±gA‹øjh0x fq%•ÃènV¿ê-æÕNe¨vIÝ‘nLÁP (+8Úïh5ÁP K_?5¢ ,Ca.Íšå¬$å0ÁlD£¿Yý{¢Ø† g cOµŒ%š¶ ÊЈF%„å LU\i`¦€e ¤lÔ(K£gÑ…•fJÀWl´)6fÄWeÞÙF”%·Î@Ä¢ný·VÂWLL@%|ÅvSŒ|{¶œ@D|~ ­+FÕK5uÆDôjg€*kV“FÁH k¢ŠÆ©¢–@ÖD5ú›b]II8Kµ×ƒ§)ö †K@X#ì—±ZK0\ša£a±=è`¬wYÃbI[½!Ñèd N¨’¸³Õ£=£a·ö6Z@%dÅÔ»ÑP™‚ü·A‚ÅŠ³¼ŽuäS•õÊ$_Ãn jè—ËŠ¾ô­oƒ ³%À+fE@4:—Ë>ªŠi!X­c‘dûq òÒÒ‹ÜtF¥Þ2ºFñ¬4iÄ[uOº7Hîoè¾&EÚÒ‚M´ªÕcFçréyŽ­"-rÕ 6¢Ñ»¬°ËkSÆZiCË3Y2vô.ëròp¯W°a ˜0]»{â1* \MTNüŠØ^' Wµ×iô.ùTÀ^í#ª˜G·Rì´Š„¨ÚëÑ¥D5Ñ]’ˉ’¨"Ø*ODaT3O°U{¡k ʱ¦,!«ÚR ËâíÁdéy?¿“% ,fÔ¥mK‘¤Ü\B´[P3©ÚÛýîL~ÿ¿YœñÅ´ýÅ/~GqÈ Ú™T:ß®ˆèRòöì ŠzõE.7*Š ÷;D­ÄŤP¨Å4çžj-aTVdÕRÒSE r6=ÕZÒS% ã =ÕZÒSeúЪ{ªµ¤£2ŠBzî[ £Še"zª¥¤§Ò´ÝÜ÷±•ôT†v¸ú>¶FE[ëQ-%=•%W»'Z zš²[Àz¸–ôTžv6ïk £"©–’ž*ÒëG¾•ôTÑ–ï½.%ŒŠ‰å&§Í_tA;rŽiNrÙ¢ £ åÊ‘gßœEúTbÝákÓë\N€?ÿœ^:©çÊGðö†Î:Ó;‚!:L?«¿£ïôùŠÿÎÒ;¸\–À<ÿÝ”ŸUVÆŸù•Ë€²G¹œZ {\–3‚: …ASŒT­„vž€[ëê¦ÀéÄV÷RÒSeŠóbu­%•ÑôÅš‰þZÒS9Úogܯ%=ÕУ®=_ëÉ“E›ß´tÙ_|ŒŠtÀf—U¦ˆzÓS-%=•%ñÄzݨÖFE{¸©¯k-aT ¯UÇýG.›í4m+Òê§±æQçÚÓ§ºpô Xà3HÙQÓ_ü,Ï0Ɉ«;H¥¾ç²‘I«{»Ûf•tâÈd88¤ûÿÆG¥,yNz稔U˜=:òJYWÔÿhG¥¬Õz@O‹»W"ä ˜—vãu‰ò^HHI‡{èÐmhDN -…¿±íŽƒ(I¡¥Á•ch 5´ >A0S>Œ¯4Ôô¼ý€þæÕû´tUŒvq(¶ËlD€àBÿ9Û.‡{jMô…)´ðnŒ«ûìý`c~àópk…ÏP–-vDQ:Øã,}~hÃÚ0‚ÿÍ&øP:×ÃYŠy<×3÷ ü©Ù™*JIŒÈædGÙ »TUÜ×9H§¬-§´x¬‡Í¿S^ °ïrŠ¢íçÞCízÂfOIˆ8a‚ä ¸Õ,·äßÜ oäd¹eóïÊ¥;rëHYÍž÷М…%Øc b%DœR^ûˆfƒÖ>jôóæ\NûÅíàñ¦LØœƒ¶©_õ8×AIÎãHä†=ªe“’M.ì°EÏ¥„ŽIH»¬¢È‰KzP€KÜf?ŽðÄŒPÆÆ(«Aÿ ó‘ݰG/ˆ&{¸3Œ^Ùa‡^轇7çfœµæéÔÆžðZØ`µ%mÎs“å“6繂ð0Y{¶Ï[+šreìi(„È=f³è61?Ï™ áÔµóÒý@T£“Ÿ\i Ø ›9l$} |0ƒò“&K &‹L–MÖPlV [F>fé(5ôB8:›eg©õtÍj,ą5Ȭ֬³ykVK[¶€lÚS’¶è¹T:Ý¿c L$—Í ¹Bàî«%¡­(ˆh‹ó «% -.Áz mññôA ô0P„0”|˜\’Ð[(p$°Å5`ðAB[Ck°[ÚâlÃÐÖ@“%°ÅwˆVB[Ã@Âl §œkÔ+À­¡ÿtç•à%0¶a·vœ–@÷TíÖ³¶Ø¤E˜-kñžE˜- k1©X2I°[¬5Æð¯"´lD£$¬Å+2N‚ZcEIÄZLÝD˜.! ‚MHÄJ¨ù ¹Ñ׬}ëÕm„á°–‡ëÞŽ¼Â½MÁ·‹tóÞ,$ÜF/y›y¬ol‡ÑÛ”Z QB[ÃpÇÑÝ z n 4Y‚[ôá/n # Ãåæ‘¤™ò©A®¼ÅíMÌBÈD@f¬–€·´ªWK¬D^ †`Š=Ñ:ß™´¤GWsÚD×ÄÑzLh“]MÁŠ$º&fGÕ&«%´ÅÅ(Q¤œt”¹×Z £±‹·’M¹&º&†Km9„ωèša(ù0Ñ51{ê6Ájíá­D»ŽÒÍ5nO°ZvÏ·O°Zaöl¹±ItOÌ^Eâ9Ë·‘)ÞælIRVÒÖ']ÍYC$º"f[îigº!F°ZÌ Ñ§3kñ!Ê$ {ÞVÖ£³)ÈH¦¯{[[ÙŒîæ<™n‡ÙÙ"Èt7Ìž—éjAÙ²•”é>ég2» F™ò®y5‚­yÿ3c÷¶¶²OÖâÝV‚Z¼š0º›D ÍsjñŽÅð6s½ÍêG0µéz˜=!§ÑßÀVÆôì­œGwsÖ‘N)-¥îe„n³•nŽ`S ¢¼‹¶œ¢#Z³Ü2³íèk¶·Ø09eFsÞ(Q#ÆíèpNk4^„[½yQ‚Oy=ΊwÕô“ ¢$¡­k?º›MÑV¹r€WD·›=­@ã%´5tŸ®7ìV¯oÅ hkÊ(LŸ}ºÜìi4A|趘½¾Ñ%gókÜI¤‹µ¤o‰¼5oöâÅd‹÷Ÿ®ŠÙ\Š{ŽPs;Iâ*]ãýv7n D£»)°M·›Iñ/Ý'`G1ââI7Å<½»šÑÝ å‡Úû’è(*C€\|½Q ­¹"ºßìéGáçÒÝ5ŒÆ(p m™ñRox3zœCtOÌÓN)Ee7×°ùðtIÌN°ˆd“Ù Êð³›Ä´ehkhÍçl$èô¾ô!‘sF‡Spo)(C[¼5¼“¢¶xkt[Ì,´Cß(*|Whé²ɽí‰Ï£Ã)€$ŸÇ[H……DQ³þç£DAÚâÚ&ÐE1Âıκ'fgâ((C@[CEfô9g1¡ÀylñÕFçƒÜ,¸l™PHÆ^äÖ}vÊRÖ¤ØIqÁ²CD$o)Ž\÷‡ µ™vˆZIwrÅ:SoŒÝ¨ÖF3?‡ÕJz*Ê,àûsE­¤§ ®Þ̾Q­%=µ5ý žVÒS%]®Þˆ–Fê©ÎŽh)驲©÷ÏlTkIGåèzIÛ÷°•0ªTïO訖’žŠ®¾S}[IOeêíÅÑRÐÓÐmMªŸV¨B= ØQ-%=Ý.¢Y×’žŠîªp¬‡k £bB¹Iézrв³f÷øÉ©¿ìLÒÿË“SÓù®vrŠn|ôä” Lèb =1Rµ’îì‘¥ëGtbk{)é©èæzÏtÎZÒSåùYÆVÒQ9º:Ð2%·–ôTCº>ö-®Q]~ÓJàv—kÔ£"°F•}ٵ먖’žÊÒ-¹¯k-aT UÇ×_z&Êj¨77‰*wútÔt>Š>ïFY*Ïpâüч£þG‘ÄÃQ´áÔ¥MŠ>cÑûßzFª/ûòxW²*¯bMšXóm®*GI%W‚µÔgSïÁã‚"8^~ߥ-ùÁ“¢ÔÖt-CNîøÇú»¤BÍî·$!4øýWçôŽVeûÛ’ÞÝ×rJæxYN)è»”Û}ÎÊšœ1@­PRë- ¤˜­³õ"=V]IÕ ð†‘½ÚMÚçÔ,µÓ6LYTÑbÀ–,ªå”t|*e¬¦ck’×Â_×™»wËx¦ÌÒ_–„ªÊ$kX‚ÖšöÔ§lËíÝõ÷Ä“a~ú{`øN8/VÁ*—Èã]‘¡_v Aÿó|ËÃzIåKÒÌ›’4¤ëˆ-ÅÔ-(Qcc͇÷¶¤§t3xüœ¥.ù1¼£’³är¥^›}d5ÜvÉ“¿/ãŒå[$‰.yªyZa-¬vÇÛZhTÆòÚš¸«\RŽÑÒÄšõ‚Ä+:×I«µe”V)Yˆ»šÿõ¼¥Pî¸ìho¶Åw¹ÕK€oѹÝP|BJKMúq%ÖÛã§…Íe™mŪ$‰Îô?»Ø˜ðå=*}Ÿn¦kB‰M¤ö(e5mÙUkRÈdz]ÓeÐ?K[+ÄóØÖe¤“‰lÑylU&)ÑKÞç¼e‰lQeQWèï]ïtIÃL)ìáÃ}™i…!ûòå‹ú»€º[’®ê±¥nkñ«û®?ïKÕ6q¥U©K–åïûvÖ|‡yÈ<\òî%ÿ„Ž! jE;µ¦ƒ´Çßtys;u×åÊ–SW·irUÃWèÔ+ÏóË÷’wºSeo:6()ä’¾wËúÛ×±¤l¤³¡ @uI“{×Y“šÖwyÏÓúþ¼ËšÜ.Ù¦eŽ|$Û4ô]_Ôr./ƒó¢–“rÿ9± ‚ ‹0ðÄå%CsÿÃ^XÿÀU°.7pjÉ–—ß8ºi™Ûô÷Û¸w©Í«(xÜ#iзÔÜÏëbHžgI_ýÕÚ{7L«+f+®¡X¢Ë-)ó‡Mt¾?sO/ã°Ú»>ô“]­;Жcã·°Íý„ÄÜÞãwÔÏDÁû¶kO½Ùýãy³}"éµ ‚1[õŽÏ:~ ¸‚ƶRïÞ}­ j3‹g‰·XÅsµ¬WÈ»,fZÑ'nþjz§Í¤‹Êûo 3˜Ì´j¶"Î}fôÚ÷@øñE­mÍZ¾˜é’èÞCE>¾=œ ŸQòßoà7ôø¼ÖÓÛCÀŽöîùÂgÈà55ô®6BÕý¦IÕ]‘U¥fÆgýÒúœ[ÖŠjg}Dw9Ù^¶»>wóÝ•~R9‹P°a¹ ÚrÅø –ëÐÚ§Ñä÷ŒvúxYVó’ã»M{(»ÿÕ²Ùâ¯G§€ ýì–KÚ˜£Üa¡Ã¯YÔfÍI\’‘wÙÊä¼ätWmû%ÍEÕB!¿©yèQå?9]Òº÷#}Q.(i·â»²²,GǦï}—[¾3¦¯–ŠŸ4~DaQ]¯™/û·J¸Š+.ViÔ‹ ô’4z”is|¹Ôç0Ë/7|8¦±¯ó®'HþwÌÈbZ&¹ŸÍVè“’ð¢Ú Ûù£ÿqݲendstream endobj 256 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5618 >> stream xœXy\S×¶>ÎáTq(ñ QoNœª`­C[œÀ‰IÑ:UDÂ< ìÈÀ<΍X,‰@©8Öy ­­ÞÚÖk¯¯·½Wkí>¾Mû{û$@boßýýÞûöÙÙ{­o}ë[kmáâD‚aþ²]Û“×ÄÅ®ž,JØ#ã×½¹‘n”÷gäÿrÃË©$'v#€›3ps©%Ö¹¿<öúË C¸GCm ŽZpbHð¯I“Þ\'OOEE'I¦Í;W²=]ÒûE²Tš(‹Š•¼ÿH‘ÆÄÉwIc“Þ’¬•J%IÑRI¤,F*Y¸q…¿¯d¢¯ˆÄW+M‹‘&cËÂ%«eáÒØD©—$2.AcûG!K’ÅÅ&¾%ñI”„IåÒpþ‘4-\*ç?¼)‘KvÉñßY¢$*!,6I!IŠ“ÈbÃc’#øëñzd\l’Dž‡¿ïÂ_ðQq‰I‰á 2y’߸t¹ÍƤè°$þÞDþ,‰‹Ä;#â“yoú¿%…Éb%IÒ´$þžíRI„,Q–ŽïÅGÉdV’e±QöÛß”$H£Â"b¤‰ÖsyTìþI¼“ËcÒ­¿³îê¿_–”(‰|ËY mœdµ„nLX‚„p|²ô•öhýÿâGÄbŸØÅqKäñË–'&ù%¯H KÛ¾:=|MF„¿4 20*:X¶vÇΘõ»6L6ýíì3gÍž3fî¼ù½¼7Ozsëä·¶M!ˆ1D1–$ÆAD0ñ±–˜@¬#B/b=áMl ‰%Ädb±”x‹ØL,#¦ˉ©„/1ð#Vo+‰Ä*b5±†˜Møsˆ× wBH #¶ áA '< áLŒ Fbâ5b1x—p# ˆÁÄb1”X‚ÙL¸ÉFð¹S’ÓÏα.—x—ä9j u×ÕǵÐõ>½‹þýµØ×º¼= cà¼EÿÛí}·«ƒF 2‚ƒ3‡ R4¤{èGC=íu‹;éþ‘P(,^6Øufcô`<*=¾¾ax¡çPÏ•žžD“DûD·G°#|FÈGèF4èñ/îÇÁÜÀ '˜a»YÀEÃ@¦M R©9ŠÌ=úüN¥LeÕª’ 6’šÁÕ“h›ÃW7 5õ$“1üRVŽuiU_Ùûƒw©oáV˜”CÁ°¬¦l>2ËÍî\ÑÉáÂ[ÐÈÍdÙÏl¢–¢GäÖ¾…Z·›ð>Õ u¤°ù«¯k¯Žlu*Sju–1¤€\ .Tn@ÀSæ`ŸÀnŒ ÿT¯1ht LtsCë»þái«–ˆmædš¡ÛsÔg.| Ef&ÄÁ£KÔ³Ÿ=9»ã#¿Vøä^ssǧ#nuÌ£rû®NJ¤L+”’põ!hÈ3¥×f–'Tzù¢uoŠ…OQj`>™$ô¢.ƒ£ÊCi µq ž^ºdõ<ÞŽL3'0  ³…s·8s#¹% ‡F!ÄŽý àx8 2}±°9±ŠíÌ÷ŸÎ@rƒN_}é[HBçpk;ÉвÃä°;·¸¯¹&²mÝÀ¬ŒÙ²%ty¶ÆOuVaȤ‘Û÷Sà€ÛwÏ^< 7‚rÚ Òåææå‰}WÇ/ô‹¾xVU\£­f«ï4ÀÐå'èDmàtúþDCÞH .zê¥j¨eeÚºÐÅSSª)Å´pªQ©ËÍV(Ò x?‘¿N1Ã/­èÀ>»1Þ´‡­“BN=udˆC C0Œ58é¬7u–]qj×= ‚(„ƒ ˆz>]v ×Ê—û‰…ïÁ .æÛKëÞ=Ö Q³ÎÝÿåùOdÿpû/øò{ÜaøˆÙy}cãB@£ÑhrC¢ w}½÷iãõËl*!½¸b#”*„N„Î\Ùiçç›”ð=´FÎ|wiݼÑc¼53àÜW¿>ÿRlÓš~ÁQN„ Oå¾_”Cæé•Æ*£±N+>‡kJ0C‹E¥¾1Åû$OY‰ÕN¥x½²¿²d# Çãltà.·žj‚3pJ€–?S±ÛzfH¢ý¹cvž…qM¥gçî¶þö3k"N¢ÒøC~5 oñÎWUä•f±È—úÆ“BÉS8¼eÛÈ} 6·>Q§,.Òºª²²Â ¨ÈªbSk3ôñ`X/G.³èÿvÒ8@p£ƒÒàÁzGîôCÐKlkÈÊ•¥,ó>gXLœk‹ 'HpT·®†N™"u‘ÒÖ£ ƺ±¶œ‹lêH¿6yvçá݇RkØø½ÑåúR)Æ ¨¡[o·ÜkjVäÔ‹Ë”¦DP Žñ,Í+-°¥BI]Õ-[&hiá(>Ù¹{R ÄÂcGbêƒF"ÁŒ@ŸäÊĺlö@ÆAåݼ.UƒrÿªAÍß2é #'µF/Ö-N({ ­ÉŸ›¡»IçZœá!DœŸÅ ±E¼B>â‹ì<þŒ Fû s‹ò@®(øŒô«³ŸUïí®,7‚ ºL©ÏËWåçŠC“f¬tôƒ–^£gÏC åvQuO—‡º e¾þè¾½éX»ŸqÉdƒ=Y›cض!)‰ö[£Üùç{¬¡u¬ »%!¯­V<xN»Ãñ¸ºÈ¹UŸÛO“Q÷97¹R)v Ö¡*\Pü—¯ˆõº«Ñb%Å:ö*ì"_Q$¼M½§hØ# °H¯ß¸q°ëº­xpÉØõ%\=c·&EÝTZ?¬Õn$qXêvØÊöç¡þÍa Í8Xq‹Bq8%Ó¨wá#òzß|Ä$û3õ¨Ç­‡¥fèivbϱÔeq³=~°ŸBáhZ ¢Qtq­yžtrZV”8'_…IA+ôJƒV«Ñ”Š»÷™ M€¾f‘oWÌ 6kéÚš]¥[‰%>Þ¬P³êTÄ_o_ûà|7ætY3wupâb@ûGÐvë»3е­M¥8ÎöûÈ „q ܧ‘:/ìtPh.ò =Èv‡ Îö z z i(-'TÙÉàKÁ@è‡ /r•ÃOûŽ\ª¢gVˆ¸v Ð{°{Š ŽSV¶® –/DÎ=õŽ‚úUÿˆ¶-?z&úîH\}<¡Ž~¶äÎ8ŸÕ;—®dað§ÌÃËs+"$ÈužÿåÐõ$úôŸ' ü“å®e[/ÌÑa:þÃJ‡pr( Üj“œÎ}Š(C3HÔ@ÙêÙvèϹa _{÷ŽGãIäîàõn;×VQ_°*­—cEÌ´ß+øØÛLôp2|HžqØàjÏ·«zš9gs4ÖÎAÖæ¢ƒsc¢›ß«_ƒ«§7òDÑ×ÄÏ—ýr³ÛôáEö˜i¯ ŠAaTæ+ ”yâÀ-‹ãzÆšó:LÇ,¬¥óÚ‘Û ´æìͨP4ìùê(ÏRÜGè±x±xÖ¯„Ï©½º—¦¶güÎg`|A¬Ð-²aiuÜ«Oø3qâÿA{&P( =Ÿ’mÁåÑ· ŒÌ¡õó¶×ëê!zAÚÉ|‰/š?S)“úŠ’µrTt‘°”ꀞäE‘Üj︦aå~¥ç¬%Q#…Óá ù*Ÿa`Û^°R1ÕNÅhìÎÆc‹pⱸ+ôDc&~æóÓ7šî\a…iiÓIÌM›{™ì: ‡Ï˜o.Îa…‡=Z‚èÙ¿®¿¾€”ƒpzঞlr £·c™ðê G›8 9ÚŽRçÿ‚’µ)ò¡~âÂá¦Í'¸Ø ½Í‚çfŽiqæ.ÂÍLiƒö¨¢ÿ9ÿ6 ‰˜.ƒ‘9ß_é«ÝuâÆš²2L£J¯È/(ÌWˆ7ï\¼ÐÞ¾Ÿ>.Mk43ÍÿæÂO€þþjð¼B5ÉÖôêÍ‚gn1îžçqÝ šƒ¦"?„D_Mƒ®p.œý`dÞyŒ(V¹ùûwÞ$ÂÛØ©~ œ…³y÷‹|3ì9f8 r(ˆª¼\vúlÓu ÚÌêýêvÀ±¥«*Ê«ôù:E1»S·B¦ƒ…ë³gû{¾mÇꑵ©òrï¶<´¬·›¡Ç‚ ú˜É`á‚à ùä×{+»¦°HùÇX8+»)“C·ƒk"sjù™ãÖéРùÓ–zýyl€ß117¶4.Ái<½Ž†"¯[Ëì¾Øx㇘ݾ+ÖùbæÑÂâJ}Ì5'O4­?b4Ó‰ßrÿ­^"gœ ™ˆ‰‘Ó;ëºîÿò¯þÚ °•ØÍvGá­a»l»ÕÁ1O»cüh¨¬¼yõhmY@=žk² ix Ì/RئÀ­BàiÏâ÷ñð -.ÓqÑÃSà;þ[’üWõN‘f˜Ñ‹z,,apA¹},ä,šEŸ·°‹zŽI9Ò ©æ‹À=º{å¹ÙbTl×ðÉÇüÀà 3H8™ºz&4d™÷jI?ß~~.à&óŠâÀ8ÀJ4Ó¡}øÝ¡¥AÁÁÜ}&JK^´ t¢‰d‚Í|‡»µ êÛ† ˹3\³Ó¼­>GØuìÛÞq•»LlCrSÎÍœ[9&•)³6»2$Ós§-±µ².Eœ]wèJÚ=ó ù%* rs Ò“‹gQA‘ ·ÊÂå}}{‰Xw˜žÜr¤+þöÈ+ û`[ˉ¦†³ Í8žT›P'7.ªô/K0â8UìÙLôÝû×oÉΨûv`Ùë+@Y¹¶vßÏžÅz^0iáàWÚ]L]®Î ” çåÌž‰»}7­ÀÌæÀL†ú|y­þÉ\'j²w{ð$Ô8 eÏñDèÇt}Çà–"Îúá}ËÄÄAs`(\‡“[Ç JkçÅØwï£P(špŸÈÏLÿ©ƒ°©o=¦Zf=šn5<‡ß _³mÿÁæl⊰Í{=ÎQ°‹÷‘¾Ù8ƒï­?äyø…Na"RspÝúÂ>?÷ <¿çÈ+ï1øŠ·búüñ=¦ÿQ¥ºïQ¥·®ò°ù©æÇGÚ¿«q‘ŠõC·ÈÏûîsÐtê‡>¢Æ} ;m¤/º‹79<Ð\„Ç‹ =ЋNE¸),2eã&qN‡|(²´Ð-´ÝùÁW(¸…w°gy•‚>†ê?«a5¸¥BÓ{äñÜ(r …6ôŒjãää9ôÎ^ö­Öש,3×/˜Ú ï·:sàsFDÛÓÐeõéÈi®[ÓwˆS&(w©wXr9³ò1tú à´&1ºþSyõØÍ–öÃÇOÔY}ûø{oÈÕqù‰lÚôÝ«v,x_‘¾ÐË¢O?=¤=XzÀ–þnÇ1hcPº*O ²Eyú<ƒqåb(± AO%?AØGŸî¾bŸÑ?ApÇð!±zyšöÅ—0 ¾ÛÞ*:×iúœ¡¿ð»2o•¿|Ó&qB|r4È¢•¸])×ëªôâ×ï´ÞôÕ3›ƒ‚“b‘p;aÞœ•fxrbªæž}šìÍCeÙ‡”;§´Y;Á@ø€yxìôep‡þ,ðôŒ@ÿ”¨­â”LÅ  sõ*£A[\Q)>qüLýy@ßh—†,Y0s;*%«Ê/P%ÍA,üækÍÍõ~#fNš7.xc]óv±ª´ Xè=999{*r>ÈbÛãZ³?4®‰CžCâüŽýòÂhs'F  ~Í(° ¤&g&‚,W « €‚ÒÔzÔÚäÚ4C Øâ²B#âä¹9xÞá…L¯+1ÅçÎW‚ZP›kJ=½¾>ç8 ŽÕ47ì7V#mÈÓ+zëÅ03|;P9öÊ«é${ÎʨCpn°êûrTF=äÄäl ]éñÌÝB£feRðCÜÃî·>0ÃwñÉZË+Ü%æ[³×&Çùѽ¨¨A¡H£Ð© @J‹+uí{?®hÁ|k ]žõ~B°Ãƒû#ZUú‚â|@gc³M©G“Ùæ„“ÙcÿÂ!pÌ£àó3Ã")kY›§ÌÐ×T…MÐcÒ`>SþEÝéc§/>†‚@=¨UùšPT èŠòŠŠÚUÒ¹oKý–²³ß}¹ÄÐhà…EßC—_!ݾYwiÁÒ5ásŪ¦©µº®®¦¥¹³’>gÙ¼zÒ¼i3"^Ëdó÷i [ø,/2qf|û)Π}=ey…ù _Ä©\WZcøšªkdÏkTæB,8ù@-ê}ª/ë“°­IS Tãlk9b†É–2Ü®×™¦êš²újËñàcúKÿós@2ÉkóÞ1âÉ!¾`>=çjÀß Îùg¿œ‰3¯;$NƒµÌ¶°5> VÌX¹ÙÜõùƒî‡¬?jfº;BWÌ›¹`ê²mW~ýÙ+baOE:2×5Ó˜[UW^Þ`uäûjmEߪÍT»Æc-ð7F@‘J±!9X8 üÞi C«à_–48–982Ží>ñ×G'nÜa~uºÈÐp`ÐçS‘‹QÈmVWÀ½;WZþzA¬ëddÛ²ÒÓ3Ã#·¥FzmXÇ•ÿØQVYWwÎ"†.pB;tÐÜ—Cç¨OÕº|-ÇÑÜJ ±äi‹@áTÊVê”ú"V[‡†A.¹9…… OĆ•¤¬Lü t¹€\t{´jU`³µ…†Â6_2ÖR§3àkª!O­,*Ì£±¡ÕTV™Íëkw†š_ŽÀ¸®Á2ð£CShÊo1$Û‹ž7OyXe}a©bà ‡¹Â: ·jÊIc¯‚«Å¡h+‰Vàf!7˦X~T(ꉵ±üi 8ûŒ´jU¡ '`vYne•AW_-†[ai·VÍa¼ú1§¼Œ!±™©øëÚVóʱyga¹Þx… Yʾ~–¡×O ¸Ë‹˜ßÈ/Iþ@î·—ƒ]Yq (µ^¡,Ø­÷È[­RX5C.Ó•T•‰§š¸™&èn2™(ó€“Ínnñ?­¿¦‡endstream endobj 257 0 obj << /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óûendstream endobj 258 0 obj << /Filter /FlateDecode /Length 7810 >> stream xœí[oÇ™†ïçW œB&f»»ºúPA’ ;^`l°¶hƒ8(‘:8"iS’-ï¯ßújfºÞU½o+'ä"0l–›Ÿ®®óiz¾Û¶M·míŸýϧ·›O¾òíöùëÍîò0¶ƒŸ¶Ï7ßmºti»ÿñôvûée¤ƒßÎMG¿½|¶ÙYºm×MÍìæíÔú¦ëÇíåíæg¿>¿\ß´ÝÙO–ÐÃyÛ„0ta>»ÉÁ«¼^ЗùâÝrñ>_|’ƒ¯‹V¸×÷§@?÷c¾Wï°\}›ƒ·9ø$Áð ÷ùê³|õi¾z•ƒ¯‹²×çºü"¦z†°½üíæòg˜†Ïò#¼ÊÁ·9ØäàÓ¼/²w9ø“ñp³_æ‹ËÅ«b‚7Å䂇}ƒÉµ_æà»üú¬ßÅ×9Øo,dß«¢ï Ùócñꛢâ¶ŸgÅgÖ‘ø¨H¼+Fâ:•7ôÍÔ±B^^ÇêWθúIB1…r 5áîT6CØ'I þ9Ÿåà«|[d?ÍÁ?¯>ÎÁ&!ïŠW?ÊÁSâ\Rç"U°i¶D:ûùùå7›nžšÐ/éöm1± …þRžc~-õÿW9úº˜ÆPà¿/f~¹ü¼*Fç®õ›b }}^ §¤;$ÐÅ¡mºþ Öý¶Ø5Év›O¾ê\ }ËÐ5ãìv¹röS˨“ÎÇ7S;Ìû|;ûßqìðÍæ¹'’ÐøÖ÷‡¼/ö9åÊñª˜‡·˜¥ÞåªÈ¾× \LmãCWKòrÿ c¿¯Š9ùù¾Já@‡sÚA=ˆemI®_æËùj¹Ò<)ÚdŸñŠ‹í¯ÌõËÔâ=žÅðtŠO­‰.ôlj½„?V]ÕC%…ßkãÚùÌa³»\…^àªØy¼É,Ȇ÷[¢ãFüƒ[¢õãÌ#r ~ST=-Þ«Üÿ˜“í¯--†Š^d cyìQ.¸µz»x»„8Àþ â{Ÿò8ïyñÙî‹1{]l$^`ú¦úÆX®Ü¡><äâu“ ÝU>ÍÀ}ÞƒÜeÓ"7¾Æ8°+ìûøV ;4ñ/ŠÍ/¯ÿú‘ýiÇ,L ¾ý{d/"ña#{ÑH”Çów¥ <’„Šö¢˜ªåÞæáôÏNK9¡”ÿ ýÿGþKpõÈ¿ïš6ÌõþFóПBccAhA^ÿìÿrðæoè‘I_öwî‘-­ŽWkÊKVňÃÕsGååàp£œ‚}Ž?Å·ÊU^GÂø\îDžcfþœ¬óRíÝ}1­/™O–nŸ_n¾Ü|·qíä›à¶}hçf¶ÝúÆ…åçÃÍöñöΦ©]»}º_tݾ~zW]ní:·?¹öhÁÕ SÓÎ]¼‘o†8O¼¼ÝœýæåíÍÝë—÷w¯±í|»}gÿµf.EîƒîÙï\ÓýÖ·}œV鞟ݿz{{÷w¸‰ÝàÂîä\Û´C·õsç÷û¥ä¯îÏ»!–ÈÖÇAä’Þqv?Ùé‡Å/â¿ßìïÿÙ£ýý}ö»ã_n;ø¹of¿½ÍWb‰iºaûjóhã¦ØÒMR‡+HÅÞò¨Ã ú®w±µj¹‚Tßú¦G×r)??r® 5ú¹G¤W€*%Ž÷S3Ƈìc’„ÉÈw®éýr%=öê|Ô#´»€ŒS× h:\9¢¦ß!µ¿rDnj\ÔþÊåcEÄþ÷è÷nvûÌ: û+9QV—رqnœŽjEËé¼\húÑ¥JáR­ëbL»q¶•ü³Xš.ĸÛÿ‡ÿ?³]¸è?v“ø¿Š#•®]tû¿îœÑPáŠÞÇÜ XཋÙuH½}ñj¹Ô¾xµ\ÉÔ¡xg*_j_¼Z®µ/Þ@-W€Úo –+™úÛóv˜ÓStcŒ¦Û5E1í/ºqð–§p±'°ü\³…ûçÖ¥¼‹£Î0¥<[®>¡Xíúqž7U»…:T»ÊÕîÀäjw€°Ú-ÔRí ªÝB-Õn¡ Ú-Ô®Ú-È¡Ú-¿_ªÝ‚@µKåRAw™“hhúÃ÷ºÊ¦å¥·ï,c—6Ê£•ƒh },͇Ÿ7›ØÉ4í˜ò˜÷Zm¢·2R¹ß ÈLC,y±1õÓи¡f’šhœ$¦>¢ âT‡Ì4Æ‘z8Å€‡d¯fÀãS¹çž*“=<ž±ý‡ðTóLýn °dëf*’˜ò툩™)VøX?‡ÞMWMl ™)Ä^ÖŠZ?YOV1I(™bGÝG(Ž3ÝT5)(š†Ö&Ç ±ß •tÒ˜Ü4Y…â¦:„¦q¶†G˜ª™b§gƒdn’™ÜÐtS,t],Ås%Å5¦~M­H<9)‰¨©‹fRÏV‡ÌÔ÷Í4aA)™$„¦8ƒªO'!4±FNC`âé$!3yg /ŠA}6 ¡iðM­A‘ xxIM±izeªBfÚ4Í]j©šXÿ¤!0-¹KDUæÈs¨TTƒÐÄzL ¡éPN˜¨Æ€§‹Ýt8Švúy,ªCÉš±cJ ¡‰ ½4&^w%¦œè(d¦Ø:Õè*<ôÑ“=¼ P xh)4CWK" ¡©ëë“ ™iŽIh лÆUI ©w³­ûpS:2ÕÔTƒÀÔ†±ñ³0Õ!3ß´j^¡!0ñ¼“˜rĉ©EÓØºfŒ}ïzûY6iL44„¦ÎÎ÷)S“‹Iák#f ‰¦¸†Ð4OõÖICfŠîÔŒi0JŸŽ@hZ2…™ª™Æ4´e@BfšlÂÈI&{è&¤dÞ&í,:uÄ,³eW%!0±]ZÉ Ç9;Œ,DUMl§OCÙÄ[1èq¾~ÈVCf ®i„J5DBÑ4·iØÂ ¤†ÐÄÒ[CÙÄÓIChê'%SØm¼±š¢!4-›ðÌT…À$òNAhbµNC`¢ûNÊ&•w 2“½ö,(“„ÌäR„aë¼Pï4„&v^CCG&r^CC`Ê›ðÄT‡À”«91Õ!0åí@bªCÙ\7ÈLý6ñè.­†ÐÄö×5„&¶2¯!0ÑóB[›×šÜ`ƒ>aªB`¢{ÐB[ã՚د†²É‡vªŸÕ™|¬”²HL¼GšØú¼†²IôBMq ™ip»mS¶*§!4±U9 ¡‰íÕkMl}OC`¢»ÝñÓšØîƒ†²ÉÏ“«ŸÔ™Æ6}ä~2HCG&ûÌ¿4Õ 4vt™¨Æ ‡ígjLô‚†ÐDö3%“=¹u’) ùé>´d²G”I ¡iìO*ÓQj+ÈL“­!ð“’¢(&{xS¢𠽊æž*:8QÌâY¯ðÐŒWŒyæ±™F•aBSJL|\"!4±«ôÐ¥„²Idœ„ÌÒb=$e©]“˜è ¡‰ÑP6Á¯')þjÿѪzœ„¦%[˜© ¡iê'5M¡M›|¨!0ÑÝY ¡‰íÎj(›üJBhbçj4&^ $¦išêûê2Óèm`ÎOWiMKQ)µ™BÓ06cmoVCÙÄÏiiL91‰©™iJKt¢HL¼HÈLqz¦N4I=씆†²‰Ÿ‹Ñ˜¦±µ)nªCf ö¶Æ ®¾ï¬¡dšwo¯]’ Të$tdjí£z•r)!4-G^˜© eS>VÕô°S SÎ^bªChZ²—™ªÐ£Mß¶i3’žCZ¡‰œF[¡©MÛæÅú»Û _¡‰œbXemSV@h";á+ 0±6e„&ßWO1¬€Ìd/üåKüšÍ8Å€‡,ðkfñЃšÉž¼]ª$ŠÉžaŠ1KGRDI(›D¹–˜æ9B$!4‘]™š–E{§*&žuBSï«'aV@fêûôfp¶—²BÙY)Gœ˜ê™â8aò|áz”Mt·a„&²x½ÓÔ†ýbªCfÚôš`¶S´BÙæ_¡‰lô¯€ÐTß3Ö zhi’P6Ñ]°šh;'!0ñÒ$¡dšwýæ9§ 4Ñœ zÈašh¯)¡l ¡‰¶MBíë$&Qšd¦1}H³ÔH(›D_'!4-Czœ„&ra&ÞkJMK¶0S2Ó4¦†óSBG¦ú „P6‰¶WBhªok<¼®HLãä›A¤Ì4{ùyüP6ÑÝž˜øÈIBh"»=+ 0ñ—šÆÔ ™)¤¡‹¼“šÈÍ (›D)šÈÍ L´þ*=dÇo&^$dßdÕvû¯Sªïޝ€ÀÄvµW@`ÊŒÄT‡À”“€˜ê™bñ;¾w¸B+—BÙÕ^¡iHïR¦*&¶ƒ¼BÙZi&{%7Õ¡d²·/)‘`Ì㦓ã&%‘„ÀDÛ ¡‰ì®€ÀD[' ¡‰&¸„Ò7ö6}ôö­yµsW+ #S[=wµ2“ì•æ¢þJMäÁ èÈÄZ ‰—' ‰— ¡iÉ`fªBfÒËãýØwÕ3˜+ 49wòe%S2Óèv᯿]C3èa;YÝÒ˜ÆvØÈ ¦:d¦©µ×‡ûЧ/gœ‹3i ¡‰¼;d„&²½Û‹^¡iÙ``¦*¦œ-ÄT‡À4„©© “<Á^Î7ë4„&¶§¥!0Ñu> ‰×: ¡‰íiLK®Q•1Ï<§ÜóT’𨢆ÐÄVC5&ºó§!4±µ" ™ÚÚû¥5ÞcJL´,)Æ@ÎE2SÌLû* ÞbKM´Å–˜h‹­ô°¾_C`¢kT-HŠAÏIÆ<ý”^ÈÏ“GB`b3AÉ ‡ÖT ‰'’„ÌäÇôÂzn’™b#eÆ£+“S?w'Gø ¦:„¦%â…O hÈLcoo÷;_})ªfÀÃV¹$“=qÀYßÈ• xh­ULöðb¤óL.½Š›'„ÀDYÅ gžë}™bÀC[Å ‡­mkL<Ó$d¦¹Mäãm­„ŽL]ýí‡BaIMlýFC`¢]­bÀCÇWŠA-BÓ0Ö?M£!4ùéä# %SBS?ŸLÇJOW…ŽLmýŒ¸†’)¤±g¨Ô·IÈLaN/óFWÿ$”†ÐDkŠ„ÐDkŠ„ÀÄçl­+ŠAëê§û5MC;¦„Òô֚ص†ÐÄÖ74„&6oךØJ‰†ÀDg¶B[ИhyÒ™º!½^œ§“„ÀDk†ÀÔ‡Pÿ4º†ÐDÓIBhêâÔ¼Zï$d&×§—§ç .´âS¾1Õ!3õ.m"Ó¶WChj]ýí~ñjM´KLtT !4Ñ’)!4µþäX¥8U!0¹0Ô?Å !3ù.½°žN15&:ÊԘܢÈÓ[B`b³TÉ ‡I ¡‰ŽI$d¦àÒ Êéy3 ¡©ï럦јr#¦:„¦e¨XØcИr‘#qªCÑ4¶]z‰7-kMlF¨!4±™³†ÀÄêŠdÐÃæƒuk(™Bú°£H%‰ÎÀ5„&6ÏÑ™º9½RšæœbÐÃæpÏ9 ™ÉMéÃi쬂dг$$U!4-s¡eÒ™ú!}ÈŽ–5„&6®ÐšF__ÿÖšØpPC`¢# ™Éûô `:jÒšèÓIMll¡!0±‘œdm¾Ü|·qíäíQ¬R³M‹»)Î×]X~>Üloï6v®mÝö‡M·ý"þûÍæ“¯º®Ý~öhÓníŸGŸýnãâÜz7'ÚeM—^ tø±Ü²ÛýÅþÇÓÛí§—Ñ–û„qôÛËgñ‰Øv}Ö¼µóÏý8m/o7<ûõù…­èµÝÙO–ÐÃyÛ„0ta>»ÉÁ«¼^ЗùâÝrñj ½Î¿~Q4}{z«~îdzg9ø2_åàÍáÝÙ=þÙrõM¾ú¢øg×Å[¼ÎA0<Ù§Eöu¾°wùê§ùêU~_¼Z¾ñU–]á-–ൺÛ5&IÉp‘ƒÏÿtù…}mhcE¶Ý^^ÇRó6ý~†°¤àC¾)½ÍÁ'Jö%$4¦M>ËÁ—ÅÔCŒØþ¨X;?$IàÏ>)&õß¹X‚ÎA¨‡(^}œƒzbxLHs­ÿ¶˜:ß¿çÅ–òW9x”©Y˜bØNÇÍÂi’}š+©R¿ÌÁWÅàUÞåàÓbcñQ~}žÃïŽ},(çÿ•KÛorðûbÓð°4Kºìï~Z´¯± [¤]|¯q&í4†·ÅvfÅ€ {RóÄ»b$ Á½*pÚihËî‹Wß#\¾…,dÐd»l‹Á./ŠWÝ®û¦ë–¡ }ñ¯Vö©{œƒMˆë]ñ*4—‡&rÉÓ&²óãôOêOJÊzRZËåà®uAtö½È¾c…Š?ÇK8—‘ã¸|šR"\fà«ü}~^ŽÖ|@ùÏh“?.µswÅ–z“ ýâŠ?*6mÐANB±hŠ¿/²ëåQÚqV/ÙR.-GcêRn®ø³bKú/ñÌOòUèSŠ·ûßJŒ½1f ^ææ«ü}~žƒûÐÅNP™ÝåÑÐÓb©*÷¾G”¢ü~™¸c…ù›b?ËêMŽ5Lz GËÇ*wŧªÔ•ð ÊÏUb!ÓáiÊí<ã‹b™‡Î &»Pk%è_®&@ËjÈ¥!ýþIÑpS|Îrwu]L¿îŸ²D sóCFQ‹Ôû9t2e‚Ç(Ï= ¾+Æ}(Æ÷ãòêÈá^wÅÀ€†?0y¢2ð¡øg÷Å`¹<Ý} ˜/-´”î[cùþ)üRt¿-Åfß}~¹ùrÓnŸWWØmu?úÛЕ–Ø»~°ƒòi…ýòü¢m\Ûº0¥ìègÜn–麶S×Ó6¾m‡àíÞQ>¡ÜÙ ¯ü¡gÝÕÔ©m#úÜMŽO£åb‡Ú·áð§÷OâÃû&Þ&Äî,ÞslÛ9ìz€aö]kÍK¼Ü‡à§Áêyïâè¯u'‘µ«¾sgW–]ƒO…¶oÇ4Ð7ÁÜ1‹¬píÃ?îþl =ʬ¤úntia'ÿ¡y];ÌÁY_#Ÿrrg;]?ÏGw¹6óÔŒ­)]ØÇ^æ0X–Ûó¹¶Û%Œ?JÒ®O0Ì9M³îmŽóCЍέ!¹~wë˜æ~—…]Ý´ëÝ÷ÏÁ+cÛ0û â“ZÊ! .Œ +eß`_d–1ÕUJ­ÖͽÛ=ôzеÎÊWól•"F³í|éýĆñÝÏ®ö±(B4ïcF¥ØyçwcŽ!´óÑM~Øâ.fÖ>ÿüì}*»ç{‘ó©T†/œï›¡íãð.þŒ`÷H×¹_Ë5\Ý÷*)ü,_åàÛü4ÿP¼úÄçÅÊ3ù¦ïÜRyš¥líz׸9ŽV]hæyJÃÕ3~ùÍ®åøróÿ%o'4endstream endobj 259 0 obj << /Filter /FlateDecode /Length 155 >> stream xœ3¶Ô32V0P02T02Q06T01WH1ä2Ð30Š!Œ‘œËU¨`iS026i&`9'O.}O_…’¢ÒT.ýpK.} *.}§gC.}—h ™±\únúÎÎn@n€¾·‚.PÆ9?§47¯XÁÒÎŽËÓEAmXóõýÞÿÿ¯ÿÿÊ~ý“« \®ž \ÄE*Bendstream endobj 260 0 obj << /Filter /FlateDecode /Length 160 >> stream xœ]O1à Üy? aI‡ˆ%]2´ªÚ~€1Ä B†þ¾ÎÒùî䳯ëH.qñˆ^˜¸ud"®~‹€|ÂÙk%7Ree¢ÃM‡÷' ß h~× Š§¼teÕ!ð× £¦Yß4ª·V1$ó'ÕÀd«SvªBBñŸJŽæçM[ŒH©4-MrGø{&øS|ûCÉSoendstream endobj 261 0 obj << /Filter /FlateDecode /Length 33921 >> stream xœì½[Ï%Ëq%ö~~E~iÚÃvÞ/ÆÀX?ƒlðÃÌQ"¥0üÛ+VdíªÊܧŠ#’:—‚ñë8µ³²2#3#ã²Ö?|r_ü'‡ÿ³ÿýÕÇ7ÿóÿ•ܧ¿ùý7òÿ¾ù‡o¼þ×Oö?¿úøô¿ýBžÈY$_ºëþÓ/¾~ßúOÞ×/-´OÕ¥/>–O¿øøæ?}þw?ûyrí‹sõóÇÏ~Þ[+Ÿù÷”ç>ÿö+ÿ.¾|þÇŸ¹/®÷ÜúçßÈŸÉ×XÛç_ó(ïø­þÝjh.|þå·|¦öôùï~ªü4õÏÿ„WæÞk òz‘V×üç¿úÙÏåÏܲ4¼ýçßY'ZÚu¨~þÕë‰_þ­%ç²¼ã×ø;ösùü{>ž¤+ïbiÒ kDûìe\³*!÷×GùÏÿŒ®â¡Ù_Z—ª´œóc$Óq$ñ[çS”VäùDù‚ýnoùí_áå.´8†±¥úù—è²ïEÇí5Z™â£ïýó_oÂ`÷þË/þo|ü’SkŸ~ñ¾ùÅÿøŸ>•ßÄV})Ÿû-ž¬½õüù[Œ‰KµÆÏ¿ýY(_z+éóÓOp.ô*ã'¯m-·ðùÙ~†öÿý/¾ù?¿¡~æârªŸ~÷^){úÔ¾ôRÒJ'K 2r™:ù¿þìç9D´Ï/oeò½É8nþîõçþüúûãêáûúóWë&ÜëÏó/‘ÆËçÿü³Ãß:!"È}ÌÇò;¿}ýùÛןÿ¸îï×åïþéõçzýùϯ?ý‡ ëw½c|›}‡·!Vñ¿}IÃKê–úןÿæõ³ÿrדèæçÿáõÀï_üúõç·Ké¯^þã«…^>ûËן¿ûƒ¾sŒ™ýŸ~öóèSÿ°Ÿ¹Ý üý~2†l#¶Ÿù¿zýùûå þîÕÿºüš¿~}Âÿ÷úÓ¿þü_î¦õï^þí~ìösâeÛø"ÛßnN>–Ãø÷¯~û’~}IwÓ³{`Ý]~ÿja÷¶¿Yþù»åèüͲ¿ÿx5’ìdÉrPü×ן¿~ý9Çūҿ}ýù¡Ú£ìÑ­Ëfø‹¿–­o×Àï÷ àÑŸg>¶üb§j»å¹[Ö;ÚiÍîÙß/ðýç÷úó?¼†â/_þûŸý¼Êá€¬×æ?íõ`õçzf~¿œæËYÜ)ëN“þîÕ·Ëÿ««½dׇ¿ÛuãüѹûåëÏ¿_m vèùùßWeg Ÿ²Jb|òµÇ/1|Š2¨8/÷ëOÿ÷§¿“#ÔË‘ú«ßËá‰ÿûý¯þîÆ/¿ùzxEŠE쎲=8þ÷ü ÷¥‰AÔ䘖_ùV³üQsì®ð½bbˆð)§’¿È{>&É·"éùK+ô/¾P"fTIN|&Š}ñ%áW¢Ú±½‘$1€äÅFµç3áKŠ"«¡…¥Ö×—è!Éx'$Uö*éOÌa“H?ðL”_óW-¡¯9J{-_iË3GI`DRø]%ÊÉt”Àô…¤qY%©ˆíIþ’%2"‘—â ÿ¥A F÷_²t0H·ÂI“cÃŒ†›¾\Lî/Y†Y´íK¬ï%aÿ­ø/!a,ÄDM㑎ÑIò ü”ß³X§*ÉåKÁèà{ùLì‹Zd­PRmþê—ÎgäËE¥r’.;~DÄ?#ìÈ×?1>ãq™4 ˜JÄúUe«6¼MÔ%à™êmš¤ (À¢Ìõ¤È¤àUÝ™´æå•Ë@¬èˆWÅ/3)Zô±]9)±á/Õt6ÜK²nº_×G–_›®VÌo [‘k&¸±®¤‹Ð?\¼éŸ×Ñ‹­q…H’vQ†³Z‡"¦U$ý‹i–|‘ù6}”9ÄXDo“rzõ·²sÄ/ÞÇôé¿ÉŽ#¶ë§ÿÇö‡¿øKýŸþò/þã³<[Á³üØ·‚ß|ó—j´,·xü‘JkòGêòg¥Id‰P E]%Òß  i¢=h7Šâcú½,úàùßD‰¨”Æc†ùˆÓ¯ö®}ñú1{“8Sá˜²ŽƒË2²”È£—Òhx!©ø}ÆŽQÙÁ¬k@$ÞÆ3ÊÉ7§.jÑù+t>‹Dvƒñ«I3O¬­._)‰£ž°c$ö0d}¤¾UR'ß™t¦"f^{#&§ŽNÀ ž‰_Š>ªþ^žñè9$®|‘kƒ<Ó°BEâe£Hhî—7‚Æ•ý°êwQ~ì .y,•x<'žõ+öÑcm'ˆRc/ÛM8d%{6Ì É^¦ƒ[æI•p=êõ¨×ŸL½¸½UÙÍe£†ã\Fû\‘UFU··Ò±Êé±±ŠúUùK¦,µÖi‹ÈÈ8t=5š¨oª1a‰l¨Ú›Š ×_ɤÃWe³•“/áðæ‡7P¹“É3–ƒI Ú‘é ÅÐ|Æi’ôâ-ó+Oï5Kd¸3Z–'ò,u [ÏãÐÆ»edSY DŸ=^äû8;åÃeäxmÛp0¥*Š^ã°dÂSmÛ›ez»|Sû£´7_ø«*¯Òáë©¥Ù¿ñ(btäÆIP%UY½6ä2Qs¦¼“È·``tÂ"Û 8åUÑÖa U'J.ÊxV•tz!á]D~Õõs!©P’+%rŒc°ªm E¶ †ÙõÉæ» ò£ –($°"1QêüF"ÖH…nÉ o¯-‹Å@û¤ÀpBË­`IjwdyA! -†"3Ô<ÃD¡BÁbøþoÏ«C7ìgÁ< æY0wÌ8‚ }mrÏ)rÿÁ%H®*GÐQ>Vz%w0¼§É!j—¡¦³!’bKl!‘¾$ §Ü ìf‰ëV‚–ÚÅGFµYj¼yˆŽàMUæ†fÓ&}Šö+ÜaE!ü¸R‹vf4#+¦µ7ywÆôãBèùL…}"Wo—uìbÈ=ÌÛ‘ÞDÅäìNÅ+UKzÛKärÕÐN*Û2‚¨")áKKÙáGbrñMX:œ<þwYL>mEµÕmËT¦TŒ¹î5{1V$X!¾$ò´T›|¶®B™R»ÌßYÜó–0ïÓÆ²Ø|Žzô›×€6¯FöÇæ8I°±jƒ¨7ïÙt_HwƧeƒÄ6GY ªI‘ºÖäZ¬ª%=6@E íŽkö©3z¼<‹áY ÏbhÛÑÑRÔ“#'ï N `–ÇÔ0p6ÃG«ùD¿¢*e{«Q)‹Í_uÛ0Gì+ÒL§&Ʀ>‘¸1†°Ï"G¬Q"{ºíÑU>päþ%å®*hã1Sâ7XwŽ_¥1”gí=kïY{ÿ ko-,VñÊc(=GæOÈwêM-GÑEéùÇ$Ñ—sÄ:f]C\»ÔÊ HÄ&D&3l%ŸuÁÁ«­$xYÓw *F$GFl  mˆ1©„ 2~ãÌ‘ÎêíVÙ´v%©ÙÛ‘6®4ÃÙÝK’ÎeUز¬Sx×C²PÔ˜~•̽®s æ%qÔ`Ëp GÿF"ï¶tÉ´!‘Ù­ÖÊñŒN5[,Jý'vBšP+5D?¥íbª¢ùnó½6/~„Ý–Ë7ÅcÀ4â[ºÆxÍ_IDÃàØ—i¥é‡Âbqh‚¨þ*Ží$T¨⣲ú¹wd]ôHÖ ÜÃÑ ]Ç1³DºW:š±½ì¬±ºÄtUº˜Ð6ôaH¼ W ¶$úŒaðApÕ˺ŎzmnÞÛ¨‚b‡ÒÊŽøÄø+Sþ¨þ¼W8{“èžj'˜N¶HŠm‹¢„ìóëøg4‡Æ¿KØg ?køYÃ?à5Œƒ:êÑ®^}‰àkå´W‡„œÚ_œöæIÄe½d³8`›y“d V¤\ß‹YŒ0Ö"$!o’¬Ž ¨6Àf¨}ç>–vÝ›”^ŸDÎB’zD¤R$ê!}§ÿFL¥B‰tnéZ’Œ)é"—ÕaN‡©aßÍKÞÆ.2KB¤ÓY«l¸!X dûÎ Ý]ò*‡íF©¥a+'­WÁFSŽ„9iÈ c;j{¸Þ$Ô)Þ <,ÚNз«»Œ-Ã×Ðq »FøÅ³†¯×’Äx@ÏÕì^ÛSOãòcÔEÕGLŒJ‡v°èò;IÐ/íðxQ‚ØBíb‡2&Ú‡o?¸®`œ;ö5O] ØfUbª4$žY“ò;IS_T—Ñå¨âÊ A|Ù¶Má‹B»g¡< åY(W å”Ò¡‰Èf/Uozù;Zotµ—bÛl*jH¼¹jà aÂb6•œyøUBŒéA×$”-ÅîõŒÌšéAâ6Á2e˸aC†Ê!ñ?ªm(˜t‰ŒÅøÑR¢‰Œ¢rÙ$EÒTC¡25 >ò.oÖ–q×ÄKËðŒ¸²kËPjNh³¤ÉÇ®Ò S$¥=:~ ²\u»ÝÔ‹ù-}Ë[H<ß·;Ø+fvgÁç®.°—É·ƒÉ¢Êê%НŠæ3êGE wˆzwð#¬ˆ²–`Žû}²ê'»¾œn_•|Tòû¥’w|hUÆÝõIo¢´i~À~Ðs§È¬DdîI»úê‚òôä(à¬4Í–SÃ#¢ž ÏÈ1H'äJ’4“ߣp9QÂÌt/AIѼÌR¬ˆ  ùe‡[˜N²>0v7œµ@t(!_ñ\~²ÌEÐÜþ[¾¹#SRNFÚ+Ð x³=’^ø§Ú¾ûÄ¡­^Æ÷.²×½Ü­x£Ë-YJ£%±®$=Úˆ[Ê~„S8ëˆ7Q¨D‡¢]².õíW^ WøL8™åŸÍ½È*Ä$àªïÙNãÒ° )‘þè嫨pZ´ÔB“.u*5웩btÁ/î±9¨@Vc×þ9ºWjemGpÞØcº ÿlÎYê§³¾×Êœ\ÜW*ÐQ{u~4úÑè‘FŸÓ›½óš[V½ë±YA籘Õ&rR¡´4;ïäM‰³ò"d¬`úC–0>ê–`éçÃ|å½`“ <3©ÿ _¥þk‰f„FŽœÕ-jc@94,O[ß½åàÏ’Š·B‘„ÁŒ”ªÎÅW:xÐôD6Û}Ë&4Èãu Á.÷.4½áGÐ †ÊpëPI6WÜB3ÝcÎ÷Gp`Kˆ‹Õ@`é÷—Q y—mqW©™©óôFiünÊìXó£! žéÜä5u!iôj™ªåe0)wÌ;˜%õEÚÎð…a’Jc@ÝžQ?—|(½ZbkÇ~ÅTyFŽ}އ/·JÊà<|9¾ ?îü^ȯPç]B~§În %¦ºkú@ ÃÛè4±P~ÒGðŽßpö6.<’“×rölÎÞÏÙC:{QžÖÉ;{lÏ^]—5[Ië1ãÀùŸ;…³Q)Jòt:4µÌ’N%Àé`©UºhQ€MD (6»3"` óCÍ.ßrFD¡0¢8ñK£…œÈØ­P}øðÍó­U¿LÙ’Į̂„Âø–ñBÜøúhø£á?j ¿•&|Ì€Ã1%Bp!·p‹˜:ýbÒ³å˜Õí[I ³$˜ÝÞ2Üqu~¹KGbŸ—ÔÂ4ÉÓ³Œ"5K¦'~$޹ôYÝÁÜ š·ß´º=Óéš•ÕK‡îJÂás½Ìll·ïë¡“5ЇÍC#˜{ƒt@Àé`9÷’.O©š¿ág`Öº >^#æ½ùœGíƒ÷[®‚œú]n 3Ç݇Ͳ•.ëX$7ò;Çš± Và5ýßËTÛg(R{Swãþê3zŸåö,·g¹ýY–Ž¿såñǪ\y®hž«žçÊèsñôT^}§&»;ÇäETtóM›öݽUzã‰ÜÐF±oO¶h˜lö¦ߨµ8z,wQE3 6>":³ÍzYJ¢%AúbOv¹t2š—ïØíþé°­¨'À°/–ÖrkG+ÛÑ´é¤aƒ8~w ‚ LÊt¾1ùÍYý¯üJì©ÕjW[tQZË–1;VƒÌ„cF¨óû”Üá£yRÒ‡Tâ PŠZ|ì6x»ÎTS˜Ã'×5B¢ˆ#Ìä2 6kŸe]VÙó™†U/¿²ÂöèdÕg†®$Qý ¸1íKØó?'Åçˆ"‘÷’¨ âd¦¾ÊÑáïÁG¿JÖ{Ôðp Š…‡ÎµûŠà— KƒûOÕU•Õ6å óSdf*&ŽŒŒ…¢ªv6¡WSà |=KøYÂÏþÁ.á3Pî†çÐjëv =eV~,ó1§”Í9«s‘ùù6;ô•A:g™Î™¨s¶ê¹Bn*ª›Ëî•ySõÞ\á7Kæ*«;µYf>¾>a!‘ÅÔÂËS¡v©:&Â(V/œ#þ¢Žu‘ä­ƒjŠ¥Í÷®>ªD€Yëg©x*+" 7/Þ-³¿ÄšÕi@N>‡Ëа6([y“•Ñg›¨[õïSÑüTW?×Þ/êó§þ¹ÊF¸ƒ@]”€{?ª?Sð2ì_>sÎEþú¬¢g=«è_¸ŠîøL}°Ä¡i­—Âóš1èh©²^Q&¢(²=‘î˜Å¨ãlzÄ!Ñ› Æy]áSÒ&aV$ÐPhö¨§&ƒ_… Uß÷ø(š¡Š_%gqâ…£’!‰Œßj.^^Ëöª##—–·f&IVpò\d?¡òû¢)àý,™)XŠÔÑGr-Ò©ð«êù ˆ¦#oµÎ(¯­ò, Ð æ Ü(p°‡7‚®UÕ>X»EýIZt7hÌB%#Ñt!±zmM…fo Ç¦Žª°Y ßÝtüòøÍ¡d%™qMfì“;ˆ)ŽÈ¿Y6EªWp‘.C'Ýͳh¿%!ø¦u–¢ÙÎV§G jGZÂIûÕ3‚&SHË 5 $ |ðwªã°T4%o7-€î¸0¾ ©%[¦6ÜO¨¤/ÉQõ+Ð *عŒ7‡Ý›†¾5?R2ŽýÓÃòYÅÏ*~VñzÃÚøœZ(ò¡¸YFX Y44q©iÚô&@: ì'¤«†7Å[|7Ï‚;˜Ë3RóŒæÏ¨Ð äè]zF žPªÏP½+óªº+}ŒÁOš0X0Íšq¶9¥JdºßÃd-8÷‹:Ñý°Š­@n«D"[.¢²ý“:ã¤eÔêŒrѾ—WÌ$ïšÂà]›…éô V‹oÌ´.ÙZÐÕÓÐ̲Êti…à¡Y–£€ P•†xI2s>u«k.!òLÂDÿÚÆ5F£Jjß@*HW«Íw– x‡æh-,1rSØ.3P à=±üjX}°¶Í¤›%¦vеI`ã—n‰á/ElFº=2‚Rgíå-íÑèG£<}‡ÂiJNýËÉh¼ˆÜÓîûW$˜î¼"ñàÿFJUPè K‡NM¥tÆ I-Lß͉ bfjnô˜°bßeV#ùJqœ½%¦Ô©è²Zùe ê—%«À…Eê>eÜðiÇjäMF:ý;‘É «Öx™û¾·=jE}Œæ¶@Uñ‚1Âì$–  `м!ûl™á:`%IÄÀ@©>¯êˆÅwË'gQ'ª{”îo›OD>¥á´_Uµ¬RØ3Êõ­ÙÚ xl°ÆÁk1ïÎ53 ‚çLÃíMý…E›÷Iá+‰gŽp÷ƒ4pˆ¡àÝÌu´“·4qµŒ·gÐnžÁé8&dÓ3)~L]hÆ~ððnõR¡® ½‘ Æ ‚4ÏËRO§g©>KõYªßÿ¥z«xþ˜¬xgÖ”™Xeæ^™ùYf—;Ì/œ •`÷QY0ÏpÁÌm-ñeQ GoÙ:‘Ý5Æd!0‚§…f½ÁÉ‘ÞHÈz–‘yM0O½Œý·j/zV5!ÜjU䙤Þp§Ñ1àÁ•êyçwÁgáInp± . Y‚“%¹½œ <*hÇaúèx†ÕJ‘M˜Ã70;ªfÉì˜ý³arCÌžŠ³3ãV>ú9‹ý룻îþ@u÷TNÖ}rrv¡®2¼ $ð+P…xá?Ø™Tlæ[p“Íüe3ÇÙ̃v ÿ Ÿs¾p¸%àM¥r+Aeäòã"û9¸Ó&tXm•úK6ðÙ7·Ršá¿x¾šÑÌ×øsŠHêÆ»ÃØž&Ÿ®®é$ XÙQÔä»aðhň¢¿]ÖÊLªA lì Cã7"ƒ'@s€ÕU›zà¤ÀKÏ7UƒvMq#„õû/Ä%}ã×¾ìx7RYå€ã4’†&ë†Kµª\+[/%»®£Æ£ä’ÿ˜•üŒ ¸`üQ˜bñ ԄŸ™rŸFXR#Åz/ÏZ·hín@È«Ú(PJÖ ²«åµ€€ið%z…Y¨¬wŒkAë#½µäÌDÈ”.&Àmí5ž60å’¦9±j2X¦j±ú0J©˜CU1¥ €8] û’‡¤Ú´¿$ÇP׳BŸú¬Ðïí ½ãèÊ51ÛQ³^ÅÀ©ÆÊ30â²×Â<Í;eÞ x/iêÐßôFR*³¿ ÿm!™qän ÏÑzr½çJ²$ &3P×µ}DƒoR$ÁÈ{S+ÛˆÁfô;ššh÷‚ò‡†ÆO¶8o mZOúIé~ÚÁ-¡™}èÌP4³-˜Žf6¤3_Ò‚Qé’…É“ÞÇAÛ9P¢ÓEó_ã4§¡†Þ «|¯g¤„}ïQ¼?»â‹R-J+…0}¶jž’•zF h=nß"é~}±2@ðæV-†¬ îñÍhþíQ4â"’­4ì:•cNÿ˜SDÎY$wRO*È+;sû–e¡eÉ0‹ÒX”1øÞ h[jM4\2ÂC•éŽ")f´:¹–ñŒ1úàPcH«ÂM«¯)õJ¡ ‹ðU¢¸jcZ¾Ý*³ÞÜ­l±Ë~XtZTÕ ),YŸG–ÆçÔÆì¢®C÷ç(^ÔdÔ`Éíê-Ö†]~'!¬ø†AgkÙY„m%Ñ(bNÕìgÖ¤iúŸµ žIÃö8àCŸþ5£Iß 6ào¤v2¸ZƒF›3pc ËÚp´uÛÍk ´ŽÝq¤4iE€J¢­îx‰uúLÑlY$g«»œ¸K#-#QIã]A³nËfTV³Þ[žþ¬ðg…ÿhWø-¤§#RÊÇ_e‚`¹…Û¢€’ Á?>·ïþ©¢&Óåv•ÒpJþ´É±…¬$ ÒÍÉúª°šúçêh#­hqÆ8# 1î¶•Þ”5äúêãkKXÀÔåÊÄÍáœA¢+©ÇÖ¹05³¸:ºÇ^š,_X°Š³2_-0Û!(š=“Q(?€V5GF'U'L« ÛnÞƒ–ú1•3 )–™æ‘vCUÄÙ ÞÛd8¢¤ÖÅ¢é¿D%wÉZItWÕ–‰é Á'àíôü£°Ä~¬¹e'þÙ‰¢vf±]0ÝÎl¸'öÑ•Ä^5òŽDÇ5¯V$ƒ¶'N.2Q’é§Ó—G™&ƒ•†¨J‚Ñ*iÑy¸’8UHdÆš¤iÞäŽ9¶×Fï’¬`¡w‚yo6›b3ƒ(ÔbxZQŽhr.3WÔ !jRÖÔCŠ©‚\g;2ÃÉ•dÙÑÂÒNV¯²Œ,[UV]heW.’@no[?§J II#š%J·H¸x ¶˜‡l’( ¸òH –q…´VgÀ¾·ÍÛë–3Ý3>tÝöÀB*/£ I0ŸXËVé>Q&}ȳ@žò~Ü*`=^·?ˆC¢—¿`±cÜ¿[d•õ@"›$Ù\rÃçÕº(°¾<-±\3Õ#+Ç™„/…*NaÄ($äš9®½Ý‚×Q}Б’I‹£[Æ×d²lºk#Ж¥ØVeYÔMãy… pÜ B‰fÕæN| Áï«Í‡‘Ý(~Ÿ$Ò2™Þ5߈$ä7Kz¦Ò®$ÅQßÕ¯$ó‚ 8h1›Ø`Áf1…}©×H¢1†2CzCy¤ úBf©­úý¦›fvîœ@_-}´ô{¯¥wàqNÞÇ­cSjS¤bqJp¹!&d7@²‰úqS«Zƒ&’QŠ€-µKÂ8h»‚M©„Ǫ÷š?²¥ÕŸþ)+ï܈O·Ô1ÛÓ\V ¡-n• L‹"„¹PáFyÃH»¨£$óíH¡L–v¯%ÙÈ5J84ŒÇoªZ†ã´Õl hŒ²spÆ»º!ÿnF§ÖlhŠg£Ç†ÏË€ýÃ_˜IßGØz%ÑÊpµx­DÃP]üš­hÃ>kð‘{Y_Ú`js>q ÷ûU2½xhf–ÂÁ ‰–)®#W-8óí4-ÔÑ¡ê€þ`Ý[²îd~}ÖʳVžµrk­Ü±òsÐ4º„»&ïÉVäpdóæ9$1¶ŠîGcJÅËÍæ…ÓŒ=Eâmeä„2¦«,izNÉL")—ùDÝqšRÂðJiË^p†wï~gà(xž‡gPâk ã…èÂÈmÊ¢£ÕÌìLEÙ׫η Êe„ý²g±x°(HÙQ6¼­€#Üwq˜‰ IÔ´©Ns˺uJº«GJ¤þ*óž#Ìmøßµ’h)òõqh`”/ƒÍÜ$û“bNÓ††ÅÍ/5€¥Ä¦Ü"øL(˜ÝÄdLcß—\ŸtIÔþ?úÿSÕÿ%Ÿ¨ 9<ÀyBÖ«Ç)´Øí9pà78†…Q‰«aPò° ïÀàq1,ynÐJ ž@ÇëÕwáÏúg ñ€‰T=ÎÞ†¢½À%½óÀ¾ö¬!ŸÎ’–Øc˜|ÒÛ=Á,^ȼè—Jê@ÌÇâ ‰‹‘7ØÄ±é-Œ[N$$miéBB†Ê~®N£"êµè €VÞ’µk|Æœ¸×T§+‚Ô™Du&ZÉXgÂÖ‰Ôõ¬>¥.ï|eþàåòÊTÞdïâj4•<*²yå~”ûǨÜ7œNçœÅ%ŒÞ µ7ÃñÍ}'L¿âßð 8C Nn+I²~†…RìgOå…$©·Vòö+Ü© ñu pÐz³]B*æKÓDK5ØŸ†ß ìk…_ºžgõÌÇ9_rÊ©œó.çÔÌ9{sÎð\dN™¢‹lÒ)ãtÎJ3WçìÖ9vÎ’iO‰¶s&î9[÷7@LÌÊP’/E·ôZ”‡*2ŒkgMD›—›~¤YÉ-å ÷CâG8¾dÙXØë!Ë&iÉÂ(Û¬0Œ¯\æÁe°K1–›ªéý¯°Ÿû.™äôYzê=ëþY÷Ϻÿ‰­û;ÎÀ X“"ä}áM3“r¤hoå"?LXºüNH\ÚÊ|’îkC-Ü$›År RxF5œàˆ3€âdqÂaœ '4Ç;½ónŸŒ¥9$§è½b·swHžë«Ç³$BmðÈYdË hžê€Q^^›cÜ!€"&lEMCåË5¾±—`“×v¼¥ø ^Ã%:`‘ã"J–‹£@x˜ †á„GQ‰aâøtÀG‚X”)ТJF05¢XïBå5r°æ<~"ü`I7#Nºã0cË0µHj‡ëþ@Õ"Na :g-Ö#ïÑìG³„šM]SL2h z€uf½Õ×c'ïTÍƒÕ d@8Òª90’&Fä®I!\w¤¿r*òlÅÜÀîž¿¨à3rø¼q;êk/ƒ§Ê¬ h—ÿ‰é°Ïè^_H²JdÜÂíív$·4ÒçðŽ„GÒ—7ÿV.Kiu Ht_Ý.ìL©}dëì)é= Ó—® š.úË´Ög®s}.•Ï=êriDð—aÖ“gæãT’Ýð%!ËLï/nd’Á-zïp#RPû1¡k%A¦p ÄŠm¥Çj¡3xý-!YÔŠm"cŠ~Oð4éNÀíKïy„zü¦g~Ä‹‚V˜ƒf5ºçªÃ•d®Uœë5S]ä¢vrª¯œj0ÿ ÊÍ”'^yÕ„ZïÀÍ H3pÒ ®40Í M §kð'¤¤+‚jR1 UzCmBбìÓÆKk´Gjb³}Ü•NêÎðí³ž%ð^w@{qßP›]}iØF.£|eê†CІLc…Uº]DBoÆv˜ÇXéyÕßTê0Ê-f ¦L½[=aŠDèÜÜyôøf =`3K,ÍlƳ@ÿU:K€Û–Xò©¦QÆ4”¤ÄQ`º4úVšáÄu´F)¦ –1ïøQq8Ô@œF™ôl¼c%Zìj%)DFCžÃ SÛOÉüž™û!Μ¹Ú-¶åÖ§”å¾yŸ åèÈtûñÍŠ)~"“¿“úsΚ2Šn¥!!§ïÙ»‚*V°Z£ÓJ¬Œz¨°ß(ÓpT¢Øå ‡Í¥á¸\Hšêø‹u›ÎoWm²F¨•Ú@SG½ßº[™W‹Œ[_ÆyeP,ù7KÊZ liG æˆ2ö >&*¢Øà•2†âìEí8K7(g"á×ð‰xAX<“ÏÄÇ rä‰@y&Y>1}TöQÙ–ÊÞb¥Žª>©Uxÿ`Î9²`­CÄ=c›MšœÃÜõ¨³ ÜHÆH '\y°ÍÆBçl\¤I«TSma0ÝFïTI8õÊ€O•ß»wÃsQ-ß½i"'"fÆ`º€ó#));óÔ„k#jì™þHYo% ò…$Z˜.*¹8ü£eД °V=¦ bCq:8sLï$Y›ð3mžÕqIƒhlå¿@3<¢ÜÖ÷]ÌRRéÉÚ?u9„ˈâ`RùñU@ Ÿ^`EH”|IÀÍæ0$I µPµ&n’2ù¤L´à{ìO¦`g Kï¼âiVïº(‘BŽ pË´¹9µnN¿›Sôn%ö)JBt@Ù§ú½wû‘Ü/ð›t8$4ÛQO–>bâ!±“0›ÃU7ŠYýÞÊšûÙrw[ã$1´„ Vq´ËðUX ¬WO‚“—+ä€]`F XHœbé(åߎvƒµå*qðzþp~ÃÒÉÄøm°”$­Mv%ôšM2î?.ÒÉ!€jž eñv(1SëÌnDÒ0 šÄË™K [«P±àYH`¹!%µ¸!ñFS#Çj£U¨„þFâ¸=¡²¡™$h\¯'³§<ѯÏÒy–γtþ{–ÎT#ËÈ𵊵æ#LhJFZ#’¸wŸÿ™Ü‘„m%Éð„-$:Ý•„Ír s²óZ¬$‚û§48R×[š´ãÍY‹t;T¦f©ú@(€Ö¤kþjÙZÌJ@z¢JF "Ð@Õ¹\¹¤W’ÊhÁV'ün€¢€cؾJÝõÇH}™%0\4·0}±ñì ½·%(¢`4@ð€QK±°Ôé/‹e\t–Ä"R`~îIÃ×û¨pÚ$øöÝœHjØ XH¢Îw²ò4ä*jÄ!g› Ö+†ì+úê#) RˆI ‰‚o87)¬ÆM=Û|±¯tu°FœÝîKÉ䬟üù³ËŽ Lƒë`ÃÄÏrIé‚SÔµQ£º5j|Š=Ð)ñ›ÆÌGˆ¨¿ð¼¬õ}–ú³ÔŸ¥þã_Ꚍ›š~b¨uø#AÃŽU2ÖB„Ñ ÷$0“˜Ç˜hñl</I6VÄšeÄiH£­-Åw’¢¶gðÞR” }ö#é úfG,Q@(.+z µ)û"3„@ì„6Èß½d RådÙôNbÈyÍøLB¤j+–ž‘Óˬ„äãG®Ò`ÄÖñI ›åsF_¤ Kj,Dðˆ–j´8"z„áôFÒ¥bÿ!e‚ÛŽ3p ?\¹ SnKû fJ*œMõQ4Ù<’AÑêôróÁÉV½ ×8ÂvIAïFš¢œ:K¯·Eƒ"ôƒŽÊ2,_šýª}L㲆(bi‡_˃ªá*; ‘ 3TÍç/ÐîQúGéZJ½þÌ6þA'´ò½!Ô¢å$ Ô9ýšU3F_¨¦QYkÛ^Ãǯj5FëH^ìМþ†AÝ)hDÉКÌ뺄¤'n`©Ž¾93ž†÷ôƒ¤ãvÔÙ`e¢3b–@Å13>h ÅKˆ?-o·Gμ!)1× P6Z³DTº+@©9kô™¾GÕX€3m2öøh±Ä^ —U¯ðéþ=ÜÒ,™a›&d§ûi‚‡š!¤nO‰ëÏÜö_ |4ð_UïÄ_\P€¦ìk5¿ŒN±"øH²ûDc×3âC–oßµþ'£€§xº=$© 1!¥-àÌLO/X†:mÞàêêŸY+F3êìyCE q8¼'I&1Ê®b.žÐÙð£2p,߬á´N‰ŸSý"Ñ~NÆŸö§œþ«"aÁ2$HµÂáÃ,\ä™ùŸâÌßâ?êŠÍ¤}kAùVºqVôn»>Î nseÀ Fá6IQí~•´±Õy’V ÈÇvëY’4fQÈDÎ…¤( åV*#íXFå Øq?Á£ÑŽ“YÂ,T‘tššz°"geô9¾“0©iÓÞ•$ê¶ø½³Ó–éù@x'àyŒ$€l‡ºžI˜åfù´Õ”Æ[ °Ór¤°I4V×гD¬ǨcÌ}ýZ§ÅQ@Ü¥Q¹VAžXÈeSÙ5?Ùò*)#ßàüª6q;ЧKÞ2C¬‰©dG›ùgT5†µ•å§V‚戡ä{g>†Šýõ鸼$Ûˆãz£#ÕݼyXÊ»‚C8év•ÿûØi„«¸èâíðòeUm˜ýšBÒªDú » ÊÆÊÒ}Q4f‰6ȵÆÒˆÆ ~î ”žý,ègAÿH´z7Pd¡¤ïb-D„­bc£ÄÓ+"ŽÐ5¸zò”Dgþ·Üƒ¼î5ltÉ–W¬Å«êjêkõÖ‚ÕDÀ²Q7ý¬»ÌçxôùÑç‹>ßñÖ€ž3)IV¶æ~¦ŠŒOœ ÆM§EäãXHŠÚü ‰t/#ýV«>Ë ÍªˆP 8‰Æ¯×”c5[…vxy¨oUp\«¤lü 7*$溊¹öb®Ï¸SÕQ ÆÖ# tÅh|—æÔ$œ¹ÆN‚M RªZ£ÉH€œç™Z9« Œ &®k¢ð®M¶MG‰–+'”çÒq™_Š’6Þa‘¼Û °L1Ê“+fB«–¸8ËI~©‰i=yôäJOÙudäDeAÕ •wbðSoœ>ÊèVö¼?ú+$jÄ,‰¡ËeYï5S" ò‘QÞI óÊ@“D­K¼¢©åízwˆröÐ8G?I‡F5™w$â†ÄüYßɇ4ó'ÍK3 Ó‰¦iæqš¹ž®ù¡fÚÒ3µéLº¢H]ШNT«g:Ö¯B< ±Wˆ;¨.°ìÔ°Êy#W,5:%A7BIæÝÔ(ë‘‹¬í¹¹kaz,Ѧ ·Ún¶t«è¸s·™WLèB•*o%t$l‰¨"A[F:—ÝÛÕ?¢ªÚù¢·Wó'.¨Ïúþ½’Ì·öùf?ßþgÁ¿‚gÜü`ø²oG):5£-›ÓXÒêÇic´€`L½/㜅PH€ŠtJÐ Ò6S“ qË€W‰ž'¤DÅ;‚sTÇâ¤6j·<ªô¨ÒC•nÝ¥¯šš ¡~˨ítµLNã’&ÛsæÕºîò »[Ò`o³Q‰Yª®·’qF­$Aó¼R«#„ËY/yÔäÁ ¥ó ñÊQ˜¨ݱ köNõøTr¾¨J?®ß±ÑgË~²þçÂâ1ß4·‘w–9*@oØt*/ëÝarÀ£L8‘žuýU7WByè—æÁvßVǪ~µ^R!޽=´:GãM·úûÀˆ³òòö(棘ß;ÅämÑìL‹Fl5¸YcDe×xµH‡ÌgR7\+lF”Ø*”Y>€Ðò¸¨‰œk£Hx–x­ÊÀ¥;vÕx=–g‡ªoÔKðòÛ›–e@F1Ç«¨2gD/RóI/buê“ ±D\€V¸;[A9 sÒœÑ9 6š¹bÝ™¤[ÚÚH/ÃÿªÀëä)N±å¨9­rʸÇ[ÎT§3 nIx7RÝæ¹)‡îNâ]ר›%œ„7ÊGi¥ùƒ”æN,sA—ê wÓ“J!uîÍz¦g¾¸æ;XHJfDd0É¥ ß¶~¡ WÇ¢Tèâ uat&»<ꬾ9;¹·ø°–d\,2Qà¨3÷PàÎÐqºÜ @7aÔ­pìn ßÍl³!íÌY;óÚÎÜ·÷8s%øI)Á-âØ#K×Ç;&¯ª€¶›pãÿjÉ(0Ç# :Ø$ƒh€~‡ž`æ4˜X&^„oÂL¬0‘/\g®ÏÉîwN€éؘO–Åés: GØù”[œ„óiy}¢¸º#ó~8âÁÒý%º1Pm’^.ÚÙ®Àgèo±ì†Bx y£1½Eü6ÑÅUÄ`¤yÍ€µThù–‰¤Ye6*Óª*€ >w°VHÍ…D*Óq‘`2Ãö¥£TA$Œe·J5bFCâ´.–ïþöÜÖ—< ìY`Ïû-°[ÎÌcÜ w,™" åt¿ùŒ ,†t]kIÒ¼™”†H”E0"†Þ`àŠAqïb~’…Ä™‚`]³${×ð<ÀÕ\Ù|2‰04 KäM±ñ²Bµ°ûBÒup¥åÐW¬àøÂ<‰¹žeßå…„n.ýt™úPŒ“!zx%qŒÎmÜQ!Þçd 6ÆÊ_ 䓨8Êpa×n ÔÙž£¬ æê¢Ök\ÃôÎÄÚÖˆl{s†±ät Ä®$U 0¢3 ­üZ¸T @\­#a^¾½ —ÎáÕ9»ÓN‘Ü9Ø{}”ýQöŸŠ²«Óõt!ü¸y±”V òÑ`É II³‹xÇuБ€G1 ³ ˜èÙÕ0Ù{PFŸI~<ì4SÌ4Š…:°áMn@ÈI2”™Y’2±?‘ìÄlPøËö!§p´üPg’6ðk¢úijOõþ€6/É ƒs„É9c§,$É#¡ˆž4…RäV†ºœµL$„ Y?ÉÃ(ÑÝðî±D)HvKn‡¡¤°Éõd°)÷R7ÐkVsôÁ,—f}—CR[ÏèÔBÕž_ý{ôï_Qÿï“MuÈÃðñ‚RÁŽY·"R\!°ÍòAybÜ–º•=Ðã(ò6çÈ7gùdT´ÅŒØ_x+Ñ Å$6‚Ÿ¢Õù®&KRˆ¨õèà¨O\HšÒh§Þ:õ?3©†s©k‰ž[žøÌ¯_T…•p½“‡˜5ϰþчõ×Gq/–r3ó5£ªÖƒø€i20†2÷ K·ñd½óaT §®›ÔkkŠIvˆbðÑœEóT¾•lvŠ‚@&.JFÃàÖÆD!æ­¯¤¨þh¬ä¥„Ì^'KÄnšÄÙ»I˜êÃÈ€1Œ4$DªN1i¬÷#·'öÙà„õS[Ÿ.;‚IË~p5¯$pÂû}Iö5Íj’­ÏÞÎO÷}dxÙR~|ÃH>¢O}#¨º-¿€•”ÎðÐ*fQËâ˜_ð1àÍ¥XÝâQ#˜ ÷(É£$ß©$gÌ''†FÍ[ëILÒ ÕHŽ—šé™›õ.sÈ6kÍ.â`šß³‘‹™Q™aÀo¾ß¾åÀ¶Šü±¥ª?vÃ!‹‰äãå$2 TsaP*"¡±u’¼ðÀ¹Å3±ÇÌ 3 š™©f"³™èn&Fœ%kΉYçL˜²’ žA5oDéZèÌCpšNžâÏÿ¨§ø´Û9‰÷cY>W°ÏUî·jã›ÞÈ6|ÐXà7Á•¡ÙA$Nûƒ½Š&XîÌzowè‘B¼ÝŠV’Ó–·LÛ伕N»í¼!ߨÄ=«Šñ¼Ñ$Ñü79æ@Þöu§ / ”rè^h†|p#zN›žS«çôë9E{JãžS½§tð¯v=Úõ'Ó.».ÅÞhº±«°ËáÐpm0Ôj¼Œ³Nè>k§o8Tƒ/ÔªGuÒòDÙø½Q‡zAß™ˇ? ÊÙ«'½“DÅNzUM¥Hç.g‹òUÑ}µ#C7çbÑZ ¸O>ãIt pOÖl¡ËªúÍ*ú'€î€ =¨/7èReQ/íŠP|ªŸùzd–$=ê_0)Aƒ³|7a¶KPÞã Ze!ðJ­ ’>~ãè+ÀÚÖ‚@êÔ¿U 2±ló‹>=麌ºÁBÞgÀõÖæbAAÕTQŠõ ¥lÛàeg¸~V:'3À«™ÄuÒ5£›}ôïÑ¿%ý»üÇÅ¿ª«"Z5G.üY•‡k.!5ÆÎ¤JÀìõÙ.õ9ë­†0mQ'üµ«áÈ@懋ôH h2D +FÍ”œ³JjÈ.ìo$•\^ȳa‘Il¡ß—” ÇQo1b-°ô#ÃíŒ[BoQ»¶ŒÿµSHÝÍZ0b§PУU‹/ø#&¤Yu`À­(!ÙƒhƒÅ)`B&’‡/®'Áœ—95ÞiòÞb¬T"Ób?9N”•<>“÷Ü< ÎÞ²¡ü')Kž°é´?ãžÀw€k3î²Ü@|ÓAHÈHã{R# & ˜G½60!T>%•8Ûv€¨®÷Ýq»‰ésV¬ïåiõ¡++ ÊSG3$½P k^gÝ LÕ–ªV zP=ÈFÚ· Oc ’†¼6-[ÿ»&V­Z·—dC^|¼K‡¾­V= m‚%:¨ŠøÙ÷ŦJÏögú~¸Ó§ë7´j¥‘Y)ÝPN.㉠¹èÁ›eׂœ¸ñÄ.,;+M£ƒ«•–Aʤ;Ër×òBõ,÷de†Ý¾Yøª<Ãë¬Ùòu?縼*ŒMͦ_ø(ôe6ƒL/¿Z‰hD_–/¦ÁøLÀÀM?gߨÌÖ6‰'nL-[Ë“Ä+œŽí0&œñÖ°«_ 7CáÅ«‡Ý}íæJåVâ~šÁV´~± °6¾½Ú [Š|ÆØóHN§ïÅ6®¼/{¦…À.9[›;SÁ½¨‡É†ù4Ü (7ƒÎÁ½V=ãSßPÄ/¡þDv¥*(î«V7 š£ó[ÇÜ¥¦IF{T±N—(²UÉ+H²<õA¾ÈòXà;²o³lCú£6Ò%’ÜíWcê¶u6øÆü^¿ÁÛ®sZ¬ÙyVì³bŸûCY±š€søXA ,àfH‚¶`†68Wž/%,–R€’¤P’Îj”A6E÷ãF䘒*’:²4}eÝ_2nÑ{LÔ3õÌq}‡»9ÖVC‘ŸÅ`6elí«ªÖoìßÝâávN8OK›uX Óò (\ewLõŽ,Ú2\Õ8aB|}TâQ‰£JÜI| ší¼©=“6e„Äæßò:•¸BÓ8· ±Y¢þÀ¸K3Œ!T¦+–AÖߤæ8zÔmO3e*u‹~l&-›‰Í&ò³;”i#]N$ù+O¾dîXèÙr˜)FW’ ‘íÝ—ßʺ›rõæ|¾EÎßœ8çž“ãV’@¾g]@œ¿¡$ÌnxTæQ™?@enøË5¡Yõ13›Ý%mDZÈÓ5b±1².$ÍÊH|´Pl°šÞ¶1.$ >×<>XóO˜Þ!³ÂY:x[šr°Â) æo-»·<¾a0KndiϹÝsþ÷œ#>§‘O™æS2ú9]ýNŽûÌj{¢½yqgîÜ¿î'/j•”Hb Sáź@ÒÖ‚`„·Þ?ª«ª¶â,D5P$BÍ{ed¹Å£v~?µÓÒAŒyò:#Ø v9ðQ² R=G°8 c{– n_ú¬‰Ì†¨MÆð½„X(Œé$¦€"&Ù‚ôwbƒ§›%•••p¸X)ccUZ:šemõ‘7 AçòÑs‰é×GwÝùïÔ;8Ô)k˜\«…¼FҬѸI¾EýCÅ@Š jXo+ ªÑoŒfÃ/ªö®ÉÒ8óÔ&öƒÕ~QðÀ¹ÄJ€ÒXÈ8bí̦.ËÝ}Lpb ºX1R‹È+‘’º•Dhú ²¯Öp!qês”vºùp€¡á2F5‡~šõZm•@ÈK>ðªè‹·› ðPðH޶:’ÅV‹­…]¨àèf”¢æ=g–šÄêGàzâèµB·¡GSM¹¡)§ÌûV"v‹ŠW1#¡´3.EL3LqŽXÒ±¢?*ƈ·da0gÝ ™ªlßðân#APì•@GæJR•ñäu¼`"½ ((¸ C °ƒÌ!€Öž¥ä‘I›%µZþx pýÅ6Ÿ,o6h–lò†§€*ç" Oö,ú}9Å-³w!yÍ#û ¥á™ÍOqšO]üÏÿÈçø–ùˆ«®:f—Àz!‘cBÆ–˜Œž[ƒ31áD^8.HïP'‰DqnÈ1ÂÄ¿µlp*ÃMNea™pZf(— îe†„YÀÆÌÐ2úÌÈšÁ÷ ñ;aO0Ág$᯦<šrKS4ŸUË~ã1òñ²"ù½Õ.)À rqx•[ª†\TLªáW"fDZhQÙ‘²kÂ_Id"àÐFdt ^F‹–º9KÎfÒJ2W³¶0Òî˜v‰Ð¡sËCGÈ|&&F|¡ÂÛ¯Tu_³|1¥f|f–/¾4¬ƒ½ò.O;—ç`R;uÿ#…‘Éï$I>wD¸]ŽðvÊѽ'ã.XôØ?Ǭï^6´Q*†<“ ôõ¨;vOyôéѧ?’>ÝB9&A|,S'¦ìŠ9cJÒ¸“Úá+˜š$ÅÌ%°êÞ±‡Ì‹nïjo%Jó£¡Èbí蹪ùÄ{0ò" {f¾½i mW?î[d;uPDâ/„õËIóŠ9Ö!~§§“ ŸY2¼üø/–n%­µrCöÀ€oØ0"¿38«R˜9ø"´’è%`«ç°ê#`ž@6´;Ímô¢\(èèZ߇œh¾>úôèÓQŸî„‘œ\!Sf.@Ñà€«Œ¥œñüO=¸0Þp¬oÙ”:oÁ Â4ÒéáDﳂtá°„[­Ý×#’ ¹Ú‡FxÎÒ¬F®&Ô3úÍ ’£AŽ;I Tx3 "‹Z«Þ¢ öŒ2–bz™¨z'ÝUfhèè Gʉ¡¡‡ö«sL~±Ÿ(Ú3¼¨Š—L dœ«éAŒ…ÄðŸ1;6‘¢¿qŸ”¢¸Í`‹Rc“´øÓ†<ò^Cn„Î÷±œîY%fµ™Të»UQ-=Ròà¬.–á…º ¶ wc…òqƒGÖø ʇxÝ/×Ì&à´7TGõÈ À7îüŰËñŸ´Ý± ˜ð>c–D‚+zПôFR´¶I¾¡Œvn‹Óa:¸ó¡<Üóá~^–_Ÿÿ‰Íør.LÛi´â6V)Ãm„ÂG|hÍ3KûŠ^¦FªÀÕ9SµÀ2b%‹™1òq)QZÑ\c²DÎÁþ…Òw^³CXel²t'£¦} ¹(½29¦IV蚌À…³²É« Ë$0h#éAÏÈ !üôáÝV |ýˆRÐm\Œ'Ĭ]…Ç ÿIàÐ’Œ„l$‚놮¾BþI™™²ûBXžâ,àèZ2Üb«©mÏUSð!øQ±Œµ†t 9ðoNíêŒÏ †p£ùòÉÿš3ˆjLª^†ÞcO(\ñZÙ?ГQFûèÂEV©uÅNÝ7’dßíMN„’6ý9j8ë­´þ§¥õ7üf3K®²¤"úŠ*jæ›YEc¯µqâz Ô>2¶»±<,È܃MkÀ3X¶í¼ ¸ ÂÒLßDņ ²òNBS¼%7ÌãL2+Tå•n׺̌²üh©º„Üj~€5"½£j½çŠO-\Yºk4‰¿rVº¿’°(1£.Ÿ?òÆ\³Ý´” ¢Ùí*Žmc™™%Ò_|A-Û% 0®ê7»äÆgÜJb6U-i³r3dÈ,7¹Ê ™ȸV¹™)ãÌ 2†¢·–I$£XÝî(“ä ò‚;y¢Wž˜g–æ3“óŠÌW/hº}ÖÊ DDz–¦dZ!ú¦›÷˜M™xàÆàè—öahaœj©6¹HšåëՔΠÞB›Üê`Mö†* ððÄ‚ (æ¡{Ý ʽÞîä™b§?ÖŠl>œŸ7ÀÏgÈôV}½¾‚g?A¸O(ï—ÀðP,Õ’}ÂP´îÔ\#U^B®Î@âX¼E¯âÈD=¼‘äD´Žè†q¹»¼üQߎý]‚†ØH­c!aÜ»¬×‹ˆÅKrTšÃj<ª±P˜n¡eåË̘E¹,]~íŠJ€… .U½ aDþí–Ñ«A 8®IݱøO¹!˜³ŠÀ9“m/qØ æ´ÐTX¹¯ó uÎð-(iP}#ñNJ˜êž÷½ÁT³ž«ÚC-‰QÅ4ê2±z¼•v¥ €ÛA¾3œv¸(fË­ÖdÝŒ‹"HgŒ<Ýyô,$g†"×s“+ Á{𵡧/IqS1¾ŽîXª7 Z-§ eù3É?òI¾¢ò]ù'2 2õ”Üçw¥ ©Ñäô>B§¡â¸QÂ]%nÁH+1¢Ð¹Oع÷í³ÀG¦Êš  ‰7d+Pò9îrv1 ÚÄþÅFFo4+ Fg;HÂÑè2Ñ=a¶µxÚL²—#eU13q˜µ7’@€Ô «s%ñ0¦yè?r3QhÍ.~GÀzŠGÔX½ê8›ºÌŸ þ1Oð ÷øŠLtf¨œH,ï0_"µÍÚPˆœ'¸7˜ä »Hg(µP-.òáJå-P‘Nƒxx$Žð2À€üÉEF„Me!©æVÌÁ`r'óÉvè*ÀÒ :»É¢` ë4ɰ– ]74šÍQ9­µ˜uHn/Ô,ËvýLîoªS]0%Xì…‰õ[AÏFcÚÓ ‘Pîˆê“ϪgcqkI„@ ˆTכȭŠiÇyü{î¼÷y‡†½4óWÔÒK@ÞívnŒôðw{¦mÆù1¨È.‚vµ £k!1ÿëì=VÞg!= éYHÐB:®È‰¥d$Õû¤9Ð *=£ú0µxË2äš’(n°;ka æÌØ$9ltˆ^ïô>M(¨ËŸ^Œö+I¡¯v…£NkWeRyY1È ï›u&å¹<¹áYAÖŸOiPÌK"ñr)pöêê771q6tÙnŽÙ¦dºe8 g 2 ÑŽ\‹,ÿŽÎÒ-‘Z$:Zl¨ÛŠú2É ljôqæ…P!”¶UÃ,$M·ØÜô­hB«O]¢—,‚5¼iyj9 ¡úÔûŽsn˜üäõà&ÒBQnÕiJ»¦Ú¯©<ìNMY(¬ãê[d êµxW=çƒf‡ÂMlÕs Id²0pÛ •g–dîö ›©º’$ˆÄ4ÕP~„_,.1$ÅÒ×F¤bW—7ÀŠhå9å Pm- NûW5‚¼A%ξÈ]ú¥ÎòK·H õöb\,áÅ2Ÿ·‚i»˜·”{[Ñ£a†ý±4ìFµÏ™ êã…ƒ…Ä{–7Šb1÷« ’a +eS4V$à+ƒTµDŒ­àq+oXIr€1š{u“€.ÄIâ-µE$]‡½ÃîgíõÏ@Hâ’ÜvbLSãGêvª„Ë>á¡2š§DÆ?$ü€˜|,2v‘Vo’\Y~ÐÚ pÊQa„Œ@ µyÇnu‹Ykæã:sv}}¦î‡:uwv*v’FûßÁ†j!-"\†úB¼äm'r¡t{£/\®mJÍ»q]ªO¾ì /ø“‘Q¾¡i­$@qQxRýW4\â0X6Íçž½9Áo¡É)|¹qNQÐUœôm[IF»ƒ¶-,ãÝ#²¥»ÊH¯®ÇI3ÒŒgðóxÇ»×!–t$?H†JÄ–hÁßp¬ËÌШˆ…¥T߈҇¸ƒýQ&j<2 b@åï§TÐJÀÌÓ H“^ÔV‰pì,‘™ƒ2ÔâìjµIªß8¹“Î ð$h)ɾ'ç=>¡²™§1²š­6«¶ŽðÞ)Å@bXI ýK苽øNwU6sq=ŸYøWŸ…7ësžÇÇ Ϙê¨í4̲ý=äHkãŒ9zšS2üÀæy÷. î‹;¬Ì .ç‰ïyâ„^ñF_³M§®¸ee [ý‘7 ½›`sßÕUÝ©uš+¤æ*ª¹ÒêN}–ÜFø¡eT±ÞɯYdåL™;ËìžCÐ×G[m¹­-wLë#°'ƒAéð¥j*X¶!¼Å83 Îìƒ3CáÄb83.ØgÆÄ‰Tqæ]œ¹ïŒÜ!+Íhº(F½ hPÐL6TC„³rMpL¢…¸׺¹cÞ±k[ñ +ú©ùݘ­ížuB›=šðhÂM޻ʠG è…ü‚žO#E Û·FÀóPƒÔNy•bC¢qêÒF´µ0*]:k³Á²Å'òˆg:xw¿ÉôE"M½oèDìߨ·èå Ô?ÿÓJËÃ8A¬\ÓþIAK³2ÒúÛŸ9Ž='%̉ SnÃ9ûá”q+¡â\ ¾’Ì5äsù3x>¹§Ó}2nY Ð$p8©/ ú•~TúG¤ÒwxºNp«{ZoÈÌ-r‡‘dfLšY•îp1Yüh£€ÔTEÅ2Sïê¥Î…Uwª±ÔéˆÂ§Á³aæ(ÍZüâ—ÿ.L(î}ûöìX*Õ_áwFe˜WÄÀ¬È±Œú*¦†ã3²|}&ð‡=7ÊZ¢Ò€ÈJ⡘i˜a ïFHÂàUG_\º‡ÐnݬÖs•–4N4ǘ–‘rdç-à½ÅÆ\´ª¿…¤hhÆnØ-~¦™(Í¡kMùZómÃÝ`ÒÅÏ ðlƒ•…SbÄá&  ÔKr‰çñJâÂ&-¶@Ï6P4-;ù•A¨ü '3HŠ#PBÏzn(§YÀ,@žF§%CØè¼+¹olönTN%âµ° ®Hç¡DZÙÆâFrŽ[αÍ9þy‘Ná¹¥„ÌJÙב¼$]V@½—䨷ŒÐ>ºüèòA—mãŽØ¹±_;9uÃ'$Ê!a0`þE¢Ø–ª¡—¬ˆÁ¢·†¸’™6î«ä£å ψZl¡‹b5ÔL°`‡V^3Q1ÑŒÐZŸñ™ÈÁüÕ­ê칦{Q÷=Õ†/êÇoTwIÔ“š)§!dDëÖ?ú°ž>Í—¤^b¸ëªåEåš6H]<ØXtDPðí+IÐÁ×ÄàzÖ<%ÜruÕ%b3pÔì¬ï #’˜ªapoØ ¨AqŠÅßKd\#ºÇ÷KE-òÑfL¥yöVn° —£nóÖN5IµoŸ%Ùk’ñΪͱ’i0˜üýªn?cü'ã;žMäNŒ(Ðf5Eùž~7Äi‘ÊzùbÍž%^á~å#-14GÏ«‹ý­¤v‚;ÀÃzÎŒ¼ã…>]\ùó§=Ãú,‰‰¿êjëSûÌï>sÀO4ñ &ùcøJn/ܺ`¬ØË#7dlÞtpg‚„Ïì|_g‹kàòg5®•«3Œksmv-‰–O+ƒ' %:/÷æDÕÜnÿNrœž"Ú‹ ÷Ÿƒçs€ýX‡Ab{xY ¾ƒ´×x»•MHUÁ\•|Ú ?áM3m”hÓ:c£µ©áBRÒ‘ ÷<3ty?³õC™-¬®síÃÇ"Ç}%Y”ÿL%BsÑ\jt§@ɳ„I„¼‚9R•ÞG‘Â¨ÆØ2Ð>Õ¤/]QnÖL2%ò«•R Á[¶t^)Ü(ˆ¸Å¹435¨œf®§™j挺Å4uæ§š9¬¦ê–¯Ï¬ÿgýžc¸¥P1pAc¹VnS.;©×‹&çÉCOò–Á? ¼’m‡º–ä°¿†*K2ÉCp ëoB\ ¾E܃^#Ey Ù 2&L$q«ˆÔr‡ªÊX.©"õ•$e¾Kt0Yœ„¨­šöÁÏò™Ø0y\A¼h¡:ê¸HfÎ\£ÏlþHfóFÒÝyL?V1ÏÕ4—KE±ˆ›§Ü'öó·j‚? „Ǿ'’N÷±º×)ˆoÊ%(·þ½]tŠÙ¯kÈ [Jδ9ʶˆÄÍѺ9¢w$NTo~?©æ–2‚¨×Ø¥çUóõ™õŸà¬ßA.”­S›€Õæ5ó¨fÜ3R ìòÜ)´š»U@%‰YEö[pFH²„Nµ,ß§z¥°Jø/†JvémƇ»…*'w60ÂH%EL Ù±SݱÊX@«é“zOÔ5˜€ô@Aʨ?mo$²d´Ùh%-¯!Fí¶?H8è¬N{&â{0§%j“­¾Y¸Í$o3ÜDwM0W¼NlÖMî pö$˜Ñ·Ýgï èûV=Ú\Åv®tûú à¿lMCÁ‹\¢ŠˆìžØƒëï’Aq[B…j ̯á™&›€ø¼$á3_+h–Œ{XJ,RͲ€¶´6»Î¥0ò¢9#õå2-†zRœ½ÊÛ½’ÜXô‹­bÚNnmBß…Œþ*={"AŽûî^r'¡p‘†8§*NéŒÇ|Ç9!ò^"å£?9=`ÀýXXóñg†¢­Œ´Ä0"­·`O'°ÔPuº:³ÎØ­gt× ÿõ\‡ôõÂéÞ ”;“âU)™"ðƒž;Ç€*£ô09˜ïPjâ´/êû· miX©9“ÒoÚ3 y—ÇI²‰‹£ßçhnÏ GŽ90IéòÆŒx‡êïLøõŸïŸ[7cfá§Þ‘¥¢æmi¹PwW˜0èG’£CŠï>_Ђ²áÄP’ Ê[›((ø#Y…”ŒÂ''=Õ¼Ãf%ð+Ibž¹k†×Q¤uÈúÐ(´Rz½œá ð”XYÑñCyïüÉ~üt„ }*•qUû§\e­¬–ÒT_ œú›d;s¦û ¬NxFnÜ$“-X[ú;  r°4\­¤UÐ=S÷Nbü¨Hå‚I¥dÄH­bpb• ïHÈZI`^ /qbsjXUçö«Fð¯nÐ,$Ng1•Aغì†ßÎÛg>¾7óq'%:&V) «¡ž")&ßH„3ÊݬŸ„©šÞ–çm¤‘× ,ùŽØ_´hÙÆhéˆe+ï1»_«„÷ÎÌ3Àåó.ÝQl·úé H‘ñãûª[·µ1¥’þŒÆ,±ñúZFxŸ?½@—nÎ[Múˆ}¾˜Ý´h¸ì"-­š1`áí#ÐKÑe ”¬$/HH¶{ü(Þ‘:œFNú©ae1ÂñGÂÞeà)“aÍNÌ?,…o€lº0R]Ǭ)ò°Æ,FTõ‘:gÀU¿.ëÍÙRä9¾e@Hm†x¡Jê07‘Fßü®¸ü^Òü”j¿HÇ?§ìý)ü-Ÿãñðqó˜1pH²“´(ÍLÌ?Bj…¿’Ñ6Ä7ouÜDžÛ™Û)ûËÖpw‰•·êb5kÊ´[`ÃòÔûúÓùTu ³N •d««ôÄ7deþ4slÓù ‘QŠWD—ó@¡¬4²ä#î•æf§ŽGdÒ2#¿ë%Qž1høÍ}QªEïw'\{ÌÉVòäaÅ’‡Ä²öw’ãGXˆáÇøatåÍDÕÑØ"#?3DÐFh‚šáˆÎ€E3¤Ñ {4C#ÍðI÷`—~ì_­³šIu燱âRèòEâ ìA" ü#QqjNÎ;ɶë÷ú©[á¾¼E=æ!ÐûP‡-#^ÌÓ«‰ý÷=ꎎœ[ÀÍ+A‘lPèýfg£hŠƒq‹ö\œ„à\NeÚÁv®Hïa Á–¯{TùS¯; ùS÷ ÑìÕã;ûÌ)Ûîc™0>'•/ÏϹéw¬Æ9o‘Ø7%ÿ¿þ8>ãÖîÔ¹ÃÁ–Ò´íÁʼn»måBéš WölŸð¶a]7§ÃJ-¤  w¼È¶Ðíº`µUPªçù/܉¾Ïý£»½EÕ‚R4SåãE×–6¿áË4Rh9ó£ÀéE‡µ=›?àdV7ü@ðÀÀ5ºñp‰$Ø.hi=¡Åœ[2ÍÝY`)íÛ@©3ˆOD×ûþ#õqêê¢ KÞªjJŠ£V:D½N–œG T²ƒ1÷J’_}dRíZåæògx ©°[pÛñÞR »× O>䀬>MtÍʽF n½ÂÛJ³JÓ¶ÝDPÓA¤«·Áq,EÆ]ZU.Ò¤¡IþæØ^ó¾×¼ã¸; ²j"M%ã±Àmo@"!gÆÞòÚ¼•ø`k”_±vªÁ‹_Åýñ_ñõ·r3s&ÅsU L=GIR‹8{êûpãèvQK®3¦Ó —kî»í™Þ"Áú47ð|_ § È*ÀìÝÌùS¬åÁÈ}ê²9±~øŸÁîXxñ±,׸SälNü dG›Ï =H®lF‹E‘ä­â\öñõ{×# Ðeú„b§õzÖ,ÖÔÒHÙ$™ÀW²„˜ñŒ­†§Ž!k‹Äœ˜ç†-üöçzÙû· ÃìI4¸RUÚ†°30–JôxÉ„÷Q¨HóZtÂ%g>±hÖÊö êû¨ú•qøGðQpµÅQsê9u¾×=¼Á½2œ}šöñø¬ÎÔ é–bùb–P+ ¼U¿A™½\¡‚%ÀE"ú™òФjÖ†DÑ+6À¶Sgx,ŸûwÇó¼; #H‰i—#ÛiLæ Ðè?ýî×ò•ßÑÆ_þżӯ›ÕT|õ}ôC»6*´aêÇ›6¬Wm\ÃÌ"§¿%Á\¼ìÛ`?.Û8YK•+ ÊޚƼÈÒÊíj^Þ¶aý¸jãM?b‰£&Éõ^ŒÇÛ6ØË6®ë|ÑCþB?Þ¶aý¸jãm„TÜÐÓ¢„@—ãñ¦ ëÇUïBø8v£ª[ðR=ÖM°—M\H*ÀC»ž•7mX?®Ú8%è‚»²Žn4%½=)Ç&Ø‹Ë&–½(½†2¶±^qÞ“cÖ‹«&®L«Ó¿?Ç6ØË6Žè}½%­f, !›Ñu=ßÕsÖ«6Þô£âA«ª”k«\dïN˹ íÇu§~$Žhãµd)ïÎ˹ ëÇU§~ +Á,x޾?/Ç6ØË6ÞôŽÄ8ú¡¨/÷ç娆õãªc?Z±€6\ìvÒ†p±œ`'¾»SKJ ƒ6D~_4~}w$NmX'®Úx‡·™êØÀa?okÆ© öã²k²í@®ŠÛ“rjÃúqÕÆ©ªZAHNáèîNʾöà²S<Ð àfÏaÛ»¿úLȱ ëÆEÇ^`·ÑÝÏÕÍö ¸S×ûóqjƒÝ¸lãÔ„´€ë‡$Þž’SÖ«6¶¨è“a!u¹Ò ñË;ÂÛ6¬Wm¼é´}ì\ä&ºkŸÛ`?.Û8õ˜\ÚF”ƒrô£ÃÝv÷®rnÃúqÕÆ©bHb@ø(á?”oÀ¼Û`?.Û8öCv>µhs¤Ãè‡Ò’Üž—SÖ«6Žx²«¸ÍöD¹ŽwM°—MœP-d>±r˜uC³n/= oÚ°~\µq]ClZyIxÛûqÙÆ©Æ}—“Ü|Æ.Öµtÿ®§ã܆õãªc?\Ê}†]PôÉ»órjCûqÝÆ‘4Mîâj>å ›tý 0ùÕ¼¼iÃúqÕÆ©V šƒOc¼‹×óò¦ öã²K¹€<óvy|Û†õãªS?Բήo¶` ÊŽt{V-°—-°r,a¹o|cÜeAHoèè›6¬WmœúaŸ”zÛŒAä÷¸Ë;ÓÛ6ØË6Ný°…8™±d£Âb^Nʺ ëÅUÚ NçvD¥æû°IQWq=%ëØ…«=0c.ÕæÂ˜ 1ic¼œu Ö…«ö}P»Z[ózôAìÙK·è›Ø…«=@ö(Õs5²šîæDœZ°.\µÀ>ØS«n¸¨;l›í‡àP¾¼¼mÃúqÕÆ©wo´ñr¢jè†J¼i‚ݸjâÔ‹H?Q’Y cNJ?E Ösò¦ ëÆUÇ~0ƒ6ÀÄaý@µàýI95Án\5q„T(™Þ™$z=ì`TçKŸýÛ6¬Wmœúáé IàwºÑâÆÛ6ØË6®!&Pê.ïIoÛ°~\µÁ~˜‘da©.|ˆÈñºVwm°—mû‘ô D/OdìÒ¼Ô7mX?®Ú8õîn´ájzš9:®æåMÚë6Žý`x m$7¬»KgäÛ6¬WmñsöaîÝl¿ä5}ür^Þ´Á~\¶q…ã«“§ ÄrZÖMX/®š8õBƒt(ÿ­=Žnˆ®ïïÚ`?.Û8õ#Ð#[rqh’iohé›6¬Wm)Û-¸kîÕ ŸHêëkÒ›&Ø‹Ë&N½p¼‰ÇúrÏÄ<]ßßµaý¸jãD`ŸùGã~[+Ľ¸š•wm°—mœúá9Åb°Œ›Rú¥ëþ]Ö‹«&½°°%šðnXƒ‰@;wgå܆õ㪠öÃÜ3¥#A mä²ÝQ€d‘®/)ïÚ`?.Û8öƒaK´·›Šæ„^Ç›&¬Mœzá ²?u?¬ÒTúR9Þ´Án\¶q샧h#õºõ£}¹6Žß5aݸhâÔ‹Ì pLÞ•¡(‰»¡£oÚ`7.Û`?Ì•Y¶]PŒ{¿õCÙH/gåMÖ«6Žý`mÈ4ëà‰×ÑŒ·m°—mûÁ.ʉ»w¸”—OoÛ°~\µqêGâmôаã\F™Þ¶Á~\¶qê‡ãu4g¬€—o>XïûqlÃúqÕÆ± (£°Ýi³!ßSÚë6ö¼#%¶ÂÓéÐ Å’¼RÓ7MX/®š8öB£ÚH]kÛÅ:ÙÅ¢}Ó{qÙıÓ>÷¢œÃ«)yÓ„õ⪉C/×F±—Ñ‹àNAˆïœ‘SìÅe‡^øîy0z‘õ§7ÇâÔ„õ⪉c/2¯ pWH9°0wW/NM°—MzÁØú¹ù~øÎ95a½¸jâØ‹hw®C/úÙÅü]3rjÂzqÕħHn<’öl*pâ& þNÞLª^U~i?O­‘üØÒà~˜ÅÚPªd‚Á§ÎßßTk$?¶4ؾ³téȶl©ª7/î«5¢›ܘ•µáȸÍr9¡‘üØÒ¨üif37ú¡dµïõÅ}‰µFôcSƒíÒL}ÎÈvôeë÷/mÓ¬5’[Ü8Œl‡“™eõæáÅ]«µFôcS£ò#ÌFºßËÀÄv<×j%‘¼Ø’ »ªÓämd{ßLŒ“½U7ú чMêCœØ×>˜ê½Ã ;»k…äÖûÖ =öåQ!zóY¹];OiD?65¸qi‚ïŠ Çrm¿Z;¥‘üØÒ`ßäE+¾KãŸÙí%ûSÑM îÇ8Å™$Ý5k¬®Þ>¼øeN­‘üØÒ`~LÐÌÕ\¦rјў±kö”FôcSƒ}Ç6Ù†„Æ]íxíΊOi$?¶4¸ÆŽ¦ÞUmñħíì8!ÜØ”/vø_<c=v ÏŽGBâ±ù2#w‰’wÍaMwÎ]¶‚·õÝ+ÿHÿ»ò»O/^}ò7ƒðq±šÑÅÛW"rv v(†ñ‹ ›¾ð¯¾ÆýA^©¡.}Jðw¥ï‰3oBSÖBÔ7™«Õ]èE þÌèí‚1za ~Ÿ7âW:àïðŸýÅר…ìKôç"ÌÐûGm U SatûáC©›oC‹3Ð3—bÀڤªú³áò.Þº­ÚHlFùLò6E*.åÿcO.ø{fq4væÅŸ¡ù“VõU©ÇבS1¨ñàLU%µwùX:ç§è¶1è%æásÜÀG¸¹öF¡çå½­“¤GàÕ+—Xèä`f ç¥nÆÊÐÍ\Æ1AÁt?´{‹Ñc+·ÚTìÚ>„¤Ô³~ õ4Þ4Ø2X P ?MX«ÂØ„(˜üéÎbÁB%øÜÜÃM$/ ÍÌçÚEE‡bÇvŒ(VZ½ '”0ü&°ÿ.S_x*Ë¥ªy‘ ùåÍM*·É„³^xsY.%·öpŸ.r€¡¿«–·µ‚tkÎÛÐú`þ ÐlKf_•†sÅ <ô2-¼Ð4©¹ßÇÚ8Šº¢àÀ÷ºÔ r‡=~΂q˜Y§ß-âoJ%(Gèô%Øjp.ºu#NõfÄYÈðòŒu O¥ä¬s “¼0©[wí<¾0ÝS;{„òR½Ù~1>®³½ßíÐ?ƒ¡ÕÀ's–ÐúP’¬n÷²Tè×Ý¢è7‰ï»„7E÷ß%I<#-©__à~Dþ=•îµPRuˆëÏ…KjÜM7ùó«ýš}X]0 DXV‹ó·˜9zž—tUH>¦«Æµ ôŽ&3á]AïKò¶$ŸKò©\v¼9¬îÖ ú óB…Ù©—¤2²!`­U¹¦ÐëÓîE‡º‚þœ>™´o2È:óº«ûØ­Øo ú¿è¥²ØÕ–Bÿ2Òî úÅV“ó]k÷4ûrò£¦G Ó/˜nÁ3ž¯,&N>”0•Å7Šæ®x>åãõîï»û°¢³±§³–þ¦8W›'¶ô7â·ˆð=å¬âdíÓÛÃûëëoîö —áÃî~u¦¬Óðο¾~Ü=¼Ýùë˧»ë§ÝÕåü{{¿ûâúÑÃÀm0uý°«D¸æH /êhñwx”‚;›Â³úð|ë¯ã㯀Ð1w¢][s Ëc˜,!† ö¹¶åÚ–«I¾È`lÍø2Ê„S(:HQ®M¹†ä ‚¯ ñªðjª áÚ”kXž zÂ÷f¨„›¦.’µk®ayŠ,1òß„_’›.•k[®ay‚dñ@BÝGŠvmÍ5,ßUŠ {HÖn¬¹†å ²›Ã× (×¶\Ãò=!•Úpd寖kXž è#D˜RÐÊ>R´kk®ay‚ÔNódð›R´kk®ay‚äR›uød¾‡díÆškXž"©"cK;w¬\Ûr ËZo …©:fÕÆŽãŸþ4!Fð¤ml¸ÕŸD¯î?+Š'ë´nÂÀN²‹áÚ”kX¾ æ5Ä0; ïì E»±æ–/È"M •†ã+6Ú!Úµ5×°|FÂÉð1~%F îD¹±å–/BxÞƒŒ·lfÙ"T»¶æ–/Jxþ݃ÇÁcа„j×Ö\ÃòD ‘PnËŒO„h7Ö\ÃòE ¦ÿxº^‡'ç©Bµkk®aùŽ’%¾6î T»¶æ–/Jú5…/43žmÜ"E©µæ–/È‚›IB`;!B`öB´kk®aù‚`ˆÔÐqJ1«ãÔŠrcËÕ$ŸÜoHŒÕ£D!Ê•)×<‚ÇaƒÐË ^:‘®¹†å ²vÊrŠaÕ{HÖn¬¹†å bS„‰Åˆq§{HÑ®­¹†å ‚˜s ‹çöަ‡íÆškXž ë¸-¥]0ÕCŠvmÍ5,O AB4†÷ß}¤h×Ö\ÃòT)Í $ºmÉÚ5×°H2VB( ãe³±<#ŒeF> d„² ûácyFKY>–g„±0Îg%„²ðC)6–g„± ÍÜJåÌãfÐ…´"Œ¥Ë3ÂXЦ®•ʪfÙdÞÍæÊõ¼»néçÏÎÏñÏëI~ÒvMÑÛ®)ð-+:ƒ'*‡‘ás7Ü;i` Ó˼;À>Ü7l¬ø L ¥žðÅ^ù®Ò骑áÔUs}•Ymá§öíUa æÏÏ­ÄfþÖKù_Xy[h~¾\‘‘LÌ'Y¸¦QíA[Yaï%E€rð@S|µTH+ÂXÉÂ"^YQÊÚðªáéxžÊ7ýæDÓ4ˆ1|àg,X®é) œù¹õøº§ªŽ‚m<< ca-såøë«ÿ…æÈendstream endobj 262 0 obj << /Filter /FlateDecode /Length 159 >> stream xœ31Õ3R0P0U0S01¡C.=C Âɹ\… Æ&`AÃˆÍ ÀRNž\úž¾ %E¥©\úá@i.}0éà¬`È¥ï 43–KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææÛÙqyº(¨-> stream xœ]O1ƒ0 Üó ÿ €*Á€XèÂЪjûà8(NÂÐß—èÐá,ïN>Ë~¸l#ÈGpø¢Ʋ´¸5 ÁH“eQV -ƃ剳òBö7åßO°Èìü®f’Ϫ¾äU¹‡ÐiZ¼B Š'mQt­1 ÖÒÍálš.£ªkÌþSIÑTâ¼ ¸†@sÓÜ$°L¿g¼ó)ÄGuS~endstream endobj 264 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1252 >> stream xœ=“kL“gÇß·|¦X§Yã–aߺM§‰"ºÅÌ-»¨æaâ(-ØoßÚ–;m¡´§Pl)m)¥å"¹N ¨0/¸¨Ûœ‹q—e‰ËÌ>,îÞ—<_V¦Ù§ç<ŸÎïüþçÐT‚€¢iedf|ogÚr½™™æSü!ÅRîRv"$ !9a4%Q¸[Öbì~žJ¢i±ÜZ™-W(9é–’­Òéé{¶Iw¥¥¥KßUËÙò™Fš)ã”rµŒ‹TÒmI¹œ3K·¼¥ä8ݾ;ŒFcªL­Oղз·n“Ë9¥4[®—³§ä¥ÒµNš%SË¥ÏSŸ½ZµÎÀÉYi¦¶TÎjd*RV,çd ™Z-£(*É`ªZ•¼š¢ò¨cÔqÚIí¢Vć¥¨Ë´Y Ì ­ B¾E´´ßã_ŒÑXô_ÄwÅž!ÿ,xP´ºOU]f)ª“Øk ÉAkEgÓ8Ìf}iñ§€Ž8/õÝ<ûÃÐ=Æw¦ÍÝèú'£¹‘cmtø=pKưpÁäñÁ)®^k¯gd¯˜r ‘¤¿ªo Ÿw_^Œ\oê‡IŽFcÓhGÁ°4Ø¡¹Yâp€£‰5î7*ÕX}ƒÝîošñ ù¦Û{‘héõ§äSX„ïc‘ã7‰ær`‘¡[?619<7Ÿ7‘•]vÂ\'aÏåôd"ë>"k*þ‡d†¿72h*l>iªÍµ(˜r²¡&K¡.‡—šcẆÔ[Õ_¡,ÓäÍ+o^›ü" È®š®Âë¾ÁkÆ–¡ëmPgg4iêb@rsx4˜ï˜d‹>AdÁÃÃxíŸg¦æ™°l¦ì& ;ã£Ë uÍP×ÌÔk*Z€XF†üHRÄ9ŃwÆú°pä:3zë«áËðt{«‹uê³”lÃÇ•E-zXNŸäEñî~ëa6FóýqÎÙ+v:ZêÀ‰–3Ž@kô´¤-´ˆm®Ös<Ðü·ö9NÀÛñú»ª©Š&62s¾E¿fÎn'¯’-DH6)$x¡P¬¯b¡½¼¡9„ý`ëaÆ'Ä^-˜ÜGe‹0Ñ}z.0Þš6#T¢’¬Vå« *JÝõQ¤=ÚêcºnŒâõþó£˜Æ«ŸàU€&{Í¥*ýk†RFÄÿFQ~ hþ(Î[¾>ŽóÉŽ¸Å{ˆ´¸&§üíLï­_|WàK¸S7~|°Ä›ÅPâ°ÙNéö©eÈ ºþþÀ¤ß-ñöŸyäÿÛå‡Ö6ïàýYŒ¾Ã/œîììy¶v°/ŸVÞ›ï“ÝHTÕÍñâêH)ô®˜^‰WIV&˜µÉÏÅÜÉÉ®dEý ‰Zjendstream endobj 265 0 obj << /Filter /FlateDecode /Length 159 >> stream xœ]O1à Üy…@ÂÒ%Ê’.ZUm?@Œ‰b!Cß@H‡gé|wòYãud—@>¢Ç%°ŽM¤Õo &š‹Vq˜*+„n:¼?`7=ø]/$Ÿêr¬Ú#„ÞÐ4RÔ<“蚦ï¬í±ù“j`²Õ©.}…Ââ?•Í%Λ€[ŒÄ©4-MrÇô{&øS°C|@Siendstream endobj 266 0 obj << /Filter /FlateDecode /Length 2404 >> stream xœíZKs7¾³öì‘å2Œ=c¼ׯU¶K§¼YÇæž,WŠ’H‰Y’ÔV¾ä·o˜ô ›¢mÉÙÃnùà¦Ñèº?ü}È >dþ_ýÿùrðôbÃËí 7—ƒß<ÒõçËáË1°qf†¦p†ñáx6ˆóùsSXa‡†©‚K=/²?ø(/+œuÙãšt2ÛÎW§™}ÿ4(E¡™0ÜÒISǃì‡Ñø·+J­˜âë¹ÿÂU!•æŸ7çC¶{ZŠÓQ½º±X‘ójÛ(¢uᔵ_¡ˆûÌ9µðõd<ø%úØX©Ì]îvjh §µ¢¼­.Li¢·ŸƒaBŒgßµÔlÄÀÒ’;›Í¹k¿¿Mƒɺ%IÄ»je-Éï”VêlšÈEp:‡¿K7¿ŒÀú£•®¹$ÉI"7‰ü”ÈÓ,ÑWÇHEÏCëM±é=ÓV‰¼Ld•È'<;'„]"7$ï" û1‘‹Ä€4Û’rk;ûBJ\<è3RÚ,1üšÈ÷‰äHÚ(d0¦̆ûü ),¦‡.KW1óD.ù©–Àl«ÃÛDV¤°-I"ÞU"‘\0èí Mõâëë²–Pò¸ô•"{5Y,žÅ2¥B™ª7àÕÕ•:Ͷ»í?Î~åš1°_WÔõr9]ÍW—Õ“ú#·PAW»Mµ¨ÇÜ‹ùvwšMW‰}ï묙©ð·Ù¯ïùéèIú6›,ç‹OÍß&ñfÞVóí¶Z=:ÕÞâP.… U%{UMg³ùù|ºÚmŸ¾p(ÙºM0ܪ˜8'ÛÝ|9ÙMG9AÏìýî¢h:ÏN6›jDçùÞq~>XX@£ƒoŒe¢Z Ú(+nx˜ï§AZÕü¬º~?P>HìOiƒÑFzIÍ]ÙQT”ŽEC-/„+e´Tj„{•ë– «y½~)9½~óÐùØJgý²¯3x»«sÈ'£Œ7Õe¾˜ÿkº˜_UÕÅ3˜kB\³ÜQ0æúìñú|µ2æ7%€#׆ m“—=FÍ Åû©ç¾^žM7)‹«Y‚C׫¹OÉ\%Ù^v› ;mþ’Ùºš‡üný$9Ç…ãpÍ(Ë¡ïÁÌ‘5CÙ²Ð%èâÅ(—R€Å¾kå=Î)Sf•oK`³åeèP’ißFƒ¯ƒšC9ÓÙz” S”๬ò…P±’ß]9gŒ¥”[¥,TJÅÄvY/mU=ª!Q›E¬É—ßl8+9ðx!‚3©mv3¢èŒçö2ô³½³‹®–žE8ŽÍ;&4“E”b¹G;‰¥ÃtÅ­_3 ¬ÝÖÊBÂâÕYð‡°RdÑf@ÕI\\;oyÒz|*Á0ï=/£Ž/—Lz-ä¾Si[X¥ûa/„h ·ÀH´%y+ëoi0oïÝî@7ÿ‡nߺ¸f5œõÊ®Õ8§vk(à GÎV„îð8ô g Ø@ÍÜ=|È%i²õ©þ£Äð3éN” /¥ B©H.¶µ‹é¾º4K[('ëÒì ‰Yש¦¨LÌü0t¨­ÙÄoEé8 x§.>æ 6 4—p²´LáÑ«T‘}5…:­:J‹•®ØœäA T¨c»°ÚéÎøÖÓ€Ÿ| ƒ ØóÝJîÑ>¨Ü®­Â¬mí”ìu¨Ç CûF“7⦭à•ï Šƒ´]t÷K¯2Ã(˜u° c‰mºˆB4tÆûaˆ7¶^€LGÆUŠ›O§ï¢ø ë9y³þê¹-d¯µ‘»4lQà*Þn—Tìßõ÷î+ßç¿RÞõ²Ø¿rZ+Ýÿrêšü_¹œBúŠÎ¹+ºÈå·¤sQxP9§2áïið µÝœ¾iÜ™J(Qþtð)ôsR2bFÏ»W÷c†’e‹§¢>N ïùÏDžëxôQ-\+›È TÇïŠ4M;T¯)† fhåNû ýZYÅæÇJ’oúÙ~-möj)œš%NV¤Ü-Å’aMF‘“GÅé Gê]­Žâ–Î>£Î¶ÐQØRçàÚNû<Ÿ'òyjŸ¨ãÝ&5Õzûõ[ég  $½çÄ'ªí.Z¼£ºÞçGB˜Âr=°1yYß§gïæuþð³7óC¶ÿî}»>Í&›‚‡'Zæ2YÁõ(W¢}ÕéÕ?·G`Ð<˜KÌ™ëL1ý7Wâ©üÏyv–¬QJªŽŠŠx$/·w?’×wû+7mÍ¡´ú¨¶m«›éæb¾]7¿_þ²3›?ðû!÷·ÅÍ£2.É6— À‹4ø:‘¯¨Së󣓾ÑÖp1 ~¸ßðÖ.4³ÑuøÇf¯ÂÉfBØû<- § «8^hÿÖæ)äÚŸ+þ2øx;þ¯endstream endobj 267 0 obj << /Filter /FlateDecode /Length 11583 >> stream xœíIs%É‘ßïÝ%3]žñ¢ª‘Œ}áˆc&Òf¤£hât™éÀž…ªK±¶zúìò-<"QªIúŒtxF£u"*22ÿ{¸ÿ^.8¸ÍþOþ{uwö³LîðöÃÞ¿=ûÙçcùÏÕÝá—¯ šwõP·^?¼zsÆçûƒ÷uk¡ªK›åðêîìx}ÿz»zøðÍ1œ¿úýY pî…ßb5^½>;þÿ¥o¹$Wë?¼»Áñi‹©øwÎÃ7çÛÍý›ÛO×÷ÿry~‘‚s› G¿e×k;¿ð üFžJõçÿôêÎ.šßBOýpÑ·D­âe^è}êá鞌x¢÷_:G{w}sÿöáêáêêÓ‡Ñá¡»´ŽÀÅÃS#hIGðáæþ›cú|>=Óù‡§Fð…s^š·uß}ÝÍõÙý˜ù¢÷ÿšó¿ô>îýô¶øâöÝï-ÿ˜É/ÿL~,=¤½ñ÷Þ~Ìä?ÑûûÉÏ1å¼ë~ñ}µ¹û9Dnîá×ï_ß|x·6è´ˆ:êZÕJ­a±Ôë_Ÿ½úéÒÊcMº@-¹ØóÎ(œw­SK¾m=ô8ZúõÃÛ‹Û›¾¾½ùîááõÏáœÚûÖÛNn Žyy²>é¿þý¯ f‹X³cí~ëiVĥ⊿ÜWl¹m)În´>*þæÓÝ·×ïÏ/xjÓñáÍùE¦Žôã§û› ™£9½ Mé—Ïþxsw=þŠÇw7÷Ô˜Œž]íß¾:û-l1Ïï.9CÉÖ]rwÉ©l-UÜ]`zÀFèzåøîÜmÉ×XÛñƒw±´ãÃG©á õsÇPÅõž¡Ûߣyõ^k8^sØá [Éñø+$çrO|tÃ¥x¼™—¹Ã*ô¹Ä:Þ—X¶ʃéÈåøz\ÝCu·•s¸¯qyÏUŠËÇ7P%¶ê ôû=W—‡Ú­÷’+ôœ\ð£ÛÉÅ]Ox Ñåv¼_‰ýö |c%ä~|ûp~ LeÍÇ«¥SX\Áª¡#kñµC‡nßòå›ÃAjƒ7X®Ò3Ì vd7^,/.…Då0Å0„]—<ßêÄãåWPÇÃêû´Ö¹~ºW4ª€™³B’ˆ[N­ £~G#/°ÖÅ––{‚)ÁÕ‹aË0i˺ߟÉÉǼÔWí-íÍLí—+FøË?Sá=.¾+e76=+Ë0i1Ö—¸Ã§‡CçÉøHú “IFê\uW§•˜Òñ+¾ÆnŒx8àRŽßÎF¹p¤°ŽdQ½À”Ý?½.cö`]¾Çbß!WŸ\Öþ,‚\üFª”Ò!2íéî®”ô¤ë€uï5°ëøpU!¢ÏFÏKà;{9|˜‡çá7Çyü~^ÏÃóðÓ“ /­}¥}XªÞÏÛÇgÅ .Ÿå¿˜‡?™îæáõ<¼Ÿ‡7O–¾‡óðêK¥Ëá§µ“z¸ôì›ó¹Àæ'b€Œ!äCh¥CPu€1n°ç¼¿>ü¯ÃýYÜjÌýð=¬'H÷ð{L@`Ùõµ$*_ÿê7gYb1õAÇáî,h,T-¹=ûú‰Z³¤„-5ª¢Ûy·”,µ ûÝ­µ´dÖ‚a(e©5K–Z©å t©¥%K­Vë×J£`Öy<êuf-žÀ«‘é}¸º>ÕóžåËNRsÕ ­â bx€’‚Þƒò+–Žú«Æñ¯¸û+íjæÝ¿•Ý_uÚŒoÑC,qˆà¾aäwZ >„XŒWù³JµgˆGÁ®N«°¡”µ’”¬µ ŠÎ8žYk”ìjI–ZK¯þÔ ® š‹›=8\ wŽCç‹„áNDÕ@7]§ ÚÓ?9*Ë™ËÂR6êE*ÛOå´”XÀ•”E1£R˜“ %:ÖÏJVýùö…C¿À9€T 3”¤ö[ɉ ì7ç #ìŽÛÂúóˆyØk®>^¿&3ÁÃSjÞrÐs°«êiB÷1ý˜rMF ÍÞ\:xæ–ýpM:P¸ÊV8rçñúŽ{fZŒp@( [$Î\--âa[Â.zÏbƒ¾gXoðO½Cà©u\øå­Q˜ŠËPPüæ¹ð «$ˆ|¹p'` ²ˆ#©¤‡­ÀÒ‚Ja—†PÆ…p©V·š¸Ž  eìøL¾¤'èC¡’æ…N|íà`MbÀ*0(n7Âö‹+éa •@ƒ0±Áâ&n8Ú úäþãn†ÂUJC-Qjã#•à’b˜bÒbp-b7`¯Ùâ!t\,É£¬(é¢ê)ƒa@rU!O ø'Üü _ ’œþXá’!s ¬+Õ‰èô±.Ñ`r*ºnšŸ`|pñ ]®\’®”$I¸¤¡[†'ë¡6®g¬ðßÂW¯°bÚ¶Æ}ÿëñ¤¨m+xñ<& â,,ɸ P+“ ÃvK³#¥«ÖÄsílt¡HŽ2ˆÑ×àL$®ñaçÉâA†ä·°$°¯ƒÐ_Zf8€9g\–àÑ|°ºà¨Jǹǒê!¾Ã…*(<*é8û°àIÌphqÔé #°›Æ—аWlúGzѽ»ûaZXÑ aQ#5CÚ"*æ³SÃôßÐ°Ñ ¹¨å‹Jë;*„“¨—ÎŽ/€ØÑf;¤ó™[­¢éUþÄüÅ I€PÁ‚,ƒ´„kŽY*K`ZÖ€Qp#¼T‰¢Áä(†°uªy!šT-8©XÄû€qz.çË''Eq>0ôÂ'%q>hÙ4”)ˆˆ ì/sI!ï+àd%S!ïƒÙ«Ø/$Pè}`%#35r>0Ú€êÄ’ÎÎ ‚ -ur>èˆ;µ’;ŸæÀÐÜdOΧ¢o¤%ɸ¢•Kzãv>vuGWÊ‘ª€•fk\‡_Îä|*Œ¤ñ•2;Ôdà†KÞ ËÖóµ+ût,äÜØ÷ šøÜ{èÒÃð YeßS£ø•âØ÷Th?и‹¾§ õP ûžJ{D(OWž¨ÿ%²ãin  $v< ï<—°ãih×|éÌŽ§¼P‡KaÇÓpkáv*9žé§Keǃ±;ûÁÒØñ4-Ë tv<Ýv+#RîÐ+–$~Øó^È\=»žþ‹6±P¹H4Å›ÖÈ®wÀ湤±Å‚ïà׾Òx±ô½` —$SQ ùžä`x µïTv8Oœ}ð=+p ±¤‘ï’(Šx®b<›ÑÉù†e½4GήÕeCjžœOÂÝ6rI烱°ï)ñtmô’ä{`"ÙaµD¾§Q˜C™}OƒnFn%³ûAÕ± ÃÝÕãrf’>–Tr@ä†#Mrkè€Àwg[ €ºwú³sEþŸ®Ó{ÜY ¸õGR‚ç¸JÊaIÿÚ»Ô%[_ì~°DÚžãbâ.ÇýíÙÉf êK\Âî§‚ïå)ï°ˆ>­Û'øcò?5ɶ.ÛËÆÇç`$×f¿‰8edØãŠ=Ž:aAË]‘ûi‘ç JØý Ï"C.Hìÿ’ù¬Èî…Èí&}À® ×Hú¢’LÞ§AMnµHàS2OgtU*ŸSÙû4ä¡•J{Ôeã³$9…t]Îò޽n–ÑWr>ÉaüÎhä|àÂb!’~ö> &¾pï¶C[_ N¼X¶1xö>`”Ü Kì}À¥’ „½)„›‰ù€}‘‡HC"ŸBgcI–È'Ó.I%ù€'1ÇP$òÁl‚Ϫù@GiÃŒrr´,ñbP¡z^Ðnz`¡UVŒ‹B,a€å$ïƒr¡MJh‹€’*kûŒl=4Fò?•g `æ\åf*7“ØÿTt}\'³ÿAõn˜ÕOºK\RÉÿT˜%¹víû=3‚‘#ÁH·ÐtÁ²‘Ò-3&7‰®§Áú²üioíìuynIB0ÒÆ%™]Oƒþ³i…CÜ&tÙ0ý¨ÂwPš(Œ¶(óJSTØn%óÂt‘ëtö<¦w­î$õ‰‰šYÌ׸$°çé0›•®Æî2‡¶<„ÙùàÎÆ 'ö=ºÅqAÏì{pgæÙ‹úÆ$ˆ0îì53bâf* Í:šiè{’kžC3T‘˜S•=«wñ=@É•\Oå…£Ÿ<—$ŠRØL1Jæ¾@‰Ä> ÏÍDŽ}† á’ü`ŽCy@·%)‘ØÇËž‘\áØƒÔÊu*Ç>C’08}P´rR‰—çdbÆ|Ê)yÙ`aØ$ääý€>™mJº ’uò¶C‘mòQ ÏCÔ{´ªãùZiPÙ†“Ï…wKüÍ… `ש•Ué¸;U 5îN߃_¼‰ïAúÀ—êì{ ì f‰Âu˜Êò  ÈM/¡¬:m„°WHèƒ93-eˆìz0¬!%ú¤ÊA*lÁú`ÜÍí€PCdÑÉBñ²YFvú«†­»‚ñÀ›~WÚÑ\þyéDsO4÷DsO4÷DsO4÷DsO4÷DsO4÷öDsO4÷DsO4÷DsO4÷DsO4÷DsO4÷Dsÿ_ÐÜïÎøiÿÅ›o3§¾ ®•Yš¸—!V\ BB¸J$ ¼–dà¸NÙ‚,+¯¥Ì6­¼–œFfŠ:xm_©¼\<óåµ`KLg×2¡»]q­@¥µ®Iú4i­ÐWi­Ì¢´VI±ÒÚ2ú²ÐZAÅ ­M\g¡µœvOZ «+­ hm’¤p¥µî­ 2ðIk“¤¤+­åL÷Z‹;$·³ÐZ+­õimæ*­õÍ&­˜bÒZIw´–aÑó¸6 *R\[d¶&®•¸h‡k™ +®u2€‰k› râÚ,S3q­DØ ® 2Å+®ezÌ ™ÙÂ¥¢Ða¶äXBÊlU›Êl¡;qmýø©B¡-†õ{hÆ mëP•B[4ÚÌ%’¶”ÎÇmƒ¸—Imþ*µmc“Ú²—šÔVₕږϨ-óËImóÆœt¶¼à)´ü"´-|í©­{Dm“¨j¥¶e•ÚæíÇ€ÛôÜ:1‚ n›8Û nˆh‚[‰n_·î¸­ÝîÀ-+OÉmˆ´Û60èBnËr;ˆ°’[X¬$%Bn17ä’AnUŸBnçÎ9Èí¢O!·qkx[…DƒÜRàÌÄu[Í1•Üâ) Ó‰‚a±/rË{;×äVwÏnqãaž*è¶Q@u»Û Þv’[/{ç$·Z¢ä6ËÞ9ÉíPùBnÃ#r;¸²²Ûñ#ËÊnýgì¶|ÆnÙ3¼Ìnù·Æ•݆?‹ÝòÞ¹²Û"¬vÀÛ±ÏLz;öÎIo½€¥·¢¢…Þ†Áj_ ·Ö,ô¶ éT|L|+òT|õÚÊoqQ~;ä¹ð[6Å·­‹«šøheÖ9ð­×V|;Ô9ñíçÄ·È[Ö²³˜4¾¥Ÿþ3¾%Áö•àNy Áev\¹€ÝÆÀláÂIm\¼‰ÛçD¸ÐNá†Ââo'ÂÅHž Á•˜z\9˜,M‚;ÚU‚[ÇúN‚ë$ÅŸW~¨x‘àVIÖ_"¸™C€…àòOˆ;€ËÜuá·4Êß)™ø–‡9ñíq ¾å…úÓðm5¬ø6ìñ­$¤;|ëã[¹ö‚oy-W|?÷RgÁ·ÂY|Ëv3ñmåM‚+?ý/· \ nxLpéOÅ·‰½”â[d=Œ'¾•{g&¿ÒT~[Ç••ßJX;ñmâÈhÒ[VaÊÊôv¦Ð[‚6¼rBo(Ö3«ezK˜±à ·ý…ð\v@vøÁ·Ô=A„ø~¥·ª;)¿ÅÁa½…ý”Ñ–ÒÛ±mNz;R‡…Þʆ7é-fÄÔŸIo‡2½ûæBoµ™Ao9å|ÞJÁ„·Ü7e·•7ÖÉn½ ñvËý‰èVZ]Ðmø³Ð-kre·ìä&»åûÎz;öË—é-o»+½¥ÅWz›‡Uz[yþ'¼UT»À[þémÂÛ1[ o‡$¼’Tx›$¿o¹·Ên–vË¿ÛLpùÖ›ÜF¡Ñ nÛøµVÁ-øû¾'·ºS*¹­Ãw ¹¥_wXéBn§ …ÜRwØu1¹Qì ·t—{R%·°? bèL`ß@·…*ÃÜn›Ä€Ý9Nt›FÁ@·ÈÖ±v q³\[Ù-ëq‡nWYÐ-ÁÇÝ24~‘Üz†ž ¹ÍÈ­ ¹%¸#·‚JrËCXÉ­ãk-äÖq;)¹åa­äÖ}ܦX)χ(×m’[ùÝ}’[ „ÓNrÿ.ä¶pÉBn… /ä– `%·<JnýþŸßˆËàöK÷ÙžÀí ÜžÀí ÜžÀí ÜžÀí ÜžÀí ÜžÀí ÜžÀí ÜžÀí ÜÞžÀí ÜžÀí ÜžÀí¿ ¸¥{nÁ\`Æâáóƒ/܈ëÂ`¬ƒçúð˜ç¢)VœD„çFyÚlâ\°íÌxàÜ(LkâÜ(OœÝ)ÍÑÈ« „æ}³Â ¹>—Îu™ïÛVœÛzzôÚ„Öâcž;N™<7§¦ÏE?ËW<7ÊÍç“çB®ÀO“*Ï…M†0x®ã[êçÒ³ÖÌOÏmãQõÁsÑî½Ð[a)ˆo˜¨ ÏÅX”G®<g¤:xnO2yn°lòÜ ÐHyn/Pž ‘¢´,<7y™ å¹Ð å¹,ð\(ÏÅlPè­È Ûî½ ãùAº˜È2@]ÁèÂŽw@S[¶œAtqfˆ¤D×5Á-Jt'õD7F©DS ny]¸B~+D·Œü|]|z‘9«Ý&/I4wHsÒÜ!MŹ¢ÌIs‡2•æaNš;„9inTØs¯wHS9®JS9®JS9®Jsp\Uæä¸C™Êq‡0'ÇÊœw(srÜ¡Ì r‡2äe*ÇeeNˆ;”9!îæ„¸"ÍÉpƒÂ×Áp‡4'ÃÒœ wHSîPæd¸¢Ì‰p‡2'ÂÊœw(s"Ü¡LE¸ªÌÁpU˜Êpç£ÖÊp‡2'ÃÒœ wHs2Ü!ÍÉp‡4'Ãi*ÂUm*ÂUm*ÂUmN†;´9!îÐæ¤¸C›“âmNŠ;´©wHsRÜ!ÍIq‡4'ÅÒœwHS)îP椸C™“âa*ÅUe*ÅUeŠ;•9(îTæ ¸S™ƒâNi*ÅUi*ÅUm*ÅUm*ÅUm*ÈUm*ÈUm«ÚŽ+ÒTˆ«ÒTˆ«ÒTŠ;¤©W¥©W¥©W¥ÉwQ¦R\•¦PÜ)M…¸*M…¸*M¥¸*M¥¸*ÍAq§4ÅÚwy  ¸ªM¥¸ªM¥¸ªM¥¸ªÍAqUšJq‡4âNeŠ;•90îT¦r\U¦‚\Uæ¹*L¹*L¹ªJ%¹*K%¹*ËIr‡,'ɲT’«²T’«ºT’«ºT’«ÂT’«ÂT”«ÂT”«ÂT”«Â(w SXîÔ¥²\Õ¥Â\Õ¥Â\Õ¥Â\Õ倹*K…¹*K¹ªÊsE–JrU–ŠrU–Šr‡,æª,æª,æª,æª.æª.æ]*ËU]*ËU]*ÌU]˜«²0wÊrÀ\•¥Â\•夹C–“æYNš;d©4w¨rÒÜ!ËIs¾SAò¯¡K¥¹ªK¥¹ªKŹªËÉs‡.'Ïœ< x!g>¼zƒC£÷3`h™Q·˜\A×_݅ë÷gÇÛóW¿?ûÛWg¿ýÓ[DïAŽ ÒnÒ"7‡ [Ù°i±Q nÙÙôü0™Xn±i1ÃFC~oÃoÖY´ˆŸ¦Á7‚ƒ#…mئEʤðÝà6 Si‰-Ÿ°¢§aalúˆb¦’Á‡f,¿eT}Q¨…ñ çSÄO e“í f~ìH‘ §þM†Kð=*Þ¶Ð;Ýð£<6-vz/ŒÝÊ€ÑPäb7j|·A6t=öwÏ™Í#¾´WÆ·i#²t¼k1fò&}ÄO-ñW¤¬\Ço4ÓQãÓn–cÆðÙ¶ÅDÁ?2 ˆmì%XŠš>ÖÙ  ¾‚;wëñûgÍta*å† ⋌‚¥—@üÙ-~0$™váVO†QÂíJi¸™}#¿À4ÞÎñ[]Ù4ä¡ïcFÓµ†$3W;yË„þí¬§@Vlòh‰@ŠY€‚ØW[â[zŠa~ȵYQÑm¦™z ×úTË´ßž–ºap:L¶’Ú´ˆO¥wãß¾cµYãhÅÔõðKB GdÈôn;ã)[ ÉÔxê–›7ícƒÝÅto}sÍEa‹-E˵Æ[z>$üZ½É “gŽiçñ;µôUk»A‡­eüv5ú “?hL·¿™yð”˜cÚeoø‘)ÇÄù%mVŠAül[¬Ì1 ¦Ç4ô<ø‰@~¿±™d:qLÈ™>Õ-Í1Ë/\fû ¾¶Ö™¦[ø*%vƒŽÌ1 &1Ç4m±D1KeèëÕÑÒÀsaŽi¸2®6[ëÁ÷¬™¦­x :\»Ôާ;ˆÍ8¼Ë€~7Ó5´hÌ1ñd¾¡ÝjSÀ‡v²)ç÷:î„(çbÛÅ$$Ó®™H¦a¨G¯¡k–",ò²@;k¬L2íÒ„Òd&äÂÍ$ÐÃû)R° éîÉ2UÇ$3áÃ]&íù-;ÓœoqÍÙR/ø>oj:´dÓqLCMãMj5YÚw-Ä1$†µ˜l¬ø È; SL|æ3BkÅØXO#މn•`âÊ*Ýg˜áMàÈ1­D/ýNÝr;À×FÒ38fûA D1 £e¼‡Ó›¦ƒô&Ùhé[¢çŠíQ|"ºšrQ|ËpH¦ S¶ÌOqšµX™bšccŠi¸2(¦áÓºñí˜ïrFŒi7êîùvL»?—”mûcÚ¥þ°Æ„1í²|œ?­aØb«¦1OÏÌ1íîCÁ§Dl9f­DÓß—ñ9Ûû1{ŽiæÍð5ðôH‰U££/€Ù6ØeP/L(ô»¨U\ñƒÞrsøqÓû1±E☆K˜cš™cÄe‚%#ŒøY¬fk=ŘcFW™cš%ÂÑ5cŽéû;ÅP`‹È1­r™ˆßhq–8 &Ši¶ÉD|òÍ[ŠŸ#+–?/G‰bº2zxÎr׊ø^¦`ÛnjӡÐwèUvÖX‰bÚ ¿š,Sul‘ïÇ4s¶xRL³Ä:âs–δø%·lùóI ïÇ´[™˜cÚmZ!òý˜†}LÆ÷cÆ™cZO–û1­²|§Dæ—qYyp|všîÇ4s=ø$²íÂ4☖’éÆ$3â›ýømBV}ŒžI¦–¡×¶yËŸE#¾é£X¨ˆÜ[’L|犣×1™™#~=XÞeñݘv˜‹L;‡ÑâûðÛÕÉfÔ•I¦áZ7!™Vßk³iÔ“œà¬€_‹MøQ_wø9 |¶SKnåã ~_¿Ô‚ßvYêK ÕùãгGßfYqòµ–¯Ÿî0o½Vˆ¢ÑØ) ßúâ4üîøáÝåÇ›‡×wïÞŸã5ZŽÇËÛózõgøY©Æ«_Ÿ½úéŸ>>¼¿~ûþúÇ›?žãϪoÇkªz¼¾}}wsuþŸx> òöÙþåxÀÔÒ=Ÿ@ žJ­)rÿþÇ9ŒÚ{WËñºéOò°rø:±žj>~Äãà\èõxu`‚BjÇ?žÃÆàº ÇË÷X#w˜@5rÇ/k/×3¯Ï/ˆ/ÂáÃT´r|€b¸¬kõøz¹þ5VñÎU× /ÐbƒP¦p·ðãE=Á…¨‹-ær¼§S}ÍÅßÒ„Á$äuµÑÆ\ÿÝ9~ßÌù|„e¹  Æ%èÁ~¾u˜™ã‡åª×8|d>^îË©Õñj™»œT©r:ûÀÅîöÜ:¶çAt|øO,ºÅØß–[à©q¾?§;€}H0ýxSµ qWá57—/Uð.–W¾À(+7è4Wp®ódÖÞzÆÔy{=»$]†‹Ð8| ¹ÃòAalñÆCÿY/©Òayߌõ#YIu.5žE6£·4ѽÀ=Ü?9_AxW1,Їå*—8ÎÅpü3Ôµê7Gšä–v3±ÍõǛØ@Çïæ@Éšó¾A7¿#³Â;¦¹®W¯A=·³¹fe¬x1j^@è¦HÕçÌñtÖXÛÚÆb7sqþxž3ÕË”@Áë .é¼VCsu‹jÙ5§µWõÊ>Ê„—˜ÒswóôÜ}à6"˜®6âôfàVN…&¿[Êy¢ï}µ•g¬óáíõâŽqñãvÖšVÆ Ð¶Ð}À Q¹˜'£ø—•ûÀ¥Ð/jLŒìK¡'«nWÇõözz®÷\»ÀŠ¿yºC»=„¯ H÷ÛyÉÛ§e‡®¿®îRúŠd£ é[–=„Ë¥¤Ï|˜yïK¬»*÷Ü8júr‘DzW¢m‘E5Ý_—^?½¢Oî†;娇¼üöѾ,“´ÌÌr¢,,X*,,¾/£Áb½›­-Æù@ÓìzNå¹i¾ÃwŸY6‡ú]}(ïC>í®vB¥à­®ÎW  ³çò-¬=ÚxU+8«ÿÉ&uùiNû­\ãñZ`!º¸ÿ¾xeƒ§ž"اW‹õèqéM% €wÓîÖy>σÎùY¼p‚_r#½í¼ÑåªóפÈ ÖY,ÍmæzqCEÓÞB »bžKXÈÊ{C!VÙ‚íy‹Î–Ýò™w@—àó‘õcÓ;®>£Ö†QÔ^—·Ëü@ž2¥tü—Çþµknïôx,}}–óµñÖã¦ë¥ê£P›¨­ ·úquæwX æ®’Y,Žã=Ÿ_@B¼{¢E•G¥Öþ†–»G’–Ýxíåý4õu..Ç$ÖU#—{ûÒ8Q×8îâ²{ Ë -í™wÆ#D ˜x^ŒÒ uN¸Ý½ž°YfÚ²ø£E¸sM´ü`lh-pº€.&²—ú; œq÷¦kp¦¦ ÿo20ȬFl"-¿£5/°/ìOøîŒæâººÏ„ø7«§zr£ýƒ »äÉ…©yœIâÇÐaÊ_?m†·ÜDcÿžSŸÔ¬iagÀô\ÎÃ…ÉÀÐýå0B/}/·Ûß»µ‹qÞšìtôÄ&x=Ík1‚«H­‘vàhy—UâÝÁ!/S‹;9~îüyëã³||N¾ÏÌìº 7Ób®¸½Øw›àÃÞŽÐÿ—Ã.öÞ_ž\˜Ë«Çü¹ŽŠ“ýVvÄ·éÒÆj]íS3¨ÝuëÕQå´UXK´•›ËX$šyŸj’sÒz|X8Ö|Øó`¼øáPèßohZQ>I#Ò–rö£ƒ»-Ù?5¤ŽétÓ!ýõù…/t«ßñ?Î’Oìn&ò)þ†Ë-.0°•:?NÙMM}€É:\à·~³“³þýã³öc¢çA\<ì)rnÙùÙSÃJøC¯O ‹ õîÊ“Wóø}¨®3ø‹9õþÉùóüŒåç×ù9Џ~þ¨”ÿzVøû}ÌûÙªRV¤}G‹Ê®àß¾žºYöÈ«s ªò.·ÑA?JÔþ²)rèº2Œ5" Þï׈öš®íg2ÜeûzÍMÏ´fÄ ô87\û’;xã7«¥­ÌC¦š> Ú§CKÈÎr¦FŽ¿zYôr"†­öò!ºJ4uËà–R=¼ž³‚ðÛÖ!§z ³âÇ¿{ ü7Ð=üµÁS€ ®ò`‚Qrx=ïçák=ë¿Ì -ü?zt1ÿÙkáÖ£÷ôϱEvÏrH„LŽ?ÎÃæá»yx=ó¨µqø“'^_ÏÃ¥îW³…«Yú0߯‡_¸ðå<¼}òp© îhYäz~  Ã~½9YØ%¼[µÂ;lö †gòÛ5„Vd]×ËÆ¶…2Ý /QErûÃ<|7ÇA˜ø‹yø“YçB®.“F‡ïçáOžDç‚ÅuëùU »iñ¬ä¥kÂÏw—ú=ÞXû †#)_ÙgG*~üEk´ö\ j¢Á_ö=C-(ÁÆ¢÷köóWû=í?rI×ÃìG2½æîEÆ/h‰]~š9 ’Jü²Á¥cšÀœ÷üeÕ×èìvÅz~Iô ö „=AjC<OœU¦jÑÜÂYv™Ë³é$ „ë*¾‡ .0fiµsÞìõ÷Úßžý_ tÚüendstream endobj 268 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1675 >> stream xœ­TPgÞ%°»Dk»7שnâœS±jÄjñ(7¤µˆ8V”„ jØ$Iü–P û&F Ñ@!@ø%X µQŒ¨\[¯cOËÍw:z=ûcjåæzßrÜ¢×Þ¯éýÕùfÞÙÙ}¿çyŸçyI":Š I’JËÎY™4óôœø,)ÎÈ«¦žšÊ‰8ÄE÷ϧ½óPÍ“¨xÊ›KÈH²tUo°šJŠufE‚f‰berrÒ2Å ‰‰ÉŠ—õZS‰F]ªÈV›uZ½Ú,½ìSlá5%Z³U‘¢3› kW¬(//Wªõû•¼©8uÉ2Ey‰Y§ÈÑîךh‹é|©Y±Q­×*S>ªi¼ÞPfÖšÙ|‘ÖTJÄœRÞ`.Sk´»‹u%¹{—Ä&b3ñ±•È#Öë‰t"ƒØ@d¯/¯ñÄ\‰0M!>!µdOÕ5)Ë‘†&&?æ=JOU‰uñâ ‰ ù0‚Š"2qºÊ޾qÏJ)ܨ9Ì )<ëhŒ‘oxs‡÷ÒÚÚš,ÎH·;Ã’Î9h·Äý,DgÕºå(—¾å£ßN¸3wpØöÿ¿wÙüâjÙyu_—‰ih‹žV~ƒIL*ã§ñ¼Ï—"‘Ÿ…æqxV±ù é2šÎÕ]0œu^ ô ž•ú¾mj×õæC&ìƒ"û&Ã~§Ê¢F↷…Ћ>1ÑO>ˆ Æë2dÀ/±±n¢»Õg `¾yxÍGóVµhÓë{4¼ücÇ~OyZÿ42Äz¡upห¿g˜ˆ)Le)SŠ‹š/èåA¨þ&ñäB(9@~Aœ_†–Š ,R„°e[)û"ÝÊŸÛ™CŸâ~Ú81ãý×&¸«Ö-tºa§ºTø3'±ùÄÿ ]É~'É+tÒ®u/'W_¼Ä¡;4ž=ƒ|:Á¡ap. @â½Æ[ð ôÝr·2%…bÝ1!zsUý°ýžQ‡ù·nûÈ¡÷PaäÈitŠ…áŒzpwŸÊSLJNvæî{½·ÍÝÕa9y°¶Fêä­\öŸfd¬ I^@o¶¯·mÑ¿ª³n-“úYYdl´÷jstiÂÀ´Fo˯Xsè[E!\ syíìêì‚ÜíEç{¼‘k§¹áÎ1×i§¤Üó6? Þœð“}בú– M¢¿°t|›Í{¢ûØ™›—S®\"ùä™/'ÑÜ^DŸt Ǫ«¡¢Vn\›S®&+u% ecãƒ×,¹Aùã¶eMhý#ÛUK~U².8ÁÃLný¦&=‡çàŸ|¹ô[þ¶õÄ›`¯앵\YFnÉ6PªÝÞ7 ãpq4±'Тߟ‚p>Ë£%±»¤4ŇЯnœô‘“£÷oÈÐòµ©fÐlêîÙKïz›j«=œÍ~ LŒ1`kl ¸Co·ir^Ê_ÈáØ_ÿ€ïýËtç%ËuÃ(t>ÎNZ%œ›ÉV5£áÏšÿ>jhC;Ƈ‡dH†6°-‡ûsûÆûwC¶!}¯¼«çO¸$;¯«ªjáSÑPåmr{¼-‡{5:‹‘çôÅž½’ÊÙkrúŠ=oÈõ:(„0z´ý¶Uj`;“öe¢PÔƒÑß¡ù8RÍ…à¨áö?Ðg ‚-Aæþav "ʽ{€‰òr©¬’‡ð_ÙÅé‘±Þæî OÞÑì‘fÆÜA(sÓóË¿[CˆøŸM”¬ÉÜSÉ QÿžËs!§tyìZpGÒL†VˆÓlÐÚb.³XÍe~K[°Å߯á'ðkR许ÿk¾ Ðï@Û㆛íõoÉEŠŽŸZ¡)¦›D—?”MEM¥°ÓÔAlŒñS^´¶±)Á/éêZê ÌÌô ]\wt Ç©aLjã"\„aX˜éÉÓkêNJMiÂ)¿Ëíè–þEË¡©Ô‹×2~*^´HwÅ$𨙜5õp œ7Óà¾:üÖñƒ Ñ’“A^~ÊK.68#Ý(xlp„)/·^鱂þÁwH'üŸ#Ž¢?úà!~þ”Õs*ž±Zë*¿Ÿˆ„æGèé|8Ú KѸŒ¶†IrÉmeÃØU@Çò‰ëN!ÞÝ裰ªÍŠÄr³¢­|Ü>O\\Ä7› þef¢endstream endobj 269 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 416 >> stream xœcd`ab`dddwö 141U~H3þaú!ËÜÝý£ý'+k7s7ËÊBß¿Gó``fdÌ/mqÎ/¨,ÊLÏ(QÐHÖT0´´4×Q020°TpÌM-ÊLNÌSðM,ÉHÍM,rr‚ó“3SK*4l2JJ ¬ôõËËËõs‹õò‹Òí4uÊ3K2‚R‹S‹ÊRSÜòóJüsS nÓƒPÎù¹¥%©E ¾ù)©Ey L& ž ¢ G±T=ú1ïÇ´î£ß¯ýÎq”ñõ™ï!g˜˜}ß)ú6v§¥{|jE•Ü÷ öU­S3å<Ùj »óò–vÏ”ßò§9 Áû®Î6si÷Š…ݵòIß=ÙÞœßvðèô¬ ¹ßÕIìØU±Ale:úƒ>ã÷s‡™7~omªëîì®äȘѾLî{ço&$+\šý¿3]Cð¾ÿb[Ó29S®„­¸»­«¾‚ã·í~Ñïyß?±þþÄÎW?ý‡ó”ïöÓÙ~WNb?Êu†[Ž‹¥2Ÿ‡ó(Ï^3ºÑendstream endobj 270 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 329 >> stream xœcd`ab`dddwö 641U~H3þaú!ËÜÝýãúO/Önæn–µß·}üÅÿ=\€™‘1¿´Å9¿ ²(3=£DA#YSÁÐÒÒ\GÁÈÀÀRÁ17µ(391OÁ7±$#57±ÈÉQÎOÎL-©TаÉ())°Ò×///×KÌ-ÖË/J·ÓÔQ(Ï,ÉPJ-N-*KMQpËÏ+QðKÌMU€¸MB9çç”–¤)øæ§¤å1000103012²ýèàûñ©{Á÷='¾Ï8Ìøäî÷÷˜È}¿%ÚÛóÝà`Ïw†îy’¯´ŸýV‘û]ò×ëî÷‹ßÕÙ¾»þ¾ÈzŸíÎ>Ñï3¾‹³Þášlÿ[Bž¯zö§éß³f/œÍö;a*û ®ëÜr\,•ù<œ‡'ðð\ŸÌÃËÀazWendstream endobj 271 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3598 >> stream xœµW PTWÚ}í“~OEL4Ïà’÷0Æ ЏàcTL p‚âÊ"4›ÐÍÒͦ„ºûë†fßi TAÄ…¸‰[ŒË(£N6cL4N’ûÈ%SsPSS“ú«þš©®¢èª¾÷~÷|ç;ç\ 5r%‘H¤.^Nó,ÿ½*N‘ˆSGˆ/Ñ€úïõ¯·k¬Gîú|äxtòy´cÚðEK$ò¸ EtRlxh˜Òîµ {;§%K9ØÍ›;w‰ÝÊ(YlxP ÜÎ#P&‹ T’/‘vëAá2e’ÝkË”Êè¥ŽŽ s£âæ(bC—Û;Ø%„+Ãì¼dq²ØxY°Ý; ¹ÒÎ30Jf7XÜœÁ¿.Ѝh•Rkç¡–ÅÊ)Šš._¥ðY§T¹Æ'nK òHö”…ü),|wdÔ\§y (j-5úõ5ƒZG­§¼© Ô,j#µ‰ZE¹P>ÔjjåK½M9RïPk('Ê•r£PΔåI=O§&P©©±Ô+,j$¥¦þ) ”tŽ˜<"žIGÐF #K­¼¬®K]¥·gæ2û2[=jÚ¨FÝí5úÆÇ1³ö²Îë9ö‚Í‹69ãfÛ3¶;Á,N5Ju] Å÷Q.÷ Y¹[¾KA8ÌÙâÌVûXЧ¦YÉ™O‹²|lbüÒÀ—3úÐ f8š^ëéfæ½Tè'óÓ¥SgÏVlòäqêþv3Ä‚¶…µéw3ºdDÌÄ÷¡/ïÒÝýoqr#s5/=DhfBÔé.|‚\´–"îÎWßÝ\õ9S.ܯ¹t®³_.¸_äñ;ø ‡ôÌ}áA—>l_èíºq1¦…×ð7œ¿¦p€Ìh-ó]ï¢åK=WÚ 6bJz½8Ï(iéC-}´è"8ÄÙ?Æ,¶v˜†Ç㾎¤hôƒïÑxG`?.üªäG£{´Áè€3­=ÍÝ«Ú`?Hj nÝ îaà³Eá»5Q¬xZûi³ä„˜A‹»û§rEå ƒB¶"ùwi޳ª—"«Ö›ÈX´@:`÷Ûh+¥NÛÀ‹>Ò*Tm¥’fáiñŽØ Xü¦Ô¦?ÌýV§—nˆïÒþ#Nè±½&£YÈyã)È/ðÄß^‚A<0ÒOÒÛðIP—kÏjx‚`v¶×ʈÀµÛY nˆÿ8÷Ë šì•Â=è¼ûY‘´ù|fîŽlˆfå iUFcySKts€³Ü11›×"ZŠ'ÿ’4ëOB 4Áhl|³JSÚN:01Ý(:×Höô ¤ÝßàjÀž™¨ÊÈâ#wEl'—êº> Â:„݊½Y‡2N¦•«w%Ôì,W‚ ˆõïêÛñPÅçÖ€N«Óäç‚Ø4ÈIðT& rJ :]]5o(}eUÇ–P ìOÇNß8±;£Xm.p-‹*XU³­u‡î IÁœH=¯Ë,„<`KÁPCÊ|Že²-6J_@Sëi´L|•CÓÌxrWIµ³C_Ÿ«f¾À­ ¦¯)ŸÛsö*ÿgÕzÆE¼îUódÊÈM§t>™2ôgq÷¦5Œ³ßêKrçÑß<Í`¨ç xÚaŠéJý¾öšÍ U¬ƒ„+3³&³ð¨€DÆý1Í,©½N‹öè+®éâa]- se;(Ÿµ`Ÿ¦X I®ä¦ÏÀ[L£]ÙPºIm`$=ˆÑøÈȯ¡%§¡(§<ÙŒ°õŸšÜÌä¨h™°‘‰5 @[~›)±<)9>].ÛrüT×Ñs„½kÒë‘ùÖ‰zI[ò»M£ŠR.5¶ÅU'›j+Ìß>²š3Ý"õßÙ#+dÛ‚¬‹‹³@¡U§ªÕjï(o`=—Ghé]½'w76¿rÓ&˜Äêk4Jîwà²jµäŠ,v”¥Cb¬c¢a‹Ã ë'®× ÇŸ¸žnÄnƒ²M(•Y“ŠAo(¨D¹ý6¶ºëÒa—6è?'~i†ÏŸ §‹e2Åf†L÷UÞhÆŽRhµ™‰X>ð‰-¹3Ô‹“Œ’&q->/ÎäŠK-ÜfK³ ™Ç‰ßÌ'~Sðcí>$!mg¥xÿÀKVIz¨çÑ b7îÄn2°4Ù±(¯ô÷\"(Öœ£Ñq‹ã +W ohó$?egÚãð„ûöhDßÁÞÚ áM{ªOâÏŒÛÀ5Ž4]¢Š Û&ß l ¦JІ«eõ{ckgk/œ…6¿’eɤíIDbŸè™It2Ñ(¾ß‰Ë(×êTä´Ùri7삦,v`?#ÿc˜Í‚ØÀe‚¦8Uœ:Ê”hj­i¬ç1= —Ïg.ïz†ã²c)œ†½C{ºåö âH†Îxs¿S“äÄitõ4‚Ņܦr¿^8Ï^>uî¯hq=v(àõ©[2c 4ê\ø ‹ðô=ëZæ“0½tÞ ßjÿ}AB[p[Æ•¤¶Ì“)Ù‡•­Þ°Ž]±aõb?Ònþýc¹Wµ{´?‰4~ƒ‘¦@§/+äó‹êöU¶ ÿ’ÌòÈ›÷ш3Êžè=BH_ip‰e„H½“#ú¹‰/¢dÛ9,™½vz'ráÅž¨ÉKˆMFÁ’áŒð$QÚ0xb_FpM}È‹6Ì™Ïí.zsÈ+ÀÊ™÷ÉFv † U§Îç#åÒ&ýØC>ßAÓàM"™ùê2K,O+è×o‰IŽ~‹"nÓ¢;ZÆ©¤êäÌõé;²2¼SXì!mj8s¾ÑDÌÑîÔ1ø¤ˆ¹Ÿ‘ǻ浅›B^]cåîæÄZE†´j¾öÓ‡.ûűՎÎ>+½Þ#TÆñVq¢„±àÖ„˜¯‘— ×K’GMhɰ/ˆ—¹î”6m)!·ÕÕÛùC¶F¹º8_u ¸ÂcbQVÙØLÈÞ!à^2Ùe$ð—•ðÍ]‡M½7ð)J®Öù8!/…Ÿ*48ÖŸ,vëIú‹AS 5[ÝT²·9±*6)&#ØùS‹–[ýpŸp~Ì?¼ì嫈k_1þýV—IÒu åÞ¢Ñ8ôˆCh\ç‰öö´¨Z>UÛT•‰»ª+ÍÇd. ±Âs87#k/äÞ}4MšóÍÌyËé‡?åÜ!êTF]FcúQ¸ÌÞhÿáÎIsHx%_›!6_¢,Ö749,І½ëÐ ¢g.FmÌåÎÆï–'ªb¢kU-•¥…†>/OG^—¬RrÞ‹Yë¿UÈUk `lŽ!ÇPÜw 1¼M|èR‰%EuRXʘG_ùÈh=ÊXlm}¡Êz,Eý ÀÕsendstream endobj 272 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 326 >> stream xœcd`ab`dddwö 641U~H3þaú!ËÜÝýãïO/Önæn–µß7 }üÅÿ=\€™‘1¿´Å9¿ ²(3=£DA#YSÁÐÒÒ\GÁÈÀÀRÁ17µ(391OÁ7±$#57±ÈÉQÎOÎL-©TаÉ())°Ò×///×KÌ-ÖË/J·ÓÔQ(Ï,ÉPJ-N-*KMQpËÏ+QðKÌMU€¸MB9çç”–¤)øæ§¤å1000103012²øÿèàû)Ù½àûžßgf|ýðû­;Ì?Ì¿ßý´òÜ¥î;ï~3>ú­,÷»õ¯×Ã￱}ø}‘õ Û÷|¢ßg|WaÿÎq6ÀÅÅ;à7—<_éÂs¾‡/œ½íwÒtö\7¹å¸XÌçópžèãá¹9‡—ìÓy¹endstream endobj 273 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 440 >> stream xœcd`ab`dddsö Ž4±T~H3þaú!ËÜÝýcåTÖnæn–…?t…¾§ ~Oáÿž(ÀÀÂȘWÜÔçœ_PY”™žQ¢ ‘¬©`hii®£`d``©à˜›Z”™œ˜§à›X’‘š›Xää(ç'g¦–T*hØd””Xéë———ë%æëå¥Ûiê(”g–d(¥§•¥¦(¸åç•(ø%æ¦*€Ý¦&ós JKR‹|óSR‹ò‹ìÌâl   ŒÌ Œ] LŒŒ,tðýZ»à‡Ô|Æ©ßE—VövOêæ˜3{Öüù5›ûå#D,Ÿ÷qëò©s'Ïš4sB÷|ŽùÕ³ªš[ÛÛšå~+öÌì_×3]²wþäãÝs8æǪ̂¬ª®«êœbØÓ.×ÓПÚS÷[é©Dó„ÖþænŽªêšòòY­“Ûå÷•í+Û_¡š˜ßXÙ\ÓRÛÖ]ÎQ>»fÎä9Ó&O—›9yíÂSÖ,˜>yÁô®ÚöŒ®úF-‰ªÙusæÎš1§§éi×¹®ií»fpð/þi¿„í·âtöý\û¹÷/àáb^;K®:endstream endobj 274 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1586 >> stream xœT{PSW¿—$Ü[¡nÑ>n2UÔR«³£¸­3ʪ,µuЊ5b$Ñ„äbxˆ*˜ä ”°†>Ë¡Wïß ©p0£ÂÂzbÕ|ÍN…‰y¯éÔ> éø¯…¶9áŠF%6;{ÅU!ºï6^¼-KÐÈaâ²GÔIZ’@Ï$cª¿ûãxâ ¹Ü^Ð…„_Z#ž é%¸îë‹p†u»tÞ\ÐÁxÙöª%/Ï¡VBKö„qMH|$\Öo·Õûq~Æ þê펰N>C(›¹~Ó}÷»ædÔA;›)ï¶ý°¸c¾ÂDŒOù–,ؽ·ø^£>“!ÉQœS¾šƒšû†ÙôÊïMÝ»%<K¹á\‰±¼‡q{Ê+ÁÎu–uuv½Ñ?`î?°C§Ëø(£3 yò?0:Qç÷ŽÃeznÎýä`¶ºZ.I_¥8CâÚ=8Ž'Çeøµ¸‰;M•µn¨<É»ÝÕÕ5µ¦€Ég–,9º5÷ØkW±fÐ4tj¼z¼êœ+PÖüZ¨ôìú$¨Xaýäz%ïjöø*­€×J5$)ƒêVŸ×ÛÞÆ¿îkñ74D]q…$–âF~kÔÑSÜ¥1ž/hÜrÆÚ°Õ7Ø®È]¤7Úêxo%Ôø=íRŸË$éÕaÜØAÿ0öÊðCq9&+ðçƳÁ°|•‹µ}Jú"ÿ³0qëÂo§ø–ÝÌSAÁ p§Ç~FÒÖªˆüËɢʭۛ•¾±vä:aÈê(y€k†¬b`;è®úç.Ã5ëê›dÕ%Þ±˜Ü¢3™ÕcÄoæW‰û½xñn_/=x_ýB&RâÜñÓŽ (d­ŽîîÎsáߘ'4qó\ ]ïÉÄå’7 Ðù}ΗR•O-#“Ä¿®DªÆîu5Öúª«\§N{4ÆëÜ'à8Ô# óLB„õ¹&Lýül/¼ “:/I`U8?n°.D£bê‹Ïd81'ôBT0wÇFGš›Ý§›ùªÓRl¬µ½4ÔÓÖÞ=¤?¿ë¹´—Vò„yÖô'òþ¸§™ù±6G%=ïfÍnçþ êý³ÿ;¦¸ùÿgà °Ï`Ê‘f  ‡)<†})抋¸~{Ðl¶ÛÍ…A[0ÔÇ“÷å}ötg+4íÒ]°ŸWÄôsXØâ Ä’C­LxÁôB~|C‡ò¡O©œ>«\DQXClÈendstream endobj 275 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1360 >> stream xœ}”Lgǯ\¹·jÛÍm’¹»óŠã§NTÒˆ˜ lˆXD©-®GÙQ¨,(ˆ@¸>-…*:Eå\¡Vð×1’é_fqÃlÌÅÅeÙËMtÑýñ¾õj²ëÌâ²å.¹»?îù>ïçý<¯†Ò&QFg.6o5çdGß“·5d^y‡†Æç¹áuÉ §A¯™ÇøÞÀí³qík¸âuŠÖhê]]fG}³Xkµ9ù¥»Òøœ¼¼Uéüòìì<¾@°ˆµ»ªëøâj§Í"T;Õ;¿Õ±«Öâlæ—®±9õ«³²\.WfµÐé­kÓÒyW­ÓÆo±4XÄ&K _è¨sò%Õ‚…Ot—™xšB}£Ó"òÅŽ‹XGQ”¾nCaãæâËî2»@Q¥T*µ„*§2¨L*‹*¤6R+©bª„2¨‹¥´ÔAê/MµæARfÒ·t)}C›ª=¡}”ÜAº$ 2©‘5ðƒËˆdj?&Á^Ð)z‘‚ vè"³‘ÊͬˆN{®yá8Œ»eiB¿PFf¸y–ÃÏQ+žŒië^H€Ã§82…›S¬ŒšÜŸH.h*èUÑ”;9eÃÍÄ·ƒ8tAƒ—ÿŽ­26…ט"¿Ú‡˜ûÞ6+9¬RÛZ¶ÁN3_a²ÈˆJFC²Amð]¦R:âðàcôd@XÁÉø¤È¬Ø',eÓpò¾Îâ… ÎóÛN( u2c Wªy׃x<ž·CÍKŽæMþ;íù.ÃUøƺծƒ{P:å°û!z|ÔžOËmµ§±¸7‘–Âà,”Pøh …;…/Ë4.%%¦«¾ÞII{‹Ô°Õ+xbHîêÜÁ)v{÷÷­~°Ó€upç©çG>…¯O”\ _ÿB‡[ Lwrdê%°‹=wU`—a.Æ€5 µ’Œ#ChÌë¿Ï•|Æ Ýpp¯Òùn®ÒB&;NvB¤(ù/ùw£z¨\ÄÚѨç†7!¸!º£ÕÐ"¸þ%G.!÷½˜q¨Ý×Þ)ýàë;Ô§3†oM/8@ŠUûÂ9¦ÇÜž&U“|;€ §Ý#Zt‘ãH€ªÿÈáÈ)D6E^iõ/æòiŽ\C#0þŒ "›{»´öÀv¯-ºqvô ª.R€ŒäÈx¯Œk± Ï–iÒBŽ˜"‰Ì¤¯s'¡ÑήÎ"V$Uh—«&®*”·Ô)ÆÖÕs…ÃÅߣ{G]Eª["SÔê*`7à<抯g”}ʨ6œ³ùML­ójXzÇÃÒÕ°Ï¢a…¯†¡ç¦W†óð4ìŽMìú˜àðšItÏß´)ž´©­©€-ÂæxÒ#'Áð§ýŠ662·ƒá91•ˆ!Hc OM‰ýdlÝ`Q¯õ¯ˆ£GÊlP4x>^öfŸ°8‚‚q~Vw…T 6¨ðZ§ùUÖsÊŸH™Ÿº:µL1 ãY#éŸ>–¦h"àrÕ߃ïX®ð ÛGEš8?ÅFéIPÇæãxEÅ0Ó´³Ôcf¢Ü¬É½C“Û¤9ænö4¤AU„Q…1)‡TÔÕ{•# Š«b@ q×EÞ›«¬'yÓ⼕‡ÿB}ÔÛÒÈŽW¼m> stream xœ]O1ƒ0 Üó ÿ @Õªb¡ UÕöÁqPœ(„¡¿/ СÃY:ß|–mwëØFàðEŒehvK@‚FË¢¬@[Œ;Ë'å…l{åßO°Èlü®&’ÏêzÊ«r ¡Ó4{…$ê¢hjcA¬ÿ¤=0˜ÝyÁ&£:ãæ?”M%Ž›€KÄ17ÍMRËô{Æ;ŸR°B|oÞSýendstream endobj 277 0 obj << /Filter /FlateDecode /Length 3733 >> stream xœÝ[Ý·¿äµï‚ûÐUb­ùýaÔj#AR4iú’+ YÒÝÉ‘´Ž¤‹<ôoï É]÷¨»³Óô¡0`)r8œùÍwgš°–OþIÿ.¶gO¾Wlru8ƒ¿Î~:ãá×Iúg±N@]„ïˆu–ÁK!>”ùa‹pñ\ Gq»@v1ÆÌàÒƒƒ!ü@lذ#x8 gd¡Á3@u‡AÀ\äwŒÂø­p>V:ÒGSžNx0…þÖ ®ÐC¼•ãyÕÊÆ &kf†ʪßdfE#ÏuáÑÌŠºÕªîVW×1árRB2VÌÙZq¬“ªá.™Â9é¨h?cÎàÞjêJ_!Ü '³|în Aš 3 ²d—7gB7õX¢Ñ:ÓéE<¹‚ôÐÄ”(]Hà %.îÏàñèÂ0SxѲv-æÎEÖCQ„ Έ»iµÌÑØo×¹©“ªZ¤@„²pºžËÇ£äRF¨47Sâ2! k„[ОÁ/’°ÿC4ìÀÈS,óNY*dÊsJH+!ÏAÕêN%ŠMÓAíó6#‚Ö(QpC’JL!ãOðQú'hªj^Pƒ"‘ @ÝÇ`€ :&eÉ…Åä°N8ë¥K-Lÿktoð—AÅŒ okðRæöº¢S62jÛ ±"µÙ<Ö NCÝDKŒy¹uºˆ¯ÑðVK•áB/‡x\Å,Í5»¤¼Ó!†úTq°¬[…4Z…º1ñûÒjˆ|¤¶B~P6¯ØÈ<«šV°ïð¼ÖƒXÅÉFæŸ9°ÆÒPî"ù¶E×§=Ë]UGi ~È•=±K(ž‹I‡ë6¨%‡<’&æå- •´Ô eõÛËSƒ7‡ØZéû‡òF1†7(n‹ªŸ]Ä\Ú@¤–wäR˜ Ê‹5áE8£—`Ú›{KÔ_Éð¼ßÛÒUÜÝæY¼‹&ËG!y9D×p+G+/×}d”wF´œõ²yž+%‘·¦1r'iÕA~…èÛÌ_åÒ®MÌh’r¨©.FV ÷g?*¾Ž·PÀðŒåR T"¡”°äÿ’àj“A3‰÷,lÎÊ/¦AÛp-Qö´%ûüü컳ø4F¦•ìO?‚pë£jO``5ì!ã˜ÏÒ³Þüq ÞÆôÍ}ô½D®3y•ÉëLÛ<8§¿ä¾ÊöÝHé Êü+“¯3¹î§òáé ¶¯2Ùeò¦ Ö몙;ªÖ*ì.3¹ÉäMaòt÷ÕMˆw¼¬rÛRÜUú¯Âü¦*ðï©+ÄÐ.eéÁ ž¿ÆË\<«ãBn–U‘pFдx-ª"«ÞT'ÜÂëØ2ÇL>­zùš*s˜@lpÊ÷kæØf«ª5I&,ªòØ‘P´©Š^Ç"}Ÿ9éhmYý˜‡R ho)ÃïÏr“9\qm çÕÀGBë®:w“ù«|I˜ÝÒ-âSŒ$ú à_f¬µUŒNpg˜Ó™5òeu²ì0v‡±5DtõÄJb‰iÄàe˜©U$›Îò\žG?­úÙº¾Aë/™|C[âQ•qáìIæ/îÓ!ŸEè{7#ÙCÿÑ ˆÖH2w¨\ÄŸ&`&ƘðÄj®}kÕàl_ÕUxBÄ8,,“®Èý„µ¶ŽÕ×=އée¾ï0/«v•̯€L͈ëªÁ—U1tUw)«ÖD¢„d5’ÊêysS :Ï3)îŽ4d=É»$zÅI=u<»/‘œEö^1ƒß…ž P WÊ¿òF|Ç–+×;"Âï&päòÿ1ÈÕ˜½ghhbOOÌÉ•±ÅÝõ}Jë¢xª)Œð}]7Ê-Ä`vªLúýG²x[UϽe[qi®‘‡*ßcUN—ŒÞ[I«ê©W3w^nžnê0» ¹‘A/«²m«²‘sürŸC~SÕ%ÁíóêäÌ$˜<ªIž² ŽÖng¤\%‘¿ú€éYèöN$‡‹þ¶J’•< øåVêÏ "Ô·ÛГ=4Sö©2UAÃ(‰$uR=cü$Àª_ãWUfÄã nÊÒƒÒåÓλsrfÉÛíñsN%ðU¥ÆçœÍ‹ùfó +ß*çé£öõõµºhÇÃß_½žÎ cPºšàÞ£HÍåææqúŸ“Í¢Û÷Ý&ÍœÎÜvËÕ¦}.Ò ¸k½pCzø~¾[â뚸P5«ËËÕâxxæj‹ï±Ýd†Ò)—Þ±ÿ#¼¢SaAó¢ÛïcVNf&NÞ­Úýú¢Y¯—Xƒs«x2T|;:øj·¤ ú“³V3X0ˆ‰›¹­è‹õ»Õ2{9èy8>ݳ# ??×ÛùquÈâ½<.Û^¹¼ù|¿ïÒ ½>æû–ǵ¬ ïï¬6½‚ð¨ø<ß g ûFQKݸ´`Æ[-´Ö”gRËÌwÎêúê<ç˜tã÷%Û æ.¦O8c¸DQq‚‰B>!µË8Ö» pˆ?)DnìÑ>½×m>‰¸Õa ýáÍ:\T+•á[óCs|¢E€ˆ‹À-4ÙBPï’ 3l…ƒµ…%‚È‹î€"Ã.¥Ì\Ø?ýP“ùž55™¥ä¾´œÒÕdŽðËjV·eþŸè™µJ1ÉJ´+27¥z¾-³´º¾ÿCEæûÖ™E”9¼”S–•àPëÛBKcKE›[BkÉëô?T„¾oMMÑRp+ ™²žÈ¬å Eg™ùÁù-Œ2®Z2Wz¨£‚{¡J  Çka­ûyµ_®o@¢4ßÊ3_FU%|-|»ÚÍ7ë_1 Ĉ(›Mw5Û¬\mÖ×]·| \ykU¢U¢ž¿žï¯Ö»ù&GÖÛ|lâ#•MÕÄùæfûjµÏ™«»ì3 Ô×»5¦¦™rxFÅj ñ®õ¸V¹xÓ­w]o=Å -Z>´3žˆÅÆÇ÷²_O±S2ŠoÌm(ÀN4à{hË[ëñNŒÝiÞ–½ei £m¡3/¼·Žƒ}›Dl¡±àÔã&ÜGûعmq)»b†¾ñQ yßË:7…À‡¹ '6ùC¨ïEÑ1´º÷÷÷µòéæQ|,sÒO†2îQaÄÉæ/_áÂØùõ"sŸšäÑÌÑž…Û“WEûBb ΀ýí6ö/œè¢'V&==ï®B=Ü"6ÜDPã•65Û’þƒnŸÁEoÁ¼ÊëÐpY¶3ô£´÷!öχÎÜq{QuÇ~NÚ#[pJ†öXÆNÈÄû8nœy߆’A‡‡xÅG[ûǸ @êý¾wýHÜ8y½ËxP¤uüà(FOÒù.‹Øšºÿ,8’r¼ìÆ/{‡~ÅÅØÄ©>ŠæÁð¾_ºÖ䞦cgÕ¨—™è–8åø‹ŠžUÙUC:Ásˆ«»CVBè¤=_váë&Å­¯C S3˜§p 7;0)(züu„…0àüÍ}ØgÎ\ò¯0z¹aôÑ~­EŽã„1fŸ Ũ‹õô7 0Y2ÿa`0BßLœ<å$å}í£Ôp § g£öÌȹì^œ'Mˆ2åç?8ŠI‰öîíÓ× “ÜîÞÑ´U|O1ŒÒ®Ü[¸LÜÊ6ÚSŸ+ÑÌPèqÍS'1‡¸ xBU¨j„‚dr"VnÒB/* 1åÄÇ"·mÉáVÌÇ_Y!s„Òæ¿½*¾lKM§Øk?²€r(Dô•žœA“ªŒ;Er.bÔ "á!±àŠ2.£~½¶)?ùKû¡çzšO;i™ô¼wÔ,oHs0‰îëúŽÝ 0½UêÆ¥DĨhñÎ3| Xm!?‘;(»X (–ûPVFßø¨D9¸ « è£uÎÆwˆ<ÜÌC=úÝÙ×WTendstream endobj 278 0 obj << /Filter /FlateDecode /Length 4563 >> stream xœÍ[ëoÇúQý'„äË15™ÛçíM» ’ šØBúÁñ‡EѪ)RÑËq ôoïÌìÞíìrR-Ø“ó>gg~óäÇíB·ø_ü{yyôéKݯoŽà£ýëqükyyüâF_¾õâøäü(LÇBt 'Ýq×ê…Pöøäòèu³ÛÎÚ…nMÛ5«Ù¼](ïugš9Ñ­h[ÓÜÀã:mUs dë½q>}…ké[&Jï³Mÿ–¾·Öšlx6›Ã–°¨lÎaˆr°¶Ù]ÏpªÑb픱͒Ñ=Åû®“t8_×:8!­§¼mÞãhá½è\së i[Ë¿ ƒm+ó¯xT+ ÝŒVsªéis \ð:\Þ™VKÕÜ¥áýWñFlhÃVY×|‹8ašÝ)±X:%ñ¤ãeVðÙŠÎG®ñs×¶Ú5÷3Ù-d Kp&Ç4Z#9ò g7èÃ`q|:[y7“váï`8g+`Häù,cÁ¸ud®nßb;{sò×#¥üBvÄëä „ Ž3G¹ÓBE…[3¡ÀYóaÚ\¨…ÑÎ…Ùøü „9:ת[tÞÜuðSÒæÁCã©öx#œìø-#á ù‹Ù¼3¸£k¾ÆÏq›m8ÈðúI‚Æ]peá`^B¬a—YÐ0ØQÛÙœÁ?ÍF‰e#žÁjVÙæËô†A[Iùt¿NœÉ4»õ6½íé-ŠÌ6½ÑYø Ù¼ pºkú ŸÒú©Ó3îžM4?4i´„¿~˜…óBÇÎ)Wè92ÕHxôÝe€­¬l.¢Ê´®ƒ×ãO}FÂHÂäåñÉߎN>yÍ¥%(w§:ÚQ)ƒÿu˜¾Þ05§Nš{hÄŠ€‚FJÃWf긭Öñ*Κ 174Ð §”‚ÇMM· øsZÊfŸAW%¯é8ñ8VÑnLØÂ"ÎzŠq¿mBÙuØ–þŽ÷±F´zxèFÛ@ǸcWY¢È[!õtdã ¼‰™Ò¦Èû IwëžÉ“iç½5]|ae‘ÉËEºe\Z¨ „—éZÀ;Â4)Ö¸ÓF!æï:1ȪHqþaåtq­) ãBü.“RÅ´R '¬HŠŒ Úïþ´À¥hû/3îÁvpEÂ{tÎàÌ()áp-˜îª´„êšWpžD#ÞÁÍhÕŸá+Œ'â_Ü £Ñd7ŒF—cÅÍ<Ψ0K»ˆ_aïj¾Ä¶¾÷oF‘‰þAÛuƒ”[-L&Ûs\ÃÁ$úÅÚ`´Pß^àVÑÕ‰¬Šj•;Nøï`[3èàXb¥’|ÄŽIâ–Çñ)ˆÏãëð$ñœ`?¹öÜÚ܆5< /΃w è\ì¸"ôLâ‰@B÷¤ ù¯{‰ìòÀ0z…ª.¤˜’ŠMXý{7Ïçè3ß|¸÷l ödxH¿âÿ*À«A]Fv¢€˜ñŸsÄ ¦C‘Ê/¼á"œÞ.8ºV‡h@AÂ8×?Ë$û‹“£ïŽB˜e`oÝ_OÇV^»…·V×B+ÛÚ©Yýi67àLŒ‚ÎÁAIF#¹JäY"‰|‘H9®õÇôq>~Ü¥Ûê¯y[€8ÇÆ#ù<‘oÉÆö‰./ø´«ôõóDn«'Û%ò}ýçÕS²³#º›Ì)ùI"Mõ°Á_Ò'þ&Á;aBÿ6ùu ·R{ Or—:©šKƒ†¬æBŠÜ‡`.vB–è½3Í+ô ãþ{æ?¿ªÁGOe2×i\â]Ò !sXØLÅý:…‘Ði‚ûǺNž"Üõ‡œJ¼”Á;”·ôžŽŸ#c¦¼Ê©·#·2¯ŸÇKWäQ)çx’"-\°ˆƒo@qð ·W]ý¼Íç?Ž‚ -„íJ ]&ìb·Iä7Uôë«ðx“ȨôåçúvuŸXáj‚>ˆy€#ýº …Ë:}T2€ë*JTÝã£ê•®ZþÍþádF´Ýq·ð]›ƒ ‹NÐ.B³Ù­1â‹‚s}uCÛÌအ¾Yp¥ƒ{òª¤ÕÝlni‚‚O¨LFú§€gí4‚`8ÙsrÞ ¹“=’–Bæ‚÷!Ö6ZuÁ?„XÛçù*–3ê9nåã“<ާ™˜W‚è¨ó2¦)‚/›¹»Ó;ÌÎfÙÁ* ]‡óYg§âñÕp]ÌÙ€cqW–?½ÄÖÃÈSÊzXá²@z܇| ’‵ÑFg”žNeÐ*š&›É³@™÷o µ³„Z<‰œN„ML#l|f8vð^=æ@&”ýäÁ:¿{QXH`vZ:RŸ˜&s­äÙ„›a(x{b%ИÚú¯î²)£ÉÑŠsf÷c>óÃÌ)ÌXx*p}ÑϘ^˜°œY #l›§HÙO¤9©%z£§‘Ëäp}>:ˆž–pÒuˆÑ1ÎÞe¹íM ±*–û~f < úêƒZzÁóA@<>´(£^m9MYú¾&aßsùVaÄeiG®h,[=Qs`Q#ŸwÑmž2àU‡³ÔÃΊEosPx "$2A{4•ŒÆBX!4øÓÉ<â."|Ü!’\ —3žêãøZdAÃÂyLŸ…¶0„Љî’a¯Ã…çi¥䄲?æ1îî†Å}–—O9‚½‚P)0ýšÇH€9ŸØF•¢(lq—ýZcöLÖ“ÜOa„êa:4ôã}µ‰t>zf-‰GÎÐqßóÙxvŒdNGVuz èRФAv,iz†`þ*>ÐãÓ•ÁP™І°ç•Õ½\Š/Ú¸PÄ7>{Ãñ‰âÓj­¨D\žÖwl"«/ ù¤õñ0ð0¶Äw´‰Àëòê[?{³tò‡°©+e)«PëPËÈÂô0σ:ND¼C]Iä²Õ sÍõ,f˜ÎÍ|·äЕzo•=~U<{š²Š^|›Wº†ªcKoî ³xÐGb–ñáÂ2_…*³–²¥…%ИÕùMG€â’»Iåú'< âñ€\T¤UQÿeá7ŒL¦x¾$“X^Û¡®§›Á{jTæÌcëYê—×j8ß¾šÅC,® ;L¬FM§¨q†-EÆ›>·~Ú §ÁÓžVí /T¼Gùµ“ƒEÄ>gY)päø;ۼ郋ß|˜?^;¥²×k–Lãâ¶Ž~ŒUmì…²¢TY •š,t êÚFÑ*7aå§;Hxàq^Õ³UXT>/†¥Ú5¯îíb±¹msãzVñb¯¦‡Õ+_ÖôB ÿÍ9¿_‚ï8=«Ÿ¥!éd“Xš××Q?‹UŽÌpG³¢OêbXìƒÑ÷3×vp˜Â»yJî7³D+£ä¤s“…UÑ0IT2‹0³…™£»gµ3Þï›°ÓåËP3ˆè9D´7æQsû=¼p@.D{6ö­ˆ¬ÑXì ·6’£‹šžòloøLÙÞá@¾+Á+6ÆpˆÉŒqœµ§XQT(ŸÚV 5àµáO_šŽg‘P`Bz®êc“ÈÛêטñ#ú›*ù2‘ËDîyŸÈU"¯«Û­Ë±µó/‰ü"‘1Ë·—'k‘¯bÀW„ çU¨aŒÌPî„&éaNfÚ* ’éÛ0Õ·†GúXfÀÏèíFg׃&õ¬pTa}ˆe›žÐe¿Ø.|mA‚Ь=H±P¾í2«M½8”Àϲö¸„ní;‡ìÞu.2ÛiÎl‰-9j ï~—£ÓÞÓ Ùº03X'ÿ{¦A¡u´g”oÀ•¦"‰f˜2ývmö5‘WàÞþg¼¯ ݶ*VtQ«†UUÇ@¬Â~jH‰~Í?ë%ëAM)Ï€\”w<Ö+Z1#?È b©)7|ª!´Úà‘+J—f§‹Ù9Žºä ZS!eÐäÒM;Ú¢ÚEÍ^Vg=:ï:rËqbGí%e…Ñ­æ õZK…²F˺¹$çËbÎÝI‡¬ 9;8ú)!Ì«õùÕx‚‹DE³\ü Õbý ~Ädí=`OMXñ±DʺL7%–î iOC#“öcG!HÆWYcq”¹ßÌ-Ûˆ'o¤À”‘¦,@(‹z¬N×&òu"E"?K¤LäXÞšjùæÉêU™ðw¬ ½èÏVÛù?îV×··«ËÓÕ5¼‘-]`#Hß__@ä$\(g½X]o.¶±XÑé‹ë~ ÓOïh ‚/«ËÕöPÍëµxö†VhzSxN3”¿ ~JZ1|΢*T¤SÀðȦ+¦AÌ®hcܸ:$¥_ËßzÃ_Y¥“{Ze¬Ò|IC¹”oC’³ ¬eŽáWTDkIY ]ëÁ:Ô‚%)øt<ç7ÑiÎó tLãýDr™áú;rÚ•5ä<ánêPe†@ Ùß%ûK¯mÙØ0‚Èšu OôsÀ<º,Ôvgö“»ý=ùN­×J66ó² œ­Çý@w~ ²çðçIŸË±y¸M?ˆˆXžM–ŽçC³’L­¸018^}úíÙKé¹,C½Ÿ5¢óÎOd29®Ù50¨ð8ÃÕ^%¯ªîڣʌFðs`”£,µ'õyf¯¨àfú4ö7oÂÔΙ¼ÌÃbýQ@.ÃXϲ"©ìáßþд¢ÍêQú»ßuNжLëpýc¬±c9º|w²ò­ PÂeÆ,ˆá!ø"t®wN5¼?hHµµ“¿ø‰|vB6σ‡=ï öPú`gp N°* ~ˆÏÒG7Â4*úeªtn-¼Íà¿PûCé¿©þ™þ˸ųäÊ”Y%™7CŽK ®Éפ±õw[g☴{äoÒ~›F*Ùz„×Òúx¤X ëb ©lÀe"/¸÷u¸=‹ÍºªØkY¥Æ Ö´É> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 280 /ID [<2d4bd776f931e87f2312497d441b01c3>] >> stream xœcb&F~0ù‰ $À8Jaò?ÿ­@6{(N_©ÆéÐ'ÿ3(±lÆæ=ÏÑØšä]ÿí@¶(%‚Éç R¼D ý‘œ@$#˜Í¼DÊÇ‚Há4ÉsD²DƒHA. ÉÈjb³šƒH‰°l:ØÌ ’œZØTA$—-ˆä‘Òy ’i6ˆT4‘b¾`Ùb)wì†'`ò%È–VˆÈ 0ùl£=B„kˆÔí‘ìÏÀ&ÿ“‹A$_&˜½L ÝÓ &W#Lã¿Y¿*§ endstream endobj startxref 193408 %%EOF surveillance/inst/doc/surveillance.R0000644000175100001440000002320212617067300017326 0ustar hornikusers### R code from vignette source 'surveillance.Rnw' ### Encoding: UTF-8 ################################################### ### code chunk number 1: surveillance.Rnw:54-73 ################################################### library("surveillance") options(SweaveHooks=list(fig=function() par(mar=c(5,4,4,0),cex.axis=1.5,cex.lab=1.5,cex.main=1.5))) options(width=70) set.seed(1234) ##################################################################### # create directory figs if it does not exist ##################################################################### if(!file.exists("figs/")) dir.create("figs/") ###################################################################### #Do we need to compute or can we just fetch results ###################################################################### CACHEFILE <- "surveillance-cache.RData" compute <- !file.exists(CACHEFILE) #load computed results if(!compute) load(CACHEFILE) print(paste("Doing computations:", compute)) ################################################### ### code chunk number 2: surveillance.Rnw:168-170 ################################################### getOption("SweaveHooks")[["fig"]]() data(k1) plot(k1,main="Kryptosporidiosis in BW 2001-2005") ################################################### ### code chunk number 3: surveillance.Rnw:263-267 ################################################### getOption("SweaveHooks")[["fig"]]() sts <- sim.pointSource(p = 0.99, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) plot(sts) ################################################### ### code chunk number 4: surveillance.Rnw:360-363 ################################################### getOption("SweaveHooks")[["fig"]]() k1.b660 <- algo.bayes(k1, control = list(range = 27:192,b=0,w=6,alpha=0.01)) plot(k1.b660, disease="k1", firstweek = 1, startyear = 2001) ################################################### ### code chunk number 5: CDC (eval = FALSE) ################################################### ## cntrl <- list(range=300:400,m=1,w=3,b=5,alpha=0.01) ## sts.cdc <- algo.cdc(sts, control = cntrl) ## sts.farrington <- algo.farrington(sts, control = cntrl) ################################################### ### code chunk number 6: surveillance.Rnw:391-394 ################################################### if (compute) { cntrl <- list(range=300:400,m=1,w=3,b=5,alpha=0.01) sts.cdc <- algo.cdc(sts, control = cntrl) sts.farrington <- algo.farrington(sts, control = cntrl) } ################################################### ### code chunk number 7: surveillance.Rnw:397-400 ################################################### getOption("SweaveHooks")[["fig"]]() par(mfcol=c(1,2)) plot(sts.cdc, legend.opts=NULL) plot(sts.farrington, legend.opts=NULL) ################################################### ### code chunk number 8: surveillance.Rnw:418-420 ################################################### print(algo.quality(k1.b660)) ################################################### ### code chunk number 9: CONTROL ################################################### control = list( list(funcName = "rki1"), list(funcName = "rki2"), list(funcName = "rki3"), list(funcName = "bayes1"), list(funcName = "bayes2"), list(funcName = "bayes3"), list(funcName = "cdc",alpha=0.05), list(funcName = "farrington",alpha=0.05)) control <- lapply(control,function(ctrl) { ctrl$range <- 300:400;return(ctrl)}) ################################################### ### code chunk number 10: surveillance.Rnw:461-462 (eval = FALSE) ################################################### ## algo.compare(algo.call(sts,control=control)) ################################################### ### code chunk number 11: surveillance.Rnw:464-469 ################################################### if (compute) { acall <- algo.call(sts,control=control) } algo.compare(acall) ################################################### ### code chunk number 12: surveillance.Rnw:481-486 ################################################### #Create 10 series ten <- lapply(1:10,function(x) { sim.pointSource(p = 0.975, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7)}) ################################################### ### code chunk number 13: TENSURV (eval = FALSE) ################################################### ## #Do surveillance on all 10, get results as list ## ten.surv <- lapply(ten,function(ts) { ## algo.compare(algo.call(ts,control=control)) ## }) ################################################### ### code chunk number 14: surveillance.Rnw:494-497 ################################################### if (compute) { #Do surveillance on all 10, get results as list ten.surv <- lapply(ten,function(ts) { algo.compare(algo.call(ts,control=control)) }) } ################################################### ### code chunk number 15: surveillance.Rnw:499-501 (eval = FALSE) ################################################### ## #Average results ## algo.summary(ten.surv) ################################################### ### code chunk number 16: surveillance.Rnw:503-506 ################################################### res <- algo.summary(ten.surv) res[,5:8] <- round(res[,5:8]*100)/100 res ################################################### ### code chunk number 17: surveillance.Rnw:519-539 ################################################### #Update range in each - cyclic continuation range = (2*4*52) + 1:length(k1$observed) control <- lapply(control,function(cntrl) { cntrl$range=range;return(cntrl)}) #Outbreaks outbrks <- c("m1", "m2", "m3", "m4", "m5", "q1_nrwh", "q2", "s1", "s2", "s3", "k1", "n1", "n2", "h1_nrwrp") #Load and enlarge data. outbrks <- lapply(outbrks,function(name) { #Load with data eval(substitute(data(name),list(name=name))) enlargeData(get(name),range=1:(4*52),times=2) }) #Apply function to one one.survstat.surv <- function(outbrk) { algo.compare(algo.call(outbrk,control=control)) } ################################################### ### code chunk number 18: surveillance.Rnw:541-542 (eval = FALSE) ################################################### ## algo.summary(lapply(outbrks,one.survstat.surv)) ################################################### ### code chunk number 19: surveillance.Rnw:544-549 ################################################### if (compute) { res.survstat <- algo.summary(lapply(outbrks,one.survstat.surv)) } print(res.survstat,digits=3) ################################################### ### code chunk number 20: mapWeserEms ################################################### getOption("SweaveHooks")[["fig"]]() data("measlesWeserEms") par(mar=c(0,0,0,0)) plot(measlesWeserEms@map[-c(1,5),], col=grey.colors(15,start=0.4,end=1)) text(coordinates(measlesWeserEms@map[-c(1,5),]), labels=row.names(measlesWeserEms@map)[-c(1,5)], font=2) ################################################### ### code chunk number 21: surveillance.Rnw:595-598 ################################################### getOption("SweaveHooks")[["fig"]]() data(measles.weser) plot(measles.weser, title="measles in Weser-Ems 2001-2002", xaxis.years=TRUE, startyear= 2001, firstweek=1) ################################################### ### code chunk number 22: surveillance.Rnw:606-607 ################################################### getOption("SweaveHooks")[["fig"]]() plot(measles.weser,as.one=FALSE,xaxis.years=FALSE) ################################################### ### code chunk number 23: surveillance.Rnw:625-642 ################################################### ##################################################### # measles if(compute){ # algo.hhh cntrl <- list(linear=TRUE, nseason=1, neighbours=FALSE, negbin="single", lambda=TRUE) measles.hhh.neF <- algo.hhh(measles.weser,control=cntrl) cntrl$neighbours <- TRUE measles.hhh <-algo.hhh(measles.weser,cntrl) # algo.hhh.grid grid <- create.grid(measles.weser, cntrl, params=list(endemic=c(lower=-0.5, upper=0.5, length=3), epidemic=c(0.1,0.9,5), negbin=c(0.3,12,5))) cat("running a grid search for up to 900 seconds.\n") measles.hhh.grid <- algo.hhh.grid(measles.weser, control=cntrl, thetastartMatrix=grid, maxTime=900) } ################################################### ### code chunk number 24: surveillance.Rnw:657-660 (eval = FALSE) ################################################### ## cntrl <- list(linear=TRUE, nseason=1, neighbours=TRUE, ## negbin="single", lambda=TRUE) ## measles.hhh <- algo.hhh(measles.weser,control=cntrl) ################################################### ### code chunk number 25: surveillance.Rnw:679-684 (eval = FALSE) ################################################### ## grid <- create.grid(measles.weser, cntrl, ## params = list(endemic = c(lower = -0.5, upper = 0.5, length = 3), ## epidemic = c(0.1, 0.9, 5), negbin = c(0.3,12,5))) ## algo.hhh.grid(measles.weser, control=cntrl, thetastartMatrix=grid, ## maxTime=900) ################################################### ### code chunk number 26: surveillance.Rnw:686-687 ################################################### print(measles.hhh.grid,3) ################################################### ### code chunk number 27: surveillance.Rnw:690-696 ################################################### if (compute) { # save computed results save(list=c("sts.cdc","sts.farrington","acall","res","res.survstat", "control","ten.surv",ls(pattern="measles")), file=CACHEFILE) tools::resaveRdaFiles(CACHEFILE) } surveillance/inst/doc/glrnb.pdf0000644000175100001440000045026512617067301016324 0ustar hornikusers%PDF-1.5 %¿÷¢þ 1 0 obj << /Type /ObjStm /Length 3844 /Filter /FlateDecode /N 79 /First 651 >> stream xœÅ[[sÛ6~ß_·mg§q%¸³Ó™ØNœ›SÇv·<0ms#K®.©³¿~¿/’MÛj;Ž"¾s$Y̳ ÓLÇ SN2ˬŒY¬̱÷S–º„‰˜ ã?Á„J%.˜0Êá‚ ›j&ð/Ñ7™Œ…ÅM&e‚N “Vá¡cÒYôO™1bl¥“Ãâ¾”L+ NÓNâ%ÍŒ=i˜±)ž[fÒï5A÷Ÿ2eVƒŽŠ™5àK ÌHƒ(¦âR„%±Â š%Â9¦ K”J˜²,±)朰$µèç˜S˜3º:‹ ³4Ž©TÅ`N²4±`ó¥5Lkj8ÜÁ¤cåp³ŽÁ4Ó$.K0ߨ%¢‘º˜’` zFP#I™Œ„P4]4tŒ; ,ˆ7Ê"„¥èP΢£å€p (K‘B*´@$1LBH×-­RYƒm4 QÈWHgHTh¤ô(+k‚’¤F L£¥p?ee°  ­½…Pi]UŠà*eÈ PÖ1A”5(±$¡†,e­$  ¬¥NþñŸÿ0~”/³q¶ÌºÆì„ñŸVËI1ÍÀ¤¿>Î.q¡ÃÅÙ·›œñ}ôŸÌ.Ù?zÏV˫ٜ}÷=žÌólY̦Ù2gßüÂ2¸±€þ‹Æñ?«~ôÎAöµ³£ˆ½žaLJÇóÙx5ÊAêðø-;¼š-–‹Ñ¼¸Y²41:œ®>ÿ7-=½³b9µý£‘|_±¿?[M—¤YüMqƒJÒ\ÿ?õÿ›pm¤¯$|6åwè$dx Øò¶ÿúT /ȳÝt:[Ò˜"Hß…\ ˜Bix–B© _að4Œ™ÚjýÙt™OASØrAòq‘íÍn1 Ñ3©‰ ÆN‹Ã|"†æx¡Zá“|1[ÍG`‘ø{~»<<]Ò@‘B‡3’V) ÿè4_‚6?>x9æ·KýñÇætÛ’6 QÌK˜;Oâm†¶ eǃ|±¬‚Ÿÿò+)bäÀ¶T.Š¡àÓÕdBÌ¿£ñœª êgR·\ìWÓ¥‡ÁòûžÜeè,Ãð2ˆ_†©ª0G䨂øUKé —»¸V ykýqדÔA:ÌU‡¹j·aêé3ØŸMfóÓ›l”“IõÖ“2¦1)cŸ2)»iôNù·¶Ë¿Mü[÷þ÷`Ü`­c³ï/dŸjä—FÃC?#¹YmðmkäŸQCODð(°ð‘„‰‰`yê0KÏÄÛbú¥bÈ q­•µøÌN-†M‹aäc¤uŸÍ¯³ Óñ¤ÄÏÞ°å|•W½×ãU¯d‹ÜÈ>9Úÿéí¿`íúMG³q1½$7¸"´•Í™ ,BôÞqÀ- ³6M¾ léZ’4°¨ÆC},ÆË+B¥óeWðäþ·è IÊϦ·¨ï§Z_#Z«áüöÍ˼¸¼ª.13Z‰ïøÙ¢žÿ¾Ê&~˜ßÐOò‹ehÍé~3Y-øòÿ_>Ÿ}ï¡êIÿ ‰Ø‹IvIa‚È^ÿ,Ñ€ŸÂÃÅ$§ðÕ®Ññ.»Î;ëõ !F1z6½„ ù£b±Àêy9#œÃÓe~ý³w•h¬aN?¼>>ù£W-̆!Âx{[®§w×»ý“¦iõC1jŒ*ßÔ¹P¡úHCXÛDš¿¬‘vÊG³ëëŒ_fôÿ>åÀ_þZf;¤ð Ɇ§ÜTÃ:Hµ×|(¦b1SïNÎ^¾ÿôOiaªrs5¦6@*í@Š´h¢¶è}×<S”dt×Õ"3i¬k¸¬×“ÈçÅâËu¶¼âù$¿Æ+|’/Þ¨4—V$Û­=KTâ‰w–Öu—¶-úÁæ"º´g‡GGÇïÉÑ;õÒº¸»´ݻĤè¬-Á¡‹ •2>LrJ Uϸaø)ʸ}*‘àÊß-ú¦žC?²|7P‰Ëo2ä>EÒšøxѳ'Nû'”ËØOêi‘¥"˜~íE—(ëççß7tù|²q:žC9¿®¿Ulêû~bt-£$0º_=§ûЬr%Gu†¦oúxÚÍñâø¾óßãûü€¿à‡ü%Å_ó7ü-?âïøOü˜ŸÀâñü#Ïx¶äŸùˆŠùhu}1Éoa '³iiÇ|\äó|Q,xÎýH<ŸŽ³ÅUé—/øý+¸ÿ÷5爺ø%¿âWßn®ò)/øaP'üFuŠ žÏ‚/ßâÍ¡®³qpê¿óßW³e>þ< ÏüUhÎaŸùu8]ä_1Т¸å‹ qF–{žç|YLƹ Vü+ÿƒßòoüÃã„t)ˆYæ†P¡‘zåo+çPå7ƒíúÁùû“—/Aÿ쬥ýÐÓé³é¢Xßh˜xÝ·ªg‡ T‚k|<@;÷îû´”Ê_·Ÿ´[ý77ÓÜ|§;Êv »þtçÖs\Pþìk…ôhº1,QK™Ÿ—мE…£¢h¯<túóÙ¢W0ß šCÍ/ù²¾vx0êªýl2Éæ¤ô¥žoÐiò¤A±Wןóù¢¸œÞ«Þ4ù-jÔº­Âmåíª®L+ÕUª£»á©!·v#²$îjnG³ºª›Ý6–©­Èt'(²ÛæÄùy¹¬Z˾R?{w~üþCïSµoRkÓWênr(ÄPç®’Z1¬ì}îˆæÀ¯+{8G1¸Î_ÙšbâC$§Ò»Cû“Q$÷L®š¶htºV"ŒAß© .¼âL›”QÉ_—÷ûqËKÒîAC±ÈCÂ;¾õ •A Æ@üÅ6O¼X@ø¼Lj”¶€I±z LÙËð0¥h$îz”¤Qš¸ì€c¨KA4s}rí«)麵©¨ÆPBIÚú1è´&b¡‡•vΔ•‘µzÍ”³‘Nþ*¦lœF”™v˜RBGJ¹š)„…•»þ^¦Ò$ÒÊÔLi)"©wÂTH×L¹5OU%]KQÆÜe*‘¥`;‰#ë@'„1¿=ѶÔ™JûLI­"*­t1%Àk ™$ж-MdÉY9ávÉTµ±Ñ•U‘–=QIa"C¥V…¯L©ˆRmL$Cû'bJ§6J’.O €®ÁŒvQ’Òò%PR ­‘IÍßÔrÀ,eÅ”ŽM¤uò@¦j?þñÃéû×Ç>óoçIUþ©½wÜ3ËÊv7°=ÌyWYð€ò åɃ{÷ÿ¬ÝeùÎpàQ)ïÆx·*ú\ÒÖ.YÌÖ ~]LW‹‡T)˜ì§‚I ºµãî apopÝøåÁÛƒ‡¾†Ø†[U’º«¤\orèV‚E(gl3‹Ó>6 ¡ÃÆ›F+ï $7ÿ­+=ÑìÖh¤NŠ ÞÅUm*1wœžoU†nÝ×È’b£vE‡”]7uº™±m——m™‡eÞ†srs•ñÏ´¯1*S­ ¤R_²››Œ_¯(º¼Î/³*Aª«Ðü[»mï¨CÓÉ­=”6önJ; \±Ø^öPzúþ×{T={5¸b¡mnyvá1xUqÀ‰ÂÚ¨žÖ¨ÒþˆKü^›M\ó.]¿‘P†ygŠFÔ6´è›F¬®«Ñ%œ”£ó;”rÕ|"ðÂÄ=àÔ([b‘bž iŽhãOØ~1ð9 RÝ «³ýîP’ÓÎnn*–iŽOÃo;(ŒëÝÔ¶³oÈÊ?ö§›ˆ™uˆœ4øí¥m‡âã’îßöö9!óüöiµ4-{È|L-m±»ªYwUÔ6÷l"÷¾7·Ù¬­)vÍqŸVG;¨+iÝrø‡víó*eÍêAwÜU;£¢ø hëÂY«lVÜn(šÝY2CÈÛVÚ8<¶bcͬqF&èlO‡ÚZ;¸n–ʨð‰ôÇL§²N«Š2~>тɸj+&eÕ6tˆ4´Æ*Sµú m*­Ú’{6FÙõ: “ÒùNätDU#CÒtðV!ùPOÊŸpjGØÈ‘·A&$RAg}Bkq¦îÏηÔ#t &¤¯ÚFäý:j:4J™ÿßU#AøÅt€Ö„*’Àj::íjÓˆ:ßËÔoЖý}òGcL¬<&ÙðóÉ×|YŒ²öf“q3Ä/Ñ~‡—é§ ±‡½öâý›çT|~ÞÎ2*¾>®ÔÚLwŸÉ¹¡I-mΚN(E[ÐnèæóÓÿmÂv½n% zsþù¹¸¼lä õeéMö×¾ƒ¿±XÁ›ÐiÐq±¸™díH+5éö€Ÿ 娀ѵٽ“'õðKD¡wü't¾=mYå vZ1QÙàÛì{í4x =óªM»UÛ²ò”ߟe R)dîTÎ¥^&t$×2‰”f¡ê¤&LÓ„¶Î‘V©ýnBÚFÍ‚UGlÿ¢C£›åˆd?¢ JŽ*‘‚<"ǵé:?úæ9mÆÛ¡‰§ëáÛvÌè¡&Ì ±á°R;:õ—µýè…jõ’…¯výDŸ*HYÓÕúÞ¹„–(ê¼Û•=\Á¡¹ÂÝ£ì[ƒ²¦‚׊ÌOqÚø~¥~üŽÝN¡Ô:¶P tÜÐO€\$FB´´¤PAó2Ú•®bºéL+Mlœõl'ÔP²îk”Áux DqUÔ¨[Ÿšé¨ê¦£ÈˆÎf¦Ï™¨~_³ÈåăŒE,RoJ|WÈôõtæ ê ü‹¾¤N¦…_¯üé _X§ßÌ•E”CŒ…Ÿ+ìpnødA逥‡hë@$EÁC‘ôÛ»Æ)Nú(+Ïj†¢¤/l±ú<çfNÿìg¢ïendstream endobj 81 0 obj << /Subtype /XML /Type /Metadata /Length 1534 >> stream GPL Ghostscript 9.10 () 2015-11-06T10:11:28+01:00 2015-11-06T10:11:28+01:00 David M. Jones CMR17()() endstream endobj 82 0 obj << /Type /ObjStm /Length 2930 /Filter /FlateDecode /N 78 /First 695 >> stream xœÅZYs7~ß_ÇMm÷Y•J•o;>’Pvâ$¥šI³¦H…C9öþúýsp†GL6˦€Á`Ðî¯Ñ0É¢eJ¡pLkÇ¢gÆâ)0g-‹‘yzJ, %I–ŒgI1%Ñ=i¦´±hcÊDÃrF³ä˜òQ±ä™Šß¦Rˆ,E¦F¿Ä´—h”’)1ŠTÌSx0ÞIT 3 ”´ÌÊüÊ1«†”žYçé«ÀlÔÔ'2§A@ÉÄ\Àð4H(Å\ `XiæU W†y𹲘›¦WŽyŸ;{T ¸Çƒ÷#+Ì?u•˜yÂ’À¾ ZSE³`!ÈG}, ÎbÈ3x ú…DóÒEš·Ò‘EmÁN,‘!X h´@B„,c$êÆ@Y̶² aHü¤Ò‡µT~< h iïiÀÑ{ЂSRT!Í‘óÒ@Ê’ H©,eC\ï:µ‘À]¢6RXÀàÊfIÓ"'Az'¥ˆ/I”„¢HŠˆ«,J¨F²Ô¦r$gí1)BGJ°„©Fc9Ò™#­ÐT”×ê_ßÏÄ£¢Z²?Y€GL¼ûýÒ«Õ‘+Ìv5²c&^Ÿ–òÜñçñ¢˜-™ožÅGêú›r9-Ø¿Ñ4-/ÊÙxQÕwì‡úÔÒ&5m 'à ©¹Ô¢{9bãÙ {úrtor>^,7HBm›3ô†[½>ð›¦Ð|8Ÿ-ó齪X.ËÙÙŠäýÙl¾¬ˆ¨­'@ê§4è#Œ[‘I×£½*NÊñƒù'ô']rœ@m‡»8îihŠj~µ˜#JçÓùâèr<)2œrÇŸ–O–ãe‘q•›ž€hÆV3—ùä¨ ¡ˆŸ=ÁthÚÇ`ÕÏ—Q<+ÖÄý¦øŒC wÒŠo›ÄÜ@bÊjrUUå|ÖÉêÁ|qR,š¹«,¡ü ð;^iO¯È'É@ï­C¹̨˜äž¨%f4×°\-%—p$ÖZž‡?ºz¿Ì³|YÎ>´3λ=K>r —¸ÆA›š­ŒÜÀMé¸ÅçVK®j{¦ŒÔÜÀÿ¶Lm¹†‹ý6LY/99ÙuI9Í=œ´ šÃ8ÁdâžÙD &ía˜2Êq ŸS&Qúk0Õ·²†)ŸëLý ±­eʪÄ%º”) Y½RŸµžÄÊo£>°X„ò Ly¶àÜ è I•>ó LÁâ ½bÊ)ŽÜæz<«";vñôíOŸ¾üÏÃW#$\âñl2?A<Ê©AíþËEµ|ˆ°ˆ\°`x²(/—óe“¹ÓËqÓ‡’µy"¬Zú5¹ßÊ“åy•[Ê©ÿdŸÃ–›þóšxò1×}ØÙÏ"»qìVD鯮k­y±Úu-÷t±æù“AFDen6GÀ:|WŠcù“x8¾|V”gçkˆ×‚D¡óßâg1oÄX¼QˆSq&ÎÅùçËób&JñALÅLÌÅe±(ç'⯫ù5Œ"¢Kq%>~—Q“ ÝÓð.âÉt|V1[ ùA›äwù qs\¿|RN $ym6BM¯ÇÅ:ž/ÇÓrrv†È+‘f”¼³³¬<æ:‹£eqñk^+ôÔÛC†x×Lv¼ ºg¿üòöõóLL@×A‡Ìu}hJÝ×P‡{|ÿ_Aíèw?ð‡íl„·`Ä®aÄì‰Òàº&¬w}MÔ&@±¨úp1^ž÷Ä.w(°€ŒœY“wX—÷P{Š;¤ÒÞðÏ^ŒÞýHÆŸnc~ÝÕ¾GG7 ¡KXÒMÓ§Èû[¬c] © ²ÙþdGÊØô þ.Ó¥í‹Õ·I)·lÄDŽ~\È={| {ì[ã)üþÊá_¶™Jß2U²»-“^F …­!¥Í:¤ T¹·]Ú/»ñ¸%9~ñüõ›_@ëÍ›}qcìÜl¤ÉH;öÃÓ¤Çú¯ljwõ“[ž606 ,{½å ÜÖïË˼\«ï7c 4rÿc =ðo^ë>²Ÿ#×ù éùQ“댫IY.ËéIѹ>1^"½_Œ'EÎfr­Îf¨ú¡Xvͨ×/ZSéÒ¦ùt:^Àn2¢øëjÐ±Âæ1›±Ù«µZ1VsÌ^K+7>}`ÎÇ ¨ï¹Ê1¼§˜Ïü´¥ë æïÔÕÓÅ’Ž)0ƒœîÛð´ã˜†üc}aÆrƒ`ªUâ VM<ÒEŽÃhiǃó+¦lâ·»`êæÞÇJò6ðwÊ%|+ÍiÿÛxÉéRÏA$eµç w|g×£³€˜1&áA1e¤‡ÄïøuÒQ`âá«{„]L:¹í1•"×tð~{¦ná<r¯ܬjÄÖ¿Yeú¹†moÅ]'ר˜æ€À ûsŸg¾ÖØ­wÁsç*Ó²öÛ¾+ÎÛ8j“G ‰HÌa×å°‹õi8нm`ÝÕ8í Ìòô´€£"Ïôg-¸¬´ãV:Ænú–üÃÁÈp<ºB´ºÐr‡\|]¶óvs{×á®DÁ§©w4µÿË3zendstream endobj 161 0 obj << /Filter /FlateDecode /Length 5069 >> stream xœÅ\I—Çq>è6öè{üÐ¥ÜúbK–H[¢ÀÒAò¡1»8Ó ¡1  ‹ÿºcÉ%²º žígâÀBuVfd,_|Y…¿lÔ¤7 ÿ”ÿ_=]üü¥I›»Ó…ÚÜ]üåBÓ¯›ò¿«§Í/^㈼Ñq2Ú»ÍëÛ ~To´WS6z‚šà‡§‹?n__Â¥RÁ¤í=\j¸Ly{s¹³JO6Çí-ÞÍÁi·}îýòêr§`dÎ:oßãµÊÙD·8µÖ&¸íïûœSLð(Ì r¨´ýŠw:Úí^Œx¤ÛQéí]ikã0Å$,=öNŠq¸4þÒöMú+"˜ ²ùq+¨•­ÏIªæ%.˜² v»£©†±ß_?Å ì©I…7}viûÃ¥7“ÉmÇÉ…²Mï³Áé«6ÿóõ¿ua°µ›ÑSÖ!m^_ƒÑ„ÞNBûlŸ`ÃLPVÙ,g'óØìCð ¹¹I,!ÿG$xN¡Áq°†»rº¯ú(øÏ_Zð7Ú{ƒ.¸‹zJQç ho²œvòûˤ'¥2+Ëf£À8(‚R:g¯aà¯&³)3جC^©œ£}(e”3Ú’AÓ ÒöOø‹VÉÃÎ嵜’•”òÚ±í&N¼¥Îà `훬Í*°ÌÚâ3•‘¶šTseWž÷âù8y£…à£'ÿ‘D1ÂÂbf²ÞXW›>óöO—}ÉòdO¦It}ògg2 ¦È€ }jØ•Ð?ŒâC´i{ÝUúP«ÝE½E÷ E¸}?<+&•JÄ)!(!̾½D£㤠Œp1iãY¤ÿÂG‚R–Õ… (>öÉÇU¥Gˆu—t®¦ÿý œôXg¿n`Íbøè˜Àh:M&ùÜ$mq »¶h:4ZÔþ—Ë2±lðVÚOØé]Ÿñ} ˆÒ°w ‚&½egB¦‰`<KÐg¬‹,·ll£ÂöÕ`&ÃbýµÈ> Ùi M ã˜+1æ4Ú}—¦\r @;³þþã0<ÿ÷š!\jþ1Èð0(ä==™ß?V͇5-|‚a’À–úÃn¶±åøzQb3Åí7Í›ì‚øÆÂr‡p¯ü8‚áÎåɃŒ:+>$³èsvŠ_¢¯¤` $É‘ ããö[)#'crcWøÂ}G¡«à°NQfôþü„2#H铜ô—b¦…”㇔3K ¼k}no?¡5f[å¬oašG‚Ë{#æjð?4f°”†E4âx­<2 /2ÌC ͜ܜ9  ¤6ó¿QM6þˆ?ðX¹Òü ŒjGêIsŸk: B'/*ì'pœæ~JŒÐLl¬3[?‚?bÞJ-°½Ù!—2© á?:âœ%®§àp°%Jc\au ev‘"eÈz»¿bàcX9†WvZ¬ ±#•‰„Šº^‹‰ïibçÑ9c5Ðà¸Ý?j¥pÿÄ· \où:€²È€×¹ç@§4D™xðămò—a¤TèwÁÊ42Ž*x¦HݽMN™%@ŠÊE¾m*L \GDz˜E‹±dtH«ÁÝœ)6@Qc﫹Pô‰€ócÙ¦vr‚û&¸ÐÎsgõÉä€s=­OvÛ'{îF>´¡RK<—·ÑË­mŠâVzŸ×X#ÔD¾¿$0¢ëÕ]»:¶«iá×þÄ»vuhWo.—<°.¿c‚P<ð–¶ç"¬ñgrœ¢ÂÌJ—àÙ%G¡á?ÒFƒí¿%ß *;À¡R);0à«ãs÷ìÑy`,Ð'á“{ÖkL€ÅE† ~DÙ(iÌŽ7ÝÌwÄÂDØð~Âúâ$Ö–×”Ó¬!3áÚAGΑ¦>±— ‰‰@ˆò£/5·)º€õ¶wB ƒñ©à¹©=•R¼?17Ñ €;|ºmäš— ” Šë /ü-fTe±å¡Çn=«/ `Àc À«%6\W›ZýÊdÀh•›ï˜B ê(ý×ßÙÏ\äa¤dÀÀäX£Â0Aàß°þs€ìõÛ—d‘-àIFÄäÒƒFPbJUdrˆtÙérM–þDC¦î!$àèЇ~nà¶ žp⻈¤oûÌ{rœ òq‘:2Ía?á¡Îl¥Nwå¿GÏß)µ2:µ‘ÈEwuשTî,èÖ! lΩAÓóp}hW7íêaêúÕ~ô®Ä, ðÌ\—è+欪rZ`㓎sp”>É%'ülmˆTsŒ%%çë?s¡ÙîA¡yß“Èc¡ÈºTAÒ2\¾(æÓ@m€ƒ‚w#ý§_Ãßœ {LˆK.8ønG±âƒÏ0Ö-ˆ5Ï›ú0Gšêz¬Nlx§b…sÚ—p´7‹«IÚÿP¶«²€ü›åè·©u”|€zE,x?„E(m´çîÈ¡¢A3C`‰u:ê ¶S‚»3”w|;V2ì”NÙÆ„„’wýú0¢pûÐuþØQx¡ÍËoh¿?¢Ç5gÈõw›È¿ÙŽeƒ¢ö:B¶F@q·¿¾LvÂÔŽ[ÃQÅ8·Í¸i-uLõ”[ºÈD9䌪Ôç/dO(„OfÆQäÿ˸&æ©î? ˆIµÐ×0³f—ø–ªÐ5šˆB8½5wg9Jü,ç—}²Ûî:Íùl›%? y ±oüöâõ?ü‘:3…¾¬b·#ø/%öïC"s;ƒ‹X*Ì:­Ã»2à*É–„Äè¤ ™$|LH¤Ê0‚L {v™õÞd–xmÂØ\ÐíÔd`PSwˆelC ¬µØ=ƒ@ˆ*aÓýI¾-Æ QVÄÁ¼Ðg›Äâ¶tvV0'æ¿oFêeEQz½ faøÛ^³ )Î@£ê™£T·O­ÁS`RdÌ¥&OcÔÊÅ9yÏñY`È{“òz!eu$­òy¢œS·30ùIÜè†â É€tˆ÷Vå­ó.ð vÇ+]¸^ &Ô|¿@jŽ¢j[ #=5-¼¨çß%±28¶kÜûÕgòª— ë´*V6uþ#8ƒw×vûg– œOËbëJ€¨0¶ÌÓŒk™ˆÖ³ìVr”gÒëØ¸!ê(IþÌŠÉDlH¯§˜~稤*àÖ¼7Q2×QЇFoš³ç§ÈT¨Ý)öðÍy…JØIL¦ÆüL¨=÷Eb@{cªÁVFÖòxljªŽ•à[Švû Ö¨vxæFe"lôãb¥Éѽ8 ­ð¸+ÐW¸ˆ OÇšÅRæ~1ºÒ˜÷HÙxBhd¤ž;Š”Uœ…ÔžalXó79y…Çuôн¤¿‹¥ý….*Ʀ8O£¸ öªÞ4¶õ‘oâ™Ì«¹·)ƒÄ?éoËdJÏs¦ux(äç9“—É®I{ žNª;{Ü ­ iòØäºB‰‡„LgB¢0ÙW>O|«Ê¨ç2æÀ'a  «cÌ@ÕzMg Fðw<žÇ㎵õˆ-Údµº™IÂ/š³|&uª6ß·mî&ÓvHJ§uȜ߼¢f¥¬à…·i? ÅØÅ*SÇío: -`¸Â:G(ºúW:(­Tgé‡F7EÀkOÕbWäGXÞêí7³˜;'\¢4Ûø€Áá¹S2x(êdXGï% 4}™¡ûkç‡35Š¬Ú¹Ÿ µó–²”©?GØMÙÙy5÷Å}¥ârìÕŒq ñËm¯O7¤=€·ùÿêGƒ½ˆ”Õg¥×°Ú²/*O yK¢¬™¥o=õlvÓ¹¨lN·uWŠ¢eÇ7#Ðe]`‘Že¹˜FÜSàcm…O´©‹«/s/. (׸Ya0küC(añ/ûÇñi–Þé(ˆ”OúT: u×e>mæ±R¦¸“ ¡Ô¡gb »Þ6µœPŽ„ØF¹¾ñÈRÄädOkl,¢Ør ëbœ‘>JÃ+$ìÄR€¦5>`“NgåVÛUG‘jWò+N †Ž³fY#Nœá ZäJ¶ª™Íj‚V½;\ñ‘%P~°ÇŒ, íøÍ£ûÅÁõG@£¦³Ró‰Ÿ!V W#™’‹¤1ã[­¯Ñ¤¸f9ƒÊƒ¶õv¬ ƒçFüž(0Ÿõ|ë½O60X%zNKH;¹tÞ‘ï퟇)ð1ìJIÂY# ÂC§PöF¸\É*3t=Óìgžs¢,I®2žç¡¬Øw]Îå6è9D)’;‘Ü‘mëÙŒóâo¹C'ÿÈóêÄ鼯ì´Y´óh€M²±!&þ»Àr‹\ujcÆÌSÚ¨.%Ëø~¦†¡].Àe­Û!ëëÝ/ÙÑÿÎÙU5ÒœrÓí¨åe¾?YH2çÅóŒL3} ßÄ…¬ÕžFO«?žF:³†:`‚õYGàK,½˜Öƒ;R™e-€i­‡¼ã7sùæH§ëæC—aÖoÀÛÄ}3‰XOÔÞn¥,?÷ØTؼö( Î-"ûÖ¼ s+>™F™Äêâhy³g!s÷„‚O8¨£Þô94î§®—å€ðeäÚ3ÿA-kƒ}O~¡-ƒ³RàË!*3ÿÕX¾ëõØ5é5ö²â_w Y¢½÷øBsqÏE^'lq'u¶ë¬õ-wryÚÇådøÿ¶Ãäð…3 *d¥¢“Çtbò¿ éHp]ȶJk.y·rè(xÂù» h¬dò_Ʋ[lGµ±Ú;;GáâÕæ}ûê#"Ia ÂZ .פ•gÇ`Öy6‡Óg°ì–æf,›‘À/gÇÏ"ÙÊÞtƱØ6 »©„ï|Ê£—#ӌɵÉVzr²'{}¯@ù\Ýl…åCò": ç¼ ÔS…ßh7Yøåm´Q´›…{ååu} ^‚ß„èÒ›Áe¨Ö¶O¥bö ˜aÊ%ž¡ŽeÜÅóŽq<³¼nR®tÛzškÐ¥Qõ™ßDÇ÷ÝcCOêÿù’£ tR*FÎ>åÒ¹ŠÀY¡Ê âH9õã³d}(!©læ8Öðs©ßxË]2õNÍMjNãpBLWËc4Dx :|vÅrt·XŽä(‡dÆ9Gm­:¾âÍdÎBNSª¡2ø$¦c² è¾À@[=¨à’ïóÍ”@wSõú6u{èk߈K²49 ·O])Þ¾ðT,ócY±½x©"(òØõûÙ¦F)œ"Š»LÒLB6W³`).œ ¦{J,Ü*Xç†ìºLéÊdø¾¹/B»Ra­Å!«Àà‹©¼µ˜VaÂ×è-HüÞéŽ+^ÅF¶º¼Š^F|äEbíû@˜á»uÌÌ0óU œ½t‡g”*¸."§<󹛤) `}/CºÅ´€¡ …<ûCßÿÕàδ2¾p-°ƒÌMÀq¿ë åh‹ÞÎu/æ8Ö×£ «b©ÖM Kéµ9Šxì=35&å+ù‘;it¯dȨ…¯Ü,"—¢IÌ=#,¼ú¹àC$ŠÞw®ÇÎ¥IŠß€ˆzâ»N{éO2ì䈿z}ñ» ;å´ùñBm¾¹€J¿ƒÝ`¿p2nóta „‡ÙÛÇ‹W«ÿ:‚‹ç*aøÇ,Ú)l4¦ÄhøŸGø¬ÊÇzìš7iÊÀ"ðQ¨¢4Ó±”rªŸ¡QÏþ^¾IÔÊàמïÙœØ%ÿƒ ƒàUkŒ\>œsèòæm¹©™Ç謱œO½“ßQ¿<ä3ÀŒ´•‡[Ú7‚ °.0RÿBÓh mÏÆ•†ÔXjn7qò5°Cìy"ÿŠÕÑEN:Pˆþüö“Í=Ä«-‡ñÖ„€øº_³~½ú…|€,£ÂÏïa`JÉò?MP.ûåM¿<ôË÷ýòaqÀÔ/ÿ°8öiñR¬ö®_þS¿¼[|쯋 _Ëy—Jv ,ÕDp53iü' ðäJãÉ…Æï.þÁUzkendstream endobj 162 0 obj << /Filter /FlateDecode /Length 5767 >> stream xœÅ\Ks$7r¾Óû#{ªv¨{ o@눕c­][¶e‰ ´>ÉÎHd÷ˆœ‘D_üר*i„Q@Èüò‰þá|<¨óÿËÿ¿º;ûÝW:žß<œç7g?œ)úëyþßÕÝùg0Â*è9¤1©ó‹×gü)t©pˆðqíA~qwöíðv7´ÃÝní”bôûÝ^ûƒ‹q8ÝcwG‡÷0& Ϋa:ît8ØÑ„Ü\LÃ'»½æ’‡Þ=Ò0†à‡70Â*§ì0A·u攎ÔëµKÃItŸŽø¥õ¨†["OûÑ<"$^PÁÌcÌ3Ó¯p€E’¦MÙ4|À¹\J!hØ ôÂGj¸„íØžƒÊŸïù{´Ÿ^ób.©á g0)ýv¥]×ä%+Z¼½›½ñˆ`iĶÞV¹76O¸vY%œ7£‰’)åU¿çí®P€Èä­éXï÷æ• /ÃÃeÄ0L·åÚ$©§àÕÐ!¸ó@œâ!ÿH‡>Ž`ò›¯éF 3|ó¯U¥îqí˜tZÂ~9%Zä_°È‰xvTZ5{Á3ux܆µ@¾¯×bˆ‰‰Wí)¬õ’à ´þNZNÄJ€$p“Kü*ûCŽp¼‘æâË õþP™'XKÖ÷Æ+c»¡å"k î¯Ç[h{ gd><ì@^˜€¿Z"VòF||h… ù+áãfó³ûÚ<Öæå&|xu€?øhl¿¾øT»šŽìoæ4x‰yä»s"˜å–KY¡0y¼:I{ä]ÕÐbôÛêdK6f[æ+°ðD‡¹Wàü¹Q/T°D¡}Šð# µiT*ma®lˆÂÌ" nm´Å‡BNÇfšÓœø.áèA¸ešÙHý# ,n ðmL.ÀaáúÆ;KçS$¯ÒX™({xå¬:;o]mœŽÁ=¡wqj„'©ÇIçxðˆGó2Ëæ0Ñ.¶¹Ž¬·Äê+ƒ =lÍN ÕŽ3³/ѺXytÅ’"²íAÇÔ“½é=ï·+ž™PÀÛËÆU;o5OQ[=³¢õkõ†,ï–á¶OaG~F é‘ Kaþ(ªôE+%´/—~Z9˜ÈE´ ¸GáØì.á–T­xã>RgÿY«¸z !²¯áÂç ‚|ÏCŠˆATžªƒ!„î´#ƒC?ñG !ÖDZM_òîáþ…[)ÌûÆU9òŽl“†Æ`èÔË(È!˜ý²RÞ„¶ãÄÊ„Ƹ !Ä`⣄°ñ·†à–±N2 Ó8ƒpÌ\›ý(.¸æ‰]ò­·%,šµyx ÿßæõÂ;oÍ00Áò œù {êtGt?]‰ÊnÂÀÜçUŽÁ8q!½ýÖõ%‚C¿gÓ‚Ò‡ž-%E˜>¸r£B"pD ›×VCsúžçh­~MW›¿ÈûÕR…Jò~Sùô¸=â:MÍÆ:WÃ8b/DYL½›L…‰ äÃpÉ S¨ Ï´7_­í§5Yãµ´<åˆw 3šqÕ‘C–’Ëþ°Ôoyhk]ˆðÝD`Iâ0k W„±$ð¢TÛ2ØNbô–ÜbxláVngf¤æMmþºÅ ½+Ò6¬j¯(µŸÈ’J rœ³ˆŽ s½IÜщJío«[«AjTs£'ìV¸vóaΙck°I±â«P–œ«r¼ fäV˜ ´oåGÄ;:Б©ö)5N5ÆFX®¶9¼çÞ/lœÜ`*G’ ¨:lX"j'ñrµtAø}y•Er«~JPQ¤¢ÖS ¿¤º6Gþc r{tÎÅÇa¸’ ¾æ]l³7LÅØ$ë´7ÇU`Aú^4Tv˜1‰ÿ©ÇävÃ*Aµ¨3‘'-Ú·zYŠ—n™â•|BJ~tä©Áàç5ñ"#˜·/ˆ8·¶nœIZ\çµ9<û΀º³3ÞÍpÊná´uëàŽ(~U™ë´ŒŠäƒí˜Û‚-åa‚FÉm” æâG cÌÚnÈNç¾Ti¬‰¡ëæS z±Lo|4ÂÙo$÷ü¼+ sÕÈ9nÌé´4¥íÉgé‘#@sN«^\D¦˜%€xmr m¦ ©ÆPsd¨Jða[”æ«P %NÀ¾Feíl/ÉPT Çèè”|`ž3ØQÔùM.lûÂ<_©û<• ³÷•=Ü áÚ“1pÂRd.s Nbéâ„X@ÃçG¡ «'1Žþã\Ç­¬è"NóšdzÜ1ovl‘HÇÁ 3º¸ö›Hq :–‘dûo œ…:V‡´Œôåí§d¶1\([a-”¡ù|]ê†Å.a™±ãdØ’®Àp(Ýëh›,Ð:[^ÆÊ4ž²µHg˜góz­"ÿ Y8;ÌÞ†Ã"AŽŽ)žð‘&áuŠxŽ´Ù¹¨ sU—ycVp±çS\m×’—X¯OÂzä©Ñ6n¹{Ѿ{·é@å +ö­š Us‚ çé(›ÑTTdX2Šø¡ª¥uÚ ­RÐ>Bo ìÍq)±Œ2BSµU4]4«E00d9ØC7ÒM{[uÌoë˜kž¥gÊdcô¢~Þð/—ý)`»Â£K`J‹[l@Üe€ ødF -Ñä8¬‡¯ŸeÄn,˜æÀà¾æ&ÆÔº® ÀòµUj‰…xªS,‹ü÷ *”)ÚìCeœu"åO­ÁŽŠ 3ôÌ ãÕZðÂ-Ì‘ë7<5‡^TëZXXh±ˆ$Mhôõóˆ,6]jP˜ÅÃÅl¢×G¶örTpÛ‘"ý>VýÀC gÅÒ¤h7CÁ½š–Óˆôea"‹{‚é’&l~>}j±?Ät/)¨¼ö³«ôý Î<`MGªÖÿVt¨V >‘Ë=å'ÌqÕ‘¸ÚNärl*ŸÍ,Îøu\‡³ Hت‹z¬ÖƒCÞÍqÖÁl˜,#Y&VaĦ0xöß¶"L »Éèz[1`z¿Û ‰±·›$ çªL˜—Y¹¦lTv,½m/ZÞòÛVI!î\?g½FBöHn>ßèt*£!@¿R\ÄáKšvfÔÖ…ƒŠX&·bd“5>°¥`‘©Ž¸`'Æq—BÖsâÓÜä#¼d®ú•±[' DÒ\–-« s^Ü„ðÑE· %À "ÍW•µp™O1ͱ§µk û’ÔÁО§,KLQ[(0¹“~A°­­f’8†Ÿ1txeqQüP@pMg‘'J!p¸.*…@‹vY ¼Ñ ÝRæXbwʺŠÍT$o¼5 Jõ| ™ñgš‚'gäùÔ‹E7bÚG÷Âà‚Ÿ¦M†xdÂC,H@!ŠùØ„»(øbý„¤OÓ·hÖ®헜때Þ3±>±щ/89WR‘>k…#Bêœk\ð<‰ô©÷[;Íq ž kd©5®õ¿JÜq¥y ˜¿ ðv‚€"htƒA/Î\hÞ®ïlBçíÙà¶57)ä†vaÌá7EæË´ š=­i&Ã7®SÛÕž-g®¶à}ÄÑÿòŸeÁÝÒ:À\"~\V•a¯YäQŸ}ÃÕ ´XxKëìó“ û&‡ƒÀÊKÅ…ÈÒažuäZ€`v/¸*â-7»âµ;UÃ}%¨±x°Ý¬È#Ã63Ë$çÍ7¿_ÒÛO¨¼oÕÌŠ›‰X¤ÏNûÃ\|`µÛš]ÁXS>R”ôŠòSlFT|ºèåæïë€cµË¶ŽÞàö2MÀ–tò‹º¬âÐï7Ǥþ˜šš_YÁŒ|ÒN0”Ê“ñÔj†Nh›¿kЂ-=ýº]IÁV„i]±pÍAoíéþ½Jáà–aÝ&r¾éî´Y£p€“‚ŒS¹ /±@1•ˆÙ™âôn=À9ì^†'8–€<û´pá.“š£ªå´ Î[­®^ðp·LF ç‘<¡/#›È“€Y´:Õ÷ê¥^•ÛŸ«ôé’Rr½j¡NiÄöhæ` ÷–VÔOÂ+eªLÐnÁi:hÊöùG`òmjŠâ¨Y¶ù4â›ãºدKÛâìèkÊhø=¯~ÐÒU0臼ŒkhÇ9÷Ë…´öÁZ÷B!lÒnC„^Ï´÷%¨ã—ã.Lr­[ö6Ë®Êä˜Q—UrkŠÊä&ú©ˆÚIu,ÿ¦f´e_­Áp î%_xïG9ùCÜ FÁ‚ J¾¥ózož®}lõtŒŽ*^RÒ€‡cBéU!;¾+Ëçn0 ?šÆœ&XsðéW¦èì°ÚÂΣà™OZ=Kð˜\ÞûãCÞJô³û¬ó›M<áCNùíŒx%½*°©SŒßÆ@uP¢†uë-^ðK¿÷qÎŽ”½^Õ×¶ïQJ}m)S,?m\Þ =î]ü´ŽYýêÜí&¯ML#¾0j¤Ž_nÒ/jL÷™€Ô$³ŽywOýÀ¢Í÷ËÚù²aƒ¦(åžßÁ¿}qLÝì–n—Y çñg½ß‰6ªEÂ{3"½àÕ&õÆÆÑ ( 3I·ð³À¸‰µ ±×ù>úü¦6wßÒmøñ¸8A‰Ÿ9È„èóxH`ÃòoW’.Góø‹óÙóõ>/*ÇS×½¤sû¡6ßlÞžø^̶ã+ƒ—Ö„½«#okó´Iãß–°OjónsìÛÚ<Öæ¨ ^š~[›ÿV›jó®6/kóUmÞÏç ò–©÷uí}¨½SmÞn.!f8n®v»Ùœêjo6W»Þì¤_mxؤá¡~öVÒ[z?—ŸÑoeaX¼>½ßÜû´¹÷Ç<-þÂõzp4n6UmîkóÙÏ|mþ¶63Ó/ã$ûä°mÏAí´ äÂßýéâì?à¿ÿ$^˜²endstream endobj 163 0 obj << /Filter /FlateDecode /Length 14892 >> stream xœÕÛ³$¹qŸß'ôìçãðƒúÈ<íº_dË–eeŠaG,ý0œ™½Hs¡fv-ëIÿº3 @u~Uøqg§¹t0HöùM6@¡P@õ—‰~h®íCãÿÉÿÿòí³ÿôÝòðÕÇgÿü¬í×庮ã<·×±}èûi¼.ãCÛŽËuî>¼~øŸïžu×eîMþ—gíÃßÙÿÑŠXú‡¿üõ³­ä‡_ÿå/Ÿµc×_§áa\¬ˆñáíMXÛáÚÎožýÚ´~¸vm4JÂÔŽóu³Ñ0\ç5%ajZó2ÛŒãµï£M`cÿ¶¢²$Lãj¶k6š§ë°D£$Lm³\—.-óµ£QÖÉú¦ÏFë|áv¦®™®m›Œ&+Õ:ãf”…©™ì MÙ¨µÞÕe!6nêÖkýÎ ê×ë2E£$Ðhl®CìÊ, ¶©½6±+³Cð: ±“¦¥»¶¨, 0Z»+úhûNÏMíâh+BmsÛ_—èu0ÚænðÁŒ’€0Û0]£ÛE@uƒÿc°Ùþ¦ÛãtmâUË=š¦ë„‚’0 MsKeó|mávX’ Ó9ödè“Í=º2 Ó0¬ûm²xgDdz0-ýr²OK»^‡8ܲǗ¾¹6±+³Ç—¡¹NñÊeŽ/c{m£ãYˆƒr±q:wÑ& q¼-sw…GÛßS7Ú´³d“e36I`ÓÖþ:Àë$`Xm ®±'³€îöa5F·³€A¹vã5Ö–þ¦I?úÕ 6I GÃtíâxËÂÔ›gÃl bRÎ:`æk@X Ô5^¶,ÐhY8-g­[WNËY kšõ:… W„XP×t͵‹6ñïdaƒt¢IÂÐ5C{íQNàÑe6I€Í>g! Ú®™a1÷_–þ:.Ñ" 0Zí3ÎB¬¨m†8ç¿£¿¶\¸v0ÉB¬«í¶¥E0J ê§kÎllp®S´I.¨Ï%c¼\E@æåÚÀmÉf^0ï ZìÑ»1 pÛ†&ZÿÞ,¬c1ïBìÅÎFf\Ó­ïúö:Ä1V„èt7t˜‡B²»kìjü,¦þÚÆvNÏýu†ÓY€?‹­át`dãs‰—, h~ߌ>mÝŒ²@#¢qÞ…X]ßMXÒìŒúKš"Ä«ß3æá"Ä)¶ëmÑÝ¡¶$Ä'c×O[‚Q⓱ëçkš"Ä)¶ëm®ð; ÑoŸÜÇxå²€®̾‰µeµ ]{¢ßY@m}‡i8ýͺlÆMPÌØ_{8„¸î律‡³€‚æë™"Àf¯MlEˆCd°Š1gmôÞŠ—¿±¤±®˜ø³]»™Óq`cct‰n• ö̤0Óòf”Ô6­×^g!ÎãÒøh FY€ÑjëÀØ“YˆµÙgNÇ’™ÇåÌAH6-c?RH66D1!vÑ4ôXÌNÛb³‰c- "Ó4`}’ÍÎ\Z›ÛË"Ш]°Ã.l”Æýeðì[û5î/óßqÃg˘ûë]ˆ´Z;¸tÀjÃóq¦Þo»G‹õjìÊ,àY»®ÝµmG“¾i:LÇEˆõMÛc]S„èQߨ@ì"°º~ÀŒ¼ ¡—úÆjÜ_! %[ŽØ_ï š&l/‹@ßÌö—»€’–¯=‹À’l ÎèË,Ä’¼7âœ|’Ó¸´Ù…0•öm·^‡Ø•E@mCƒIù $›±Áœ\„ØÝíÔúh6’ÍÜbes’ÍÒae³ h™ Ó¸Ñ,Ædçóa¬­±ù¶ýÄVsbu¶oÂVs`ÔXÛìªFì5B²'LËEˆ½m«‚¸Õ,£ªyÆF{`dƒt…ÓY@ËÖ{̓°ÙØHÆF{bAv™0'!¶Ì¾ˆÝæ.D·{£s¼jE@mc‹ßŠ€;²·QºÀï, º¹ó/£, ºÅÃñ¶-JZ{LÊ»†fÀêfbuƒ}Žî]@IÝÈi9 ±Ã¦q}³ (h°Çp´ÙþF16Hãf»¸%‡iÆ^³(h^°ÕÜø³,XßìŒÖõІmãò6J1!g!:4v͵X„X×h£4î´‹€‚†‹›ƒlìy×6»¯ýhÇöAH6sÏù8 pÈF(æã" e뀭ö.D£ÉFhÜkîBtÛz{̓lºèsø+ýk?]Çx·RH6ÃÌy8 ±á“ ¬iŠw§åJo $›('þ,–•ÓpP•Ì51 ›ÍÜ6\Ï!^‡¹k±Å<ɦo±ÃÜ…èѨ¬³¦¸¿ÌÇž¢q¹ Á£¡éf,eŠÛ?46Dãþ²4ÌÅE OãŠßo‹@£iÅ»쀥ÁRfÐ:¥ º) ñwÞ¡mZl±B²± 'ä]nh»3rи¶ï¯¨,ý½n‡ûË"°œ‘XM˜Ú‰TÍ. ¶yĸE@A6LQNú_'l.w!ÖÕ5„jvF-¡š]ˆÕuÝ‚åÌ.À¨_ð îAH6þF&^´"À%¥ ü†lf25»€‚â¬ÿJÿº¶ØW„ͦo:ÌÄ!Ù´¶ü‹=X„Ø9¶ÅD¼ 0²Ñ§ü,†ë™"Äác [lªB²Ù>“ô7œ™'ì)w!ö°=â°šÙ”´ÎØTîB4llÆMå.ÄêìVÀ›ÎƒllhÆMõ. ¶~åDœÜôÃØ`A³ (ɾ··¿ãõfR4E˜ÛÈ7¥®¥Åj¦ñÞ0¬~Á-B|š›iŠ€êÆ¶;Êüw|‰=8]·”E Q?`9SV6ŒØS!¾Ÿ/Œ?àÕM ´"ÐÈÆé Ç“€®t¾óp&sÊçÈddãtEW&aZÜ8Iç 㮺xêM-Aš"  0ŒË"Ä'ñ¯*uD±þ#§ý»m'ÑNãöÞ?C¥BúòcFH?¾|ç_Mäÿ{ùöá¿=w;ëÁë²ÎÖ“Ï¿|–0ÖöÁßÅ5ëð0Ûz´é÷ùÛg_\~ùÝÛß¾þððþˇ/Þ¼}ÿîõ›7/¾~ñê҇—/>¾þøðÍ»‡¿yýáí‹w¶Oošn¹üëC×4í“ýÏôø¿Ÿÿ×7Æúë®Åºþ©µaa+¢‡ç¯ž]¾ýæíëÇçÿøÌyrüéÞ ÞÓuµ1Ÿ¼yÿ¸½/í¦ËÕjþòÑI7ë†Ëë—ß¾~µÕö×Ï­Ï~õ‡FqeKWQ¶@qïÁl£¢lâ Ê–(® l *Ê(®¤l#+1Û¾ÞGÙF£;0[Ø|>e EÙ’”-ÙXIÙF\UP¶Dq«”-+S”-ÜV”-Ê6)Ê(®ÂlCãeËÚeK·JÙ²…ÙFWQ¶@qe ~TR¶Å­S¶`cï¢la$)ÛX¢lâÞGÙF#EÙ¢+eQ\IÙÅU”-P\EÙÅ@Òä¿In2ûª‚@™~UQ È¿*(PH‚Ua LÀª8Pf` è!«"A™ƒU¡ HÂ*PP&aU,(5ƒ" «€A! ”iX J­Îƒ2«âA™‰U¡LŪˆPæbUH(“± (ÙXÊt¬Š e>V……2!«âB™‘U€¡‡”¬Š eNV…†2)«bC™•UÁ¡L˪èPäet(ó² >‰YÊ̬=¤fU„(s³*D”ÉY$ IA¢LϪ(QægU˜(´*N”Z(JM‘¢ÌÑZGEIZ*Ê$­=ò¤V”YZ,Š4­…$`Ñ iZ«ÀèÜÛ.JMð¢‡L­‚©Z0ÊT­ŠE®VAŒBÄ(sµ*d”ÉZ3zK+Ì(³µ*héZ«Ôè‘+­A£Lת¨QækUØ(¶*nô—žÁÑ#ZZáF™±U£LÙªÈQj=$mUì(52m«¢G©)|‰[>ÊÄ­ŠeæV2u«"H™»U ¤LÞ*R&oU )³·*ˆé[ë)Ò·*Šù[EÊü­ #EW‘B)¸ ŽôÁU¤LáªHRäp$)$A’2‡«BI©)–Y\KÊ,® &¥&hRæq4é‰8­Ð¤'â´B“žˆÓ MÊ<® 'E"W“2‘«âIOÐi…'e&W”RDé ;­¥'ê´B”2—«BJ™ÌU1¥Ì檠R¦sXiÌç*¨RæsUX)ºÖ±ÒzZÃJ™ÐU€¥ÈèªÀR¦tUd)sº*´”I][ʬ® .ÖUÑ¥Èë*èRæuxé!±«âK©)À”š"L™ÛU0¦HîªSfwU)Ó»*Ê”ù]fʯUÐô )Д)^iʯ 5e’WÅš2Ë«‚M‘æUÀ¦LóªhSæyU¸)½*Þ”™^pzHõªˆÓ–Z!N™ëU!§Löª˜Ó˜ZaN‘íU0§'.µÂœž¸Ô sÊl¯:=¤{UÔ)ó½*ì” _wJM§LùªÈÓžZ!O‘󵎞"ç«BO©)ö”Y_|z"Tkð)Ó¾*úy_}ʼ¯ ?eâWÅŸ2ó«P™úU¨ÌýªT& êAS*Ó¿* •ù_†Š°CeX¢Æ °‚CeX¢"¬Q™V‘¨Ôê,*“À*Y`‹Ê,° FEX£ž€Õ ŒÊ4°ŠF=!«y`Ê<°G=hŠGe&X¤ž¨Õ#“JH´¤ž Õ ŠT°He*XE¤ž°Õ3’z„V+D*sÁ $õÄ­ÖT&ƒULê \­0©Ì« T¤ƒP*ÓÁ**•ù`—zDW+X* .õ )0•)a™JM¡©Ô›zX+l*³Â*8õD°VàT¤…p*Ó :õ )<•‰aŸÚ"3¬TOkPEjX¨BªªH «U䆄*sÃ*D•ÉaëŒê1;¬ T‘VQªÌ«0U&ˆUœ*5ª2E¬"U©)T•Ib«Ê,±V=¤‰U´ê i­Ðª-òÄ*\•‰b°ŠL± XeªXE¬"W¬ V™+V!«H[gV‘,V0«‡l± ZmPZe¾X…­RSÜê n­p«Ì«ÀÕÝZW™2¶ ¯’m=“«'ºµF®žèÖ ¹Êœ± ]¥&àÕ#ßZaW‘5V°«'¾õ ¯NRð*ÓÆ*z•yc¾zпÊ̱ `=Q®€•©cÁÊܱ aeòX±Æì±‚aeöX±2}¬ XùcÆÊ²dEY²RS$+sÈ*”•IdËÊ,² f¥¦hVæ‘U8+É žõIV­L%«ˆVæ’UH+“ÉV¡Ö]¶û¤<©~ÿØ|5ÛZ'µr´»À'£¬x¥g«]±ÎðçÁf5ù5š¢UQ¢ÕÒ¤§ôͪ(Ñjµ–¯(«(ÁÊËÆZìV»­:Û;£Æ]‰V>BPã®D«ÁVB¬±(Ñj²5ᄲŠ­f[Q¬(«(Ñjµ{ÛŸ¦7«¢+» Öíénµ+ѪStôͪ(Ѫ·é®ÞïJ´²ùd{Þ¬Š­FÛÁ7Ñû]‰V³í{x_”hµØNx‚÷E V6-¶¬qW¢Ukë˜>–µ+Ѫ³ÕœïMoVE‰Vƒ§aŽÞïJ´:ÜWáN V? #ôXËí š;_ÏÛâµÙçùÛgÏí쉚mjlÖ~~x²;džl¾ð,Î?÷éìIbÛŽ¨—/ùš·÷ÔÏøÒÏÓ×lA4÷ǯu¹®¶·)JÔewBí[[eó¨+ëNNöŸÓ²þ“*;;9|Beâ[ŸÑ´ñ:²þ¥~ѦϺhÓ÷µlKí½§õ.ë¸"É>Ù* +ùýk7¶6Ù­-Fû …Ànt‹ÂÈF1ãàåÍ(¸ýiwç-Eº-ü»-&g°çÏR¤7OÝ:û«Ëh'§²ûKëòàdª}oŸ»æGKšn–ôã¾?†l’뛩l³Þú%°ÉøÃëíyÔ¥Õ­S Íö¦qB|¼[¬ÄëÒ 6±íEû»9çòm%´$&Àc¦]IϺ)íûýýb—„¢øŠ³ÿás¤}k]¬š0Gö£êî°wTΚÿów_>ÚòkÚ9¤¦·v·ó:?<ÿųËß÷ío?¼~ñOZ:¿yøJV=Ø\lë•Æö&qz¶øâ+·Þv\mŸª~þød+›×ùòõ£?lÑ¿\^?>õŽ©µãåwn1®ÖcÝåÅËÇηóëtù§G[ïuM?]^|µYÛ&§™ÌÚ‘‰¹Ÿ—Ë/®™¦ËûÇΟóÓpù?Íöq¸|ãÅÎ벎—W[½öhš¼^û¼.ý8]>&z«ì[³h›fn–ÍÉ¡µîzsrp'ݱe¼¼ÿh¶0žm¸~ ¥}ãE¬­j/¿ -ÚäÅüX.oּܹ[65üÖ[ܬëpù×TÝÒFwÞ»hkuû¾¨í­·~²{ùîæú›[ë_xi6©[ml’·Ã& Û‹Ûo{¯vËÐuÖ™Ž$6ÖÎׇš»ÆÖ9]lPøøâ[OM×´——åS¨øU¼àɹe˜//¶AÙÛ¶x´Dã3í—IçµfåNsø[—&£ª­‡¬Àƒìa›‰!ºïU<•:žl!3vãnU}y%±?Þ¹lwN»Xk¶rìn/Éï±mû6^Í÷n>4c3§Ëe˳qÒ±CïŸ~ì —ÛéÃêkšu+-|{ûx½}üÝíãûê×ÞmÇeY77óÇ_ß>¾¿}üîöñÃíãËÛÇ×ùÐ ÞóŽ Úÿ³}¸Õš:ÙTè'y ­[áßÜ>¾½}¼Þ>~ŒŽì_T B«ÞUmßÜ>þ²úµoDŵ°ûÓîÀ} ¾H¾[ú.ðZwt~ß5íçtÇß?.m7ÛÇšƒÛ3ìÕ\}ó€¡q ·)n¿³_' ›%~sÙïÊT¶ÿ>Õ¬> ›—¶;æòo途¨}qyÿõ­¶IÈZÚ.Ëvõò¬ù³›œnÇÞ£Ö|;®]*ÈžóoíÞîíé¾L¥ƒýÎzåªÙ®}¾ ­GÖ|ÃoO†×ÉÀn>öÛô«wá½ORaÞ ÷ÒâñþCRg{¤Š™ã6“ÊÇËÞ÷RCçfŒnF/¿|,³‰×í»rÛÞv6N|‚´à]´ÕÓNý<æ¤}B¾nÔ¹ÁÈô'‘χ¿xöüϾ¸üu(ûÿzGÛå[›´]Ͻþv{¾MË´¦y–ßl³¦]íyë>º´‹Ñ‹?ß<± Ä’=él¾NSÚñùÛz÷)9ò_ŸüÕùÿöOy:k×¥Ü6þñííãw·on_Ü>~{ûøz/öÕ÷™¦Ç”wš Ù“¿Ï«¿úþòKYÿå&>}z×ÛÇßÝ>¦I®_ú)mûøîöñÛÛÇ_ß>†¯}wûøáöñåíãëÛÇmþÈŸßT-BÍ_Uøúöñ/nûÛǦúñg·ÿ½ZB°½Þ>ŽÕ>ü€¦j ¿‹%ø¸éFŸ2¦2)×ËZ«ŽÙd¸M—¥ˆ§í&YæTÒm†«Æýûê`Ëjûü‡º·‚o¹Û6®óWZózØÆýÐwº[Þƒng/êí®ô1Ùä7¬þ¿é`•Z ƒ¿zŽVI黾ñw»Éjü÷‡h•–eMêZX%…eÙ6r‚Ñ&ôM·eNH6Ëñ’Â’<¾c†UR`55“S8Á*+¶ölœwLV¶skѧYégso/Ëw@èӬЪß"‰£URhå/ôiV6dȑޓôiVìѲ1¤ùÍüê¿ÄD«¤Ø^³÷÷¬Éʾ1 W³B¿–-sC´J zÕ[¾ƒVYA¯:•5¡YÙXÚò"f£²Ð«Yé­{oÉ <^½šú5´þª(Z%Ån¸É¯T²»ÃHÍ ýòwèÕ¬`ÔÛÊä0VJ²Zzí’²ÖÞ'ƒh•X-‰‡ VYA-±6f…eu[^‰h•ôª-Ðü‰h•ܵË`["mm|„>=(ÉjÚèˆh•ú>O‡‘zP’•G' O³B¿Öù0R³‚~ðh úô $+{, (++ðÞ#m8R³B«ÞqÝh´ ðÝ#mFŒÀ¬ÐjôŸ `E%YÍÕ­’²–Æß=F+*ÉjmºˆVTÒo|~¸e0ÊB¼;ÿñ£´(Ñ«®ñ˜ÇVI¡•o2`´ ´¶ø³hD%YÙ2d˜`•”x»ÆcvÙÀ¤ÐjÞ¢Ô¢URâøë¯ÜÁ*)ñηm*«³?ñïm³±ÆÁ$+qŽÜ²&,èͬЪ›œÙ‹VI¡Ub“£URèWÊœ­’‚±à?–÷¬’Ÿˆ=Ú8B‹ŸO[î„–mLJ?íÕùᨰ؄øîZ_Û±C“‚‹gâ ’Ð;Ü‘A‚®óÀtgVÐ^jƒîÌ × Íaxf…Vcãxz´JJ?ØrqÚ(laÉÑ*),knýD«¤°–v[ «¤à†èÖÎaÃh•ܨvá>M†UßnÉ¢QRheKhѬÀwßÁ»++¢Ü…>Í }w€}šZMãaˆf…V¶€ЧYAŸöËöhE%YÙ"ºcYIAƒ-¢'ôêAIV¶ˆn0³Â²b­’ïýÇ ”–e‹h,íŽJ²²E4Ý‚lg ©$+_B³>*ÉÊ–Ð3ú4+]cÓFjVÐÂÑCà|VÐ[žƒMHQhÕ·Ü„…VCËMÈQIV¢ƒ6f…ÞÛ=7°Ia¾„†Ñ&ÐÆÐ§Y¡•- 'Ü×YW¤Ó`feMíÀ-HQhe h,ìŠÂûÃf¹(,k¹) æçÂ8R³‚9Üa-:¿ x²L °‹FIÁ\9ÙºEŸf…õybBöiRð̘›ù°´Ë ÊšÛ…¢àéé)àVâö¶›ûÃV¹(½×Û† ‹J ë·Ÿ¶£URpur†h•–µl!"Ñ*)·¥ˆç`à Í ò, Ø}º´‡}rQàúâG¾ÃhXŸ-Ÿ±û( ¦¶Å£MСY¡Wžšzå¯ÐXVRpƒ-¶~nÑ¡YÁ€_–-®9Z%·á²vÉEÁm±Ú*šû¬Àûµå.9 ðjí¦Ãþ#+,©Ÿ ¼ƒ’¬†é0HJ²·Ü;ÑŠJ²²5ô„xP’•G«¢O³‚ë³eÒÃà:(Éj]»¬Ä²zÏ¥‡]HQheKi,ñŠB« •d5ll_´¢’¬Æ†#µ(¬ÑsŒ°J ­æ–#µ(qLô/¥;X%…Vk‡­ÈAØlÚ¦ãV¤(ñÎè['!ѬÀ÷¶;씋²5únZ¸)J| ÷ö€ã¯(´²¥ôÄ6&V6%p+R”¸éms+R–Õm߈VIaY¶”îXVRpû¡=ŒÔ¬°F_Jã¾Îʾ<°B;æ¢`pyúìDŠB«å°g. †sNß­’‚nD³‚nðô ø1§(¸­[IãÇœ¢`z¼ / ­†‘?æ7Ðà+imm¦Ã޹(´òd:laRЧCJú­’Â~XgîDŽÊf563_•dÕ.‡ašxï!xA^ø5öëa˜f…V¾–†„d3®Ü‰…%Ù8ÃNä¨$+[IlaRÐóžžoe “‚~ð}ø!§(ðkKч&”dÕu‡qšÖèËiÜ×Y¡•-§±Ì+ ­l9½HQh5õÜ‹ý5͇=óQIVž–€mL kôt©,+)°šF¯fs×ÜŽ|I^Üý3×þ'æ£ÙSý¢?³‚>˜m)Í^Vè÷8s+RLñó4xY¡ßóa¿\zoKiüŒSÖ¸.|I^ôçâKiôgVhåKim¼ZºÃ~¹(q‡Þ{ÂulEŠÂ²l!=±Â¤àúxÊulEŠ‚>]œûg “‚çØb é…e%…5z@'ú4+è-ñ›ò¢ +'‡µåçýj‹h.î²ÂRúÃv¹(,ËÑÜ„d­[ÇÃvù¨$+sCfwÅ:|K^\O Á1šÌ·ë:ñ-ùQq«-+Þ’%–UÒBD«¤ÄžØÒB` 9*ÉÊ–ÑXÜ…5Ú2Û¢Ä+44ãÂõ]Qb '\fT’Õ¼ò÷œ¢Ð¯eå(- ­<={•ÊfÕ¶‡ sQPVÛ5܈…V}ËHQheËhlDŠB«±åF¤(´²+ß³¬¤`L´¾’F¯”då+imë[{¾%/ ®µ'øÃ6ä¨$+[Gc}W”x7žà#5+ƒžà뻢 <ÁGjVè½-¤ñ{NQâL9x–¿Že%…eùJF›@¯–‰oÉ‹²o¡†ÎÑ=;4)è„Þ³ C³Ç=ÄówQnÕÙ>•;¢Äù{°­v Y@ûû”’#%%nºm´òwœ¢Ðñ¹áò¢Ð«¥9ŒÐ¬„æyV\•¬`à Ía—\8åÛ±ý( ®ŒÙÃðÌ ‚'mÇHOn@ÏÙ¾°¤¤Ð+_<Ãhh3õü §(ôÉ|aäepXn>Š‚Á0XïÎl`RpÇæ°I. ®ÎØŽÜ|•dågg %YõÓaf×pô4Œ6WgçÃÍ ­lù<°¨¤ÐÊ–ÏØz•deËgl=ŽJ²²vLl!•Íjò¡èÓ¬ ç=§6 G%YùšeQq«˜T¢óì«Ê)qo|zo·îäÛöÉçûv‹Oÿö›·¯SœL‰’õ‘|uí¤Ð8§(É_¾ÜÂu¦îr}øæÝ—ýö×¢5O1±˜úNLV“¶,1i”%0i”$1iÀÔwbÒ°’˜4`ꟓ†•Ƥ#L-1iÀÔ“L-1éè—Æ¤-KL0µÄ¤-KL0µÄ¤á—ĤSKL~)Lš´Â¤ãtv7& +‰I¦–˜4Ê’˜4`ê{0iZ)L½%1iú®0i–%1iàÁ “&L­0iÔx'&mîäi¥0iú®0i–u&M‰I¦þñ1iZ)Lš¾ß‰IÃJbÒ€©?“†ÕO‚IÃJbÒðkT˜4`j‰I¦–˜4`jAJßPj‰IG˜ZaÒ@ˆ%& ˜ZbÒ€©ïĤa%1iÀÔ“FY“FOhL:‚¿“B|'& +IG˜ZbÒ€©L:Z)Lš}ª0iLk“&´¬0i–¥1éX–Ƥ#L­0i–õÇ‚IÃJcÒ€©5&q䟓¦•¤ÙFIGï L:âÈ“Žhó½˜t´Ò˜t¬QbÒ(KbÒ€©& ´YbÒ€©%& ˜ZbÒ %& ˜ZbÒ(K`ÒÀ‘5&aj‰I¦–˜4j”˜4`j‰I£,IJï‹In–˜4°eIZ–˜4ꓘ4`j‰IÃ+‰IÃ/‰I¦–˜4`j‰IÇÛPcÒ€©& ZbÒ€©&Ͳþx0iZ)Lš0µÂ¤cY? &M«û0iZ݉IÃêL6“†ï¿“Ž8²Æ¤#Ú,1i”%1iÀÔ“Ž5JL5Þ…IÃFbÒ‘Eј4`j‰I¦–˜4`j‰I€–˜4`j‰I£,‰I¦þI0iXIL´Ä¤Q–ĤQ–ĤSKL5JRúS߉IÃJbÒ%& ˜ZbÒ€©%& ˆøNLV?& +‰I£O&Mˆø>LšV“Ž0õ=˜4m&M¯&Ͳ&Ͳ$& 8XcÒûU˜4aj…Iï?&LV “f)Lšm¼“†•ĤSW0iàÈ“Ž,1iÀԣ¤á·Ä¤6KLÞKLÞKL:Öx& ‰I€–˜4`j‰I£,‰Im–˜4`j‰I¦–˜4pc‰I¦®`Ò %& ZbÒ(KbÒ(KaÒl¤qÏkL0µÄ¤S+Lš@¯Â¤£_¿“FY “&L­0iÖ(1iÔ¨1éS+Lš0µÂ¤é×}˜4Á_…I£Æÿÿ0iX)Lš0u“f?HL:Ö'1i"Ä “F“L-1iÀÔ“¶,1ix/1iÀÔ“FI“†W’”ž¾“L-1i0É’”¾U'0i@Ë“L-1iÀÔ“†ã“†_’”Þ›§1iÀÔ“’,1iÀÔ“¶,1iÀÔwaÒ°’˜4¼’˜4`j‰IÇÁ 1iÀÔ “&L}&M+I¥LšV?&M+…I¦þL:Ç ¸Í1ղⅩ)^˜©–/ÌTËŠfªe #ղ⅙jYðÂMñÂLµ¬xa¦Z®ó§3‡¬ð9ÍÓÍvÂøçgWRRáÝvvçû‹&¹?é¨Já{©¬ºŽ%Wœ±§Öv¯Ýœò#2:ã]g²"œaÕuú¹âŒ=‡ÎŒùaúmǜɊp†ù©ëuÅ{o·›3S~CÙξ$A¸Â$Øu’»âŠ=í»®Ìya]™Ò,Á—¬g˜k»ŒWœ±EÅ4Ù%¿íÎ8ß8Ù¬g˜Ò»Î¥Wœñµ {fÍ?*Dg£\áLV„3Ì®ðwfWø;3‡+ü™ÃþÎÌá gæp…¿3s¸Âß™9\áïgH¾†¿3s¸ÀßšÂß™9\áïÌ®ðwfWø;3‡ þ’ÂßÏ| gæp…¿Ÿ!ùþÎÌá?dWøû’¯áïÌ®ðwj‚Gæp…¿SSøû’¯áïÌ®ð÷3$ÆßÏ|…?Ïj«ŸÁ&µ®ñSkÏdÖã™\”ê¤vÈO^‡ì+®xé |ñÒùHö37·%ÍîË®_˜]±üÔÌI±ügâ¿Æò3 ºbù©)–ŸiÐËÏ4è5œ? ŠågtÅòSS,?5Åò3 ºbù™]±ü#Ò ×YþóÉ­Ÿ­ØÅÙúÉ|òwîÎ×g»R˜‡lëõŠ3¶®ëáË2'l.úâOɾdEørºŸÃ*NØòt­ÚúYñÓÁ  wð"+ ä¯?T|±K×` ³±ž~ˆ¾ø³ÓFQ„/LO/‚,ž^ÅX0=½Š±`zzcAMÅX0=½Š±`zzcÁôô*Æ‚ééEŒÅ!=½²@zzcAMÅX0=½Š±`zzcÁôô*Æ‚šŠ± ¦b,˜ž^ÅXœ#1*1‡ôô*Æâ‰Q‹±`zzcÁôô*Æ‚ééUŒÅ9£dq ĨÅXœ#1j1çHŒJŒÅ!=½Š±`zzcÁôô*Æ‚šŠ± ¦b,Αµ ¦§W1LO/‚, © j"Æâž^ÅX0=½Š± ¦b,˜ž^ÅX0=½Š±`zúzŒÅù1ç/îÚøŽ¨›<ƒÄá17ùÔŸrY¨?ä9ðE$rà«@æÀWÌ/99ðU sà«@æÀ‘ȯ9˜_r0¾ ä`|ÈÁø*#äÀ¯Eqà«(&ÀWQL€/Â8_Eq0¾Šâ`|ÅÁø*Šƒ ðUà«(&ÀQ‡ø*Šƒ ð«açÙ`YÇôºuŸ VkE{X€¯þXÁ¼(õù€yöëÁ"g_¼Æ ðÕ&Âñ03­þð¼(¦ó¯Ç¤Tœi§DsÝœ±ùvíÎ8>½Â™¬gÎ2µÐ—s€ÌX }O2µÐ—s€L-ô…§¨Ð—s€Ì9ôåxj€ }¡¦B_¨©Ð—s€L-ôå S }á©*ô…Z=ôå4¨¬ð6½Â/ƒªolÖ=lw­ð‰ÛÝ]©ªãáõ›Š3>y´pfmû]+üðšlW„3¬ºÉsŠö©òð ÈÃ3T OwxMVäáõ@žsG¶¶¨Б­=I&¾Ö±Â×ígŸ[G¥Þ‘‡£T¼ZPñBÚåêúË·¦k?¶Óå£Ëóº.ý䶘·^­-¢­æ^ßÛȲNxþg_\þÞ¾ØÚ=\¾ÛŠ[íBv^´oâl2¸¼øf³Xšq½¼M²-É/®v6 §Å+tuhÝÔÀyž.ï“Ü´—W¡ä×ö½©íÛuÝ|nÖu\VS͆~?N——nlMœ¼8/b±›æ…´ cÛY}f`÷Ç0˜[[—u¼|õλÀúf˜¢sê~y«ûÅ»G¿훩¿X£˜hu/—¯½0Ûó›©15µä«×¥­±ŽwIœÚekSkío¼ˆØêÔqËhÆ-c«3tø[Wí[íå·OžrÃ,_?¯Ç´v—÷_¦ÏÞm/C·½ðn™š¡tçÇðùúøä f+æù£ßÓ£­àáèv±mº„Ëz¸Ø>¨ÚÞ_åä!ôj뫹Ÿ—ËûwltowÉÐôîœ}öï/_¦îl–µ½¼³Õgã¶»¼¹UòޯúLÃå_ÜØ×ëœZ2ØÎëu›Y¯K¿ïn—l¯yÜjÞ¿µœµoì³óýö[»ÁØs>\æi/?³±/®ð‹oS W%0‰NíExô¥‚=ô‡è+ï)Wí1á#ß?6í6v&¿ ½¹¿—ûÖEièL> »Ce›gó6t¼¨qêŸ4t’s¾W—aÆQÚl³ìv'.MÛ.Ùys´™ÐÍoãù»mõö±çšÍ§¶`øâò"Œ€ŸÝŠs˧búä#ÏfÇô0ƒ|}„Þ£þ8·qÇ›Ôß”ù!·Ýb£XÇm¦Ž¥mSëlK·Å‡èöÅÙF ”iµ±;”~ÚÊ3Dšqmuf\g­Çµ´òßmãq]›iHƶݳ]þÜl¶N[Úø´v^§Þ†lúN³Ufkòu¨Mé¶þ²ÑÙ?à;v‡ø››QÄ­þ:µ«_¦C7íOÞ\{üŒ†Ké²9ôj-•K#®\¦=Žz¿r6Ô_Õoœ?Ùäv^† §š}fU®ózºúí6­þmšÁüçÇf}ð‹1¯ÖÊmÑúoédÞ¨}qy¿­ÆãXl’º óÒÛ#b·xu«é¤©Þg¡ïªElC»[[»ü}Ú¶ªÚ*ýÍå6mþ[~óhåö¶î[¦8Pß'ÕîÌýÁѯqpzƒ¿<ôU}o—«µFo5¼¹=;ßõ赯K7{Åû3¼6š=Ȫ0šm bsøͶZ·™¿3†ïx~»Ø¥‚ÿœAë8]Z^L«5¬¯Ý£}²µïï8k×¶½ü»¾Ò´y™ÛRuX:TÛæ9xÖv§ú$fKzø¿Ç+œiºOöÊú§;xÕ½b Õùcëëts×ZbÏòÉ&øâÕ© ¸¦­‡ú…é·ÒW~½U°ZÛòW¼_n<ùr¾1íÉ7Vm¹/þ×íq^©ÈÇâ:Oö%ÿ-¿õ’üKÓˆ³ål[é3øítëà¿H5´Ý’ú-~}à+º¾{°e© Ïv¿oÓÊçz_wC×®÷\Íîx5O÷Ï0Ï¥‚SÓ—±;_zLöqýô}kýÇòýÖý÷679!0åEèdóK¹‰õÀjÝ¥q¿ÛíÛYÛ6éûn›ýæÛrâûoߦoÿ ]{Uc×ãù´QÕÛl=ͼ$q—Zñ!ø½WÇó0ݦ·ßy<Àí/O©3ÿ±6¶ìkx¾Ð~¼œ¬©÷[eï¿ü<ôh{¬çÉS”´v©žlK0Œý6Á\úýõÓ¯žý?«ZÊÇendstream endobj 164 0 obj << /Filter /FlateDecode /Length 9815 >> stream xœÅ}[Éqå;×ÏûÜ øëÝéÏ•÷L2  CÆxdYÔúaä‡f“ÓC‰ì¦Ø¤´óögoD^ªâTe49l V‚ÀúNGå5222OTèÏËÙ\,üßþïÍÛgÿø6_Ü><ûó3ãJ>—rR2ç`.œ‹áœÃ…1!Ÿ“»xÿêâ?/îžÙsNŽà¿>3ÿJÿû#‘Ýů~÷¬–|ñ»_}óÌëÎÑ_„LE„‹·{àͳßäʹD)Ó©×…B<Û"…cÖ‚’=G#e—H](S眠ÊÄ%œ­2-Š–*–]¹DÃ$…h2ÁŸìM&-<B¦PYŽç -ê@1T`jBiqg#û6YR2åìƒjŒdráœdß: §${^dßµÅ|ö²s€‚²?'Ù7ªL^Ìy‘]ë@$EàÖ7!“ÎNv­еìHKe×: –÷](,R‚~a1ž´¦²ë9[\À&—Ê@–T ©¨ìWä G²[€vŸÎrÆÚohP‰×GP(/¸>:€B%r„P¢]âÙ˜*dC*º6€è}9»Ò…,ih–BƒdO–LÊÔß²ûT¯='eiîÚ¢”a} š%Ÿ³íBų¹B !C³³È’:m2–TT¶»Ð&ãÝ9I™ú+£2Ù¢È1¢ÕwvF 5@(’5…´ ê€,ÈRÍÒ®@*€µ–´TvmP’7`Ø€%ѳ\%+%%RT( €&SPqW@˜QëH?³ìÜdmŽ6;#;‡@“¡ÍNZöÈáv!À*ÙM†ö:i×w@“¡­ÎËž @öÌ/¤¥²gô´×I»¾²ûžö:i×Wª WÉ@ˆv;iÙWª£ÝÎÉÞ!PeÂBz*;×9ÚÁ4÷g“逬,Ð^«d  X÷} ‘ÔTö &C›4î+ ŠËÖ}²oіʾ @6;Òf‹dPÙ^X%€5Ùs”}TG[˜÷@u´åyè\dI‰^H²w!Úó`¡ @V—hÓƒ•2()îT·rÀmz`ßѦçdç: ÊÆ‚yo¿aQfÚñ`•tŠ¡O6¹ÿ–­ÉÑ q%RRÙ¯ÀôgÚð,4º²AÅ,g¹ ûoYW±WH ¿ÓYšL •€œù’vš ív`×; äÚìÄøŒß¢_n±VÇ €muÆH¡ˆF»…ÝI!šLr`×w@“¡nÉR€*ch£+£ÿ–]7ÖºXÙd:ežÙ/š msê ÉÐ!UZô€Ê2)§ìU†œA¹2Æo9äÁÀÊØMÆ‘nÊ~ @¶‡v‹³•ë€E²pç ;6((°ç+ ›Mzkc4ÚãäÚXY›s;…ÑgdßM¢=ÎËÎ „²s¾RÈÓ&ë&C›œ“ @¶Û;RRÙ9š íq‹ì[ä¼yú›4æ+•eRRhQ@ˆ¶8X"FŸÕ¶ýŽ< ©—i©ìMÆG°ç= ´½Is>I¤¤²cçJƒ>YP¤ýMŠôßrê£%™ÈA¤C"_^ ¡ÈÊEÚáŒìY`¤#ípPPû -*H ÷Éì4¶(D[Xô@‹’' •Mê Ñ&·È¾u Ñ&'õºÿ–}KÅàúè@´œ¬Ü„ò²SYš írNvmrÚ²'•]ët-‡ˆf}²Ý™¶9¨­þÆrrA»Þ©e h× ë*´ÑYYP  GJ*{6ÙýBcšeϵÑN''¤ÿÚçÀ¬@TF¦‚”Ttm@ˆ¶:y/²š muÒª¯€h’_‚euB4Úê ´¨PmuÒªï€*cÒQYM†v:iÔw@“¡ÎÉž @‘ ¤¢²g!ÚèhM†ö9yÙ=¡FÞ”F}TkHEeÏ di›³²kcMgi0ë+%EKd@(ƒÒŽßPYI`×w@•!wîºW@ÖEޝq!Ô¹ø=íÏg/»6(‰›'»Ö9#dÏ RǺiºhŸó²gyžô¬úäžîiÜÀªª£ÿà 逼ÆöžÆ–HP(A]i_msò®{ò†Ö‡¥€IT,i¨¬«(DÛ¬À0†qt ²°ô9 ÉŸ¡ ú;f²’®k#éØôÈ}†,Q @´ŒúäNü[&àLÊõÔ“vP‹½Áž¿‰íøÓ ¸J·Ý>¼¾»½¸}óþÝý뇟_¼¾ûðêý%í ÃÓÍ«w.ÿëù¿ruAVG>"ËÅ•ñ¤ë‹½xþòÙéÃë·¯.Ÿÿñ·ãŠÄGDË+ÁðѾ´Æ|sé¹xOgªî»KÇ¿b8½ºùðêe­íŸŸÓýöoÍZjŒäf€TBYK•‘¬¥BH)£2’¢EO#$Aè)Œ¤”Q IÉþ©„¤d-BKR IÉZ*Œ$ !‰µ)Œ¤,Hc$å ©„$P€! Œã‘¾R!$± …DÖR!$‘ÚSId-UFR°–sB8ËŸž”÷š*! ¬¥BH"k9%$‘³ÔI`-5BXË'’ ¤’ÀZÎ Ià,B+SId-FRÞk„$2„ !‰\£BHbI !‰%i„$”¤1’›y„”¬¥FHk©0’P›ÂHkùFRÈh„$2„ !‰¬¥JHJñi„¤ÒIàFRŽ€ÆHkù4BR i„$°–#)š­’Hì)Œ$°–*!)iD…ÄÚâœDÖR%$eu*!)iħ’RH%$eu !‰%)Œ$°– !‰ ÂH ²Q%$%k9e$¡˜§’(¤’rúçŒ$ !‰¬¥ÂHBA#)V‘JHk©0’¢ …‘Îòi„¤ÒI`-RF$FXK"ñ)Œ¤”ÑI ÷挤(F%$µÔIYBHb{FXK•”¡FHû§1’¢ÙO$$¥ÐOOH‚ÆHŠÎ©„$p„ # Å9# ¬åSIRIà,BYK…‘”={#)e4BRRrsF8K•”¡BH"k©’ÀZN Iä,B™½'’ ô$B„¦„$r– !‰ìŸBH"k©1’BÕ4BYK…D¶qJHb«UBR”£1’@6*„$’„ # ©„¤d-ŸBHJfïI„$iŒä6³:! MÒIYFHÊ‚~rFRÊ<‰!…‘„ÚFRrd*#)ÊÑ II#ª„¤$ŸBHJ”•©Œ¤èšFH"ר’ÈZ*„$–4g$%g©’Àîi„$°–*!)YK„꾄?«„¤¨H%$µ|!)…4BXË9! œ¥FHJÖR%$µÔI`-iŸ“­n¿åNüí÷ƒNBìꑇqñ_ËÅËgf쌚‘÷Ü&Ðj•Á#&ÐÊôa $öèÉK§w»á¹"´0Í ÅFZ”.KÀ–íƒÓb[dË"-,'[SV•é•ÒaÏ€e4É&qY,Ûz6É»vU"ëØW¶[ƒ#Ròï–¨u¨¸³Cá@/•º²’{G„»ÐÑ¿”)P‰F¬éÀ{¤°ý´q©_÷î‘LîL1¡“cIŽÈ¨œÍ– Àã\5Ä.²fH&O¾ê¸5tê¯wG„ú`jÉÆ”Îì‘^¹qÈ(¬¥¥"tâ¯Wf„µÇ×^š˜»Þ1/–”z»ô=" ÐÌœ³üm@½^â\»Û="ëKdSš|íî+cÓñ#²¾”-?ki7”¥:òÆ$=Mí0p½eO¨™ÔjÁW]=" ÃmeC™©ažÎÖò£ì Èuce„ wµ~G$–¶5YïCg ŽÈ(8ø¼Ãz2ïòæ”FÚŸ…·NÇòã; ]6uሌ—ÈÀƒâ:ËËOÈtË›NKê+è«7̧d0G–vwq·Ïa˜ñHÛ¶¼‹Ü€aÜm¤óh=ÄhoÑ"iÆæˆô‚ÓáÛ›èè f$‘5-H!ˆ Fh¯ËRqFùå‚Ídañg:Â|f²p0Ÿ™Ì™ ÒŽ$kÉ9ÂÙβK° È`² Ù˜¬BÆÉù-¤ QÖRx«‹Í-d:äbs‹‰0YäMZXHn!3`“bç"è8S ZóVÖbÈk“K‚Î-‹¸¡bÀã:C è`‘e%†tÇÈJ,­_©îŽŒ‘8T0àq¥•ég¿»ûçH=úÐï ‚ìÙÓâ¨XcG®»ü4È9Z˜Nþ&3 ÿ[º€Žþ8+t:Åvžœè,+!Gÿ,îiÉÉËnçsÁI k’§@lÎ;+l×ôB‡ÂÓÁˆË¬üG„Ö¿asʭ˺Ž93KCh©ÖûÁ#k #t@s~D ».Ò‚jpDêK‘–¸¼é í%ÂÒr‘–¸Œ© v2Òš7| ½’*ÇI‚b$³›æä<.¾`Z\bU•µ$:©€f¤RàÖ`êí.™¬B½>ã•쬸A`Àg\Ÿüë3“™FÑå’p}òÅÂ"k)d&$eá `õ2òÚÊR2˜¹Â®¢Ïw%IÀf¹úüB'aæîùVDÞ ù%%˜¿ÐÙ?ÈJ qäê#ç"ÊÕç Ù€T2Á>«¬ÄÐÚða ävº÷–}áÄnϲ1w”—˜˜}ˆÞžf‚·'Ù˜=J‰ÌÞ¥ÒB³1”› ¤´àlÈ ¥gc)-:RHÍ£³ܳèlL!¥…gc)->“HMc´E)-BÓHi!Ú˜GJ‰ÑÞ%’Ò‚´!“”¤™¤”0mH%¥…i#¦Åi#6ÔÞg“Ò"µ1”ªù¤”`mH(¥kcF)-ZSJ)áÚ;L‹×ƤRZÀ6f•RB¶!­”²y¥´˜mH,5ÙÞ%–Ò‚¶1³”µ©¥´°mÌ-¥Åmcr)-pûÝ} ÜÞe—Ò"·1½”º}ˆïž„nC~)%tûÞ= Ý>„wC·wù¥´ØmL0¥oc†)-zSLiáÛˆiñÛ˜dJ à>Dyϸ!Ë”ÀY¦´nÄ´nÌ3¥Åp½1Ü»DSZ7dšR‚¸1Ӕũ¦´0nÌ5¥ÅqGH6¥rc¶)%’{—nJ åFL‹åÆ„SZ07fœÒ¢¹!å”Í)§”pnÌ95熜SZ<7$štCÒ)- 1-¢ÓN)!ݘwjÓ y§´˜nH<¥Ätâ¾'1ݘxJ ê>D~‚ºw™§æQÝyJ‹êFL ëÆÜSZ\÷!ø{×}ˆý>Æub¿'Ý2ù”×ɧ´ÀîCô÷$°ûü= ìÆìSJd÷!ü{Ú é§´ÐîCü÷$´óOi±Ý€J‰íÆTJp÷.•Ý}ŸDwc *-¼1-¾“PiÞˆ)Þ;L ñ>ÄOB¼1•ã}ŸÄxC"*%Æ;B"*-È1%Ê{—ŠJ‰ó†\TZœ÷!|ç ɨ”8o€”8oLF¥zc6ªy¤7d£Ò"½1•êù¨´XoLH¥D{CF*%Ú{—’J ÷FL‹÷ƤTZÀ7bZÄ7¦¥Rb¾!/•ó½KL¥}"Ã'Aߘ™J‹úÆÔTZØ7æ¦R¿!9•øÙ©”ÀoÌN¥E~Cz*%òÓSi¡ß˜ŸJ þhü½ÏP¥E#¦…bÄ'áߘ£J‹ÿ>‰Oâ¿1I•~ˆŸ€‚Ä'à‡ ñI8f©Ò"ÀÓBÀqâ“pÈS5?„‰ÏBÀ1O•މª´ pÌT¥E#¦ÄgÔßiø!X|ŽÉª´@pÌV¥E‚cº*-¼aÛÌLbÁ!_Õ<ܬ|ÌFð…¦Ä1Ö¤µÕ§£óm©\csÁ·¸ÌE”‰é°´Pṡ55-¢h©sídµ¶Ë/¡‘I‚oíZºK·¥…²c¾­y,»liã$eKc7X[»ÈGåÝ[û–bÓhù„=™ÄÊïz̓åEO:ç)zhM×SáÖn¶ô^"»·v=Ùå ÓbñÓ‚ñ1c˜)æñø²ÓjÎK‹LÙºl»ZÝ|kßiÈH6ö—MÈ=`kBév[TXÚW(‚o훀 Ï´ 0ã™ö5¦<›~Oð#r ÙÏKçU?>H|ØjCØÕ¬#u÷B qæÙ©2#(ˆ”!à›Ô@„Ô\¼J­ˆ”²›Ô@¤Ô ݤ"¥F¨ä&5!µÆ®R+"¥FôÞ&5)5¢Ü6©H©›µI DJˆ¥Mj BjýÙæz Rj„ÈlR‘R;-z#¤~D¾0KÂÇIñ»¨¬î¡&á;Yrn99™…¥ÐýŠí£œ9ï×üÚØ})¼¶?Œ·MC EŒoµ×ÈSEÓ×øâÚÑì^kïÑDJ¬¼ÇÞêþ½ÿÝ_Ë ŽÝk~í[Rúg¦oqßL84r뛟¾VûFÊ©÷m^]í[Ø¿÷XßÂ'çúvÈðe} _Ø·ðe}‹_Ô·ø}‹f^Ùc:Y?®I׎Äìê4Õ …’Á{äõµõº£ËÈÛŽUhõ†pV!¾DªÛàêõVnB¢ÙŸgG¶šLœÕ*ôä[ÍåòÊÖC·;zä«ïN†aÏAô¶g»üd)5-ÙÆ^&G'ÑŒzÃ^Ê…eŠƒ4ôý«ºC‘f2£~Ói‘Z=—Om¸•C.|.PNCZ9í½Íy²ÑÊwÞL˜åú¹yÌ•§P·Àø«*x©»N´€<íkÁ|ž%ŠÖo¸µäÀ^Oêþ< Š…=¾·¢d»žã~ÔvÃÁÈ™L³Ønh3§½Œ½GžÉžóõ×wß]Zœ3IdVå})‘#ýüëg§ß¿{÷êý‹ûw//ÿáÙóÿñíé—o®ß“âð×BÅœÞÖN¿ùøáÅûW×"™®CËÅ­Ú@rOH ÊB³/÷CŽƒdÿÆEÎ+ÛøüòŠœž…êJ§ï/Is²/6Ÿ^]^¹Èk^^ò?É¥ rXrñ)œ¾«²¤ö§ë,±„%Þ°@*¹„Ó*€{©Ø¿\’bÚÅœ®ß$‡…rúÅöºZ¡äÄÓýûZí¹e¾úDgÊ…{a»õí醅3¸s—&ƒ–訲Ta²uÖ,œ&—–o ·¼¾ó‡Zƒ[S|{ ‡?xâÍ^zM-¤²\̧‡Öljï)œ/¯8†2ÓÔ5¥“Ý”iôq='ÿ¾œÞÉÇ+›8W0‰’jÚÀíiƒÓ ¶1t8uétÿ‘á¸ðÞ­5¼äç+xnOSv!Ò40ÏÇÞ¨;]·‰~Ù]G¦òBä¦î—Hè:Ç5Tvkâ|º¿d*7K3O}"å2²ÿµŠ’}Ó·Þý×ÛnÅVÀªã‡îÐ>Õî÷zµµçðŠ¿`\êT;Züd%ê¬ÕzÚém^ZdeFóÈ¥ä[!½–‡ö"µLJß5”}²81 ¯X€v+c«€Y–´d§µ0¡/{¹4xfú{ðRÑ®¹SdôLâ‚y¨ÉÅ ©ëZ Îsq\F"ݸÿn´³4¡þ¢)?ýá´µJ4P~‘ÚPÕ›Õ7Sé¯×™¼cM¡Î:YØ:ZW²°Ö…é@}ú“Ô«UwÇ(ÉyÁÞørú¡Ï ­L©ço/ùæ† M©“¼ê^·`1ËúTµ¨X6ÔlšÅ¤5-‰°®ïêˆsðëéVØ:©]ì6XúåwŠÁh(½½—»Õ¨¦óÍVĽ\Ý¸ÜÆ“l“ç¯ÎþuµM îUF£hZ­?Ûö§;@×1ü?—«¡ûÀÂä,hM䊸©ë.x2`s͹-"ø;Ñóû:’ÙØä¡¿«•ùkk©¥÷®{;rÕ1x\·£ÆBón6S Sk’ÏÞKûüé6óªi“ˆ6Žõˆ/¥ ù}»“y#ÚC¥q˜hIâý¦g™œWˆMQ¯¶¥Q ߨ᳠ŸÐ10k«&·m…öpºåɳQm³—…¼Êº?3I×Eb[¿Û)9<¢~œŸ n|‡Q®Œëª%³£±Ú>9G½¥‰L@£ÄÎÛ§ªûÍíðEl2möMY¬JÒh}EÅ‘;˜2®œsm(—=Ýž[yq<ÿ<[6;»5D*Èõ]t²|<™Ž#Šî–ž’üêØ’¿ïÝΰ˜ï?4˜\h®»*ªçÏ·ìPT±Þ~@ëjHV… M|ç¿‘7LF6¢¡[•âf¾çJcyÍŒ óL{#Êe¨s¼þv›kŠ£Ñ®ÃÇïEÒ„ë‡&ív6¡ºl}9J ³šº^F(vZ÷Μ‚oõy͈^Ëf¿«íˆ4Ür^µÊÉU~±M£ô‡>´Z2m$Bƒ…®Ü7êÙ÷ giÅrJElóÅÌ*ßq¾*þ°™žóÞS÷í°é£e§ÛñI!”±áúKòèøßÓ¯ª%ãé§Ærß©c¦Ð¸;C‡™%5·&,‹#oâ}pÁð$nð› ¾zèí.×NÒi1z ¥|ØÄ_·Ú3ŽOw·§É7ÍI4c.ÎŽ5ÄN•½7uû톒W2­ ¸Dmǯ††Lmó\XØå°³èÛ’¸Ù&jî©òVµ–Ív‰/Z ikŠÝ†S æúüÂÎÆöÖǪ“d½åv9<;>˜´é'¤zÔ64‡ÿZ˜µ— fGG¸§;Ÿ¡õµ4kÍáÈ%=²ªª4•§ï¤ý=ÑhÞJù=rÏ4CÚF1Zg•½_Žçí:C~×êÍׯ]FžZHmœT¾I`¯³ákz‘TŒ ªÁýñv{¼ßÏSñÚûíñn{|q9Sß«Ñt*„•—¦çn³XÒ´·q †ts¯ŽÕà[z-f¦›IÚ#@ÕëàµÇn–£of¹ß] LnÀõÝv>~9`X ➢WšZ«)¤<¯^?œ¥w‡¶D>„ôÓÍÝ*/^w;º]×÷$áÄ%°$›oL]Ùܾـ‘®ÁýÛV#¹¡§ßÍÝû›ºq[¢pG3ØvS»3ë»sÓ#—Lµ×¦W–c¨^Û‚gîuäïÅÁJ8ÁW—?”îǺºcoÜÝ󰳑ëñbˆMY½Ji“Þ YÓŠüîÁ=ü¬JÒbyO^žè•\h·›5WÜ%åt¾ZËó:ˆÍx${ÁŸŠÅzynéÆdF×€jdK›iššÁn·êãÝöøa{|?•}³=þbоÞ¦åÖkŒc×Óö4;JÛxœþø‹íñýöx½=Þmó¾Úo¶ÇóöøËíñ?¶Ç¯§m²Üºé÷æGýOò£8g«·[Ï>nËtL¿Ù¿=~=}üja1ŒbRÞmßï‡|ß›Eö¦kNÿ¶¡¶Ç×Ûã›íñå§&Í|ª !{õ©×Äü}ÿeÊ jûÙ´owÓ΋„ÞLÞMKø™ì+ŽMd§–2œÓ®½š–Õ:_lßl¿ß¿ž>¶&\6\ -æ–~9]ëb% öF.ûŸM‹¸›¾'d¿š¢¢=¯¦Ó F¹^ÍMÀûO î/¦÷.í+B ¦uÞÞ®]`‡+æ´û£ouj{€Y—‡žzŒNKñOÚÂ"⊽z,!r\áJêü÷~CI¶©Ç 8ƒÀ zù*°Æ ÄÔ‡{©•©!ùl<t/àÝÑ”F’ïéþt¹rr$ïWr䯬 Kˆt&¾k¯±–‘ÿ°ÞPÍìFÍYÖ8‹·›ø¸=.S[`9ÂÆ+ÛÖhöŽà·iÇpÓm•˶}µ¹•õöê÷Ûã×òqÚ*:‘‹VUw¤]m|Õ”'›Ùµ]åt÷Áœý-dˆ¼†h1õq½¾˜ÇÔÁi„°âšJRËòv­ÆU¸J–‹M»‘gØëÑ À±SƒDê«4ÔŸÇð·êóg0ükÒ§¨C}â׸²ß¬ï«ÛönW­Ô‘r²»]® .°iô>䪆lÐpáù(t‡¬»Ž8)¾£Yù¡²á ÒJ¼ñ§65½¤eKÞîÕÀÐ+@"Œk¢£SÄÛ­éd]7Œü߯ÁÔÐÝH· ¬}øV,Z²¿vä¨bøàOg+۰ͦô%F†Îƒ9¬WåŠà7‘ ˆëöÈÁÿr¹Æ–|ýoÛvqn‘HÌô`XWUjµ+c6%œžºSíÑ"Hhs‚„R‰¨âR#ÁV‹r’ Op3ǙեzË<ßìoÙÆØ¼ådŒð–-Ùë覇ÏsrÎ^À+_5ò#Õ˜ÀmAµC`å*;Mák=þ†#™5¥[ßõì'ôy%Ãî×ù=çië:Çåºýn×Юúo¶®(ÒõÚ—Gî;äf-# ûd!úãZê6ÐH«öo=›GÃ|i|9æp0¹¢Uï82䊣ØùHRç÷?«Öçús2¢Âq 3 ¹]÷'W6ŸeÄ·5âÍc$ñ¶ _eÞò¹Tç\L{ó£¬}RKõÑ+nzÌPH“»è÷Žì*¾’}´«¬èjޤe©dÛ[ËÂüõäFQž«Úk¾(×6˜Å÷òŠýÒ=Š¡5©ì ñaÞòÙÑÁÕã÷×›Éz9Ó>dð©¿ÿ°?¤Ì• Åë׊Ý6¤Ýn7,F‹"2â*B»b“VûhD·à‘ mïë­„»Y·ÄÖ—gËÁ:Ó·øà÷AæëN|eüŠÿ_Rà ¶Âíoóõÿ—ßsJ’=úB{N© W0Ó?ßßL ›×6§ eÛ¦¢/§¨èòßo÷Ûã‹isÒõ/SQñ„ùB’þŸ>Á ßNµà<¯ åÚõb{”#)ÚûzÚùŸv^Œ™˜¸ßLGòSåyúÎã)DËæú¼o¦ü›–«±ŸWƒÕ¼â RKùlúSЋo¶ÇwÛã÷ÛãµNò=Ó£ôçóÐäÃÅYGuŸ+µ `é.|Æöæsm_¾U!±ÛëΰÞkP“òÝÄjšê¥Õý&¹JŸ ³°úÁ×Ú—`‚~Ù7s&hÎѯ·Zÿ­:†%[o§³Æw`eUƒlÆÏpmüéÄb¶ñOÚÍæmwýmñ3úv2^ÈAŸÞžÜ‹­W:c׻ﭮb SÿüuA®^þ)¬¥ÿöÙÿ*Oñendstream endobj 165 0 obj << /Filter /FlateDecode /Length 2881 >> stream xœµZK“ǾoøGÌM=¶©÷ƒ“‘_¡6ÂɇawX`Ø]‚ƒÿº¿ÌìîÊšAHa:Šš¬Ê×—_fñneF»2ôgúûüÍÉý§®¬.¯OÌêòä݉å]M¿Y}{†Ábe¬¦ÚÕÙ‹ù)–l ~œM­O«³7'?¶ëS3cb Ãë5*¹–2\à3Øìsî­O]HcÆê“‘vÔ“åˆå4Ý×,oÉÐ¥„nËùxVIG–'w}ÝÜÂ>_H"¼:¹#ò/Ûa·Ž¸>)|!Rj,”(3t@ 6$ÛË”è}„rêäár-Véñ˜U³]¬óÞÁmyˆZR!‚>ÃÕ“…}p‘5ˆi,0ø ™=F›²dÄòƒÑ<×Tòš/k_‡æó•¾WŸ¬À¹)Öë O•$òCòvwäyžsÞ¹jÜ–¬z‡D¸³.hÑÇv»i™À~¯~Ðr¬vøAby¹¹mÔ,•ý=Õ–±†j±ü—Q#Žc_²ïL"·¿l`°Iˆ€§-þNU{󻯾œî·@î×.·rÁißèÒ²`ˆFÌ÷r)DÂF@*®l;l„[:#¨Ï.¦çk…‡MÈ7MÈÈÁ|ºÄ`(‡#ðÁ'"­×žOœ:OÙïÄ[SØ)o%›¬ã}9ò¯¿h½àÜl)ìt!ÃUjØ¿^ÎoœM\“} 'ßÓ¦eJ ¿°m±ý¡Ù9Dy:§/6–¹ Ô;5Û#_8Cà‘Õæ\gßÅzÅ೔ػvQ½²RBx%«“Á13¥þßÖÅS2ç.vž7b¢'0Ü4Б2ƒaD¯úI$ÃÜŒþ÷úv™â$®Îžœœý±#0;u·Œ!g? ¦2ˆ€´9éþÏlâì ºê”Î[ÝÓ Íòås#SAê½éVªÅŒ3€þƧR×§j'îõd#¡Tµî Iz¶V˜jb¦ð­4”äo°žŽÆ#*â>…Fy !hj5¼kÁt{xÇTAQîc(çUa 6CZé1MÆp!ø×å¶…¬ªW‹=û‚M #võpHÂÕ[¦î­vKŒæèÃ×Ì ®Dv,a/ŒiU¬B D Ú*]ª’tCW65s´²_¸Ê«+…@SÅZŠI) »×³;ûŽòBj:û98ª ÿÔø¶”‘‚‚> B'À3[âÔ@”=ëx~[t…þÔŒ Ó@ Žbê©"¤ËopYäKÎa.‰#–KÕLý¶ÙJ•9ÎßC.L7”ˆÓ*+°7~[Ú?…ŸÒ ­“ð‰Ó?{SœKîu 4…3Œæ×{Eÿå‡s„-Õ}Íå|ô襚æo>êC‰Ú²… qr5ü¤ÂnœMÕÉåßIà¶ÖK”ðÞ†öï×òs8xø¶å硾Æ(Õ¯JOuË…½.5fi¬ÉH—0¡Ï-ÁŸS,¨CI{|“HÔã·Ýs¦;ÀÌxlº‚Qy˜xøn­#î>“ûžë!Ö?t:w)_A0ø*HR·Ùk”Âþô­8K£;M}n²©ÐèÃz‰â»4 1º<áD “þ´AMí¾kà¨ô݃‚ƒxöRà?YI– }òŒâ=¡fƒÊß÷ïT¹õQ•Mýíǩʶöî—rÊØŠ \¬—©‘F»ûÏ;SþPŒ\ìH-ì3í¯Ãa<%÷e†Ót4˜é1N§Ç Ã•êH×¢ý¸;9 Þ6š¦nÝ#>?DAÄó¥’+ªø^n™…º…/¡4¿o,ÎUí¦2êÔÙƒ¦Ž¬g*… /[°šä³Ý{>EkÇ ÿ«UÁîéçЧ&:º’ꊸS$_ó÷õ2Ú¿G§í;I¦©=˜óóÈ»9t„îŠi*“‰œU…[ú%p×ZÏE@'Ÿ_Lî_…-²d‚Sâ¾7f™è´`î»Gñ­> stream xœEqL[Æß£ðx”‚‚y&c¬}q@@(̹̄‘0Ãb€0XD×±JK€bûh‡PÊ€±Â‘º€ŒµüQ` ¬˜©…Ê6—É2!dÍtQ JÄMÔhÐ{Ýiâã/sÉå¾|Éïî;–‰Œ`X–**-Û·=<#ïdåäy— È wEFšÈéÇR"ÚðäXõ$ɲotž-²4·ZÍu&IL«Msòóó2Å\½>_<Øh´šk Mb©A2 ’"ÄrK­Ù(µŠi…&Ij.ÈÎv8Y†F[–ÅZ÷Bz¦è0K&±Ìh3ZíÆSb±¥IâömYÛ­ÈÒØÜ"­b©å”ÑÚTa2J†ax}Nîþ´ôŒ†I`™§-è ÛÏÄ(é˜H¦“Yd÷³.v%"+¢5âÙ/ì°:ÀάãĺJvâŠw.Õ/¾öcÁxP"Ô<ë´ÔêKƒcpij'ôüìÁ¯Nß„¬ùæ»¶âY‡%ž$ZÌPÛ}Ú€§b.>¼Œq³X0Ë.„©Â\|~˜˜°A»î߮ݒäŸ.G&ÁwIqÛN×îPœKŠ/çgìq¹ŸýsI…kä†F`ä­þŽ‹:Ú…‚fÎ`,î¼>ë½80çùóçÏ´UWuuk)‰D •i€¤‡T‚ÉüÿLt+лèàQr¥¨>¾¡ÿ¶ø3îžÞsÐ7âÒ¡H;®ÒK@Y@P,%WÕttô÷C/ßëé¿þö“P `  †W§Œá糸ègå¤Y•\‚ç8︒­œ:šÃç…qI‚§–BŠv¶(YÇÁ«CEqNh™˜€q¯VAÙßÁ¹8`6ïLáêÔMUx7¬¡½¸*©šr(Ÿ^¡˜Gz,ÃJ|sñU-ýEß ÄQÊvaîÞDNùvuR/¥î%V‡Ur†Ð`¦ÕéJšÆUóo“‹|hãÈp!:¨¾«UGæù51óÍýQMÃüèëendstream endobj 167 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1386 >> stream xœ%“YPSwÆï5€AÜ&­X{“2n(ƒZµ€:Q:­2" Xã!ì!!¹,aIÈÆMr. $$7Ä‚@ ‚B…V©Ë´Ú©µÕúÐaêL«Ó>´ÿ0·öåÌ9Oç;¿ï;8² Ãq<,95õhâ«nKà-<°qYàmp¥Kï-e†B$"C7†Ê×¢†5¨lº° Åñr¥Žf’er•¢¸°ˆnË‹îNJJˆ¾»kW’ðT¢(Η SÅT‘D*¦‚C™0C–W,¡TÂm‹(J¾çÎêêêx±T/S¾'¬.¦Š„é¥DQ%É~(+§„ÇÅR‰ðµ¼ø×5Y&•WR…0U–/Q”Š¥ÒW(1†aD¹’Ê(=°r-†¥a™Ø)l/v [‰[pÀƒwb!Ø~Ÿ]fàá±!kB*¦¨¥õZ@àÇë¾myÈC"”È·zœãVOû `z‡‡g¯OÝbÔW%Êsa5¹u AM¤_—]}1„n§ÞjИ Z©LçK€¨Ó;{{=΋ÏøZsÄY£Éû³r%å¤áæ¹ËÙP ª®L)Òæ€™ÐÙi‡›±õÛIv¶ëëI ú[•ª¦}‰À¬¯?A7pÛ×ÓõFÐåÕ»»<,k'­­Ž‘ÐhýS¿¡M?Žûq´ñ6Ú³À l Dò)ºJ BŪ{’q†² ­¶ÐTyK ‘ƒ)ZßÚd·3ŒÛEÎÌõJçóþ„h´E 7QäµúQ¹_ .qˆØr{~Õ*µgtÃwÄãgÏþZ\q˜’®šÔ´™í,cë°Ù}¦õ£«‹?’LãhþÑÜï<4½Çgš­n`ˆºMC—™Ì™AWšµPE7´;F ÌM*’‹ù÷]Œ¤%º¶½Á;â¸Ün#“ý»&oï×@:4A“YkR› ‰81uþ«Éþ!¯›ì븭Äÿé5ªhR-ª8"¢ÂØsÉͰ-½Æfë<ÝÔ•mëaÝ7oLÍ€X“C{Ê"°•õ=—{&F”£9'³Î¥§“'Óu" ÍpûÐ!ÄÃQšŸ‡Ò<|HiHOM¥MfsP‰Þa´³¿ü„Âï(§ÎUËä2¯l¬ÏÓΑLq¥¾ÀÇx íãkЪœ'¦r¤`âhÐÄ7q›‹t“Ýiµ:¬‚ÁÅ—îA Ð>–;œiÒ(AåRŽå„™©îpµy.:Èçm÷Z§­¾9tà9Jf{ ¬®zš¶˜L$m:ÈmÍáÈà7éƒfÜAwýøÔ÷èêC^@ÐðÑšÓ¿&r±ÜNnˆSîæÂ_¢-h7êCµ$÷ˆ[Ç¿ŽÎ>EË€¸š Õ~M®@WÌqg’8^*§Œ?_ûÆûÄ5)ˆªò’.’û¸óÎå—W<Ž W„$tG†ûm‘‘ö¡Eâendstream endobj 168 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 624 >> stream xœMÍOQÅç10 ZëG$iA;³C“†¯Äh Áh%1¸€Ä¨+˜ÐÆN W‡ ha`àIµÐ2S - —5,ܸŵqÁ†Ä¿€¼™¼.¤˜“{nî½gqîPõu€ñ =¿S›ÚÌV`^«3¯ÓˆôY1«»Ùhd«/[MWðÌe¿ˆá%Š ,¥^ôEÆâÑàhòíÃn¾Ûë½íá{ºº¼ü}Qˆ‡ýa~À‚臧KˆŠ çÛ{ŽÝíì”e¹Ã/J‘èhŸÛÃËAàIˆ¾Fø‡‘0äŸøE?{¯ã¬û"âX Q~ 2"DÃ!A’„ñ˜?ä—NAé•XË ¢†EÑWé ,Þž¡RõÔ8h S³[‡¤¯‚½›æQ [­´õÒÍz&›A«'×”¥y¤N»ªGäó´šR‘âDJVÕUóˆì;Œ¹e”F¬‘Ëú슒᪸Ø`îVËÍ…2ÚÚ‚h’«þ`ÞÄ„eTàìæÇ½M³¥ðÌwÚìÆŽæ¬šFï[ÈÅ仩®ÿ“´ö¢„›¾9VÓÅìj:—IçP–ÕÕ¢è"7Üyܾ¼¾¸FÎ8JL¥ìtcž¸‰ów*£¡yäœL(ñ‰Ü‡9î0´=s “¦§ŽYm"5«%U-‰Rl<¯V—ÑÆŽ 7þš"·äõ”a¬gK¹…Ý%ݵ°§}ÑöY»õìq/Ö ¥ÍŸXþK« 2æ0{‚=ˆÅ^æŸAzÒOÚO¾I8üˆÃ½ÿù^†xaO̱viÛº·É—ÞX9W9_Ù°ÙNu¢þ!N¬endstream endobj 169 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 7575 >> stream xœµzxTÕÖö†Ì9´IÏ„¢éUDŠôÞKHHémHïmfÖ̤÷2™’LBJ(¹"RiWQÁuâν߷gBÔû|÷^ïÿ=ßÏ“03gŸ³×»Þw­wíAÂôîÅH$Ù‚•ë&O2ÿëuqˆDÚK|UêFô¿¦v&YA)ôï½wèëZqÎ ¬~ 7 d¤I@hÒ‚À È]^Þa£ÝÆ8Lž5kæ8‡)“&Ír˜çï²ËÍ%Àa¥K˜·‡¿K}áç°>Ðm—GX¤ÃèÙÞaaAoMœ>ÁÅ?tB`ˆ×;cÆ9„ï óvXçê²ÛÃÝaQ`@˜Ã*Ëæ&X~.ôR†y„8¬ t÷ `fż€ù ‚‡, ]¶D¹t÷²p—å®+"ÝVF¹¯òXí¹ÆË{Ý®õ>|7úùož4yÊÔiӇϘù欷Þvš3*nô˜w߈ï?n|ô„‰ý¬f8³šÁ¬aF2k™×˜uÌzf³ÍldÆ0›˜±Ìfæ f 3ŸÇle0ã™mÌBf³y™È,b&1‹™ÉÌf)3•YÆLc–3Ó™Ì f%³Šy“ÄØ0ræe†g^aÂ[ÆŽ±g3C˜¡L#0Ïôaú2ØþL2ãÏ `¬™@æ%f ¤¯¤³’æ‰éÍh%ƒ%Å’¿÷Š–*¥boŸÞ7­4²q²Ö–`Ïsó¹Ê>N}þÖ÷@¿°~ÿ6øÑz©õ/¹¾ta Ã@Í@tׯ[þº<áåY/—òùý¯L|ÅÏvºíÏvvmöí/;øæ÷!φnúÍ«¯6 „‰B°Ð®°RìT´9è® ³vd83œ>vø’á‰#|OTYw& ·šÄ¥ICç<©8¼sŸV¨ÎކhP¥¦Å·®oí"·¸ÅlÔp~l¥ö®LСnÐï?ÂÄn ©®Ñkó´:ÅQ´µB ãµéºTH·÷_A‚Û¬¿ûàÕ´ªÍK"ÙÕ›ÐÈ£˜Ç£¹nE”2k±L¢U«Òhƒ½.¢ÇE[ùì…yRÁ:%Àz£&m»nÔÐgïí~ö’8¢ÀìÏ—O?—¿q@bÿåµ›!4õ®gá˜üšcK} ka>8î \Éɯ=cɰ+?V~äRNÊ6…uçŠÊ#î7Ù â6žy<ÿ‰­\ı¶Q—Ý&à@Ù㦛–o›I¤ŠIüãò‹çásîîÄ[ä¡«—_•ìš.ÁKÑUÅÊŸy©ÞBýÄ¡2´¿ï¯wg]%ÒÅJrƒ'ƒdŽêìFÖàö‡Ö Knž5Ra-ªªÅIFIím¬¿-}чǗG='È ±DBþç7°øñ{” $˜8ò;Á¹"èhÈaøša?œ¬:¼çh[Å8 ‡”5;kvÂZð/بtV:9lκÓSiêo²9õTôm ©¶•?:…ßòÄ gɸ g~ äò ;.R5B2á0‹H€[E¶ìÅv…üGìÀÍ{?BɽIäuƒ ‹Up% ¯P`"[ Ù ééŸ,lçÙ¼åø`/DV“éd*ÙIì ›L8Î(Ú·†TÛ<¿ˆ%·måñ]±?%#͹¸œê¬ÙåݓԽÚ] ìvuÓ 0›Íe3£[7~öûù{äQ>öÒ[!<\œÃ•œžóÊÖµ«kîÊGS‰ðÞÌyn†ƒAŠØ Ђ‘¦N‰I‚ÂQþDÚÔ9—÷«b{rØ“Á^2œŽÆ5¸Ž ÁÉd®‚¼ü7Þ’Dq_75žÈ>†‹Êö…‡ÖäN‡9@¤«½¶…­[û:…]¬zùØêpƒÍÞÛXB¹þ¥8ð#ž,þ÷‘Ч•¬Ç$+ùãÚ8×so!Üð±ä2èñëÈQœ.ÁÁCÆ:N~<Æ‚od 24.Ö7ȸù«î!‹ý.Ýþüfë´Mü!=Z{~áù[ù5|¿æ±Kfà-ù]yûµmºZ8mp@eÞÎnvž:¿Y(cï}‘­NPiÂã!˜ ¬ˆ1–U44øÕíä׿ƒ×’Ø\ª§6Ý+Á¡÷pC5ލ–Š7:gó]GSJEʲ&ýuÊáƒðš-ôaÇAa“5wØïò|g(ª±,D63Ñç a:fɺåØ_†c¡z} ¸jZN„£8£Ü¦±:ä}Œ¬{ßV~ÝqoL¿ ¸-Þnsfzþ:BPj2‹ƒ”H±c£ %?S«-/t:Е•v9¢© Ìbþå³þõñ Ÿ÷—Z4Öç/)<3¸©æàì•9ÙO'h“rA\!d–+~´( M ñq‚*=1)]åQë 1Àk%ë½K÷(ò{ Áµ©ŸÅR|ª•¦$†˜Ä×,‚œqÏ»ÉV#Þ?Ç*¸å— 9Å œÏîÏÈüD0±žš jpƒ१ù5°÷õ žŠå¬¼ô&ò¤Àed[¶S‰nm<û˃ÉdÔ¿U¨oÃÆ“£Áž¬"3ÈâB\p™Šëò˜+p³f¶v Õ8Ê€&|Ó ùù"®–â6á^“…÷¤b§ø߬˿&T™dÞªy´JyÀ»àm‰ê…þHéÀ8öO®ú]¥”?ŸÓž³®B“…?¡ì;Âc)þ³«hmJ0*[©@~kEâüdGæ[™Ø÷’³Qy ²dÔor!‹ØiÛÏŸ™ÞÖ!à×/>¹ª) 2–“pœ 8‡kë>æ¬ño/JÍÐ{RTšã×çßj̑ͦq¹Ãì‘Õ°7ô/"S%Ì‚Í{¾Aw¼n¼Øs0;[eÙsUB…8Ø$)c¥â4¼ÃçV–º åLl˜:@¡°C¥5ß“mÑä‡A$©ÓÓ^#9v¤76¤RâêìköC%—¿f½: ‚ÀM믳,9©…~8’ ]V¬.­ !#7#²"Oi<ƒ½ÅÝ&ÉAìcîHñÍOܺ~Sêb8ã%tÔ×4•»bç]^}ï§+—®æ+´9ôq{9q {°ÎÑ':«=4ŽàSÁÃx3û=ÄyÓ>ìÙV™ÙšüÞãËŽ› ›Ìa)iXJ']DwXÍc$} ê´¸I$×n46¤hti¿g?è34[Ô¡à=Qµ@‰:/.35ß?;b:I³‡†´º±ŒžÝ8¤Ã&­W÷ŠãP *ðEò‹]f¬>ÙŒƒ.+³èGl¶û‰´d$˜ß²/}76ªc” }5÷'?ÃmKp}©8²ž]’šà“~$S@GZa¿W‹ûþ­%Û›µÈq©¿!ª¦¶ÌPSÖ¸C«ØÓt,¿¸c§Ý§(È©‚#Ð\åQãª_®à©^à´ÛÏÃg#8WUh 5ô9ù¨é`§íº,ëQU‹þSÚ öÃ_ åª«z”IæÈ‚4)‘$°ë¬EªÅ—’Öjü˜f{°øŸ›o.x\a2D äŠ,L·ª–eýTÞ‚½¨é‘ÉHC×€¤PCš}l6MÞ–•âj«Yé»Û™p4¨¾²žŽio!õ K#ü€_Êâ¨ß{æ1ñç?Rœø±Í;k6šï1| á‰üûÑhföy8²·ºÃŠÞÄ…¥dQ'DùowRî4¸&t_ðAÕij[tgëŽT˜ö5ž¤…¢5Æä”E÷ÉYLFwe«gÕJ1¦s ŸT ÑFнãW'+ƒ¦XS©Òj ‚ë*ÿ“L”²™iZMFª8®ë±]n¼V“ \d—+Äcìh{Jê­Ù¦öئóî&õSp RtÍe»9ç_ó6t”Kºb!]oÌä³pÌWÕ{{šG†¸+HÒndF=Tü°ñ1U7q$¤ œül,õîÖGPZž—¬KKR§&«ï‘“!¶‚[}X‹ÿûpšiÔeʚΙ5êŸJ;=ð!;Étš[F“ñdq¥¶n™„‹p¾SÑI _“oø7Èào° ðõOoßÅ I.)#¯Îœ¨°Æ3–b‹Ó¾Ê1J°÷…‡w¥¸@\À#Ç~óþû‡õÅR,ħGÆAV¾§®ØPÕâٸ齛† „íwƒ\û³â*ÊL¬uçlZ‹öÕà9óüuÛžJ1/ò8G†ý‘ùòÉ÷£¿!¯*Èó?LÕÒZTXÊce÷H­îzé­Ú,ÈK€¤"u¡wdlƒäöØGq7í"ÏokÜPNÝz½eZÆÏm®>ï‚­ü¾'®â‰ƒ9ÀOrSi!3öÀÔ =©«¢å¨©¦¥é™ûò3Ä}|CHE Ÿ2(8Èlª­®h ©CiêœTksª&ø<~z~ä þ$ÚñäeÓÊb÷“pÆþÒÉ®ãÛFò¦S– M…Ôüã%î°Ìo)M|Šà½Î¿Îõà:¿IgNöæ‰ù׃ùéíñ—¢8ù£=)õ)µžÁy´Bq ·.˜07óØ&aíIÕyM³&/T=ï£eøÍÖêò³Ðêõ'L»Î{Ý£} ÏÍï±—B~ž,½5Ó@!9C;|É7b¨·‡Ï–]0'ÓÓŒË83.×rÍÆuJš¾<- ƒ…â Cìáj" ‘áÁ›Ož¾úñù´¯vNè]ZPZWWUUGí©'E}VÎk‘4WcÎ=Ì©–vNèœÅw¡,‚(i—*ÂéÅø”QZæ©+Ò!Â8ʉ];\pó“ÔÿGéß§pР7v8í5wGʱ¢²Œ|Jèr 7(ö)"Ó-‡Ýæƒ[%Ï/HŸÿ&”FZ»ê h¨ÊSöü׆µ®‡Hûˆ¨ôz]­öC]õˆušºîë›—s®½UWaöžª8¤.{¥.¶»q”kò Âcã©ËF¬íİTReŒm·aë4™ [4O†}{œ#é[ëqПšò,†¡·@öþ#”• z䯰pÄÜϼ4ÛÕ»À¶ë¼þÐÏ,Bè”ÐJ"½ Å÷:—ñ´«¥ìo`ÐUC5m£-¨*ÖŸÿãù®e®>öyÄûU½bïÎËwúíhøËߎ†u§à×eEç0:’þ*ýu˜x‹/;}(o¿ÙÛú«ý4t¼„åºànØþ¢1øÐI;U•¬N%c»\íÈ41N“¡Î¢Ciý¨1C­ZlÉÒNk÷šÓP^Æ÷숢k™.&hôÔqèÿåõW!#­À»:íôIúÄB(]vF!Î3í𭮬î7í»ß5¥Jc§Q²ÿ6æÜ–Š;ñ 7Ónz¾ã»Y%.°æ»Nð]”6Þ†w3&œ{è­+áÇà$|QqøÛ†‹™×áG¼ÈÞÖTG~—p‡p.äœ,Ç~Ws«©ºY>:o=Ì…”|‹–ÇŒ[çïd>ùTQ ´˜$ô¹Û:_æ«@&¬\>|Mz«Ž®«˜†?Yð57÷»Ô3€»/š»/;Y•ßbnáp Ÿ=ûÑdsü:?è¶Uòküó§8 …³'á‰=Ê&ß$ÖÄjÞÄ)냾´©à`Mdw²4*¡ò““-g€{pè­Yoo½a¥‚l > fŸj/&²²ZœOMnšŠsbLJòRªc vµ—é0²ûþøqµM+öžñ¾ýpîS[9að>ãoí9s‰"tkê©7^Ÿ»z®1¢Îd0Öw„ÁtìBa3p?PNŽW¯ vVøoߥ Ñ$kBÕ)¬IÑ@"'ïJHȆRá°ìVËâ1dè¢çï–~è­hJ3a×dõužôh)JÐúÁƒŸúh¸µâúˆŠn€q°It¡·]£ã,~š¹GÎv›ëa탭pâE=|áÀî>1·Sì³¢“TæÓ@r¶kå;V›x¢’¡Jìce {}+Œh{ÛæøÛMqÚ%q#îà±ß¬'„Ù¾3ÚÛKÀͬ!µ1¥6—.=(ÌRe¦hÔ JS„'m _n°#Û±"Y¯¦Hs‰­ ÇØHH.ÊÖé³2„ü’–“_BTïȉ,ñÔ¹ÃVNþ+-D«C]BÝ=ƒwPU®;õ¡žj‚6ÂÆÒꪪ¨jŸXï”Ó/ŽÅÞ ù/ÈýôÊÍ»±cØs›Fì¯4~nþa+ÿ;ŽïðgCìôŽ . j6åeÑÖªÓjµÀé 6Ý7eÁЕиxºC—’™ž™û ì+à¦Wþ7Ë,ȉÃ+o?8@ sÝ.»o+ïB;ü’¯b©?ØÜ^ÕšºË(ĸ“_UŒ±¤>wÿYç÷ß$/“!t& VÈ%ä>Bé·¥ëäS¾#RAÞµ<·„o簹ʯÿ³©Å‘mp“öמÜ/9 +MB™'l¡~f;lòò_½ƒöa ‰+ÄO®INUûP*‰Ïù\ó™WGÒeÄÔ…éå\ˆÌ‡¸Ò«/É=WXu i>Ýd ѳ‰Dé3™ ñ! x&ÐéèQ8’'´³ðþƒœ“•EwÜ­üËi,¥1;Œ5‡ÃŽ›¿Þ™)îàwÔ§ï…Rî£OZ/_9¿yÁ:÷í«½c ÿY˱¸À=œrzÒ¨·æMˆÔ9µ: ùñ-!ÕÔÅ<]0}ýèÁÃ~Zò ­¾½ýKsÂV!¢":oùn” /Í©hó‡UöóÞÝ ûé” Û"v ®Na.ð.G}3{ ò_>‚ƒ­•g82ð>v€ß¹È8æzÙVÑ²çø¾Â&j@w•:øf¬€Ü›»ÆNÌô9>—Üy.Å ¢5ÿ?ܹþOÖ“ø®y¥Íç”Í?þóÕòG]Rž‹9Ëç¥$ÿNÈÏn"W§þ|c‡3u Õ ÙÚ|]N¶9gbKÅ—Zà RÔ›Ûû`2´,’* Ù×Êʬ脉öpÂÉ©ÎñÒÎx“/.ƒ!b]ßÉb# <¼Šâ·d_ÔýIŒ¢ë¯²˜îOŠÌâ7UÞ餈®ÿKAš7üÙ#§#6·ñŽ­ükqZç0>ºØJãáèRœ%•DfGÑV¡Ü²¾$ÆN»¯ípeuLb©°'º,¥”NŒåÆöSæ/6ˆ¾â×õÉg¤øIá©KÓE•’Ahã‹kÇÎ߇óñ%ThVŠžËN×§&N^Läk„-¤W<‘Rã0'Ÿ ø€X%/ÝY–\V†>[ñû­1šÞ»õ<\OÀÐj5¾4ý“DàRÓÓSU .T|?ú4™ ÄÈ\O² $6qݧf¤gåÝÿå íØ«¥ð•yØO0b#ž7œ3ÿ¦jFæ"]D¦Z*~MUV©Ñ† Q²hÐhS³wœÛ\äÜÈqˆ ±ùvÂÓ“ï×µÖ+ò6wDì§¿`™‹öd:YNÆ’©d;Yƒy;ÎgŸWÔdaÿ&(áòR ZH¢7UCšj†Û„Ðñt^F^Áɸ×ã| ßÄWq.éER'¦L^ê íÅŠEGyˆ„ôØÝÎ+¶¤†·`õ”¢ôÃ;WÞ^߬(Œ ˆùÔ¦ìÍ #ÉÇ2)Öájþ )[ËRð0Ç(1]*¦coìJW²–ŠÕ]®NüÏzc>Péæù)ÑV*.ëtä3 Í*âò“rbÓUùëßç§ÅÑL«ír“ò‹2òòôtáÍî+ÓH.ô¼ðè®TÜ`þN‘5QÔ8Ù½÷ÛŽüÓS¦fï½ë×8{¤§ -ë3ƒ€G¸Í„Qü‡¢çŸLQº=çÑŠ}|«õ“cµ 4l”:Ü<¯¥jCö$ÑÉ- â9²/F q6ZˆãÕÃöñçÿò¸«¶¥'Ãöt{ùWÌJž©ëÜb"…°&ÃVàÆ“>”Iÿ1 ^ÿÛ–RèC7ñäîþ«šÒ÷îê¤PeAtYg­4Š J1 ?Ë(#®¬©ïÅ~BßÞ3 ýûsû÷¿hè?€aþÕVendstream endobj 170 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5714 >> stream xœX XSWöayy*n¤¯€:ï1Z—Ö][G­UqkQ±Vq-‚ˆ@X! Aöä†} {ÂEÜ7\*UƒÚܦ~Õ¶Zl­µU»Ì}öÒ™¹!@ÒýÏÌ÷…î{—sÏ9÷w~çwÂ#ìÇ_îåí={–ùÏIÜX7ÎŽû‹}&Jàö½Xíœì“Có¸¿ÜuæÆ†#á¶Q„='ŠM[.ŠJ‡ %îS^wŸ½`Áߦ¹Ï™5k»GD 8$À?ÒÝË_" Œð—àE¸ûFQ@H $Á}Ê"¡DµpæL©T:Ã?"f†H¼øõiîÒ‰Ð}C`L 8.p·û*Q¤Ä}D »Å»–_ËEQ±’@±»—hw 8’ ˆ¥‘¢¨è•âU1ïJÞ‹“úÇïZ›àµ{]àûA냅B6†z‡m Ø2K6{ŽbnÒø _›¸è)¯¿ñáÔi;¦Ï˜Iã‰÷‰õÄÄb±‘˜LxSˆMÄëÄfb ±•XFl#–Ó‰íÄ b±’˜I¬"fﳉ÷Ob.±šx“XC¼E¬%æ^Ä:b>1šð!œ áK¼Bøö„1–p$Hâ/C !†ÈE„1œXLŒ F£| xSñ+o>¯ÍÎծĮ×>Üt#¿$“7ù»ø©­Tó7‡¨†Nª6zXè°Oœæ8å~DÖˆ‡#óFÙòõpôÊљγo Æ Zè• W¾£tÏ«‹^}î2Õå;W¥ë§n#Ý|ÜZƬ“5æÆXzìú±±cKÆ~ÊÕŒàj€ñg#4Ýå5r¡öÐÄÝ¥S(4á È@J Þ«wU HW%§§ïITD¨dž“Uu ¹E ‚ÙÚŸá<²v‚c°„GÔ*ö9YÙšK3Š•ylzN, -çbi y™‘+Ùw(ì2zŸ˜ ·ÉEð\ȽB·‚òf)cC  Œ=Žºü¬+8—,Ãv[Ä@ÆúÁ•¤àøÓ[Μ+½Ï én~ß¾Fó¾é¶ûää³­G1‚ÏÞ¾!ññ>;Ý?3ò>6Áz“= Ãi8zÆÈ9̘‚F#ÁãiÐÚ=þ:3ȽE{xÝ~ôÍÕ«×o\Y=k†×R›@b#œi„×úCÈÇ!Ü… a%}ñ¹˷.,{sêÊÕ+ß~}ŠA“ûMiä=y päœþú¡oBx+xÒ¤* üCÀ½†ÿ/`Òzê-#ï Öbç½9wºÔ„Ab Õ´«aNµÃÄiH€F}÷´»v¢½VÏ¢°í|¹D„× ¾M–×c£1Øèvr„ô†í x¬î~øm·éóÛÇ{2–ë‰5B¿¾à\LÇM>8ÀßžéˆïÊYŽ%÷µ²=|‹qRfÒñ½0ºðwYÛ>PSÍ<ê-ÛÅ èU›Éx»¯ èuÌM~KzqÓ;„”Gc÷ÌV›mÁ§›àª.‚ãP ×Ñß]üg41•Òz@Õè*uÊ#ó·®IXëÍ >Ûg1…ìÈÁH…Ö,#ËÍÉŒrÙ÷Ÿjþðž›à8£=\ 4G¾Ô÷q0æ¼Ä÷ÑÖŒìíU„ZWp†5Ñ[ÈØ9ß0B¥1Üè"xÏÀBZ’+ÍçE澫©†Ö–Ç_”EDç0šÄìÄ@™ObMü P“©HS1~z?ïømÉ‚à™¿$~«`:R?OÚ<&((t–ÏÆ’;b&£*³$PæaßàË€¸¹¨BÓ®e:‚Ï© †sZ¿8Å žŸ­Ë3D²Î5ÂcFÞlÀ°ÚéºZÐÒÜ—¬aÖ$!•Èa»Ïf@-\ 8Nÿü§;m—%ˆ¨d³ó• ý.C¶Ï縌ä9#l(÷Ç>;½†Æ"O´ögä‡}|¤¹VÇÆ©%Ó–ô\3þ¤ã™/}¾ 1GÒp¾5‡hþ=ri Þ´Ô{=Nô×(‹œz-øæ­»G{ª€^ªŽKdÔ^öHµœ­g-wg„¾FÞâ=¹“t½m›ë‘/Bß?¾•ÅôVß«[Wp˜u—ÆA!ŠÛ@Îö­Þfd^<ü­•Ö„éA n’õ} W°¾ðÙ‡­?0aæ»Ù •a‹ÀÞVÖòÿ¼£ˆœjйÉâƒÃÅíóÅfž…·¼:.Êž[†ÓÙlÓ«ŸñÐmă· Ø1g3 ùè‘6DôÀ­Ô‚’½}æõÐÃí¼ .ÙžÛa>Aƒˆ ,â“ 1Ø~-¨f;Èm茣šÌlH:¡<œp9«Dö`'Çf¥ &SJ©É-ðŒc‡¥©H@üà¿ëA3{ õäJr䇀Û!STe¬ÿZS–SCiȼ-íhHnª6± hA;ȩȭ¡²<ÛøÔè|Þ´³záLÇqv­tMø)õ@j°‹b ÷ß“—“ÊÂpþõM_¢×vNË"ô²ºrCQ»†….»LS Šõ÷³á+XÁI´2 Ü6u̪˫Ÿ3‚¸vÐUp²…JÆÄô7>îq»‚}A* ¼ví;Øq¿NÌe¸ ÷Ö{xŠiHÂ)Ž‡È²Æ*꿇ÐÈzLZò̱¡ß½¾7Ñý-í ‡¢)hzË1Àú±ÜVgïÑ=h¤£(v™C¬gôcO¡:6,9î¹®4\ýg(õæ“R‡+SWÏ:üãö5Ö¦{±ù‡À7!$œBÛnòÿÔòú¢æFä™`:.åU¸Ú:mbžgEV{¯"Ⱥâœz F®tiî)é|së‹7rûŒ¼£þ ’—£¤ ô„´p75™Q¢O«žÓ\ë_ëŽG/r÷P»•xA’8Ò;X%WM^!(¥êªÄQ‰ Ñþû:ž‡®%¹Ì |¸i‚1=ö\äцH.Û£’¦1éIñ>€š·¼û›SȇcõA «V+êU§¯lº9ø¢¥ï£qs‘Ów¡3d÷ýPÙ“ &ØläuwÂúN{x”s¤•Á)‘鑸8öœœ µªü=ub ÔFK¼zÐÊö*øaqýÁÜCËEkø%;® ïܤBIi`^Z~ª6M JAYaaYNþW0_{ŽÒôF“/ýg¿UßÁ¸f*R¢ËêZ€öè·Ót0PblÙ‹Ë {Í!M¡»*vŽE¼©}òäá¿bu‚#†& †9¬àoô¿xÅû×{¾ï¾Ú}¥c£·G:aÎÉî­Ü+ωÔ»6|mfäÁÕ¯6”ˉ4$\Û›U*¬P7·fmΖ˯çîø«-¯‹ÔýMzÜ%øŠ‘wÞëp£X7ÒújÐÉ5? WѰ©“ÑH4âÙ$HCדëÍWŸšŸÆÆnÝ”"KÁÒÓ²û”æ]vóâùnpt‰‹^³ôX®ÐÈë4ÁFlU/ÐðHœy!¯¸(tÑGA/¸¶¦aÐ.THÏb½ò´ò x΃.p­äDéÅí=p´¥”{k}ðIë€X‘¼)yctÜ@ P ën­éÉ{˜oî #l ?â$yçSÐÌdínÓÕV.½ do/Þñ&³y²µ>C]“¬z ÖYeÓ¤~Õ´Ö³Œ<Ì"*\Û ¡ ëgR7>zäññY$±‘s½ Éi«±’S8üJ~tÕæÍ;WMÅwa®ò„KÐããó—àŽKÎMâÍmòà…n¸þ‘ p½Éÿä¹;ûÑŸÍüü¶°³…tŽê€¤PßÞ¼ÑӜҔh`õÚºÜRM~TmZ1 *kµMµñ-›’·«Cv°²aõ@M_±tÞÎÊÐòxV€ˆdYJlÄ ,)=|Á» ™zë—uðøÊ/]_µ'œÞÚÈ$ø×ÌÔJ2$Ôl9Hʲä2µdƒÜì²Üb C—éÉK«*jmÕ±õEà& z #xËoéÎÉýÞW=¼¾îoÏ-'hóhòžy,aທаâ?L?ÿÃìCöÁn[¿ÌuÆÒÇÓäoÒáÊ•ÁY˜’oß[ÿávßf±ËIèFÒ^m‡©ûKî¡¡ Zù¿©žPRpúVfÍ UTb?X "ªÃ*# ²}€º\÷ÉÖŒÕX„šMU%ŠÀ‰s—AaJ-£l’è%ƒÐ½ûÔ>]…ý{»¸1´EÑ·£#êBÃmðtÊŠ§ñ¤à§r0ÄÖˆD±±"QM¬ÁPSc`JÏùìUXq5ðªÙxl¤ é_HÁ›Ô–뉶ç60þ™GÔUêJuUX¿xF®}ê¹&¿¬µˆ9a”]ÁꙺñuÏ•à#ÊRvס¨‚wª(Á³…UþÚÀ6pÒíLÇ©ëphùôð|&'¶$]7 †]- >#1"•ÙÕ¶Ië‹Õ°ýÒEóÞ;áùE Vð¹ê'’²,j°ÍáDœê.}©ø…sLÅr°J᫽ÓI£…QáXDe¶<[“ƒ!Y@$•q’ØÄÈ%?€Ãpâ~èt…<â~ziv,Û`‚n&èŠ ú4Ft}ɤ3– MM e—ñßœƒn½Š-6³¥Çÿy,Œ4 3’]§YÿÒp$ä;¶ÙŒb3l´‰æ¡iŽðË«­¬ÞÑ«Øn£«m&«íwÉÏoáê›iùú¡/5C­æÃ-5Àa¾ºm‚ÉæÙ‡×<Юðù´ Y¡ïHwÏ-[6¯>û~×ÌÇf^¶ëG|0óéÓß‘6b'¾/yŸþñ®úJ÷Õ^¶`]ß³áäWmÞsp˜ùcþ6ÇM¤UÍR¨0Ëéz°ŸE]üà¸þbÿÚgfá»|AGÏᓇkËW3HÁ`„ÛØô_·d`åÉ9»’v‹ù>QU( wÃ@„"&Ö ÐT=ÄCâ#¯„SÛs"œÌ’Y·È†/H?t?u]Úµë°ô+>p»:?¥VR°ð—‚=Xøû Ÿ /¬m@žº:í£-œ»­H[d¹PÄjȽºˆ¾g#HΧž{ZšÄšËûA ßâƒú¬ÃÞÍGêË÷jê-É0>Çóqöã w‡6sJ|ºR™ÁÎÛ’¯’©ãTølqUFyõáüǘޅ³øVÒε¦w–sæª8{6™ì?½@§¤¦g^*ø­E†7ôÿ/bP yñÌ÷·ºÜyâ øœ‚N“n£hè¢ó‚ É•úÚJƒ6£4¥€)?q²å< î}¶cîÊíxz¿,‡i`Ç·4}ذ6W¨D ÄèêL\Œ ç-”B8ú€ò°£’a*I¡U|ÌoÁh¢ª/•ØÇÊuwËYM>8 ÔC>NZùþŠýå§4u–;iŽÑìac4È.[ÕÙÿGö%èkt>Öó~Œ2`j}ÂÙÃtç~ÃÇà#êÖ²O9­üpUh½Bgާ,½8+‡ii¹n¯ö £bÙ°h±*Xµ!S@$%øÉÌHÌ òÇ3ï}°nãÚY‹KNF³yyù@GÕÅëÄ’XyØœ'`ÞsùêÛGŒà ¸îsѳÙì§„N«¯:?€?¹¾â<¹¿Óò YrzFz!Š–)p±¤%i“J¥úD2I¢T (Y¹¬¢$?/¿€i64T”bÜOK•¥Iº¸} *j+uåM5 Ê| ¼ OòþE$]"ß{lÿ/âοî s2¤0 á‘É9~¥ÈÏU#ω3`hçUi*)¸îüÏ;ÌÒÃñÝpR7¯ãµqÛí9;ø7ú虜 ´µ ’õ$«à$ÇSÖdäçµÇË[8ÈŒT+åh¸ëk/}º˜T PØ´ì§dšä¸Ýúà )C#A&PS e‰ú–œ&m6SG8þô’çèUø ýSŸ…×úPGCO8š}àh{x‡s Û#ÂÅááAÍÑ­ê[ZtÑáOÏÌ Ö_4ÞúzÙe¼¨s¾peMÏWÆo­¹â"ø]OÀ&ú“¤£¾`+Øêë³&™Ze4’ó}ówÕÈÏäç‚ZÊS)M ÎÜ1ÿÂbH%3AfuÑÒ ê+˜|8¢úÌ}Ð :D?¢‰”àŸçànþÞÌÓŠŠ­{R3” ‰Â-½Q_§mÿÌûZÌ´÷iŠp –1|d—´f ð1ùˆ€‹Â©n‡ Å›÷ƒ3àÔ©C]ÅæËšßÇwÁ¬.8¡‹×ÖÙÕù+þ±ç–¿MçgçaÉP%¯”ƤÅc6A ¿¯ÌÜ£Êinñ²êº‚*<÷¯~¦o]ܶ-h½‡GûúÓ§Û/ÞbÞ\A+ã«nÔj«£üü⣔,Ú„©éÎîη~°ôƒOu¸pÛ²ÓpìpUsiiUÄ.¿x‘ÒL zÎOÇëäfÙsë9]RPZª©Úx­,%K¢`Ð=’ž” âÝ@Rarq¼]ËRrÔ¸$+ªµµÕøi‹AOG3Ò·tßëæà¼í9/ø”ÖîÅÀ Â3)îØŠ ž½<ð4.kÇoB1$Ño¤2¿iÇmX ƒÖÃü á&”§å&hѨ/w@7ÀÓ…c¾©()ÈåTa†.:íD®¨ ;1»msnÙí˜~òt…6ÆöcÊûbʃÃv<žÞ|sig  ÄéÒTyIZ^ ç#^9z ‹æÉAˆEcgÉñ…9•š/­o‚;¡+,2Ãï¡>Ž[Ž]†#/_×9_ã\‘ôÁ?áq˜OC‚tÝþ²lP(]iUy¥²H¥aÅ•ïî.ƒÄEWmAiNl.h `ШåÙ šO@n§{CCAhJ¤Æ3;šAÄeE‘ ¤7iR‚<¾$½4…¼õˆX¯LKJR·Lyˆ£n¨¢Õž Ò-„îÝ ö5©?Q5ôˆñÅLñbœ¼÷_ §­Ç“ MK c_ÃÏß³ž6ògÚ‹ æ²¼«‡ïtÃÅ8]ÒnÜ!` Ç[‰‡H-hbP2hÏ$8M •@؆7kÍn V+Ñh½3®ñIæúä`[-÷ò‘)3÷d%d)%/O¬l}þ´3î>è ‰ lïÍ/ÐdØ¢ÀwþÅ_ûõœ§þœöû4Ífíii—fÖu[༇`õÿº•¼,4À?]¦Ÿ>ªy!Ññ.pÓì9ß#é‚ …}›&OJgп¯J“©HuK(OÔÕ”—æ3#’K¸åEpI ‰ øÆ¡¦aÌP‡‘Ó£““Éi8AüooÅ|endstream endobj 171 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2824 >> stream xœ– P׆{˜nѨ­!Ñî!Š»"J‚˜¸¢(*Š¢¢"23²,#û„9ŒQPVEÄÁÁ-H$±â·¨/1ú´Œ ©H4Ñèi¼¾ªwSï%¯R¯nMMOUϹ÷þß9ÿ92Æ¢#“ÉXw¯Y+'v=—Þ–Iƒ{ICä@ü_8vz[‚­l-ŽîÐÞÀÄ>¸ª/#—Étq™îº IÑÚÐXåÈu£”Înn®c•'LpSÎŒŠÖ®SG*½Ô±¡AêXú#\é£[§ ŠMRŽü 46vÃ'§„„„ñꈘñºèi£Æ*´±¡Ê¥A1AÑñAJ]d¬r‘:"HÙsºñ=_ q±AÑJ/]`Pt$Ã0C"uî³£cæÆÆyª® ö ]ª pž8ÉåÝq ³˜ñf†1ŽŒ³ŒÉ,gV0£™YÌ8f63‡ñ`æ2ÎÌ<Æ“™ÄÌg¼˜EL?¦?3€á™Œ#Pu FÇœ“yÊJeR¯Ýòwå‰òK}-ÀâœåxË2«R´°YìS®»g5ÀªÁªÓ:ܦ—ÍR›‡¶Œ”c×i fÉÚ(C9Êp-ÊäÒ<Ëÿ¨9Ez¹{…ÎÐ zì¥ S7[ªØs(’«*¶Òð% ë:Tæ~l;ÔìZ™oZ/)™.ê?{…µ“Îf™¤·Œ²Z´Å"´•KÕ¨ãñm§GÄ™¸º %É öq茮÷a?Èž ´ºs>.5‰ ÇöšáS0mØ£+ _ðã&á/Øu¶¦›Ñ· ç—£Æ,;‡R^“¼3£Ó…¯„­q wŸ“óªf‚=ÙLÆGL48ŠŒÂ\ô@íÐzOV^jFlÔ‹›ÈXÂû:Ã|˜´×ç|h}Ø@~*¾~¢íÂÍÇ…'á&`oõA2Û°iW †*Ñ®ó ±Ã,ÃaØ_Œƒåõ³xÕ³—*ÉÅe8ûàzŒ'c±ñ‰÷¿ñRŽfïÃUíßMéj <«TßÐ5¡þóÖ;g'ôyúô rr Ä8ÞX€“ÐJøpcf2$qcò¾}Æ=-¾ü>Ðz¨?¤¬ä 2ù?Yݤjà6Tuƒp¡ g%åAYýeL¹,—zKÓùR(HÍÊ…M©Â–œ™Ù9º’àüà"Èh ßÁ¾qµÙbu¶1k4ljˆ57mį\XÒ¡²ÊôyÉÀÅCN¬HX62‹ PR&ì/=ú ìû3øFÚŸŒ2&ì5uÚüå… v.Þ '¹‹ åùs¢ B^Úö.=Ëak¥h÷‚£<ýÌR¿˜ñMJ“ù¯ÍŠ˜\%„Á"ð„Ez:8²ºuÑ iájX #w{]<ó9 -<ÙsõXë_ƒÃHö'È¥[Å­b]ا1[+‚ÂÑNò¤YÌšqz™ìZ2½›ä"9ò8ÌL†¡Z¡é7rd·þ6©eîÄ~y£¹í†Ðªöe=#"ÃÃ¥Jš®–T®åuÍá3iÿ´•ìôµ‹¦ÎزYâñg;âRäóªpÛ,äMQàÌ|K3ë• GEÉ‚R}ïU¥ráÎA¹„+_jj.ƒAõ³Ð¢(ßå›àCqa”@%Gdmü8פ°Õãñï‘©ýé#*‰ëïDYsXÉ«™)4æ<à”´VìÍŠÕ¹aQ@d÷]z ì3zðÊdIVOe.ZË¥P´â‹6BFŠ^Ÿž-d&n˜çq{ìlÂAgs³õz}®^ÌÉIK…hN]—¼¯¼~׉;„Í_N<æPcaÉàp:×"WðŠÚ[F\ÞÒ½O~·Ç]uþŠÎZ6®4 ÆƒîóÎðIDI†>zíÏœ(5}YôxÍJb‰ìåw¼zÑÊ4Zb¤/`ÿ/¨ÅUÔ‹µmgó+¡š“ŒÔ ³LèSƒÓz,sS»\Z‰Q|e>ì;˜yÓÿ„¨nòÙµ„F˜ðž#éG”O&àsìÙžâTÈJÑç¤e‰Qó=ãýèŽz|»M¬±04æ-7•:\a†ç°ƒØæ­âìð!˜ñ…ch°|ú Ël"º2Za&6OO¿(1î4èsó…ÔŒMÉÏ­;”´¿ÂTÜÜÒ4{‘Npœ©ºA^ü¹Ùtî Ñ‹ë±µÇñ:ȱ?ãqšßÿáÞdÆÞ#nâ˱=<5†ç`¢ë9ÔtÇp`ñ-©ƒG'p›ë ®ÄI$"¶*h;!þ‡pbûÍC˜V'«½ƒ1ÏòïÈq ÎçOFµA1p(œùêjK¤)½P¬)©Ú¶Ç“³Ò¸øÝ‰û÷ï.-¯J:¤Viâ“âMUàŽ•T'aÙ´9á…š&­˜œ˜ ! ª .O‰ÉòŠ…¥œ÷Åy¸§Üýäæ·Kj¢‹¿ª0 ¢!²óTéõ´¶çïÜÅ¡M>ïWއ+÷¿?x¸ˆmÄ¿~5Í74t y“¼ÒVá<‹¿5à®´ú“<|õìˆ._ÿIAfþn/?û¿{pç7éÆx31¢Éܯ›G=: êŸ*íÇh/6¿„O¸ÇïÜ%^ÂKËß<íòëo@ðÛÿÚ(àPzEÔA-ÄÁ<º4-ÚÓ¡wôÀýRôÝî=›·¦%ê3Óôböªðx,€ÌK›Û¹þ©Y­™7c¤åXÆ+4Ñ@èºÕÍ{™Þ…¼/ÚáEš/RËÏ8¬+åÓ)ç××jµAAµÚÆ£ÆÚFÌ&ž´ðÎþ¡Ë]jzÕ ¯ÏKÃv‡’:ZzâDtÎçÿ[Ãkô_Õpíµ@/¦þa èùÈ;ïQí§‰Åð5sÃR„”{s‹ÀðõŠ÷ãþö€$»}úü‘Џ©ço¼Ò5CÑãm57—ÉðC´”ã£N–¯É…0aæ"§¸DU©â0´æ7ìâ^VQÅ6~…t=ƒ¦£Ò­ñÚ·˜emhÞ8@.0ŒšnN|¦wjÆæÌ©JëÁIQèûïDù?/·ÀC­•×höZŽ^0v…9µ²ÖT~¼)¼<|›Ðp¼u[9píÍ3ܧ®pרDA26A.$Ù'K“»¶Lo8Šö;|4™d_c/ô겂Ýx—6*ê·ï¹µÎO4ï(®…ƒ\cdF©vz¼œÎOn·¾|*úGâT-|[ýù9¸ÅÝt?ODbáæ=eÕÑ”ý5‡KWfÔ­)š/C>pÀ#"b‹˜FŒÒFåå¦ëô[r³r ¶pÉùP&tËI}NšOõüª«ðæ 3ßa-ÍTìÓo‹NÊ…Ôtt¼\l©Â#DAd*¶ÆðˆÖB<‚ên=GS7—t<¹F ç–×ð gü-‹hPæ8êºÚñx©„¯Û\M]©ŠŽ°—kKO£­ð#(J×çBv†àŸ²z£^üv®Ù“iÈ1ä—É"i¦ÕƲBC^áv¡h·©ùUÆ}àCIŸà…»?ÕŠ­»*LQÕÁë“Ö¸ÜrEßñû¢ÝäûdÈ:¿Ía*:µØàìvY¶Êñ"ÎæÛI«k—^$yïÀ€²Â"ñ/`ÍÖ(³¬-\Ël­êvØÚ¢¬Ò¶wž­Ãü²ï]endstream endobj 172 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 815 >> stream xœuKlW†çÆa<€›>T#žö°¨*dL„ŠR¡F(mÓªeCCƒd97¶ëW°'žÆ¥õ`;ÇÇvâ×ĉìAib%.(¡»n@tÛnÚeU ö÷šk$¦™ªj,®Î9÷éÿþq½=BÈ<2z᳓ο۷è!D÷Ð#&`…Îûä.°˜ÀÒûý³7Hîu’x•ȯq.:CâÙ ŽøÜ®8ê’¼8è’ô! ^»}XšÎx%iêÝ'dYv¸‚QG8âyïØqQöI^ñSÅ‘žÏ…C’ø‘+ˆEƒÏa”‘ppjZÂq4<#¡ŽFñ•iWÀÁ.ý{§ÇÄ!‰ã8~Òýiä¸Ï¹ËÜ-”E€rœY·ÍõrKèmô1ÚîéïÉÒLͰBƒNÞ ¾:"_L¤EŸ[¡}óA¥ÅÜÂ-J¿óâÙ¬}i† ð»¿ð†ðütv.«ª0 ׊PÍ>V·<ÚXAyðlÌ .ðoáÍàce­ ZU?ÌÙ?\k~óS¦yh dÒ ÷S+þf¬ª†Ë¿Ûº? ÿ yÔ×0l·ÜW>`(mH Š•§mÿš³iší;ë·7òk9vÄÎ/\j)ÛÍÐÒ‘îBóÒ†û‡sUI”pûCuÛ_»XHä:Òx9Þô7b·¯}—’<ãð‰Ð×Y%ñ6úƒS§ŸÄ­+«P¯Ï@ÜÞÝàã3 Ë«°bר‘6q4èzÝ8=Mÿ´j‹åEXÒ3¬$æ’ê¼jë>`ËñT& ©,¦—géVÛ_Kç¡ U©hµ/Û»u’ÝE‹]Ù‹ÁU{·Å_½Tìò›u¹X,Aªjñ«Rw‹Ôö]Ru[B"•Tå9mÎN×të äd6³”JR+ä¡T³Ñu6þ2)‡»­ÛßIàG½÷¿ÎðKä 1?!GA NþßäÙ0;Ìö±SìÑ+¶“Áÿì<; Ìü$A }Ñá5žÒÌí=í½¶=½û&–Ýíë‹þ^ḜB¶˜endstream endobj 173 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 3147 >> stream xœ}VyPg–—­´ &ÇD˜$ÝdO‘YŸqm2ö8v‰ÛøHL ƒ¸ HBâ—ZB-½Ö}‚u Œ7ƒ¯;øÀ¬“õOfS³Y¯gœx+›Š3“ú7Ùl ffwª¦æ/õu¿÷ûÞïx|Þ‚ŸÏ,cçÎíkVÇ¿þ‚y–Ï<—À1éé§^àñvñöñÒyûy+xY¼7y+y«x[yky;x^ÞÞã|#ø4ßÄ7óDÜýððNñ•P)X,øhÁò…‰ / s{{»µ(uÑ«‹¦û÷'žKÚËPÉÌ×dˆYâ£GWÚ¦÷.‹¨ô˜²UÓæñ;‚vœ6yNÛ:BH±…l!kØâsDiK[lâþ6î,,Ý™Å>]ŸKhFØ¡þâÓÑ/. Pj ôxÍÖÒ½Y€Õi]ágÄ"£(&±sG2Öd½£¨Ãõ‰eC6Ô¨•õ%»¡S»Àä¢é ÷Ý ž,èn*­¦È¦÷ˆd¦˜ MÜCé·Os§N¢—&̳Ìb‘ÄXSUX£³!Šø†ÇsOlbS —~íÓ†¨?¯>OÂ>L¦x•MjÜ |HßÑ ]X¸ÞS-+¯Îɜ̿‹^FKÆj;T\ÚUa=ì,räÛa‹F®Þë8§-hÓgŽWÅPcŒYãx_0Cϼ#2ìÊh$Iü­šÖì;¬RY9[ÅÊØv-°¡WÆÆmĹ` ÝtVvº³šÌ4a2¹†¬íÏR,>«ÏâsÓ¦I³ºé€]oi&°›R@¼f.ƒsIK5*¨!¢£`”•‚&Ð9êB ›À>CöO?ŸD+b.´îOèâÂ'__ý°‡—7²X>e5¡vƒÅ &¿OF?pÓO¡Œ úša^=]t«AI¬ Ÿ[ƒ`Ã|*W%1kðvíÂÂ5Ôª$î 3ØÁ–:Pbû‡ÄNÆß -#EêñÜ¥ä%€U«½½“Ýâ#’g6@l†ã3‹™‡"ç€Ùý°n<$è‰RXG•B9¼a.ÕÆ:!` €ÁGø N#´ÅHQ*ög³})êCóŽUê¹S~‚ÉF€›ïßPYŠÅ & 1 e×hŒúz-^²ê0+d7¶BØÐÑjš¢Áf0YýX2ÓÄæ…FïÎK7í¾"`ê˜'E–Vî=vÌÏ1J]¯kÐà}sY‹R+ÓJuÒv[JKCî[Û{Ÿ<å›ê»G;ÁÕbãG./d—iæil:fÅ?éîÌუ•j™¶–ÈA™ ‡°—¯•_îóuuáM全òÈJÄÙÐ9æºácà…VËéòB‹I-jEi}ÖÁ±Â©ï¾»váÉÌ›dõÝ ñO|Š*¾0iÌ¢zî鯯úCh1¹Ÿ DGFÎ|“}–Me—²/¬¹´áhéß{l:»No04ëð é,T€íž½r"øuß›¼xò"ôÁPS«K~”3?¹G/3ßq“3¹îvÎ¥Ž`S„20‚ªv–?ûqÊkÌ5*l§€ç…µ$Çîœ×o4zˆc䟧ø“Y[Š:¿îèz Ó7•å z ßÜË zã°z¹ $h‰Lš Bì´ÕìFÏ1£)´ðî<“Š&=ê›ÛjgÒg–p³KgoÌs#µ.^Ûf¢ >1wÁ 8Iˆ¿Õ«j %à·Ä ÀslÞ ÅܹFü±Ï͘ÕChp5qÄ,æˆYÅæÒøãº81]à &îj¨ÊÐ`¤Ø³{RXhöiýgÂÍ<­×@CÄ9;6UGkµÖ–¿ Ö¥¡Ib©9Á?ƒMa:R,:0XÕÈ4{7Å^g68Á `žãm#ÇÛÀ=FCË~ïñ'¾DŸ|)`œŽïþEÇuį„íHhio½ió¤:¾¶v°@'”‡[ÔÅЀ)üª@g44t*;|¤d‡2½×USj9û¶å/ã ×…¯ÏÊ_Ö­~R[ jý§ÌÎhÃÂJO­¬¢Jœ3&?qqäòï¹FKh;–<U!ˆ¡‰:ÏI>úyÇÏDæ‘È1»f'ÝÃÄn"¤—Ôo)( d²Gׯ."q“èÛJ¼ßbw×L³?ÅÙ¡¿Þç?6eü”LÜÐopCï‚›TWüvžÿºÍd¥mÄuä_ˆ…÷ý{‹šËt B+ÑB ÆòPxÿ£ÿÛVΖŒƒVkÀ+7çÖ)+Õ††c¶-=„©•k£>Û“º¸9ø8^ùƒ'„ GùèäÇ—¾ ‘™M¢8}o4dx³‘4r.ÉÝeÛ“VS5ì²ÙÛ-sf”ªêÞ6§Ç†[ãh§­£ú]=l-´PjƒÊÖÝ#ùç» ácî‹`ÂæÖØÒHá5o(Þ? Xm“{Àg [Ž7aüËŽè+§'93qêäY°qi2z œóéLF0š PšPaõîÚㆻ½9’ìæ_gà%â‚|q‡ì¶¬í1«‚|Tþ(²¶»†Àúÿ}qö7”ŠÃaHmp«|í¿Ù„[œÞóChet¼%7`x<ÒåÌ”ŒA?„ÃÇz|Þ«¡îmåî#€I©Î`ÈsÚÑOt!ž¹Í5diKµ†¹‚¶9ÖËŒ%Íø!v—ê ™G©SúV¯ì ¼÷BÔÞeï"’Q7»¿½þ=m ÐaZt½r¸ ´¦R" Êz=^‹Ó…›M4MFÓÆÆÍÅ»JK ’äš§0N’V÷矡E\,vÃ÷ü»ß о QT©¨Ë+*"òh4‰rñÿ“ù•‰sÜÓ "EhÍʳ›ÙçÙ”¸»®¼²éáµ[á«¿Á½zËÆ›ˆ]`qû^S¯¿çøñð©áhdÄgÐs¬Öc*»"ÖŠv8[:‹ÞÝ}°ð0¾u¼¡Hev{ÎY}¶NÏ鿪Š4\"—p}ßîA·CüÑë¨ïº€ù€¡DוˆXÆìJ¶ŸU®ˆ²‚ûè´ Î^aŸù¦ƒŸÜ<~vð#Ž/gmïdf5¿/O'4GEdvõ+âŒâ­â¬\Ϊ£_Ú.uþ7—X ä-ô?A¾·Uþ+z“³Ö‡ &WvTɤr…ÚJº4¸¯Á/…<ȯÍ,Ë.Ï-,9™P6 ¹àî Os{¯Gïjj& Í8Y£zŠJåçìl{õåГÿ^ÂÝì ›´Mþþf1›«±-áÍ¿»yúÜÅܹgøÐüÎ\¸9;„žƒ),¹*Äd¸Ý^T²yîÇb‹o%⋼LZÔaKJâñþ8«Ì]endstream endobj 174 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 4016 >> stream xœ­WyXSg¾>1K©‚©¦Î=‡VÇb«¶¶N­:¶ZKU:.ˆŠXÙwB;!ÙóKBH ,!@È""( j±¸´h7Vët³÷éÜÞ¶ö þ¸ ·vÚû<¹óäÉs’“ç|ù¾÷÷¾ïïý±ˆ©S‹5mãÖ][V<7þq±oË÷»)¾ÿ` ™˜{’Ñh?˜Å†YS›7wjꛃŠE‘³ 6‹•™«Ü˜)(¦$%çÇ- Z±zõª¥AÏ?÷Üê   ”¸~ÐÖ˜œä„Œ˜ü%=(<3.%!§0(øÉ99‚5Ï>›ŸŸ¿<&#{y¦0éå%KƒòSr’ƒv&d'óâƒ^Ïäçm‹ÉHšÜÝòÉËÆÌ AnN‚0hkf|‚O½ÿjæFAˆ0;'74¦ 0nk|BbRòΔðôŒϯYNOÛ‰…ÄbF,&‰]Änbñ ñ*Iì#^#–!ÄëÄ&b3±…x%V[‰mDH, %‚0FÄTÂÍ g}?eË”!¶hê›S¯úEú½Ë)äü8­‚Ü=}Úôԯ͛?óÞ¬ªGÂüŸõëQÛl¿ÙÌœü€U¢€*ŸÖT^´ÏëÛìb}„v!?nô+ÑšdL¯/=©5”Ø)25€Z´ÍprÖBsÔÚ 0Ð*C’ß/3;ʪßGóQÇάñËÏ–FˤP u€‰ê€#¦N8 íÚ¶ñ‡-¨©P€(BkkÐÑÑ£½[oO¥JF¦3lîA憓Àñ÷“¹}ËÜ,”4Œ¶³QÚÈ5»-ufwÅ)0Tª¬ïýè*ÇŒQy[03Åq´$E[y䦤_µ¡%ær(% +ÖP `Iyzg¥§¼ÁVO»»ÑT"?ÞåÞ·úÍíJÙŸÒ IŸ#Ê(ˆ“ì)/s…Áà6S5Wjû½@6_&ÒhDôzfP§Ò«A˓ي]Žjk­•ò Çp¾ãF]Þß­ÏÒÿ6/ð+×7Æ-k·B+hçfù¦ô_þ=á™ù”VÂEþ~ ×È÷w\dXs‘#’aàlPëm„"-è4bšY0vÄ/ðÛ…J±iÁÄÏePE£O8èI4 Mûþ“Í}Ëh&ˆ¹ÎefsÒÁdµ˜Ê ú jóCë9_YþõôÚ…ÌÚßg»è”+Èq…í³ /÷ë—W2³.ó$³xÑ…­Ÿ Ùˆ‹~Šb,Œ‹Ÿè}ÿdb·œ¦;†O4wÙßt`Gtí4×Þ¨}@úÈõŽ.ó²ÐÓ·Ù£§F×q ¥ ”’F½M®Sƒ¬„úÓ†èËaU‘Àcb™4&—‘2/ý¸Q(±Pê‰r9¨UJPhé½Ì:fÎ/¹ê…³èÉó´âšB|ùeß5 ï¶?³2KZz¼,v“¡º”Â'böxÑÒ‰Sù¶¿Ëþœ™ËU¤+´ñz²3PiV[éFLß&h6­w‚˜¾9ˆ÷‚¥Übm(­¢ÛÑbk‘'vxx?3Q0Zòãöþíû¢“Rø´t(Ê!ü ¬PH™IŸËáÚÚÎ_?doùδ3“ÿ-F‡ì2L~Ëf2˜Œ6Út æÉÛ^ÔÚÆ í`¾‚¤\ƒÑTÒ.-Ö^N ÆPÉ¡Ì @2þõ2jò»Í±ŠJ}±‚OƒN§-)-‹Ýd¬)¥Î ÁøŸ€‘ç‚FÚ<UðZAî ×p†‘ÞÖj5´â“Îá “ñš@'ÑfÓzµ¾d|;”VJkŒÔAbjPAðÆ’8Er(”XÁ5Š=(5Å4óøX«"ó ÷!}Ù V'éï[-«C—¯;qM–Üd#;êæL½ˆû)˜¡ \âd™6 Ô¤¤¬ ¡Æ[Ù5jO}=)2WDÉãkSÿE 6[ÙŒ˜Keî·n å#'ÝWo)Ï¢€·ö0/ðÉ=&ï•Ãn2M°vQn˜ù”ˆ:e†£`$k%y9™EQÛ†’ÞCOw"ÿ¾Ûëjb˨À»™–$[Ïãõu#7;äñv*M£€œ”YŠê«=}±][˜é±ÏDP÷àåKâ&éna•ñ¼h£ ³ém6ªð-âÞâTÛ1íJ@D¯åt àÒJ0‚™WWd– åyØ â™ü^ä=óg#sD¯Ñˆ@Ì‹løöÔ};“‚¾PA¾·~'ðTY¡ÊÚ„¥Ýz_ÚÏ£Ãl_¹o×h1˜ÁDÚÎü %_¡£^ezÕ… +‘ð 2ù€Œ*9Ö:Üú¹g„¶Õ™+¡–<™ê^žÌ«&a7V–R6oã×C@ÚíÚ¬l¹@Og…dm€råÿô`[ss=U³»GU Pçqzk:CЉ­êõ¹*J^ð§ ³ ±òÁVݹîKßøÄ^ÖïØ¾6ìÖ&«­H'†¨LeRИÚˆ‚ý¦ãŠWò*N5Ø¡FçÖÚôP šq{dȱÄùëw†ì‚XHö(ºz#Xìt·yò+ò´;àåM§ã.Þùò£/Ü÷-pKç@Äzex^à5ôßç¸ö}y‡óF硦)SÔz*°·§ ­*mÃff0K™Å/ö…|D^k‡cuGúÉÓÈÊÝÏ„)Ò¶®Ù¼ýŠsÍ'½hzÍQÚ3Üw²71ODŒN¯Ö©ðãdîÊ(ëF¥›5x¼Éöñ}OsãäˆòÍœ sðw¥î+S¹oï³ |j73/g¢j`¨2ÓŸtòPmN\¶t_I"-‹Õkd…æ­ÝZȆ¢Êf[™œdCžE"æ¥ÆÍé;ÑÚÙ\M¹vöË€üîzÜu‘šü!2>È|c ÞÞck£íGçm­•gŽƒ ×Öb³]²®l" ÑÌ\N..ЬùjìüüpßέÃ%â1¼_‹sÇâði”ާé K,Z+Ý m&œÏàðý‡C–CiÒ;ºpâêXJ«Ï×4ßÀûÎXJ'ð*ÀlµØ}ÓGYø6óÄØ…‡Ý&ººptë„nmÇøªÖñ覄ü0°•ÀZêüß@²&åÄö]Ál@世µr½^K+¤z™ x²r¨žèC7ÑBîC(ñÏ`”bCcCEkE}½R~W­–w&Á“¸,…Y¢þÉ ËZ¾š0huN¶Œ¯, 3^’¤Jñ‹'NÐ`z“ñõ±wZÑÓ¥Tàgj_דoç ò3….E¥«©öfò9Ôz=ž>¢Âãß}ÍMæQ†…ßÓ"Ü{†´EëV95ýâùÅ6mu¡]lÏ…$ò¹uO=¿~}û÷Í&;FƒSÎ^*©nü„L‚N©×âÈ©2k,Vƒ±ÜFÙ -å»/à/±Ñã(à²;«…z¥¦¥Mæô2µ1ÅYÔÝäÇ×>»u§iÓ†,½R“KéÅ~M3ó~”{”uçí’ñsư±©ó¡˜·§=ñD§«ÑSAU®¼ˆÓßxuÔ*Pk)¥°(¤ &x?Ù¦ÿèÐO3ö¶a´ççcv?u‡Nö ]²ö ”|] ÊTübô=‚VN>ÃûÅCÿº¶n†¹ö‡D8A).GÔFÁvØ—šòçÜî³×—éE,Ë5Ê}€³MUªRéõÅRêåE!J¾V=Žu)u@©³ßrø8ÅÌã+ÒòuÀSLfu<0Ñ=ÐkêcЧ=6¡ÁÉùRD+8(2H ¹&•*Áb,3”âÖc˽bu#‡uaØW7£Yn´ð=6Zú!÷ä§t{kÐòÛ_œÄ%Ñ´u§×1Á«™¨Ð|Ktïõ£hVgMÉa‰J­Vé@gÐQi©¤$?ñ‰mR¹¹éÒGhòï>.x‰ùýÊUÁ;¨(ALvLDÈ*YNŽã 9ŒFì…¶¦šöfœšò=E …Þ\œÑ´>ôªýAØÓÐâØøÍ›!âm¢Ò$[|Y:È D§ÓûÜE™wb1,´‡Á×yß"á®[T—™–š‘šUSÔÐæmm¦‡ÿŠþÂ=(re¦¤§¥çTå7µy[¼ÔĬñØ¿ú˜®Û·Ñ޲UncŸæ12“š1u•kÖtwÙ¬Yñ?)W÷¡endstream endobj 175 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5539 >> stream xœ•X xÕÚžf ‚€ƒ­àL¡×"²/‚(‹ì •M@ÖÒ–îI›¦{Ò¤iÓ,'[Ó¦iš.I÷ZJYE® ŠB¯(WEW\ðŒÿá>Ï’ïÅ»<]3sæœoyßï{¿áA7hÉš Q7NŸæù0ÍãÆ àžäç <èƒy ˜‚ƒšÇ<ùùކÁ=|/#O³D”ž'NJH”„=;!lúܹs&…͘6mnØ¢´xqRlŒ0lMŒ$1>-F‚?¤†mÅ&ÅKòžž—(‘¤??ujNNΔ˜´Ì)"q‚ “Âr’$‰aëã3ãÅÙñqaËEBIØÚ˜´ø°û&N¹ÿÏQZz–$^¶F/±`‘P”¾t™xyæ IdVvNÌê=Qy±kâÖÆGï})!q}Ò†ä”M©iӦϘY8ëÙÙãæ†?ÿ—yó<=aÛÄI;&O!ˆqD4ñ±ŽxŠˆ 6ã‰ÄÓÄ&bñ2±™ØB,&&KˆÉÄ+ÄRb ±Œ˜J,'¦+ˆéD$±’˜I¬"f«‰(b6±†XK 'F#‰Çˆ]MŒ"'øÄD1šO ÁƒˆÁÄ<"˜x„X@ %† q&ð‚<ž€·ŠwaÀ_œâ‡óE}%Ø*øšÌ"?˜;ðW*—BƒÖ º2xêà+C69<)¸üÁ#ñC#†ž&vñÑ’Gï 7Ž FDŽ ¹vdãc!ÕÒÿ®èÝŸ/~xÁ“ìì"•XÍÈ^\ª.TØ_] Æa¶îÄ\læNÐmduKÑR–ÞŸßz2í O™üé(„dÁý ‡øA‘KvÃlL ÷¢ì?_s?§…@΢Aþ6Ó@¢9èÊFxE°Ïÿ¬o/*Íäit«,±4€ÐzPÔƒaÈ)>çðlÞðxž Ç£×:?T¥¼¬¼¤«HI@]”ºj+„àëV}¨@Gð×àpÐ ÞÑ ÞþCv¼v4'kèÖé%†(°DQ˜X‡«Àag¬ÖÓ®è¢ôù$(9Ö,/ë‹z@5p['åËÇ÷nÞœ!é‚¡0ú9âµÔ»O&ô3òC7ô7Ë*î´’\QþXÏÝSk 0°Ô¡žZí¯˜?o­¯£/ÿ§V 0={=ÉõEÍöAÅÓE:¼Nî!e¢þ Ü?¶#Œ[UšV–ákG%l£\8‚KuójoòîÅÍ ÿÖ. AÅik4À j ÝÁø°²™üA£@ Ô»ç(e{¢öjóuf‹Ù*¨je½0?I±cO›èðõ³Ÿje´‰» ù >— y´]ig©UJF¿;k' žßÖ{¡ï [;ÐXY½N¯Õ*$vtT:?lC+g¡Iãž¾8Ç8ô­ÛNÆ//â99]Q[Ve®¢ôäü{BA¾¿‡_÷¹‘²ÙëœLPã‡Ï¯¦”‰æ y!’íÂu²DJGjNí†åj‹².*Ú×›‹õ„þáÛ~ĉzÒ˜j*ßf[X–dÊ(K6f·âžÚª;¨@t]Àôªõëáõ.=[P··-„b±Œ¢pteñ­×Ž9;ºY]©N””ç|æ5 mUÑëv¾vò¾úâÆåºÙêÒ´âm¬l€òÇ©þ¥l`UŸ‡Ã¦#Çsê’ýRc:]òoJþÝÀjþ7NˆÝÿñ^©Yl–¡Ò… ‹y_¿ãczácnÞÍ °û¾n Û«Áßà˜IKQŒ†âß‚ÏçAõîÍf/.4¥ùElÆžm¹1€Z³ û¶ª—nìë;}P߃ç2å@«+a½ý+wón\†\äs=œ†¾»Ç[rP”rJž„” ’ ?˜8ê¯öŸº˜Ž[ \¤Pã½—éqÊv÷•ý0²úÛôukÍw€ú¬]¾hU2Z^´›MGDn*.~Ô}A‡%ž÷têzirê­¦ú²®Öž«À¸»˜UÝn;ðö"?oW¬\Ábù©(˜J…û“üw.ˆ=lòo9±_áE¹¡',ëæX¨¥á£$|ü úñêæÐåþŠñhˆIŒyúWòvËêØ¨èì8oMÈë…‹Þ9Õ wôòì§]€ê3|˜æ¦‹ñPTl Yà€³ªÎ`dŠvé@ýpóóÛ*—²–m­v«ôf±³Ø(§³¦¥FÞ¹^Sš¶Íp&U¤ê©Y3¦&8R j6W"KÆ"O2«%Ïî/YÔ²ë«á˜ä´û'8 =cÚÁá@z{Z×±³§{ÝÇ÷%ïX³.z-+DßÓÏD÷¨­î9ÒĶ:là" nÝË¢žŠÂÞÖ¼ÕzŠ¿Z?œPžàüÏ3X,R þ§ЋƭýÂ|üí|Mßã#¥ÜXxŠþèHçypŠº¸á20hå-¤Ã@+ë©ôÙ~ÊßüÏÇ?`Ìí‹ðó|®{Œ†ôjÈ{ ·¶1h=ŠA!ïý> GÃpƒªÑçôʸ?èŸaØç—ºŸŽž™‚ÖDôKÊ¡îŸêyÜ$íÊôfL;»²:;¿D¡R3RñŽEKTR]¶¤QвüæîžZW;³üÞlÁ¤€pIÇ} Îö…Ö 8òKhëãsCà.R7N} þN}³ðîçãæ¡ µâú|W‹³¡Éª²©ÍLÃá“ßÔ¤¼8 š³T‹^–*J‹,Ô+gà-²Ô‚²Fƒµ¬”Sn˲Àv-ƒä>$BC¯g|}ÿK؃kþøýõþõ;–/Z0>¦á 1k2Úm jΩÎÚ¶M¼»÷öËÝ_½½ùúš¿ƒfê̦óhš¸ié–ÄŽ’ʆƺ6[©è™}új@õNf{ÓÓ´IÚ—Ô2Ž×Bl'‡Á<¸ÞãsÜUºª°.¯¨T]¢d¤ò=)P T–bkA]~]H{Åòâ”,‰äQ²ª¼ZkY™ÑÄØ+w5b••Zåu’Zi:5íõÍØý~µA¸¹A8gÏÀùt®“g9¶1äƒP™J€,¿G„–Ê@ÏHÈ<ǹi½ÑPÌTMacÚnuŒBÇä W´2¤w4%p÷^åóoîY؉|6c¢¼]t3á¹Y8uÉ ×^Qa¶á&í”Õ‹²2Û—žÏ~އÏÃé°†/»8‹z*ŠXðöTHýõÍšî“ Š(§ge]ꂾýࣦSkåxש€LWZ¸zÙ–…>Åê„ãú`DWÏ;Ïò9ÎÁP²u®®D g_"ÀÁ›þ ©dÇo†2ƒXBk¥59ª,¹šÙ‹DüÙ¹¤<$&vÛKÆ Á&ÿ…}dJ˜¶D«Å¡Yµ…5Mg¥‘é î<ìÆRø#}Ç»E„·º`y¸çqsƒévIKbRRZ|š+ý@ggûAf :ó¯ñSÏ9ݽœ²×Óržãs£¸7è7TíYeñ2eqRyU’¶× ¯×öm?aeÌmÆZ<Ý{4Hº&?CÍhš\é µh`Î’À<}h%$rã,d–ôâÖmÒŒ{•ɬTs–#û°N:ã½W>U2¥"ÜÐÔTžMQÛlª¯Ð3¦zƒÕXT~ý9ø|¼öÌ;m§7TÄ·£àsÇÏVRÔFïS‘€5à¥õ›–Ê<¹{ÛÉíÂäoå hk™ÝŠ‹‚+¯*_U¬-)dÐ=“«(Qࢠòª”f5<‰âCª‹<âEû÷p,Æþþ §h•H2êJSõÕ!š짺¿¼Fè /\q ™ßÔónrùð[ØHÃñ~^¡1d#§7ãiÁZ#«ÍN+i1š(@ãý„cÈL4O÷*  Í·ç9ÛÍmVƒWвN8³î…ãøp¿ž­Ý&ËW©t¹*CÉ+sœ¯Â ~:.êÙ¹;#!%¡9»£ÜôÆï¦þv¿õû¤Td€à‹ ïá4-@KEÌï°±÷7Ï¥bÏün]ôÛÇÀ|xóüCØ©¨ä–TÀ…• ‰ò,݃/ a剂Äÿ'衊endstream endobj 176 0 obj << /N 3 /Length 2596 /Filter /FlateDecode >> stream xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ"6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}ÖºüƒÂLX € ¡Xáçň‹g` ðlàp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁÿŸ”¹Y"1P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6(’Ü.æsSdl-c’(2‚-ãyàHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™YárfÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi]ëP»ý‡Í`/в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~(* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@Ú¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎèt,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æo͵„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~éˆ}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|Ïé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óûendstream endobj 177 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 827 >> stream xœm’LSWÇß…öõ ¥‚±‰âÞ4f4$2²X7q4Ó¬¥ZmyP^_­H©€Ð¾ó ØÒšà˜©ÉL¦b·d‰ÑtYÐDýGÍ’ù‰’ÍèŒ÷áí’=0Æ,ñ“{>÷œ|ó=÷DéÒ(„¡Ö²£i}åBºV]…T6M]ìëVøªŒé`Ô›¾ Oçà+Kñ…lŠAHðöÄ.ÿ2S+´û=ÎV‡È•4—r뫪6•q*+«¸7ïq6[Û8‹Utðn«¨‹Û#4;yÑÏ•lqˆb{uE…Ïç+·º;ËOëÖÒ2Îç\ßÉ{$ÞÎÕ m"·Ëêæ¹wËßµ‚»Ý+òÎ"ØyO›Ícmæ]|‹hs¶¶.¢¡÷t˜ŠÛ?àby;½îcB›ÝÙÙî²ú)ŠÒç®*(l¢Œ)(‚†(Z{$JG]F HBiœ2Í÷²o’qvɧ1„ÿü#]ÝȾ­0Ã4<ÜùÄþsú‹¸ñÙ¸n1ê$/Ç{çÆ†!Lowz:òJö—n‘ˆ)äƒ^¨gR6¸ Qöìª$ôή^Y†.8ªÈã}3-sµ1’3,B‚LjÖdÍ‹2œýå™ & L\3“²Òw2ß#æß%\‡Sp‡ù˜ÓmfÀw^âÜû£ÃŠ“ð¬GHýÜq\ USÇkŠŸ“ìÛÞSa8Œ$ËÒ1Gò’ðòÏc¤0Ò Aø‚IE ð5ÔüVýã¾[î¹HãºC¤˜”6t#ìÞ½ýàžýßHýƒ0FRäøxNŸÍû;ñ×£86 Å 3ŒI}¬íZ’ÍÜœDø|2Ÿ×ÐŒIÐîp IôÿzÂZO˜}}ÅLœ`3¯‘„h«Ÿb߆ž²º—7«{¥åfœ…è=´½ð“ψÁ- ”v¯€I½ ÕõÙèXdN®Ô~e¨ÿÛTË|Î õ:sa¶;þµïéÑGû¦ºî¼TÍLÑ$ _Ò³ÄF‹ Ë¡rŽ@P=û¯cEj"õÏñye0 ßç™|1š%þ˜a:c:3/CçŒK®ŽZdQÔ´›ƒÃendstream endobj 178 0 obj << /Filter /FlateDecode /Length 5706 >> stream xœÍ\ˤGR—8¶8­€\Jp©†©Ú|?¬5’‘v‘YØÙ–@Zs¨éžé±ÝÝ5ÛÝc{¸ð¯‘‘_fDV~==$äƒs¾ÎgDdÄ/Yܨ½Þ(ü¯þÿòöì—/MÚ\?œ©ÍõÙÏtùë¦þïòvóÐÃiø²Ï*ëÍÅ›3 ŸtÜ'•Ûk6·gØ~u¾S{•³Oyûæ|ç¬Û¶‡;lû½On{|®öNy·ç­ó+èsŽÑlïá³IÞÚ¼}}Ž_Sðv{øžæˆ9mç;÷Jëíeïp‰SØœ¬Û²ìÖÃÙ¬ aûÀþþæ æ*{ÐJE•¶oË `<®[Ö²°³»sXÊi—ë¤åï·ç&ìC67÷É×½Ö”£G8úñ M…d¸ì=e7N)Ÿ®Övö@Cá_Ûo‘ZÙ`<8KÐVçŒëÀ!”r©¬”3ÐæÆïÁÁh'NYdö0ÉšíUÝ z1ð)Xç`w°H¤TÇEg 'Ò¡ð7yØ•å‡96iðù?.þéÌz8±O WW EŒSø×Ýòç¶{ïR¢^sAÚáX“sJD{› Òe‘Žì¢Ç Ïà–l‚r¼¡a1Å…P¸ÈUŸLЩsæ5õpÐùpƒ]r\ËÌÚ{oˆj ÂÙs¢½å’Uæ0…Ø],°Gm¹wÈS£ôö¦PÕƒùöÞõéú¡ê•‘½b[~_æµÀC~}êAãxu˼:ñCÊ%ÍV÷Œäûó]0äÂm/Êg¥a's*á•Å»“á–ò…æ¦z]/[‘÷a"Ùl.¾>»øÛ?È PD6ëlñ÷EnásÔÊûåöÉ@"Z}<—Œ#}Å}.×½è¦òÕ©J$kø~{¸âW«1bÎxv¤FÁUyM“9-5@›ŠsŠø " µÈá¡«ƒ>Ýñ޶ŒÛ¼éû9^×óeÃ/8_¦rÞ¸ ×yÑf)l¥˜\ÞIËõš «2è¢o¶E}ä|Ä¡¿|’°2i›6‹Fø‹ÂМA‘Qok7qŸ£*ÃÞG›,è‡}°!£Ë>•Ò¹Ž‘v Ô³5ÊnĘoΑ¿ ;m?§fÒ¶^3R^ËòÇaãî›þ„C(?B=ãIOa€Ÿ ‡þ®ké)™A–£_6øgØì ØÍígãÀÀüƵ‘@ ¼-ÉÅ­Áå±£ÓÖ’úv¸M8™>ÆÓˆ) ´ª”õt“f;Ê‚ŒH’ìÇÈøŒpB°³Óä}87bŒT7Ϋ¢Ø¹)z* Ñö{ì }½¶ú—zûã9RÒÃÚø7œ†”˸¨ñ×ôÙfÖõm¿þç.p‘«ÀTgÑ®—‘À¾rsëÐ7}ƒsõÀÍLÔËT¥à¶iËáúàªÉ{ÖÎx|§“­jpLĉÈpä·Sì‘_°šÊ. †¥LŽs­éV½oû’À@ÛÂ?.ƒ¸DPøŒºa!P,Ú¿Ì׊ƒ8vñGÝP(uC£á@O[¤? 1yÛÄ„a´‚L'!6/» zÈr¾'}¢€÷ë%™=Ô?\üìº]°&-üÔË*J 7Þ›ô]0Ö¬(X®c®ñš[‚ï¿9O™–êWrd+A&]m# –˜‚åbÛÊDøÐêú\8Wó®ËÇ‘ñ¥zãJàó„_cžàèsXô"Ç£D ‡½ÒÑw‹(Ì»29ïqé^!ÞF±mÞ—°Ü^< /Â#Ó¼kC×ú³.—3Gâ¡’"y¡¼ŽÕÐ3ö®y…Lcq HDŠÞ:~ÜÃ2wFL‡·*êêO7A(†NÌŠÖf×~¦¢‘Ü`¤aM âAÒòe×TÛ¯ß_ö»2Ó`”xÈš¡Ø'ñ¼È +,Ýïž¶gÕ±êYº>£fR‡ý4‚nmÁ'Š)ÂE‰{ë­¶+nŽl lÙ"¦áݘ.ó{ P}éûýr<•¦ð1âÏ™øŽ0†vqêÓ€LxqJ.í ¿ñ‡X· P Ç.ïÁ¢ÐL¿WŽ¥ùVÍ q9Cº9TXµóŸ 4H µtW @&ôÈ4ä¯Gùû× ¨lv`á5h·òÉu ³ÕJ¸!{S\¡2êßÇk5P*¢äÀG³¶¬(âñ„Vüøv÷¸þóÿ‰hI ˆ• `@ò,Ž0;¹öØÜhÄZªŒÚþåùÅw§¨Tï­u B‰Ohþ(+s¬ne.šY½óðò‰1ÏR2ºa°OJn+-‘湞°Mn ½ÐèÒÛ%¯½oë×g¿;Cõ¸ùñLm¾<³.Ø}ïSBL{fc“Ù¿Üœý~5…00 ¦`NÑГ M4¥>!¯ÝiœÆÄ@çÍÙ c´BÍÒCT¨±æÁÝ6PÓ…‰ÏfžNÏç.°#üãžÍ;bÏÇŒ¼/†ß;‹t&‚+GÙþÞ PE c`BSü͸kyDSt*˜£à}ŸÏ¿bPé ( -“h‘]YJCÕù‹‘Tçfqì»W2ø00Ü5üv a,Œê&¦Ã–ŸÀœPœ†ªÂ¸8šè2tžh`†wVØBq˜0¸XÀ¸PþœðR!OO£÷^÷ÓhpÙEr$¡u¹Ô`² ܧ¦àHD_:ŠÞWx–£5é?8Z*g`˜B ·=P´Ãg¯'¸!ãSǰé±Ã—)=ŽÙ#çXËr׋ÅB¦·À¢B×?ãtCtr ¤pÃ-€?&i½ö”ñ£‚1‹‰%æ€$‰zöYBíh¶HNæÖAFˆÔæy²üd’J/l Ïï ÚŽ–]£oɪPòUNûm•=¦>Ë×”·×ß¶aU–(—ÐØOQÀRÁ¨üUAÁD œHÁDTiÁ¤dÀûhjnB´ð“õö0(‘Ú£XƤ ·tE5uüAI»gÇ&¡É‘ØPï€ûkñ5F´!'ÎÃV'fÝÀ‰b³!¿Ý­-Ÿ™­üü#öÉ€§%]í'Ãè ÍŠA†Á…øÙatEé‰J ä´ãÐ(§Ís·C©HaÌØwÇ…×Ü,6aJC`?á Ä<´m ÈåºEùñXÐ#£ü2ª [ÔÞQÍ#?3Ý^mf²¦¬L@*› ¶i/À\»©Tûðo}R‘ãaQ8Ƴׯ5ük,†·’ö¼.µÊ^ƒeY(Í _NjðÊ:ö:À@Üìé¦7¯{óØ›ûi6ì¾7ïzóÕù`‘uGÚG¦0EŒ¨àº£ÏH>žµå~×)Å H²Öž URE›óø*ñÖןÖãËŽõdª®ø9ÚMÂÆÐÜj±ÖZÿýTúÄdÌ‹‡ ¹Ãè¢n—ñr¯uŽynПÅLU{»–T*;Q賡™¼3Jk„Â~È$´ôìªè#.–/%SÀ¯¼¦`l)dÔ¦è 'Òâcê “"#\$šò¸êi–ν/ª˜ƒ€÷ó¹™¶û©ƒ¶'Ö;­W-œÿ@“aþþãG™WgWMw4Я‰õ[yÒ:r]¨ñÜ ŽÕF]sˆz?zÊ{Ô¢ÂÔ¦rÜÚazÖRÿ0踵ݰEÖCUn¬:€ã$zÎ`òe4×Ncö暉­pdeB³.d¤Àö‹7E‰Á×RJ:Åf;d‹øÊ/"ïÛDho®ü3Š78ÛòssÜàtA&Cáä®w¢2&¬LrK“Àšµjcr š*V9TßÊÊYíŧ…aXV2"I‡¦Ô¯{¬õX2ÁÉßîD嬓;Z d ¿gÕ"£Ç»ô”Z– à²JµÄ%šEØ-õÍÎæïËÁÎS}mÞ÷æ½ù²7_÷æÃ”N Ü‹‰¢v2D‘‹îAÖ¸.'®¶ÅN<ù÷X Ü-:NV+°.ov¨J­/ŽùÖ€·Rö0p:$ÙPÊ/V¬óG5:nçÀ+Àõøõû®ï&î|5ý0QV¨w¾×Bu ‡ODõVy³c¸º«ÎF¬˜7kâBÖê@Âypö¼=ö JẆ‚ø`:¤‹Ò\„dpÖzí?¢"g‹†êÒÐn§08X\§-6zv<†„lN&øï¦Í×Ó›ñjªmÞO•ÉÕš2É,4õRŠ"ÊÚb¯«eXlX/†*´FU6rÀð¦J—Rú€ÓFˆ/ÇMRQb 1ÂðfYD˜••àÐ5§cú¼œÝ`²uÈú`mêJDzt™(Ó©OW"ìä¶½|M@fñx€Rç;«4«±jp5"àl)•j©y µxJ¸m?£vJ¾L!Ÿ5b sIA`¼,È;ŽÕt ¹5…4H/‹ãš´ñJ*är9¿ˆ—’ä€!ˆ:®ªZê^,Kae½AÍâÚ®¼êyF¸gNƒy×Ü¿•²à{Z$,Ä óÁ§è9{CI*•›Ú B†ÉÊSðSjÊÅ\DŸKáë:V”ÁØcÔ]ñ¼Ï¡kÌ›Þd_™J½ªIS@ÐrT.q•*2r±+¹ 4×IÐæÏÒVnwÅ&Xa{ ãúkDVÈ\iQ¾yGã‚>•ë‚”xÓxâxÎ|B$2LòDJÑRã]ß3?êòêrÁ9I¯˜‹•jוèþr8íV}¶áp\´ýblŸ9) ÚaaB}&S)$,R<°E¶’ ’•OIˆ¨pýã^^[Qø‹R(¡=eb#A¦¹b@m ¥@vá‡Íc¼ 9RâÆm^YGl)ÛzºZó†c(±§FãPf¸–1×”0³é:GØGù0¢Ð ‰Ì¹Îº’ª+ÕÚ¬‹8h ‘9ÇBÞˆwð©Ü<Ίó𮟓½Ê™[LYËN©\nçI`S²´šõ&óÌz ,¿ïÞQI·À1‚TÓW„Ó1\WseÄ£Ï^TÚ›ñ–Ö3;‹U™írš2Uïû×ÓàLy2Ñf;y³ S`,øËISÜ,&Ä9ÒRö·ý/¬ÁÀñýámgãÊkZ+§Ç(P ëí¿’h ß‹)°CùäÏnÀˆ&¬cÁ¿eù–†”€&T*²0³ª’8¯K vUé1‚OpbÒ ?*¬]C Žø+QÚuÎkPƒ&A9Ðܲ1€ð@s`äþPÍYî?P:ºoµÌÚ¯ –å½Ä*ÁÏ*YžÊ>y;­…¹æ1Fzó gà;ž‘0vRÎ0»*´IÍ;§bɧÒ0TÆ>ì)•>íqXÉHIgYñJè¬V¨#T$K®¹~ó—C8×´²i°uS«ÑÓ¦îªËdab*ÀhÇΑì'…˜ðMí¢_yñ±úêƒÂKÊŠ’&“ `U4Ÿ è d/䟃ÙëÞ<öæ~Ú cÀ÷VB!ÚIØñŽ2n4š@ª57úÀtÌs|V˜Ïa P’« C_¢f뮊+¶ì$}·È` y³bÌÞ3ÒUZ°­1Mdåʵ ßL`4Rg;LÓj“Ó}5•Â%¸7Ó/wÞåœWÓ«wÞ9µx°³yY+ aHLÜäf?ÐÔ˜…Zÿå’²¶YÑÅ+ŠEæpŠ%ŽmŸí({Øá×;NtV+þÔšÿÜÎ\‘G15²<©a?³$>èõõc1ÎLêL*Æeسc÷jüdìGp‹¹eO~A(—ß=zâjF‘¨Ü#Œ”ÜeÃìZ·UGú3šà³høALº,Ê?u+ˆ|ø!ÎùfO–£eQi€Z@©¢XA:³ì"jßOýMœ"–èl¿´÷õ³^Õ?¸šïlë ` À(å9ÿûš¤‡ƒÇ åµ×55O—2&£bí·ŠJtÎçòã£3n=%¶¹!>Ògdó˜(¯MÆñj{‚¨b!q’ä¡Ûæ‚¿åó$9†_mšÕœ‰z‚úû ³Âí»ÎÑkš…[¾ÍÁcc1¦ˆÍìâ÷4†•Á]F7 ;‚ãôE¥]õNã1ÇÇÚCS®Õgçš} 5TØ>£âI€ŽngÙOD1:ÊêÃ¥øÓ/‘?ù“ ôò»$þý#£Ê‚ÈÕ’§í·°(Ði‹/ö‰–qý]w4 h®þòDÏj9ÊßsŠëWr—°Ê’ÑÄæ}oþЛÿÒ›¯zó»6ׯúÇ]ûxèozóº7½¹;€÷ê°Ò¼ïÍ»Þ|Õ›%TÛ½ù¶7½y5ýÊÖxÑ›—½yœnâq:ÃqzŒÏ§_¿nýq~¸ûéÞÙ~_OWÖ½©zÓ÷æg”€òåÅr±Ýþž§£^L7ÆŽùî ¶ïsÝciªÞ,?—ÓÛ”¨{Û¡íëCæ.Û廉Çäí±7+mKûãN´æ‹é¼låøÄÈöSNÎ%–ñ—qJM›–IÖù4Ï»€º9î³õô¨Îa@·<^þÝÙÿ4 endstream endobj 179 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 347 >> stream xœcd`ab`ddduö 21T~H3þaú!ËÜ]öc×O]Önæn–µß }üÂÿ=P€™‘1·°Á9¿ ²(3=£DA#YSÁÐÒÒ\GÁÈÀÀRÁ17µ(391OÁ7±$#57±ÈÉQÎOÎL-©TаÉ())°Ò×///×KÌ-ÖË/J·ÓÔQ(Ï,ÉPJ-N-*KMQpËÏ+QðKÌMU¹LD8çç”–¤)øæ§¤å1000002012²¤ÿèàûñ½lõO¦ÕŒÇ_}?ðŠùÇ®ï—E¯t_ú»ówg÷ï¥NÎÝ¿|ïüÞÙý}Áe9 à ÑÄn÷ùÅ÷ªv¿í>Ù}®ûÆÌƒKž^Ÿ±®{g÷ÙÒ…ö³Âzœºíº½»Õª‚óMœë²º9øÊüpžõ=êäl¿§±oâºÇ-ÇÅb>Ÿ‡sõ$ž{sxx¿^†þendstream endobj 180 0 obj << /Filter /FlateDecode /Length 159 >> stream xœ31Õ3R0P0U0S01¡C.=C Âɹ\… Æ&`AÃˆÍ ÀRNž\úž¾ %E¥©\úá@i.}0éà¬`È¥ï 43–KßMßÙÙ È °±Ñ÷VÐÊ8çç”ææÛÙqyº(¨-> stream xœ]O1ƒ0 Üó ÿ Àb¡ C+ÔöÁqPœ(„¡¿/ СÃY:ß|–ýpØFcpø¢Ʋ´º- ÁD³eQV -Ɠ剋òBöwåßO°Èü¡’ϲ©óª> stream xœí\K·¾Ë:缇zM›ï‡ˆÇH $޽>å´´«•ìÕŽ¼)ºäœŸª"»Yä°gg!—>¨ÜÃf‹Åª¯ÜŸNÄ(Oþ—ÿ}ñæÑçߪprqóHœ\<ú鑤_Oò?/Þœ|y #Œ„'cQžœ¾|”^…GÆŽRÈ/Ì(µ;9}óè¯ÃÙFŒFzíÃðz³£!ÚážÚ(£ŽÃ-"FâpM„08VŒJš`Ìð¼Ìp‡lŒÞ+zOJʃ…vaØ]áha…ÆÍÖû8i‡ßã{R/Âð²Ìñ÷Ó?àb4_ ¼a¤ ° Ó3`‚é9àî²o ùªÓ&OXIG…Ñ5Ï÷¹Ž.šA<ÙlWÀŸÞ O*ÆܰÛl•cÐYtNÙ8œã ­#>”y)¾ð+&š ˜öBH=¼Ø,OwL¼×øbôH>5n‹“Þy KÜ*œÛY¤*hÅYºIÑQ§­HÒÝáSá_1ÞÎÓ #¾ÙÀBðqؽ^ÄBšœ6H΀ zÏFd¢LG/PªÀßÜyâ–l¥ðÀR<ÙJ=ZBÚ‹JóàKÂ9®£¨w:"¸+*È^bc“Œ¤ôÁ ÞÁ[ðƒ½#ð 4nÕrÒÕ‚YÄY@2¶¯ˆ`¢ÝF5›zd¥=Ò+SŸ§ok`¨šï’„®Œ3 SôIZ·£â„²w>¤÷pìÔáóqQÈ]!ÇîöÚu!¯ ù¼{¬œ‚uˆ…vnÒr¬èuYì”cÔ~Þî ¤ý¡s&IÂI¾NòpqÞð`<é6L ò…e/ä‘ÎS“*G 'Œ*ñ½»ÇÁ`otcŽà Ïr#ò¢»BŽÝìµëB¾ínØëBÞô7l[træ5_DÐ"wØâ‚yåÒŒ^›'ùŒÔ/eTï“R‚m”kûnÁ ÿH&R;k†«rv2¬V á¼Ò”‹xL€ƒ$Ôƒ_0 ï6@à'æ=GÛuר9‹v®V«ôØ ´/hè ŠO̬X1ÁçÅŠ¿ht:{‚ÇÕ§ÑŠƒG4•ø9|¥ê3Ùd$õ®:¤§”[˜=BcO_tÕðª·]ÝÛqåìm¹èÊü¼å̸g!’‘åhÀw¥5Y 2à;¹æ-™ÈÇÅ 'F¼: ctÎвgF¶JJË|„öW鑬5Ã|м*äm!¯»c/ ù´ûôu!oˆuwy^"ÿ6úºS!¯ yQÈóB>-¤,¤(¤-ä…T…ŒÝ±Oºì\òm!_uÇ2Î4[ò†Ô5ÆÆ“ÓgNÅweê ò¢+ÿ±;€½Æ¶íëóBrùŸòu!Ù¾}ÓÝ«]wƒþ\Èç…ü¡+œ›ûyÖ}Êx`{õ¢ËÓ¢ÛûVqÙeò“Λu`|›1(ág¥ ¯”Ñx%mÁ¼"zKŽœö» X\%°%“œÕ<,9#g Ì7ž²°1m‡oÊÊ$%€©¤2k¨nb(4sãS#-l Kdí*ä3''@PþŠp¶Thìa27†XcWé©“òhG& ó`";¼B9÷ÔÐJ˜#6SGléë0âAßi%W˜$í„Ð~˜¤™L§YŽdZí)Ô, .¤<;¡}J”$sÎ×-v©‘Îvž¤Æ€Ÿ-›¹x„j}Àÿ€âE \òÇäò…p‘Áœ¢íƒ”ÀéóïÀS@à^4„W´CR­“ 6)è€Ñœ9ÒNIZN{ÓÄê[ãÒ>ücÓ˜Ô(Nw<4ZÈ5IyÌ ¬Âuþ #)ЖÒäx|¦¼%:ØŽfi™ŒQöOoú †Õçù–f ¼lñ˜d½-2ŒøÊÄL9‡]H «uI3m`/+!#Ïèp 3j­=3ÛÉMã§)9&EˆfŒ¦ðúû~DÜ£–òãÒ: ù´*ä÷…|ÆÉnÄ„F·DLuæåñÉpq^I-É5øÕÌA¥çZ“ý\IëôáðÑ[µnlµÇK0`Œ%h¶Ð1-î”™—Wżg*Hü¿J“Î’I٢Ą÷sŒƒÉ¶ƒ½7‡Ž"N ŠrT€¦ Q­ŸÁ­GÇ¥¨Û1ô­7ºÊnNxBÁy© t”ß—µ¸æìÏ+\QG§”žÙ¼)úzWH–‡yWÈo y^È~bà@ÈöçÍ›CLÁ©ö€cëø5o(·i·¸ţé¼ @lü¸Päa˜ÏH˜4Hå3Î$òª·…¼îŽ=ÂZÕ‘ àme|™ãYAšÜœf£Ð$–ìxuÂY baé{ÓÏaìÿ.ŒýS!¿/ä³.yOœ{Sdz×Ý wËÐ_—‡Û£âä6ò»Âg2`{Æ6Š®|ƒÿoÃÕoàBþ²ÿÕqmûåÇ*w20Vî˜ESÿZ¾- ù÷eù¢‹1ù²Î–ýZ$ ÛiU>è¯EäjxácG¦Q(¯‚W掙¢>Yooû•Ñ£ ÔÜOÿŸw±ÑY÷äj0²F›Cjb‡/Ó†‹Á¨©ø4±šSê¡ º‰ x »®1ud­šÌ_‚ýŽ dt摌ѭœù«¾Üñ¼jI¥|Kլ͂VÎêîųÀŠ*åÂÇíè&ž•´6ųçÓ;²gë/˜ÑCÈ%Oªw¨¼–VÐ5à5YŠHei´ÙËݸqYüÈY0BŒúÈ£ôtpMbñÓ©K/ææ^é¬Ä+M u¤ÃK˜Fc³§L¹•ì_•ž'Fakø/‹ÂMüô3ŹM“„}H «5UÔ’õÎ@^<ÝJ´§Á¬7µ·a®!tÅó‘ W åe5ä×(|$€Ù¶Ž7U •ýˆÜÌ¢—÷äf¨ÉQUïì¥ 6L‹$ –§uNWvyÇ6—f=¤\(Ø F­yY/›—g+Ù HápVÍe *ý9ˆàÔðÛ9… 4CÜ{ÅòXTÂmK„2Íìçc‘½‚„žda/*߃7\4•"W5âÙ¦ÈUS“ýÕ¦k·ß§Á2ê‡ë,ŸØ¨>Í:Ý^¾ášž ˆŒ>®Ùé=åI8p«a¥Á»Q×%*#ËTšuàõ[§I=„R¤A6"§¦mÛǯ`ïx׋=.^ŒkXW}zº˜wµº±S1B»`Plu*–U›|%Dch_’e­}œ®í# ¢v{®˜‚íÂ{*`ŸÎ²¶qi)HïeÜ"‡]§Ú¾Úi`G+ÛTÛMñ²ìòÃf¬é´¬5ƒe¿êw ¡uìvÉa;žˆË­€÷–À™—º´À<(êÃ@zéó;&تzœÇ†°J{i1x=e `W7Çhᦽͳ~á õ#,Iåý–œoÆíž·y½¤îû6ƒºÊÊòã^¡`@í ¸º]d/s ®+î÷;)Ôaî™u€Ð˜FhQEsë… šx­ [vË„ÅÔɨJÙ)„mb®Ù(¬;æ —ŽÆ{‹&}ÞºEôK;&<{ (›eÈ}t]âM‚Uä©9ï+¢&|•-yÓ1[â*\òIN`ÖhèÀ™³+û„͘ÍMSLÀãn²ºê\³N#kÈ=w&×1ÒRï~»bô¥ÂŽY»å0-µÏ™X‰ÓÞ§)”ø˜›Ú[‚ ¸ÐægÈ`{¡ èÃü wPw¸@©ÔKR‚¥ùrÿ²JÓcÁBWÍ•é€ÙœFÅ;¢!TzÄl áRj>B<Í@r¿°s‘>Œa _ô?7ËöWMo7KΦÁÙÄ\Úà<߃·ÞÃ>é£ÊUïdR “=h?efñè‰Î­oUøÿT), v¶OÕ=mzŒëjj.ùã•‹å&w.bÖ‰Koj.6la1€"|å‚zש9XOŒ€'ö‚¦„t[(ÒTt©‚eZFîÁaMv»µ!ÂCæ\S'òwEJ,rZÛŒãºL²CÛë2™›)wŠÜN7Ý`“1xT¡7KýžO™Î\Uæ%™W}ÓJ†!múÐêþîPÜU‚ À\s{a -.(ÞÎÊõíèŸïáþÿ46ßÓm»~3(E@7BtÁD‚y&ö‘ÑZoD›<;âŽÐ7¬øÃeȵëY,¬û¸V]ͼHcw9'÷‚߂ۮòb…nœÏœI»—gÞ3±‹óªíG°Šê|k5¡º©"(øâДù¤À›ø¦âõY"¯ À“>ÑŸíi»§(ž´GÕõ–»FlÜç§ëj[ÿ™ûýM, ir¦9¬e­Ù<"KÚŽk•GÀѹ>ò¶kg™Mfp WæØ‰|UHfìϺO™%¹ç^ËûòÒë.7¯îeìá×)>‘9|Ò}úº;/óßÌop?v/ùW—µ‡ ©>Ãlɺ>¤SØ ï»>Í`àó*?ÖÁ)l®Ni}Ó6âß+“ád«°P¨§{pÖuúè/ðßi×endstream endobj 183 0 obj << /Filter /FlateDecode /Length 10135 >> stream xœµ}K“]Ç‘ž×‡‡×³™Û6qçÔóTÉ¡G3öH1£±(Ø^H³h ˆØ „4´#ì­¶3ë™_“ È6ƒÁÀ½y³ÞYù¨/«ú7ÛÕÜlü_û÷ù7Oþê ›n^½òÇ'&îæºÛ›°Ó¿ÁÜ8Ã5…cBºîîæÝË›ÿqsÿÄ^Óîˆüç'ææWôÿ?SÉÝüâ·OJÍ7¿ýůŸ˜=Ç«ÛoB¢*ÂÍ7+áÍ“ß>1ÉØ«dißs¤\c±ùºYÉS q3fTãÃÕyÉS q‹4ÌØ˜¢¹Æ(™€PyöýšƒäièQöW ½nÉ”Ív•Á÷Êaã5Ë!¡òxwµr`M…| ²?¿š½1íe!S#@MÙ^M’L• çÑn[ºŠŠÚw±v³þš¬diіݼ¹/™** ûÕï’•gw×úS Ñ0ogÊÛuK’©``f‹WÙ¡ú=ºÍ]½o,Öò6<•€õ8PÙ£NÃ7!Àîèè¶ÙQdjJ$¢rl '’&÷*»]¿C¯‰vÀS Ð!ë"ìN@¦à`t2E’Q9´Fˆ–fݘƔHFåÐ!zŸ¯.W&·Ù«5‚©ä$9CB*G×0ÎyØ#]°£O.Ø# íòÊi¤rt€L‰5K¦J€>ùmã¦'S#@Ÿ¼!I•£khÎ;‹¥ä<ñÄnr4‚&O¿99¸N€ŠIª\#€øœ® ®dM´˜Tî5·áNé¨É“°BM@¨Ðí“]Ž •‡ŒìNëáÉÈÁÞ@Bá I¨¬¨d‚  Ï;AÎc gåÐ:*¢ <Ê¡u‚ìvØ=î$T²q°C:A¶·Eh;˜,ɨ['È.E²qVòÔïÀB&.O#Ónq‡ ¡ò¤Eh;Aöz'#çåÐPy,ɨY#ÈUÛÉÄÉõhß¡)2p^¬€ißpƒ4(ýLÜ&GÖ‘#„½Õ”ÈÄ992$T“QŸ7‚YÉçoð+™6'Õ2þp)&Ü%’M9¦N˞ɸY9¦NS˜ §T#€‘ÊÎ]å&«ßa–3Ù6Ðç=Š·F#Àøs*S% ™8Ðç ûä7²q^Œ­É™+ð”ïrø~#'÷Æ ˆ±ùlœÜ)zb¦2¥ ÎEBå!·EÉÓbÙÈxÊn7 ÍØ *}d¿ 9¹=:k¢R²;AȤ7;Êí @k™ä*ªY‘¥R§‚œkwÐéƒ [£Ð¶É S*õA€ævT9¸N¦LµBM@(<Ž ‘ƒëÙ%G†.ÈÁ!¡òxJ} "2tÆJ& Tž}\$Tž¼R_…Ç“™ÛäÈ:AN‘'3çåÈ:˜\µ¾*Ù9yÜÝ R<™9©ÔBåI$¤rd ;6R9´NsÈÎIå>P“Ûq“t0…El;š#S'µûB¨<)‰÷ ÈÖâF•ÊÁ5(€H¦ÎÊÁuÔän’FkƒíÞ ±iõÖÈâ9¶F‡y>’ÉíÞÒ®û>KžúÛÉàÁiy íw²x°I™|FíÞØ™¼ jªyVëw2y Þ›£ZåâÖïÀ’ÈàÁ.i˜ÈD¶I#D>ÛÚº%¿Ã±w'ÄDÞ”k2™¢CíÞ`™<+ÇÖ0)Ç+TT¾K«ü†á< ŸƒzŠž¢½qE¾ã‰¡àZ †+ Ûó÷ t{ÿüž‹Ö/íŸçßÜüõ3æ#a%Ùß­¿yöÕ“ ü™K½ˆ4û;ùO!…›gß<ùÝåóû»7·$ü9¹pùîýë÷7_ݼÿúîÅÝ»›ï_ß¿ºyõæÝÛ‡×ïvóúþÛ—ïníF]uþòüåÛooÿéÙ¯¸¹ ›£¹rd¡ožÒ°®žVéÙ‹'—o_óòöÙ??á~<嚥À{Á0 –kg~ýpë¹z/Wjî«[Çßb¸¼|þíË¥µ¿}FSö›ÿÏØ¥‚KN¤Â’ˆª¸¤À.X±K —”=z, ,Á%% KÊÆTXRb— ,‰x¢KJäRÁ%rT`IlKÁ%¡"—S¤Ã’žÃ’€8j°$`— ,‰5)°$"Ž ,‰ÝV`I¨IÃ%r©Á’€]þô°$0i°¤Ä.5X±K–DìRƒ%»Ô`IÀ.K˜¨Á’€]j°$`— ,‰Í)°$BŽñ—ìR%±"–DÄQ%T`I¬Iƒ%¡& —êD‡%%v©Á’²5 —”­i¸$`—Á%%K"v©À’ “:,)ÁÄÇÁ’’Iƒ%¡9—”3 á’€ð=–”L, £†KŠnŸÃ’X‚Kʑ鰤XÁD–DìR…%es ,){,)™TXRb— ,‰5)¸$€Ž§°$V£â’åSaI‰]*¸$TôX™Ž°$ – . Q`IDø\ B —œûG‡%»TpI¨HÁ%¡Cƒ%%“Kvùã’À£à’rø*, pâcpIÉ£Á’И†KÊŠ4X@@ —i°$BŽ . Ø¥ KÊŠ4Xº­á’¢Û„%%ÓO K“†KŠ¡©°$`… . â’€\>–D& –”J_ƒ%»TpI9²‰KJ –ìRÁ%eE:,)‘B–Dìò–äR%»T`IìÑ£`IÁô(XXX±K–DìR%»ÔpÉ)f*,‰Ø¥K"â¨À’ˆ&ª°¤¬IÁ%»T`I \°K–”8áã`IÉô(XR2©¸¤X]–ÈQÃ%eE, ýÔ¸¤äy, L . ­)¸$`—.)êÑaI &ª°¤KJ& –„æ4\R Nƒ%qT`IÄ.XkÒpI‰]j°$`—,)!7 –”È¥K˜ø(X˜TXR6§Á’€]>–”L, Ø¥Kv©Á’€]j°$`—ç°¤~6wI#H«ü»ÚË ÜðYh¤_ÿéf»yñ¤ÂY£­,O¼M²ä’PĽ‹“l&Ðv ò{Ì✠)ŠÃh"dÚRÞI‚¡µ’dÚ*›l$Ó¶ðæ„06“Éq/ò&(´6Éc7’tçbb½ˆr ô¦ìFqN’Àón$!!L è=›‚h†äÓú3Ê(dè'y“Ä ÓS–;+Û1ÚÃÒ4‰VA˜ý°$9pšj-Ñ{>£Œj¬°ÈÖFs•íXŠwÙK¾Ž –­3\@µÎFÂPêÖ‘ °®¥ ôêN³’}Y,rò¬µä‡ÂÙ½%O ’Í-sÀ\iôûõäûœ0R‘9:Pf 1S8!Ì2¬ýŒ2 kA‚K(!,+vÛqD+¤±öpJóIuÀÑù¤ŒR‘´‰?!Œ¦£‹(%‘´Ë&{I½8ÙÛ˜îWΗ€ýº“z‘%v·,çNÑl×t‰…"ÉáVÜ)ÂJ²‘DjCv<‘Ö§e6Q˜$Æ,€­Ø sz© ÜŠ‰¢Ÿ]F6¶|Õ’IM@ž}§ ¯‚ö^¬±ÏB˜É¤I`{v‚¨•”‹‹'Q-gȤ#aTë6Ò6rÝFªÅæÂ,·‘•…«Q2Úqì‰ÉÝIè.šÛH#1À| ˆ¦³I!•ARœ±°ìýû˜g¼­GP+ev3`’?D­¤³ä.wd2Aºa6c)ÞHæ„2Û!­}=û>&„T!3)³aK†Ì›„¹8´áP3 Ê,”2Á:·ÇA˜ÃqؾŽ&é=wJ™U’‹%/ó9GAƒDȨÄ.5‡óä()½±_e·=é/ëN³ á)Ï ÌBäà'h†tœ=~Ÿƒ¤ó|:£Œ2ù“ï³Ô"¤—Ê,CŠRÆÂ.»¾C­¤(å²…¼,,9¤¸°‘å&‰¤(åÅG^5ꌘ R‰ 0:aNÆn‡LÊìn3ž† ʨx'%)Ï·ÝN¼ ûžP?t‚h™4 Ég”Q(ñ†”ëìŽ !‘¾“÷ÈaÖšhÏ¢H¤=.¡Sf5¤ðä!…ˤð`¿wœ¦lC=8Pf!RyòÌÎeÒp y÷( jÍǯBØ6·ß¬eÆèi3çzÚ6)¤»@reV³[83è„¡EÉ{L×|ø> ÒdÖ SËzcMA½Qˆâ°$ûaH›™|B˜ƒ1û"ƒ2 Q°&¿Sô*ÀSÀ*À“ƒ g_ƒ0–Ê“SZSò'…4œK'”9mä0]÷Ã÷Ù y 7š'>Ú;P'ÉÔðì“–L ï>)ÉÔøî“–M}H¹>ɦƇŸ”tê…¦$T¯9×'ùÔ‡œë“|j|úIK¨Æ·Ÿ´Œj|üé<¥z}ýIIª–Ï?)9Õøü“–T ï?)IÕ‡Ä들j|ÿIɪ^€Ròªá(-¯Ÿ€Ò«ñ (-³ÒR«ñ(%·Ÿ:O®†g ´äj|JË®Fš–^4-¿Ÿ‚R¬—· ´ k| JK±Æ× ´k|JK²Æ÷ ´,k¤)iÖË‹PZž5> ¥%Zã›PZ¦5> ¥¥ZëPJªu„W¡´\k|JI¶^Þ…Ò²­ña(-Ý_†Òò­IÙ'ùÖø4”–poC)ׇ´ìcƵ6u|rÆ-i±ÂÞ®[c—Y3Q[u¬e)Åun¢NxzJÉç>ä|Ÿäsr¾Oò¹ñé©ó„n9Þ~&;ÇK;ÃÂxùn\ $'K­ãÅ—­”|ñåi+-aß¶Ò2Æ‘¦¥ŒûužæŒËOrÆáy«óœñåy+-iiZÖ8>p¥¥rËOÒÆñ…+%q\>quž7¾r¥¥Žã+WZî8>s¥dÃ;WçÙãbôÃò¹G2g‚¹#2M±G –ZöÈÒ¢–œŽïhiÙéø––ž/i)ééø’Öi‚úœ˜~0?'ÆmP•«OƒÛXÝ#KáÄàC]çÙïËC]Zú;¼Ô¥¤¿›e÷ç¿#í<^LKÇ æ´úT¼ë1 ƶTÞIÁRË´,/¦ØÏ§À”üz| LI°Ç·À”ûCþ!Á^ÌGÅ&Ät÷USGÆà-«y,´ÌÆòΘ–½Hñ?dïË^v4dv““p¡O´D Xfí%½¦]h8Üz8¹Ðp¸ôp¸Ð 2 ª9R DÒÛ–™=)XjËò²›v_âp©âä¾>í¦\˜8ܪ8»0o»ß˜óÒñ±1-ÁµûQcÂV3¿'Ê,“‚ïÆ)—1ðÝ8í6>§]Ç8ÜÙ8^ÇørœviÚ… |;N¹’$íJÒ´;‡‹Ç;ËóqÚ¥ŒÃÍÃ¥ !*œ’±Û½ÆYC"Ù;ÐòK¡E4ðqºó+ð8våiÚ|žN¹ô±¼O§Ýú8\ 9¹õÔ]üpÒ…<»õÔi×>à…ºókË uÚ½|¢îüâ‡‰Š‘ȶi¤!‰ô{çl)µÈÄòžr±žÀÓ.–àxÚÍ|O»Z‚´ó»%ë3xÚå¤)×Kà!<íz ¾„§Ý/Á§ð´ &‡[(Ç &Ë[xç7L¦|Lˆ·ËñçzÊÒ¥ê4þ­¥P>Ö§ö´ ,øÖžvƒÛÓ®°DùÚžr…_ÛSî°às{Ê|nO»Ä‚ïíi·X¦]cÁ÷ÎﱈUí õ\UˉèòϳdA¶–ZVuiQ¹&s¸KsvM_ôÓîÉ.ӜܓÁ'ý´‹2‡Û4‡‹2bî:r>çÎ¥vGṅ;˜»¥Ô2wÇ«:Çk8‡«:g×pðÅ@íÒ´‹8‡Û:‡‹8bVˆ?'ÅGSã–1ž5~ Zæß#T.ù./ù,ïj·|ðABíš¾H¨ÝóAšvÑ'¬;ûô¦Ïá:Ðá¦X…žŸ0—!d‹Öœ¦Õ_a–BË2|ñP»G„Oj‰ðÍCí&Ônáã‡çwФÝ)ÂçµKEøþ¡v«@Ô®á ˆÚ½"|ñüf¾x~³è¼Šh?é¿v i7± ²'Ù4JÙÁ®A¡¹`-Ì\ã>ÏàÉÕ/´L®N‘\ýÞÇäêÉÕï,L®N‘\¬Š”š\"¸FJúàÉÕÓ§'W§H®ž<¹:ErõÈuruŠäê)ž“«S×HRœëØ)’«$ÙM–òUþÞ3Ê&K§H®EB„Ì®ð&g8{“ÓìŒm°4%20åM΋Ý6ÇoeÆë¾eò_ž¬h'óCš¿ä_HMûœy+Ìz)š´È€`©ZŒO)h¯ž£ML±`\‹Õr‘,S6J93ÂRî¿·bi#l)æÇØvelb¶ÓR<6œcó§ÅÊØöµ›ÿqc ß»n4¶pZê‡-üȱ…7¶ø£Æ?alÑœ7ö1™,ïÀŽ7`G"]#Ä䊻YÔú‘Éûåœo”ÇIK ®aw—°»ƒ‹s<Š\\­§‚KôýÓ”É|T—¼¼P¢1O6Ý×Gu·Û§[v—@9ÃÁ»‹arI¦Ïa~¶ÛOöÌ®ã79#†]z¾ŸI¶œHbúîå“–›­1uk(Z¹®Ñ)´Ø±n5³ãÓ(Õò¶š"Ÿp¦^µ¾ù2:|51‘ë/ŒŽc˜wc—²=ýËû¯nù~J4»xn™ƒû=ï7ÏþþÉ忽}ûòÝ—î_Üþå“gÿáw—Ïßܽ#Éa_4›Ë7¥Àå?|ûå»—w ž&DÛÍ+µƒñäVJZE¾üËþ #&dËJŸÝ>%ïr£¶öË×·$:Ég›./©·oæòð%³„L†Å^ÞKH;Å1ÌÂ׳ßÃå—ܬ±þò§[¯†¸‰‹‘:p—µ:ÚA—{þÝÚèw>½ ™FYî [sù’7ù1Éö’ ñò®Vsº<|Õ*Ë—ç·£cwï™›¢š=”|ßFbÌå5±[³¹˜&Õ•ùL7´—êÞp 5äpyà¾ål/®e 5ð-qšm£Y¤I›³ÓfÍ¥]víá›2Ç9§/où3E”4±uüfOPŸìû˜¶„-Žy«óžH·­cŸË¢fGU<¼á:2í¹’WÖAëÈ·ÖLË»"ÎZ.*2¿»Ü•ÉJÁ¦Ä??í¿?%”â [Ùx[Î!e¹rn^Š%¤n9G‘É‘à¾g*_ötÕäžLÓ-¦ç¡SC5yƒçîž'nã;¿<µ"ÏÝïÓrÇói³#ÿ:6:c™…%ƒ|™2åLö´·_½•¬ Lܽ’+N×_}aB–ûõ)}N{"ëCóHÆ' ýÙ>ÓÖv°µg[‰ ©mËeBÚÇ×óã›ùñÅüø²½8jñ«\g/l;O^L+²†g¢uŠúTû u? ùjì¾Hˆ®‹†¢aý9V-ÒÂÀ®#yz+f÷Nì‰;”..¼Ûµí&´ØûZ9I Åh3ÁŠÖª9†ö½ÜNÌlÆ)5U«SŸdý5Q¸ðt&—ú²ˆÀîhQ?ˆ¡¡å"×:¢¹ÌRnˆH–aôÂî^ÔZØ<>c'œ™ï*Ǟܺ:…L^ɤ‰!=_vo“ÀÚ+K.HÒ‹é]যÅN§‘â»ÇO^"Ú89unË&—:Z”äiíì\z‹}Yjç›&£/ÿê{Àì&Okû”B®-Å|ùO·M“ަþÙœìõcùÂÌo<˜ïëž#+É1œÖ½ÅÏçP“¦Š÷KŒ¾Xßÿ]­/Žã)õ:rüñT°–ñ4E{Z;£xcìÿ‘cÛr¢¡l[>¼%_}€Wg>_¥Ìcï±W_d—ôПnË蔤oöt§0¦¬­wŠW¿ê)iŠ¥íâdüú¡*d¿ñ_ÀaE¾5ÝÜÓ¯ç¶#e[8ò¦é§È÷ˆ§›tÐ!Ë,’™N¾®Ñ¾¹O]£Æz\£Ã¤ï¤>UŸ1R“ç-?§BMÙÿŒ¦¥$o:Ð_Ïèæå\˜jKbœÓ>âÊp#ma°yÕp1xÐ>ÅB¦%eFV–ö,çâófºwC}7ömñ+ø)ÙO\²Ä§†]²e^9±ÀŒE@ÓÍ÷Íï«z}2Çé~2K§M8buŸp$¸ÇºOBí8oؤ“13¸”Ãîüq:*æÖy=µ_)eœ3~9àçbØZI÷øŽ‹êbH¿þÍ\ë—µ §ÐE8¼bêþ'Æ´…Ùø5HdTœ¼”‡/§¥w3¢»Ÿ½›ådŸ?ÜŽÿFÌ\= ²IöNÊß=» |f\<¾BSbqÞ2y¥ÙW"h龬]%=W”ëbdAr9½e›ÊýßV_ƒg¤r;wC*¼f¹mº]£#o¤1U7“ý™”ï×=:KmÊ2?çCˆTtÈï/E>sŽa?UU|Ö½÷þýû2šÍzÒ?†ô]rK·µƒØ?k@ ;Ø 5iáªJug=rõZÿ~‹£!WpgÈ=Aó°8W#>K`€_û ),Œ—ÿSÿ›¤‘¹üzDã»ã%O-j…p©¤þk•6»_î>LMýfºvŸ1kõcøN: dŠ™WÎ8æÙx*ŸÝHól=±':öYóP”7÷‰T,Is†öª$mRÝ€ÒÙ$¹Ü¯g+Ü«ZŽO}îêÇÍ$݃åÄYF?éKÅóå*,MäìQìC1“ÓØQt¹ÈÀX\ðFðl Y{d0¤äàëó‰äE–.ògvßkÇ(VçÓž§œ|µSoŠKeçïõ¨Je.û5,ÔXîÊedq·Æ-fÛk|,ÎKA $á â¡˜ãØó’vàÈ8¤ Uݸ[vH— ¸‹y‘m~®£Å`eàk Vî´i»î+•Œ 3ômÝ q9~h#§}µ¦hÚoÙÞÛ¾‚I;^ö5jp>áÙ)‡ê. ¸ S+Âv¶Iqã¿% òô¶ŒÇæ $NžÙm³EO£j m]¯ê]è®&±¸pœ8•Äž?âTVW­ù”aó½²z´^}?9eŸÁPçÇŠì2ú.AcÒàd-“Åýd Ȭô]ßWªÇ ‹éªžÖé›J·-S®÷ùAx×ï™Ô»b}ê1²7.ÊS"9¬>Ô?³¦M„H]ü‡Ê°r¸Ç›ƒ“”‡Ê»•sž³Ì¶éÿ© ŸÖæÈäÜ i‚W á¬.eÀðæíÙW=H‰{/ÄLäit_tKXÖJ¥¶¨=çÓ’­þ$Óãˆ<D:¡rÀøªqÛìG¤¹ÌG£0„2>nºóû ÖÄ;~Š;­]cfZ>v¼h>–yõ/²…9o¥x*o[ÛY躇6=&,éN5ý‘Ülë¦mžu 8QLÕ‹óqÜÝ6p V‡’ùEú*úÇ1ÏÅejùqòdî®îÏ!ÿÛ)Ây¸k8E‡ðàPPU8å,Ï—„Oôë™{GéáIãõ ¡;±{gbd)ÏÂu7 ‰<¨‡%Ë’™Í!eå$©`•üw96Ì¢«cÚ2ÙZ-)P×d\ß!ž-Ó•UÃ˃bRæ=0^(¥ùAÈþâÛµr+d§Ç0UãlW*«Š•B}Ïi,ß_&ubž¶m‹¹ÆqKÊÕš’ò+´ß¿ûøy,ù€ôã ~ÏaY F£Íí°ÌŽíRcTr#ª¤òŸ°ic³Ý·d^`O»4 ß?/3˜b짆;‰‰;…üÊqYr=ÎûÏ·ü–&+Œv$î9{_¬M]qŸ¼—§[¯äÙìƒÔlŸ‘`Yqßsê!ÿÁ©Ñ¼d+šwÒTŠÕß?¿¿ᘰ¬‹¼xëÓzÜ4¦uƒ­Ê¯¹m¾¨OÝøUÅh=4Î}Ž—¿^½ÞžðZÍÆf-ØÈn·!îÄý7evhmȳ›r1:EZ¸`Ü0ºl|­¥8Ð’ûUä@>ÈäD‘À+:ø·cd}5È û¼õ/€o3>_ê[lðj4|˜Î±Ep‰¼£Ï9¹&룥ýi€×'ä ,ÙÀ¥)^±OŠ®ž.X±9œfwÚçaÕÐ\÷¾}4Û‡8\ Õ(‘1¡ñw­>T]ÒP,üóuRH,B< påµ––?§½™˺þËe;µ³H±Ÿîþ0ýú÷u~¼ µ¾œ)ÞÚWE“ê´øæüz_ŽL‰_H7UD¸ݤùýÕ’ zzßjã¿hèÆë‹q¼þt¢¡ÃÉZ‰ÕÖNRÆžãäeÃί;¤]ÖP²Cq‘¿-Åœí¦v¤Œs1Ò_܆²›¡üwefw·imý¶êÞë~+•Ê俆I¸fŽQ¼/+Âsh àëé[<¿å¿¸Â‡hçm.tèû©pß‹}ýp[þ(ž«Âi˸ÚDK·‚nΑTŽ}ÇåÍåHŽÿ EÚr ^Þòë¦çºÏì<‘ÞUêz_Ë'ZD1ŒSCøNÞÌ+\ΠسXSgLÈ?+žv¶>_‚ßÿ¿"^å‘D  @ü,RŽŒ+òŸL‚4fÜrýÍ“ÿí·—endstream endobj 184 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2333 >> stream xœ­UkPSg>‡@ÎA(½LO«S{NœíV[+Ju«¸.]¥Å[±Š¨Ûj¹…” —DIΛ ‰BHD"â l±¥b¼Q/ëØjiwÛÕv–í¶Ún«m¿°;³ØvZ§»ûgç›ù&g&ß{yÞçy^’ˆŒ H’'§¦%,üõxø2<;"ü¨pÖxÒxZÄŠ 6òàìï>€:îGŠ{ÑÖûI—Ö$+Jôªü<¹Z2Oú„$!1qéS’§-J”¬,’©ò¥ÙÅ’Ôlµ\V”­> %›Ò|™Z/™·B®V—,_¸P«ÕÆg•Æ+TyIO<%Ñæ«å’4Y©LU&Ë•¤(ŠÕ’ ÙE2ÉTqñSw²¢¨D£–©$©Š\™ª˜ ˆ‡‹ªRµ¦,;G*{ucž<-?½ pî‚x‚x‘ØHl&Ò‰-ÄVb±ŠH&ž#RˆÕD±†XK,&Ö¿"^ R šˆ#î%f @‘Änâ2™‹˜QñOQ£Enˆ<õPT¥x£ø2UI]¥“è±h.:+Zm›âÂÍKÜäíÊ ‰Â‹ÑYfxÏ hcT©9TP"0A3ýæ(ø ¥ýr‚˜ÙTa1;ÀkS=É?7*w{¯}è&ΣœÐŸp&P —áPvÿ«}YÎ| W¤¥®}u¿¹©µÓÞÓ­Û»ËXÏó&Îwñ”çÐ'Ng.å2©æç ›‹^ë_ô©&tz¸÷¬ŸµföHö…\rgôiÔ†Ceœd·v1KR3Ó_Ê=òÆþÖйìоӶVzè§ÝHqd’²îKeÇ×18æ:N|í¡‚Wƒ;^/8³¾¾=†f£n>žš¹3·ˆ³þŽ4¸|ýoŸiìzÿ7åx~YÐoiaF˹®ºC@Ê#¤yÒàAþ«£²ïʾ&BwÐ7ŒNrE§¡µ9ØpèêêSIsžD8ëæ¢;è¾^Díµñ µµ<_iä”ËÓ´Y@¯OAóÐS£§GúÏéÒýÜtXMznJÓµ‚™Üª›MHê¤ïlù ÏYú8¾?tkþ·(rð[_s˜kys•‘Õ¬NÏßYÕU2X8 #ð&micšÑc80Wàõ)ȹGs\=e¯›¼3ü™ é“d0îßxíäë­mÆZ'k0—Õ‚ŠVz .—×8š×)MûÍŽ9,Žùµò#<ö?$=NC ùЕ‰f^B>¡—Ñ(ƒ–ˆsóã[·Žá‡9<¢¿³2¸‰£TF5¤á‚Öô 'Áép)ÕB83êbP:hm`o ެ\¶(s Ž›4@œÕŽ^ü´).ÞG'Ú>24 B"´†é¨èÛ5ô‡W.ÜŠz¹žýÇœ`ƒ&h4ù#”Ó•ŽšÖ6»³µ£Â[ •ë” ¶h_ž³@ íêÔei}yÎ=\‘r ”NÙÁ²m•9Rx‰N¾µ‰QÄWÃï£Ùx$©sÀRÏ6–õÀ!Aþ?ýY³áõ ר`B«®Å\ÿ™›:ÝÛô»¹îv§0ú:C|zÊÖ¹Ü÷»d’¿w¯“DéÚU,øÇtþî“ñånapçÝèíéÁ }ð¥Gžn2·:>ºÑ7ç|‚%,öÿÌäNNMîäO&‡Ü(š: Ô®Ê\ÁRV v–¿?ÿhΰÑôèÞíMÐ\càëŒ\ýºbM!¤CÝźó&Ÿ¹Íì¯;axǦ #Ÿxjþï‰o|YŒïÃÌÕok¶ hÅA^È,B ÃŒ_ß¡ÖèôjG×éïðt²8oÌöŒý®]ô:tCƒÎéz7š›sa17¾ãtD§.‹Æ#ÆW0£â]Xå·¢å® Š"v¾ÃU ¦'ú©> stream xœµW TSg¶>1’sTŠZ{´Î9X«Å·¢Nµ¢µRÁ b-ZBx „ðT„ðL²ïgH <ZPAÅ:¶¾jk¥µêtÚim­}wæ?ñgz£wÖíêZwÝYY++YëüÿÙûÛßþ¾½EÔèQ”H$’xûú/Xhÿ5KxV$L%ü^ ¸øA‚-Ç œÅà<ú­i“üžFW&¢¬ñhÛJ,É’r¼å 銘¨h¥Ûìpw·^^Ë<ÜΟïåöR¼T&só SFKãÔäOœ[€<iž\õ¢»‡[jŒ2ÚÍ_š$U¤H#Ü^–Ë”n~añR7GpóßÞòø„d¥Táæ+*dE½ “{'¬S$mP¾’œ¶+=Ü7ÂO·-þõù .Y:Û=Ëc.Em¦^£ž§¶P3©j+5› ¤Ü©mÔëÔZÊ› ¢ÖQó¨õ”'õ2µÚHùP‹©¥”/µŒò£–S©§©IÔdêwÔj,•K=E¹P³ pÔhJM}- ýuÔ+£:Åâ¯F{Œ¾ê´È©C2OÒH/¡‹wÆ2fö˜ü1÷Ç*Ç^—>î¾³»sãS¡.Ϲ˜]¾4þ— ÙnLôœ(¸†vºÁ*L3‰u…_ [P! _B›r¿ìðÎ’˜Ò幩ŒöG ž–í$£ß+Ë â±…ÎNF·è¡ ¬0-š>çVúÕ,èå‘ýóûg/\¨ÙîÇá¬_}ö P€¶q2UÂB“¨}µ‰…Ë"ÖýGÌ`géøiüÌw@4öþ7èiÇâ`6‚ëd§zµoÃ8ç;zÛŽ«ë„Ãp$½5¢ãMØ‘ ¾‰;å;ÞL“ãb{=Åjó´Š¿’ZÄ67ÛY#TùZ*Ÿ Z|vC§7LÁ¯â…äŠÃÑb<mDË¿D3ШJ(ÉVi òø¼3ëç³A½èzíØµŸï.ÄsL¼> ÔUÀÔ@‘‰'¨âmVäiæ6Š~ºŒê†ÄHƒ½ØpÖÒFEOÄ%`ýý}Ä¢Is¿Á¢E;7ªù+4æí(_-É á‡c¹ÕB  «¬kï=Õp˜ïÌÇ£ñ¸ ‹_Œ“U7¤òʦ½&h#YgÕæd¡ßß&!>b[ÍÊLôµ"U$?ÜFGªUÞ\ª ý(A+ÑT4ù¢@ü,òÄ+x<ùŸÏ±!šÒ¼p„> /=Æý,¹ï†÷lì]³ ´sý_Š Û¼kW˜0¡Ÿ.þ㦘ܕÉÞïþâÃ2=h‹¹ÜÂ=ùÀÈš²ëL¦êÖö„¶Ð¥2Ï´|N‹Ä<õ¡T›þ ´C+|Mš¤Òk5•]ÓÉ*“°Ô(:ЋÒ{Åè–°ÒQÂÜ´äœ<.®9®d70ø©¨[³!úP4¿_þVÞñœ3ÙÕêæTãÞêd3¡Š‹6î8ô]2WhV§).50ÙPÎãit:Tt:s=g(}mÝ¡ƒPÌÏýçnÆîÏ)ç£:J6VÅ—¬­w˜óñÏ‘¨d^œžÓå–B0•`0ò.¶ò+Úgf;ȶò–ØÆ£ öp±ág¥5/C<ì†Å '¹É:èÏŠ²¢øWi,Á¿ËM\…7ŸD‡ ­¶»úéO›ðúNŸý˜VHE?IZY—ßBÚ„• p!í"BZŸn5]:Èwˆ-¦ JêtHƒMµ¢å&Ñ—Ñ´F1Z%ÌbÑt+žŽ6%K´s£þ0_ͤ~‚;h,¾®¸xàÂ5îOÉ[ioYXÄø²žs±)ÀŠ.[ÑA¦i·Pÿ-±ð•ð{°¨âg²J’4^ #©yA’#±‡,Ã*ÜO¢þ§sQbÑß&Wó169€öOÊÍ”Â@-çsŠu_´«ë$rE/Vué¹p=M(¦›4:2I[ióaGôÊñð½Fº¸¬­¯¸´)ò¨ôê›xëNEX ¯dÁúÊ:K×1ë)`ÚÎÂ[_Q…%Eñ©qáqo@ Dwf´î3C1ØÓ®Æ¡&ãm5Ü îèS¶õÊ ]<Ä{7( x#àÔ”+!ÝŽw¡j&6¸b1jίÐMié“£û‚@RrÄäÈ9(+¨ŽCîã\C¦ƒ¦07#>A L\šxè,î´¤U§g¤¨dÒƒ‘g{N]l!Û jDÖÛƒ¢Î!|GŒ~$lV$ìJªÏ°45ÔX¯¬?¹™7Ãn\_»#'äÚŽœËËó@£Ug©ùäuñÀø­@hÅ'=}‡Îìhâ]°Åš·õ×Å(ÃæÁæ5hIŠ ö”™$#­¢£`§‡Ãˆ'´ÁÀ#7õ€­¼pTG£üŽ-Î.Ê­€)å 7”Ô¢B›‹«nø†äQÿ4é?&ýc…ÿ%±ŽþÚu*ö”$ƒV››†eÃïº>Yz’´ñ¢ Ø­äag%Ò)ÖÐN?&ó‚;~OºçŽF ëk¨á_¦ÑôõðwÚgø:Kj¤ÎLNŠÞ%{˜DLU mתºð¦ŽîŽ>¸Á{ª2H•Ò‡ì8@™fXÄ(Ŷ€Í©Öê’ÉÛæÊ$G¡Zó˜áôì×Q±òB]– šò,aêð®™:m)hŠuzFxŸ¶Â‰{vl#ìÃ6HaÇ=Ø)ã‡7Ò#%Oh@ÞŽ%÷‚X˜„ö²zhø>ð+ü–,zOÀ®?ÌAb4®Qæ’‚âü\Ò÷>qÙ+Ê0`Âfµ¡—øZ×À–¡ŸÛàP‚§ëbÔOÌsŒ•Ltñ b kìÚìdÅ4#ùüøñž²ZM~W¨U䀌QÖíi²ÔÕYFYw¬_8“Ãcþ(ûßúM÷™óì%üµQo „ûdÆ1ZôƒäÉ®6ÿ¿ÎzÈBâ`ºÑ¤ûötÅh­0̶¤4É“Sâ-i–cK#‡9ìGèu©<ŸÐ«ùqj'É•pÞ¹Ó§Ðp˜F“u“énA«hðºvNŒ"„%ìöêà>¸Ä\={ñ#´¼/ -áÈ„VXñЦQ°ÃJÕ…°/‹õÛqacU±RñŠ…3wÔ‡ ç;#:s>HïÌ=“Y“BÙÌšmë–ûV â¶ô^ÓÐÚ9õh|vŒ%:}U)W\f>XVÛ~1æ¯DGߺ‡FWö&à#{ƒ+#*ì¬&ñNqÒ¿·Š…+(ƒÅn^s7ÏèFÞœðÌo:¦ g"æ94 ñ7Ñ´ï8Á…>ÿ¡ÃT5„Ä2¢¤iœÀ;p·9u€¾æß„ÛüâS„=íÐmO”دÙöq=›¯X@Â-¶¼¹þØGv×Û®Ñ@11RÞ‘·ÖÖÊ!òA“Ÿ‰7«\ñB}A%èA?ÅÚÍ$Â$ÍjŸ6<̉¾uPŽö ;l¯j@Wd·=ÛÙ'—;imaÿFÚå¶yOD懛þ£»Êÿ…ërF`«"~0Q¸ÍÖ´šúì°…ØB ‘é!çµÆÝ¶u®&{ Ë\ñR´Eš2(šÒ>l/Ødà÷¨°P£®L/ÝWW…g û»âÅBAOo?sZÈ%Zþä™A²7TIQÐð/®†½Å…åP†"C-Z!Ô¹¢•Ãu†½u™Ý7Š‹ µö¹#Åd›jõ ¡2²™mEfáNÁ­¨¡]w¼ƒ` ¬“E.—oRù¦`NéÚ®u‡W¿ŸÔŸB_¿õ\× ý7pŽ!ûÔuv7øÓ(û‚«dp»^÷vý•ÓGÉúvNÙ°¤ÚVB¼«³ýÒð¨MiÑö½"“”¿ÛzŒ@þ¾õØX¶ t©\R‘Ï#£›QÏ´0ÃF:Jµˆ‹“IZõ÷áù| ­ŽZÄÑ‹ÔUvùË„Ѓ¯ˆ¬ŠN}…bMh›,QgänUíÉËñ'=Æ`_IkÓùK-bÌngûá[2ÁÌÿ¬¡Ì†ÙK¶ƒ"sKíþ¶´yŽ´j®á½Áã—ù¤çÒ —ü_%"€Sœ’mÇ­ÑŸ!âoTšDß·¢=·Äèá*{4³S[IdÁéÚšb!Ÿ0¡0‡HÚ¡N„°Ó”V–WD®&ò÷ð¸èJ~YKª*¸¶ž–>»µ•eÔGè‚È(#yprT„"„öéMÿ³AS¢5SßZñV[Z"=1'bé{vcrúöQ‹q+¿}Î?D!Oä1 Ï›îÞzn£ÂÛb4}Ï¢4¾{°«+;¾Ë’®äÚ´–æúZk¿ôôb2Ò¸b'à6äìû }yMFSæýí……±/ÊU<ßc7AüÙsN‹ê\env}ûùkdL-WI4"¶CpšT±#*#ܱ7âbóƒ­&Ñ7ƒbô&]úŒú¾@^€Bm;A¶I­(·“š))Ðîóòvâ¶ÏRº kð¸~··±óm‚i±A_Â?¾¥‘k;‘ž…!š€˜×³×ål` 4ùjÐÔgðßÍ:‹½‡Þ¶¯$•«Ê!š®fò šâêÛ×¾9Åþ¡ Q€œít®Þýt÷þ]1Ú.üÛœbV$%§Ëåé–f³¹™C[&·%“)) …9¥ÙÒhlãˆðâ@3ZCìÎÛ$F¯²RGÈÒ’’Ûk+K %\Q‘tÀè!³àÕÄÍ!oò…j-aS`(0”]G4¹å&Ú2(ªDÕbdA[ØA\H»¤˜ïZ$¯(3KpX%m{y7vô2“óS¹³óå:ç§(ê¿"çq|endstream endobj 186 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1785 >> stream xœeTPçÞó¸Û•⩜W@’ÛƒTE@CcµV£ˆÎ5þÀr*œžÜ!?D<¸»÷î€ ÊñCD G!¸`Å$¥æÄXËL:©Á6fšš±eÞ¥3éi§ÎÎì~ûÍ3ßû¾Ï÷<ˆòYB‰D":îÀ®¤1óË0>XÄ¿²„U D=ûÍìA ø‰ÁÏgðü±j%f-Çä”X$2æ_Š3æ˜s³2u&Uxz„jã–-›#U›bb¶¨vfks³ÒÓ ªi&6;Í$üœU5¦giMfUø6É”³5:º°°0*-;/ʘ›¹="RU˜eÒ©Žhó´¹Ú Õ£Á¤:˜–­U-vµø‰3fçä›´¹ªÆ m®¢(ÙNcnž©0í-9=C»•¢B©CÔQ*:F%Q»¨H*Ž:Ní¦â©=T0µ\˜ò¡J©'¢m¢?/Y·ä3ñqñ>>(I”üNº]ZÈ[e³³ÀaÇïkÝžíó†ÙXÅ…åP F¨®¼d&޹¿ZJ­•;€)PKc΄ xÏz×ï5޶ÅB“ÃÕàp°wq™=ÒOI˜$Rº¾…‚¯Á»\G“ç¼^RÒ#!ERÿ¥eˆ—÷‹zqºq•˜DƒWGO6“_Ĭ!AdÅ×kñ—¸íé÷¸\I.“ý "¤žŽÂ-¿f¯¿7ì‡a.iÓy² R˜X ‘+e|¶0Q¾–pß©”ÈGñ>S „&[+%jzÒ ,™Ü£¦½ŽQ瀇пÐe,ÆÑò©/:QöBi·›KÀÀhz »»{=CëNTÊGã!=Ù´Ÿ‘ñÉ–~>¸×`8í– ¯ùf"§8íÞw8fò¸þdÀP«t”:ª<Àt@m;û}êÍÕ6(ÊPžkÒÕ¥“M¢€¤·æ´³CºËÔyF>ÝoyRvhõ›ÑrîñH¹²ª¹ ΓKDt\¼ævÂUÒmW]Î;ú¡˜Œ )ôên²ò©Œn}ݯš„NZ†ðw´Š^¢}9ñK>DAºhÕÓüG¿}ðXù‘:‰Þ«Ï3†‡íJìä@Â𨚶¯=ne2iÙì£j¿‚uÎzijù¼Ÿ¢¶©æò'Àp´É–mσP;óƒjº~Ü~ÁjµØ­l(©'Rì“LpR½=Ñ– iæ,Y@}B{’Áv¨žGn# ¡xe¨±iì8 §œY?qܯ»¸¦¢‚:¡¦ÁÝ2ƒ3¤ñö„)',ýÙ¾} 7ôû÷âÒí¸cQ /à}§gáÄß•cÒÖFèh/ƒ2ö š A==½û3q„Ȫ_?å-êêéõ ß*j±:•7ëzÀ<ñ¦í`³h9·ÛJÜÉšÕëq…ùs¥¼à+àn· 3ŸQI¯.ËMJ÷¾nj¾ëRÊþ?͉p-†Šy3¿E—PÝvmnAP 'M·*ÐBdºXkêÝêrG½uNJ&ñ1R­µF@ªðD€v‡ÔÜ4¡Ôô€ë;Á]#ð ,è–Pxš~ñGÔŽZ Ø\– se!è€QÓ·]Ï`T0âç?:Ö@¿ÖšòwÙ¬¿@™‡µÏ[Eе¸*@^Šgø5 ¼C“øÿxeî¯=>!‘W^?6Œ/Ÿ!‹Až“5¬¼t$ò ™:r_5t—w¬û>0(²,^ ç2XƒæÄ=ÄCÆ½Š«ÂM½$ê~þcNÔ†´˜w br7»ÜçÅ”'ˆ)rᤳ`QLÎQ(·WWØí,¡‰È±]r“ž±m´Û…|:éÔ,ÀÒøö\ˆ)%?E¿w7›£ÒU_ÓÞ ^¦/¯#Ëh(ÊHâ4ŸN}<ù KˆËBô, ѳ WŠqŽ_¯0—Ø à"óoü‰0u‡ÉÞBY†=Ä(|ã2îæóPa¶Ûʪ”çö§%CXÀµw&Š o‹ÕÚÄ.òÊñâ^ç‹ÔÎë°”cDqœÆ·ê$}à ²ü?þ›c’HËÇ“ëΓ°Ð×I üK$† üþÆ:z:ü­qÑefM‚ÅD¸ì‹1¸wcíæzà éÛ ½‚Ý÷÷áÖÅl­üVÌk„hmk€®Ëãä»ìéþw®íNˆýYIV¿X‡?ÇM#3-׊ ªØVUba RŽè÷ ˆ;}Àöù8Þ¾CCÝ€KÁI:F†_Æ` ƈþ€1b¬à—(FtÞÔT.5Õ«ñzG”ä¶ÏÿíÉ.\áÕãIOÃ)9á¦9_”þDéë³¹ÕoéÛÏ¥7ý–9üdõ/Ä5Ÿçendstream endobj 187 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 440 >> stream xœcd`ab`dddsö Ž4±T~H3þaú!ËÜÝýcåTÖnæn–…?t…¾§ ~Oáÿž(ÀÀÂȘWÜÔçœ_PY”™žQ¢ ‘¬©`hii®£`d``©à˜›Z”™œ˜§à›X’‘š›Xää(ç'g¦–T*hØd””Xéë———ë%æëå¥Ûiê(”g–d(¥§•¥¦(¸åç•(ø%æ¦*€Ý¦&ós JKR‹|óSR‹ò‹ìÌâl   ŒÌ Œ] LŒŒ,tðýZ»à‡Ô|Æ©ßE—VövOêæ˜3{Öüù5›ûå#D,Ÿ÷qëò©s'Ïš4sB÷|ŽùÕ³ªš[ÛÛšå~+öÌì_×3]²wþäãÝs8æǪ̂¬ª®«êœbØÓ.×ÓПÚS÷[é©Dó„ÖþænŽªêšòòY­“Ûå÷•í+Û_¡š˜ßXÙ\ÓRÛÖ]ÎQ>»fÎä9Ó&O—›9yíÂSÖ,˜>yÁô®ÚöŒ®úF-‰ªÙusæÎš1§§éi×¹®ií»fpð/þi¿„í·âtöý\û¹÷/àáb^;K®:endstream endobj 188 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2013 >> stream xœUmPÞÈn¡·h?6¹ª~ Õé j½*ç'¢­ˆ‚Š10!$" Q0É0P¾ù$D‚R EDDK¥g§öN«VÇ«µu¼ž:çÕw™õÇm@ïìLÏÞÝÌÎÎîÎî»ïó<ïó¼ÂÛ‹>QÃ=Aìköu/ö !p›G†Gvú€¯|½]¯¿ôQ™ˆ Œ~™ *!Bž­MIVè¤Á‰!Ò·ÂÃÃfKçÏ›.]¦’kSeiÒ(™N!WÉtüR­NL‘ë²¥ÁK:]ú¢¹sõz}¨L•ªÖ&/ ™-Õ§èÒò ¹6K¾[ºR¦“®—©äROo¡žS„Z•ž©“k¥QêÝrmAâeiêôÚ ]¦,q·­"‘(M„d4i¥¶PVÖè7R NÜædWÕ \#…윑Hº¨ÚøA.ä‚©°0—ÛóäÞäüTb©™R’%­p : Ñü±éœïT'¹Ñ’ã„:(/¶[{‘žŒU¢ ܬ#,F(š¢Š £${JÎÃè¸mô|”CF¡ü€âÂ0†æ "‡7}üØ+àd}œy¶ôƤá@q®Ç*ú§?Ÿ¿|©zë†Ë%ã °†¯Ø[\g9 g¡Ú<0ÖF,hÁì¤p ·Á¡îÐÙåÕq ;Wæ©)³H|ýÉM7ø(É/Êm•põÿ±Ðœ‘ø±;;Ó&pÜÁ“w„ì^L¡1pê#ΟI¹IÜÄGÁèâ‡ÑŸáô\,2›îCÛ<À#=ƒ¶®¶þsÇN tí©Oi’YbAIð¾6A¯—Å£å6;q¶}Å™cx<ŒwÅÛq ~K»>¹XïêÆÐ[Á‰V-X´CÞÒ‘!Ù_ÅPG­ònѸR? Ç£×ß0B~äÆÅÄeî’KÄí—I.؃ójiáNÉůàÙÀ‹?äÄv—¥ßa‚]ÈŽŒ,¡Ÿ\S6‰®’$OêÈ$“a)£S²_‹º±ÒG-Òrs5Üo⤢í¦2—ëî“?T)ߖرV-z;_„âA‘«¸¬—ÁWE8ì15œ”²‹üØ g?¾úø®Gà•˜MwUâ 1fÒdÎ͇ *½!§©¡éXÛ UÛŽ 2Y”Žñ(øˆäÞüŠ«-ýpšÍ—G‘éÉåÆÊS¼„!;¯QàêÇýýB|À.¢Cy~‘ ò÷3&SAAa‘²QYšÂ㘜ºNrUAYŸñé7£„{,aÓw`²Íñ×[@÷m÷qñð5{ x›¿¿F[eŽän l—Ý”|¬ÞD .9ÎÖ0Aò.píèJjßv,¨°²HeCNKk]}Kw‚Õ,im9[îªP¾@’JŠ[ˆÓ»E«÷D(2·@"þ ý Ãÿã6t^©yq^áZòÿ_«a«BÍ/?ìôv£/_!±Œõ>®c×ÓÜ4O+Ÿ•òÓð¬|Oqƒå#¨áÕìÝ^äÚÃÖ%â‡%l'ݖѬRê´iiMZg[ss3Z{Dàö0)Äu/‚wzḹïgqüàù ˜ì9Å}£K‰ç†.Öî^ñ"àÏHú¯^~Ž¥oÀžz*«9±*"`«L½9ÿRâÉ0X [·dÅSâ[æDÿËöä9@÷ !¸‹„cÙ £D©22TiÍÚ¶¶f›ƒá¾ôvdØøgÚ4UsFÛy™lÄqL«,mq»ªHç¸áñÌ8ï°zß—l¥¾¾Ã5¾âŸ]¡Bendstream endobj 189 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 5337 >> stream xœ•X TSW·¾iàæ:ÖªWAÿÞK[õ9ÕZ­µÅY+Šà€8€"C˜C€„ S¼Æ0 ó¬8X'j•Vã\ÔέÕÖ¿ƒ}ýÏí:výï„P¡ûÞZOXY\ï½çœýíïûöÞQvÏP"‘ˆ^ãºcÇë_3„©"áÏÏ‹Óp¬pä7{-†Ñv-ÿ˜â;^ó2>‹vŽ£Ä"‘,Z»&B¤pšé7ËéÕ%KÏuZ0þ§UáQÁ~dN®Aáä"Ìi{„_p€"Îiæò …B¾ô•WT*Õ¼áÑó"¢gÍuR+‚œ¶DDÅø;­)œ¶p8ܼÏ5ár¥" ÊÉ5Â? JFQÔrY„<2*Z¡Ü£:ëççêà&u Þ¶3Üs¾úÕ _[ôúâ7^\²tÚò7gÎZ9{Þ/Ï{…¢Ü(wj+µÚNí <¨ÔlÊ“ÚE­¦vSk¨=ÔZjµŽZOͧ6P¯RoQ.ÔkÔ&Ê•ZLm¡Þ ž£¼¨ñÔj5‘ÚO±Ô$j2å@9Rbj 5•²§ž§8ЧFP#©¨QÔrj45†r¦ÆRÏRã¨7  ºE³D…¢ŸžI}æžø-q¾ø»$»ÙÇÛL'Ðw%ñ’Œ3S3B2Âä´‘šQÓFº3zÉèÛcczÇ®›7öɳêqcÆ…»ñÜæçΟ2>cü§‚&ÔNÜ:Ñ<ñKv«eïLòœôãä9“c&™üO‡ñ B…š±B XÐE‹è»~äÞ/V£ì{N,ñòŽ àš²+}¹tB„†4B9ß{÷]¡×é²&hk—ƒ†ßVÑÿ¼sðÔ©²hwG‡Jdä©&ëS³‡=E“ýÒ-èªEôN?ª&û£0{ùlí_ž‰Çáqg#;d÷ðÇa?<Ÿ]íöÁƒû—ß¿~ã’ë‚WÝV¯æÉ8Ê‚æþql}¿á(vØY¼èÖð#qÝÀ ñ£‡h<µè'lçu ^ÄJÌ“ý)¤'¦á!âØ‹O½wýâ†×¸¼µz­ÿ'g¹¡/[D‡ûQ9¸§À±ÕP+•‚*Œ mñ7{ƒéésñx<æ›™ˆ¾uòxYý÷C™.k&gŒ gÜK¯BÙ{Þ\¶fÓµ{_ߴܾÓåìÆÙÒÑk¡Ù$*ÚÌþtõKDq9Ò¦ÔR`jÍ•MÕI'ÞØ¶9Úc/ß*i׃9lGklç¯à?ƽˆ®PÕІX<„ý- *²ˆ…U l94†*Ò“R3¹€ê=ObX£™±óht‰ŽïˆiJ¬nÈø(v3a² 9[üÌU\ª)£8)(Tü|‰ämåeM…Üé  `"/­ûæÈ©°ÖèrÞ¯>*ïåòù‹¡“ihkúúëœ`¥ž3D4B!0P[ÍÛÎtÑòØ$Bsú¢V ϰháiðÂOhÒ ·ì ‰Z!¡Öd}Ž5ôK·‚n~y½¯ÿ`$$«UY¡Ù\Ö^?e00« ·îéêOÙ-8²˜ý‰ÓRz±sR°34·r¨Fò×û¹ôËW#ï<š×ÒÅ军  ˜;ÿÁi°J’4%9þY¡‹EÔ0à»è!PO”˜vÝ5ì9j AfôØ"ªäba%Á¡™.·í£æñÈ¡÷èiØ2 Y솽?r(ñÍ4zß+‘Ö‚«¡J1O¯’Å‚Y¼©ÚÛ3´ôiڷϦ3Õçu-šsR„ zk²4Ñ+#ŠÉ¦w£ãö§‡m<†ÖÈÉÛuÐÄ_À_Ô8vANQe_í'z“¾ŒÑÓ9•®ùÊJ·œÄc¿(8ÌØ’óªå‹è\¿:Áb?tû;yÏ€•²š¸ºŠÖü·¹¦œ*0óQOÈ/ËÂ^0‹YqÝõQÉ8ÒËÕ÷B;0ƒÁ¨51P˯ºÎ‚büTñû wßö£§~ê@ãôüÄŽ£(‰Ð4û£ty# &ÒŠò¨?‚©çßš·þ[ûº§ Þi ø¥‘=ž†GáWíýhuä Ñ(Û: ñ!æSÌØGFÿÇ=ë~ƒJ¼lAφ>¸·JN”ži.ùîBkR©G±7¬7Øë“v¦ìV.æ©¢ÑD­.D$Fki1¬4Œè¡?xOßÂåÈÍj30Õ emï/óRŸWøÝs†JÅ#Ü;c˜í6¹× ›}£µ”: F­UŒ(Eci4êæ·ß|³ö[<ŠÇÊaîúD)Vd†ÛWùú+äœwSƱìêìŠlSÐ`_‚ÙÆ¤ÆXÚRÀõ„Z’Ïçdn}õ M{4ìïÒ«8°0&ouebî¾âÀCÐÍœ:yò’”Ï‹Ê%5¾2»b¨?±)àíoÑ|BtÉßBàc…àú€&=™Iƒ"#ƒe¤%@hôjC¶ ³„“€QF©C„£húa4ò/¬–üÌŸš‰AWÀ¯ÓÃWWâIÃ®ï «_“¬”Óš…V‹¨JЈ…¤é° øm´­…~îLôTÎO÷u̦³jRÛÓ^&;tÔZÕ‹6µÔ‘'ÑÄ'¥Eþ&R?Hå6zªKÑ™>D[ÅÂ~ô[ÈnAÊ^ØíËeåÆöx¸Ct²ÈŒfû±¸ò¸W¤TæÛÙ•Ä£µ’Ïõ5•&¸r8^¢• èæÿë‘§á—™bAFÂ/jgXk\GÀ7Sw¤ùdî±ðþ~´3µ$¥J)ä‡|Æ¥%ïÃY›2¤HëñA_9ÔÉ|™­æ7‘×Ó7žç¨rb:ÁÑHÐ)ªË)8ƒ9Çã{+ruEŠZÒCÕk¾ÝÚ ™äV×Ü2MÆvØ~ž‚]ð–Ÿñd2Ùÿ„¦ ‡ç|ÓDÓÐôkßߺum6é<¦»âoZC}º­¿ƒtA~,Téí-çÛàm¨fÐkR»£É¦ÄF‘¸¨·²"wó[ÃaÄ2˜Ü†ýØ1‹I‘g‡…6fy4%@ÔÀ½Hƒ÷¥ðÊ+YuÀT5@{k„^Çã)86´ågÒ»§’ݯj8^§MLãÂÖùÉý25ÙÊ,gTÅIuG˜MµÜ“WH†:¦¼!æ.죓‰'|‹òûÅWßgu©©©ÄÁ¬ãÐWt»±°ƒo–؆9GLù\²»__ÛyèÖUøA£f~HfÈË–½î×–Rnj¨l1ë Òó¸Êîîb÷{/ZçáæòwÐíg¡º‘£)jÔ·¶ÉõZi‡ú²z6·ì«Ùhˆ&ŽÖ”]H°Ê"ݱ|«XØs>|{(ìÄ5 ðä,&É&Óªú«††Óü…8Eò2@”aAžÑß W‚N³»×íÚ¼Í}QäŠÜ·ƒxÐô Ï7‚ÁP¤×ƒr™z•92Z¡ ^øÝ6ôštï뇟ºž÷2sœ-¸B2rwÅ2H?»qφðš¸úz³©Á˜Yœ^Àµ7Z ˜'¤¾‰¾þQ|d|\¶W¦–Êš«‚¬¾#¨Ñ8‘°Qèg+Õ•ñ‰©©Z-§IEÇIdäÅW$•¨ÌÁ„.ò¤ˆ/iQ __YZP`4råeÍuÕP¹é•ê’$SL³±¤É|²ÓPE6®<¶ áÊ­>ña¬6² †‘å&æ~šÛ°ŠñÖP‰w{Ü?t± ýLwèŒAœŒŽ‚´ìÄ/|B³(}g¿“ØP­µ¢/ú‘Žè‹'újLt°VÀãR‰ "Våår-‡N”"ãE÷ºMÎëÝ—øyVt)y½¾ Ho0”8âÞ 2EÆF$,ýt-²GÏýø‰^þñMWúphóàÖÍWÐ"‹èôçÖ¯6H“þ[Žïö€Œ/õP¡NKÍL-£¨T47šª[zB/NÇSÉϳx/NFâ•¿ ÑŸ¡1È~Ál·cWl /W‚g±`ÌÈ*æÝwÏÜýø¬Ëš%›¶­yQ‰&êj¨Yh·ˆºûO‘PíI¨î÷® Zê‰ÇêðHðf!°ó¾£‚ËEJ2é¬ÿå§êªiâ­ppø.ZÚšËï“ÄÌæFn8=/ô£RÍwè3öBåÕpùtñGx4½xù’õW½/¨9—ØU;`)3ë›…$æñßÜôÙŠÞÍUÜò6v[×;§{OÞ¹Óëµ{‡›Ï:¿g·tóù+ï½Ûwï«ón[6nÞ¾Ô*Eô‰å›Dÿ¦47¨ï?ù^üoêãSÂMö ¬4>!P»7‡+Å^†(cR-8š ¤D_Ç mHúÝ·…°è j& éGÕŸ‹…Q-›ˆ',_°€t^2½ª<7/7*™ÚøZ™\îÝæŽh4•Œ'JÆÔíØ~úb«ýýW‘݉s¥ÇOqÉh6«O5¨!•Ùºm—ó2O˭ϯ¿sëjÇŽ•œ!MŸ¦Ogôé@þe§œý’•ûdÉuh‚íEÄè#AÌv†5†Jåa¡ÒVy[gck‡ßµûËÿY]ÊÜgAÒûÈÍÒg]¸ö‹åñ5ëDÓÃN;_æ›–®Ó…իͥݗü¾À“‹¹Ã«‡€\ÍI%˜ÒlZΰ§uzغR˜ïS¥9›Ÿg,!¼jˆ1E©Ãt>kz^Cã“Èój··Ac9Yå§òwà xÏÿ>vh`\JÙíÅ{;Ha9ÔÖ}«”±à&öRÂQâxÞþÞ›­˜Ÿ5 R“è¼0_,¸ qlQAY!˜™ze©&+’Õ¾ƒý“tÉ© rU™¶0ÝÇ¡™…¤3bªL嵦DcJ¢ öVbì¸}÷¶¨SØ)6£Glñ!è<ìOüˆNð‡é!(æÑc<—-;‡;!™ÇÒ€#PÆÿù<[Q[RX\&0%uyø> uHÍÑ鳉¡«4 U©¶(•Gñ܃Ý32uiëU“Xž—g0äÛrñ›‚ø× "¶;Y¨HÉ×`‡{¾ˆƒ_àŽÙRsâèSÇN¶äÓ.fŠÒLrÅâ­¯mçv¾¿€L7o•ͽ2÷ÔšÜêÉøšo*âmkn¹ BmDb¿’^®&<ÜøpÏ­7û"ÉÄœ®Ô©‹RidÈxíæà%Xã¢Üç·b¯W˜.-=…؉6?¦±öó ÷Îsç>«¼7mÃeÕQwß}hiÐ8AÃ&ÆI[½dÓB,Æ#¯/¹súû.´ò2 5^‹Ÿ'>ä€×ãuh ž‚^xðù…––pÒeBb­Œ÷æÅ9ÿœÐýøÃ]í‘Ò2Þß`½ý.Þþ¤»—teî+—î÷ðµõÀ,L!@©nˆÑIô;k¨×[Hu*„ƒAA¤“ë] QÜ´÷ ² ZpTiÔ±IyIU)ü¯Û_ئH‚xHwŒ-W›Œy99y¢.gEe»€ÜQAÂÁÂÆlKV=WÜ#oŒ¯Ó¬_™Ê+ªM …i9¼²ÔùXJÞ¯ï:Ô–@ä3Õš •6=33} –ߦ’z/# ÜòÛ–ôÖn—ÐÉ…Ñê‚ùß7JB µr¡‡îÍþmªµ5ùØŒ–ÝFËIXÊÛbt™YÄÑŇ !¥Äcñt1–€4‰Ã<æ%ÉäÏ€N(á¹¢“! “<\2ðÕ o&ý܀̣6›®Œ د͌K%£)«n{|Ù]vyùG…‡Håz½aX—‹¿9 .Ãjçìß§âÙî]lm“ULæÛ6%,&‡:ùUúéImNõ‡K]ú«I=Áa®XØ÷Ûh¶°ôPÀÔÆ–ÇEkcSÒ9üáï«ujȆTGEµ¦ªÎXUœÇM.Ö¢•Å4ŽÍ—XFöâFÚÅEŒa=ºôŠú)§#,endstream endobj 190 0 obj << /Filter /FlateDecode /Length 162 >> stream xœ]O1ƒ0 Üó ÿ À• ]ZUm?eÀ‰Búû’:œ¥óÝÉgÙ×mù_ÁXÖ·$i²,Ê ´Åx°¥`ƒøE›S{endstream endobj 191 0 obj << /Filter /FlateDecode /Length 9701 >> stream xœíÙ$ÇqÆß~öó€à‰[ª<*AÒƒC¢ S–¸€(= ÷ÒR»³âî’„ Ø»#ò¨Œ¯:c¯&-°c«¿‰ÎÌʌȣê×Á¯®×Å\¯ü¿öïƒçW?þ½M×O^]}ueB4K´×[¤7sí\Ø–´]³¥%ºë—®ÿóúîÊ.):’¿½2׿¦ÿÿ’ŠHîúŸ]•’¯?ûŧW&æ°¸x½%*b»~>„lübâõ³«Ï®LZÃ’7aÔ„`¶¸ø­™¸lVU!¬†ZÙllZÖ mª6.-ÁK›*„-o‹ËÍÈçÅiT…`Ö´$ÛŒ¶¼Ä,šõkFq]4» ÁÒ=ӌҺ@AåsXOh&Ù,>I›*È[Ë«]VÙê&@AÙØe“•5¬ãkaT¨Í¹%ÊŽlØx¿XÙê.È.Ê›g÷FM#ú£wÒ¨ Øì¸-šÝém9…eƒvW¼-ç¸9lM`×5.AT· ¢:»š´X'ª nWòÓd¤Qd›ìêòâ’4ªBðëºÄ^9j¶Ò¨ XU½I›ò[D±¿FiS…੼&vMf Ðì*„S½EÙ.š]h¶!O²+›Í6Æ-ÎK£*@à yj’Õ5A¸¥5Îs¡Â¦ Âã¬ñÛ²ÊkB°äž15£þí®Þ\ P‡vWAÎÖİDÙ—M€§Ùc±Ðð*€[’×óM£*€ Õ"›T?C‹¨ð%ËžlBp«[¼oF6ôÜèë×eÍÒ¨ Xݶ²Ï£* Q001wï×/hx¤ Ød'® Xyj–=‰B±)!›Ý9 8º^å¸5A¶ÈY¿Ù“M·Á¼¼ Òqùi”­î´h£uXvdÀˆü4A³›ÕÅ3s Ý‘åÔ“Ó²AVAá×Ì^0lš6&/AúY`P½[++낼)O*› Ÿ«Åfp6îCÞ)w6]€FGZeÿ¡Pm’ÃÙ¸ ²}v°³éÜý¶Ò,½¬ ²Ù• ³1 ÕÆÒvI6…jCÞ™å˜uA6{ó'ã.@‹hX¡ÙM£@˯´)Ÿñöc⊅MÐ(%œŠ»•eÚJ_ë‚4 ä£I6© rüi~ƒ™¸~†I–>àLÜXƒ§"e?6VǰÑÚ+G­ 0ɺØ×4ZÝb¡ÙU€Ž¤}_ £*`mÙ/Ú]Y[$'…‰¸ P[4ìjêg(Ɔe•n‚ÜûÛèÎÃM€‚<íåà7lhl¢tµ.H‰!-p_å3 Y$…é³ PNÊ‹—CÖÙ ´®Â€?Á_ÍŠspd5ÉšÅÈ>î¹z|FU€Ú¼]¬loäÌÈ7“®.€Q 8‘ÁÚ¨|¦aªMò¸‘A¡Ú›@Uòs±Èë†spdepÓÙäLž)—]×È.Âéú TòL(§~†öй^ž-wŒBÆ- Õ&f8[„j“Wœ» *s+oE7î‚yǽ%Ö»%‘ƒÊ¸ ²iªµ°…é‚·z‡ë]€Ú6sp  àáhyªM¤õVš”ÏrºwkÚà\Ù¼1rЮ‚\]œ¡É؉Që”dÈEåÑzäíå Ü>C³ åNf OÇG(¨ ²Í–a î¶š|4BmUÀ&¥Ž•]@#òR¹•éÑÙ¶2]ë£)œ+» zŽŽQp²ÞÙM´û‡se  h{ ³q‚ã•¿·‰Ž´r3Ó¹¾:ÚPÀ¹² h7˜Ž»€m"W•û™.`›r€£u :Š 9#÷ϲ—œ‰p®ì‚t&jœ«w "O•SrÀ¢lu $rÕ,® XR\ùé«0j”” ÌÊ¡Úd³9n]“©_iý6í³¬Ë“ŸÂ¤ŒBµ±Ž•]íÉK“ìGª÷°Ÿ9ÕfÚò îˆÿ"¬ à‰>8PïÜx p¬Ü¨.G8Vî‚4ÚÈ=åŽfdu›Ip²<Õ†ü¦ã&È~Þ\†ƒå.@eÛ Çê]#ê±ÍnÜ[4p²<Õ†¼î¬~†b²ÅÙ¸ òÎ9'LÆ]†–89j]µëáA ƒó ØÔÏP™ßà!ç.@eÛ¶Dé³]€’BÀ©¸ `D^ »š.@u)ò/Œš%‘—ÂTÜÙÝ‘&\ˆµ.È‚¢Ép²ìd3lkêgÈèW8WvŠ!•ÇÊ]€öƒ»š.€¹h†FW†?&‹q I™6ƒ²» kK´é’çê.È‚  ¼5ø\-ÈCaOÓ9öÉmp¨>Õ†\æá&@s¶€ópà¾B„cõ.€QŒp¾ÜhvJp¾<Õ&'x¼yŠM^³Ë¥ÊÛ˜álÙèk›2œ-wA¶ÈQ¿Ë Màþ¹¨<[v¬‘sqû -¢#Ù’d?6¼…Ãu ø™¡ÙM€{ N–]ov=m<àp}ªMò0ï‚6šìa>îÜMRp¶ÞÙn /8[vK"?•gË.HŸ¤{g»µù/m»m çã.Èð!/PYý u‘›Ê7¶»FQš]•mä¦rS³ `Dw ßÙ„jc-ljvA6isΘ¡Úxdiv ÚljBµ N˜¡ÚDdiBµI´úÊ~ìtQF”f¤9NÈ(Ta_ÓéFÁF8`„jã£Ùh¹¨ŽöYötØ¢Ù(‡\4C£›Fi…æ.@u9šƒPlâjàx½ ²¶h£é$…mM $çàÍmäˆDòQ˜‘›|.D]5Ú£é‚|Œç#ýQ¾¹í¬ì1n8#7«K76M³=ó…òÝmÀ(­ÎØ]€ê˜/”§Ì.Èç´žC9rõ3VF~šeW6¨LyÆìte ˆÑt!P“ø¡_5Š+2»þ]óÊ” œ²»+ †°»it#†ò Ù¹*ÿŽ¡RÆ#x;ëi öÚm©<Í5ü „¶C *-éƒW !}õàŽ¿Z?´<¿þ×ûlGuÐÄ©Õ÷_UŒÕ\ósÛÌIÇTÚB^ß~uzýôù£›û_^ñßﱡ)}Ëm¤•‘†Œ>?}ú↡$cÃi¹~z÷øÆñ§°=xýèáÍïÿúêßîÓ­üî;&d5ø Y ~BöúUÚhð+² üŠ„¬¿"!;‡_UáW ªô«àQ/ƒ_¥Ñô+Ø\¿¢‘¿b³ø Y~• ©¿"!«À¯HÈjð+ð¨ü mÒàW dçð+”£Á¯Ð" ~BVƒ_%!«Â¯‘jð+²*ü* Y…~BV_‘ÕàW d5ønNƒ_ÕàW d/€_ÁDƒ_FÕàW d5øÙ‹àW0ÒàW¸;~•„¬¿BA*ý:¶·*üŠèô+بð«DV/ƒ_¥‘¿bugô+´X_‘í¼„~•6 üŠ„ì~°U£_Ÿkð+¤Ð¯Ðh~••)ð+¢¦ üŠô§¿ýy ý*mTøU6ûÃáW4¹~E£KàW4šÓ¯’4ÕàW d5øY ~BVƒ_YÕèWÙn ~BVƒ_em*ý*iÓ9ü |¬F¿Êb4øÙ èW°™Â¯Èµ*ð+² üŠTêѯ`s üŠF ý µ]¿¢‘B¿Bmß/ý*møaS•~„¬¿"!;§_e{.‚_Áèúuؼ~•¤© ¿JBV_±$~• ©B¿تÀ¯X›B¿BASúºHƒ_ÕàW D5øY~Å’¦ð+r­ üФ©¿bI*ý*Y ~…Vÿð+ið+² üŠ„¬¿"!«Á¯@£jð+ШÁ¯`¤Á¯Ð& ~•mšÃ¯ÈÇ*ð+B¤ ý „¬¿bA üŠ\«¿bI üŠ%ið+”¤Ñ¯b:ÑàW‰wjð+€¢ ý u)ô+²F¿Ê¿òå~Å{RàW$dUøUÞøeð«4ÒàWàQúUö€F¿!{ü*4øîmN¿ÊF+ð+r ý „¬ ¿JöS_±¶)üŠ|¬ ¿ÊÊTøUVvü*TøUV§À¯Èˆ*ô+àŸ üŠ)ô«(F…_%!«Ð¯PÐ%ð+ið+² ý $©¿"$:¥_¡~Q¤Â¯€š*ô+¤Ð¯Ð ËàWi¤Á¯Ðìï•~…~BVƒ_Z½„~•6ü •iô«,Hƒ_ÚÔè×Q ¿"EªÐ¯@Ȫð«,Hƒ_¡Ùý*›}ü*¾oøŒ4úUÜš ¿‘:¥_¡…~Böø4øY~ŽF£_å½]D¿J ~BV¡_¡ ~•„ì~E>Vƒ_UàWDMø)Ò àW0¹~#~EBV_ñÞø Y~ΦÁ¯ˆ*ð+r­ üŠˆ¨ ¿Ê’úÀV~ÅÚú RàWyû—Á¯’"½~#~c«Â¯Ð$~•ið+ô}Ó¯Òæ"øŒúU֦ѯ@Èjô«,G_esTøU"«—Á¯ÒHƒ_eu*ý*nMƒ_‘kUàW$døKÒèWIÈjð+ «A_UáWIÈjð+Twü F*ü* Ù9ü |ìeð«4ÒàW d5øY ~BVƒ_å ¨Â¯@Èähºìæ!-ª†b^T…Ĩ  ’ÂbbT Ą̊ Š©Q5s£*0($GU`PÌŽªÀ ˜U£AQÓpPÈªà  )8(æGÕxPÔ4 4@†TÅ©Š9RçLè1Iª…b–T Å4©ŠyR5.¥j`(fJUÐPH•ª¡¡˜+UcC1Yª‡²¥jt(¦KÕðPÌ—ªñ¡0UáC1aªˆbÆTÅ”©"Š9S5F“¦j(fMU(у¦p¢7UãD1qªŠbæTÅÔ©*ŠšÆŠbòT …ì© ,ŠÙSZô )Ñ¢˜>UÃE!ª‚‹‚¤à¢˜?UãE1ªŒ¢¦£˜BUCF!‡êŒ9Tf“¨*Ì(H 3ŠIT5h³¨*Øè‘,P£˜FUÃF!ª‚ž¡¥ló¨*Üè!‘ªŽb&U=ÃK'äè]:!G1•ª†Žb.UEM¡G!›ªF¢¦á£˜OUáGšBFÕ9A U5‚Sªj)æTÕRLªªA¤AfUU R̪ªQ¤˜VUÁH1¯ª‚‘b^U$•‰UŽ«j )dVU@R3«*()¤VÕPRÌ­ª°¤˜\u†“ŽÏ KŠÉU5˜5&…ôª MŠéU5œ5'…« OzÆœNxÒ3æô (="§3ž¬j@)dXU€R̰ª¥gØé9R )V5¤5)=O'LéwzÆ”“¬jP)fYÕ¨RL³ªa¥˜gUãJ!Ѫ•b¢U ,…L« XzŸž“¥iU#K1Õª‚–r­jl)&[ÕàR̶ªà¥nUÃK1ߪƗBÂU…/Å„«`ŠW5Â51=hcŠIW5ȳ®j”)¦]Õ0SÌ»ªq¦˜xUM1óªF𢦡¦˜{UcM1ùª›²¯*¸)¤_ÕpSÈ¿ªà¦˜UãM1«œbV8ŬrŠ9X5æô L=gNIXê²°jÔéš:¡N! «Bž‘©êôŒL=‚§" «†VMxå”;ÅD¬xŠ™Xòô iè)æbÕØÓ3@užB2V…=Åd¬|ŠšFŸb:V ?=cTÏùSÈǪð§˜UáO1!« bFV@Å”¬ ƒ 9Y5“²j*feÕ(TÔ4 ó²j*&fU@TÌ̪€¨˜™U#Q!5ëE…Ô¬Š ¹Ys³j,*jŒŠÙY5Ò³ÎiÔCzV G…ü¬sõH¬NpTÌϪñ¨gÐê„G…­ Š Z5 5HÅ­’zÆ­ž#©gØê„I=R«$r´*H*æhÕ˜Ô3pu¤žq«&5@’V J=#W'P*fiS©gèê”JÅ4­–j<*kR®[ÜÄ+QyDKc_N¼Má~¡"—´Ò\˜zÙ–©Ðùü̹ò¾\u¥,´†—'i-ÿ>Šóüôø½'JúVN´Ñ—Iíù ï¬÷ÔVGá“»Ç7–&N:‰õtã&Òæóþo®N¿ýúõ/Ýþùæ_jï~ÍÐ~âôŽ´E£)ãTúÃ+>/g:å}{Ukã»ï[€ÀÏ’c! ³Y+,Hî[\ÎfËÇ:M‚:0×Çvo¸Yñ©Xis]V ›é(\9’\36Óž¤>~ËüŠš:æÖço‰a²BþWèÀk;+äùõ͇«µ;ŠñúÈl-p+d]¸;œ˜‹BÑjÐöÕ›¢´] ¯á±¾’ƒ|4ØŠ@~Yãävn¥«¼b ï[”˜ë«¹ÕÖͯ[óZŸÏ¬½C»PSo¡œÐœ¡žü%ëMÑ.ÈVJÍ›V0Mr•IcZ¬t`+‹b9d°B=ZÀª;Ôb‚/Oò ùÇZ‹©»°²9¯½eÈ—8LE™XÉõ%¼¥f•ùÉ1.Ã?X²Î×¾±4Œå÷YÛnBmç˜à_Ô·4Ù0ÑE;Rî€g%nꣶ×Òñœ_ÿ[——2L–N/ jqé¹–A§n~H›mëò¾ œÓ­ìŽ·þð‡Â-U¥î!Ëüš«BÝYR§ŠŽþ¯<^ƒ«³«s|Œb¡Û·¨¥åÁ²kî2CY[ýÑ—{ E¤ü܆}-T:ÖŸå#^¹ Gý™›—l¥dOÑò0a÷$O%®Í·Bi¡§f(_*Ÿ¨ÊãFšJ=mÜ“š£méÈàŒœÀËàŒ|‚”»YÌÜ~KÙƒ3òOü ÎÈ?ç/ÛÙò V¨K ÀÃþ\þ¡>—LKl(µ—“MMåš|Ïkb‚öªDjShOÇS‰áy×øGôìø43•Oü{yŽåV°@ûú#ñ’€þ<¯Q1´H´£cåÓd%è|Ü@DÃ!üŒƒÇúÃ@¦ë‘ðwtŒz¢ðhœøµÒ2+Ÿ„1—ÈÉ]!ŽÊùîþÍ=Z,hr<ýé†:2ùlÓé¬úýé)©4#ÒTpºccÓhOIö䡯^¼d:„esz^Ê#GHátûú†±Ò@{ YÊ‹»Zø–O·_Ðe䣨?½øº”h“³§×lÁg±Ì—ü>6‡­6‚ÕšÑ@w*ß34åÓ+6fÆi lÁå­ÝÃÃZ_ʾàç 4·82ØËx$ÊxVk¡M¼WU¥’.©CR ýòéö¦”µÙÓ7|ÅY ¨¬½¿Ö/‘Gz´«¥³Ö5®©Ýç±5|ð¦¡urh-ïy7~špÿ!&7‡Ž¬Üo_—Kòìxz9.¿—¿—Æå«›V xPùOÖyÓ«¹'û†p㮵áôeq L» èÅâšïrMy3Éž>.C»“WzÏòc&Ú)Ü3||¢i½TV¾Á7•ËxQlsz±ðwio™·Ú^úÃС—·cÖx=K~9.3w>—_ŒË_ËÓË?O=“ÂÄ´ßÔr˜\ø§>ÔŇÉå¶j³ËÝèìWbí¨3–M«w2NN·ÍGOGû³1~¯†G=Ý'¬RMM§'õ{¹õ·â¼ñò°¸ÉFÝÞ…S¬c·/K´MÝi‹tX"ùás |7ò–_Ôóæ‹K—$¥ÊÈ{Rzšf,ôßpäØÕ:y_Œ2”Å ö1ÚRRË¥‰lHµàûš@{‚‡¢zkŽVáSÿ÷x,PÙÚ²9uy6ð¤>‘"vyÒYŒq–“z„5÷¶©Ï'a,moš ËÜót\>—ÿ`Sá=戓óNÊññö‰ôï×U/Óû]YøVËÂçj)1&g•§c ¬ALki[ï»ç1¥Ö[žÜ=#eu?ÓòOT\…Ëï8iŽ{ºÝ›¼7Ó@`váÐN~èïÍqïÁp\zƒ§·o GQ÷!—-D_3^”Ó±NßÞðº¶ÑFª®)uk‹J™ÚžÜ¼ÏžøÑذŠí±ØÑ>—ÏÇåíÔVöËqù›qùû±aýt\~1.5ÝòŠËîò´©wÇ·ôxÔ"6÷b—þàm·›ûÞ?8 õ7¥r5:™óÛÏ¿ÝüË¿ ÈŽ‚­ÉkÊå³½?7¯‹æô—¡ÞŽË—ãRœ îÆåëq¹ŒËÇÓD¹Ï§å¶¾©×7ãZœqLqÞ —SÛz°áþË¡KJ?í]Òzäè¢wÿ1zDßžŽËWãò?ÞÖ#OÆåo§Aôå´âù-‰Æµ÷ôËiW ÷}"{õFåÞOçÅÝM;ýÑÞOó(]öTöÞûÉŒò2oùû5q¿ü|\Š:þ8f1©è§É]j«ÅoíÃúöáÛ›Û7×úpZëë©úݺØ_G‡þìÿÜ„ýw›ž^Lm_ï#l´sz9.¿)cù=œñ¸/8.?—¯§eݎ˧7t,ÏiëcQÄ?ŽËoê3K~UfM[üÓ¾ÓîN¸¿²ÎÝN{ûF©T4ÛdˆØ8ˆ‰Hì×Ä–è™BÇMÆGS§þo9aÛ¹bÒ{<ÝG½ÿîè|S0s¡ïøê¬Šù0ÎC÷! ãÞQ«›Èïd@-½ռ϶ñÕô•‰ãñ´_¾mžMkþX:Ð~ù£q)ÚóÑôkg3D¹üËtþhZ˜c§ÿâg!‡Ó Í̽_íêlù×–úïb§üw ŠÏþßÑßÏÑwõGoÿWó¦ÙqùÃ÷y#D ¢×Äzôã©Á§}Ù¶e‘ìa¼öÝb[Z÷K±¶¶»+×v\þ°.ï!.Éì÷?ïë°ÏtW½ìïrãÿ+3ÿ;…8Ÿªž¿y_,¶ðâu§Øb ÿ•.'Z/œ}¾U{=íÍ×ÓÞ‡bC)Ú&‚OlŒï¦MûШƒ÷ljÙ8¾Ï)Dz¨ùÙ´3ç½-£èñ¸|1.Åv÷y-N`½îOö6bövß‹è]Þ«‚ýòëqùl\Š ÷{¶ü= ¾y§ë:´¾€iäì Òq‹:g ÄvVnÄîû]Góè•°JÏœnîÁb›o]ç…ÍWÏyÈ}=mï£iÅâîÌoùü–ÒÞÞ—¢î¦u|;¼D%…½–ê›êáPÚ÷ßf󳪈qð•õz´A4g^šX“ŸÌ Ó—_N=aÂÙ1xwõ¿ŽKñ˜v<:œ¯|óQ^(èS{U—‚—¯êîøïþ¢—ž¯j.›Cƒ{Áþ꣭äwmEa¿—¿—¿—ŸŽË/Æå¯Æå‹éåü ¸á$>v¿)àFÏ”w¦™ßÏž#UüBÜ`ŽýñǵÓSṎ|ª‰ÉWðôɽÛÛc yÞËœé.¤ë{ ÐkÊD÷Ÿÿîê7&þendstream endobj 192 0 obj << /Filter /FlateDecode /Length 3634 >> stream xœÍ[[o\·~ò#7VŽ÷˜÷KQHÜ §M}pó°Òj%%Ò®¬]Ù5Šö¹?»CòÎðhv¥ØJ`øAc.9¿‡s^ï‹Nî‹ô¯ÿ{rµ÷ü¥ ûgë=±¶÷zOæ_÷û?'Wû:‚FBKE”ûG‹½2šŒí¤û^˜Nj·tµ÷j²ZL•’f²9ˆÑ†89?˜ h‹Þ«Éié¡£š,R³"D9¹…ÞF¨ ÕdIzŸ@³“ZÆHù]©¤Ð.LVËÄO Ó锓ٺ4ë~  è]Z… “c ð½H ¦04Z˜¤a¶DáÎN“tFˆ´ÄùA%»ƒ©® RN¾M=ú «tžŠAx“¹Ъƒ—ÎMV—©stÀø2qó1D Òƒp÷~ Â:§Aõç%Ž?Ãuž¤:m]^¾‡Vè1gE€å{X~0 "Ìe¤ÒegJÏ%’?'¶AHÂGN(Ñ%*D%aåh¸8…1©üdäÉ $¯œ±} ³¯‘|äK$ÿ‚ä1’ß ¹bÉŸúE5П«šJÝYBYA# Nk }b^†‹€nSÕ.Aëí4LôŸd½zíÃä´lW4Þ¦ÞZ«ÇĘîbšD½S³M邨ÀÔA=pÎ,²ÈL wÚCY—©u°“ÙM†,$K—šAVºê-{‰=nI„<uDu­nÄ9-dp'¬ù¤F‚¾™‚ý ç`)A`^g»ÄõwÕ€*ŽcrÆ$ÑzÿèÅÞÑÓc j0ÛºR›J]TêªR3¦rùºR/*õ²Rßg*º º¨ÔºRß0ýCµ`Ý€ëÉjãµñ¶RËJTjÃȰbFüs‚äNóïlQ`LÜ$좵±ÐI]òªRKFq7L¿Ëa Ý//5’å]Wif•º©Ô)³\hW©3ù]1üZ5 ä§Œb9%n˜ù°ßeÑeV¡°y½SºWD‹ITèéHñ¿"æ;±ýýNEœUꯕ:®ÔOÌlœü(ëë¬Ø¤ÍF[É3¢·‡hýãƒÇgÉèõ4kDét†jœE¢š.ˆÂv+GÖi~Ï þpêU¥õÄéÝý”ÃØç«©Çß½¬±Rî×­q˜úwuð?!P·ÁsÆS®Q´–zEο °ŒØ\Û2œ3l6¤­v$®­ü’™†ó ìÔowvD6¨ˆ·8xÆÈ°&C˜sdÅt\323¬O9´½}œf?´U —BŒ C0H#ǧHR'ƒ$º£39éøËAH\ÙôqØÐå³Úú¼RŸáÏè4ÔØ}VÆÎ¯¸!m»ÝÇxôØ”ùxxW©C!שõÛÆ +¦ßš‘g{SÐà]ç¼Ç»ï]ñ_1Š{(zñ@{Æp9üÎ=š§Ã¦õlJëXT\bôG^yn+uù@ÌËÉÇÚø_j{¤+ãBÑ].p¦M©õ}o­÷Fh xñÒ„~ó;B¸÷§;9s»ÆÜœî¹e1÷ºÃ’[ŠCÎköÎÈù‡5³Ö²?L°»Ø/€PÑwÖ†Áè>çb'ÌhΠqy‡ÌØ'¬æÿÓ›N/F¹à¿Ët8 ’󜣹ùî’¿%¸ØÚšCf@þ >çãñ@}¾s_ל0<} Ö¹‰q,jO‰ç̯Om‘sûs.ÔgÏ~)Ù¬ƒìB¬géG°ª_Á‰ôžCuZ‡ÆÀ«ý´§mœŽº«{ÂG¼C¼!¦p×<ˆÒQ|„+òp)À 3öÛÁH mâŠëøP#{ÆŒàÍ fâÝáïîÄëšé·-zWÖû®ÌwåšsáåîÁ8^“O™Eážœ3üÖŒ0ïÑL¶é|'L\†€æ{ çQ²æ®3âòý i/³Š ú+õ„A?—æÎ‹%#3®ã 'ý}æKããˆáÁø•Z¹.?„ _”çÖá•{}Þ^XQ{Ïʃ©€ë }օ˺‰¦óѵϳMµGꡃë¹óSì&Äèì0{0å]¿¾çaâ™mïºtòä\‚¥,H›$2èGÃ]õI߈QÞ”PrÙ4¥³R‘¡LvÃu–U_â„dË ´µ™¶ ¸Frƒä’WH~teýªJDT\„qv]—Â…¾Ff–j€L‰2 ”Pºßôàl»§ÝÁ4˜ L&G{ç¹Ä¦ÌÅi#’Ã! i7Œ2¡)™¸=hŸþ‹˜›Â" ÷ѸTû’/Ž©YÈÝ€Þz߃ ¾HÈ­á®^²{Ý!¹Dò˜Ýaù¶Ùp GÕ©Õ†ÅHƒN>mpÚ˜ÆLh)©­(5".eŠñfUšfŠ™zç-±y¤.° ¨¯dŠIŽ³Þ¥ Û¥F•7³´¢TnÀ°ádÒ¬qòVBÑzš‚Å´÷*-Ë”½..ox… )¼š­³ìÖhO—Äíwˆ]4.{BöÿÝYÎø—ü~‡$/·ßÔWŸ³õ5ÉjðnÊÐq[¸=…Òú4bqÙ¡¦‚>¡>\{0?Üuõ}ÖÂ)GúN&`ôCÁÀªPqòYÎ —“-Œvª÷BVõYAäy;.×ÞéدËÒÁrÁᮕM•‰]°º Ø!Ë!zŒÙCõäKμAò« Kº:gwKœHgß-•:_#óK$Wô¸â¦¦[§¼Ï+êNh«Ú93÷Ö`欕œÜ'”sÊUH4Π=¸Å÷­6¬¢ã Õ–k}¼G-—¨ áî¨I0L)ž¼µ²·@ºEß"É+ø”Õõ ÛášåPžvt®wæ·vM:OV8î)’’m½fÿœÊÆ Û"æšå¶|,1µÃ¹•ÉçHb‚_zŠä; jÐ`k‘˜Ä]ìÔ(£cIËZAd;XÚ! “g˜²:$5Kò³I¶¯aE¿X†¬=ƒ¤@R±’–%M¹ŠT#ö¤ÄœË$‘aEB…mûè@η>Š˜IµFu*˜‘f§¨7ÁÂ^°x,ÎIpfÙV¢z²ª-8S[¬…cF&vlk³ 6ëRµ£ ÜtjR³FLéj#Ràoû”ú[oŠˆ"Ü=B“y×XVš|ë)€ò4Cãˆ< `>}FBÂÍJ8é´7wb&˜=åUÞØ”7’C&Å娋˜ÖE¤&å(.sлvyM’‘ÜQK<+È×~‘t` Üû˜°Mkä.£tè[É-wFCÏ^ŒôÉÙ}iÁ”…õúSÚqRo$ù:Š$‘ü É/$¹ÀürKR¯—‰ÞOWE-VxzŸ‡ZIþ%E® [6$–‘Æÿ•—}œ.TóÝÛMiöÒ< d¿¦ê’à3*H¹®åÔOÁ¹·:'óŒ"„–é2FRÑ'c;ˆNJV¯¢N¸gÒ n€¹ðNî]lîfðÓÕ>øÀI?–"ßÿ•ÖÐb[Â&%óõ*){ü¹ ¢…P°D“CH'ò#áäý3Ã(UÓ_ø•0ç :$¿@ò%’/øÎÙ+1Ζ´ïèÖDÎVޝ×ISÍ•zËínS:·ß¾>/ 9¹ Žùi!¥Fþ«f š,¹¿ÎÇ(¥$ŒkrôsKm÷}ê,yŽÎ«T§9…=ÓàŠú¸ÿ¦d¸„Œ†SxìLÁí7ƒÆÆòWŒ»Œ1mTù Bgl˜¼x‰9‰)1F„X{ÐLÁ@Âü:ˆöZ²ÑFŠ692lOv¾•ákCÎûñeU9 D°Â(=~çJL,¨{S)ÀT ± à‹z0Ê”jß Ú ˆ‰sC3 ôŒHwR/ÁÏÖ÷„íÔ»–¼ˆÕÎg×$#8½#3RfW êÌs4å|Í)‚ÚylC2%£<ÿéóª=à’hÎÛ¤ˆSú¼Ez ÙnEeææŒ¸AÄ`&ÃS•òsqƒ‘nss"Áðÿñmr;3¸oYqûaxâƒÝö´Ø€—æçZô&&Ò—ü¢ŒùÃïù¶3mÇwœH¯‰„$­Òël=fý×Öé‹ï ´á÷ö9ä‘Aý݃jÕŸ™ìø>8_Wrpœój¹) -/̶/æçø /q.$e¬r~,*ÚcVpµ„¹)„†¼YTw“»y•1'w}>‡o—a¯ïè>9ðá3m%i"j’|ܼ=GŽWih*Ò§øÛ—GûNÓ/öþÿþJm½5endstream endobj 193 0 obj << /Filter /FlateDecode /Length 162 >> stream xœ]O1ƒ0 Üó ÿ €TÁ€XèÂЪjûà8(NÂÐß—èÐá,ïN>Ë~¸l#ÈGpø¢Ʋ´¸5 ÁH“eQV -ƃ剳òBö7åßO°Èìü®f’Ϫ¸äU¹‡ÐiZ¼B Š'mQt­1 ÖÒÍálš.£ªkÌþSIÑTâ¼ ¸†@sÓÜ$°L¿g¼ó)ÄCºSxendstream endobj 194 0 obj << /Filter /FlateDecode /Length 4012 >> stream xœí[KoǾ39ú,ŒÙ ¼ã~?Œ(€8¶Á±eúdå°|ˆ”½âJ$%ǧ\ó³SžéêaE9±O‚,÷ötW×ó«êÖ«•ôJáåïé‹£Ÿ˜´º¸9R«‹£WGš~]•?§/V=†ѬÒCp«ãgGü¥^iç­ô**7hVÇ/޾_ÿe³õÆJ¯O7jÈÙëœÖ‡J^Uò¶’×ݹûJ>êŽ>¯ä ‘6ÙPÖ%òéºÒוÜUòª’•<¯ä£JêJªJúJ~RISÉÜûQ—}%_Vò²;÷Q—§›Í?ÿz²Ï«ãÇGÇ’Z¹©"{Ý•ÿ›iêŸëàvÜu!Dw¨äÐ•í¾«¡‡“¾þÎ*ù¼’Bï_w>t™øGw»ºÂ½y›"ꣂ¡ëÓ.gâô·o;žËäÿc]´ãíu?>;Bc:þáh;nɪbÂߤQ OöqÒ5•óJí ÿ½×.'òos¾^Üq’Ÿx-[l)®¶Æ Y{ÃÇT›­öQÊ@À¯¶Ó¼Fº2˜*éëסìé tÂï*kÜÔøÁ+`£xêß6ÉFi¿>\o¶6Ä!ä2 J9P´‰ƒÏÑ‚1nP9F³> Km‚BS€q›³‹¤MkXXãð ǃ‚Å™$Ñ °hbÅÏ‹$¥uJ<ÛúU„Š&»!­2H`ÖgÇß<½¦•ÒÙõŽ rsZ™UóÑOp£XyÕë‹s\É)ÓÀº`<À*DXäà×;Ô·Î&ìhßÒI¤dÐòLŠä¬ÇP´õ.Â>fý%k¥¢ÂlD[úÌ6\FÑËÆgæ)Á*ný Fm7¯©{ïiëœ2( O’³#¡è|vÍjQ°î5©ë‚÷Íí¾;ô§L²†¬¹|(ärKZÉ9øX¸Ô199ƒDr2ΫåŒK,п )vA>TN.ʹdî) ôʶƒw©˜»Zª¥A±Ðéhc’gÿ.irN sk5OôN«Àn1ës Þ‚¤@N[Oª·àŒ œSôÙ7ê!³gEœŠòZÞd ÞÄšM‰Wó{LÚ®z9ç–¬®;96É3žƒ6Äèt p¤Æ+…|ÏÆÍuc¯eGY££Ëª#6«äÑ®ÐrÁh"ã(›LÈhÚÅI[L´Ãòàú*ëx“ ˜¤³£yg&æ’G™¯õ'›mtiˆÉ¬¿¦òÙÙhˆë[$uÔ3]Ò0Š‚vÉ áaNŠ_Ù¼~&w]V` NLì˜gøÉÁ"Õ¦$Ž \5z¡éʧÜ8ÔŽÏ)6ÚÚ‘L•¶vÓir1i²·yIЉXæyW<êú‚´,´ Ú`‡JòÉ;¥ßet >2šì„Ӻؤ9S}‚ã ÒUÊëÇcв2nCÈäÿ ‡Q¿$Êq)å‚óˆü´’O*ÉË~v|ôÍ‘y­~‚bãó#!/BZñ^G``õ¢Žž’Vû£oK’6µŒ5‰Y$K‚ê¢ã’Dc ΊÒ:"- ÌË•¿žþú’¥‰WÈ” =3h3¤kÈ`ãÈ/`PEp­¸òNà¾ÌᕈhàÎι!A,•«õ$4|«Á¤Ìâ6a”¨€$´”±ûпHÄð6í t`1¢dµ©t*Òÿ†"eW M;'÷Ø‚k`1«-*I%‚`ëÿ %)&]ñ Z„—\@:‘»J^Uò¢’ç]L6%:öœc²R&sÖµ Ü*-'2po<ô8ì.4ødø9àφÍË_!nº¡``Áme¼9©yX$\íÄ\ÚX« ×?S°Áã²…± sžàg!Œý^ _‰ˆUNññŠ×ð@^Wh#v9©†ßˆjÂ-»+ÅL‰ÎbX%%^N©ðœ7´pÔxÁ©v¹O#°òR²i†"*ý’Ø0K¥­p>‚å®ÑüФ¬Êƒq4ÏÝUÍ-ç­£nǹÛ)bã'â˜$µ¦ô¼  i'§Œ¡>¯™s!Ÿñ.˜˜ZØŠ£`Žëo\<ÉFÊŒ…££‹Ê*†1ð"Iîy5•$ãîA™õ^U;}-Sµ°¡…m XKˆ‚­]wS-j&üyX1& èúêN–»¬ä®’W•¼¨äy%¹FOÚÄõ‡•|^É«JÞVò¼’ו<íNxÙ]áÃnhÛŽlÑ<ë0x¾Å8/Öšd>àEã ‘%$ki{¹Úe·¸)s!±=(ÚMž>û'ˆl³p'JX²N‚pGUµ#´ì,ZEžÅÉÏùüp8 öÚšp²÷kžuS ël'OIâêíÆü…oÔ(Yƒ1Nó›q4ÝS»’Bœô¨—} žõÏ÷‚+zgÏÁ,0 Žq+êê+ ­€ Môý¨m/lÇ¥ÚøÓ»&^gEI ,H(sv¯§ŠGæ7¼™GYÒá/¸ØKX… Ê‚DZ¬hÁ4ºc¦Z¬V|(Ù%Áï1×e¬Ùæ‰Àâ*âËg’Ù79«5X}´€ŒÕbŸøŒë/Îki Xœás+¤[f4£Ô« <=‡º|œ0A•þ馜,[ΊˆÄ6/Øú‹Í˜©nµ¥ DqËmýoÄ…x—QǾ_.E;9 ù‚£ãíÚR‹Æƒ²ë¯¹ë€=nVö8$N)æ'IxüSóâÇ#d¸FçlNÁy.û •½ úç °°«MŽ}c ²»åƒ‘}Ê #n;­&»Û µ/ì%Ýt„ùö{Ýt ÛæeËy®»è¦²~¶ìçºç›·ä:€‚P_L%B¿Çá© ËIQ¤1™P^ænJêÁLø+¿Œ›AÊxëäȉj%ý÷Óƒ¨/n˜%Œ|Íc 2µ6ŠE“çh߇…<ÒÆþöWMv]ëHaë«è5÷;YK,Ã.4²ÍLí8:š8¥6cŽë¾cƤt¨!À˜ÉSç ü—¯ÚÌWréÄY^É¥=µìŒJñ¦ññÔQ}ƒËŸGy.a›?óW1gÙוª(/CMD‘|XÍ<­Nß½h˜îžÜ”Þw¡ô¡’Cw‚øìº‹ËOºÁ! ›„^p-ãÝÔ{}³ÃÀJd!ïN*‚Ü×H:³fѨíô>2v]?yÜú`Ì?o}œWRLØ=¤ßñ¥èb Ê(á2pˆ0öôöjÊÇe®Í³†)”°PvÎÚ¨M“Oˆ/ ­é··¼Išwˆ„4÷@hFo¿&o°Ä°­í=2;«Ñôä³²Ô¾‚m‹,üq3UÑ²ÕØ^,”ø4ÉD/HJæ’7¥ˆƒ©éu” Ç¿ ÿy…6.•‘M ”3Þ‚Iÿ)ÕtG†s•kÒ6¢AÊS_dlÌ—É–;?Eúm}:;Yƒ`@™Ùše½sàa¥Cçd¥å–L2¥nîi…(EÈVWB)XçæðŸwÇ¡ÛaºÛå!p²°¥pŒùÂ+9[1ÎR+æX˜Ú卿¸¹Ë6ÓE…†bÐ  Ð€ø~ã­)s2'¬£0 i×Ì8/Ãë’ÁTÂÛº›j·‹þNßáM½èhŠ,yËRN *¿âaôªö2®¦]¬º¬Ïî,8Š v³ ŸÍDëT6¡fkáDt׆5PŽM6ïÖ¸|!H5åìîx²¯"ÙæîûYæ[3,Ptuhcm ‘É‹ò2»8¸n°çëæ˜4ÁÛü&lž@Ñ\þ÷¬i±¼XXKBÊ“ Þl$¯²íjI6¶ñ±CÁ”E^nÆþº¼ü‘J:ã=ƒžwñqT){ß·áûÃÝ©Pô­p_aÈ»=¯Ñpú=}YÛHEPr+·¾ÍAKáÔ´gÚº‰XŒ)µQ~ÁHôc¹Îÿ‹ò´) ѽKaìL¥óX¶Céú½¿ñ¤6Åy Kj ÄíÓ5£#†‚1POÔ-vÖÛSܦKvßLW©ËÖî‹,@£yä;!Ô¶i1Éë#sRV˜ã =‰¦}ì4½GcÙgl?ÄýÂÛjü§mñøø¢ÿ/+ÀÍs¼ï2#{¤û Ù#åazhÓÖ¥xÓ•5¾ ¸N˜Ù¯†|2½±+WIøpa7b=ß܃ïþEK[ßv¯š)Ü6º>Œïøš¿ÿòG¾uÌòPB2¼sÄ«YùoÈãÀ}Iʆ®ã±Ýæ/ÏÊ ÙÒåcù¹)m÷5<îÛ€6CÆÛѶFnÿ•Ö{„üÛ!ä¯*ù]%wÉ÷`ù=X¾,ÛÉ(fr{—°r?0rðÆøö]8ÆÏ`•}h9?–öNâÿ`M¤×û{,Ø`ÍØ`¥ŒðÍÑuEÔendstream endobj 195 0 obj << /Filter /FlateDecode /Length 163 >> stream xœ]O1ƒ0 Üó ÿ @¨„XèÒ¡UÕöÁqPœ(„¡¿/ СÃY:ß|–ýõreA>‚ÃE0–u Ù- -‹²m1î,Oœ”²¿)ÿþx‚Õ@fãw5‘|–çS^•[¦Ù+¤ x$ÑE×Ó bý'íÁìΦé2ªºÆì?”M%Ž›€KÄ17ÍMRËô{Æ;ŸR°B|GuS~endstream endobj 196 0 obj << /Filter /FlateDecode /Length 9987 >> stream xœ½}Ý’·‘æ=c¢C7{zC}\øG9Fá™ØÐÆÄxFæ®/ì¹8ênR´š}ènR½Á<öf¨B~8HRw‡À¯³$ÈLTæÉúëÕr4W ÿ¯ý÷öí‹ß|cóÕëçËÕë}aÊ_¯Únß^ýÃK¢0Át\—Õ\½|õ¢>KóGkÝUZüѸxõòí‹Ã^¿ü =á<°sÊüØË»:<]ÓŸÖ´,ëá¾7ß_ÿûËÿÍâXî|ÎW/ÿùÅËÿñ§ÃËë›åh—Å®éð=ë²_m¦nvëêShÀøÖÑ qÝÆÿÐ}7mŠY‰¹~Û›çÒ 9¯­³Ò|ìÍ»)3!Môû:ÜfÖ5çxx¦gÃê–i!h{–%-ùpâö’“Í‹=¼aò´æ5(Ôo¨iÍâb>Ü^ßø´Ò’¤Ãù·ó1d8]Ï–'™£If_žç)sO½ùCo~Ó›÷½ù<åÞ+&Ø÷ço¯o‚'–øKÙÖdbܶ5»™£½ýž9JǼ®¸(…O¿˜2oo¢ <—þíyz`ú²´‘°y7ŠÞδFÂWçhŠðñ¼ˆ[X®¿²Ô®«!ŽÄ^icžk‘„Üi¥ízÌ´¿«¯¸Ëo™9ãÖ%»\¨¹ï®C -rEx&qõr"÷ƒ·¥gâ0Ú"âa v¥çû&Ö㘣£]þ’Ÿ\)»ù†3uÒäÐ',¬ôÄJÈQycNK°Ûá`ýÇ‹eÿÃIz*çdY<­fw\˜¨ ÚO9 P/‹™Úár™¶;¯ƒÌ0êI8Åñß_ÛÈòÚ—1éO×Ùò”¯¯£É†tujËŠfnË':}Ý ”ýîüÜ·¯ÌûT›Ëâ`7™ØdÒ?¼5´ìÔ[²B›i‹_ueÆÇ’áHâzët.r·Øì¬ˆoÅ Oý‹å9}/d›i^R[éðuQ¾Îæãü¦l_ *gû3ªœŸ˜…²Ì4©Ç£ Þòæ„uÓ¢‡Î$ʼnô9ñrö<-3­é' 1éøÐ mÇûÞüª7¿˜ZŸSo>LÖ½ìaf“"‰-Ú6%–.“h½|<¼,ÕÅ;±YÔ¦åŠ|ФÂcfÝbõ¼µLaè ‹ Æ…¬EñH^#;ehèµ*¹ÖG8³ˆ{d{‰d øKWËTˆÑÕŽ›|ÕÕHÞZÿmvšÛ–èÂúrÜ|”Z§@Zóèª0†Í éBõ³ÍÒ„ÌoRŽÁñq!fiÕÈ¡ÜùýôÁšÁ´0okù«ÏV^· ûSÏý©“ÐÃ[gè¡«”³dVä¸w+ËÐGDv'~,0YÝb¨üˆwÐñÛ±¶t®Ë"%–€êv7{ýÝ.§…Ãÿ‹ Ì³€bFGCReHlÕUÑÈbŒÚCÎ;®°Îa¿¯ê>RÔÑJ=Óž{¼Pƒ•òf¿fðÖ‚dÍ/ý_‘Á™òól®ó®k¾è׉ÛÞ<õ¦ðÃÁ·þ„JÜlÞŸ‡öëzËÖŸÈ,×椬ã§'÷¼m)®˜§»+«N)†]í½í~²˜ò»}Jç7»Øƒùßx®û3\F=ß–·íyì—…Ùf’„ÒüÜh¨çwƒÊO¢‡ éq²1ÄEÚü‹@î°Pÿw•4’k#tʼnŸZs`¹{dD‰ñ8ß Ô/µWc›ª¹Ð@·Ý…Æ]a}›b  oOåì²<±Ų̈oÖ]¨°xvëŠJ´ºLl®„F»ëS’²vÛuý}ÃÑÖŸ/Ì­ÐneFv%/…´PÐM¡éõ¸fëíÞ -Þm_§³¼IðˆýRÚ§R#É[ÁÓ»Ç.Ûõ@'â"3|8Éšr …CÙÅ%)O§×åAöz]9\.¬ôlÒŽòà.ÇâïÎïºcSw«þñª—"ó>½ÔørE‚º‘ÀO•„tÞú ýˆ‰*>Ú\–.ÍN´Î~ìÚº{öì ×YÕpÕ5¯¶5°ÊmQ0{*²To™.e—ÂјŽf¦^Ip·#íÖ¶šÅ?⫊'Ö²ˆ€·D’àšùýÊäõåx¦Œ’Á|+ßûÀÕ¦Œé‹ÑßgúL@«< ð&±ìzï.)~Q¹ƒ±üg¿Íèâ·Qê9Ž´â“sì‹Ã9.’“¢1˜NÚßr“ó»T@Á—WLà–¤¼ a!¨v#n/P_¿éÍûuO\Ûšâ¶ëR„ÖÓlX¬ÿX3·ñíÀn‡nœ#1Y?vn‰€ïâ6ZßF˜llòÒ>wKô£ð=ëЖu†t"ù¦ï]γÜ(±h]¿¬ÓH«²éƒ.¢nÙÌQaPÎ]á5NùµpúTñøÑÛ%uM[ F°.Ky‰ÈI\#Ýڈ⾲߆›†¬ÕZ^`Ðà´¤rÚMu:Çt·ŒËo¾Iö*×}q\èi’éM’þž5-ºiîk ©Ú^Œsó±7ß÷æÓ”ö¡7¿š¢oz³:Àä‡ÅÖoiþùÐÛO½yêÍÇÞ|Ý›÷½ùUošÞ\z3ôæo{Óöæ:¥ýr:³û)b_ôæí”¡çigÏÓ¾œöðЛïzó»)íWÓ%ùóu¹ƒ°ÇÖKÉxîÛöa*?ô¦ÝŸú»Þìài”‹q'Ͻyœ‚}¹A˜7D.¼[‡|€ª"ØKDÀžÈT‚1Øy\Y ž ¾ŒDyC`VœÉÆ`C*p¨*"ÄÁÑU(b&D6Òs Á¡È6Fd®"й_hF¤R‘´ÀÜŽQ Æv`D*Uôh6çE6Ò I¸ñàlPq.AwDÌÞ‘•4Àã€T*²’`F¤RqRð8 •Ь¤+áÈJâÑÙ1{o û„‚j@*çì€p H¥"+ v #rDR©ÈJâáiì'+‰‡g@ UXH~¡¯ó 6 ØXÕ@VÒ;"û œ TÙ‡ä‡34 •Ь$ž¡#Æe”è‘T–äxlÌ+’•´@T¤!¨"H•ìp‚¤RåQžwDÌ=qè8JeIzÆÀ.&2“°= Ç##éÑTiÎOCÀ`$2“ pØ: 4pë+“™tÀá€T*³¦ !ÀaÆc‘Ý`23HÜ5DÞz\Žy89 Á¾2I-p×…•L¤îvD¬çj8$T‘†nuîg°°ä+ÙG4 ÁIÅ8›†À2¬™þŠ}U©ÈL¢!hˆœNB+ܤræˆD‹à–4‘ ú…l$œš ñ|ß'êJ•|S3"•ŠläjCú’ùà•¤j0hìŠV`C`ö†l$œ› Á¾ÈF‚¸oˆ”RoÒ Ë‚#®$¹ØWE /K6¬@GÄJX›Ð lŒh½ÃÓ³!HE6¬@G䈉„xÜIµ–¿J*D •#i€Ç†À¼ÙÈ<H¥òíÀ†`_¡èBI…H¥J£DH¥Z´#R¨8WfwD¬—·ª ‘TnEK0"•м¸ß/OV,ÁˆTªLò <W •± µd%ÁtDöåÒp†vDR…Q¢‚#’{0"•*G|uß1b$]–dž€žˆd'-ð¸#²/†3ÔØ¡ š„ ñÁ–JEÖÒ ‘o }$k‰&¡!Ò;ðiYÐ$TÆKd+ñ5D¾—÷‰ý0«† •_›Ð‘Ìå‚}UD¾mö‰Ì%Ú„†àˆk†ÀW€&“±ÄóÓXÑLÖÏOC|$ß¹M*û„oï7„JÝ`4gN&ªŠÀ2djcWV½D=I¿Ôå›ßHŠÄÇ+C Þµˆc‰/Þ>·øâóí£úJ’ÙH‡!Y/Bic fóUà KË¿ üÓáw§‡kCÚ!»pøéùÍóÕùÕÕów§»ÓÓÕ‡ç7¯¯^?<½;¿yþíÕ›Ç÷÷O×–3~?ÜÞ¿Û~D™ƒÖÊ‘e¿º1,4KI"=¼óöž¬ÉÓ¸áù’¬ÀÇÂr¸Æ×ÉüËùº$Ûx8Òp¯®ÿ+†Ãýíûû»£ýÿ¥Uâ¯R-},þ*£¡jü¢´Zü£´Züçõ9ñW¤ù¼ø+RiñWQ‹¿b”V¿BÔT‰¿BŒV¿ÊȪ•ãiñWìK‹¿ÊÕúHV†:•ø+DVÕø+DiÕø+ô¥Æ_!´ª`åÔõø«èJ‹¿BŒV¿B”öo€DjüUFiõø+DiÕø+DiÕø+DiÕø+Di?7þ*c¦jü¢´jü¢´jüFÔã¯2²ªÇ_e”V¿B_jV†VÕø+:Õ¬ìJ‹¿bWzüU(5þŠQZ-þ #ªñWQ¿b”ös㯒J‹¿b”V¿JIUã¯3ý¼ø+RiñWQ‹¿ÂJ|$þ*c˜ŸE*=þ*#«züUÌ^‰¿bOzüUp¨Æ_1Ô©Å_1hª`e”V‹¿â€óø+÷yñW¤Ò⯥Õ㯲/=þ*c«ZüUö¤Æ_!©Æ_!J«Ç_e_ŸªIVÆgõø«œ•L-þŠÑP=þÚÏÖÇâ¯2J«Å_±/=þ*çõyñW¤Òã¯2Jû·ˆ¿"•…•øHüUÆL?7þ*©ôø«Q‹¿b_ZüãœzüUô¥Æ_1²ªÅ_1J«Å_±/-þг×ã¯böŸEªÿúø+RéñWÁáGâ¯2ªÅ_±¯yüc´ŸE*5þ* †Å(­}ü¨Ôø+Diõø«èK¿b@T‹¿b”V ÀÊ­…(­…I}nüµS}fühÔ¬ŒÒªñWˆÒjñWŒÒêñ×.yzü£´jü"«jüb¦jüúÒã¯2J«Ç_e4T‹¿b”V‹¿b4ôóâ¯Hõ¹ñWA¥Æ_a·Õø+FVµø+ö¥Å_±¯¿MüUR}nüURiñWQ‹¿b”V¿Š¾Ôø+ÆLµø+ÆL?/þŠTZüGÔ㯂G5þŠ‘U-þŠQZ-þŠ}©ñWˆÒªñWˆÒªñWSÔ⯣Uã¯3ýÌø+P©ñWQ¿B”öó⯒J¿B”V ÀÊ(­…(­…(­•‹ÀÄÃÓaÕÿtEÇœ Wü7Òÿýj¹º{Q«5ˆHÄ¡¿Ã.Â…;ì+@—ÿ„ïßM¦sfÀ¶¶&ǵ¼—Çò›¦Y‰eïáŠc:SK$pÂ)²Og©J`Gè¤,’Æ.t,øÕ¶@L,¯±RÊÌý4Ñj¯Gg)k@²)o¢'ȶ¥v!!æßuÄЮ…ˆ[J¶ÈÙ{6$›ÖÌý¤YËv]äÃ,©©îŸ@hL~‡|‰D_¢u„XA~s ›K¼E 4(ËÁi§ÉZ®­#ÿMWz~Üžƒ¤pd øµîÐg븢à:CúCäP-r.ìãä¿S€so—)é–â»vvÉo+?»DúÔÈ¿àöO…tœâ™äÊá]˜s˜"»,p¢ÿ¾E Ö¢¸ºg;Cºd†PwU É”ó>AvY tßMò&Kîk™ªDHCù ÐOit±Œ@‚Î$ å 9 ç?ÑÍÏÿŽlÚ‡+Ÿ®î¦@¨µ@HAY|*»rØBƒæ@šÆD@H¯€.[„@¬û"þz†™!}‰Y`lC4¦6ð÷òÙw<úº1¡ëÈ rIe83Cº¼Eþ,„Ÿ!‹´äš+~tñO¤VÀuÚ‘¾ðÉ;º!ýì¥Ê•õ=“ò±f†ˆ®Kù¹Ã%²«‹LW™,UP&%e¤†É¤¤|šûì2]dà Û‘ý!RdFê©LŠÌË™¬t‹IiìòëšþzF­Ä5Kò6²î––ãu·´o¬»¥åx_f‚Ïr¼±î–’ã=`J’÷E"ø,Çû2|–ãu·´o¬»¥åxcÝ­yŽ÷XwKIò†º[ZŽ7ÖÝÒr¼±î––ã}™ >Ëñ†º[óï¡ì–’ã e·´o,»¥¥xcÙ--ÅÊn)ÞXuKÉðªn))ÞPuKËð†ª[J‚7@J~7@Jz7–ÜRÒ»‡’[Zz7–ÜÒÒ»±ä––Þ%·´ôn,¹¥¥w#¦¤w%·´ôn,¹¥¥wcÉ--½KniéÝXrKKïÆ’[Zz7”Üšgw·´ìn¨¸¥$wcÁ--¹û2|–Ü·´än,¸¥$w_¦€O“» ÜÒ’»/SÀgÉÝ—)à³än,¸¥%wcÁ-%¹{(¸¥%wcÁ--¹1-¹ÛÒIíÊmi©Ý— à³Ôn,·¥ävC¹--µ1-µËm)©ÝC¹--µû2|–Ú嶦ÙÝ,æ4µËmi©ÝXnKIíÊmi©ÝXnKKí†r[óÔn¨¶¥evcµ--³«mi™ÝˆÍ3»Çj[Zf7bJj·¬¶¥$vc±--±‹mi‰Ý—éß“Äî¡Ø––ØÅ¶´Än,¶¥%vc±--±‹mi‰ÝXlKIìŠmi‰ÝXlKKìÆb[Zb7bZb7ÛÒ»S»/Ó¿§‰ÝXlKKì¾Lÿž%vc±--±û2ý{–Ø}™þ=Iì¾Lÿž&vc±--±1-±û2ý{–ØÅ¶´ÄîËôïIb÷PlKKìÆb[Zb7ÛÒ»Ó»Ã(ÑÓÄîËôïIb÷PlKKìÆb[Zb7ÛÒ»±Ø––ØÅ¶æ‰Ýf÷l>KÇ·K¦O®ø~™|y["j‘µ]Ÿâ>Ñ'–òRÒÆ‡R^Ó¼q9ÑBMK,—31-V¥ˆàSÃD±P˜–”Ž…ÂæIéb¢-F)'êªëÓJ¤§¬ñðÔ8QQKyÇ2dZÊ;–!›§¼K~jTòCç›ï•böl øÔÈ9›gÔ#¤%Ôc‘3-¡ŠœMóéÇ-"+8ælsö¸;™í ¬ÁðÔÀñPAmž­/çP#¾r±êq1"[/«á©qXŸMû-Ög›ÿê³M ð ¶ÙŸU|¬þnÀ%b¢.à&b ) xAÕÙ¤–—…-ï¾SuDPµLrAµ#‚ª¥I ªT-XP툠jy²‚jG:Õ– Ú©:"¨Zº¤ ÚAÕÕŽª–5'¨vDPµ,0Aµ#jK–û¸#‚Š3‚Iý§ø{K”$;"¨ ‘2Ó©~A¹À0+h¿áeUÀ?ÔX¹DßÁ.‹ã:~‘?èêÒÕáÛœ3¥Èß×üCÆo]ù(ô?lOÑ¢…@Ÿªñ›†”§ñ'JÝ7†Çês‘ôÿj”ç8Ë- ÏýßöX^è²:<æwÞ’Â[ ‹âô)æî¦:o~úXá-sü(oþ×ñ>¹oÄ[˜>õËy ¿’·ðëx‹¿Š·ø3x‹f>ØÇd²Ô¨ÜëSö$š†xþýÖÒüÀ Uýd;¤ÚlOî¯C6*ù:d§ê¿@Û¨„˰Sµ$,Aµ§eýáb®‚JÌþçé“^󓜩ÀwWÖש–ü\®ojÌ59&ëÝÁ0\²©zÛ.ÿeE@W$å 1ÿ.¥¾<9:â×rf êÓý‹ò©?6ãH¡oÑ•š«Ý^–OÿXpï'ó¯W¼ì§!µŸú\÷žçÉò»‘l‹§Z"E…Þ³;P¶Å^Þ,‘á©æ=ÑI¢»JÞùçË-¹>‰$*ç­kö}R­oëŠCÙ6ª Iû•îYþ‰O¦Y ËC?ÕN‹Ê®‚òõã«kÎ_&‰r°ü.$…̃=üŸwï=x¼»þïåÓ°¿{8=‘ì°½ò¬ùÃï?¼ÿöéþô=Ñt1šÎî$ëBû$­"ÿÄŽýþIÃV¸ö÷ûÇŸ_Õ¯*טïŸ8?>ñî–œ]ý¼pÈÁÚ_ÅnŸÎû—Ú·^ϾoŸëæOO“‰Èå{Ý Ì¾e^¾-½dãä×û§ ßñ$(ÛÃùø¶sû²ûäǤÅǩۇÂÙæVzûô‡§÷ÌŸÆÏ©î,ù½R/Fû8÷üàµ41ÝÄò¯!ÙXµ/ÀÖ/Äò×ÀÛ7Kó}o~Õ›_ôæmožzóyÚÙ³ì¡M ÄŠ£´ÆÛ”.>ŠmÓZÐÃÙ«þ!¡!–íβՙ¥fNyï¹~¾—dcm.ͧé¤êgÜíö‰å¯yRMù;ñüÓMcP4yw“£¹¯äüÖïŠ{2ê$šüEæÖ¬ò#>ò~¦öEñrTÄÇÏŇÔë·Åi‹-ª~ÿšý­ørù>p:œ_µY.Ðßc—ÁWãçÌéʹD诲- #ú¨'¹~zý¹Ž2|œ¿Þ.¦G™éxŸäÂ|‰tíýEzÀágïoø ìº\|.¾dÄ™¯}yKÍ×bžý¬°†àç’OÒŸÛ¤µî†•!ˆ¶¨­]ö7EU˜ª*.Ø5ÖirÒ˜çb©â,FbwÀùFÜôcÏÏÜlݰ †úä­PUxˆ/…fXÑþ09P‡7]‚+—¬ n},±¶c÷”Ž}¦o¯Ëœ­9|Û•¤\Œ§6M°ü9'仯í«k9áùŠîû#)î¶®ƒÔÖ8‘}¤žyÙ]¦ƒ’I:‡y›éà¼ö»BMÙ vÞÖÓ=¢ìµKcCW‚uµBÐ$lkÿ<Á¼„‹PõÅ»+s[|°›å 4øjV]'­ž@!¢ ÒÂd¶ž¯I°MÑâeÏ\N†t×¹»™¥ äÞ¥%m²ê·~vúò–‹Å0ç #ͧ‹ÃDKqbÓG–Ö“Ëü‘wíTVw%å §ùôm™GX’ôÞª_\LEeº`“q.neÛ·W8»qÑøj™sÂE+jïÔ‹³E³üÎzq/dgÐ ŽœÇyé9Á%ê|=›¤çøué‹é$…ƾíÍùÝ€óæó²wÈ·B®@ANíYøÀbª¥5(ÞÖí…Šjžœä݉”ø¾Zy4 „†¬ú¡Å>Ó½0åµ([ϱMéœk‹‰pžð®Ë#¯Vó¥ÊI¨ê¶ªØÈo®Ã b¥y.Z‡þᤪܵÀ™•‹P'‡ábºË;$LCË:Ü~½­¶Cè¥Ó÷<žÉÕjë".ƒ›¸¹Ÿè¢—² dìNE“Ö{³ÜÑsÕg­çÞ=È?Ø£;\&?ÜŸÑ%«|Ì­õ÷Ãím´¬‚Tîæ¹ø¬+_5ÎE×.Æiv¤Z«²ã_*ªCH¬Ð!›á<ºH“‘ÔžÕ|MðIÊUÆr‰¯ÜÒo¶?ËKË‹~$CÐ9™½Î™Û RöÁ}êú¾7¿êÍ/zShÊû_ y¸ ˜ yø‡X´×Òÿ÷ÊŸ¶7V^÷ Põý‰MU4É}P=ü:ˆõü=‚ÇkùàÞ®öÊú¨ÎPQˆwÝ9>îç§l{ù%•µ´íù¸¸¦e~dzå@ò±YEðéòÎòz¿­þó@â†×^Ò5)k»œT>©Cº¹~ä3G‚—$8¨:”¤‚Q¯òD\¨SÝVŸI»ˆw„rã«~¯"0}ES{fÝ Öú$o‚äôúô¦s+õ:˧3vÎ÷~Äü}í%“d|_º0ôèâ|½i›+-q6.cµœPLçïñ¬ó¥òÄÃr®±ú»&ðÕ½eEìB›wùûÏy—À?¶Œ´®å’ù-9^._"mw"Ù8mÛëìù2Q,ÄùÃÔ£¸«ÝñíG؆æÒíû6kä»e¸FIY“F¯ð“Á5Qn¨ö <lµfIUq1ìÏ«‹"v™ ÷³n:,ñk¶ÞJ—ætá-vo|çP­6Û ®ñ]Õm$x…dºjÛ,ã&U³·“¿ôõ‘¢Î~óM²W\©"–¨µü.Ïlï€ÿþú&XNìØŒùþÛ[ n>öæûÞ|šÒ>ôæWSôMoÖèœ^ßú-Í?zû©7O½ùØ›¯{ó¾7¿êMÓ›Ko†ÞümoÚÞ\§´_Ngv?eCÌá‹Þ¼2ô<íìyÚƒ˜Ã]o¾™Îl>‡»éh·ŸíT¼ e:³{ýïïzó»)—u61С\zóÏ××õÎÚ:¾aW…ƒÜ}—Ìç.6¦2øCoºý©¿ëàÍžF¹%éÜ›Ç)ÁÃtµ…X~;çù†‰}þ×iÇçé$~?î/ÓÝþÔÞÜMQ1!·Ó™ îߊ‹‡é$u¿E.ƒ;&'rÙltƒo8™ÙÐ7tï¶±Û̲çxüÛ‹ÿÁKQQendstream endobj 197 0 obj << /Filter /FlateDecode /Length 162 >> stream xœ]O1ƒ0 Üó ÿ €TÁ€XèÂЪjûà8(NÂÐß—èÐá,ïN>Ë~¸l#ÈGpø¢Ʋ´¸5 ÁH“eQV -ƃ剳òBö7åßO°Èìü®f’ϲ¹äU¹‡ÐiZ¼B Š'mQt­1 ÖÒÍálš.£ªkÌþSIÑTâ¼ ¸†@sÓÜ$°L¿g¼ó)ÄHSendstream endobj 198 0 obj << /Filter /FlateDecode /Length 162 >> stream xœ]O1ƒ0 Üó ÿ À• ]ZUm?eÀ‰Búû’:œ¥óÝÉgÙ×mù_ÁXÖ·$i²,Ê ´Åx°¥`ƒøJ‹Sƒendstream endobj 199 0 obj << /Type /XRef /Length 181 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 200 /ID [] >> stream xœcb&F~0ù‰ $À8J+ò?å& ›-˯;Fcyx‘ÿƒ6Ù"â ˜¿"­ËA¤ÚBÉÓ "YŒ@$ÛQÉt DÊó»øZ ÉÈ VÓ "y—Hn)öDrƒe§‚E¦€MØ "_€ÉW RÈDj<‘œ`ÀjØCÀê…Àâ RÔ¬ë5È^5}›¯. ð Ì~6Í!Îðš¥Ð!Ï endstream endobj startxref 151277 %%EOF surveillance/tests/0000755000175100001440000000000012535275652014142 5ustar hornikuserssurveillance/tests/testthat.R0000644000175100001440000000014612535275652016126 0ustar hornikusersif (require("testthat") && packageVersion("testthat") >= "0.10.0") { test_check("surveillance") } surveillance/tests/testthat/0000755000175100001440000000000012617103073015766 5ustar hornikuserssurveillance/tests/testthat/test-calibration.R0000644000175100001440000000250012550050704021350 0ustar hornikuserscontext("Calibration tests for Poisson or NegBin predictions") mu <- c(0.1, 1, 3, 6, pi, 100) size1 <- 0.5 size2 <- c(0.1, 0.1, 10, 10, 100, 100) ##set.seed(2); y <- rnbinom(length(mu), mu = mu, size = size1) y <- c(0, 0, 2, 14, 5, 63) zExpected <- rbind( dss = c(P = 6.07760977730636, NB1 = -0.468561113465647, NB2 = 2.81071829075294), logs = c(P = 5.95533908528874, NB1 = 0.403872251419915, NB2 = 2.77090543018323), rps = c(P = 4.45647234878906, NB1 = -0.437254253267393, NB2 = 2.57223607389215) ) delta <- 1e-4 #sqrt(.Machine$double.eps) for (score in rownames(zExpected)) { .zExpected <- zExpected[score, , drop = TRUE] test_that(paste0("still the same z-statistics with ", score), { ## Poisson predictions zP <- calibrationTest(y, mu, which = score, tolerance = delta)$statistic expect_equal(zP, .zExpected["P"], check.attributes = FALSE) ## NegBin predictions with common size parameter zNB1 <- calibrationTest(y, mu, size1, which = score, tolerance = delta)$statistic expect_equal(zNB1, .zExpected["NB1"], check.attributes = FALSE) ## NegBin predictions with varying size parameter zNB2 <- calibrationTest(y, mu, size2, which = score, tolerance = delta)$statistic expect_equal(zNB2, .zExpected["NB2"], check.attributes = FALSE) }) } surveillance/tests/testthat/test-bodaDelay.R0000644000175100001440000001740112536511203020753 0ustar hornikuserslibrary("testthat") library("surveillance") ################################################################## context("Checking the provided reporting triangle") # Control slot for the proposed algorithm with D=10 correction rangeTest <- 410:412 alpha <- 0.05 controlDelay <- list(range = rangeTest, b = 4, w = 3, pastAberrations = TRUE, mc.munu=10, mc.y=10, verbose = FALSE,populationOffset=FALSE, alpha = alpha, trend = TRUE, limit54=c(0,50), noPeriods = 10, pastWeeksNotIncluded = 26, delay=TRUE) test_that("The absence of reporting triangle throws an error",{ data("salmNewport") expect_error(bodaDelay(salmNewport, controlDelay),"You have to") }) test_that("The function spots uncorrect reporting triangles",{ data('salmAllOnset') stsFake <- salmAllOnset stsFake@control$reportingTriangle$n <- head(stsFake@control$reportingTriangle$n,n=10) expect_error(bodaDelay(stsFake, controlDelay),"The reporting triangle number") stsFake <- salmAllOnset stsFake@control$reportingTriangle$n[1,] <- stsFake@control$reportingTriangle$n[1,]/2 expect_error(bodaDelay(stsFake, controlDelay),"The reporting triangle is wrong") }) ################################################################## context("Data glm function") # Parameters epochAsDate <- TRUE epochStr <- "week" freq <- 52 b <- controlDelay$b w <- controlDelay$w populationOffset <- controlDelay$populationOffset noPeriods <- controlDelay$noPeriods verbose <- controlDelay$verbose reportingTriangle <- salmAllOnset@control$reportingTriangle timeTrend <- controlDelay$trend alpha <- controlDelay$alpha populationOffset <- controlDelay$populationOffset factorsBool <- controlDelay$factorsBool pastAberrations <- controlDelay$pastAberrations glmWarnings <- controlDelay$glmWarnings delay <- controlDelay$delay k <- controlDelay$k verbose <- controlDelay$verbose pastWeeksNotIncluded <- controlDelay$pastWeeksNotIncluded mc.munu <- controlDelay$mc.munu mc.y <- controlDelay$mc.y vectorOfDates <- as.Date(salmAllOnset@epoch, origin="1970-01-01") dayToConsider <- vectorOfDates[rangeTest[1]] observed <- salmAllOnset@observed population <- salmAllOnset@populationFrac dataGLM <- bodaDelay.data.glm(dayToConsider=dayToConsider, b=b, freq=freq, epochAsDate=epochAsDate, epochStr=epochStr, vectorOfDates=vectorOfDates,w=w, noPeriods=noPeriods, observed=observed,population=population, verbose=verbose, pastWeeksNotIncluded=pastWeeksNotIncluded, reportingTriangle=reportingTriangle, delay=delay) delay <- FALSE dataGLMNoDelay <- bodaDelay.data.glm(dayToConsider=dayToConsider, b=b, freq=freq, epochAsDate=epochAsDate, epochStr=epochStr, vectorOfDates=vectorOfDates,w=w, noPeriods=noPeriods, observed=observed,population=population, verbose=verbose, pastWeeksNotIncluded=pastWeeksNotIncluded, reportingTriangle=reportingTriangle, delay=delay) test_that("the output is a data.frame",{ expect_true(class(dataGLM)=="data.frame") expect_true(class(dataGLMNoDelay)=="data.frame") }) test_that("the data frame contains all variables",{ expect_equal(names(dataGLM)==c( "response", "wtime","population","seasgroups","vectorOfDates","delay"),rep(TRUE,6)) expect_equal(names(dataGLMNoDelay)==c( "response", "wtime","population","seasgroups","vectorOfDates"),rep(TRUE,5)) }) test_that("the variables have the right class",{ expect_equal(class(dataGLM$response),"numeric") expect_equal(class(dataGLM$wtime),"numeric") expect_equal(class(dataGLM$population),"numeric") expect_equal(class(dataGLM$seasgroups),"factor") expect_equal(class(dataGLM$vectorOfDates),"Date") expect_equal(class(dataGLM$delay),"numeric") expect_equal(class(dataGLMNoDelay$response),"numeric") expect_equal(class(dataGLMNoDelay$wtime),"numeric") expect_equal(class(dataGLMNoDelay$population),"numeric") expect_equal(class(dataGLMNoDelay$seasgroups),"factor") expect_equal(class(dataGLMNoDelay$vectorOfDates),"Date") }) test_that("the time variable is ok with diff 1",{ delayWtime <- as.numeric(levels(as.factor(dataGLM$wtime))) expect_equal(diff(delayWtime)==rep(1,length(delayWtime)-1),rep(TRUE,length(delayWtime)-1)) expect_equal(diff(dataGLMNoDelay$wtime)==rep(1,length(dataGLMNoDelay$wtime)-1),rep(TRUE,length(dataGLMNoDelay$wtime)-1)) }) test_that("the factor variable has the right number of levels",{ expect_true(length(levels(dataGLM$seasgroups))==noPeriods) expect_true(length(levels(dataGLMNoDelay$seasgroups))==noPeriods) }) ################################################################## context("Fit glm function") # if (interactive() && require("INLA")) { # do not test INLA-related code on CRAN # ## CAVE: _R_CHECK_TIMINGS_ as queried by surveillance.options("allExamples") # ## is no reliable condition to skip the test on CRAN (see # ## https://stat.ethz.ch/pipermail/r-devel/2012-September/064812.html # ## ), and especially seems not to be set by the daily Windows checks. # argumentsGLM <- list(dataGLM=dataGLM,reportingTriangle=reportingTriangle, # timeTrend=timeTrend,alpha=alpha, # populationOffset=populationOffset, # factorsBool=TRUE,pastAberrations=FALSE, # glmWarnings=glmWarnings, # verbose=verbose,delay=delay,k=k,control=controlDelay, # inferenceMethod="INLA") # # model <- do.call(bodaDelay.fitGLM, args=argumentsGLM) # test_that("The fit glm function gives the right class of output?",{ # expect_equal(class(model),"inla") # }) # } argumentsGLM <- list(dataGLM=dataGLM,reportingTriangle=reportingTriangle, timeTrend=timeTrend,alpha=alpha, populationOffset=populationOffset, factorsBool=TRUE,pastAberrations=FALSE, glmWarnings=glmWarnings, verbose=verbose,delay=delay,k=k,control=controlDelay, inferenceMethod="asym") model <- do.call(bodaDelay.fitGLM, args=argumentsGLM) test_that("The fit glm function gives the right class of output?",{ expect_equal(class(model)==c("negbin", "glm", "lm" ),rep(TRUE,3)) }) ################################################################################ context("formula function") ################################################################################ test_that("We get the right formula",{ expect_equal(formulaGLMDelay(timeBool=TRUE,factorsBool=FALSE),"response ~ 1+wtime") expect_equal(formulaGLMDelay(timeBool=FALSE,factorsBool=FALSE),"response ~ 1") expect_equal(formulaGLMDelay(timeBool=TRUE,factorsBool=FALSE),"response ~ 1+wtime") expect_equal(formulaGLMDelay(timeBool=TRUE,factorsBool=TRUE),"response ~ 1+wtime+as.factor(seasgroups)") expect_equal(formulaGLMDelay(timeBool=TRUE,factorsBool=TRUE,delay=TRUE),"response ~ 1+wtime+as.factor(seasgroups)+as.factor(delay)") expect_equal(formulaGLMDelay(timeBool=TRUE,factorsBool=FALSE,outbreak=TRUE),"response ~ 1+wtime+f(outbreakOrNot,model='linear', prec.linear = 1)") }) surveillance/tests/testthat/test-plapply.R0000644000175100001440000000062012535260777020563 0ustar hornikuserscontext("plapply()") test_that("plapply() results are reproducible", { if (.Platform$OS.type == "windows") skip("causes R CMD check to hang on Windows (but works interactively)") res1 <- plapply(c(1, 1), rnorm, .parallel = 2, .seed = 1, .verbose = FALSE) res2 <- plapply(c(1, 1), rnorm, .parallel = 2, .seed = 1, .verbose = FALSE) expect_that(res1, is_identical_to(res2)) }) surveillance/tests/testthat/test-farringtonFlexible.R0000644000175100001440000004742512375616647022747 0ustar hornikusersdata("salmonella.agona") # sts object lala <- paste(salmonella.agona$start[1],salmonella.agona$start[2],"1",sep=" ") firstMonday <- as.POSIXlt(lala, format = "%Y %W %u") salm.ts <- salmonella.agona$observed dates <- as.Date(firstMonday) + 7 * 0:(length(salm.ts) - 1) start=c(salmonella.agona$start[1],salmonella.agona$start[2]) salm <- new("sts",epoch = as.numeric(dates), start = start, freq = 52, observed = salm.ts, epochAsDate = TRUE) ################################################################################ context("weights function") ################################################################################ test_that("gamma = 1 if everything below the threshold",{ s <- rep(0,10) weightsThreshold <- 0 weights <- algo.farrington.assign.weights(s,weightsThreshold) expect_equal(weights,rep(1,10)) }) test_that(" A case that was checked by hand",{ s <- rep(2,10) s[1:5] <- 0 weightsThreshold <- 0 weights <- algo.farrington.assign.weights(s,weightsThreshold) expect_equal(weights[1:5],rep(1.6,5)) expect_equal(weights[6:10],rep(0.4,5)) }) ################################################################################ # END OF WEIGHTS FUNCTION TESTS ################################################################################ ################################################################################ context("residuals function") ################################################################################ test_that(" residuals should be zero",{ x <- rpois(10,1) y <- exp(x) model <- glm(y~x,family = quasipoisson(link="log")) phi <- max(summary(model)$dispersion,1) s <- anscombe.residuals(model,phi) expect_equal(as.numeric(s),rep(0,10)) }) test_that(" residuals should not be zero",{ x <- rpois(1000,1) y <- exp(x)+runif(1) model <- glm(y~x,family = quasipoisson(link="log")) phi <- max(summary(model)$dispersion,1) s <- anscombe.residuals(model,phi) expect_true(mean(s)>0) }) ################################################################################ # END OF RESIDUALS FUNCTION TESTS ################################################################################ ################################################################################ context("formula function") ################################################################################ test_that("We get the right formula",{ expect_equal(formulaGLM(populationOffset=FALSE,timeBool=TRUE,factorsBool=FALSE),"response ~ 1+wtime") expect_equal(formulaGLM(populationOffset=FALSE,timeBool=FALSE,factorsBool=FALSE),"response ~ 1") expect_equal(formulaGLM(populationOffset=TRUE,timeBool=TRUE,factorsBool=FALSE),"response ~ 1+wtime+offset(log(population))") expect_equal(formulaGLM(populationOffset=TRUE,timeBool=TRUE,factorsBool=TRUE),"response ~ 1+wtime+offset(log(population))+seasgroups") }) ################################################################################ # END OF FORMULA FUNCTION TESTS ################################################################################ ################################################################################ context("reference time points function") ################################################################################ test_that("We get the expected timepoints with weekly data",{ # Case with weekly data with dates dayToConsider <- as.Date("2013-06-06") b <- 3 freq <- 52 epochAsDate <- TRUE epochStr <- "week" lala <- algo.farrington.referencetimepoints(dayToConsider,b=b,freq=freq,epochAsDate,epochStr) # Do we get the same day as dayToConsider? expect_equal(as.numeric(format(lala, "%w")),rep(4,4)) # Actually for this example I know the dates one should get expect_equal(sort(lala),sort(c(as.Date("2010-06-03"),as.Date("2013-06-06"),as.Date("2012-06-07"),as.Date("2011-06-09")))) }) test_that("We get the expected timepoints with monthly data",{ dayToConsider <- 48 b <- 3 freq <- 12 epochAsDate <- FALSE epochStr <- "month" lala <- algo.farrington.referencetimepoints(dayToConsider,b=b,freq=freq,epochAsDate,epochStr) expect_equal(lala,c(48,36,24,12)) }) test_that("one gets a warning if too many years back",{ dayToConsider <- 48 b <- 3 freq <- 12 epochAsDate <- FALSE epochStr <- "month" expect_that(algo.farrington.referencetimepoints(dayToConsider,b=8,freq=freq,epochAsDate,epochStr), gives_warning("Some reference")) # apply code control1 <- list(range=250,noPeriods=10,populationOffset=FALSE, fitFun="algo.farrington.fitGLM.flexible", b=10,w=3,weightsThreshold=2.58, pastWeeksNotIncluded=26, pThresholdTrend=1,trend=TRUE, thresholdMethod="muan",alpha=0.05,glmWarnings=FALSE) expect_error(farringtonFlexible(salm,control=control1),"Some reference") }) ################################################################################ # END OF REFERENCE TIME POINTS FUNCTION TESTS ################################################################################ ################################################################################ context("fit glm function") ################################################################################ # Case with convergence control<- list(range=250,noPeriods=10,populationOffset=TRUE, fitFun="algo.farrington.fitGLM.flexible", b=40,w=3,weightsThreshold=2.58, pastWeeksNotIncluded=26, pThresholdTrend=1,trend=TRUE, thresholdMethod="muan",alpha=0.05,glmWarnings=FALSE) response=salm@observed[1:120] dataGLM <- data.frame(response=response,wtime=1:120, population=runif(120)*100, seasgroups=as.factor(rep(1:12,10))) arguments <- list(dataGLM=dataGLM, timeTrend=TRUE, populationOffset=TRUE, factorsBool=TRUE,reweight=TRUE, weightsThreshold=0.5,glmWarnings=control$glmWarnings, control=control) model <- do.call(algo.farrington.fitGLM.flexible, args=arguments) test_that("The fit glm function gives the right class of output?",{ expect_equal(class(model),c("glm","lm")) }) test_that("The fit glm function gives as many coefficients as expected",{ expect_equal(dim(summary(model)$coefficients)[1],length(levels(dataGLM$seasgroups))-1+1+1) }) test_that("wtime, response, phi and weights were added to the model",{ expect_true(is.null(model$phi)==FALSE) expect_true(is.null(model$wtime)==FALSE) expect_true(is.null(model$response)==FALSE) expect_true(is.null(model$population)==FALSE) expect_true(is.null(model$weights)==FALSE) }) test_that("reweighting was done",{ expect_true(sum(model$weights!=rep(1,length(model$weights)))==length(model$weights)) }) test_that("there are no weights if very high threshold",{ arguments$reweight <- TRUE arguments$weightsThreshold <- 100000 model <- do.call(algo.farrington.fitGLM.flexible, args=arguments) expect_true(sum(model$weights==rep(1,length(model$weights)))==length(model$weights)) }) test_that("there is not a too small overdispersion",{ expect_true(model$phi>=1) }) ################################################################################ # END OF FIT GLM FUNCTION TESTS ################################################################################ ################################################################################ context("block function") ################################################################################ referenceTimePoints <- c(as.Date("2010-06-03"),as.Date("2013-06-06"),as.Date("2012-06-07"),as.Date("2011-06-09")) firstDay <- as.Date("1990-06-07") vectorOfDates <- dates <- as.Date(firstDay) + 7 * 0:1300 freq <- 52 dayToConsider <- as.Date("2013-06-06") b <- 3 w <- 3 epochAsDate <- TRUE # p=1 p <- 1 lala <- blocks(referenceTimePoints,vectorOfDates,freq,dayToConsider,b,w,p, epochAsDate) test_that("the reference window has the right length",{ expect_equal(length(vectorOfDates[is.na(lala)==FALSE&lala==p]),w+1+b*(2*w+1)) # p>1 p <- 8 lala <- blocks(referenceTimePoints,vectorOfDates,freq,dayToConsider,b,w,p, epochAsDate) # reference windows expect_equal(length(vectorOfDates[is.na(lala)==FALSE&lala==p]),w+1+b*(2*w+1)) }) lili <- as.factor(lala[is.na(lala)==FALSE]) test_that("there are as many levels as expected",{ expect_equal(length(levels(lili)),p) }) p <- 8 lala <- blocks(referenceTimePoints,vectorOfDates,freq,dayToConsider,b,w,p, epochAsDate) lili <- as.factor(lala[is.na(lala)==FALSE]) lolo <- lili[lili!=p] test_that("periods of roughly the same length each year",{ expect_equal(as.numeric(abs(diff(table(lolo))[1:(p-2)])<=b),rep(1,(p-2))) }) ################################################################################ # END OF BLOCKS FUNCTION TESTS ################################################################################ ################################################################################ context("Farrington threshold function") ################################################################################ predFit <- 5 predSeFit <- 0.2 wtime <- 380 skewness.transform <- "2/88" alpha <- 0.05 y <- 8 method <- "delta" phi <- 1 test_that("the function recognizes wrong exponents",{ expect_that(algo.farrington.threshold.farrington(predFit,predSeFit,phi, skewness.transform, alpha,y,method),throws_error("proper exponent")) }) test_that("some results we know are found",{ skewness.transform <- "none" lala <- algo.farrington.threshold.farrington(predFit,predSeFit,phi, skewness.transform, alpha,y,method) # Should always be ok lala <- as.numeric(lala) expect_true(lala[3]<=1&lala[1]>=0) expect_true(lala[2]>lala[1]) expect_true(lala[1]>=0) # Here we know the results expect_equal(abs(as.numeric(lala)-c(1.3073128, 8.6926872, 0.0907246, 0.8124165))=0) expect_true(lala[2]>lala[1]) expect_true(lala[1]>=0) # Here we calculated some examples expect_equal(abs(as.numeric(lala)-c(7.0000000, 26.0000000, 0.8597797, 0.3850080))upperbound(test),na.rm=TRUE)==sum(test@alarm==TRUE)) }) ################################################################################ # RESIDUALS FUNCTION ################################################################################ ################################################################################ context("no convergence") ################################################################################ timeSeries <- rep(0,698) timeSeries[696] <- 1 algoControl <- list(noPeriods=10,alpha = 0.01,verbose = F, b=5,w=4,weightsThreshold=2.58,pastWeeksNotIncluded=26, pThresholdTrend=1,thresholdMethod='nbPlugin',limit54 = c(4,5), range = (length(timeSeries) - 1):length(timeSeries), glmWarnings = FALSE) seriesSTSObject <- new('sts', observed = timeSeries, epoch = as.numeric(seq(as.Date('2001-01-01'),length.out=length(timeSeries), by='1 week')), epochAsDate = TRUE) test_that("The code does not produce any error",{ # It is ok if the code does not produce any error expect_that(farringtonFlexible(seriesSTSObject, control = algoControl), gives_warning()) }) ################################################################################ context("NA") ################################################################################ timeSeries <- observed <- rnorm(698)*10+runif(698)*100+30 algoControl <- list(noPeriods=10,alpha = 0.01,verbose = F, b=5,w=4,weightsThreshold=2.58,pastWeeksNotIncluded=w, pThresholdTrend=1,thresholdMethod='nbPlugin',limit54 = c(4,5), range = (length(timeSeries) - 1):length(timeSeries), glmWarnings = FALSE) seriesSTSObject <- new('sts', observed = timeSeries, epoch = as.numeric(seq(as.Date('2001-01-01'),length.out=length(timeSeries), by='1 week')), epochAsDate = TRUE) test_that("The code does not produce any error",{ farringtonFlexible(seriesSTSObject, control = algoControl) results1 <- farringtonFlexible(seriesSTSObject, control = algoControl) expect_that(results1, is_a("sts")) seriesSTSObject@observed[680:690] <- NA results2 <- farringtonFlexible(seriesSTSObject, control = algoControl) expect_that(results2, is_a("sts")) }) surveillance/tests/testthat/test-hhh4_NegBinGrouped.R0000644000175100001440000001142312610146043022467 0ustar hornikuserscontext("hhh4() model with shared overdispersion parameters") ## use a small subset of districts from the fluBYBW data data("fluBYBW") fluBWsub <- fluBYBW[, substr(colnames(fluBYBW), 1, 2) %in% "81"] neighbourhood(fluBWsub) <- nbOrder(neighbourhood(fluBWsub), maxlag = 5) + 1 ## stsplot_space(fluBWsub, labels = TRUE) ## a crazy model base fluModel <- list( end = list(f = addSeason2formula(~0 + ri(type="iid"))), ne = list(f = ~0 + fe(1, unitSpecific = TRUE), weights = W_powerlaw(maxlag = 3)), start = list(random = rep.int(0, ncol(fluBWsub))) ) if (FALSE) { # check derivatives fluDeriv <- hhh4(stsObj = fluBWsub, control = c(fluModel, list(family = "NegBinM")), check.analyticals = TRUE) ana <- fluDeriv$pen$fisher$analytic num <- fluDeriv$pen$fisher$numeric equal <- mapply(function (...) isTRUE(all.equal.numeric(...)), ana, num, tolerance = 1e-4) dim(equal) <- dim(ana) Matrix::image(Matrix::Matrix(equal)) } test_that("\"NegBinM\" fit is invariant to the ordering of the overdispersion parameters", { fluFitM <- hhh4(stsObj = fluBWsub, control = c(fluModel, list( family = "NegBinM"))) # identical to factor(colnames(fluBWsub), levels=colnames(fluBWsub)) fluFitM_reordered <- hhh4(stsObj = fluBWsub, control = c(fluModel, list( family = factor(colnames(fluBWsub), levels=rev(colnames(fluBWsub)))))) expect_equal(fluFitM_reordered$loglikelihood, fluFitM$loglikelihood) expect_equal(fluFitM_reordered$margll, fluFitM$margll) expect_equal(fluFitM_reordered$coefficients[names(fluFitM$coefficients)], fluFitM$coefficients) }) ## fit a model with shared overdispersion parameters fluFitShared <- hhh4(stsObj = fluBWsub, control = c(fluModel, list( family = factor(substr(colnames(fluBWsub), 3, 3) == "1", levels = c(TRUE, FALSE), labels = c("region1", "elsewhere"))))) test_that("estimates with shared overdispersion are reproducible", { ## dput(coef(fluFitShared, se = TRUE)) orig <- structure( c(0.0172448275799737, -2.29936227176632, -0.311391919170833, 0.0173369590386396, 0.242634649538434, -0.73402605050834, -0.0411427686831543, -0.917845995715638, -0.324146451650439, -0.252506337389155, 0.153202205413176, -0.857813219848051, -1.00758863915022, 2.01735387997105, 2.38047570484809, -4.38317074697181, 2.46949727973784, 0.549903756338196, 1.12432744953686, 0.647372578569298, 0.21388842588635, -0.437822769909503, 0.255185408180267, 0.92949604237045, -1.09633602928844, 0.298117843865811, -0.68452091605681, 0.23456335139387, 0.162259631408099, 0.209619606465627, -0.10216429396362, -0.629658878921399, 0.114133112372732, 0.823887580788133, 0.12141926111051, 0.113879127629599, 0.109816278251024, 0.221038616887962, 0.115707006557826, 0.187260599970159, 0.121830940397345, 0.172070355414403, 0.157444513096506, 0.254811666726125, 0.268571254537371, 0.215202234247305, 0.212970632033808, 0.262762514629277, 0.205440489731246, 0.0567461846032841, 0.154168532075271, 0.320248263514015, 0.309517737483193, 0.366585194306804, 0.370748971125027, 0.304859567470968, 0.397763842736319, 0.357894067104384, 0.380956131344983, 0.344676554711052, 0.37300484854814, 0.378382126329053, 0.342270280546076, 0.359489843015429), .Dim = c(32L, 2L), .Dimnames = list( c("ne.1.8115", "ne.1.8135", "ne.1.8117", "ne.1.8116", "ne.1.8111", "ne.1.8121", "ne.1.8118", "ne.1.8136", "ne.1.8119", "ne.1.8125", "ne.1.8127", "ne.1.8126", "ne.1.8128", "end.sin(2 * pi * t/52)", "end.cos(2 * pi * t/52)", "end.ri(iid)", "neweights.d", "overdisp.region1", "overdisp.elsewhere", "end.ri(iid).8115", "end.ri(iid).8135", "end.ri(iid).8117", "end.ri(iid).8116", "end.ri(iid).8111", "end.ri(iid).8121", "end.ri(iid).8118", "end.ri(iid).8136", "end.ri(iid).8119", "end.ri(iid).8125", "end.ri(iid).8127", "end.ri(iid).8126", "end.ri(iid).8128"), c("Estimate", "Std. Error")) ) expect_equal(coef(fluFitShared, se = TRUE), orig) }) test_that("calibrationTest.oneStepAhead() works and \"final\" is equivalent to fit", { mysubset <- tail(fluFitShared$control$subset, 16) osa_final <- oneStepAhead(fluFitShared, tp = mysubset[1L]-1L, type = "final", verbose = FALSE) idx <- 3:5 # ignore "method" and "data.name" in calibrationTest() output expect_equal(calibrationTest(osa_final, which = "dss")[idx], calibrationTest(fluFitShared, which = "dss", subset = mysubset)[idx]) }) surveillance/tests/testthat/test-hhh4_ARasNE.R0000644000175100001440000000231712444011030021042 0ustar hornikuserscontext("Validate AR hhh4 via NE with identity W") data("measlesWeserEms") ## fit with AR component as usual vaccdata <- matrix(measlesWeserEms@map$vacc2.2004, byrow = TRUE, nrow = nrow(measlesWeserEms), ncol = ncol(measlesWeserEms)) measlesModel <- list( ar = list(f = addSeason2formula(~1 + vacc2, S=2, period=52)), end = list(f = addSeason2formula(~1, S=1, period=52), offset = population(measlesWeserEms)), family = "NegBin1", data = list(vacc2 = vaccdata)) measlesFit <- hhh4(measlesWeserEms, measlesModel) ## now use an identity matrix as W in the NE component instead of AR measlesFit2 <- suppressWarnings( update(measlesFit, ar = list(f = ~-1), ne = list(f = measlesModel$ar$f, weights = diag(ncol(measlesWeserEms))), use.estimates = FALSE) ) ## compare fits test_that("AR-hhh4 agrees with using identity W in NE", { expect_that(coef(measlesFit), equals(coef(measlesFit2), check.names=FALSE)) expect_that(measlesFit$cov, equals(measlesFit2$cov, check.attributes=FALSE)) expect_that(logLik(measlesFit), equals(logLik(measlesFit2))) expect_that(fitted(measlesFit), equals(fitted(measlesFit2))) }) surveillance/tests/testthat/test-toLatex.sts.R0000644000175100001440000000655612375616647021353 0ustar hornikuserscontext("toLatex-method for the sts-class") data("ha.sts") data("salmonella.agona") test_that("toLatex accepts basic input and returns Latex", { control <- list( noPeriods=10,populationBool=FALSE, fitFun="algo.farrington.fitGLM.flexible", b=4,w=3,weightsThreshold=2.58, pastWeeksNotIncluded=26, pThresholdTrend=1,trend=TRUE, thresholdMethod="new",alpha=0.01 ) result <- ha.sts result@alarm[,7] <- TRUE result@upperbound[,7] <- 1 laTex <- toLatex(result, subset=(280:290), table.placement="h", size = "scriptsize", sanitize.text.function = identity, NA.string = "-",include.rownames=FALSE) laTex3 <- toLatex(result, subset=(280:290), alarmPrefix = "aaaa", alarmSuffix = "bbbb", table.placement="h", size = "scriptsize", sanitize.text.function = identity, NA.string = "-",include.rownames=FALSE) expect_true(grepl("aaaa", paste(as.character(laTex3), collapse = ' '))) expect_true(grepl("bbbb", paste(as.character(laTex3), collapse = ' '))) expect_is(laTex, "Latex") expect_is(laTex3, "Latex") }) test_that("caption is incorporated", { testCaption <- "Please print my caption" latex <- toLatex(ha.sts, caption = testCaption) expect_true(grepl(testCaption, paste(as.character(latex), collapse = ' '))) }) test_that("label is incorporated", { testLabel <- "Please print my label" latex <- toLatex(ha.sts, label = testLabel) expect_true(grepl(testLabel, paste(as.character(latex), collapse = ' '))) }) test_that("ubColumnLabel is incorporated", { testUBLabel <- "Upperbound" latex <- toLatex(ha.sts, ubColumnLabel = testUBLabel) expect_true(grepl(testUBLabel, paste(as.character(latex), collapse = ' '))) }) test_that("one can override the default table column labels", { columnLabels <- c("Jahr", "Woche", "chwi1", "UB", "frkr2", "UB", "lich3", "UB", "mahe4", "UB", "mitt5", "UB", "neuk6", "UB", "pank7", "UB", "rein8", "UB", "span9", "UB", "zehl10", "UB", "scho11", "UB", "trko12", "UB") latex <- toLatex(ha.sts, columnLabels = columnLabels) expect_true(all( sapply(columnLabels, function(l) grepl(l, paste(as.character(latex), collapse = ' ')) , USE.NAMES = FALSE) )) }) test_that("toLatex works with output from farringtonFlexible()", { # Create the corresponding sts object from the old disProg object salm <- disProg2sts(salmonella.agona) # Farrington with old options control1 <- list(range=(260:312), noPeriods=1,populationOffset=FALSE, fitFun="algo.farrington.fitGLM.flexible", b=4,w=3,weightsThreshold=1, pastWeeksNotIncluded=3, pThresholdTrend=0.05,trend=TRUE, thresholdMethod="delta",alpha=0.1) salm1 <- farringtonFlexible(salm,control=control1) expect_is(toLatex(salm1), "Latex") }) test_that("toLatex only accepts a single sts object", { expect_error(toLatex(list(ha.sts, ha.sts))) }) test_that("toLatex stops if 'subset' is not applicable", { expect_error(toLatex(ha.sts, subset=(-5:290))) expect_error(toLatex(ha.sts, subset=(1:10000))) expect_error(toLatex(ha.sts, subset=(10000:100000))) }) surveillance/tests/testthat/test-siafs.R0000644000175100001440000000707012376571004020204 0ustar hornikuserscontext("Spatial interaction functions") ### test bundle myexpectation <- function (siaf, intrfr, intrderivr, pargrid, type = 1, ...) { ## check analytical intrfr specification against numerical approximation if (!missing(intrfr)) apply(pargrid, 1, function (pars) expect_that( polyCub::checkintrfr(intrfr, siaf$f, pars, type, center=c(0,0), rs=c(1,2,5,10,20,50)), not(gives_warning()), label = "polyCub::checkintrfr()")) ## also check intrfr for deriv if (!missing(intrderivr)) for (paridx in seq_along(intrderivr)) apply(pargrid, 1, function (pars) expect_that( polyCub::checkintrfr(intrderivr[[paridx]], function (...) siaf$deriv(...)[,paridx], pars, type, center=c(0,0), rs=c(1,2,5,10,20,50)), not(gives_warning()), label = paste0("polyCub::checkintrfr() for deriv[,",paridx,"]"))) ## check deriv, F, Deriv against numerical approximations checksiafres <- surveillance:::checksiaf(siaf, pargrid, type, ...) for (i in which(!sapply(checksiafres, is.null))) expect_true(unique(attr(checksiafres[[i]], "all.equal")), label=names(checksiafres)[i]) } ### test all pre-defined spatial interaction functions test_that("Gaussian implementation agrees with numerical approximation", myexpectation(siaf.gaussian(F.adaptive=TRUE), pargrid=t(log(0.5)), tolerance=0.0005, method="midpoint", dimyx=250)) test_that("Power-law implementation agrees with numerical approximation", myexpectation(siaf.powerlaw(), surveillance:::intrfr.powerlaw, list(surveillance:::intrfr.powerlaw.dlogsigma, surveillance:::intrfr.powerlaw.dlogd), pargrid=cbind(0.5,log(c(0.1,1,2))), tolerance=0.0005, method="SV", nGQ=13)) test_that("Lagged power-law implementation agrees with numeric results", myexpectation(siaf.powerlawL(), surveillance:::intrfr.powerlawL, list(surveillance:::intrfr.powerlawL.dlogsigma, surveillance:::intrfr.powerlawL.dlogd), pargrid=cbind(-0.5,log(c(0.1,1,2))), tolerance=0.0005, method="midpoint", dimyx=250)) test_that("Student implementation agrees with numerical approximation", myexpectation(siaf.student(), surveillance:::intrfr.student, list(surveillance:::intrfr.student.dlogsigma, surveillance:::intrfr.student.dlogd), pargrid=cbind(0.5,log(c(0.1,1,2))), tolerance=0.0005, method="SV", nGQ=5)) test_that("Step kernel implementation agrees with numerical approximation", myexpectation(siaf.step(c(0.1,0.5,1)), pargrid=-t(c(0.5,0.1,0.2)), tolerance=0.0005, method="midpoint", dimyx=350)) ## ## plot the polygon on which F and Deriv are tested (to choose parameters) ## showsiaf <- function (siaf, pars) { ## data("letterR", package="spatstat", envir=environment()) ## poly <- spatstat::shift.owin(letterR, -c(3,2)) ## plotpolyf(poly, siaf$f, pars, print.args=list(split=c(1,1,2,1), more=TRUE)) ## plotpolyf(poly, function (...) siaf$deriv(...)[,1], pars, print.args=list(split=c(2,1,2,1))) ## } ## showsiaf(siaf.student(), c(0.5,-0.5)) surveillance/tests/testthat/test-tiafs.R0000644000175100001440000000453612505266723020214 0ustar hornikuserscontext("Temporal interaction functions") test_that("Step kernel of a single type agrees with numerical approximations", { steptiaf <- tiaf.step(c(7,20), maxRange=25, nTypes=1) logvals <- log(c(1.2,0.2)) ##curve(steptiaf$g(x, logvals), 0, 30, n=301) ## check G expect_equal(steptiaf$G(0:30, logvals), sapply(0:30, function (upper) { integrate(steptiaf$g, 0, upper, logvals, rel.tol=1e-8)$value }), tolerance=1e-8) ## check deriv if (requireNamespace("maxLik", quietly = TRUE)) { expect_that(maxLik::compareDerivatives( f = function(pars, x) steptiaf$g(x, pars), grad = function(pars, x) steptiaf$deriv(x, pars), t0 = logvals, x = c(0.5,2,5,7,10,15,20,25,30), print = FALSE)$maxRelDiffGrad, is_less_than(1e-8)) } ## check Deriv for (paridx in seq_along(logvals)) expect_equal(steptiaf$Deriv(0:30, logvals)[,paridx], sapply(0:30, function (upper) integrate( function(...) steptiaf$deriv(...)[,paridx], 0, upper, logvals, rel.tol=1e-6)$value), tolerance=1e-6, label=paste0("steptiaf$Deriv()[,",paridx,"]"), expected.label="integrate() approximation") }) test_that("Step kernel with maxRange=eps.t is equivalent to maxRange=Inf", { data("imdepi", package="surveillance") imdfit_steptiafInf <- twinstim( endemic = ~offset(log(popdensity)) + I(start/365 - 3.5), epidemic = ~1, siaf = siaf.constant(), tiaf = tiaf.step(c(7,20), maxRange=Inf), data = imdepi, optim.args = NULL, verbose = FALSE) maxepst <- max(imdepi$events$eps.t) imdfit_steptiaf30 <- update( imdfit_steptiafInf, tiaf = tiaf.step(c(7,20), maxRange=maxepst+0.1)) coefs <- c(-20, -0.05, -15, -0.5, 0.2, -1) stopifnot(identical(imdfit_steptiafInf$ll(coefs), imdfit_steptiaf30$ll(coefs)), identical(imdfit_steptiafInf$sc(coefs), imdfit_steptiaf30$sc(coefs))) }) surveillance/tests/testthat/test-formatDate.R0000755000175100001440000000517212452455147021175 0ustar hornikuserscontext("ISO8601 Date conversion on Windows and Linux") #Generate some dates d <- as.Date("2001-01-01") d2 <- as.Date(c("2001-01-01","2002-05-01")) test_that("formatting date", expect_that(formatDate(d,"W%V-%Y"), equals("W01-2001"))) test_that("Formatting date vectors with ISO8601 and UK conventions", expect_that(formatDate(d2,"W%V-%G / W%W-%Y / %d-%m-%Y"), equals(c("W01-2001 / W01-2001 / 01-01-2001","W18-2002 / W17-2002 / 01-05-2002")))) test_that("Formatting date vectors with roman letters for quarters", expect_that(formatDate(d2,"%G\n%OQ"), equals(c("2001\nI","2002\nII")))) #Some checks for the atChange dates <- seq(as.Date("2007-01-01"),as.Date("2013-01-01"),by="1 week") #Format with conversion string x <- as.numeric(formatDate(dates,"%m")) xm1 <- as.numeric(formatDate(dates[1]-7,"%m")) #At change test_that("atChange function works for %m",expect_that( atChange(x,xm1), equals( c(1L, 6L, 10L, 14L, 19L, 23L, 27L, 32L, 36L, 40L, 45L, 49L, 54L, 58L, 62L, 67L, 71L, 75L, 80L, 84L, 88L, 93L, 97L, 101L, 106L, 110L, 114L, 119L, 123L, 127L, 132L, 136L, 141L, 145L, 149L, 154L, 158L, 162L, 166L, 171L, 175L, 180L, 184L, 188L, 193L, 197L, 201L, 206L, 210L, 215L, 219L, 223L, 227L, 232L, 236L, 240L, 245L, 249L, 254L, 258L, 262L, 267L, 271L, 275L, 280L, 284L, 288L, 293L, 297L, 301L, 306L, 310L)))) #Test every second change function test_that("at2ndChange function works for %m",expect_that( at2ndChange(x,xm1),equals( c(1L, 10L, 19L, 27L, 36L, 45L, 54L, 62L, 71L, 80L, 88L, 97L, 106L, 114L, 123L, 132L, 141L, 149L, 158L, 166L, 175L, 184L, 193L, 201L, 210L, 219L, 227L, 236L, 245L, 254L, 262L, 271L, 280L, 288L, 297L, 306L)))) #### Year formatting x <- as.numeric(formatDate(dates,"%Y")) xm1 <- as.numeric(formatDate(dates[1]-7,"%Y")) test_that("atMedian function works for %Y",expect_that( atMedian(x,xm1),equals(c(26L, 79L, 131L, 183L, 235L, 287L)))) test_that("at2ndChange function works for %Y",expect_that( dates[at2ndChange(x,xm1)],equals(as.Date(c("2007-01-01","2009-01-05","2011-01-03"))))) #Does this look at expected (hard to check with testthat data("rotaBB") plot(rotaBB, xaxis.tickFreq=list("%Y"=atChange), xaxis.labelFreq=list("%Y"=at2ndChange),xaxis.labelFormat="%Y",xlab="time (months)") #Test quarter formatting test_that(formatDate(d2,"%Q"), equals(c("1","2"))) test_that(formatDate(d2,"%q"), equals(c("1","31"))) test_that(as.character(d2 - as.numeric(formatDate(d2,"%q")) + 1), equals(c("2001-01-01","2002-04-01"))) surveillance/tests/testthat/test-hhh4+algo.hhh.R0000644000175100001440000000417412303201242021400 0ustar hornikuserscontext("Comparison of hhh4() and algo.hhh() for 'influMen' example") ## influenza/meningococcal data (also illustrated in vignette("hhh4") data("influMen") ## fit with old algo.hhh() hhhfit <- algo.hhh(influMen, list(lambda=c(1,1), neighbours=c(NA,0), linear=FALSE, nseason=c(3,1), negbin="multiple"), verbose=FALSE) test_that("algo.hhh() converges for 'influMen' example", expect_true(hhhfit$convergence)) ## fit with new hhh4() hhh4fit <- hhh4(disProg2sts(influMen), list(ar=list(f=~0+fe(1, which=c(TRUE, TRUE)), lag=1), ne=list(f=~0+fe(1, which=c(FALSE,TRUE)), lag=0, weights=matrix(c(0,0,1,0), 2, 2)), # influenza->IMD end=list(f=addSeason2formula( ~0+fe(1,which=c(TRUE,TRUE)), S=c(3,1))), family="NegBinM")) test_that("hhh4() converges for 'influMen' example", expect_true(hhh4fit$convergence)) ## compare fits test_that("results from algo.hhh() and hhh4() agree for 'influMen' example", { expect_that(hhhfit$nObs, equals(nobs(hhh4fit))) expect_that(hhhfit$loglikelihood, equals(hhh4fit$loglikelihood)) ## fitted values expect_that(fitted(hhhfit), equals(fitted(hhh4fit), tolerance=0.0005, check.attributes=FALSE)) ## coefficient estimates hhh4coefs <- coef(hhh4fit, idx2Exp=1:3, reparamPsi=TRUE) orderhhh42old <- c(4,5,1:3, grep("(sin|cos).*\\.influenza", names(hhh4coefs)), grep("(sin|cos).*\\.meningo", names(hhh4coefs)), grep("overdisp", names(hhh4coefs))) expect_that(coef(hhhfit, reparamPsi=TRUE), equals(hhh4coefs[orderhhh42old], tolerance=0.0005, check.attributes=FALSE)) ## variance-covariance matrix of parameter estimates hhh4cov <- vcov(hhh4fit, idx2Exp=c(1:3,14:15), reparamPsi=FALSE) expect_that(hhhfit$cov, equals(hhh4cov[orderhhh42old,orderhhh42old], tolerance=0.002, check.attributes=FALSE)) }) surveillance/tests/testthat/test-hhh4+derivatives.R0000644000175100001440000000724312616617056022262 0ustar hornikuserscontext("Fixed effects hhh4() model fit and involved analytical derivatives") data("measlesWeserEms") measlesModel <- list( end = list(f = addSeason2formula(~1 + t, S=1, period=52), offset = population(measlesWeserEms)), ar = list(f = ~1), ne = list(f = ~1 + log(pop), weights = W_powerlaw(maxlag = 5, normalize = TRUE)), family = "NegBin1", data = list(pop = population(measlesWeserEms)) ) measlesFit <- hhh4(stsObj = measlesWeserEms, control = measlesModel) test_that("estimates and standard errors are reproducible", { ## dput(coef(measlesFit, se = TRUE)) orig <- structure( c(-0.499636482022272, 0.551345030080107, 0.96093157194767, -0.153585641356373, 0.00333284018297979, 1.01500011496702, -0.588738943313705, 5.52782609236691, 1.81915612994789, 0.121781347106564, 1.27401298230559, 0.453889365025671, 0.281013375484401, 0.00459840327748742, 0.210642721317572, 0.191921649336323, 1.87984346848385, 0.265016986696184), .Dim = c(9L, 2L), .Dimnames = list(c("ar.1", "ne.1", "ne.log(pop)", "end.1", "end.t", "end.sin(2 * pi * t/52)", "end.cos(2 * pi * t/52)", "neweights.d", "overdisp"), c("Estimate", "Std. Error")) ) expect_equal(coef(measlesFit, se = TRUE), orig, tolerance = 1e-6) # increased for Solaris Sparc ## tolerance determined empirically by an R build with --disable-long-double }) test_that("score vector and Fisher info agree with numerical approximations", { skip_if_not_installed("numDeriv") test <- function (neweights) { measlesModel$ne$weights <- neweights pencomp <- hhh4(measlesWeserEms, measlesModel, check.analyticals = "numDeriv")$pen expect_equal(pencomp$score$analytic, pencomp$score$numeric, tolerance = .Machine$double.eps^0.5) expect_equal(pencomp$fisher$analytic, pencomp$fisher$numeric, tolerance = .Machine$double.eps^0.25) } test(W_powerlaw(maxlag = 5, normalize = FALSE, log = FALSE)) ## normalized PL with maxlag < max(nbmat) failed in surveillance < 1.9.0: test(W_powerlaw(maxlag = 3, normalize = TRUE, log = TRUE)) }) test_that("automatic and manual normalization are equivalent", { ## check for equivalent functions for (type in c("powerlaw", "np")) { W_type <- get(paste0("W_", type), mode = "function") w0 <- W_type(maxlag = 3, normalize = TRUE) w1 <- surveillance:::scaleNEweights.list( W_type(maxlag = 3, normalize = FALSE), normalize = TRUE) pars <- w0$initial nbmat <- neighbourhood(measlesWeserEms) expect_equal(w1$w(pars, nbmat), w0$w(pars, nbmat)) ## for the power law, dw and d2w are length 1 lists in w1 but not in w0 unlistIfPL <- if (type == "powerlaw") function (x) x[[1L]] else identity expect_equal(unlistIfPL(w1$dw(pars, nbmat)), w0$dw(pars, nbmat)) expect_equal(unlistIfPL(w1$d2w(pars, nbmat)), w0$d2w(pars, nbmat)) ## microbenchmark::microbenchmark(w1$d2w(pars, nbmat), w0$d2w(pars, nbmat)) ## -> type-specific implementations of normalized derivatives are faster } ## check for equivalent fits (rather redundant) measlesFit2 <- hhh4( stsObj = measlesWeserEms, control = modifyList(measlesModel, list( ne = list( weights = W_powerlaw(maxlag = 5, normalize = FALSE), normalize = TRUE # -> use scaleNEweights.list() ))) ) expect_equal(measlesFit, measlesFit2, ignore = "control", tolerance = 1e-6) # increased to pass on 32-bit Windows }) surveillance/tests/testthat/test-nbOrder.R0000644000175100001440000000231212535244036020463 0ustar hornikuserscontext("Neighbourhood order") ## generate random adjancency matrix ## radjmat <- function (n) { ## adjmat <- matrix(0L, n, n, dimnames=list(letters[1:n],letters[1:n])) ## adjmat[lower.tri(adjmat)] <- sample(0:1, n*(n-1)/2, replace=TRUE) ## adjmat + t(adjmat) ## } ## set.seed(3); adjmat <- radjmat(5) adjmat <- structure( c(0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 0L), .Dim = c(5L, 5L), .Dimnames = rep.int(list(c("a", "b", "c", "d", "e")), 2L) ) ## validated matrix of neighbourhood orders nbmat <- structure( c(0L, 2L, 1L, 3L, 2L, 2L, 0L, 1L, 1L, 2L, 1L, 1L, 0L, 2L, 1L, 3L, 1L, 2L, 0L, 1L, 2L, 2L, 1L, 1L, 0L), .Dim = c(5L, 5L), .Dimnames = rep.int(list(c("a", "b", "c", "d", "e")), 2L) ) test_that("nbOrder() returns the validated matrix", { skip_if_not_installed("spdep") expect_that(suppressMessages(nbOrder(adjmat, maxlag=Inf)), is_identical_to(nbmat)) }) test_that("zetaweights(.,maxlag=1,normalize=FALSE) is inverse of nbOrder", { expect_that(zetaweights(nbmat, maxlag=1, normalize=FALSE), is_identical_to(1*adjmat)) }) surveillance/tests/testthat/test-twinstim_score.R0000644000175100001440000000460112535254107022144 0ustar hornikuserscontext("Likelihood and score function of twinstim()") ## Note: derivatives of interaction functions are tested in separate files ## we thus use relatively fast step functions here data("imdepi") model <- twinstim( endemic = addSeason2formula(~offset(log(popdensity)), S = 1, period = 365, timevar = "start"), epidemic = ~type, siaf = siaf.step(c(5, 20), maxRange = 50), tiaf = tiaf.step(2), data = imdepi, optim.args = NULL, verbose = FALSE ) theta <- c("h.(Intercept)" = -20, "h.sin(2 * pi * start/365)" = 0.2, "h.cos(2 * pi * start/365)" = 0.3, "e.(Intercept)" = -10, "e.typeC" = -0.9, "e.siaf.1" = -1, "e.siaf.2" = -3, "e.tiaf.1" = -1) test_that("likelihood is still the same", { expect_that(model$ll(theta), equals(-9610.68695991737)) }) test_that("score vector agrees with numerical approximation", { numsc <- if (surveillance.options("allExamples") && requireNamespace("numDeriv")) { numDeriv::grad(func = model$ll, x = theta) } else { # for faster --as-cran tests c(-365.19927878021, -29.3546236207476, -45.8139085706014, -88.5862997849202, -24.0808271983838, -54.0273836522059, -28.0233414216383, -74.5539641345285) } expect_that(model$sc(theta), equals(numsc)) }) ## Note: twinstim() uses an estimate of the _expected_ Fisher information, ## which does not necessarily agree with the negative Hessian of the ll ## (it does asymptotically at the MLE) ## numfi <- -numDeriv::hessian(func = model$ll, x = theta) ## anafi <- model$fi(theta) ### now check with identity link for the epidemic predictor model2 <- update(model, siaf = NULL, tiaf = NULL, epidemic = ~1, epilink = "log") model2i <- update(model2, epilink = "identity") theta2 <- theta2i <- theta[1:4] theta2i["e.(Intercept)"] <- exp(theta2["e.(Intercept)"]) test_that("likelihoods with log-link and identity link are the same", { expect_that(model2$ll(theta2), equals(model2i$ll(theta2i))) }) test_that("identity link score vector agrees with numerical approximation", { numsc <- if (surveillance.options("allExamples") && requireNamespace("numDeriv")) { numDeriv::grad(func = model2i$ll, x = theta2i) } else { # for faster --as-cran tests c(-679.706275919901, -91.0659401491325, -114.082117122738, -1532144485.45524) } expect_that(model2i$sc(theta2i), equals(numsc)) }) surveillance/tests/testthat/test-algo.glrnb.R0000644000175100001440000000435212276773146021136 0ustar hornikuserscontext("Count data regression charts") ## Simulation parameters S <- 1 ; t <- 1:120 ; m <- length(t) beta <- c(1.5,0.6,0.6) omega <- 2*pi/52 #log mu_{0,t} alpha <- 0.2 base <- beta[1] + beta[2] * cos(omega*t) + beta[3] * sin(omega*t) #Generate example data with changepoint and tau=tau tau <- 100 kappa <- 0.4 mu0 <- exp(base) mu1 <- exp(base + kappa) ## Generate counts set.seed(42) x <- rnbinom(length(t),mu=mu0*(exp(kappa)^(t>=tau)),size=1/alpha) s.ts <- create.disProg(week=t, observed=x, state=(t>=tau)) ## Define control object cntrl1 <- list(range=t,c.ARL=5, mu0=mu0, alpha=alpha, change="intercept", ret="value", dir="inc") ## Run algorithm glr.ts1 <- algo.glrnb(s.ts, control=cntrl1) ## Correct upperbound (rounded) ## dput(signif(c(glr.ts1$upperbound), 7)) correctUpperbound <- c( 0.0933664, 0, 0.001387989, 0.4392282, 1.239898, 2.983766, 1.954988, 1.722341, 1.586777, 0.7331938, 0.9337575, 0.7903225, 1.104522, 1.425098, 1.24129, 1.633672, 2.033343, 1.788079, 1.397671, 0.9081794, 0.797097, 0.7270934, 0.5248943, 0.3093548, 0.2622768, 0.2301054, 0.1595651, 0.1484989, 0.06889605, 0.1504776, 0.04138495, 0.02219845, 0.0231524, 0.009575689, 0.1504776, 0.5827537, 0.0357062, 0.005011513, 0, 1.390972, 0.3167743, 0.5717088, 0.1053871, 0.003442552, 0.0005934715, 0, 0, 0.05509335, 0.1375619, 0.2449853, 0.6840703, 0.5427538, 0.05675776, 0.06656547, 0.09036596, 0.209314, 0.1392091, 0.03494786, 0.026216, 0.277202, 0.01762547, 0, 0, 0, 3.564077, 1.41019, 0.290548, 0.3740241, 0.4269062, 0.1296794, 0.1298662, 0.6322042, 0.2115204, 0.107457, 0.9366399, 0.1379007, 0.1509654, 0.03392803, 0.005775552, 0, 0, 0, 0, 0, 0.001143512, 0.001637927, 1.021689, 1.965804, 1.83044, 1.017412, 0.3033473, 0.1689957, 0.4051742, 0.1247774, 0.1460143, 0.03590031, 0.9459381, 0.4189531, 0.2637725, 0.03925406, 0.01374443, 0.2283519, 2.535301, 1.406133, 1.692899, 2.021258, 2.951635, 4.25683, 4.77543, 3.90064, 3.646361, 3.680106, 4.236502, 5.522696, 0.1221651, 0.4054735, 0.6761779, 0.8039129, 0.3913383, 0.1261521) test_that("upperbound equals pre-computed value", expect_that(c(glr.ts1$upperbound), equals(correctUpperbound, tolerance=1e-6))) surveillance/src/0000755000175100001440000000000012617067305013562 5ustar hornikuserssurveillance/src/stcd-assuncaocorrea.cc0000644000175100001440000002424112617067305020037 0ustar hornikusers/** * File based on algoritmos.cpp and sv.cpp from the TerraView plugin. * C++ source originally created by Marcos Oliveira Prates on 06 April 2006 * * R interface by Michael Höhle initiated on 12 Jan 2009 */ #include "stcd-assuncaocorrea.h" #include #include using namespace std; // Calculate the number of events in the cylinder B( (xk,yk), rho) // (i.e. represented by the boolean matrix MSpace) between event times // (tj,ti] // // Params: // MSpace - contains for each pair of points is geographically // B( (xi,yi), rho) // EvtN - The last event, i.e. t_i // EvtJ - The first event, i.e. t_j int CalculaNCj(short **MSpace, const int EvtN, const int EvtJ) { int i; int Soma=0; for (i=EvtJ;i<=EvtN;i++) Soma += MSpace[EvtJ][i]; return(Soma); } // Calculate the number of events in the cylinder B( (xj,yj), rho) // (i.e. represented by the boolean matrix MSpace) between event times // (0,t_n] int ContaEvt(short **MSpace, const int EvtN, const int EvtJ) { int i; int Soma=0; for (i=0;i<=EvtN;i++) Soma += MSpace[EvtJ][i]; return(Soma); } ////////////////////////////////////////////////////////////////////// // Comment: Unfortunately, this function has not been commented in the // TerraView and hence it has been a bit difficult to document its exact // use. // // Params: // ev - a list of the events // RaioC - radius of the cylinder // epslon - relative change \lambda(s,t)(1+epsilon*I_{C_k}(s,t)) // areaA - area of the observation window A (also denoted W) // areaAcapBk - area of A \ B(s_k,\rho) for all k=1,\ldots,n // cusum - return Shiryaev-Roberts (FALSE) or CUSUM (TRUE) test // statistic // R - array of length ev where the computed values of R_n are // to be returned in. ////////////////////////////////////////////////////////////////////// int SistemadeVigilancia(SVEventLst &ev, const double RaioC, const double epslon, const double areaA, double *areaAcapBk, const int cusum, std::valarray &R) { size_t i, j, NCj, NumTotEvt, NumEvtCil; short **MSpace; double pontox, pontoy, DistEucl, Soma, UCj, fator; //order the event list ev.sort(); SVEventLst::size_type n_event = ev.size(); //create the spatio matrix MSpace = new short* [n_event]; if( MSpace == NULL ) return 1; for( i = 0; i < n_event; i++ ) { MSpace[i] = new short[n_event]; if( MSpace[i] == NULL ) { delete []MSpace; return 1; } } //create the output vector R.resize(n_event); if( R.size() != n_event ) { for( i = 0; i < n_event; i++ ) { delete []MSpace[i]; } delete []MSpace; return 1; } //Populate the spatio matrix with 1's if within radius rho in space //and 0 if not i = 0; for( SVEventLst::iterator it = ev.begin(); it != ev.end(); ++it, i++ ) { j = 0; for( SVEventLst::iterator jt = ev.begin(); jt != ev.end(); ++jt, j++ ) { pontox = (*it).x-(*jt).x; pontoy = (*it).y-(*jt).y; DistEucl = sqrt((pontox*pontox)+(pontoy*pontoy)); if((DistEucl < RaioC)) MSpace[i][j]=1; else MSpace[i][j]=0; } } ////////////////////////////////////////////////////////////////////// //Sequentually, for n=1,2,3,... compute the value of R_n by //by summing up all contributions of Lambda_{k,n} to form R_n, i.e. // \sum_{k=1}^n \Lambda_{k,n} ////////////////////////////////////////////////////////////////////// double LambdaMax = 0, Lambda; SVEventLst::iterator it2, jt2, ev0; //Loop over all n for( i = 0; i < n_event; i++ ) { Soma = 0.0; //Loop over 1<= k <= n (in code k is called j and n is i) for( j = 0; j <= i; j++ ) { //N(C_{k,n}) NCj = CalculaNCj(MSpace,i,j); //N(B(s_k, \rho) \times (0,t_n]) NumTotEvt = ContaEvt(MSpace,i,j); //N(A \times (t_k,t_n) ) = n-k+1 NumEvtCil = i-j+1; UCj = ((double)NumEvtCil*(double)NumTotEvt)/(double)(i+1); fator = 1.0+epslon; Lambda = pow(fator,(double)NCj) * exp((-epslon)*UCj); /* //Alternative estimation having the desired property for \rho->\infty // N( A \times (0,t_k] \cup (A\times (t_k,t_n) \backslash C_{k,n}) ) // \nu( A \times (0,t_k] \cup (A\times (t_k,t_n) \backslash C_{k,n}) ) double iCount=0; double jCount=0; ev0 = ev.begin(); for( it2 = ev.begin(); iCount < i ; ++it2, iCount++ ); for( jt2 = ev.begin(); jCount < j ; ++jt2, jCount++ ); double NNoCkn = ((j-1) + (NumEvtCil - NCj)); double volCkn = areaAcapBk[j] * ((*it2).t - (*jt2).t); double volNoCkn = areaA * ((*it2).t - (*ev0).t) - volCkn; UCj = (NNoCkn / volNoCkn) * volCkn; // Debug // cout << "----> k=" << j << " n= " << i << endl; // cout << "t_k=" << (*jt2).t << endl; // cout << "t_n=" << (*it2).t << endl; // cout << "N(C_{k,n}) = NCj; // cout << "N(W\\times(0,t_n) \\backslash C_{k,n}))=" << NNoCkn << endl; // cout << "vol(C_{k,n}))=" << volCkn << endl; // cout << "vol(W\\times(0,t_n) \backslash C_{k,n})=" << volNoCkn << endl; //// cout << "mu(C_{k,n})=" << UCj << endl; //Lambda = pow(fator,(double)NCj) * exp((-epslon)*UCj); */ //Summation for the Shiryaev-Roberts statistics Soma += Lambda; //Find maximum k of \Lambda_{k,n} for the CUSUM statistics if (Lambda> LambdaMax) { LambdaMax = Lambda; } } //Depending on the summation scheme compute the statistic. if (cusum) { R[i] = LambdaMax; } else { R[i] = Soma; } } //clean memory for( i = 0; i < n_event; i++ ) { delete [] MSpace[i]; } delete [] MSpace; return 0; } int CalculaLambda(SVEventLst &ev, const double RaioC, const double epslon, std::valarray &R, unsigned int &numObs) { size_t i, j, NCj, NumTotEvt, NumEvtCil; short **MSpace; double pontox, pontoy, DistEucl, UCj, fator, lambda, lambdaMax; ev.sort(); SVEventLst::size_type n_event = ev.size(); //create the spatio matrix MSpace = new short* [n_event]; if( MSpace == NULL ) return 1; for( i = 0; i < n_event; i++ ) { MSpace[i] = new short[n_event]; if( MSpace[i] == NULL ) { delete []MSpace; return 1; } } //create the output vector R.resize(n_event); if( R.size() != n_event ) { for( i = 0; i < n_event; i++ ) { delete []MSpace[i]; } delete []MSpace; return 1; } //populate the spatio matrix with 1 if is close in spatio and 0 if not i = 0; for( SVEventLst::iterator it = ev.begin(); it != ev.end(); ++it, i++ ) { j = 0; for( SVEventLst::iterator jt = ev.begin(); jt != ev.end(); ++jt, j++ ) { pontox = (*it).x-(*jt).x; pontoy = (*it).y-(*jt).y; DistEucl = sqrt((pontox*pontox)+(pontoy*pontoy)); if((DistEucl < RaioC)) MSpace[i][j]=1; else MSpace[i][j]=0; } } //do the calculus to find the output value of each event i = numObs; lambdaMax = 0; for( j = 0; j <= i; j++ ) { NCj = CalculaNCj(MSpace,i,j); NumTotEvt = ContaEvt(MSpace,i,j); NumEvtCil = i-j+1; UCj = ((double)NumEvtCil*(double)NumTotEvt)/(double)(i+1); fator = 1.0+epslon; lambda = (pow(fator,(double)NCj) * exp((-epslon)*UCj)); if (lambda > lambdaMax){ lambdaMax = lambda; numObs = j; } } //clean memory for( i = 0; i < n_event; i++ ) { delete [] MSpace[i]; } delete [] MSpace; return 0; } ////////////////////////////////////////////////////////////////////// // Shiryaev-Roberts space time detection as explained in the paper // by Correa and Assuncao (2009). // // Params: // x - array with x location of events // y - array with y location of events // t - array with time point of the events (on some arbitrary time scale) // n - number of elements in x, y and t (the same for the three vectors) // radius - cluster of the radius // epsilon - relative ratio of the intensity functions to detect for // areaA - area of the observation region (also denoted W) // areaAcapBk - area of A \ B(s_k,\rho) for all k=1,\ldots,n // threshold -- upper threshold when to sound the alarm // Rarray -- array of length n, this will contain the statistics calced // by the function // idxFirstAlarm -- index in the x,y,t vector resulting in the alarm // idxClusterCenter -- index in the x,y,t vector containing the cluster // center ////////////////////////////////////////////////////////////////////// extern "C" { void SRspacetime(double *x, double *y, double *t, int *n, double *radius, double *epsilon, double *areaA, double *areaAcapBk, int *cusum, double *threshold, double *Rarray, int *idxFirstAlarm, int *idxClusterCenter) { //Create SVEventLst SVEvent e; SVEventLst eList; unsigned int i; int j; //Fill coordinates of event list for(j=0;j<*n;j++){ e.x = x[j]; e.y = y[j]; e.t = t[j]; eList.push_back(e); } //Array of test statistic values std::valarray R; //Call SistemadeVigilancia, this calculates the SR statistics R_n SistemadeVigilancia(eList,*radius,*epsilon,*areaA,areaAcapBk,*cusum, R); //Debug purposes //cout << "Size of R = " << R.size() << endl; //Move values of test statistic for return for(i=0;i*threshold){ controle = true; break; } } //Advancing the iterator "it" to the point //where the alarm is generated. if (controle) { unsigned int cont = 0; SVEventLst::iterator it = eList.begin(); while((cont < i) && (it != eList.end())){ ++it; ++cont; } *idxFirstAlarm = cont; //Determine the cluster center of the alarm unsigned int num = cont; CalculaLambda(eList,*radius,*epsilon,R,num); //Index of the cluster center *idxClusterCenter = num; } else { //If no alarms, then return -1 for both alarm idx and cluster center idx *idxFirstAlarm = -2; *idxClusterCenter = -2; } //Clean up (nothing to clean) and done } } surveillance/src/ks.c0000755000175100001440000001431612617067305014353 0ustar hornikusers/* * 16-Aug 2012 / (C) Michael Hoehle * This file is a modified version of the code ks.c available * at http://svn.r-project.org/R/trunk/src/library/stats/src/ks.c * The file is copyright 1995-2009 by The R Core Team under GPL-2 * (or later) as shown below. As stated in the GPL-2 license * the present file is again availbale under GPL-2. * * License: * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, a copy is available at * http://www.r-project.org/Licenses/ */ /* ks.c Compute the asymptotic distribution of the one- and two-sample two-sided Kolmogorov-Smirnov statistics, and the exact distributions in the two-sided one-sample and two-sample cases. */ #include #include /* constants */ /*#include "ctest.h"*/ static double K(int n, double d); static void m_multiply(double *A, double *B, double *C, int m); static void m_power(double *A, int eA, double *V, int *eV, int m, int n); /* Two-sample two-sided asymptotic distribution */ void pkstwo(Sint *n, double *x, double *tol) { /* x[1:n] is input and output * * Compute * \sum_{k=-\infty}^\infty (-1)^k e^{-2 k^2 x^2} * = 1 + 2 \sum_{k=1}^\infty (-1)^k e^{-2 k^2 x^2} * = \frac{\sqrt{2\pi}}{x} \sum_{k=1}^\infty \exp(-(2k-1)^2\pi^2/(8x^2)) * * See e.g. J. Durbin (1973), Distribution Theory for Tests Based on the * Sample Distribution Function. SIAM. * * The 'standard' series expansion obviously cannot be used close to 0; * we use the alternative series for x < 1, and a rather crude estimate * of the series remainder term in this case, in particular using that * ue^(-lu^2) \le e^(-lu^2 + u) \le e^(-(l-1)u^2 - u^2+u) \le e^(-(l-1)) * provided that u and l are >= 1. * * (But note that for reasonable tolerances, one could simply take 0 as * the value for x < 0.2, and use the standard expansion otherwise.) * */ double new, old, s, w, z; Sint i, k, k_max; k_max = (Sint) sqrt(2 - log(*tol)); for(i = 0; i < *n; i++) { if(x[i] < 1) { z = - (M_PI_2 * M_PI_4) / (x[i] * x[i]); w = log(x[i]); s = 0; for(k = 1; k < k_max; k += 2) { s += exp(k * k * z - w); } x[i] = s / M_1_SQRT_2PI; } else { z = -2 * x[i] * x[i]; s = -1; k = 1; old = 0; new = 1; while(fabs(old - new) > *tol) { old = new; new += 2 * s * exp(z * k * k); s *= -1; k++; } x[i] = new; } } } /* Two-sided two-sample */ void psmirnov2x(double *x, Sint *m, Sint *n) { double md, nd, q, *u, w; Sint i, j; if(*m > *n) { i = *n; *n = *m; *m = i; } md = (double) (*m); nd = (double) (*n); /* q has 0.5/mn added to ensure that rounding error doesn't turn an equality into an inequality, eg abs(1/2-4/5)>3/10 */ q = (0.5 + floor(*x * md * nd - 1e-7)) / (md * nd); u = (double *) R_alloc(*n + 1, sizeof(double)); for(j = 0; j <= *n; j++) { u[j] = ((j / nd) > q) ? 0 : 1; } for(i = 1; i <= *m; i++) { w = (double)(i) / ((double)(i + *n)); if((i / md) > q) u[0] = 0; else u[0] = w * u[0]; for(j = 1; j <= *n; j++) { if(fabs(i / md - j / nd) > q) u[j] = 0; else u[j] = w * u[j] + u[j - 1]; } } *x = u[*n]; } /* The two-sided one-sample 'exact' distribution */ void pkolmogorov2x(double *x, Sint *n) { /* x is input and output. */ *x = K(*n, *x); } static double K(int n, double d) { /* Compute Kolmogorov's distribution. Code published in George Marsaglia and Wai Wan Tsang and Jingbo Wang (2003), "Evaluating Kolmogorov's distribution". Journal of Statistical Software, Volume 8, 2003, Issue 18. URL: http://www.jstatsoft.org/v08/i18/. */ int k, m, i, j, g, eH, eQ; double h, s, *H, *Q; /* The faster right-tail approximation is omitted here. s = d*d*n; if(s > 7.24 || (s > 3.76 && n > 99)) return 1-2*exp(-(2.000071+.331/sqrt(n)+1.409/n)*s); */ k = (int) (n * d) + 1; m = 2 * k - 1; h = k - n * d; H = (double*) Calloc(m * m, double); Q = (double*) Calloc(m * m, double); for(i = 0; i < m; i++) for(j = 0; j < m; j++) if(i - j + 1 < 0) H[i * m + j] = 0; else H[i * m + j] = 1; for(i = 0; i < m; i++) { H[i * m] -= pow(h, i + 1); H[(m - 1) * m + i] -= pow(h, (m - i)); } H[(m - 1) * m] += ((2 * h - 1 > 0) ? pow(2 * h - 1, m) : 0); for(i = 0; i < m; i++) for(j=0; j < m; j++) if(i - j + 1 > 0) for(g = 1; g <= i - j + 1; g++) H[i * m + j] /= g; eH = 0; m_power(H, eH, Q, &eQ, m, n); s = Q[(k - 1) * m + k - 1]; for(i = 1; i <= n; i++) { s = s * i / n; if(s < 1e-140) { s *= 1e140; eQ -= 140; } } s *= pow(10., eQ); Free(H); Free(Q); return(s); } static void m_multiply(double *A, double *B, double *C, int m) { /* Auxiliary routine used by K(). Matrix multiplication. */ int i, j, k; double s; for(i = 0; i < m; i++) for(j = 0; j < m; j++) { s = 0.; for(k = 0; k < m; k++) s+= A[i * m + k] * B[k * m + j]; C[i * m + j] = s; } } static void m_power(double *A, int eA, double *V, int *eV, int m, int n) { /* Auxiliary routine used by K(). Matrix power. */ double *B; int eB , i; if(n == 1) { for(i = 0; i < m * m; i++) V[i] = A[i]; *eV = eA; return; } m_power(A, eA, V, eV, m, n / 2); B = (double*) Calloc(m * m, double); m_multiply(V, V, B, m); eB = 2 * (*eV); if((n % 2) == 0) { for(i = 0; i < m * m; i++) V[i] = B[i]; *eV = eB; } else { m_multiply(A, B, V, m); *eV = eA + eB; } if(V[(m / 2) * m + (m / 2)] > 1e140) { for(i = 0; i < m * m; i++) V[i] = V[i] * 1e-140; *eV += 140; } Free(B); } surveillance/src/twins.cc0000644000175100001440000025036112617067305015244 0ustar hornikusers/******************************************************************* * Author: Mathias Hofmann * Michael Hoehle * Volker Schmid * Daniel Sabanes Bove * History: * March 2012 (DSB) -- changed long types to int to be in accordance with R * (we observed bad allocations in 64 bit machines) * May 2010 (DSB) -- modified from Oct 2008 * * Markov Chain Monte Carlo (MCMC) estimation in the Branching Process * like Epidemic Model. Instead of a slow R solution this code * provides a faster C++ solution. Can be invoked through R or be * programmed as a librrary. This code uses the Gnu Scientific Library * (GSL) available from http://sources.redhat.com/gsl/ * * For now this code is quick & dirty. A more OO framework would be nice * to enable better programming, but this will probably be speedwise slower. *******************************************************************/ #include #include /*New C++ uses header iostream (without the .h) followed by a namespace*/ using namespace std; #include /* Replaced calls to GSL with functions from the R API */ #include #include /*wrappers to what used to be GSL functions*/ #include "gsl_wrappers.h" // Dynamic_2d_array class by David Maisonave (609-345-1007) (www.axter.com) // Description: // The dynamic array class listed below is more efficient then other // similar classes that use temporary objects as return types, or use // an std::vector as a return type. // // It's also more compatible with a C style 2D array, in that the // array is in one continuous memory block. This makes it possible // to pass this array object to a C Function that has a C-Style // 2D array for a parameter. // Example usage: /* Dynamic_2d_array MyIntArray(12, 34); MyIntArray[0][1] = 123; cout << MyIntArray[0][1] << endl; */ template < class T > class Dynamic_2d_array { public: // constructor Dynamic_2d_array(size_t row, size_t col) : m_row(row), m_col(col), m_data((row!=0 && col!=0) ? new T[row*col] : NULL) {} // copy ctr Dynamic_2d_array(const Dynamic_2d_array& src) : m_row(src.m_row), m_col(src.m_col), m_data((src.m_row!=0 && src.m_col!=0) ? new T[src.m_row*src.m_col] : NULL) { for(size_t r=0; r LongMatrix; typedef Dynamic_2d_array DoubleMatrix; typedef Dynamic_2d_array IntMatrix; // Analogous class for vectors (== 1D arrays) template < class T > class Dynamic_1d_array { public: // constructor Dynamic_1d_array(size_t length) : m_length(length), m_data((length !=0) ? new T[length] : NULL) {} // copy ctr Dynamic_1d_array(const Dynamic_1d_array& src) : m_length(src.m_length), m_data((src.m_length!=0) ? new T[src.m_length] : NULL) { for(size_t i=0; i LongVector; typedef Dynamic_1d_array DoubleVector; typedef Dynamic_1d_array IntVector; /************************************ Globals *************************************/ /*Setup params*/ int overdispersion; int varnu; int la_rev; int K_geom; int la_estim; int nu_trend; int theta_pred_estim; int xi_estim; int delta_rev; int xi_estim_delta; int epsilon_rev; int xi_estim_epsilon; int xi_estim_psi; double psiRWSigma = 0.25; double xRWSigma = 0.25; double taubetaRWSigma = 0.25; /*Priors*/ double alpha_lambda = 1.0; double beta_lambda = 1.0; double alpha_xi = 1.0; double beta_xi = 1.0; double p_K = 1.0; double alpha_nu = 1.0; double beta_nu = 1.0; double alpha_psi = 1.0; double beta_psi = 10.0; double alpha_a=1; double alpha_b=0.001; double beta_a=1.0; double beta_b=.00001; double gamma_a=1; double gamma_b=0.001; double delta_a=1; double delta_b=0.001; double epsilon_a=1; double epsilon_b=0.001; /********************************************************************* * Compute sum from 1 to I and 1 to n of a vektor with indices 0,...,I * of a vektor with indices 0,...,n * Parameters: * * X a vector with indices 0,..,I of a vector with indices 0,...,n * I "length" of vector (true length due to zero indice is I+1) *********************************************************************/ double sumIn(const LongMatrix& X, int I, int n) { double res = 0; for (register int i=1; i<=I; i++){ for (register int t=1; t<=n; t++) { res += X[i][t]; } } return(res); } /********************************************************************* * Compute sum from 1 to I and 1 to n of a vektor with indices 0,...,I * of a vektor with indices 0,...,n * This is the double version * Parameters: * * X a vector with indices 0,..,I of a vector with indices 0,...,n * I "length" of vector (true length due to zero indice is I+1) *********************************************************************/ double sumIn(const DoubleMatrix& X, int I, int n) { double res = 0; for (register int i=1; i<=I; i++){ for (register int t=1; t<=n; t++) { res += X[i][t]; } } return(res); } /********************************************************************* * Compute sum from 1 to I and 1 to n of a vektor with indices 0,...,I * of a vektor with indices 0,...,n * Parameters: * * X a vector with indices 0,..,I of a vector with indices 0,...,n * I "length" of vector (true length due to zero indice is I+1) *********************************************************************/ double sumIn2(const LongMatrix& X, int I, int n) { double res = 0; for (register int i=1; i<=I; i++){ for (register int t=2; t<=n; t++) { res += X[i][t]; } } return(res); } /********************************************************************* * Compute sum from 1 to I and 1 to n of a vektor with indices 0,...,I * of a vektor with indices 0,...,n * This is the double version * Parameters: * * X a vector with indices 0,..,I of a vector with indices 0,...,n * I "length" of vector (true length due to zero indice is I+1) *********************************************************************/ double sumIn2(const DoubleMatrix& X, int I, int n) { double res = 0; for (register int i=1; i<=I; i++){ for (register int t=2; t<=n; t++) { res += X[i][t]; } } return(res); } /********************************************************************* * Compute sum from 1 to I of a vektor with indices 0,...,I * of a vektor with indices 0,...,n * Parameters: * * X a vector with indices 0,..,I of a vector with indices 0,...,n * I "length" of vector (true length due to zero indice is I+1) *********************************************************************/ double sumI1(const LongMatrix& X, int I, int t) { double res = 0; for (register int i=1; i<=I; i++) { res += X[i][t]; } return(res); } /********************************************************************* * Compute sum from 1 to I of a vektor with indices 0,...,I * of a vektor with indices 0,...,n * This is the double version * Parameters: * * X a vector with indices 0,..,I of a vector with indices 0,...,n * I "length" of vector (true length due to zero indice is I+1) *********************************************************************/ double sumI1(const DoubleMatrix& X, int I, int t) { double res = 0; for (register int i=1; i<=I; i++) { res += X[i][t]; } return(res); } /********************************************************************* * factorial function *********************************************************************/ long factorial(long x){ long fac=1; if(x<0){ Rf_error("negative value passed to factorial function\n");} else{ if(x==0){fac=1;} else{ for(int i=1;i<=x;i++){ fac*=i; } } } return(fac); } /********************************************************************* * logit function *********************************************************************/ double logit(double y){ if(y <= 0 || y >= 1){ Rf_error("y <= 0 or y >= 1 in logit function.\n"); } double logit; logit = log(y/(1-y)); return(logit); } /********************************************************************* * inverse logit function *********************************************************************/ double invlogit(double y){ double invlogit; invlogit = 1/(1 + exp(-y)); return(invlogit); } /********************************************************************* * inverse logit function diff. *********************************************************************/ double invlogitd(double y){ double invlogitd; invlogitd = exp(-y)/pow((1.0 + exp(-y)),2); return(invlogitd); } /********************************************************************* * Makes one Metropolis-Hastings update step, log-scale *********************************************************************/ double updateMHlog(double &par, double parStar, double logFpar, double logFparStar, double &acceptedpar) { double accpar = exp(logFparStar - logFpar); if (gsl_rng_uniform() <= accpar) {par = parStar; acceptedpar++;} return(0); } /********************************************************************* * Makes one Metropolis-Hastings update step *********************************************************************/ double updateMH(double &par, double parStar, double Fpar, double FparStar, double &acceptedpar) { double accpar = FparStar/Fpar; if (gsl_rng_uniform() <= accpar) {par = parStar; acceptedpar++;} return(0); } /********************************************************************* * Tunes a parameter *********************************************************************/ double tune(double& parameter, double accepted, double samples, double& tunepar, double a=0.3, double b=0.4){ tunepar=1; if ((accepted/samples>a) && (accepted/samplesb) { parameter *= 1.5; } else if (accepted/samples0){return x;}else{return -x;} } double MIN(double a, double b) { if (a2) { REprintf("Error in the twins.cc function invers()\n"); } for (int i=0; i< k*k; i++) { A[i]=ergebnis[i]; } return; } void mxschreibe(double* A, int a, int b) { for (int i=0; i= gsl_rng_uniform()) { alpha[i]=alphaneu; acc_alpha += 1; } } return; } void erzeuge_b_Q(DoubleVector& gamma , double* my, double* Q, const DoubleVector& alpha, DoubleVector& delta, DoubleVector& beta, const LongMatrix& X, const LongMatrix& Z, const LongMatrix& Y, int n, int I, double taubeta, int rw, const DoubleMatrix& lambda, double p, const DoubleMatrix& xcov, int ncov, const DoubleMatrix& omega, const DoubleMatrix& omegaX,int scov, int mode) { if (mode==1) { /* b-vektor des Proposals*/ for (int t=0;tgsl_rng_uniform()){ gamma[j] = gammajStar; acc_gamma += 1; } return; } void update_beta_t(int t, const DoubleVector& alpha, DoubleVector& beta, DoubleVector& gamma, DoubleVector& delta, int ncov, const DoubleMatrix& xcov, const LongMatrix& X, int n, int I, double taubeta, long& acc_beta, const DoubleMatrix& omega, int scov) { double h = 0; double c = 0; double d = 0; for(int i=1;i<=I;i++){ h -= omega[i][t]*delta[t]*exp(alpha[i] + beta[t] + sumg(ncov,xcov,gamma,t,scov)); /* h ist h(beta[t]^0), beta ist \beta^0, betatStar ist \beta*/ c += X[i][t]; } if(t==2){ c -= taubeta*(beta[t+2]-2*beta[t+1]); d = taubeta; } if(t==3){ c -= taubeta*((beta[t+2]-2*beta[t+1]) + (-2*beta[t+1] - 2*beta[t-1])); d = 5*taubeta; } if((t>=4)&&(t<=(n-2))){ c -= taubeta*((beta[t+2]-2*beta[t+1]) + (-2*beta[t+1] - 2*beta[t-1]) + (beta[t-2] - 2*beta[t-1])); d = 6*taubeta; } if(t==(n-1)){ c -= taubeta*((-2*beta[t+1] - 2*beta[t-1]) + (beta[t-2] - 2*beta[t-1])); d = 5*taubeta; } if(t==n){ c -= taubeta*(beta[t-2] - 2*beta[t-1]); d = taubeta; } double s = sqrt(1/(d - h)); /* s ist s*/ double b = c + (1 - beta[t])*h; double m = b*s*s; double betatStar = gsl_ran_gaussian(s) + m; double h2 = 0; for(int i=1;i<=I;i++){ h2 -= omega[i][t]*delta[t]*exp(alpha[i] + betatStar + sumg(ncov,xcov,gamma,t,scov)); /* h2 ist h(beta[t])*/ } double s2 = sqrt(1/(d - h2)); /* s2 ist s^0*/ double b2 = c + (1 - betatStar)*h2; double m2 = b2*s2*s2; double a = 0; a += betatStar*c; a -= beta[t]*c; a -= 0.5*d*betatStar*betatStar; a += 0.5*d*beta[t]*beta[t]; a += h2; a -= h; a += log(s); a -= log(s2); a += 0.5*((betatStar-m)/s)*((betatStar-m)/s); a -= 0.5*((beta[t]-m2)/s2)*((beta[t]-m2)/s2); if(exp(a)>gsl_rng_uniform()){ beta[t] = betatStar; acc_beta += 1; } return; } void update_lambda_br(DoubleMatrix& lambda, DoubleMatrix& lambda_br,DoubleVector& xi_lambda, IntMatrix& breakpoints, IntMatrix& breakpointsStar, IntVector& K, IntVector& KStar, IntVector& Km1, double alpha_lambda, double beta_lambda, const LongMatrix& Y, const LongMatrix& Z, int n, int I, double& acceptedbr, const DoubleMatrix& omega, int theta_pred_estim, int xi_estim, int K_geom, double p_K, double alpha_xi, double beta_xi) { /*update breakpoints of lambda using reversible jump MCMC*/ int newbreakpoint =0; int removebreakpoint=0; int newbreakpointnumber=0; int u; double v=1; double a; double alpha_la; double beta_la; for(int i=1;i<=I;i++){ if(!theta_pred_estim){ a=gsl_rng_uniform(); if(a<0.5){u=1;}else{u=2;} if(K[i]==1){u=2;v=.5;} /*K[i] is number of segments of lambda*/ if(K[i]==(n-1)){u=1;v=.5;} /*if(!theta_pred_estim) max of K[i] is n-1*/ /*decide if new brreakpoint or remove breakpoint*/ if(u==1){/*remove breakpoint*/ if(K[i]==2){v=2;} KStar[i]=K[i]-1; a=gsl_rng_uniform(); removebreakpoint=(int)floor(a*(double)(K[i]-1))+1; /*generate breakpointsStar*/ for(int k=1;kn){need=1;} for(int k=1;k<=K[i];k++){ if(newbreakpoint==breakpoints[i][k]){ need=1; } } }/*while(need==1)*/ /*generate breakpointsStar*/ for(int k=1;k<=K[i];k++){ if((newbreakpoint>breakpoints[i][k-1])&&(newbreakpoint(n+1)){need=1;} for(int k=1;k<=K[i];k++){ if(newbreakpoint==breakpoints[i][k]){ need=1; } } }/*while(need==1)*/ /*generate breakpointsStar*/ for(int k=1;k<=K[i];k++){ if((newbreakpoint>breakpoints[i][k-1])&&(newbreakpointn){need=1;} for(int k=1;k<=K_delta;k++){ if(newbreakpoint==breakpoints_delta[k]){ need=1; } } }//while(need==1) //generate breakpointsStar_delta for(int k=1;k<=K_delta;k++){ if((newbreakpoint>breakpoints_delta[k-1])&&(newbreakpointn){need=1;} for(int k=1;k<=K_epsilon;k++){ if(newbreakpoint==breakpoints_epsilon[k]){ need=1; } } }//while(need==1) //generate breakpointsStar_epsilon for(int k=1;k<=K_epsilon;k++){ if((newbreakpoint>breakpoints_epsilon[k-1])&&(newbreakpoint> n; // Rprintf("n=%d\n",n); // int I=1; // //fin >> I; // //cout << "I=" << I << endl; // long **Z = new long*[I+1]; // for (register long i=0; i<=I; i++){ // Z[i] = new long[n+1]; // } // for (register long t=0; t<=n; t++){ // Z[0][t]=0; // } // for (register long i=0; i<=I; i++){ // Z[i][0]=0; // } // //Start @ index 1. (Z[0] is not defined) // int t=1; // while (!fin.eof() && (t<=n)) { // int i=1; // while (!fin.eof() && (i<=I)) { // fin >> Z[i][t]; // i++; // } // t++; // } // fin.close(); // //Return the result consisting of Z and n // *size = n; // *size2 = I; // return(Z); // } /* Calculate the deviance of the data we use that the data, Z, is a * sum of Poisson distributed variables, i.e. it is Poisson * distributed. * * Z_t = S_t + X_t + Y_t, i.e. * Z_t ~ Po(nu*p + nu*(1-p) + lambda*W_{t-1}) * * D = -2log p(Z|theta) + 2 log p(Z|\mu(theta)=Z) */ double satdevalt(int n, int I, const LongMatrix& X, const LongMatrix& Y, const LongMatrix& Z, const DoubleMatrix& omega, const DoubleMatrix& lambda, const DoubleMatrix& nu, double *xi, DoubleMatrix& eta, DoubleMatrix& eta2, DoubleMatrix& varr, double psi, int overdispersion) { double res = 0; //Loop over all data for (register int i=1; i<=I; i++) { for (register int t=2; t<=n; t++) { //Use the equation derived for the saturated deviance in the paper //calculate the mean and variance of Z[i][t] eta[i][t] = (nu[i][t]*xi[i]+lambda[i][t]*Z[i][t-1]); eta2[i][t] = eta[i][t]; if(overdispersion){ varr[i][t] = eta2[i][t]*(1+eta2[i][t]/psi); }else{ varr[i][t] = eta2[i][t]; } //calculate the Deviance in the Poisson and NegBin case if(!overdispersion){ if (Z[i][t] == 0) { res += 2 * eta[i][t]; } else { res += 2 * ( Z[i][t] * log(Z[i][t]/eta[i][t]) - Z[i][t] + eta[i][t]); } } if(overdispersion){ if (Z[i][t] == 0) { res += 2 * ( - (Z[i][t]+psi) * log((Z[i][t]+psi)/(eta[i][t]+psi))); } else { res += 2 * ( - (Z[i][t]+psi) * log((Z[i][t]+psi)/(eta[i][t]+psi)) + Z[i][t] * log(Z[i][t]/eta[i][t])); } } } } return(res); } /* Calculate the deviance of the data we use that the data, Z, is a * sum of Poisson distributed variables, i.e. it is Poisson * distributed. * * Z_t = X_t + Y_t, i.e. * Z_t ~ Po(nu_t + lambda_t*Z_{t-1}) * * D = -2log p(Z|theta) */ double satdev(int n, int I, const LongMatrix& Z, const DoubleMatrix& lambda, const DoubleMatrix& nu, double *xi, DoubleVector& epsilon, DoubleMatrix& eta, double psi, int overdispersion) { double res = 0; //Loop over all data for (register int i=1; i<=I; i++) { for (register int t=2; t<=n; t++) { //Use the equation derived for the saturated deviance in the paper //calculate the mean and variance of Z[i][t] eta[i][t] = (epsilon[t] + nu[i][t]*xi[i]+lambda[i][t]*Z[i][t-1]); //calculate the Deviance in the Poisson and NegBin case if(!overdispersion){ res -= 2 * ( Z[i][t] * log(eta[i][t]) - gsl_sf_lngamma(Z[i][t]+1) - eta[i][t]); } if(overdispersion){ res -= 2 * ( gsl_sf_lngamma(Z[i][t]+psi) - gsl_sf_lngamma(Z[i][t]+1) - gsl_sf_lngamma(psi) - (Z[i][t]+psi)*log(eta[i][t]+psi) + psi*log(psi) + Z[i][t]*log(eta[i][t])); } } } return(res); } // Calculate chi square the sum of the qudratic pearson residuals (z-mean)/sd double chisq(int n, int I, const LongMatrix& Z, const DoubleMatrix& lambda, const DoubleMatrix& nu, double *xi, DoubleVector& epsilon, DoubleMatrix& eta, DoubleMatrix& varr, DoubleMatrix& rpearson, double psi, int overdispersion) { double res = 0; //Loop over all data for (register int i=1; i<=I; i++) { for (register int t=2; t<=n; t++) { //calculate the mean and variance of Z[i][t] eta[i][t] = (epsilon[t] + nu[i][t]*xi[i]+lambda[i][t]*Z[i][t-1]); if(overdispersion){ varr[i][t] = eta[i][t]*(1+eta[i][t]/psi); }else{ varr[i][t] = eta[i][t]; } rpearson[i][t] = (Z[i][t]-eta[i][t])/sqrt(varr[i][t]); //calculate chisq in the Poisson and NegBin case res += rpearson[i][t]*rpearson[i][t]; } } return(res); } /********************************************************************** * Estimation in the basic epidemic model * */ void bplem_estimate(int verbose, ofstream &logfile, ofstream &logfile2, ofstream &acclog, const LongMatrix& Z, double* xi, int n, int I, int T, int nfreq, int burnin, int filter, int samples, int rw) { //Model parameters - start values double nu_const = alpha_nu/beta_nu; double lambda_const = 0.5; double psi = alpha_psi / beta_psi; double x = logit(lambda_const); if(!verbose) { Rprintf("------------------------------------------------\n"); if (!la_rev){ Rprintf("lambda: Ga(%f, %f)-->\t%f\n", alpha_lambda, beta_lambda, lambda_const); } if(!varnu){ Rprintf("nu: Ga(%f, %f)-->\t%f\n", alpha_nu, beta_nu, nu_const); } if(overdispersion){ Rprintf("psi: Ga(%f, %f)-->\t%f\n", alpha_psi, beta_psi, psi); } Rprintf("------------------------------------------------\n"); } //Allocate arrays for all latent variables and initialize them // first all 2D arrays (matrices) LongMatrix X(I+1, n+1); LongMatrix Y(I+1, n+1); LongMatrix S(I+1, n+1); DoubleMatrix omega(I+1, n+1); DoubleMatrix sumX(I+1, n+1); DoubleMatrix sumY(I+1, n+1); DoubleMatrix sumS(I+1, n+1); DoubleMatrix sumomega(I+1, n+1); DoubleMatrix nu(I+1, n+1); DoubleMatrix lambda(I+1, n+2); DoubleMatrix lambda_br(I+1, n+2); DoubleMatrix eta(I+1, n+1); DoubleMatrix eta2(I+1, n+1); DoubleMatrix varr(I+1, n+1); DoubleMatrix rpearson(I+1, n+1); DoubleMatrix Sumeta(I+1, n+1); DoubleMatrix Sumvarr(I+1, n+1); DoubleMatrix Sumrpearson(I+1, n+1); IntMatrix breakpoints(I+1, n+2); IntMatrix breakpointsStar(I+1, n+2); LongMatrix bp(I+1, n+2); // long** X = new long*[I+1]; // long** Y = new long*[I+1]; // long** S = new long*[I+1]; // double **omega= new double*[I+1]; // double** sumX = new double*[I+1]; // double** sumY = new double*[I+1]; // double** sumS = new double*[I+1]; // double **sumomega= new double*[I+1]; // double **nu= new double*[I+1]; // double *alpha=new double[I+1]; // double* beta= new double[n+1]; // double **lambda=new double*[I+1]; // double **lambda_br=new double*[I+1]; // double **eta=new double*[I+1]; // double **eta2=new double*[I+1]; // double **varr=new double*[I+1]; // double **rpearson=new double*[I+1]; // double **Sumeta=new double*[I+1]; // double **Sumvarr=new double*[I+1]; // double **Sumrpearson=new double*[I+1]; // int **breakpoints=new int*[I+1]; // int **breakpointsStar=new int*[I+1]; // long **bp=new long*[I+1]; // We would have to delete the pointers manually at the end of the routine // in order not to corrupt the memory!!! // for (register long i=0; i<=I; i++){ // X[i]=new long[n+1]; // Y[i]=new long[n+1]; // S[i]=new long[n+1]; // omega[i]=new double[n+1]; // sumX[i]=new double[n+1]; // sumY[i]=new double[n+1]; // sumS[i]=new double[n+1]; // sumomega[i]=new double[n+1]; // nu[i]=new double[n+1]; // lambda[i]=new double[n+2]; // lambda_br[i]=new double[n+2]; // breakpoints[i]=new int[n+2]; // breakpointsStar[i]=new int[n+2]; // bp[i]=new long[n+2]; // eta[i]=new double[n+1]; // eta2[i]=new double[n+1]; // varr[i]=new double[n+1]; // rpearson[i]=new double[n+1]; // Sumeta[i]=new double[n+1]; // Sumvarr[i]=new double[n+1]; // Sumrpearson[i]=new double[n+1]; // } // then the rest (1D arrays and numbers) DoubleVector alpha(I + 1); DoubleVector beta(n + 1); DoubleVector delta(n + 2); DoubleVector delta_br(n + 2); double xi_delta = 1; DoubleVector epsilon(n + 2); DoubleVector epsilon_br(n + 2); double xi_epsilon = 1; double xi_psi = 1; IntVector K(I + 1); IntVector Km1(I + 1); IntVector KStar(I + 1); DoubleVector xi_lambda(I + 1); IntVector breakpoints_delta(n+2); IntVector breakpointsStar_delta(n+2); LongVector bp_delta(n+2); int K_delta = 0; int Km1_delta = 0; int KStar_delta = 0; IntVector breakpoints_epsilon(n+2); IntVector breakpointsStar_epsilon(n+2); LongVector bp_epsilon(n+2); int K_epsilon = 0; int Km1_epsilon = 0; int KStar_epsilon = 0; LongVector Xnp1(I + 1); LongVector Snp1(I + 1); LongVector Ynp1(I + 1); LongVector Znp1(I + 1); DoubleVector omeganp1(I + 1); DoubleVector nunp1(I + 1); if(!varnu){ for (register int i=0; i<=I; i++) { for (register int t=0; t<=n; t++) { nu[i][t] = alpha_nu/beta_nu; } } } for (register int i=0; i<=I; i++) { for (register int t=0; t<=n; t++) { lambda[i][t] = lambda_const; } } for (register int i=0; i<=I; i++) { for (register int t=0; t<=n; t++) { X[i][t] = 0; S[i][t] = 0; Y[i][t] = Z[i][t]; omega[i][t] = 1; eta[i][t] = 0; bp[i][t] = 0; bp_delta[t] = 0; bp_epsilon[t] = 0; sumX[i][t] = 0; sumY[i][t] = 0; sumS[i][t] = 0; sumomega[i][t] = 0; Sumeta[i][t] = 0; Sumrpearson[i][t] = 0; } bp[i][n+1] = 0; xi_lambda[i] = 1; bp_delta[n+1] = 0; bp_epsilon[n+1] = 0; } /* Fuer Saisonkomponenente */ int ncov; int scov = 0; if(delta_rev){ scov = 1; } // determine the number of covariates and allocate then // the vectors and design matrix. ncov = nu_trend ? (nfreq * 2 + 2) : (nfreq * 2 + 1); DoubleVector gamma(ncov); DoubleVector gammaneu(ncov); DoubleMatrix xcov(ncov, n+2); // bad, do not do that: // double* gamma; // double* gammaneu = NULL; // double** xcov; if(!nu_trend){ // ncov=nfreq*2+1; // gamma = new double[ncov]; // gammaneu = new double[ncov]; // xcov = new double*[ncov]; // for (int i=0; i tuneSampleSize && (!verbose) && (sampleCounter % (int)floor(sampleSize/100.0) == 0)) { Rprintf("%d%%", sampleCounter*100 / sampleSize); } if(0){ if(varnu){ if ((sampleCounter % 100 == 0)) { Rprintf("alpha\t%f beta\t%f %f gamma[0]\t%f gamma[1]\t%f gamma[2]\t%f %f lambda\t%f\n", (double)acc_alpha/I, beta[2], (double)acc_beta, gamma[0], gamma[1], gamma[2],(double)acc_gamma, lambda[1][2]); /* cout<< "alpha\t" << (double)acc_alpha/I<<" " << "beta\t" <<" "<< beta[2] <<" "<< (double)acc_beta<<" " << "gamma[0]\t" <<" "<< gamma[0] <<" "<< "gamma[1]\t" <<" " << gamma[1] <<" "<< "gamma[2]\t" <<" "<< gamma[2] <<" " << (double)acc_gamma<<" " << "lambda\t" << lambda[1][2] << endl;*/ } } if(la_rev){ if ((sampleCounter % 100 == 0)) { Rprintf("K\t%d\n", K[1]); } } if(delta_rev){ if ((sampleCounter % 100 == 0)) { Rprintf("K_delta\t%f delta[2]\t%f\n", K_delta, delta[2]); } } if(epsilon_rev){ if ((sampleCounter % 100 == 0)) { Rprintf("K_epsilon\t%f epsilon[2]\t%f\n", K_epsilon, epsilon[2]); } } } // cout << ":"<) superflous. double accpsi = exp(logFPsiStar-logFPsi); //Do we accept? if ((psi>0) && (gsl_rng_uniform() <= accpsi)) {psi = psiStar; acceptedPsi++;} } //update xi_psi if(xi_estim_psi){ double a = alpha_psi + 1; double b = beta_psi + psi; xi_psi = gsl_ran_gamma (a, 1/b); } ////////////////////////////////////////////////////////////////////////// //State information to file if we are on an filter'th sample if ((sampleCounter>burnin) && ((sampleCounter-burnin) % filter == 0)) { logfile << sampleCounter << "\t"; if (!la_rev){ logfile << lambda_const << "\t"; } logfile << psi << "\t"; logfile << xi_psi << "\t"; if(!varnu){ logfile << nu_const << "\t"; } } if(varnu){ // Unterprogramme fuer den Update von alpha und beta if (I>=2) { alphaupdate(gamma, alpha, beta, delta, lambda, 1, I, n, Y, X, acc_alpha, taualpha, ncov, xcov, xreg, omega, omega, scov,1); taualpha=update_tau_alpha(alpha, I, alpha_a, alpha_b, xreg); if (sampleCounter%3==0) { if(scov==0){ double asum=0; for (int i=1; i<=I; i++) { asum+=(alpha[i]-xreg[i]); } for (int i=1; i<=I; i++) { alpha[i]-=(asum/I); } gamma[0]=gamma[0]+(asum/I); } } } else { alpha[1]=0.0; } //Update fuer zeitlichen effekt mit RW if (rw>0) { // update_beta_nurrw(gamma, alpha, beta, delta, X, Z, Y, n, I, taubeta, rw, 1, lambda, acc_beta, sampleCounter, my, my2, temp, z, theta, Q, Q2, L, L2, xcov, ncov, scov, omega, omega, 1); //update_beta_block(alpha, beta, gamma, delta, X, n, I, taubeta, rw, acc_beta, sampleCounter, n1, n2, my, my2, z, theta, beta0, Q, Q2, L, L2, xcov, ncov, scov, omega); /*hofmann - no fortran update_beta_tau_block(alpha, beta, gamma, delta, beta_a, beta_b, X, n, I, taubeta, rw, acc_beta, taubetaRWSigma, taubetaStar, sampleCounter, n1, n2, my, my2, z, theta, beta0, Q, Q2, L, L2, xcov, ncov, scov, omega); */ //taubeta=beta_a/beta_b; // taubeta=hyper(rw, beta, beta_a, beta_b, n); //taubeta=720; //if(sampleCounter%500==1){cout << taubeta << endl << endl;} // for(int t=2;t<=n;t++){ // update_beta_t(t, alpha, beta, gamma, delta, ncov, xcov, X, n, I, taubeta, acc_beta, omega, scov); // } if(scov==0){ // if (sampleCounter%1==0) // { double bsum=0; for (int t=2; t<=n; t++) { bsum+=(beta[t]); } for (int t=2; t<=n; t++) { beta[t]-=(bsum/(n-1)); } gamma[0]=gamma[0]+(bsum/(n-1)); // } } } //if (rw>0) //update saison //update_gamma( alpha, beta, gamma,ncov, xcov, X, Z, Y, n, I, taugamma, 1, lambda, acc_gamma, P, P2, gammaalt, z2, L, Q, omega, omega,1); taugamma=gamma_b; // cout << gamma[0]<<" " << gamma[1] << endl; for(int j=scov;jburnin) && ((sampleCounter-burnin) % filter == 0)) { // for (register int i=1;i<=I; i++) { // for (register int t=1; t<=n; t++) { // logfile << nu[i][t] << "\t"; // } // } // logfile << mu << "\t"; for (register int j=0; jburnin) && ((sampleCounter-burnin) % filter == 0)) { logfile << Km1_delta<<"\t"<< xi_delta<<"\t"; for (register int j=2; j<=n; j++) { logfile << delta[j] << "\t"; } } if (sampleCounter>burnin) { for (register int k=1; k<=K_delta; k++) { for (register int j=2; j<=n; j++) { if (breakpoints_delta[k]==j){ bp_delta[j]+=1; } } } } }//if(delta_rev) }//if }//if varnu if(epsilon_rev){ update_epsilon_br(epsilon, epsilon_br, xi_epsilon, breakpoints_epsilon, breakpointsStar_epsilon, K_epsilon, KStar_epsilon, Km1_epsilon, epsilon_a, epsilon_b, S, n, I, acceptedbr_epsilon, omega, xi_estim_epsilon, K_geom, p_K, alpha_xi, beta_xi); if ((sampleCounter>burnin) && ((sampleCounter-burnin) % filter == 0)) { logfile << Km1_epsilon<<"\t"<< xi_epsilon<<"\t"; for (register int j=2; j<=n; j++) { logfile << epsilon[j] << "\t"; } } if (sampleCounter>burnin) { for (register int k=1; k<=K_epsilon; k++) { for (register int j=2; j<=n; j++) { if (breakpoints_epsilon[k]==j){ bp_epsilon[j]+=1; } } } } }//if(epsilon_rev) if(la_estim){ if (la_rev) { update_lambda_br(lambda, lambda_br, xi_lambda, breakpoints, breakpointsStar, K, KStar, Km1, alpha_lambda, beta_lambda, Y, Z, n, I, acceptedbr, omega, theta_pred_estim, xi_estim, K_geom, p_K, alpha_xi, beta_xi); if ((sampleCounter>burnin) && ((sampleCounter-burnin) % filter == 0)) { logfile << Km1[1]<<"\t"<< xi_lambda[1]<<"\t"; for (register int j=2; j<=n; j++) { logfile << lambda[1][j] << "\t"; } } for (register int i=1;i<=I; i++) { if (sampleCounter>burnin) { for (register int k=1; k<=K[i]; k++) { for (register int j=2; j<=n; j++) { if (breakpoints[i][k]==j){ bp[i][j]+=1; } } } } } }//if(la_rev) } // if(la_estim) // cout << S[1][106] << endl; // cout << "test" << endl; //Loop over the individual X[t], Y[t], S[t], and omega[t] for (register int i=1;i<=I; i++) { for (register int t=2; t<=n; t++) { //Update X double binp = nu[i][t]*xi[i] / (epsilon[t] + nu[i][t]*xi[i] + lambda[i][t] * Z[i][t-1]); X[i][t] = gsl_ran_binomial( binp, Z[i][t]); //Update S binp = epsilon[t] / (epsilon[t] + lambda[i][t] * Z[i][t-1]); //hoehle 9 Apr 2009 -- protection against Z[i][t-1]==0 case, leading to binp = nan if (Z[i][t-1] == 0) {binp = 1;} S[i][t] = gsl_ran_binomial( binp, (Z[i][t] - X[i][t])); //Update Y Y[i][t] = Z[i][t] - X[i][t] - S[i][t]; //Debug //cout << "i=" << i << "\tt=" << t << "\tX=" << X[i][t] << "\tY=" << Y[i][t] << "\tZ=" << Z[i][t] << "\tS=" << S[i][t] << "\tepsilon=" << epsilon[t] << "\tbinp=" << binp << endl; //Update omega[t] in case of overdispersion if(overdispersion){ double a = psi + Z[i][t]; double b = psi + epsilon[t] + nu[i][t] + lambda[i][t]*Z[i][t-1]; omega[i][t] = gsl_ran_gamma(a,1/b); } //Write state to log-file. if (sampleCounter>burnin) { sumX[i][t] += X[i][t]; sumY[i][t] += Y[i][t]; sumS[i][t] += S[i][t]; sumomega[i][t] += omega[i][t]; Sumeta[i][t] += eta[i][t]; Sumvarr[i][t] += varr[i][t]; Sumrpearson[i][t] += rpearson[i][t]; } }//for t }//for i // cout << "test2" << endl; // cout << Z[1][2] << endl; // cout << X[1][2] << endl; // cout << Y[1][2] << endl; // cout << S[1][2] << endl; //Praediktive Verteilung fuer variables nu for (register int i=1;i<=I;i++) { if(!theta_pred_estim){ double p_thetanp1 = ((double(K[i]))/double(n)); //(1+double(K[i])) if(K_geom){ p_thetanp1 = (double(K[i])*(1.0-p_K)*(1.0-pow((double)1.0-p_K,double(n-1))))/((double(n)-1.0)*(1.0-pow((double)1.0-p_K,double(n)))); } if(gsl_rng_uniform()<=p_thetanp1){ if (sampleCounter>burnin) { bp[i][n+1] += 1; } double alpha_la = alpha_lambda; double beta_la = beta_lambda; if(xi_estim){ beta_la = xi_lambda[i]; } lambda[i][n+1]=gsl_ran_gamma(alpha_la,1/beta_la); } } if(overdispersion){ omeganp1[i] = gsl_ran_gamma(psi,1/psi); }else{ omeganp1[i] = 1; } if(varnu){ a = 0; for(int j=scov;j0){ a += gsl_ran_gaussian(sqrt(1/taubeta)) + (2*beta[n-1]-beta[n]); } if(delta_rev){ double p_thetanp1 = ((double(K[i]))/double(n)); //(1+double(K[i])) if(K_geom){ p_thetanp1 = ((double(K[i]))*(1.0-p_K)*(1.0-pow((double)1.0-p_K,double(n-1))))/((double(n)-1.0)*(1.0-pow((double)1.0-p_K,double(n)))); } if(gsl_rng_uniform()<=p_thetanp1){ if (sampleCounter>burnin) { bp_delta[n+1] += 1; } double alpha_de = delta_a; double beta_de = delta_b; if(xi_estim){ beta_de = xi_delta; } delta[n+1]=gsl_ran_gamma(alpha_de,1/beta_de); } a += log(delta[n+1]); } nunp1[i] = exp(a); }else{ nunp1[i]=nu[i][n]; } if(epsilon_rev){ double p_thetanp1 = ((double(K[i]))/double(n)); //(1+double(K[i])) if(K_geom){ p_thetanp1 = ((double(K[i]))*(1.0-p_K)*(1.0-pow((double)1.0-p_K,double(n-1))))/((double(n)-1.0)*(1.0-pow((double)1.0-p_K,double(n)))); } if(gsl_rng_uniform()<=p_thetanp1){ if (sampleCounter>burnin) { bp_epsilon[n+1] += 1; } double alpha_ep = epsilon_a; double beta_ep = epsilon_b; if(xi_estim){ beta_ep = xi_epsilon; } epsilon[n+1]=gsl_ran_gamma(alpha_ep,1/beta_ep); } } Xnp1[i] = gsl_ran_poisson(omeganp1[i]*nunp1[i]*xi[i]); Ynp1[i] = gsl_ran_poisson(lambda[i][n+1]*omeganp1[i]*(Z[i][n])); Snp1[i] = gsl_ran_poisson(omeganp1[i]*epsilon[n+1]); Znp1[i] = Xnp1[i] + Ynp1[i] + Snp1[i]; if ((sampleCounter>burnin) && ((sampleCounter-burnin) % filter == 0)) { logfile << Znp1[1] << "\t"; } } if ((sampleCounter>burnin) && ((sampleCounter-burnin) % filter == 0)) { logfile << satdev(n,I,Z,lambda,nu,xi,epsilon,eta,psi,overdispersion) << endl; } logfile.flush(); //Tuning if(sampleCounter == tuneSampleSize){ if (!la_rev) { Rprintf("Current xRWSigma= %f --> acc rate= %f\n", xRWSigma, acceptedlambda/tuneSampleSize); tune(xRWSigma, acceptedlambda, tuneSampleSize,tunex); Rprintf("Corrected xRWSigma= %f\n", xRWSigma); } if(overdispersion){ Rprintf("\nCurrent psiRWSigma= %f --> acc rate = %f\n", psiRWSigma, acceptedPsi/tuneSampleSize); tune(psiRWSigma, acceptedPsi, tuneSampleSize,tunepsi); Rprintf("Corrected psiRWSigma= %f\n", psiRWSigma); } if(varnu&&(rw>0)){ Rprintf("Current taubetaRWSigma= %f --> acc rate %f\n", taubetaRWSigma, acc_beta/tuneSampleSize); tune(taubetaRWSigma, acc_beta, tuneSampleSize,tunetaubeta,0.1,0.4); Rprintf("Corrected taubetaRWSigma= %f\n", taubetaRWSigma); } //tunetaubeta = 0; need=tunex + tunepsi + tunetaubeta; if(need > 0){ acceptedlambda = 0; acceptedbr = 0; acceptedbr_delta = 0; acceptedbr_epsilon = 0; acceptedPsi = 0; sampleCounter = 0; if(varnu){ acc_beta=0; acc_alpha=0; acc_gamma=0; } //Fix seed of generator to reproduce results. // gsl_rng_set(r,seed); }//if }//if sampleCounter++; }//while counter //Write means to logfile2 for (register int t=1;t<=n;t++) { logfile2 << (double)sumX[1][t]/((double)samples*(double)filter) << "\t" << (double)sumY[1][t]/((double)samples*(double)filter)<< "\t" << (double)sumomega[1][t]/((double)samples*(double)filter) << "\t"<< (double)bp[1][t]/((double)samples*(double)filter) << "\t"; } logfile2 << (double)bp[1][n+1]/((double)samples*(double)filter) << "\t"; logfile2 << endl; //Write accepted status to file if(overdispersion){acclog << "psi\t" << psiRWSigma << "\t" << (double)acceptedPsi/(double)sampleSize << endl;} if (!la_rev){acclog << "lambda\t" << xRWSigma << "\t" << (double)acceptedlambda/(double)sampleSize << endl;} if (la_rev){acclog << "br\t" << 0 << "\t" << (double)acceptedbr/(double)sampleSize << endl;} if(I>1){acclog << "alpha\t" << 0 <<"\t" <<(double)acc_alpha/((double)sampleSize*I)<0)){acclog <<"beta\t"<<0 <<"\t"<< (double)acc_beta/((double)sampleSize*(double)(n-1.0))< Date: 8 Jan 2008 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, a copy is available at http://www.r-project.org/Licenses/ Atm the only C routines are concerned with the GLR computations in the algorithm algo.prc. //should check that these really work... void lr_cusum - intercept chart with known kappa void glr_cusum - intercept chart with estimated kappa void glr_cusum_window -- window limited intercept chart with estimated kappa //removedvoid glr_epi void glr_epi_window //History 17 Feb 2009 -- added LR scheme for negative binomial (still experimental) 08 Jan 2007 -- added the files for the negative binomial computations 21 Sep 2007 -- modified code to get around error of extreme strict (=pedantic) MacOS compiling on CRAN 28 Nov 2006 -- file created */ /*#define DEBUG*/ #include #include #include #include /* header */ /* void lr_cusum(int* ,double* , int *, double *, double *,int *, double *) ; void glr_cusum(int* ,double* , int *, int *, double *,int *, double *, int *, int *, int *) ; */ /* Helper function for x^2 */ static R_INLINE double sqr(double x) { return(x*x); } /*====================================================================== Poisson GLR detector ====================================================================== */ /********************************************************************** C implementation of the LR test for the seasonal Poisson chart with fixed change in the intercept Params: x - array of observed values (pos 0 is first interesting value) mu0 - array with the means once in-control (pos 0 is first interesting value) lx - length of the x and mu0 array kappa- the change in intercept to detect (here known in advance) c_ARL- when to sound alarm threshold ret_N- here the return value is stored ret_lr- GLR value for each n to be returned ret_cases - The number of cases to be returned ret - what should be returned (value of lr-statistic, cases)? **********************************************************************/ void lr_cusum(int* x,double* mu0, int *lx_R, double *kappa_R, double *c_ARL_R,int *ret_N, double *ret_lr, double *ret_cases, int *ret_R) { /* Pointers to something useful */ int lx = *lx_R; double c_ARL = *c_ARL_R; double kappa = *kappa_R; int ret = *ret_R; /* Loop variables */ register int n=0; int stop = 0; int N = lx; /* Loop over all 0 <= n <= length(x) */ while ((n < lx)) { /*Compute for one n*/ /*printf("n=%d\n",n);*/ double zn = kappa * x[n] + (1-exp(kappa))*mu0[n]; #ifdef DEBUG printf("For kappa=%f and mu[%d]=%f:\tx[%d]=%f, LR=%f\n",kappa,n,mu0[n],n,x[n],zn); #endif /* Add up */ if (n==0) { ret_lr[n] = fmax(0,zn); /*5.11.2009 -- Bug fix. There was a small programming error for the computing the cases for n==0. if (ret==2) ret_cases[n] = (c_ARL + mu0[n]*(kappa-1))/kappa ; */ if (ret==2) ret_cases[n] = (c_ARL + mu0[n]*(exp(kappa)-1))/kappa ; } else { ret_lr[n] = fmax(0,ret_lr[n-1] + zn); if (ret==2) ret_cases[n] = (c_ARL - ret_lr[n-1] + mu0[n]*(exp(kappa)-1))/kappa ; } /* Find the first time that the GLR increases c_ARL there we stop */ if ((ret_lr[n] > c_ARL) && !stop) { N = n; stop = 1; break; } /* Advance counter */ n++; } /* Return value (add 1 for R/SPlus array compability */ *ret_N = N+1; } /*********************************************************************** Function for the computation of the glr-statistic with time-varying in-control value Params n - timepoint n where the glr-statistic should be computed x - array with observations mu0 - array with estimated in-comtrol parameters dir - direction of testing (up (1) or down (-1) the function returns max_1<=k<=n sup_theta sum_t=k^n log f_theta(x_t)/f_theta0(x_t) ************************************************************************/ double glr (int n, int x[], double mu0[], int dir){ /* For the recursive computation of kappa_ml */ double sumx = 0; double summu0 = 0; /* Define max of the GLR stats */ double maxGLR = -1e99; /* Loop variable */ register int k; /* For fitting and summation */ double kappa_ml = 0; double sum = 0; /* Loop over all k */ for (k=n; k>=0; k--) { /* Backwards loop makes calculations faster */ /* Recursive update of the kappa.ml quantitities */ sumx += x[k]; summu0 += mu0[k]; /* Calculate MLE of kappa */ kappa_ml = dir*fmax(0,dir*log(sumx/summu0)); /* Recursive updating of the likelihood ratios -- See notes on the 21 september printout. This is fast! */ sum = kappa_ml * sumx + (1-exp(kappa_ml))*summu0; /* save max value */ if (sum > maxGLR) { maxGLR = sum;} } return(maxGLR); } /*********************************************************************** Function for the computation of the window-limited glr-statistic with time-varying in-control value Params n - timepoint n where the glr-statistic should be computed x - array with observations mu0 - array with estimated in-comtrol parameters dir - direction of testing (up (1) or down (-1) M - max time to go back in time from N Mtilde - number of vals we will need to estimate a detection the function returns max(0,n-M) <= k <= n-Mtilde sup_theta sum_t=k^n log f_theta(x_t)/f_theta0(x_t) ************************************************************************/ double glr_window (int n, int x[], double mu0[], int dir, int M, int Mtilde){ /* Define max of the GLR stats */ double maxGLR = -1e99; /* Loop variable */ register int k,l; /* For the recursive computation of kappa_ml compute for (n-Mtilde+1):n */ double sumx = 0; double summu0 = 0; /* For fitting and summation */ double sum = 0; double kappa_ml = 0; for (l=n-Mtilde+1; l<=n; l++) { sumx += x[l]; summu0 += mu0[l]; } /* Loop over all max(0,n-M) <= k <= n-Mtilde -- do this backwards */ /* for (k=max(0,n-M); k<= (n-Mtilde); k++) { */ for (k=n-Mtilde; k>=fmax(0,n-M); k--) { /* Recursive update of the kappa.ml quantitities */ sumx += x[k]; summu0 += mu0[k]; kappa_ml = dir*fmax(0,dir*log(sumx/summu0));; /*Calculate sum of likelihood ratios using recursive updating (fast!)*/ sum = kappa_ml * sumx + (1-exp(kappa_ml))*summu0; /* Save the max value */ if (sum > maxGLR) { maxGLR = sum;} } return(maxGLR); } /********************************************************************** Fast C implementation of the sequential GLR test without windowing for Poisson distributed variables, this function can test in both directions (up/down) and there is the possibility ( in opposite to old function glr_cusum) to return the number of cases at timepoint n to produce an alarm at any timepoint 1<=k<=n Params: x - array of observed values (pos 0 is first interesting value) mu0 - array with the means once in-control (pos 0 is first interesting value) lx - length of the x and mu0 array n0 - number of burn-in values (number of observations, not array index!) c_ARL- when to sound alarm threshold ret_N- here the return value is stored ret_glr- GLR value for each n to be returned dir - direction of testing ret - what should be returned (value of glr-statistic, cases)? **********************************************************************/ void glr_cusum(int* x,double* mu0, int *lx_R, int *n0_R, double *c_ARL_R,int *ret_N, double *ret_glr, double *ret_cases, int *dir_R, int *ret_R) { /* Pointers to something useful */ int lx = *lx_R; int n0 = *n0_R; int dir = *dir_R; int ret = *ret_R; double c_ARL = *c_ARL_R; /* Loop variables */ register int n; /*l,n0-1*/ for (n=0; n= c_ARL */ while ((dir*glrnew < c_ARL*dir)){ /* increase/decrease xnnew */ xnnew = xnnew + 1; /* put this value in vector x at timepoint n */ x[n] = xnnew; /* compute the glr-statistic */ glrnew = glr(n,x,mu0,dir); } /* save the value */ ret_cases[n] = xnnew; /* set x[n] back to original value so that we can go to next n*/ x[n] = xnold; } /* Find the first time that the GLR increases c_ARL there we stop */ if ((ret_glr[n] >= c_ARL) && !stop) { N = n; stop = 1; break; } /*Advance counter*/ n++; } /* Return value (add 1 for R/SPlus array compability */ *ret_N = N+1; } /********************************************************************** Fast C implementation of the sequential GLR test without windowing for Poisson distributed variables Params: x - array of observed values (pos 0 is first interesting value) mu0 - array with the means once in-control (pos 0 is first interesting value) lx - length of the x and mu0 array Mtilde - number of vals we will need to estimate a detection M - max time to go back in time from N c_ARL- when to sound alarm threshold **********************************************************************/ void glr_cusum_window(int* x,double* mu0, int *lx_R, int *M_R, int *Mtilde_R, double *c_ARL_R,int *ret_N, double *ret_glr, double *ret_cases, int *dir_R, int *ret_R) { /* Pointers to something useful */ int lx = *lx_R; int M = *M_R; int Mtilde = *Mtilde_R; int dir = *dir_R; int ret = *ret_R; double c_ARL = *c_ARL_R; /* Loop variables (n>Mtilde, so we start with n=Mtilde (due to -1 in index) */ register int n = Mtilde; /*l*/ int stop = 0; int N = lx; /* Precalculation of log(mu0) -- apparently not used anymore */ //double logmu0[lx]; //for (l=0;l= c_ARL */ while ((dir*glrnew < c_ARL*dir)){ /* increase/decrease xnnew */ xnnew = xnnew + 1; /* put this value in vector x at timepoint n */ x[n] = xnnew; /* compute the glr-statistic */ glrnew = glr_window(n,x,mu0,dir,M,Mtilde); } /* save the value */ ret_cases[n] = xnnew; /* set x[n] back to original value so that we can go to next n*/ x[n] = xnold; } /* Debug*/ /* printf("For n=%d the best GLR value is %f\n",n,maxGLR);*/ /* Find the first time that the GLR increases c_ARL there we stop */ if ((ret_glr[n] >= c_ARL) && !stop) { N = n; stop = 1; break; } /* Advance counter */ n++; } /* Return value (add 1 for R/SPlus array compability */ *ret_N = N+1; } /*====================================================================== GLR in the Epidemic Poisson model ====================================================================== */ /*Helper functions*/ /* Score function */ static R_INLINE double score(double phi, int *x, double *xm1, double *mu0, int k, int n) { register int i; double sum = 0; /*printf("[1] ");*/ for (i=k; i<=n; i++) { sum += (x[i]*xm1[i])/(exp(phi)*xm1[i]+mu0[i]) - xm1[i]; } /*printf("\n");*/ return(exp(phi)*sum); } /*fisher information*/ static R_INLINE double fisher(double phi,int *x,double *xm1, double *mu0, int k,int n,double scorephi) { register int i; double sum = 0; for (i=k; i<=n; i++) { sum += (x[i]*sqr(xm1[i]))/sqr(exp(phi)*xm1[i]+mu0[i]); } return(-scorephi + exp(2.0*phi)*sum); } /********************************************************************** GLR detector for the epidemic Poisson model described in Held et. al (2005). Parameters: x -- the data (as array) mu0 -- base means under H0 lx -- length of x Mtilde_R -- number of obs needed to get good estimate (typically 1) M -- Mtilde < M xm10 -- observed value of x_0 (0 for initialization, but known if >1st round) c_ARL_R -- constant determining when to signal alarm ret_N -- the return value ret_lr --- GLR value for each n to be returned **********************************************************************/ void glr_epi_window(int* x,double* mu0, int *lx_R, int *Mtilde_R, int *M_R, double *xm10, double *c_ARL_R,int *ret_N, double *ret_glr) { /* printf("====> begin glr_epi\n"); */ /* Pointers to something useful */ int lx = *lx_R; /* length of x */ int Mtilde = *Mtilde_R; int M = *M_R; double c_ARL = *c_ARL_R; /* Loop variables */ register int n, k,i; /* Init return values up to the first position */ int n0 = fmax(Mtilde-1,0); /*hoehle: 25.9: changepoint can happen at position one: fmax(Mtilde-1,1);*/ for (n=0; n-18) & (fabs(exp(phi_new) - exp(phi_old)) > 1e-6) & (iter maxGLR) { maxGLR = lnk;} } /*Debug */ /*printf("For n=%d the best GLR value is %f\n",n,maxGLR); */ /*Save the return value */ ret_glr[n] = maxGLR; /*Find the first time that the GLR increases c_ARL there we stop */ if ((maxGLR > c_ARL) && !stop) { N = n; stop = 1; break; } /*Advance counter */ n++; } /*Set the remaining values to zero */ for (i=n+1;i begin lr_cusum_nb\n"); #endif /* Pointers to something useful */ int lx = *lx_R; double c_ARL = *c_ARL_R; double kappa = *kappa_R; double alpha = *alpha_R; int ret = *ret_R; #ifdef DEBUG printf("lx = %d\n",lx); printf("alpha = %f\n",alpha); #endif /* Loop variables */ register int n=0; int stop = 0; int N = lx; /* Loop over all 0 <= n <= length(x) */ while ((n < lx)) { /*Compute for one n*/ #ifdef DEBUG printf("n=%d\n",n); #endif /* LR for one NB variable as given in the first equation of Sect 2.1 in the Hoehle and Paul (2008) paper */ double zn = kappa * x[n] + (x[n]+1/alpha)*log( (1+alpha*mu0[n])/(1+alpha*mu0[n]*exp(kappa)) ); /* Recursive CUSUM as given in (4) by Hoehle and Paul (2008) */ if (n==0) { /* Statistic */ ret_lr[n] = fmax(0,zn); /* Number of cases it takes to sound an alarm - backcalc'ed by backcalc.mws*/ if (ret==2) ret_cases[n] = -(log((1+alpha*mu0[n])/(1+alpha*mu0[n]*exp(kappa)))-c_ARL*alpha)/alpha/(kappa+log((1+alpha*mu0[n])/(1+alpha*mu0[n]*exp(kappa)))); } else { /* Statistic */ ret_lr[n] = fmax(0,ret_lr[n-1] + zn); /* Number of cases it takes to sound an alarm -- backcalc.mws*/ if (ret==2) ret_cases[n] = -(ret_lr[n-1]*alpha+log((1+alpha*mu0[n])/(1+alpha*mu0[n]*exp(kappa)))-c_ARL*alpha)/alpha/(kappa+log((1+alpha*mu0[n])/(1+alpha*mu0[n]*exp(kappa)))); } /* Find the first time that the GLR increases c_ARL there we stop */ if ((ret_lr[n] > c_ARL) && !stop) { N = n; stop = 1; break; } /* Advance counter */ n++; } /* Return value (add 1 for R/SPlus array compability */ *ret_N = N+1; } /* ====================================================================== Functions for the intercept chart ====================================================================== */ /* Score function for intercept chart*/ static R_INLINE double nbScore(double kappa, int *x, double *mu0, double alpha, int k, int n) { register int i; double sum = 0; /*printf("[1] ");*/ for (i=k; i<=n; i++) { sum += (x[i]-exp(kappa)*mu0[i])/(1+alpha*exp(kappa)*mu0[i]); } /*printf("\n");*/ return(sum); } /*fisher information for intercept chart -- its minus the hesse */ static R_INLINE double nbFisher(double kappa,int *x, double *mu0, double alpha, int k,int n) { register int i; double sum = 0; for (i=k; i<=n; i++) { sum += mu0[i]*(alpha*x[i]+1)/sqr(1+alpha*exp(kappa)*mu0[i]); } return( exp(kappa)*sum); } /* Formula to compute a single l_{n,k} for the intercept chart */ static R_INLINE double nblnk(double kappa,int *x, double *mu0, double alpha, int k,int n) { register int i; double lnk = 0; for (i=k;i<=n;i++) { lnk += kappa * x[i] + (x[i] + 1/alpha) * log( (1+alpha*mu0[i])/(1+alpha*mu0[i]*exp(kappa))); } return(lnk); } /********************************************************************** GLR detector for the negative binomial model described in Hoehle and Paul (2007). Parameters: x -- the data (as array) mu0 -- base means under H0 alpha -- fixed dispersion parameter of the NegBin distribution (see Lawless87) lx -- length of x Mtilde_R -- number of obs needed to get good estimate (typically 1) M -- Mtilde < M c_ARL_R -- constant determining when to signal alarm ret_N -- the return value ret_lr --- GLR value for each n to be returned **********************************************************************/ void glr_nb_window(int* x,double* mu0, double* alpha_R, int *lx_R, int *Mtilde_R, int *M_R, double *c_ARL_R,int *ret_N, double *ret_glr, int *dir_R) { #ifdef DEBUG printf("====> begin glr_nb_window\n"); #endif /* Pointers to something useful */ int lx = *lx_R; /* length of x */ int Mtilde = *Mtilde_R; int M = *M_R; double c_ARL = *c_ARL_R; double alpha = *alpha_R; int dir = *dir_R; /* Loop variables */ register int n, k,i; /*changepoint can happen at position one (ie. index zero in C*/ int n0 = fmax(Mtilde-1,0); #ifdef DEBUG printf("Length of the data = %d\n",lx); printf("starting at n0= %d\n",n0); #endif /* Show the data */ /*for (n=0; n-18) & (fabs(kappa_new - kappa_old) > 1e-6) & (iter maxGLR) { maxGLR = lnk;} } /*Debug */ #ifdef DEBUG printf("For n=%d the highest GLR value is %f\n",n,maxGLR); #endif /*Save the return value */ ret_glr[n] = maxGLR; /*Find the first time that the GLR increases c_ARL there we stop */ /*hoehle: now >= */ if ((maxGLR >= c_ARL) && !stop) { N = n; stop = 1; break; } /*Advance counter */ n++; } /*Set the remaining values to zero */ for (i=n+1;i begin glr_nbgeneral_window \n"); #endif /* Pointers to something useful */ int lx = *lx_R; /* length of x */ int Mtilde = *Mtilde_R; int M = *M_R; double c_ARL = *c_ARL_R; double alpha = *alpha_R; /* int dir = *dir_R; -- currently direction is not supported?? */ /* Loop variables */ register int n, k,i; /*changepoint can happen at position one (ie. index zero in C*/ int n0 = fmax(Mtilde-1,0); /* Compute x_{t-1} */ double xm1[lx]; xm1[0] = *xm10; /* used to be 0 */ for (i=1; i-18) & (fabs(theta_new - theta_old) > 1e-6) & (iter maxGLR) { maxGLR = lnk;} } /*Debug */ #ifdef DEBUG printf("For n=%d the highest GLR value is %f\n",n,maxGLR); #endif /*Save the return value */ ret_glr[n] = maxGLR; /*Find the first time that the GLR increases c_ARL there we stop */ /*hoehle: now >= */ if ((maxGLR >= c_ARL) && !stop) { N = n; stop = 1; break; } /*Advance counter */ n++; } /*Set the remaining values to zero */ for (i=n+1;i #include struct SVEvent { double x, y, t; friend bool operator<(const SVEvent &a, const SVEvent &b) { return (a.t < b.t); } }; //STL is used (check its use) typedef std::list SVEventLst; //Functions provided in sr-spacetime.cc int CalculaNCj(short **MSpace, const int EvtN, const int EvtJ); int ContaEvt(short **MSpace, const int EvtN, const int EvtJ); //int SistemadeVigilancia(SVEventLst &, const double RaioC, const double epslon, // std::valarray &R); //New version with different estimation approach int SistemadeVigilancia(SVEventLst &ev, const double RaioC, const double epslon, const double areaA, double *areaAcapBk, const int cusum, std::valarray &R); int CalculaLambda(SVEventLst &ev, const double RaioC, const double epslon, std::valarray &R, unsigned int &numObs); // Hoehle wrapper function to create SVEvent list //void SRspacetime(double *x, double *y, double *t, int *n, double *radius, double *epsilon, double *Rarray); #endif surveillance/src/backproj.cc0000755000175100001440000000271312617067305015672 0ustar hornikusers#include using namespace Rcpp; RcppExport SEXP eq3a(SEXP rlambdaOld, SEXP ry, SEXP rincuPmf) { BEGIN_RCPP // get arguments NumericVector lambdaOld(rlambdaOld); int T = lambdaOld.length(); NumericVector y(ry); NumericVector incuPmf(rincuPmf); // Create long enough vectors for queries about dincu and pincu NumericVector dincu(T); NumericVector pincu(T); pincu[0] = dincu[0]; for (int i=1; i * Date: Aug 2008 * * * Header file containing wrappers for GSL related calls * to R calls using the R API. This code is used in twins.cc *******************************************************************/ /* new definitions to replace GSL code */ // Remove the dead RNG variable (DSB 04/05/2010): // int r; double gsl_rng_uniform () { // GetRNGstate(); double res = runif(0,1); //PutRNGstate(); return(res); } double gsl_ran_gaussian(double sigma) { //GetRNGstate(); double res = rnorm(0.0,sigma); //PutRNGstate(); return(res); } double gsl_ran_gamma(double a, double b) { //GetRNGstate(); double res = rgamma(a,b); //PutRNGstate(); return(res); } unsigned int gsl_ran_poisson(double lambda) { //GetRNGstate(); unsigned int res = rpois(lambda); //PutRNGstate(); return(res); } unsigned int gsl_ran_binomial(double p, unsigned int n) { //GetRNGstate(); unsigned int res = rbinom(n,p); //PutRNGstate(); return(res); } //hoehle: The original function assumes mu>0, which needs not be the case! //This version handles that part. This is the log version. double gsl_ran_poisson_log_pdf (const unsigned int k, const double mu) { double p; if (mu==0) { return(log((double)(k == 0))); } else { double lf = lgammafn(k+1); /*gsl2R: gsl_sf_lnfact(k) */ p = k*log(mu) - lf - mu; return p; } } double gsl_sf_lngamma(double x) { return(lgammafn(x)); } double gsl_ran_beta_pdf (double x, double a, double b) { return(dbeta(x,a,b,0)); } /********************************************************************** * Log version of the Gamma pdf with mean a*b and variance a*b^2. * **********************************************************************/ double gsl_ran_gamma_log_pdf (const double x, const double a, const double b) { if (x < 0) { //This is problematic! return log((double)0) ; } else if (x == 0) { if (a == 1) return log(1/b) ; else return log((double)0) ; } else if (a == 1) { return -x/b - log(b) ; } else { double p; /*gsl2R: double lngamma = gsl_sf_lngamma (a);*/ double lngamma = lgammafn(a); p = (a-1)*log(x) - x/b - lngamma - a*log(b); return p; } } /* Seed random number generator */ //void gsl_rng_set(int r, long seed) { // set.seed(seed); //} surveillance/NAMESPACE0000644000175100001440000003565612611453135014223 0ustar hornikusers### Load C code useDynLib(surveillance) importFrom(Rcpp, evalCpp) # see vignette("Rcpp-package", package="Rcpp") ## although Rcpp is only used on C-level we need to "ensure that Rcpp is loaded ## so any dynamic linking to its code can be resolved. (There may be none, but ## there could be, now or in future.)" (B. Ripley, 2013-09-08) ############### ### IMPORTS ### ############### ### Import all packages listed as Depends ### (for utils and polyCub: only selected methods are imported) import(methods, grDevices, graphics, stats) ## sp classes & utilities (bbox, coordinates, dimensions, overlay, plot, ...) ## (we "Depend" on package sp since it defines essential data classes & methods) import(sp) ## we define own methods for generating xtable()'s, which we want to be useable import(xtable) ### required generics for own methods (that's why we "Depend" on these packages) ## importFrom(stats, coef, vcov, logLik, nobs, residuals, confint, AIC, extractAIC, ## profile, simulate, update, terms, add1, drop1, predict, as.stepfun) importFrom(utils, head, tail, toLatex) ### required functions from utils and stats ## importFrom(stats, pnorm, cov2cor, ks.test, formula, rnorm, runif, step, dist, ## update.formula, terms.formula, rpois, rnbinom, setNames, ## na.omit, as.formula, pnbinom, qnbinom, qnorm, sd, glm, optim, ## poisson, ppois, qpois, predict.glm, summary.glm, quasipoisson, ## glm.fit) ## and many more... importFrom(utils, packageVersion, modifyList, capture.output, read.table, data, setTxtProgressBar, txtProgressBar, sessionInfo, head.matrix, str, flush.console, write.table, as.roman, tail.matrix) ### sampling from mv.Gausian for OSAIC weights (twinSIR) and iafplot (twinstim) importFrom(MASS, mvrnorm) ### disProg-specific importFrom(MASS, glm.nb) # for algo.glrnb ##importFrom(msm, msm, hmmPois, viterbi.msm) # for algo.hmm() ##importFrom(spc, xcusum.arl, xcusum.crit) # for find.kh() ## (packages msm and spc are now "suggested", not imported) ### hhh4-specific importFrom(MASS, ginv, negative.binomial) importFrom(Matrix, Matrix) importClassesFrom(Matrix, ddiMatrix) importMethodsFrom(Matrix, coerce, diag, forceSymmetric, solve) ## sparse matrix methods provide a significant speed-up in marFisher ### twinSIR-specific # for use in computing OSAIC weights by simulation #importFrom(quadprog, solve.QP) # moved to "Suggests" ### twinstim-specific importFrom(spatstat, area.owin, as.im.function, coords.ppp, diameter, diameter.owin, disc, edges, inside.owin, intersect.owin, is.polygonal, as.polygonal, nncross.ppp, ppp, runifpoint, shift.owin, spatstat.options, vertices) importFrom(spatstat, marks) export(marks) # we define an epidataCS-method importFrom(spatstat, multiplicity) export(multiplicity) # we define a Spatial-method ## Note: we depend on instead of import package polyCub to avoid "::" references ## in some of the siaf.* generators which create functions in .GlobalEnv importFrom(polyCub, polyCub, .polyCub.iso, polyCub.SV, polyCub.midpoint, xylist) importMethodsFrom(polyCub, coerce) importFrom(MASS, kde2d, truehist) ############### ### EXPORTS ### ############### ### general exports export(surveillance.options, reset.surveillance.options) export(animate) # new S3-generic export(R0) # new S3-generic export(intensityplot) # new S3-generic export(fixef) # new S3-generic (same meaning as in package nlme) export(ranef) # new S3-generic (same meaning as in package nlme) export(formatPval) # yapf -- yet another p-value formatter export(anscombe.residuals) export(magic.dim, primeFactors, bestCombination) # similar to n2mfrow export(isoWeekYear) #extract ISO 8601 date export(formatDate) #ISO 8601 compatible %G and %V format( ) function. export(refvalIdxByDate) export(ks.plot.unif) export(checkResidualProcess) # for twinstim and twinSIR export(qlomax) # quantile function of the Lomax distribution export(plapply) # spatial utilities export(discpoly) #export(runifdisc) # CAVE: spatstat has similar function of same name export(unionSpatialPolygons) export(inside.gpc.poly) S3method(scale, gpc.poly) # redefined method for gpc.poly in spatial_stuff.R S3method(diameter, gpc.poly) export(nbOrder) export(poly2adjmat) export(polyAtBorder) export(layout.labels) export(layout.scalebar) # randomly break tied event times or coordinates export(untie) # new S3-generic #export(untie.default, untie.matrix, untie.epidataCS) S3method(untie, default) S3method(untie, matrix) S3method(untie, epidataCS) # intersection of a polygonal and a circular domain export(intersectPolyCircle) S3method(intersectPolyCircle, owin) S3method(intersectPolyCircle, SpatialPolygons) S3method(intersectPolyCircle, gpc.poly) # little helper: multiplicity of points S3method(multiplicity, Spatial) # list coefficients by model component export(coeflist) S3method(coeflist, default) S3method(coeflist, twinstim) S3method(coeflist, simEpidataCS) S3method(coeflist, hhh4) # Spatio-temporal cluster detection export(stcd) # tests for space-time interaction export(knox) S3method(print, knox) S3method(plot, knox) S3method(xtable, knox) S3method(toLatex, knox) export(stKtest) S3method(plot, stKtest) # PIT histograms export(pit) export(pit.default) S3method(pit, default) S3method(pit, oneStepAhead) S3method(pit, hhh4) S3method(plot, pit) # calibration test for Poisson or NegBin predictions export(calibrationTest) S3method(calibrationTest, default) export(calibrationTest.default) export(dss, logs, rps) # ses, nses ### sts(BP)-specific export(sts) exportClasses(sts, stsBP) export(linelist2sts) # conversion of "sts" objects S3method(as.ts, sts) export(as.xts.sts) # no registered S3-method since we only suggest "xts" # generics for sts class defined in sts.R exportMethods("[", plot) exportMethods(toLatex) exportMethods(dim, dimnames, epochInYear, year) exportMethods(aggregate) exportMethods(as.data.frame) # methods for accessing/replacing slots of an sts object (cf. AllGeneric.R) exportMethods(epoch,observed,alarms,upperbound,population,control,multinomialTS,neighbourhood) exportMethods("epoch<-","observed<-","alarms<-","upperbound<-","population<-","control<-","multinomialTS<-","neighbourhood<-") # methods for accessing/replacing slots of an stsNC object exportMethods(reportingTriangle,delayCDF,score) # plot variants export(stsplot_space) export(stsplot_time, stsplot_time1, stsplot_alarm) export(addFormattedXAxis, atChange, at2ndChange, atMedian) #for time axis formatting export(stsplot_spacetime) # old implementation of (animated) map S3method(animate, sts) # S3-method for an S4 class, see ?Methods # outbreak detection algorithms (sts-interfaces) export(wrap.algo, farrington, bayes, rki, cusum, glrpois, glrnb, outbreakP, boda) # FIXME: rogerson, hmm ?? export(earsC) export(farringtonFlexible) export(categoricalCUSUM, pairedbinCUSUM, pairedbinCUSUM.runlength) export(nowcast, backprojNP) export(bodaDelay) # sts creation functions export(sts_creation) export(sts_observation) ### disProg-specific export(create.disProg, readData, toFileDisProg) S3method(print, disProg) S3method(plot, disProg) S3method(plot, disProg.one) S3method(aggregate, disProg) export(sim.pointSource, sim.seasonalNoise) export(LRCUSUM.runlength, arlCusum, find.kh, findH, hValues, findK) export(compMatrix.writeTable, correct53to52, enlargeData) export(makePlot) export(estimateGLRNbHook) export(algo.compare, algo.quality, algo.summary) ## outbreak detection algorithms (old disProg implementations) export(algo.bayes, algo.bayes1, algo.bayes2, algo.bayes3, algo.bayesLatestTimepoint, algo.call, algo.cdc, algo.cdcLatestTimepoint, algo.cusum, algo.farrington, algo.glrnb, algo.glrpois, algo.hhh, algo.hhh.grid, algo.hmm, algo.outbreakP, algo.rki, algo.rki1, algo.rki2, algo.rki3, algo.rkiLatestTimepoint, algo.rogerson, algo.twins) ## auxiliary functions for algo.farrington (FIXME: why export these internals?) export(algo.farrington.assign.weights, algo.farrington.fitGLM, algo.farrington.fitGLM.fast, algo.farrington.fitGLM.populationOffset, algo.farrington.threshold) S3method(plot, atwins) S3method(plot, survRes) S3method(plot, survRes.one) S3method(print, algoQV) S3method(xtable, algoQV) export(test, testSim) # FIXME: remove these test functions? -> Demo? ### conversion between old disProg and new sts classes export(disProg2sts) export(sts2disProg) ### twinSIR-specific export(cox) export(as.epidata) S3method(as.epidata, data.frame) export(as.epidata.data.frame) S3method(as.epidata, default) export(as.epidata.default) export(intersperse) export(twinSIR) export(stateplot) export(simEpidata) S3method(update, epidata) S3method("[", epidata) S3method(print, epidata) S3method(summary, epidata) S3method(print, summary.epidata) S3method(plot, epidata) S3method(animate, epidata) S3method(plot, summary.epidata) S3method(animate, summary.epidata) S3method(print, twinSIR) S3method(summary, twinSIR) S3method(print, summary.twinSIR) S3method(plot, twinSIR) S3method(intensityplot, twinSIR) export(intensityplot.twinSIR) # for convenience S3method(profile, twinSIR) S3method(plot, profile.twinSIR) S3method(vcov, twinSIR) S3method(logLik, twinSIR) S3method(AIC, twinSIR) S3method(extractAIC, twinSIR) S3method(simulate, twinSIR) export(simulate.twinSIR) # for convenience S3method(residuals, twinSIR) S3method(intensityplot, simEpidata) export(intensityplot.simEpidata) # for convenience ### twinstim-specific export(as.epidataCS) export(glm_epidataCS) export(twinstim) export(simEpidataCS) export(siaf, siaf.constant, siaf.step, siaf.gaussian, siaf.powerlaw, siaf.powerlawL, siaf.student) export(tiaf, tiaf.constant, tiaf.step, tiaf.exponential) export(epidataCS2sts) export(epitest) S3method(coef, epitest) S3method(plot, epitest) S3method(nobs, epidataCS) S3method("[", epidataCS) S3method(update, epidataCS) export(update.epidataCS) # for convenience export(permute.epidataCS) S3method(head, epidataCS) S3method(tail, epidataCS) S3method(print, epidataCS) S3method(subset, epidataCS) S3method(summary, epidataCS) S3method(print, summary.epidataCS) S3method(as.stepfun, epidataCS) S3method(animate, epidataCS) export(animate.epidataCS) # for convenience S3method(marks, epidataCS) export(marks.epidataCS) # for convenience since its a foreign generic S3method(plot, epidataCS) export(epidataCSplot_time, epidataCSplot_space) S3method(as.epidata, epidataCS) export(as.epidata.epidataCS) # for convenience S3method(print, twinstim) S3method(summary, twinstim) export(summary.twinstim) # for convenience S3method(print, summary.twinstim) S3method(toLatex, summary.twinstim) S3method(xtable, summary.twinstim) export(xtable.summary.twinstim) # for xtable.twinstim S3method(xtable, twinstim) S3method(plot, twinstim) export(iafplot) export(intensity.twinstim) S3method(intensityplot, twinstim) export(intensityplot.twinstim) # for convenience S3method(profile, twinstim) S3method(coef, summary.twinstim) S3method(vcov, twinstim) S3method(vcov, summary.twinstim) S3method(logLik, twinstim) S3method(extractAIC, twinstim) S3method(nobs, twinstim) S3method(simulate, twinstim) export(simulate.twinstim) # for convenience S3method(R0, twinstim) export(simpleR0) S3method(residuals, twinstim) S3method(update, twinstim) export(update.twinstim) # for convenience S3method(terms, twinstim) export(stepComponent) S3method(terms, twinstim_stependemic) S3method(terms, twinstim_stepepidemic) S3method(update, twinstim_stependemic) S3method(update, twinstim_stepepidemic) S3method(add1, twinstim) S3method(add1, twinstim_stependemic) S3method(add1, twinstim_stepepidemic) S3method(drop1, twinstim) S3method(drop1, twinstim_stependemic) S3method(drop1, twinstim_stepepidemic) S3method(residuals, simEpidataCS) S3method(R0, simEpidataCS) S3method(intensityplot, simEpidataCS) export(intensityplot.simEpidataCS) # for convenience S3method(print, simEpidataCSlist) S3method("[[", simEpidataCSlist) S3method(plot, simEpidataCSlist) ### algo.hhh-specific export(algo.hhh) export(algo.hhh.grid) export(create.grid) S3method(print, ah) S3method(coef, ah) S3method(predict, ah) S3method(residuals, ah) S3method(logLik, ah) S3method(print, ahg) S3method(coef, ahg) S3method(predict, ahg) S3method(residuals, ahg) S3method(logLik, ahg) export(simHHH, simHHH.default) S3method(simHHH, default) S3method(simHHH, ah) ### hhh4-specific ## main functions export(hhh4) export(addSeason2formula) export(zetaweights, W_powerlaw) export(W_np) export(oneStepAhead) export(scores) export(permutationTest) ## S3-methods S3method(print, hhh4) S3method(summary, hhh4) S3method(print, summary.hhh4) S3method(nobs, hhh4) S3method(logLik, hhh4) S3method(formula, hhh4) S3method(terms, hhh4) S3method(coef, hhh4) S3method(vcov, hhh4) S3method(fixef, hhh4) S3method(ranef, hhh4) S3method(confint, hhh4) S3method(residuals, hhh4) S3method(predict, hhh4) S3method(update, hhh4) S3method(all.equal, hhh4) S3method(simulate, hhh4) S3method(plot, hhh4) export(plotHHH4_fitted, plotHHH4_fitted1, plotHHH4_season, getMaxEV_season, plotHHH4_maxEV, getMaxEV, plotHHH4_maps, plotHHH4_ri, plotHHH4_neweights) #S3method(scores, default) # rather an internal auxiliary function, undocumented S3method(scores, hhh4) S3method(scores, oneStepAhead) S3method(calibrationTest, hhh4) S3method(calibrationTest, oneStepAhead) ## methods for simulations from hhh4 fits S3method(aggregate, hhh4sims) S3method(plot, hhh4sims) export(as.hhh4simslist) S3method(as.hhh4simslist, hhh4sims) S3method(as.hhh4simslist, list) S3method(as.hhh4simslist, hhh4simslist) S3method("[", hhh4simslist) S3method("[[", hhh4simslist) S3method(aggregate, hhh4simslist) S3method(plot, hhh4simslist) export(plotHHH4sims_size) export(plotHHH4sims_time) S3method(scores, hhh4sims) S3method(scores, hhh4simslist) ## backwards-compatibility for old class name "ah4" S3method(print, ah4) S3method(summary, ah4) S3method(print, summary.ah4) S3method(logLik, ah4) S3method(terms, ah4) S3method(coef, ah4) S3method(fixef, ah4) S3method(ranef, ah4) S3method(confint, ah4) S3method(predict, ah4) S3method(update, ah4) S3method(simulate, ah4) S3method(plot, ah4) surveillance/demo/0000755000175100001440000000000012375615513013720 5ustar hornikuserssurveillance/demo/cost.R0000644000175100001440000002063112307271306015006 0ustar hornikusers################################################### ### chunk number 1: ################################################### library(surveillance) options(width=70) options("prompt"="R> ") set.seed(1234) opendevice <- function(horizontal=TRUE,width=7,height=4,...) { #Do it for postscript instead -- who uses postscript these days?? args <- list(...) args$file <- sub(".pdf",".eps",args$file) args$width <- width args$height <- height args$horizontal <- FALSE do.call("postscript",args) par(mar=c(4,4,2,2)) } ################################################### ### chunk number 2: K1 ################################################### data("ha") plot(aggregate(ha),main="Hepatitis A in Berlin 2001-2006") ################################################### ### chunk number 3: ################################################### cat("Info: I need a writable figs/ directory in getwd()\n") opendevice(file="figs/002.pdf") data("ha") plot(aggregate(ha),main="Hepatitis A in Berlin 2001-2006") dev.off() ################################################### ### chunk number 4: ################################################### sps <- sim.pointSource(p = 0.99, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) plot(sps,xaxis.years=FALSE) ################################################### ### chunk number 5: ################################################### opendevice(file="figs/003.pdf") plot(sps,xaxis.years=FALSE,legend.opts=list(x="topleft")) dev.off() ################################################### ### chunk number 6: HAB662 eval=FALSE ################################################### ## ha.b662 <- algo.bayes(aggregate(ha), control = list(range = 209:290, b = 2, w = 6, alpha = 0.01)) ## plot(ha.b662, firstweek=1, startyear = 2005) ################################################### ### chunk number 7: ################################################### ha.b662 <- algo.bayes(aggregate(ha), control = list(range = 209:290, b = 2, w = 6, alpha = 0.01)) plot(ha.b662, firstweek=1, startyear = 2005) opendevice(file="figs/hab662.pdf") plot(ha.b662, firstweek=1, startyear = 2005,legend.opts=list(x="topleft",horiz=TRUE)) dev.off() ################################################### ### chunk number 8: FACDC eval=FALSE ################################################### ## cntrl <- list(range = 300:400, m = 1, w = 3, b = 5, alpha = 0.01) ## sps.cdc <- algo.cdc(sps, control = cntrl) ## sps.farrington <- algo.farrington(sps, control = cntrl) ################################################### ### chunk number 9: ################################################### cntrl <- list(range = 300:400, m = 1, w = 3, b = 5, alpha = 0.01) sps.cdc <- algo.cdc(sps, control = cntrl) sps.farrington <- algo.farrington(sps, control = cntrl) ################################################### ### chunk number 10: ################################################### opendevice(file="figs/farringtoncdc.pdf") par(mfcol = c(1, 2),cex=0.8) plot(sps.cdc, legend = NULL, xaxis.years=FALSE) plot(sps.farrington, legend = NULL, xaxis.years=FALSE) dev.off() ################################################### ### chunk number 11: CUSUM eval=FALSE ################################################### ## kh <- find.kh(ARLa=500,ARLr=7) ## ha.cusum <- algo.cusum(aggregate(ha),control=list(k=kh$k,h=kh$h,m="glm",trans="rossi",range=209:290)) ################################################### ### chunk number 12: ################################################### opendevice(file="figs/hacusum.pdf") kh <- find.kh(ARLa=500,ARLr=7) ha.cusum <- algo.cusum(aggregate(ha),control=list(k=kh$k,h=kh$h,m="glm",trans="rossi",range=209:290)) plot(ha.cusum,startyear=2005,legend.opts=list(x=30,y=5.5)) dev.off() #Extract coefficients beta <- coef(ha.cusum$control$m.glm) ################################################### ### chunk number 13: ################################################### print(algo.quality(ha.b662)) ################################################### ### chunk number 14: ################################################### #This chunk contains stuff the reader should not see, but which is necessary #for the visual block to work. control = list( list(funcName = "rki1"), list(funcName = "rki2"), list(funcName = "rki3"), list(funcName = "bayes1"), list(funcName = "bayes2"), list(funcName = "bayes3"), # list(funcName = "cdc",alpha=0.05,b=2,m=1), # list(funcName = "farrington",alpha=0.05,b=0,w=6), list(funcName = "farrington",alpha=0.05,b=1,w=6), list(funcName = "farrington",alpha=0.05,b=2,w=4)) control <- lapply(control,function(ctrl) {ctrl$range <- 300:400;return(ctrl)}) #Update range in each - cyclic continuation data("k1") range = (2*4*52) + 1:length(k1$observed) aparv.control <- lapply(control,function(cntrl) { cntrl$range=range;return(cntrl)}) #Outbreaks outbrks <- c("m1", "m2", "m3", "m4", "m5", "q1_nrwh", "q2", "s1", "s2", "s3", "k1", "n1", "n2", "h1_nrwrp") #Load and enlarge data. outbrks <- lapply(outbrks,function(name) { #Load with data eval(substitute(data(name),list(name=name))) enlargeData(get(name),range=1:(4*52),times=2) }) #Apply function to one surv.one <- function(outbrk) { algo.compare(algo.call(outbrk,control=aparv.control)) } ################################################### ### chunk number 15: eval=FALSE ################################################### ## #Apply function to one ## surv.one <- function(outbrk) { ## algo.compare(algo.call(outbrk,control=aparv.control)) ## } ## ## algo.summary(lapply(outbrks, surv.one)) ## ################################################### ### chunk number 16: ALGOSUMMARY ################################################### res <- algo.summary(lapply(outbrks,surv.one)) ################################################### ### chunk number 17: ################################################### print(res,digits=3) ################################################### ### chunk number 18: eval=FALSE ################################################### ## setClass( "sts", representation(week = "numeric", ## freq = "numeric", ## start = "numeric", ## observed = "matrix", ## state = "matrix", ## alarm = "matrix", ## upperbound = "matrix", ## neighbourhood= "matrix", ## populationFrac= "matrix", ## map = "SpatialPolygonsDataFrame", ## control = "list")) ## ################################################### ### chunk number 19: HA eval=FALSE ################################################### ## shp <- system.file("shapes/berlin.shp",package="surveillance") ## ha <- disProg2sts(ha, map=readShapePoly(shp,IDvar="SNAME")) ## plot(ha,type=observed ~ 1 | unit) ## ################################################### ### chunk number 20: ################################################### opendevice(file="figs/ha-1unit.pdf",width=7,height=7) par(mar=c(0,0,0,0)) shp <- system.file("shapes/berlin.shp",package="surveillance") ha <- disProg2sts(ha, map=readShapePoly(shp,IDvar="SNAME")) plot(ha,type=observed ~ 1 | unit) dev.off() ################################################### ### chunk number 21: HA:MAP eval=FALSE ################################################### ## ha4 <- aggregate(ha[,c("pank","mitt","frkr","scho","chwi","neuk")],nfreq=13) ## ha4.cusum <- cusum(ha4,control=list(k=1.5,h=1.75,m="glm",trans="rossi",range=52:73)) ## #ha4.b332 <- bayes(ha4,control=list(range=52:73,b=2,w=3,alpha=0.01/6)) ## plot(ha4.cusum,type=observed ~ time | unit) ################################################### ### chunk number 22: ################################################### opendevice(file="figs/ha-timeunit.pdf",width=7,height=5) ha4 <- aggregate(ha[,c("pank","mitt","frkr","scho","chwi","neuk")],nfreq=13) ha4.cusum <- cusum(ha4,control=list(k=1.5,h=1.75,m="glm",trans="rossi",range=52:73)) #ha4.b332 <- bayes(ha4,control=list(range=52:73,b=2,w=3,alpha=0.01/6)) plot(ha4.cusum,type=observed ~ time | unit) dev.off() surveillance/demo/biosurvbook.R0000644000175100001440000002174312307271306016407 0ustar hornikusers###################################################################### # Demo of the code used in the book chapter # Hoehle, M. and A. Mazick, A. (2010) Aberration detection in R # illustrated by Danish mortality monitoring, Book chapter in # T. Kass-Hout and X. Zhang (Eds.) Biosurveillance: A Health Protection # Priority, CRC Press. # # The data read by csv files in the chapter are found as data("momo") # in the package. Courtesy to Statens Serum Institut for making # the mortality data public. # # Author: Michael Hoehle # Date: 13 Oct 2009 ###################################################################### #Load surveillance package library("surveillance") #Load Danish mortality data (see book chapter for CSV reading") data("momo") #Create a plot of the data as in Figure. 1 of the book chapter. #Note: The year is determined by the ISO week, not the date plot(momo[year(momo)>=2000,],ylab="No. of deaths",par.list=list(mar=c(4,2.2,2,1),cex.axis=1.5), type=observed ~ time | unit, col=c(gray(0.3),NA,NA),xaxis.tickFreq=list("%G"=atChange),xaxis.labelFormat="%G",xlab="time (weeks)") par(mfrow=c(1,2),mar=c(4,4,2,1)) plot(momo,ylab="No. of deaths",xlab="time (weeks)",legend.opts=NULL, type=observed ~ time,col=c(gray(0.3),NA,NA),xaxis.tickFreq=list("%G"=atChange,"%m"=atChange),xaxis.labelFreq=list("%G"=atChange),xaxis.labelFormat="%G") plot(momo[,"[0,1)"],xlab="time (weeks)",ylab="No. of deaths",legend.opts=NULL,col=c(gray(0.3),NA,NA),xaxis.tickFreq=list("%G"=atChange,"%m"=atChange),xaxis.labelFreq=list("%G"=atChange),xaxis.labelFormat="%G") par(mfrow=c(1,1)) #Monitoring starts in week 40, 2007 phase2 <- which(epoch(momo) >= "2007-10-01") s.far <- farrington(momo[,"[0,1)"], control=list(range=phase2,alpha=0.01,b=5,w=4,powertrans="none")) cntrlFar <- s.far@control upper.ptnone <-s.far@upperbound cntrlFar$powertrans <- "2/3" upper.pt23 <- farrington(momo[,"[0,1)"],control=cntrlFar)@upperbound cntrlFar$powertrans <- "1/2" upper.pt12 <- farrington(momo[,"[0,1)"],control=cntrlFar)@upperbound ## plot(s.far,ylab="No. of deaths",xlab="time (weeks)",main="") ymax <- max(s.far@upperbound, upper.pt12, upper.pt23)*1.2 #par(mar=c(4,4,1,1)) plot(s.far,legend.opts=NULL,ylab="No. of deaths",main="",xlab="time (weeks)",ylim=c(0,ymax),col=c("darkgray",NA,gray(0.3)),lty=c(1,1,1),lwd=c(1,1,2),dx.upperbound=0,alarm.symbol=list(pch=24,col=1, cex=1)) lines(c(1:nrow(s.far)-0.5,nrow(s.far)+0.5),c(upper.pt12,upper.pt12[nrow(s.far)]),type="s",col="darkgray",lwd=2,lty=2) lines(c(1:nrow(s.far)-0.5,nrow(s.far)+0.5),c(upper.pt23,upper.pt23[nrow(s.far)]),type="s",col=gray(0.1),lwd=2,lty=3) legend(x="topright",c("none","1/2","2/3"),col=c(gray(0.3),"darkgray",gray(0.1)),lwd=2,lty=1:3,horiz=TRUE) #legend(x="topright",c("none","1/2","2/3",expression(hat(mu)[t[0]])),col=c(gray(0.3),"darkgray",gray(0.1),1),lwd=c(2,2,2,3),lty=c(1:3,1),horiz=TRUE) #Median of predictive distribution lines(c(1:nrow(s.far)-0.5,nrow(s.far)+0.5),c(s.far@control$pd[,2],s.far@control$pd[nrow(s.far),2]),type="s",col=1,lwd=3) text(nrow(s.far)+2,tail(observed(s.far),n=1),expression(hat(mu)[t[0]])) alarmDates <- epoch(s.far[alarms(s.far) == 1,]) par(mar=c(4,4,2,2)) surv2 <- s.far surv2@observed <- 0*surv2@observed surv2@upperbound <- 0*surv2@observed plot(surv2,ylim=c(-0.05,1),ylab="Quantile",xlab="time (weeks)",legend.opts=NULL,main="",dx.upperbound=0,alarm.symbol=list(pch=24,col=1, cex=1)) lines(surv2@control$pd[,1], type="S") lines( c(1,nrow(surv2)+0.), rep( 1-s.far@control$alpha/2, 2),lty=2,col=1) s.far.all <- farrington(momo, control=list(range=phase2,alpha=0.01,b=5,w=4)) ## s.far.all <- farrington(momo, control=list(range=phase2,alpha=0.01,b=5,w=4)) ## plot(s.far.all,type = alarm ~ time,xlab="time (weeks)") par(mar=c(4,4,1,1)) plot(s.far.all,type = alarm ~ time,xlab="time (weeks)",main="",alarm.symbol=list(pch=24,col=1, cex=1.5),lvl=rep(1,nrow(s.far.all))) ####################################################################### #Negative binomial GLM modelling using the population size as covariate ####################################################################### phase1 <- which(year(momo) == 2002 & epochInYear(momo) == 40):(phase2[1]-1) momo.df <- as.data.frame(momo) m <- MASS::glm.nb( `observed.[75,85)` ~ 1 + epoch + sin(2*pi*epochInPeriod) + cos(2*pi*epochInPeriod) + `population.[75,85)`, data=momo.df[phase1,]) mu0 <- predict(m, newdata=momo.df[phase2,],type="response") ci <- confint(m) kappa <- 1.2 s.nb <- glrnb(momo[,"[75,85)"], control=list(range=phase2,alpha=1/m$theta,mu0=mu0,c.ARL=4.75,theta=log(kappa),ret="cases")) alarmDates <- epoch(s.nb[alarms(s.nb) == 1,]) plot(s.nb,dx.upperbound=0,legend.opts=NULL,ylab="No. of deaths",main="",ylim=c(0,max(observed(s.nb))*1.1),xlab="time (weeks)",col=c("darkgray",NA,1),lwd=c(1,1,2),lty=c(1,1,1),alarm.symbol=list(pch=24,col=1, cex=1)) lines(mu0,lwd=2,col=1,lty=2) lines(exp(log(mu0) + log(kappa)),col=1,lty=3,lwd=3) legend(x=20,y=100,c(expression(mu[0,t]),expression(mu[1,t]),"NNBA"),col=c(1,1,1),lty=c(2,3,1),horiz=TRUE,bg="white",lwd=c(2,3,2)) set.seed(123) ###################################################################### # P(N_c <= 51|\tau=\infty) computation ###################################################################### #Number of simulations to perform. In book chapter this number is #1000, but for the sake of a speedy illustration this is drastically #reduced in this demonstration nSims <- 10 #1000 ###################################################################### # Simulate one run-length by first generating data from the negative # binomial model and then applying the LR NegBin CUSUM to it ###################################################################### simone.TAleq65 <- function(sts, g) { observed(sts)[phase2,] <- rnbinom(length(mu0), mu=mu0, size=m$theta) one <- glrnb(sts, control=modifyList(control(s.nb), list(c.ARL=g))) return(any(alarms(one))) } #Determine run-length using 1000 Monte Carlo samples g.grid <- seq(1,8,by=0.5) pMC <- sapply(g.grid, function(g) { mean(replicate(nSims, simone.TAleq65(momo[,"[75,85)"],g))) }) #Density for comparison in the negative binomial distribution dY <- function(y,mu,log=FALSE, alpha, ...) { dnbinom(y, mu=mu, size=1/alpha, log=log) } #nMax <- max(which( dY(0:1e4, mu=max(mu0),alpha=1/m$theta) >= 1e-20)) - 1 pMarkovChain <- sapply( g.grid, function(g) { TA <- LRCUSUM.runlength( mu=t(mu0), mu0=t(mu0), mu1=kappa*t(mu0), h=g, dfun = dY, n=rep(600,length(mu0)), alpha=1/m$theta) return(tail(TA$cdf,n=1)) }) par(mar=c(4,4,2,2)) matplot(g.grid, cbind(pMC,pMarkovChain),type="l",ylab=expression(P(T[A] <= 65 * "|" * tau * "=" * infinity)),xlab="g",col=1) prob <- 0.1 lines(range(g.grid),rep(prob,2),lty=3,lwd=2) axis(2,at=prob,las=1,cex.axis=0.7) legend(x="topright",c("Monte Carlo","Markov chain"), lty=1:2,col=1) m.01 <- MASS::glm.nb( `observed.[0,1)` ~ 1 + epoch + `population.[0,1)`+ sin(2*pi*epochInPeriod) + cos(2*pi*epochInPeriod), data=momo.df[phase1,]) mu0 <- predict(m.01, newdata=momo.df[phase2,],type="response") #Correct for past outbreaks #omega <- algo.farrington.assign.weights(residuals(m.01, type="deviance")) #m.01.refit <- glm.nb( `observed.[0,1)` ~ 1 + epoch + `population.[0,1)`+ sin(2*pi*epochInPeriod) + cos(2*pi*epochInPeriod), data=momo.df[phase1,],weights=omega) #mu0.refit <- predict(m.01.refit, newdata=momo.df[phase2,],type="response") #Results from the previous Farrington method mu0.far <- control(s.far)$pd[,2] ###################################################################### # Simulate one run-length by first generating data from the negative # binomial model and then applying the LR NegBin CUSUM to it ###################################################################### simone.TAleq65.far <- function(sts, alpha, mu0, size) { observed(sts)[phase2,] <- rnbinom(length(mu0), mu=mu0, size=size) res <- farrington(sts, control=modifyList(control(s.far), list(alpha=alpha))) return(any(as.logical(alarms(res)))) } #Determine run-length using 1000 Monte Carlo samples res.far <- replicate(nSims, simone.TAleq65.far(momo[,"[0,1)"],alpha=0.01,mu0=mu0.far,size=m.01$theta)) (pTA65.far <- mean(res.far)) #Run CUSUM kappa <- 1.2 s.nb.01 <- glrnb(momo[,"[0,1)"], control=list(range=phase2,alpha=1/m.01$theta,mu0=mu0.far,c.ARL=2.1,theta=log(kappa),ret="cases")) alarmDates <- epoch(s.nb.01[alarms(s.nb.01) == 1,]) mu1 <- kappa*mu0.far #Show as usual plot(s.nb.01,dx.upperbound=0,legend.opts=NULL,ylab="No. of deaths",main="",xlab="time (weeks)",col=c("darkgray",NA,1),lwd=c(1,1,1),lty=c(1,1,1),ylim=c(0,max(s.nb.01@upperbound))*1.15,alarm.symbol=list(pch=24,col=1, cex=1)) lines(1:(nrow(s.far)+1)-0.5, c(mu0.far,tail(mu0.far,n=1)),lwd=3,col=1,lty=1,type="s") lines(1:(nrow(s.far)+1)-0.5, c(mu1,tail(mu1,n=1)),col=1,lty=3,lwd=3,type="s") legend(x="topright",c(expression(mu[0,t]),expression(mu[1,t]),"NNBA"),col=c(1,1,1),lty=c(1,3,1),horiz=TRUE,bg="white",lwd=c(3,3,1)) ## demo(biosurvbook) surveillance/demo/00Index0000755000175100001440000000036411731650465015060 0ustar hornikuserscost Run all commands in the Computational Statistics article. Requires a directory "figs" in the current working directory. biosurvbook Run all commands from the book chapter on Danish mortality monitoring using the surveillance package. surveillance/data/0000755000175100001440000000000012527561477013715 5ustar hornikuserssurveillance/data/m4.RData0000644000175100001440000000037712376634041015147 0ustar hornikusers‹ r‰0âŠàb```b`bad`b2Y˜€#ƒ'H<ׄY$ ļ@|‘xÀH„<#’:FâÈꙡY3&@7]ŽÍ ¯%˜ˆEX ˆ-€ØÊ–„by bv¨ZN4·²BÍb@rŒî6r¥ú‘Í@wÛ( àc -/‚ö¨C‚Q0 FÁ  úˆÑÁ …Ïä0ßÌA”c(­CÖ¼ÄÜÔb C€Ü@ rä'§•¥¦À—$–¤B9,iE©…HE%èF&ç$ÃŒµQ@‚ì)™ÅEùé@æ?¤ªÄŸ surveillance/data/foodata.RData0000644000175100001440000006413412376634041016245 0ustar hornikusersý7zXZi"Þ6!ÏXÌöÒ h ])TW"änRÊŸãXdGŸã>@j½õtA©°”'ßÅ`fÓÏDœ› ç3-”­bfžìl]"xÓ¨€Zvæ®ßLˆ}Upç⇞ªkmV@ƺÎWIUÖùÚíå…Å¥™^*5!¿¸9\ÚÞêÔµê„Ê’oÂkíÿÁdP=:¥«‚…™ÙXW$%3_›Gõ£&9Dž¿œC<=YøÛÃþ,èµijËdð´°"Z£e]KÓÙ/ÖŠ–ŽÎcI} !¢«ü…}¢ÁÔø“®€ÉÕ³¦¾NsÒGv Õx]~õCÓ{w4VÆ#~á›N½Ìa ¼ŠÜæ ¿ÝÿxdšWRaùÈùè’ÊÔ]êåÏ_»³žjÙQ”îøëøÄÓsáÚXÔ<>g(ŠÄi›â!D¼(FýŠ8 £ûÿ T¢‡H£ÂAA Ãàä˜Qßà©ð1ð{€àEJŒ¾3Û®=æ¯ Åh>AÊ vü Ó_ W JY TìâQ ÛêŠè=+6ì\ž ÌÞ¥C»/)p„ˆÂîÜ®m”©x7ž[zòàÝ}ÚA©¡¼ âã~ÃÝYñ‘gulÝ‘:~³Q+8ˆShŒzàñ݆7ÚøÛ/ ¿›…C¨QA4¤;íÐÀÊóõ«™n`xÜ‘9„)<ï/+§Å]¯!`ÿÅV >?‰ê…¢iío†iº"ãÚX¿†û‰LœYÄq7mÊø!x×IÁ› |¨ÒÅË"T÷Ûlø¿Â!ŸÕ9oÞêÝz £ ëºN̸~a´ºÐpPš…ud®gEÁ˜cn§9[*~X%úúævŽÝð8xW(èï~-Dz5•ÊuŒÞˆÝJñ¥¼÷C ,mTWÉwÛÊÅBq «Ì 7¶öA9]3ÍÌkšØ5‹‘šsõýÃMã¶t˜ŽIÇ1 î»èˆ™©³.NôÒEfyqˆøÞšÎ¶œ#›‡þÚ‡‰ «x(ØšvÔ寮KoTÿp ¢ä‚˾L]®K¶¿.ñf F¿‘(Òœíß›'Ål¿my†|ÇÕij¼BñZí¸8úÒDöH¼“Î}úßxÄpdƒŠ á\YZ/ÄRZöTc±NÑUü];Læ.´HÇâ|œÞ+Ez–m–“Pn À Ò°UתŒÚ/Š•_5ÇÕ·« ‹Ý5.iÓ„y¥ý‰˜u~Røaq“oy¬ˆhy{7-·M¡tµE ¶‰˜s«lhMÓ²Åð6 ‚¥œÜ.ö%v¶äÌ‚3¯^>¦êô”æwîöÄ­ë7÷¼Êç+#›A2ÿš¸ŸuŠT°(k²e7QåïDg¾õOÌ´)5*ZîÞpQ3ÕóáͧaªÓ«L`„%ÞÛmFU¹€”µ2|ozGɯ±ƒ³â8ú&pºY€ñ.;”w‚]#—‘žÉ—+z¸$DM@mµTD7Þi —á)ÙY ǥҺ຺d30?Vh˜ÍêR”Ô­8*ÀS›¸ ºZŠ¥dmýTãb2¤uÏàÝínýè|– ¯KìL}ö¹-èƒmå› ¸æå¦œOý Ì®ôgª#uVäÊI%EÎëâ43®Ã m±žbéëÚÁ×m¤“®ÐŠš»í!ÂEÐÌ6š¥D¥Jd$Šsp´¢âŽÃ¦h»×èn¨J¦¾%°}|kXU±1ð­.é †…®>É¢ØôbÇ3- YØGPU=Ÿê%ÂZ]°ÉZ>´µÿ´½ëÁ£bcWh`²‚÷1L·ðÏÉÓ¡Œp{@Ž™=½$¾—`'Ë«mdB3’´‰=…k²evØVbmÃQxƒTK+µjñŠ Ê°Í6~í¤Òsmyè%ê óŠdI±—Í¢Gʉ÷l Cþ À0¥; °¡öñu„M[ÜÐ¥Ñ&¤.ºQ¹ÄÇ%I@H) ´ƒG™êw“AŒ]ùKýׂ‚EŸ)ç¨öPØ„s-Q}k—>—CTWï DY‘ÊËSt½¼c˜<{Êu©ØtB¾ô,+p\§¬»Û¸•Ÿ••r<9RýGÖNyäžÎy$éxše欘×ճø2ûRøvrØ€68¼†sÈ_{Çe(»q[X½7¹[­«þs)’öƒ)«œÐ¬O.Í—ãq¤Øöƒfƒ³hÒ£ha0íym™• ðÏÆvån>¥ºÐý¡ ¸LŸšÜSHT®y†¹ô`2'»?Ž„µkPó‰MÚ” 4Š  ä\RÅ~æ¼/~•ÏÆƒN₆:ZD5,ÜÀ-HéÂþXB쩚µ<ÙH¾®AiæI½½Òêfeð7W³M‘„·”³‘(°l‚ãùœ—Nº & bˆezûjÊÅàÇúf«o‚ôüŒ¾œ?ñFR;v\7ª[Ÿ@T„ógå6 Û@ò@žEÛCâtÜêŸÂù«7g5îvæJó€ á‹°Â~a©¼9¨DûE=QC¡²°"ãM/ý>ѽ¤”LG0Öé’kûäf.${dÐÔ7 +v °ç€påV!^ò‡*þ|â^XÎý+óK”Ú#ç‘QèÞÙÉk{âVˆBÑ&³Ï¹={±TH3pþÜUCÿ¦Â¬S]ÀmÒóuÅSù’ƒ•3û,˜ÅK;Ÿº"=n7Q[%dp|ÏÈÒì¶0Áb¦+ûÀ…ɇ°<9tÙξoÖv ×zŒ*hö4|_p :¢Í ¥‡A¶üÎ"hð@·S“E‡£ç=ém í‡MQ&’­ñ6ÎÝ´†W­ý’¥¥zì2ʬ<Î5y7£î.ßy¿fÎL·J,GI¶VM»’¢®C¨pAL¼éÕg-&T=£W¥:¼VÑÓ§ m?ì¿4PÔŽ´zR–vj.KE³*2ð€¼‹2oA„¦ˆ«çW¦˜4bMaºµZ[iëTˆ ¨¼QëaÄÑŒ½öÇàœ×ÃcÜçóióåŠ0ú1FkŽ&÷?æ¬,o0ާçkVÕkåÎ)"#F™$ª±{ˆ‹/è%䑚#Ì,ƒ©7a håz숊Žý˜{úƒh¶ןÛsÿ=ÉÕMþä¡„ïRrÌù¤,¦º7ö'Æ”_â[ÌíaM5HÕ®úcÇþrÛ?oªðô¿…! DÒ×%ÍÓª[‹1Û¾^ê ¡Ç |X)quÖ«³²A>ãã|–‹E;ÜKÖwˆ<‚ŒámQk²?Ä 9bçr° ¦Þ¡åé›ìßÙ쀗&Øk»iSmì'ýÓE=_ì½Ö“ìoÔoÞÿn䣳nþÎl&Ûd<¹0’*ãý§›1*Ïç©~iæfºLÁÖ‘u9Ñ"²Wc ´c2¢=çÕÛ¹’*ÃJ[îN:¡“rñ xg¸‹ŒòŠža˜±D¯’Iœ™…yë+kº¼‘¨1mŠÌTF­iÓ‡öŠf]âk7ãoÇ Þ‚¶ý‡J1dˆ9ȹV6U'ß»çr“L›ÓIo^ýQAî(+a…Æ -ï«*myl@ŽÞG3÷7çð©ÀHLÉ/Šú7©üÚ·w­Q¸øÇðCx&“3™÷'::f|VnÆþ±i˜ÿ3MUû^"3–ͽšåÜ`Ì’©Ay•ypº•¥w¡-R…3 Apw#o á‰L4›nÏa§P‚áp>HeË HÁ_+bêFÁ"||’œ†b¨#’†Ð`ù ‰ŠAs¼®Úë~jo•YöN˜±ÜR£cOâ .ÈlÚÀ³7Żٸö»È|U—Û&Ì¿àñUÊS†âø¼àÿRb7c-WR¿ç]ÑÕ†_(0Føxåy—žÀTX PS§òÝÑ—ZÄ]tÝÏbApŠº¾÷‡.WeÒ;dù«ÈÄeÂ*ûXeÆW˜'öÌÆÈéÆlQžÃ–ë ¯a_i¨ˆ/ò!œ2•Ä„£O€ZÏôà‚¤R1Í»ZÓþ~<Ø%e½OŒq7¤£óÕ‰N<ùû†ë¬Ò R†Ý:.Í&ì6Flõ.¨mýMöqñ,œ¦†0qÊû_• õ~7•NUDg†…t|VÒ^xì—ƒ³­xŸÇ%i>׈­°&4ÛXÌûÃDF¦é2œŠiO^ɂɂù˜Ø &ÍÞ”¦žMGFyÒ#¶µe@°—¹f–Q#ÎEþ×ÁÜÁÁS¼¶ƒ— ËGŠP®Îµ˜)  ²êúÓ’¹JJó© 5H‚- PäÁE‚YÈV°¦“óê&«Ñ¹œMN&ÎÏ‹Ž´À’VÏœÿGÕ3ï…U‘“ )E›IäL--¸çˆäèï*1Óa¯e¥­6;0Â"ï&ôO»aÎ%òLÑé KÀPþœûÚßÝâCÄ«M]ÏÆd©pqt®ŸÕÜÔÒ pÔü"ÿÊÞ2\©þ^dR¾Á$S¨¤“•ü¬dTÖç¿n\ü<ø˜ûC±/x—ÎPu-S¡NíÔP7÷쵪>OÿÆå& ïßxÚ †OÐ’çCD¬†ÝT<6ëýCÂ,!Wól–ϱ˜&r%^}çþy(Îõ!í?5ÀëÎǵn’Câ«™SX€oïlGH.%s•z¨Á…A”¸ÉpáŸøÀGS8ñ“œº)š|´U5¶_¦ àöpa ý¤ñ˜½jëð;NÒ]”LgçH"ÉÖ„·—v¬.ºxÈgJ|øØ{,&Gòjý{ãò œiŠí½¹åÔ;m¥æ”ªGÁGó"–B“cE5ßpÒ9ÕNorS¬t óé½B'N¬ÏóVB4AˆLžü‹HX£ÂäR4h4ÙlEàñW:›Z5€x2XIã1½wÄät#ýFQf`¿C=N`ß AçchiŦXQ[‚Bø#ß›8²îò‡¥@ RÛˆ¢ö¯ÀìÆu"ã˜1q°*Äb_”Ö©5Z çe諞ß̶ŸeqÒºš6±äWê½ÏJ¹‚SØÒuÂô®â€ü!š ß3vŠø –Ê(­Èé1¡ 3¶eX Ëø¤¡këᥠ6Nƒ× –¼5PtmÄ5'©kõ%Ìk¥½ö+1¹-y耈fתÏâZx0º7=9P Qõaâ7æúaJvì‰6Vð iW«²¶¸_ÉÎÇOÁ™Šüaí9**,,ì&i7&Eö¹Öý±eOµžßÄ2ð§!ÿyÃ÷ ´SU°Ð‹e™²“žý|¡ƒqeæ»>j59 ªÊÌÑÿµïïxívœ~ÌniU­ç” ÐUP@,—÷ºûFˆØBW@®Kà—{[<Ð;†§k-M$­îEtþýL «öÖóKÎÀ}¼>£ÆÖ’fÕ’º­M(·ýñ¶@Šg¨§#ÏüNfåx¸ ð,¹=V=±‘–‡Ó¡½„-ޱ@ˆù=Ë@KÎͨ|ãÝs¨JkÒýPÓñc¾P|N÷¥/•þÄò»˜_È|Ü>€{ë €îܦ¼T¡!J~jÖ¨›ž%º»'ÖŠÛNʾê³Ð%U:;áVجYÊʿs»‰b ý»YJ—êžê÷|ô©˜Ús~èf×@˾ʅ•øè5*.ÊÃd h¬€™Ÿ цô¾Ýï}AE^S\RüåKÿiŠf6J|Œ7þHáÔºo†‡£Àyè><ÝP«ìænOÒ”îMb§ÍÛ+¬náŽÊ/Y,‚Ò„òŽ‘ÇÂ[£¹ójå1ÜÀ?>LñryžÙI?a¦Î¢©5îñ§ˆòMozÐÑ¢]1ûGõªS!™ÁN8™ãŽ0?×Ôð)¢(ˆUQ[Q–>¶ÕõÓÏ‹‘‹w;hÓK–6àîF"RÆÄn3Z 3½œƒÝ“š‚ú'¥Ø.,\ü‰pÒ-N'Ê—éÊ"µÉC4åa¡Ðܵ޽ã¾[}ñÇÿS©Iß=ä8ÐüË—Œ9<¸ÏÝ m¯ýŽ ®¯”^ß9`Y­s2ÒKú{ å7;ÓýíÊÔFÀµ3¤ ì‹ý¿Wmßòbzvî¹íÈÿv[ôFºid_ÄÒáaõ ›Ã>é.«a/2¢£‰žµÓÂ!V@?f9€äC^÷ôÕ,t²P.@‘Rµ{#98òRÒmëö¦sõIÌLýû™ò€ËÅËöÕž×oUÛÞ!_Åa°ÌÈ!K·hXÜ0\ þÚ²3›µ<ì U=ONõÎÀÔfÑ¿aùEŠcTÔÅb§ëN’ ÁVM™Û<>{,pŠäàTq*"<¡Ç6L„Z¢Ù¨èòIoü©öt”ÆòÜ-=6›¡!X¿¼ÇÀÔ‰AX`‡ùëºØüGÔÐk—#-…sîû0b;L-·ès!!Özw6¡ÄyýWàÁz9ãÔ‚Bâ©,z¥x´2³ûàf5!?þH/«´iülZ«•öa!Õw#½&dÑÀZqF’å+‘\éMâ I‡Ó¼u‰s™ó„lÙ$—AÜŒÚ8c6yš\9  ?l¼ÝÖÓ2KW;“tP¶Šº,píæ¥‡ô~÷Kí¨k /{meÂ鄱±í8PRrow')ióÊ•®ÉQ3À¾ÛdÂÊ£X Hâ.B†Ýöƒ77ïáà~þ®ô^±/Á0Ž)Cr¼¼¶ì-¤™‹Æqdnà½Ä±è{´K+GÎ#N`E3\•€X…ˆßÈú…f­00’ãÑY¼âȸ  Z–¾¿cÔ¢êõêC}c&‹²S$.ñf1Ž;×UT÷´ñó/C–ø1Õ·4ÇÐ⹺}”˜Ïñð"¾¨Xsrܱ­Yཛྷ™//,"˜síù ÓÒëŸ3{»q~2®Ÿ/àù|ö}lCÓÂMüyÁU€Í8 Ž€·v6‹¶5þ¢K»çˆëlË¡„•Œúµy³K?pˆ®n1IgýO&Ôì”à äë*§xÕÞ32ð (Åd³wox7u©Gø_oè€ÝÅ‚gÀEuÂrvNç­ççK¥+éY˜9ü­À‹ú¦0Q<èñÝ(¥‡ÐÏ/ m[ì™Èþ„kÀ?±!Xlžð ›°dw¿-Þ]Y]'ÿ„V‡ç®’}Žq5oø~­èV0ìý÷8Ðr÷ät:˜Ã;bôOY±ûhžetNl½ïÿŽº›ÀÇ¿£µ í^íXs#ýŠ—öW1C3„¨!—7.ÁHcR.È4éÞnT;ôd‚µ¦]ªLºÃn~Í4Ê­KÉ™É-sÜ:a ­¸›‹,ŸÚn1áÑp›Ööü‚Õ·9ÊHÍq3ágjÆG4XQmPL7#ÿj&õ‹Ä+ç9w©ºþ ɳq£¯ ‡ÊîÐQG ´YC#l5o타úÎgÛÛ·tÖìVcG¹Î×¼ø(™PS÷ñ¯Ýž*&ïÄ>•ʼ3WÏg`HÔ4“ºÎ=øèAvØ_T³Á¸{UÔ-5j¡k3™y^87éö[gሃ¹Ò¢.9˜¦Ã;ΩÅPôJU‡D·€¦]ée±li59ëµeãT-µã÷ë}­÷yvѰÀ+|Miuc’ý-žR©)}ñ6¼/à%é»ì.—ÍuNXZ œnÅéö6"O®#ô3+Ùž IÙi@Ü* ÃX×[>.íѪ[ç{¼í@pLW=öFq–)6ÍG -ÙØö…«òáW;×Oÿ*Ÿ­œ•5l‡»ÊS òaÅÆH«×n˜Ëñí­p+ õ1&½Å/%Æí…0-e[$eKn¯ü\ÂÈ€Û[êS8p´Kö^…ë€ä†Wþ|¢8Ý÷O|êF«’.Ž8õ’‚ÔfnµÞ-(OwV÷¶¤3BÄ%uOIÓuHrMl=¼@^¿uI1Œ kE¤ƒ89,Q¾dSZÅÔ¡~·AP­úq˜S)ß²ùèúÙVƒ]3`yUv°x‚¾Ó-BK­-µñ²Ç´¿ÆÓ¯Žq…¢ˆ‹yä##3Ànµjø õˆ‰Ì`t¼{=´¸z$™g2ø-M×½Â%Š_ êÖ3»5Ú‹¶Ïn‰6‹köØD̯ Q ýÀ «”ìø§bã‰É†ì–'Ï>=µ¡[‚\9þØlå|ûDâ_»£à·‰‡"C'·ÜlÆWÎZAÑþuä)$Þ£EøZ1¡ íÈ*ÒBiy®ì ©ð‹!­ô<B]¨–BF°ìW ÌèÕp|tê¼@j(9è}ô 'rÁ/«úƲëÌxê¹ÿê‹tåùœ8ÛêáõW#*AŽyÛÔç’–á7F»Â¼â¿Ì5w¢’0—xåsÊÃ~ÈFÏIc3s±Úa¨0Og V—z@d_@ÏÖ[vN‹FŒ–d5¨:h„ã3AÆ#Ÿ}ùSmÐ#e“ ÚR·µg%ç´*}þy·¡²œuwF uâ'&{@nŒB“x˜YÉÛ©óFÚ”šßddï¾(1óÐïU¶¬Aâ1ŸÍÒ‰ _üΙ-6›úüvÃAð•Pƒ6É­°¢;£ÌôT –z©vŒ%êOb†õ ö¡– wIÜ˱‡Gh ÏN­{7÷ˆ&\'V. œˆ|ÏíP>¤Âo¹#RÕ‰˜u,ÌJÕˆ#‚¹Ø4~ ý÷ô¶ šN¦»;Ð,ópOýÚŒ®Ù±*!ÍÁhÞ“ç¶=lŸèÖ‚ÔÛigõ¸f'Q<ùáB Ò§Ö<Œµ­¾á`T†&¢ m*U?Kˆ¿w|Væ´XúÄÕ|¾Ï‚ÒªÛ7Ái*Úœzª¤(ü?Ú×;éÓê’Pk†ý¢þOK”Šôbøü² µìƒ˜ï )[ÁzŠ£—ý«‚l›°ºï•yvìÎgBm1~eö(çÈ[õ½½wì¥/þHB[…¼.fäÿÏ[ô 6¥9“¾1_ènx­IH]ÖçÞË[Åøjø*Ž{rï/6o¥p,CG#›ž 2Œ—£žW‰ê½nì—Ó¡í ƒá„½ž=Áµøf®ÿò_ç J½[APÒ­Ãùª:åD“"Xy.‚ΔõüÔ;:•š7y>› ¡ÿD·œ…“‚½-oáúÃ{Y®ŽrGT«['Šš˜i££q¬Â9Z¡lŠì¶Qùòôs×{Ë£EjD x“š21ܾÚÑ“_Ûµ¤&ÌujÊWWovâ­îxC¦‰Û³#‘u•nHD<÷½OÖ‘Ó¨'–˜:t¬¤ÀÕ¨¿{v? )ffÔÄ'ÖÁeYœ¹¿ÐS(zþÒW%]$øvFHœÃ§ù…˜´­² ¾ ÏHV­Wb=ú, Ö¦²¨ žfcÅX;`P8øÀš®ÛB§<ÿ°#¼*‰=–%C²¾M1GæÍ b/Ì~çø¥òÝ[µÎ ­[x@0ƒÆ (±ûópAQÝLò*l66aQ¨…Ó ÄÍ8’2g|žÙqBb™,s,Ä#>šë‡Ö´,ø~–®¦‰…aÁߦw°W‡,OzÝ.™a÷噢»xË›ÏZiE'pzwªP>ªRwÂÁ®|h³ï&&©G~ÈH¼¹ó¬´ÒºQ6„È­ þ ¸óïˆ=åFšª&#kšUÄ·)­VzíÛþˆK¤´w£­)vº¤†ËeŽ\`›õzd¤Oƒïe%¹”ûFÍþ··:È º­ž|QsZn§è»®“ô§u$€qpFšz /žô Ÿku¹ËaÍl²òð¶áì¾+…Ë›ëE Öך]võï€àþ³ÍuȵØÏd›ßm6–F/Nµ³öÀÔ_ÿQøeg·ÎE¡§ýPÌÑ?N/^ùÏæG¢óѯ¤Á^ ˜s`}̸ýVƇ*JÿNV;ņL.Æk®ÿï`ÁXZ à¶´®JpÞ><Û3•ð…3Þåf;ÿ×â6ËKÃLa½ÚêÅrÝOÉYšÅÆ©õºÌOV,‘ÊH¸´`ƒZ¶Y,6ƒ ­¹]~çv„r1£ËB`ƒª[>ï/k#XÆ-ˆö¬Ô“;kß¡gáÿ-(êùÈ J˜Ý–«j(Kª&‹È몷;¢¯rÇùÃl ®,°åe¨æã/ÉÓÁøŸµ»»úÝ^é¢À·¯ŽyÁ rzE¤|³î7‹~Š^U]¨Á‡ú˜¹J†‡Ö©‹y7>@_Oò[6¶BÐöKìÎÿHàIzÉòªGŽW †GšT$³+6ù~•Ò]©­‹Ð:/,&“JžÍK>Bë%—Ð)ËEúq¾™ð¶ƒÍÝŸ¼ y,|@U,àCŸñ~×rnɱu}Hg¶¤›„„Ò.è`­g‡ý‰ÏEÈÉ ËœOw¼MVn­4ñú0¬5PJæ±LT&ªpáštve4îÇÒûl“T¬9DAè¹Us \cqá¼¢išaï(²ÒLépF #·yëÄÆ´ÞÁš×–[ô¬¤ûΞ˜r¥&l;Óˆ=žÚO°q:êæÜæ‡|xO'Khýn(Œ€’½ÊÏDóJí¨.5™LÍspM³[÷ò·ka§œ%Ô¯®ª·bGŸKTÃ8â†sŽO°ž7w3Jr÷»®’ýèì–Òñ'} r¢—·Ÿ’¥±æ*ÉXœÙÌ14s\•Zë ´{Ló”ÊÍ‚,uh1é<«Á²dT\@mõT;ŠIùÝ Žœ"0“ cº4®XB‹?<ÊÎàÀ>¾rÒ(vÂö¸¶…ßžNÄ,`A¸r¤+isï,.EŸ†¿ÿ-ˆO<4)·ïÜbœÊÎÃ#(ƒ¨=6râ¹&°­ÎÆ›Жkn@ku×¹ûdýtï¦ÎÈ L€{l4É5Ñ‹ð h±®˜W{O ZèÓŽU-fTçk¿|Ä m €Î[èÓ¹Ïð¦2ØÁË b ·òUËF’#qžnÏ»¡SÆ”"¤‚ËuÜ„¹j¿N’°P7jèééòŒ†Íÿü8¾¶±h\Dd?T¤á€‚'™Uâ}9ž§¶¿ñÅÓþ(ÈÔèK]ϯšc¥åùIq¡aÛ MÍb|pTu 2i¼xðcuìNÉŽ.õ7=»1­ŒÒø"%—Ö" \ìR9ùjqòrpÁ³öe¸Mí"¢2À€hqâö!Û&>fcÂi‘¤™ó0…GÓVxË~ý# Šʤüâ*ÚV(/yÅQ8»âGF¥Õäxœ‹×˜sìBöxeúØÈô±LÀEoª +Zå¦ËT¸û†ê$sž,‘E¡½sÍu[ôŠlp\ɪ‘0ñê“€lk–'“­À •¤»O©4&Ù³^>L­¯H ³K+yâÏËÞ‘7*{ü^ÚõJ„A6Wq΢4(eÓ‹áÓZ—Èï€(t Dñ`²EÑþTö kÎcýØrj½¸ `ÁêÛõ¦ ÆI“€R/ŸwûÉ 3&WÊÍa…HÞ®,M ¯Dy׉v+b ¼¢bÞUXªS‘ô[²žš$~#Ò0.ÂØÉ'Ú—O¤ 1å"Ú%“)•¥¤Ê¨øÇøã•ÕüT,’ˆö­§ŽÁiF×…D” ¯Ö¹vj¡q®“œ§«x •­üvyÊ Ún.H^v[zþ'!Ö(J¨l^-Pò_®É2xB7#!{>ÐKÁƒZ¥CžÎ,´Y<‰öÖt2OcÆcvÀùݤ!©=ñ>” .~|€Eô.ƒJçƒÜêð$’ah<%è¦ò<ÖâØúŒà†³-ÓFr—@‹3÷žM®žžÐTÁYó·o1^Kì1<d;÷üC†¹VA!ÚZïù…˜‘æ&›N¼ír u× ±–gYòÐâÉrKô¹ÊþàOˆÙ»ô5•JªkFãÄ@C^Fv-Ùtdë¨êv/IžÓ"‡‹1¼o:žEËÿýÚ>CiŒêÛ ³ÝÄ2ySŒ2Þu°:2ÑU·¨`"¤»»¤WÆYÛeWõò°}ýA\‡Øn¨¦GÿWá»FÏ' ~'{õ꾜ñ=sÞµ‹äÃsë¦{-Ü®^òÐøËÎÌ‚pÀ›A05HI]xl/àÏÅZá6„… öÿùKÈε2 4!ˆˆ 3ŸYÍlüÐqœÈö«Þu9žzyv3†¼èíÖøH"UsüW-BYÊžÍÜTmê?Œž§OX ‰°‘(Þ‡PEXÐú”Ú®Ïï¯ÞÝ£¨ù¸_î¤qé)t^è™ZçÓjæ]rŒGpµ£~39×SióÿýÓ¿MvÛˆ)ÌÜ;{L§Ñ”ÿ[‡bÕ*s;-ðg[S~Èæez+;|]`öt˜Z+¤HXOÓ¤šˆŸaáþ3Kò!ÙTeEx9P"þ*Ûó -Fp ÙP6mµÖgÿòX‚ø|…ż7†ÔA.“¹RÂÑpŽd‹>µÆsm‰eWÔ²â(æuEeñh?uáh¢âü {I‹ãmþëÏRÊNGÝÎÞÆmê¯)Ôœ"k(ËÀ4ÉÀSNFWÀ .©KØ  ‡}ÿy…ÊI6ÔøL=CTÃKdÝlIÕGE¤Y3šð· èZ?Ø´µC¹ßûÀskÔŠˆÈáE¥ÛÛiD&`õ|aÔRõ^G§-%THÎ[XèPͲéû59µ.<‰fؼWM¥p_C/žÌGŽU§—¸€Â¿¹Ø(„ØÑÝ$ðn_£víW_k“YzïÁÜt¢Ð+¦¨úáúoc®Ãƒ¬xÌÔ'Šú»áŠd{fïÒOèõÍß—aðÜ.&Íß8šè·G\Vαýâ9© æ·.œ„<í“mª?4£Åß óôIƒ¼Fdd•nvx/ôëÞ˜¾= ¾ ü×å÷È#åÁÜŠk‡¡3ï“-YvÛìš0ZÎgÓñ žÞÄÍ2&>Ã%÷ǜ˳$4wkü*ËÛn0Ø—ÓhóUFò9c‡!„ÿv«©X¼íÌÐ'Qܧ¼8€BmrkžÄ5ÓÏ}Õ7:Ú[ çÄMè«¡ÆùçMŽ^´¼"/^ Çe³/Nù–ˈCà㸗äyàØ·$k´s±“œ©†Üë©ôzöˆ÷ÁjSo5$ÕÉe0îe”O—¼Í= MzD °îód;ÞÎŒÆá4þ˨W?¿ ‚­Sj®ë¿Üó¼¬{Ç*ÚG’‚Õ13ú£·ó¾1YIUÂ>½²þÓ[%ž‘é ļhÝö0d0#¾.á×J‡Çî[*Hh¦ÏýbÒI1åªz ¬á Hi` :÷Ù–å>Ž[›wkŠ·-JÀ/zëxV´‹h>1‚F&%E«9Ïä@ÐŒŒëS~ù…ïàœ$ #©Z”×®û%麽Õq,¶†„š-•8¤‘v°õ`Þuõ:“zˆMBŒuœ´\Jú`YtöΆ׼³xstƒü­çL\íM£Wq•Œpxüqú¶ZÑuöáÔWÄg“ªÑJ¤jcѹ€ê™™.?Û¹:î¨DttpþuNo˜‘B2?«Ú.àÀcÓjƒ„™`o,q0=¡YÏ%êOúvi¦˜B¥Ë¼)@xÖý2è—HYýo‡ö.õÈk’㸠㞤ô¹ ^8tHØÍÝ2á"G;ÕµÝþ¥ápÀÃÙÏeăçp¿ª96‡r-“ÃᬠKãjçÍ\¶‹Ÿ^Ñ:ÝQб°–@É“÷χ»`ø³mäá‡Ð¬b2OCp¢¤»µ¯=èÅÜæ¥?›s¤ùnÌl°ÏTmžÏ2'"!Áû‘±'/@ò-(ìDBdtMÁ0„øÓtSҦ凖ͼFQ·…k1fAsZýiži)¤sÚ#çâ&KÂO­˜ïšÍÏGµµ!aòã}Õ¯¡'€¼°1 U°ýޏeˆ0ö©qV·Õ„²G4l–¸Î-ëÿ-ï‹XÊÚm§üö«>6CÌ1ËÜTGp[XGm F‰û(¹\‚yœ_#¤A²ÊâY £–ª³„æï‡±ž‡Ó±oþMÊëU÷l(F¤Ï¹CÓ[¿ox:„¶ œäµˆ–ÜT›Âì9¶'cñCú¬ªßZ|Ø,“¬T|UQµa–SF~:n­K?P4’-PyOY3ꟶ)I ~ál þ%OãÆckö¾—0§¯,rêZ!.òÀk$z³¾ ”½*ç 8½ªÉ¬_@-†muòÅ6‘¡;Gxb«Juùx.½ßÓSOoRá±2¯¬Ønãh²~!¤ü{š+>ExÓ/99w•ŸmHô’“Lñãç ÖLên9r GÓ›ÔNI »ëçf)ÇŒ Œ,¬¶°ì5íÕÛ Pöh!оçHˆ§ì'âʘ>%êËQjœzÃq#vÉÃ"_]Ä:^KøaŠ?Âc \ìl÷|íô¥œ¥Þ÷ØKfÒsqc*²¹¤¤Ð±G0â.~Êåaÿ›B£èyXÀS;á1õͲb¨M·øv9‡çÚHeeÖ/;Ayp¾¾bezw?Û|®ž<#—qç=ë_à  ôRúŠÛŸ‚[(Ä^ƒ ÙÆG§ K¬yïijªb¸ÍÊ‚QK‹¯óF ›S×>RlÓCzŸˆôFA–Õˆ¥.IMhM£/q flP¡g>[ì·Ä}»ô°xžäŨÒkT ó<š¦@\6—6-8+%Ò ¿šô5¡ÊPH}döÕ/&èžþIáXž#nÓ*¾òh¥¸­Ošª/LN-tQ?Ñ…L—¹¦•Bɱž¾j<&”¢4ÎÃõçµßÉ èÈ-¦­ ŸVúj Sß9ºVžÔnE$;Ð@K¾00‚Îix;à4žêÎèCMºŽ?Ž“£îOEök0Êé2·a‰iöHÊ…ËÆï #à~É$<Ôf2otyÂLʨ¾,¨‚^´ÛUóöDjÔãm}bñPq”ȹ¶^—r$ʸO·Tý°ƒŠˆ mù¾(ž…õ¦rØAý 2à3ÆYþ^™,¼ÿ /fÆ"“ŽqîdÑ…í—½U;ô š8àÛ.Þ8ÅãÀ~|¿}5ï*ÂHp[¾J³L!ÍâÄ|ÕìˆKrÌj™ÌQÖz «“liC7rºE´^7ú^]“ © ¼ ä.)®rdÆö{Uüt*¢#L…R‰rE»²õšì@ødE?ïñ5S] §(¨àg]èwv¤V·}ŠÃñÏÞ^Ø·]n"wãwY´Wm{ÖL:JÚD ` %Pba¨K Æí£ôkpCa›_‚w'ÅJ;Á2öÈ;,›«®U%òX+BÏÒ^ŸÂpp£Š¿¥²»¾ÜNÇÁ:ë×a+å2F\lƒ«/h*\lyÜŸ®Uìi”GC7x–:«´Ë'Zà(kn­×E/Cðuj$Kq>w=ü¾¥JX1íòK^/ª©8#X%~VúÅ îÀÏ-àí¿%  €¯)\J!4 }†@%¦Bñ7g’ý:˾¼¹*2CƒÆ8RP§ÓûébNöSûNSvW€J®ð‹FÝÝmòà¼.¥'$ÑÅ—¥TƒËÚH»Iðº$0Ft ­Ô¤´QXJA–®ÉýNøÌ®Ó‡Î@íÄn‘ìj †õ0Ì3b»;¹ãˆviOfùN•_♼}ý6qu4¹FÏr’æàRÎ(hDþÑ¡ð³PÊLEËû·:œ¦R%öEAî:f*s‰7 êb÷«„u£!æïÍ%·?ÙÌø?r§í»¦G]Ú%ѳl¼@cT±7 ¨K¥­´ñï xAèJ%a´ß‚‚dX(F3lÝ/Z}b ßœu¯f¼ÊS¤Ä ªÊd=>ïéÈ¢ OYü`' B¾L'døŠÚœª{!☶¦…ªt0 öäÊV}Æ6yýíØüz ¯Am´,2Šì̬¡é!;ÞËÕõ^ʶ˜<§Z§ÞxÅâÒ²b´æØå<Ë#N¦ÌØú@6ʹÙ‘#]ܸ‹-YQ‰ï(ûådFHç“Nì®Éò_)£e H Æg_æJ×óqªÃDd’jòXΰ=M¡½7¬ðqF7ÑZÛNʳ/Ü©ƒšbX “Wƒ[€S,dûô ñŸÉžÍIi¤—õDÚ3-v™Z·˜›¢M£+ž?÷Œy1™» ÂàKGË=5éS­š¸V™ë‰÷­áÍYD"bó2¶¯ûèQ"µDXÛ¿{XþS¶Ë_ŸÜê²ÓOÏ*—Ù0e†s›P›Ö‘‹\„Íäß=r¦'J´ÖnÅÅS¦%Ûð>o(Ê6?Â`Å#›öŠÜ^¶]*Öqõ‡Žu7^êhúÁŸˆêÞNñ“°QzXƒ(|Gƒùˆýuá«!ÏÖp@Юg]’G6Ç^œKy£ppRAe9dߊÊÊèIy%ïÛðÛRÕ8¯G¨H&„¯iL&¾-îKœ0×´C(GÒà’__ì]vGô‹„íÃÓÅpÞkR~¼7ì.¶˜Rå Įģ-Z÷·øõx-½êÛväÜw8´ ø/”îcY¸šŒúKäsOV#ˆ ×4¢sÝ<œC_°v”­§h ‘6È7àI=È̃‘›mø6ÈÎ8,†Ø!ý :é .7)1“²n31–ë‹®î¯}:¬þ-+¨”‘>ôtsƒŠ­½ AGÕø&‡gÙoc…ÔŸ¤Õ!¹¢#½á0š÷ʨVhÁSàŽŠUšÊI9ÆU¢É˜5´ û°ü÷®Nù(ß%)ºýädFb僧µ‘Ò-׆‚>®=:Ê}µ¿ãü7aܱ¢KyÞÂQà0Êͪ0£ÍÌ»G‹§¿î¬{3.M¥½F¯DÍö®–¿G²î\¥2×l﹌d¿€ÓI#]É,¶î•°åµ7ÿå×|ÁÔî7<„±&óôAÃ)ùHË(÷ ¤ÔÒ)àA¢=TlSˆODû°ð-©c:¸Ýz7°˜“Mê CÆët—ýpD1³wG­þ¶·¹Zó:ÿÁéà¿ä3”ž‹ Ò|á·=PŠfÛ‘gâÃüU€ß%”د 24HUð'mEL^@˛ʶ6#™)‡ì$]GÅÞÇÒâZ±®wI|w¸® rZ‘½Û´}™w M¿¾ >ðŠ5½Œx¦³.6§,:%œì%Ë.› `¯Ø‘™?ÛCöZ²¤OQ²,Àömç²à N9¦hp˜í<|œðÆlÝ%¬7„†xß?öÞÁˆrÈ¿5´Mƒ•+þöy¨÷%ÍÀ{vÂN–ѦK}4‚÷§£­SUZ±pQHM˜8(míR%6Z‚è©%TwÑ® eÙoèÙš’ÆÐiAÕFœnÊXkŽ_õ0ãNbä2ÈèÍŽŸ[es†¢da(Ñó†ùÞà¢Æ„RÝ£°R¼í†9åþ2èÉÔ”&ö’…(ÞÕ®íi¹I-œ{oj–ŽP_kÌóãwWé"UÙsÏœ¥ØéÝ] ë:©H„yMøxò¾>©ÁÖ¶®VÜWD¤”G*DÄá{/64É“óãÀY¢±sÊóT¥ÿ†Ó£DT)áCX42=\]»È~qÙ1P……£íltÔ÷Âé(Ü´/¢¨³†Zq¾ô›Ø÷Lã3M5çO!£BbDË•omÖô*,€.M®³”èÜÔüƒ¡M‚Q´ž¼7HÈáX£yäš²!àÉ0¡ˆÿ*~AJE;¢Á°FÚª©Æ3:$ÇÏPèÖ7þ”!¬E—ªÈ„§Pý× =ÙqÚDÇ2:f1áj·+¿+¢•ÞM h·#Œ$Ò_ÁuíÞg²n®Gváıy<³®~øGFË*ØÌãKæ+'‡M?j¡ˆ˜·‘ù^Àt¥4¡Ó·Mq¨R†ÍæÆu,yìqk£àîò^¢x>¹ÎŸZ*ê«ϼ"?‡x²p l%1^)¾Vþ¶VM‰…Îô?C&ËDô»@(½€¥fþš-$œ¦D’vcƒ‹—è”Xç±ßdãå·b[éëÛËSç@D#¥k"«4“»íõ뜑PPN¨ â“-@»£Ø—Êe3ŽGp‡‰³õQòÛû­ŽPÌÀSI;!$³åw8½ êÚQ£•dqPäœvŽ\JÓl„ÂF@hõ$žn§Ñ‡OQÏ\¹z¥Ë¸« ƒ"íå{,yÇÉÿÓ¦ "Z.³™uI¶ÒkëíI‚0†$Д%î릹éuAÁ óEqtfîx"”ò«¢µ/‘¼cïÅÑ\TóUØ\Ñzt.C†Ì“UÊx&úàè™ìMkâš§"Î>‘/úü÷p.ÝüÍ¢‘o’CÛv÷¿þÅëzU"LÚæÇ@MSß-5/*²?*sî¶nªNT«ª ]UN˜q½³ÄÔÄÓÜ Çœ"öކZ`KŒØÄy•ÀqóøÆa—7…ȃ90 eL¯=°ˆÉ¥šÄè ;£VPhº™›S[p{Mé ‹§qšÇb|ÿ ».OÃBJsøþŒQЮh¿ä7\íøšÀ¡õQu¯˜HÍŒq$ˆ„­+<÷ ’=tx‡”Ì~ÿÆnÐHŒn¿~ùÆw^–~ŠåÏák„ LR7q¦¢:Pä3ï^bƒi÷8Úa/ËŽÊ­¤:eûèòoÒ†;®êéYB-Uõœ¦1vÞÑ9åX"L„¯ø¶àGìN“KŠ$R3ƒéeêjïŸ6û)¬BG|aµ ÖR¿‘àM¢Bð5ìíë¹pIh¾$dNûãX¡ZOqÝÌviüûap Ñh¿>Ò>õ oÖ"µ^DEXo#ádáù€]Àî0X§áà÷þ7¿º­iòíµvt­^×1º{ù\˜¥S( sóWb×@" ¼à!í´$´¤ `ªÑ2 _<‚¤(ý”— žãut@½@w¼uÈ|”_úŸMQèÝì Ì”nk;‘7l¹¹’ÀPlKåŒÅHÛ‚ÄUiVíhý²BŽp4IðøŽm{¹ Sá§[v»À©Ýì–WØ7ÙbDÌ~aèB¡¶œIY³¾:Om#À.ᬿ~@ŽI--’=&¼¡6ÄŒ u†¶ÙË”Š${o”™Ãi$ZI»(æ•&(ÎÜ,÷:¿Ábøí:ÔLðu<»#4 øÏ.6x·1¬6¸Õ0=+|C»»¿@Ý”;•½Vã¹2Nó™ÅD5ߣ!z%Uþƒ}õSMH˜y§òpù€äŸ]1=v”‡FlöYî£ËÎQ6º¸0 þ'WQësŽâ·()7w,‡7ãz… åÜËT;øëçz™‘ g¢.°J/‡ÓÈ>÷ÜDèØQó…A00|¶-âQI^¼—ÈÏ«õÉ»R«±=v†â ÿ¾œB÷"µR€žÁm‰^â /Uñ'ÅFêÀ¾°’ïGuôWõ }ð¥ÅÍa¹~Ûâ‚ã~ƒÉþ1ê@®[‰÷amÚK4oCŠêÂÙÓÆü'CÛC¤¸pá©FVˆþ¦EËνÄ€LÝã7Æ÷wx‹ú¯óáä¸m”²Xö©5â+¬ž€1ÅÈ" ­W\ÅšÊë3…n,ËHõÅc4~ {ãˆ9³mÑ*¢ÉUV·P+1SφA¿©·4Þ̯P ±%mávK•Ü·€½jÝ~ü—ˆkñÞ1ó¨Ï+~ü|#öCCEõ—ò žæ´‡ìÙê°.ÓèY4d(ïŽY{O£ã w˜û‰¼&§<'°Û8ðØpV­6ã~SWBy¹}T‚/§i²‰›„Ú@·üé«à¢ r\Ô˜èa¾ÍãÑè ÆïHó·âMÁup¢rß‹®Ô%~¬lܱVX¯üÛ^´nQÐqk+m<ë¤Vˆh£§0hÝ6ÉÛ \‰X°ñ)ʬVI®WÑ]öˆCD­/ QÏ%*ÎññãG :¦G¼Ä«C›äû Á¬šÂ‚ˆ¸°'áÔJr2ÝòÌäewåEÎUoÓ̓ö1˜;ÞPMbv(A¥‘íRõ²Y=˜Pì²à)!É S—ÓåŽM]Iä6À\«HñN°ëYÁßXÞ×Ͼ.ÁØÂÁJ¾,ƒ6íôUU× ÈSr¥©“»LD<^gÆó½­|Ò4 ’1vµ×òñÉë±ã\6ìÎ*i,#ø|()Ư­B- Ç|•$øTJYó÷þSwØ4 Öõ<1ì?< l ¡9‘j| cÓ•¥°[},àõ´níî,=ÅŠBŠÒE¤¼3ÆžmWñr„çóoEQÆÜaaû3Q¦Ío4ž¤aÄœr¥ÐýŒ/ìãQÂúÞw‹kUç} û¡påÚgãþÔ¢G€Uç ö,R*9\ɰ¿zúΟ³†l\Ù* Énpt8[€¶Èl_ņ1Ê®û¨[µ5éA·IÎ ·¤ˆ>à.…Ç)¶hsŠ2"É*XŽ*Ø]„á“È~¢ˆÌ/f =²™V³†— !d›´™+å<ÍAn(ØJÍlpQÈ“]Æ ¸ðÁW™ê'õÇš) ›èß’¤·9œz½pÂïÈ”ôk_¾à$“Ú–¯|§Ý]Ždž«~¦²¸!×óHu\ÊÖor)9›…ïæ4ÙúX;:o­È¸u«À^¸«ªïªå5' w>…‰9ƒƒj<*ŠÉ)ƒilO:—ð ø 7R@¸†ºù(³6J|:ûRNp+&ØIü õýØ"TâsÆ—9Jä—?H0>¢ ƒ²T~z+¥çãL¯ÿŒ)é3pÃá6¦…§ÛÃFBª uä[ªØ¥÷KºÙÓc¬hþØ_’){ký‡L. ¦Ä÷ÄÓÖ?ñ·JÊ0-´F£“ÎBx—þDTT·É”…^ìkqáï›×…¾—‰k̸ï6„.¾H» Ø ÖVo”î¬k -žÆ-¶"ÊýíÀÝ;áÜiT_"Ä"›¹-KÀüù†'ØK„ÂË?àÛ FÒî0V4ŒðQÃ’­xqEX=6“ü[„>v6âã¯Ñ稄°ÛÒ!Õš—Š,g¥éÐ¥'góÅqc‘hµ¦—ØpŸŠ¨Ò3?]×köv1VVò„ ÷€cºø§ˆ(Žø‰ dU‹6BIº fE¦ûçè¶M¸ê8Í6‹Òm!•&Øwß'gCÎ×-rfÀ¢îz d£E•‚#ƒµ/œL_‰²|)Çà¤TóžOÕ(tWJ={©µÎÛŠa0ŠÏÇ'†Wù$áì€jºo…Ö…ZbWSÍ#¦<:ñBéf*ÿÙ+T-^BŸëŠ6±Ð¦xbõÀBÕVÊøtœ´€Ò/pÖ{ú 2Í♢ðrvZT'úQmËÒà·&#Ð}]³¯ŒíV§'&fžÒôq†Jc±¦0ùË´7À4ÿ´\1r^«&XŒ†ç@Uóæâf·Ü÷²(-êbFÅ1Ê‹í2}ݨζ¥:.“¢âÇã “$²n7÷·HÂؾpÍí61XÑ=ŸÈØ!³ÃèÅøšj@ÀÙTEB|¶ôpAœ‘*;PKàùö€Ìu±û(°½sœ:}e’|Q­½ôðÈýln1w‹)‰Ò±ÒTH«sf‚¶M »€ÝÀûß•úö\Ÿ +s; ÖÖ2eì<÷ˆ»$Ô(ÍùÖZ§ .¾9¸cTBšp0e–Kí4×Zìa!,ƒ[•¥ò“bº.3„dkñ`ÔJg§²ñ:Õ]NàØÚ9ˆdk¤:ì×å>DW’'J´ðnk7îž™0vb/&c/>l/o¯Êèý±xAJ7|=ªCøpÝïÂõmg„EŒ-¼…™ šùjbèšâ`Ú¨RÉs‰Óoð…TuÜédtº°žB¶mt u¢³ÇOy#NñaTã/[$±]Cà6 `N9ãÎ#ªŠ¦ÈaĢ“s„•뻓‹o¹W8Îóͽ­ƒ0­+&†$¼‘ÆE>~å;%M(ñ“¾ä‘ñοvþ—ÒÀ"‘Úêƒ$7Z.´K©`8W ‚Žùð3Âçf"*ÝJ÷²ÙC(îÓ1ÿæ&ÉŒ‘û!…˾R¯r@s»E=Vç‰%éajÃN—ñ’Žì»¸ÖLY Cê^©y˜—þk”–_ [çû0TƒR÷ŸÃÝ—µ"]öãc8*Ü~N±Ƹ”’ànéšü4’¿õЉ[ÞÎîOèõrL½ÚÚsÞ®Èñõ}T)ŠøæàFø…#÷< Ë:¦ãhn›ŒŒË6¿‚»ÿ«DA)ªæÂ¿âŠêiM·»¾>}êL~ŸÎJœL”ƒV±Üsm(1Ù,õEõ:X66U®øÃÖÔHâp_ƒpêò–X‰¤‹JSì³É žg+®[cöoylÊ“TQÕ_SbòâGY^£±I4ˆ¼U9<ô˜ntîž5ÑʸxF1¯€<½p†@s g¯2LàdìQ@+§•ÿˆ~d{Úó²S`c¼—0Œ;÷“÷z8⎾çGt ‹Cì·$wïÓ—h#$¥˜&Þ©j¯á>Ø0øÊ™zùˆ,tö‚ˆ ’ß¹„ò{[áØ¾7߃Q=z>XåOÏ}Ò½6ø&õ™„ì,Û‰ì@Ëœ…§Yœ7阫 ü%Š#ŸÕ Ðd|Ç,½ÉpN˜…¤L¿™CÕŠ%*!ÿÚMVÖôÅ §JõEÊYÛ¦ ï=i¨U›³ÖaAyÖ+§9ͧ¯É: x@›Ä] `U¶@ 7µ%&¾•©>ØD¯$i¿ÙÀlbI `ÈãUø®¸•£2ÍV½c“5 %´Õã¶Ìê#SùJ9oR$ |[ûŸ~kŸÛ²AP­µ§¿ÖÖZ¶÷õCú6Lä¼ããæIÏwBÝ^ÉY^*…—*»]\gb—Õ/›êçìl}O G)nŠb9ôÞÄßIbx# Ô-A…rÚäŽõ–¤Ñ$ºÊÖõÌ{Y‚…×±ÍPôžB=ÃO* ²«ûö¡~?(æ¢ÅåuAž_Ñ‘ËQ² ŸâÓ±õ4ékëR‚#ûô§âõõÓØŽ[²@D¤PlMbeÖŒnWç耡ÅÛKÑ»;\‰òÑRpL"˜¼üU U’ÑCU_Eh Úëwî€ñ<¯ý+Iˆ<ïëðB¶ †|5£Û?¿þ>½¾ŽŽ®ªÏùº4â¤þÓp­2†õÊè-Ïfo²C ÆþÛÁ–\°"òj/<#`–!DþÀ&·,®y>¦X3Ü}†ˆ&õöFéØM¯û½õE8s9Ö¹sŒª2~ëOZm£¥y,kì Ãa(•èò~liqmAQ¢žª.‹•¤õçhùúѺJPɯlµvà*IN,þ6I²¿‰ ÿ3ZG2`Ë6VgUÉo™“y8¾#>[˜[ýTŒ§V•´ïWK:é6ºeJáf™Ä#÷,tç,_;ìîK‡­ôñüLìó½fr ­Þßš#Lg~B¯z΄k\Ýb°¸MÕ]–Ðí%ˆëäzÖçõ´¼™B­Ù-·CKTj8‘8†Åö~lÓØ—â€Óg˜Iý(Á˜‡{Þôø§OyIzí.: w{J#ô}.Rÿ›pjÝ8ó>Q4:Á7S‚NÿÛ“úó¬6qÈŠÞcšÇªzÒ¡~Q-i|uZ„Ý{܃ugêÛvJŽä¯jÿC¦ý´B_¢2ÿé×LÏ‹—ÉKÑ÷)Ó{ ß×88•àºû<Ø™~ˆ:ƒ!’ˆ¿ÚRýíià éÏ!Ù9ô¼”å*¼àEÝ‘ÒDÊÐÞ:£Ç5ÖýÄ'¯Ym§GïU‹1WOAe~e©)©kä ðÃuH¨~ÜÓ+•AÎTÈ‹=ÐÒÿ¼¥¬°Â„Ú(í?i ZßEÍz“ %%SM6ßYBžcÜ tâ]ÕÂçÆù”i£ÔW/«%ª0«gÏ¿‹øjýe¸5b ŠL&$''® ;%:¬¬¡Bã;%á¼!Ø¢[>›aùµŠøE hò6dQãsÖÖîÆm‡wG ݱÐÚ›ŸèFòǼ{ì,Ù¾,)åáaU­ÅR¥Õ¾îm’dkÛM»Äxí©ˆ› ±ú™žŽqþwFCæÒ­Rq…5ï\ƒæ)Ù{¢H’IäòS/£hÿõºÿ¸.côÁÍSØY‰çËf™Úw ðLÖQ=l ™ªÚ¦®š¤‰Þ?;Í[&ÚÃc¨ÚÛR‹m7_¨ 9{og¢«ÐT»øÁ4 .bì°ˆ¥w#WmÖú=س!i+ù÷W/æ=Óê~’ÓßáŠË0³ÄDÒÅÄÄ,Ë–^$o£½Á#4»'ð™®}pé®QáúS… ’ ¬Õ ZáÆÕµh:ÙwHö¼$‰ˆ%‡"9\k»êІ"ªžK æ½@bþe, G6`]þÔá ¡¾^­óø|4ÄUíõt™{tK5ã§CHåÃ瘳oض§×·@.Úw:L„¤?““ ¢z Æ»º§FyG±8Î…¡ö¬–D†<ÇOÓãyîÔj÷SÇÚg”˜'®-y‰Cã ‹qÍ9Öý0ÙÂ’õ= Ô(ž«„7WdÕ«/ [ÜlôÜÓc æM¬WlµeÓO­*?W™é¢ãÎ[B¦ïDnÒ>Þˆ»»U¾ó‰í2iñZEWÒ­i;3‰«ó"L'Y7O<¬?€7>ôÑ 8‹ #¢{ §Qðxþ%7Ÿ-3š"Ûˆ¾$¥ŒÌ°d]íÁÕÝSäÕ!Ës ½ X¹ô?N™…£’.¥…5ôÎÿ•éÚ£ôZÍ û´V•؆V¾tt&îwW=w9fFà³tŸŒÙLñÛpë¢{3ŒŠ’“º Í#‹.ج¦YÞÆ.w°‰ïlÑøñ׿kÛô/‘°›%>Ân/n¸›u ÇK.lú€e·ºs‰¼Bi›¦phÄšñrÖâ¿€B±°ÉÀ‹Å.¤M&‘æiœEµø ŠîQŠïqa5茭Ôa_e¸š´¸xÝŽ» Òášd¬éÈÌ˵-bRÙånLpc¿u;dK£^¸âŸfŠòˆãaõ#Ïøfd7_|þ¬I?<ÊKí®Š¿2 înæ+;jòb)O颃^ãÖ—Y-©eÕDÂô³ƒ¯¬híË_:53Ë‚|9‚2£e«>kVP´¾Bn5>‡ˆ™ §žœ¾Ž]–Ä6nÌëK4™‡ŠlŽõ¶ú'ÆùÓ¡²GP§[Y„@-ì õ6D¢3SS$âÊsR:´Î;}ìòVødý˜zyãߤ5tnÍrÜa]oÒ\E-Ö.ÑÓp£×Œ´1½ù¹õŒi¨?E­×£sl¬aé>¹ŠdÍ•ÍþáÚˆëp^öVeʵÚðñw¾“ŨœæaæcÒ³%“NɈ­í÷”k NQP5~¢™Å©þšà© Áo7ÎÝ”;¦‘œ|rÅLÝÊ {=Ø$&RÛó&æÓŽTF¾ˆí æ}Rô—«±WÞSg Ô¦d÷ˆëM*õo5ìq»R—æÙLÞoÓ(í…Yðd»…4îôÿ5SCàxÌ$Úw—ˆaÅ~M'$¬b­ •=•bð áXÞ!ÐKßñõ2SnAJi®ôü‰€ôEW¿}ÎÍVmeõZ ôxä;<}H©––°èŸ^n¿ ü DXÆÓ³-žL­Ø­ ž•Ö>Yih«;$ìõóllâަߕÑQ<ðJÿ93’jª¹ý^H7«)‚_0Å„!ÇÞ߇M´ÙŽX ް¾Oâ”f29æé1ÜÆ¿\m(>顺)ÚYWÒ»OÑè[}«B¦ížØ…&H@£¶ŸÖŽd,Ì«¿1þs GGANž¿óÞI#à͹`«¸fµ Þÿ!ùn‹´‡êDåš+c´…XŸ;gª÷ÇÂÁ¼¼[77PIÀõ$Ë?ìî_kÍpÖËS<Åì;K;Ö•ÅdâìÙžÕ[xe‰ 'οÎñCìM]]n눽2]jCp[è?ÊiÉÏ+‡¢‡ôìÛÕ´¬ù~Î1ÊÐNä[ì ­ GxµyÚ†}-í¾VtžKµ¡®Í5M=›=²C)¾„ÊïM7¨]H?tR4ìTƒ—ˆÿÁY–~ݳ‹ šd¼¶¤ê@&ìzY7‰°aó¬Jn¦†YnÙÐ’¢/ê˜uo6x²lýï ¯²áqqª¹V,gÄa.á‘gíLâáž$îÏ üÊR£ŸÉ˜8ìTÂPƒñ¬×-×ÂôÐHœ¥OAAâŒ=“Ö]ú¬mZ¼·öð¯D$—ló¨w<츞ÿ­ÏêÐ<4.4HÛ—¢l-ç½é¬9u&”^Jõ4÷Ö¿AVÇ•N‚¡u¥äîÏšÊã}BÝÜ bTq³Gºoöí‡B¿9€élšp’ùS#s&Ø[‰µ¸ë93ïhÂ3¦þå ?9û#hgq¿ CÅ3¾¤;ú%´^;Ï@‚”ÁÐ=Äw@h¾ã~{ŸáÔ‹ZÇagiËÌ× ùèÆžõ¾UðÚä°„¥‰/FÞÞ@W¡…Æ-…£³=ì2$=˹”7¾áÓ»GÌNß͵Ý+*‹Ô[÷áì›ìGªPÔ%v-= AgÄsÚXeDúGɤXhÂé¶äœ45ãêBb?ØæqŽ7‡ƒtÙÙP᱑Ifßè%ÛŒ™ÈùÝŠà2{g²µÃ¹„Î wÂòã¦ð8~ÿ8…hNSRgò_&+•ƒ{L K¹×V$^Kj´vTíé9¸?3ÄêܽˆVŸ4&42Øf¦ƒMám}¨êbº|äï :µ ]w¶{ð÷`óÿÿ6>ø.˲ó¸p¦übdç¡ÜÄÐ÷¦˜%õ ÒΑBå‡ë¦S3ùÂ;{×Çõ¾žÍÃCfù1ɰdV3®:‹ånì ' zì)À¬J±¨}:ñÑ–ˆ%¬¾d‹Xâ1Ù5ú*jû1¿´3!ìuÈL¶÷YŽYЧ\0­I-bmºqW³õV;ìiɰa.ïwº°iE*Ú¿¦•î£aú|ôXµq¥‰®š;x„ nè@Ær§#²”© kù úØãÿ(Õiˆ¯%ºìT² ”+¤ýzþU˜,nY¥vmp sº¨aÖ$*…ÌG,wöP#3¶ˆºr¦çû嬼¤ 1¬A´ÅUh/¨¨ »°Â›bró#ÜR&S£õ,†“ 5Τ@HÑyñ­„@ùDœƒpÒ$«Vé2¸}#=#ˆ`Cñ°ÓË&“¦NW‘ãJLDƒÞ)Ïh…쩯À ÍÔÔ—V„µ`¨J ÷,¾7K–¶G'SÆÄ“›ÀmNg xÕVg²þ–v•l>Êôûbvôÿ6gs!Ö-õ,{ÜÓÓÆ½TÌ‘ÿ0ðÃoë¿kßÑàscáî SFlûçFrfê–) +¡b»±ëÞ×ü0«§9O91/™ÒoñýºúÀAf6O›õâ·¢!°þ¶¿jyÃÇbTÊ:˜‚B¼J*/f5À%þ»©@Äg˜û*öWóÎD£éåC™€3DÏ#„.eÏøÏœÞ¸\0øœqÖ¥±²äèŠÇ=ClXR¶* AÑ/ªÿ=³ÝU¶%£ŽØ{í¿š²mÿn0¡ðߪB–âçš\ã¹IÇô?1o§yR ¨H%d‡¶Y9òµc =l·`(?t­1)Ú±Þ;©jgn—š¶Ã䋌 ¦¬¢ ~´Ži +E~~ÆÖá´†»úhë"¬µ³“ü2œÔ×vïIÜÏÊê×íUâã”»J³ h5Ÿ£‘©?œað]Á`Ûw°õ™qôÃ~œ`yC«Jª\vlwkþË$_ ÜÄXÚ%gè Ë€šÿ.[S˜}P¡þð¼ög'Ñ'@áš…‘õºC’ùs׊|Íz³\Í¥,OZÎMH~žGc©Ï|D _ìüŠ¡¹ä*…³©kˆnâY˜°[Àk»ñ¹ÀþM[EÜ—çî¶2n¬„¾ªÁû'æ—Ûh!° ̶š¼ÚæîÊ N%qÅ€L|›žžJ%ƒ7;ìuÎ/ºQáJqŒàr¶,ôà·Ô,/÷à5Ku܃¶ó”o‹b»æö wú80+ß­.š[w(z^¢ ’½Ú‡:îU~SC ;âZø¦ÿý7,U©^&ÚúHì°ë­ð*b8“–;‰YsóÝC »§rºØ¤V8åyq̵PñåŽþ\ð”xç:«üâÀÎL›Ë$/¿8•û*x<ùG,WWÆË•zˆ'CŽ*ŽŸ>'S8 H£à|ø§=m0`iüq—Eø3­øvpnXG«®ÆuÓh˜œŸ1=ÕŽü t‘ùÛ*Å ~?t-ЯxÉGV¬òª–“ÁmÞ‡!å¼Rý†p­ÔsïÈ»þ±` ¬ÎxØ?öfÐó¿c!/ z*¶ä't?rDªth‰=ø”Mc«.à•møtuµºÖžŸÌógßm¬é¤¸¹û;½©üdUè¡ë¤U'KFwD*tåÜ*ž<ò'jæÏõfè8™ ˜˜¯ë±ì|; ¶Vâ^dö$é‡Å‰… 1G`‹Z±+ì2Óaû 4¸uÎJ&õÄRðÖøÄÚ4tIepôÕåΚaæ]²¨7A ’Pâ»t€fOÞºû%ÁB÷FÕ ²¾qéz³‚Ï#lE"õ¾É‚ø×ÊÑéx彑ˆr3Ü”æ$æ‚Ò‡¦~º¿ iÌbœ»MÕ>¿¢4¦ßv£Zeš¯;梞IÕ¡G‘;Ú â½C&ßdýÊ®8Ô2áÜ7w5½Á‹(“\äîà Ëq´ÝŽÂ“kHckbo\qó}ï*Ÿ,J÷°4BP oõolËD»+2jWzË6Ö4é¤ërÄ=Ópx\yÆ¢´ì,Ø©—0$œC›mò¿øJʲ·ÇüÁ“'uYtI~¯tcÛ@{)g>­VÅý©öL±ÞËÊ6ëeˆFK!ÚY©¼m _Zããá_uå>¶¾¹h6â­äºI5Ë„<·ƒíÒd[(öª–x#ÞÉÚ~«Aú“Zi±$ÓÁ„Âú3Â×ñðíö±–ໜ7Y¢³Ð³”ºUÅ÷Ûe,ïUVì #3O.¸˜ )8å>5Ð-öã¤Hú#¼„Mê„¢P†¬‰N®ß®ŠÅÇÔU/Bº€ý_&Bü?ÁDôñ[u ifbelGDï›Ã_~à3—Ù¢0Aè ®®*¯ÓZÿ‘¸Á-ÈêýmC±öw¥Ç]‹Î”,¾…9øœÂßÄáæ 0C ß&¡ñ@Ê&˜»ñ4FϰUTõžžånƒ¿ŽDS[diM !!;÷ò¤üh»Jðƒ" ¥7˜¾¥¤®duaU Ôí¼˜0A-ãOÉ›î¾aØX*”gr âÓÎuðÿyñ²­F=¢7Ù”2‹ÉI¥ët…º¾¿3©Ä£MÄõ‹…êv!B\#:\O¹äB‹¯ìE2©ÑfŠ3Å¿M˜ˆÈqóâËO¼éñèö˜v`¼¿xãŒ>¸Ð¤[»$ºÛ>0 ‹YZsurveillance/data/n2.RData0000644000175100001440000000047212376634041015142 0ustar hornikusers‹ r‰0âŠàb```b`bad`b2Y˜€#ƒ'H<ψY$ ļ@|" ü À„$>Ѐ ˆ%ÑʉÐÇÈ@Ø pÁ"F ¿óVÂÀÄ @ µ“ˆ@ÝLPsXÊg`@øMÉ­èq†®V‡:f$145¬HläðdA3ªB q†€ìÔ€êåAgƒÚÁ eƒìáFò‡’>˜^f¨Ý0÷3"©g@2–fͤàc€ä¥Q0 FÁ( +°ÿ€J‚@õ£ƒ ŸÉa¾ ˜ƒH'(­CÖ¼ÄÜÔb C€\I‚9ò“ŠS‹ÊRS`ŠŠKKR¡–´¢ÔB$‰¢t#“s‹aF‚êa {Jfq@Q~:ù„ö½œ•¸ surveillance/data/imdepifit.RData0000644000175100001440000004131012376634041016571 0ustar hornikusersý7zXZi"Þ6!ÏXÌàÅüBŠ])TW"änRÊŸ’Ù›:¨á)ØðÿËðõS[ùªŠø ;ëF IU¾åŘôƒm¬ÚaK}J4p¤¼ØÊ˜yÁO_hQü×t“õyÿÉ‘ïT޲¨¶Š^h47òÇòO•ÓÿîË%hZK¦è ¨nqà½sÆ«Q›"8LÞõ.Èp¶ÜQ@8 mìëXA'Œs’+µût޾m.gË¢#¬yåbjã#võÂ?’™¡ˆÊ+äÂ×wÏÖèuºnZâP™—BF 콃õ#³ü-­¡#v1>:ÓfÞ.¿»Ú€»Ž”áLôÃ¥kœT1Ž"9¡Moݲ]ü„uw©hó`‹šÚu6 œ&AâËU(ÀÈúÞ_#¨ëµ7 jAÿÆ1 îo«{ƒá¾*¹#y÷ßú¹1J([åjØÈ¤¤?n0ðÚž–uœÅWʨ–Kþ×ììii`JQNá| aÝiÍÚ±†>1qu¢{fSñIý/?€Ã®Ê¼+5«¥TM®Òþ൓2¤Ï wŽAÓß¡XÑ6º,.ʺó¢wØ<ÖL_L™†Ã8 ï@QN˜* 'Íf5Ò¥…py]ÈX"\Ú Ò ½Ø»&'ÔWŽGùðÃ¥yµ{mk]Kžc‹²IÚn?¥ßøÅ€ð‘✷ ¡“H¤µÌÊ`kˆ®_ÙÄ®µê2œëG+s 8C|‰Qo£òšßB¬ —G¥Aº¤YW¨6öV‡à“ªùõ»Ǔɯœ{‘™*C…’ßpÚ&ä^ˆ;ÙO( ÛØ¦â¯ÎXiÙ ú`}/ L8dwo ö·6¨ºr•øßIñƒÆ[h T0¢†'ä¹q¸Ðù„•!@ÝI€Œk]Š4ëOÓò÷ÁeDì&˜Ó2[1 n¤ãž@Èa‰¨I•ÇMõHRbâ¦õ¾ vÅŸ5Yò­îÆx/¶+áÀÀM7Y=¥u&öÚê×jÚü£Gì=£6¥ª!°qu»KøÌ$5U¤€âg¯ºGÇáÒçt„ÊA»›€T ÄaïêªÀ¦€—LqeU‡«TkÍZ›V\RÄ0—áSÓ€0M‡°ÑËn´²Ö)o­‹çh¸D$Ö9‡Õ `%©Šôrö þÍR§Ke››þÂq¾ûþ,RÄ,)[Yкï[L«ÚŽÏµ¥7RºÝþ…C|sª­Ç„ë9U$“Vlµ0íÐÉÝ1®¿ÀzÚÚÐþ'ïR¹P+ÒcbÞ¢[Ë7–(ÜH¤öL+;¡æ22›G¤¿R!›­Ä˜¶ŠÁBenèœ4]õØ·{î ’1åÞ£v`ÊY@ëWÜPÆ•Í6‡ä&χû8ú†Sd_ÛbéÙ‡© T¥ŒNlsŸÖ¼$t:ÏT]+èf>b/F•€v@“¥DãLw«ü™+Œ…劘;ŸÝ“~<ŒÀ«¸~É }v`ùP ï1wØòÛÌÒ†¬éZIa‘Ê[>øVï áRõ½&…ý¶9MæT¥ ",eO1êK[éäæG[óNÃzG à¦@~EìHÞ,bůi£<ëÉPæw¾-K¤QÜ!ªÛ¡«äíQÍÔáßì•-)DÀ?Èg” æ7Wʧ¿ÓÉ"›™yÊHl™‡äýxñÀè7l—Ó‘}Í:wOOŒ—?XÆœZm„Îåê`ÿ3ŠÖèî!uœˆ³Ü°îɹzë1x}‘¼q^®ÐýÂO‘…ó§‡Â¼•jª›mèÔ=¦§€HF¹Ax÷Äcr¯»Õ_P@üÀ¦8öu#ƒÉz·øÅh0Î5@T®¡;G -jPÛÛÇ^yl 6rêHOY”·ÕJü1õ ¦kóŠð³§±Œ]ÃEOŽÈ¹PãîìY‡*êÌþï`®ªd8%DÝ$uÕaLüÌ×*Ó1Ï9b<³Ñéë\f µ oÅÔ¤â+ØƉE•ëU_“Ø ‚þ£¹· ŸrYD[¹jÖ›ÈCAkvaHRc º6IÂÿ;Áë Ò°{ºÚ1?ÞÍ÷.%üà"±¹’-/Qõ­â„?YA„É¿7Ô3'›ë‘›É=:$£\”ù+vÆ“ª,( ‹4E¨D λTìd ˆÌHæqËà³(rn=÷¬eäÐi4YDi[+ó¥4Š6La ÷M*ÿm¶–©›b3ùÅ¥Ÿ<°*æ­§^úºøíĤÇ ÁÌd ž=h!ZªÎ¦x᫃ÖõœÍ•¬ªÈ°Êæš%á.jªH³Eªbò‹Ö¶.-‚mdZàjíÏÙjZ8~ìÉë5êò—…]%ÞÏ93hFµl• cƒy¯·T5uè׌µgÎ*(Ëqgíj‚¾³!¦~h9™Z_Ö#%o‡Ü+âÿ;%)Z®~þ§®¨¢¥…âô` Ì/0¯çI”•ÿxØ 7‚zÈ»ÖYäûÒh:o#*µf$C×<ë¼LÒ?¨2yÎw°~/©Îì„Áª à| XÛ8ÍŠ¹v—ù$µÁ˜T~¤’ÑKŠmvi¨õl:sù—ÞR+òU/º×eİÌã“n¼Â5ÒIç¶0Ì/dÿP¥Pü,Õ‹ çÉ]ðóÂ\2§Ê’Y@\²¼‚°Ä®ßNj2?¸ô P±ê:>kŸ:+ °¾<ê¶ÿ–íIøüÇ@Ó‰<«üqèÒá,­{½Ó#Ú’¯f›ˆ9žÆ?ÂKÄUÕ£¾LNÑ Ææ©”›\7ôñ:lkð\ßûÛL$Þ·:J%¨‚‰mù3ëz+a¼K”ª,¢ÕŠØåk)ÃÚöÚðä†9M/ Ô‰]8%RùÔ(°«Æ¹<úKXBQHqÏ&ãǃ¯à`<Ô‹ðˆî:“@5ê¿ê-^*°x>"3é½FÃÏš¯„?KLSõQ0½Ì Ùg–­‡)5G¶œT¯몕 K+éÿ'[zNê²ñO™Èt¦A¬‰j¨§ouu]TÇ4ö^Y¢º»vV6[~}JðÿLJÁ4GUo‹Þy@•:«Kr+áqÓ¶¹Í^ݼã>qæä]G>:Zm V‚Q•hÏGú¼©½6ìÃ’×÷=)!Puïȃæ·Ótr9Ñ&®:ƒ*rÍLȾTm…fàÁ{yÓ²or€§ £‰ú^m5Ö" |}dÀ¢[bÑ­ØñÓbϳ+k¯'OLcg³Ã>έs·þspt¾áµ!ÃÁ¦ê„Ú'm7í«Æò0²œÕ›Nß,™Bê˜dù臚Kbc0ž+Äš•\âRš,„8¼ª2PwÌþP]2adáô`|Ï "]µçóT,¹âs~Nï°šs›àÇÀT7h6 .ßK«SˆŠy¹ÍPÜÙp@ªOz6`!^‡7¦?¹]`Þý²ÑDÀ‚ú¥Ý‰#ƒ§ @ûîNÛìFL¼ù:̈0Ôxs1Ìÿ˾Wô¿ÿé« ^ @Uj>rE^£,€Öø#ñRíÄl+#$À>†Î›xèHÝM-Nê Cdå§ÊÒ[if ƒíËgÔ’6ºj`Ýø6š^¤Œ —š„^!<‚úÿ›Q‰•\¦n ¡Z˦R„.¨DÄlpŸzEßyª\BDZžÄG{ðȪO{šðòuOÅ v¦ÍvD°äjˆµ'‚sO$|Æ™‰pæ\@•W™O.=7Ê.7 dþó*Š"šQ!qN޳^Ùuª_¯ó\ÊÕ(61è]EˆeQÒ•¡l2ó÷BnkX‰o…¡¢j¶°þ>¬ùâ=Ÿé{–)+K6` «ý; —t£É™êäööd±[V˜I•k·ÓÓË5ŒY÷»]´ 7£†û¼Y…Úùƒ… c”e,c%¡êÔ ëñWŸK{ÓîÖH%V÷5fcÛë¢Á¦ßwLäpù.ÏHü£‰¡$½`Žá^ qh–ÙïåàûÀ{*¶ÏœÕeûÖÑq’#è^ØâY†'MQ±ü]ŸÁŠ‘ÓÑ‹4{“Éá(¼ÏúG ‚RLÔßä“_T‰DjƒM×9íKÍóV6»öúyµµówu¯çõÿÜ´âDÑ<øì‰ÊåßÞ15{ô ,%’H«BU` }Þg÷Ü™©…íð„²ò¸ÜÈ=F•ÔiôŽ=aêA;zÎð&™°€ë©í{¤*²YÖ•¿ÈLšpúpÀÒ v7cu*Ðe,ÆB¯må-VšÙ+qÙGƒ$–|Û¾À$й`3∠Ezax8,ÜÉÊØÿ¼Yo`¤ºõx¢Ø ‘:æ®!ªøŒhƒM¹ÆR`´»PTd ì«äÆQIcÖ;/ÑÏ%ÉlûiQßu9nó Yvõ¸ò^/TËÀ¢¾sÂl©4ôÒaê¸+;„ vÕèv»6ç>ru¨ÖRå¹%”[£Ôˆ_Ú§YMÄ‹ ‚¨¥š±£š)Z6èþ¤ 0FÒîÆQýÙóÞã’Úš™ªrÞʃŸbÊÄMÁÌ},à ¾æ^,èõ.Dx[S Äçl¤6ð™ó|½Opf™ !#È”6Cÿ–P®“¦ŸÇuÍQ*:m}I˜‚ôÉÂ_ˆýÏg ËeV6ó‚“åg¬ÿ-‘SÜs‘†@žƒŠ~pFùëî|Ϙœ:°ú[ 3á>î‚l£Ÿ œ{w„fŠgX ƒAÿ9õ Š{Áð§héeRuKÇ¢ÓŠMûû·  %A:d5Å6\Ë ¨y¨Q••òlöÕhñ&Ï™§KH| 1ÿ(¶c[™&ó(~BL©‘€§oj<Œž òĹ‘Ð ?Ò¤D›M“Lt„¾™¥*Êݼ^·3.ª7 ÅàzưE—ÿA8“½ ôöw» ^Ö ÿj$ ë‘LØ^±Ú«½oø€ìU¿cãÖÙäföYÖ¦mÿXŲWF>qQ®{8išŒCpþŽ¥ï™‰ó†/àÚÆeîV&CU)r² ,o錟•Á‰Ö ÛÒÿ»Ž+þ²9 -xrq¶õðÞ»t9gÂcç^]ε+CçC~ÄYÃhlñoHM‰‹´þ„÷„NmüÙÁbs`êæše „óºh{ñ–•ÂW¤}»¡VÁÍ 3e¤#ö#sf¾qȤPÁ¼Ê½óQi)Ìù%-Í ý¥¸žª›Ú½ö-Ä ²)ª§?£Ð¢³™Åþöï’&î+ˆ')ÏDŠÿ|~e|\"r÷¶±ÎuõKtà5’ò™()î¯Å$¶ ›±Ü~P5¿`ܢǼ‹©˜Bÿº}Êzä¹›£æ²^þbÕ_>ÿ½iU•sy—[;@›ÊM×MIŤì ç;g=” FÃŒ˜†&ÔC.‡æ›ÙIX ŸºþAãÿAø±e<è­W>b–¯n³ð”Æ É°Š›y)q|RâJ ×£³¬…:©Ïfu ½_ˆ}ïwY÷6m«¥?mò ²°Ò¿—7õŒ>Hdúr %%Ü'>2Rî¼ÿénY±õ´vFÄh‰¨G©þÐŒQk{V+à'"g«7uÊB¯„—!Øôý°72èéɯ²7Éa€ÛÇ«–ƒ¤/C0çšUµ/†ìÂ0 G  S|þš© žŒñ¡w^ä1ùÙ¶Ö2ú]eýbÛÎ>V‡½¡O&âcgµ.UîÉý•JÂPÀý'+ÁD!NÖ¯* aƼ¨ãœÝ×b3Ë©—•{¾€ >7$²al8›~‡;Uñá6%2Æ“›ÓU¾ú_eªâ]–ǧžÚ7Á®ÌY ?Ç‹ t™a¯¼BQ+çi§á I?×>õž®­î¡>¹Óï¾v‘&´!Ò)&6Ö[u\"eàXµrÔm--gæ<¨à‰ üPI-(t9 .䚯Ù.Èá.zkpô\¼}W$^ÂD©e8TþÝZ‚O KÖuéÙh¨kþMÏ3Eö„ìàyf"ÞƒäÝß-á¨okýîÙR_r°£yß2`%thò4Ñâ?î:~8O ªÝuì¿ù{›¶k,M&å%°Û'¡´ÚKNS`F V< Ú6@Ù]n\*cä]Äå'™/õzˆé»öŠFhØ}µ;à˜Gc`Ã-9¸Ï¨MwiãÖ0ÚnÌŒsœw3ÍU°>ü21 –=NðrŸ4eÏMÏ%Ét0á_/Õmd‹ZYÀž× ÌÈÞ¾¶Q¼µw4Y„ÛÉYK¼YËt-î€Q°†Ã_ŸÈ,~>9ÔØ>¾Áq{ }“{»Pl^%ćóÒ’$$„CññÑè ‚¢ØÞÂÃ{+SqE±Ï¯o°ºz¡‚xG™Ü8Ò’¨£|h{,¼¨m ©S¡bønÌÏû‡td—¤äR «¯š[‰O$f0iD¬fuMáîL½VM¶Q‰Y>C K+Ó]oÜüjFaÐÒH¨´4q¦õ_’ce-`Í"+%DÉ„OVMþü–Ù6ZàâžÓPÇ…|ûD­k]l´¥ƒ»Œ_SÚ࡬æ±*Bû<ž‡µÞõ=ØuË¥g-N²‰¨÷¬mÿ'_)UÝ£?ˆ†{¿ý]ò ôi@VÔ(eÞGò]ƒÉiRm—„ÂèÒöPÏdD¡…âÔ?ð½ñì«G¿vß\,Tjc:¸m‹æ ´Jž·î,9Lê¥11éb¿VEv1@t=’nu¨á3cƒ¢™£.l&®]»Àî »ö=òpá>†!` ‰„`'ÔÀù²`¬ÄÌ,¯³ùük(ÃÊløQ$ Ðpñš¤²'k«K2ÌŸÁ슦ΎçošÔ:]Ó‰6cA1ÿ£¯<ñÌá»ÿÅdiV†+©9¥9dFXÉž@O9&KÉ¥;{qV”ñ÷,P¶ãxäþÖt¬ˆOÆF,V¯égÓ²äÈÌa-<HöJ}L'755œŸ CA$l)Bâ3fÙžÓ›‡Ä‰-+§ ñÀOÎÿñAñ´¸‚¬Á”Ç݈î+·ªÜþ¡ï¹÷kÍsÆí5ÙÖ®oÐ8óLqÁÆ>ƒÕ• ê€Ù©ÂŸ+y¤mñ¢aoµ}‰íø4M‡ —:˺ôD_Ó2Ï1Âlµ®$aù8.õt2Çý-~F—.È  ~½pR‚Ð?ìf@írèÝ›($sj—ûä¥0‘²sŸ$žAz.æô›¼oÇæ½&õ)Æ{ÅšŒðTÅø­Çˆ¦±Lõ‘&ýoæt*eÚ@Zupòôž@SV„µÿÿy82BA8}AP}¦z¹›à_å]Vþ\ΚWň¤dfgº]®0+įÓ:Ö¦ÂÞ€Á-›_é +'Hs •¯Õk¼2`ruÔň)š¨ºf ÀÚ1ZG˜ŒázÔá:Õ&+O´Dn)¬¿¹ÛÂýöIÕÿ÷-wÕ!¢ýÏGꢃÎ.1=šLÇBuýœä:a-¼¦Z+þÖ•I锥JGÌ&·5™²6LJSšÌwã¢Â`òj± †]^¢tþÊÿt’â†c,3c^ž.ÍÄÌåèy1`nXhozhAŒž *­UY®ª8"ÜÛº_1±4ÜED­™ÃÃćÏ(-§Câ9ê÷aÀlúû§ñ •:¸€NÔ3ç%ʽ9•|ÂkE–Ù0+ûœÍS}•&•Mjr7‘ºñ 6÷^vh7€³[?pîUÊQ‡u DYÝÑy²Qò“3çhÂ1ösC3|ó}=]75ÜÇÞ‡ø”Ásg…‘¦ƒ3§yÓ™ï“îwÁ9ë ȲìÖ¡T Ö…^ÏÆ˜m/yv#% /Ž(Æ…0“[‚b¯Am!X)R&”h³[fC—ì;¨òXA¢ D™Œéö˜^caŸ¨p­`Ç, ò D?k0ž—é/‰ö_uŸb-´žÐUrè’É'ž€¬N[$³¼ÀYð¤åci”>Ïÿ®€vV9‰v¾ªŸnCZ.g¹åòÅÄK¢ý`raVÊ0 þ;0Û:±I¢ÇZÅFô¥”‰ ‚3{¡€^ "s‹à5b¬8¡¡­í¢¯ ªkM‚<øwí‰]Ë/a%ï‹KԵأgq„¹ðJî¹ÒBZke$OîÍ]ßÀ½ëÈeoE›‘¤Àz±Ÿ`Ý[5›¿ÿ gä HFTÑ“MæãÆVzzÍìþ™—.†Ö— W1OÐð?àH ~@Oé=˜rNÈÈ"û»’Që·›æõ\ú•˾ TãN H€ÃCè{8·Wý¾Ï^ž‹=Á¦‰`â3)¼|´ðJI¦ü˺ï@ÆÛ™k>¬`0¨—Ró—²®OÈ“/–ª”³dÃñÎÉqÍ[à†ˆŽä €²’Eý%ÝFB$áÀ[?¡\¯M5ÕºŒ©Ä°‰½a !ö÷†lx$Ü9ÿ€>š¢Ú»ݦ2лŒ@ÿÏ.ÅÜ."Xã^?j`ã·µßi½·’Ý“üV ’Zï—êI–MÛ㲘BE׳X[[!D Ô÷Þ.(y»Ýˆzþ½5r5ç„X=‘Eˆ*¡xo¾Œ°1G„ _Ÿ„íDñR›ÎÃÿª ç’ͦµðja?×”šW¦†sX®"‹Ê-úÌAá)}d)JP‡Ÿt¢¬‚˜nºâˆ®}¢Ôà”žñÛp)ã`ÉÌêïçº9¸JMõ¾â‹yˆ`\Ê-@ïŇ{\Óm9S°›z 'ç¶ß‡k"þÇ‘iBgáⵎhX(fN<¥Z˜x«E_P¢AF®®â®™¶éÈZ#¸ °3¨\7¸Émõ쑉q¤µÛgth¾pYNÅ~ñ\¢Ž8B[Y ’N^êºWÜ @"‰,Åë¾U½Ç™}ç³òWëÎ*F·ìÂ/ó̰C“!ú¨JÇÙÊt2€¤é^±¥¬\µs«&€î±‹ÖC¤6õ ™e‹G®~”yµØ+óŽÑa‰¸ËœYs"ÖtíÚÚ÷ó¯Ž >‘j»x@jQUåuD ã”LîP}´H{éì:'ÖêÙ-‡œH~9ëKÃS€ ElUÞªYœšsöèͺï¬Cù{ NG·XlÑ1€‚P¯ÅvTÙ¹ø©¦‹.x޵l¤aˆ¾õþÎé”ѕǓŸV–T­ä¦žJ໸€qX`•e›©ù¥«9¨Eü¼AœÇcÙ°S§Â¨Q:óH;á?å&³FÍâg!Ä@ÔsÕáŒüz«­‚Óüc²û^|˜?v0Ï5%ö2™`CCH[.~p7Æ`^Kå§%/Ð*ˆì'Œ…Ê»1\&Go³KwÙ÷³x„ jKŒ;äëÏvBHµh—ÿMcÅ%“;}Øujlð{Æ^ƒÆøO‹±;3mýuçÖ@ËðZPluœ1Wv”QÍšurF9‹¢U&e¬RJs«/A¶sù`r@bÖÛ X8q;«JùJ$‡\ò ÊÔM=¨Wš§rÒßÈïìhËÑ‘'ÎdPåbé•pG:Š0H üW¿ÔZ œ˜qµ6!ÒÒ€PRº ló°fþ%…ÇÚ1Ìï×= Tä¨Õ)x ©_âý‡+“²JqÅÏ™rZ”úãÇâ…PWÜêuïòJBê‚¶Ü­OßÇM™Bðh± ³>À-ZB½m_„1ÃE sŽýäjd„‡Ð]ôâæ)m© 9ë)‰Šò”W©¯ó „銫­¹j¼‹ ¾„bL€*wð£ŸÊ{.W×,RãÁUƒPº}Ç‹ñ ò{÷ÝÈn¾Xàëv‘ ”pkÁHë¦èXt‘¬ZcæªÎnðTí¹¦«ýÒ7.GW3õ ਗ਼€!¡ÆÿA»x»æ“õÆ.MÀÄýçg$âXÒg±ÅЏP€fwN„‡Æå\ú‰’Ÿö2¢0±=ú9º¾=ªýc5åH %ÓÂÕÁJ$ýÍV»š+µwhê›…±]'ɼÐGw\ÿœŠéó”b®ƒ}ºÃÔ,:oê¼Àt:«eø•Ï<²ÀÎ’ðWã$/™ÈŸ$el¯Å‹[¬üˆ'aP½ýj³Vî‰cyé{;¹PwÇPœ ‰mÙZÈÇ9~ûù»2U•–Ú*´þæFÍ,ŵÙ8&žÂðçÛ7¿A¿@… öD1‹¾êCYW ASÒ9Á Œ÷âDZY7ob VM’7ñçÃéwƒš––8µž>¾_‡íïyìÅŠËÕ Þª!ÈôGÙ_œ?b;¢5 ãäGI §Jço$ê3k™‚ 1mQº¼â;€qV]ŽXâ ¿”­Ÿ5@J8Kÿ» î‹ËéT…ÈÁIbܼÂRŒc~ý°%]bJ£ia†4èÔç[×eIVKdÞa•”zùFŠ"ñZœªœ‰âñ;ÌCRIVýÄ‘JˆþØXÇbNµš{iúv¨„عʆt’³õ} –’ÍäF@•CŽq}ÚöÕ9ÊšÓÌ> RiâZ¯‰™eqú09‰RÛéçÁKh Ö½Ë.ySP3ª²-QúÒˆS”$x)=)øG;ØèŸñè67„HÔÁ·KÖü(¹R\€˜™‡¬¼a,ÄÖ!¶8÷XÔ˜£±YŽ`K("1{ç7º5[EÑà¢Î‘07.¤-àÇÖ*NnN¢Q®ï•ª‰c@Ù‘ŸÄóGjCû»DLªã Æ%gÒà6ÓÇž Ð(°¤ñ„ŒÓ©}¢ÞM2¬§–:Ký¡ÉûŽ4X“lˆŠ³£Ä±©£2ìâ¸?öý‹ 8E.êG`–æœ ”‹…ƽQ Ú{c÷ º'sÄ(È*LG!y»ä¨)„ÂyÙ+—^F+,â'!i Ài䃞©bvaúb«.úÙÔŽO‘É$ñzÇjŸ›.¦jÜ?Ã-$Ø“®iq\v‰ÉhÍjc |ãP€§RGÆfîÔbl^"þ®Ôšh¹íð <Ù5×Þ‘ÔGëÚ’2ùr­Öˆ·ÅYS<þÉYàDi^²¯‹Ãýt-Ýq2|7‘¥ 7Ñ£–ú_àC?oF׊ Èp2snÍ!ƒ­”wå×"Ùø“¼Þó0­Þ•&J7OÒ.î1(|5r)} fU9Èx÷nxó(Nwd|2½þ!M¤1ÎþY’-!YØ÷ç ‚'•fºñlHÛ#‚{ó1ò%¨í/ãæ¨«Q#Àõ<ž)È}J…ŸP´Ìõ° < ø¼n)Ä”ÓÔÙÈ•ä{ÃqNÜr~ÚÙŠÛÞ|f„"Zôžk,2JµN”«.>->*¡ UÊâÁ׋\àQñ\ÄÀ>T&.] žÙb¿Ú_ôãzjòFÈōޗçÚÌx °r@![²ööo7ƒ[ÌííHÕÀȵ†Á•jȦ—¦ŒÍ‹=˜€7ÿÝæê.vÒݾ”G‰üwÉÕìÈ…> ¥H³.…SgY¿¦•Ð ' ›íÔן7¿ŒéÕíÚ°öç U2_?Ê ÿðFœP½áM”–Ô› >'Np“ ž'»ªÿä”§ÐüqXÇ;â£Âèýä4ŠH%®7Ø_‹y¸ñ>ÄñÄ’ö/¹ÁÚ[åÔbÀ_ÃA1\çÊcjƒv‹¾Ï´ºWÞQûá@µh) àV_Œ“»„슨É,œVêˆñ(äº-ÎöŸÒ1«ê›6Tt:1¤>MxŒér½Á: ­mÔg°|6È*qHÖ•Ò§8AÍ«êøo­˜ AÇ»D°ÇIÏ>í0lƒ¥¼‘ÇiSúvíïGbÁø-‚ˆËUʦñm&–X4XôX&E«Ú>¿È’Í[,®N³ÔO²†º®ñÌŽ®YC ´Šï2EÔa.œj”º:@ŰÙ}á#™”@ömÖ—ÂIŸ÷(H9Æ÷_4ÖË'ŠäôvÌ-“•Cý—|3kŽÈîyÞ·°îüné/ñiÎ㎅²@ß±ï€"­¥ÑÞqÊÂåoô­.á%Õ˜è{ðpãšYñ-³% R64Ä$$ü¬xƒÔÍ»y1QûÁTgâ^ŠÓ –„å(qs)¸úÁ#R°ô3x½iµÒ8ì•ÇlEü86‰¼Zý\UyEÉΚ‡p| ¡¹Ê]òjôfH>F>åöÌIßÞCØK5àúé,0TgÙÝÂãÎÆfŠ%„Òl‘í@ϯu^41ÿ!×Ú@y„—Ÿ­,,Ç .äÇeÿAaK€=°’ ìtÔ[jþ²k†žptChŸ‡ÉØ ªè8s”޹œ‘¨t+/P›ZZùR ÷ù£i±Nö²µ€L¥Z¼‰é}\Z>ú&ï`dz÷3¡VO´(aó›…Ô{Ûö6`‹Çö}§âŽùÁ zw¨ÀRe5ÊÊmþÒr¡‹ÒK¡ÿ¬L`ï8æ1갺ķ9AV«À´Ô M¬ nšÒq æQ¤aµ'‘sÈ,–‹¼jrBV¥³KQDF)ÆÐ¡½lI=FÏvP'5²þÞâ¯vHêáu:ý> ¼8>ÍÚt†mˆBXV‘w—M·û•(†ØU)ñõ»Â>ºnÄé5 PŒãñ¢®iØÓòF‡Ã)*®×KLªÅ•½¿£JXW}± ˜¬Ê¼›íWM_Áù“xÃf%4ŠLÈÕ%ϹP¶¥:å‘@-4R÷hЊÒ—Q°Ë…o@–Mêè ‚¡›üµ½¿ÕI9VØ' îô°sr0¦ÎÚ­×r†Âß[:µa°cºçó6óÇ((dzQÒ³CɵhÌöö$¹äuEal¥ÞÔÿ}~ù¨Ø¿f—LkrˆNêËèqƒKÚ$yŸŽ~ðkCÀ­­Ï Ñ\ N¹ÿ¹Z´¥#"‰½Â±TR ¤ÔžÚv]MÊ =FÆZÒ‹€o€pãïh7úª¾w±ãó`ÐQþtŸtçÀá§K¸œÇ ×ÖÒ ±²Ü‰ýއ¬úÚ_)žGwÂç\¢Üèš `«³þÉiႚ,ÆïOù +îÁ³Ì[rwöTPCÈEtÎЩ¦ø“K€Öi!{E\N5¯ã÷´]×µ]Ûï$dÑ|^gG‰š›Oe])«“¶OI­Ž|”ö;”7mñ}޹ƒã4‡*µÕ䃳cw/#ŽÝ®l JˆÎö®‡h¾\­§ñ‡óó’ ¡þ²[_Ï>³ªòFL p´Nw}Hh˜SˆQP‹Þðz¥Â}¦÷É: 4¸‰¿°{yĬʯ“½ºáP øÏA…fU9iñ^¾Œ5D¡ä÷«x%/Ù‡W¡Z¢øÚ³˜'È#-µN+ÊÂøC…#ô‡ˆ(DS~ô©/Ö M;ŽfhÍ–.©Ä©òSÑ.m[7ñÝéî½ÇâEÍe £FóëÄ3œV  Þ KKð iu½úÞÙ· 9º`%|¤DdÀ&`å—5llª¥u \®ûñ*$@3ý""ÿ¿j"įð¾öïRÐ…)y>1wW?ÌA<®ÁÔTêlGQ½4rÐ*çAU¹húëáÇ?kGÿ+ÐVM˧ü %òbˆkEt0KžF ‘ÝPB¦+pŸ} -*Û\ë«JJ€§r€ü̸à"Á$¿¹v›w†Nº•vLÁóÇN!QÚ§£{ã°-áÔˆ˜r%LœŸL¥ûƒ `ÇЙ¯yùýÕ7I8’Å/îÔÎ0q^ìN 'ä÷¢2BÆ-3»}ÎŽz²Ç´‚š ¾ðiÜ_2x6p8íov²×É{­»™XoƒŒ›ê® “^0êðž+/ ‘;\3kM/s–È6õ3ÉäL»–„§îäø·¼ ]ë›…ÜGFèô°¨‰˜Q¦?zž X÷*¾Cçc‹Ù'¶oÑ,"ÐH›¢œz“PJf ϪU¯NaÁà·Îy¡UÌ¿î#G&S%pF`ëU]ƒ/ÐÿAòc½Þo(dH´OåÉ—7uŒ¿“à ™ÂMw–ÇÕ5¬5h\‚SÆë}±ž@AŽh^J¡0Syϧ¨põ_Œï¿Œ7$î‡ÏG\_"ã[çóNõ;‹ ÿ(¡šñ%Wˆ³[7í<)<+/ˆ´òÓïƒ6yÃ!== ™Úv3<ÅË8jîØ ¡_C9×Ô ñÕûwdÒ›†š«pR}ð¶òFxXùüI0›šàH<šÂ§¥7`šÍQ 4ÇíðÁr’È´àÒBS=ùGÙ¬šW†3XjçÅÿǰ¯¤ÎÄ"!·ò“ºÍŸ‹Ï-àÙÝ®Puñî0ÂJyXDk‘(œt;Ì>å8‡Ò‚m‡XÀ¯³ß“ËYNûbleëîqÇŠ³\å[Ñ.ý˜¨K»GòO±U Äih‡u䆽PržÅòÁ@¥ˆ ˆßûwsŸ )ÐîÑsðΆžÚSx‘Tòa^lJ¼\[HK^¯qè`—áëâ¿û&gùZ©\ÂÓZ %¡× fƒf%óÒ;ß#9K57W ÑÊ> »ÌK~”nº×ÌÆkž+’ÀƒëSå÷Øøzù6KÙí™ä%»Û5l.‡À´‰ ñª=ùšv¯ 8¨Æç›)ÃF¼¯Âþ—Mq?|¡ØÌrOiY³;è øÝ¨DNó ‚S?$ûÄò&Öd¹ˆŠÌëøê8+þBþ²}-Y«iM6q¡qjZ…{†ܸ Ťè•~=peÖÃÖt?ðÔÈðŠ»ûT\.ôúm´í3ù·Ž³ÃTÁT1g5סAÕ˜9œÖÿ°Õ ˜v¡ö7À÷Ûܣ鴆Æêæ, íÉ0ð ¤DÐõê-:M©4Ç'‡ß?u]çÝÀæcfc%?X€Èþ~º.¶1À“’%b]Ö“*K¬¨ñƒŃãÛ'r³c•*˜yM—NQE[Ñn¥6lζx>u'D{€éøÌ§Aœ÷WEŒND˜¡+=…òÿ¥ñóCâËÌ|íjqß þÈrÿ†T"/fKÔðüWËQÙ4ºäœøôL‘¼;DùºSÿ Þ{ ¸©¥I ƒ':;A~€÷  p"úÛûa8‡°/?Œ¿€²–èNˆþ1ÉÔ¹XxL2Kê§µ¨ëc Qw(–Täרî»Kƒß]<ím®Økü(›bZ–2jå9¾ð†ô±[ 3dä,é?IµH|œÅErs}Ç_!Þ1—vvJîÁá?œ–Ë a'=l‘lùsË}lwÃ<¹87|ÃÇy€ UM"ÞðÄû6¯ŒAÊ€‡/Ž[/cÒQ"ÔÛUh~æœËŒÛÒÛÞç1­’è&§:ç3A5nËÑC'u¸r±“ZP…J©>¾Èg(%²&S;wF@ÇÄï:)“ž.P2±é{_¾r)å‹JÈÁžh‘*åÑ×NE˜N4¿t¢ê>È+Z0 ‹YZsurveillance/data/m2.RData0000644000175100001440000000030312376634041015132 0ustar hornikusers‹ r‰0âŠàb```b`bad`b2Y˜€#ƒ'H<׈Y$ ļ@|‘ah/y€Xˆ…€Xˆ¥€Xz 5 F,àcºyiÈûC‹£`Œ:P}Äèà…Âgr˜ïæ Ê%”Ö!k^bnj1!Àn ‚9ò“ŠS‹ÊRS`ŠŠKKR¡–´¢ÔB$‰¢t#“s‹aF@‚ì)™ÅEùé@æ?3/ô´¸ surveillance/data/MMRcoverageDE.RData0000644000175100001440000000151112376634041017176 0ustar hornikusers‹eTkHQ>®lÕ4·Q½þÄqÐÕ2b³4léGt¹:[³3rgÔ^Dý¨¨~ô"(ˆèGDDdЃêGE"¶êÌÒ"¤ìÌ:w48÷ñÝóøî9çN]Ubq8€„JiÌ¥e^ˆ†ȃ±4—ÄãuŠÙÆkæUÕ¹ói.¡9’UôŒ ð,‡Î` I!‰çÀs^DRì9#GB‘ ŒdZ^ÉTnD7·raÛ<ÕÈE³Ô¯d»¸0‚zRîŠ*3È®±u„ºà).Š«™eÏ\ÃEŠ»|lL K4¨á–LŠse‡>ä1Ú`Š3•Ž^²>ÉU.,¦hÃ&‘õ¦P…Æ“DŸ[vÓƒ£Ò:Ö‰ctá»}¸°ž1á¡’Qý?ÇùÛh…¡1Ý–ªW4[íÉæh©[6²Þ¤QÚ’Fsà!“i3]æÀcäàßbä+:³d-‚ 51Å6­þøµ@ÎiƒšhÀª¢`âC€hÀ×»K.@Nì„nœ¸40wÀžï1hY°úýÔ ¬v@Ήk~¯DÐÙùö÷÷Û«Ñé®ÿùâýdt4qsæ£sèôšqgc?ö½x?éðü:‰²Æøëoè÷Û-œzþ~Û3ìßèÔ¡ƒ{IÅBg^š4~ [¼öîÖ¥ˆÎÅç–›Øoû¾_f£[þÓ÷ãóèÑÆNñݼ)'í{Û1Snœ9VÛø‘q܆¬f–d?t‰<¡ÛöôÖòDº¤Dƒ}fÖ«ÏÛ*Ž`&vê@ÁœèÆ_½6Ѓ™¬ÙVtWµ\~^…î´ë…‹æ¥%ðKû÷ÿ²Ü#ø{‰ 1 îùåìÊìKìíZscÂî.LËûÔv®T·LÇ^߯œÓ}z&»YYÓ4©´©Ô0Œ°. á~- ãG %V³åyvÂ5B‘{´¾qÇŽ¶â—! S:|ƒžY|0ûÉ ±20XÆ w€a`8F‚QàNp¸ŒpÀ¸ÜÆ€ûÁàAPcÁÃ`x< ƒ'Àxð$x < *À3`˜&É LÏ‚©`˜f€™`˜ 怹ÀU Ì5`>¨ @XÅ` X –å ¬+AhÏçÁ*ÐVƒÀ‹` x ¼ ^¯ 4ƒ(ˆ8X Z€N °¬IÐRÀx ¸ <Ð6€ l¯ƒ7Àfð&x ¼ 2àð.x¼¶€À‡`+Ø>ƒíàð)Øv‚]`7ø ì{Áç`øìÀ—à ø | oÀapÇÀqpœ§Àið­Ñ“«J"­uãþÞý\ ™þ õ5ÙÓžåzb65õ˜Ìý#§q‰ÝœŽ»â8„°oßiN¬ÌÅ¢ EWdÔöÆî@—K½Zú‰Î–ö:ÑU´×ìˆÖKÿ\±_"Z©ÍoŠVIû,Ñ¥¢µuÚMåþ¦ŠN5 ÕoŽ[g~Æ…Z#íK¸ŸŒÚ¾B›§ŠýÚ¼Üo¶ßiÒ>ÅP÷Çý0ô¿Rë¯ù©§ŽK?D+D‡iþÒ~‘æãºL›Ÿû˜!:A›¿\”ç5?£Î7ÎPýç<ì¯Ôt¦6ë<žÏ›yiJçÕ4dó°Ä¸eá}ËÆ›qá:©«µÇóü¸@Ï­‘úïjûù­jÿÙ=š¼Ì®_s÷Ÿëô¤è™r±oUÇ8è¦jÏyN_Qýฮ¢@O_`˜GÅß3×Ôq¬g×mUÇs]î÷ûuÜÙëê~éí9Ïw]¾®í›þ2U¹þ>±?°SO¥=çç¾Õº§^õç`¹ÚÏ8ïš ÚÓ¿ã£ÕõY§=ãÉy;›ÔõØÏ:ý¥ÿGºÝf¨öÜíôó¤ãG¿¨ŒÛÞ«ñw¿fÏ}ñüyΗzqp Ì[7Ð|ÅLˆ2~”u.þ&õͲž–¯—Í@»¥þË(u¿ä\~.½¦®s)¦úá‚:ÿ¥+ªÒ¯Ÿªþq>ýžóþÓÆ#û\ÐU›Gïß.ûà¹3ï¿-WÝ-ë0¿y~Ì[æ1Ÿ#¼7rŸú[ÌÕ·nÏæ×e>2ÿwžë®{Þ&‘6ËÉñ´¢æf»CÞ-3F¿ßp‘@óúÎ.›HõzБñ2ǵ×U¦=7‘jÉá`‰ßm¹-é¾›½‰¢¬Š&­4ŒÂ}#™·²A³+v¬èz«%®Å.œvÄ{Ý¿ÇNnj±SüºÎÐú9IÛ[îÆâ®„G7(ŠYž_r À/‡åšÙµ7VРÏÌÃojΗú+T¬uaÚ»ßJ Æèoq+Y/û©Á Ú`Œo?BŸ5HŠ£vÊsídžˆ”õüW¶Ê_À÷§Tºt³!míI/‘²ÛàScCÃPž DÒ^:¯ƒÓíHüD2i¥¢ñ^¯>Qª`surveillance/data/q2.RData0000644000175100001440000000030012376634041015133 0ustar hornikusers‹ r‰0âŠàb```b`bad`b2Y˜€#ƒ'H¼ÐˆY$ ļ@|‘apF$„¡®g`F·Œ‚Q€ð1 ¾¼4hýâèQ0 FÁ($P}Äèà…Âgr˜ïæ ÊW”Ö!k^bnj1!Àn ‚9ò“ŠS‹ÊRS`ŠŠKKR¡–´¢ÔB$‰¢t#“s‹aF‚ÚQ Aö”Ì•üt ó;Џ surveillance/data/salmonella.agona.RData0000644000175100001440000000065512376634041020041 0ustar hornikusers‹íVKNÃ0ØNÒŠŠØp ¬ØÑ+VˆÛ@C…”6"©¸Wä»'ž­p”‘&¶çóü<þ(wO×ÕS%"FŒËÄXßuÆ2‘åÜ·Ë¡n·Ý®iÛúªÞt»ZÄ^„ ¯ vsŒ=H~À9ŽÚœÄbÕŸ‘ÍP|h K±gu.«øVs‚mFù…æ2¯Ð/µ_†Ðůt\ 8‚øòºœjàzê5ÔùÜë’ø/4¦$ž'j+ȇ5ε>êÆüÙ†º@ÕÈÊxÍ%ñsa‡ÏüaŽ¡µ”T+æžS>êÌxiÍ%ÁÈFb\k$Þ/àò³‰cœ¥‚bÓòc|˜sZwð`î.ÉI÷‰û¨!r˜ö.“øaMÈËÕW&ãfI.jÌJ~÷ëGî3÷´ÅœŒ‹õã.ÀŸ«†ûÀoß ÞC>÷Fâó+¿s“L2É$ÿUμf«ûhlVŸ—‡ÁíÌÑÿa¾«·Í ÇŸ§ÆY÷<4ýG³Fа¯÷Ükß¼“£ß§/m=2¼ËÁX®ß†‡¾Ûøîwд+º surveillance/data/momo.RData0000644000175100001440000002102612376634041015570 0ustar hornikusersBZh91AY&SY)9ꃤ‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà#À@éPâ€}€ T¥7ÅŠ>€€ * X €zð$((  jbž˜Q=¤M„j~ ¦§èMªl!Šm˜F¦õF“Ôò4FOSji¦&&L&M2dÄÄôÑM©è4Ó&SÔÛS&š14É€Ðdž˜ÿ*ªSÀ¦C@i“F@5M0šhÕ=G¨Í ~¦ z€Ðh€ÓCÔ6§¦£ÔÙG”ÛT=&ž§êž‘ú£@ =1L‡¤Õ=54òjm•˜ 4@SA  €ÐÓõ$¤¦Jh1¨ F€2š4ÈÓ@š 4da`##@@шú EP§è„O6‰1MªŸ“&Ôi3ISjiú¦›SG¨Ú™4P44õhSMê4ÐPOP44¡¦F†‡”6£M4õÐú¨©’=½"¢a24Ú)µ0Ôɉ¡å4ª4L@=FLM1=FÔhhôz¡ú 4ÐC@‰éd2b6¡‰ê&™OP ƒÔhõ>´AA•œÝžr9(XœÞwC'§ÖL}»OËÃäMtçg¨)U×Ú].vLý ˜ŒÑIËjõÓ;-¶ë}Âãr¹ÝIÞç~Šš£Ñ_f­k|Äd†‹K)¨—×l6?†ßw¿áqyÎRs·?AGMåóÖØZ+Y|u:Í|ÎÇïÚî7{îÉæsºSs©î÷†ý§©«­õÙ[\¬\Çu½à~Ü^?'—5ÏéuzýŽÜ÷wÁûÑRSSÔUz+kìlí•Ý­\ÀÍÎv¹î·w¿ACE㥦ò*¨óyý•ÕöË;[uwW‹}·Ìªšª¿Memwª¿×acì²³´µ¶·¸Wsuwx±mïµuòö A`ÄØìv;Oþ_;?Õ¿‡å|¯ûìúßsÝËE²ÔD&³vl9oœ&í×-Î.»kÖn¶¸[©P›(RXÂ[:mk*„üUéÍͶJ9»ÈKÂÒur]c—uŸ·é¿nôët6‰©eV,²ËP«‹\5k¦5ÃKÛ¨/m‹­Óá¶;°wwißפÜè2§H*²¥Œèݳ-¼·Z¬Ø-ÝÍ»X5ÒìØU’§Zš¢iV²í¹¶®Ù»rÙÒË.lÞŽ9yš‰·"ÎFI±,¬e'K.Ù7lÚêÚÙV^Z“W¥âlNZ•l«($¢TªM¹eêç$¬àØ2Ûbní­ˆËÜÅ—…Ù½©+¢ò+¥‘ÎÙ¬é ’"bõä>I“$“/eŽ‘:¬°ì¯8Ýæ¢ó¯Îrâ^–6Ãe¨å±R%±n^•fÍ–['üܹ50ñ¹mÆ Krƪª47s]Ng8Ùg,¼¶WbÛ»¯HTâÜ´–ò͈èÎVæöÕɶT‰®³™Ås:·zÛÙtz'hç€ìJD “ÅÓ€L Lf!IËX#Zç/¨M\DÖ6É»nKwvªå“–Ãy[ÕÓ¶ôtç:¹x¢%ÌtjÍj<"Tx’Ñõ“!  =ª8Ýœëõ®VUêÜÙÕÏEâ¯GM¼ÛnÚˆ Q ™¢È¥2V (#ä(A”eÉ,!˜Š‹ÕX{»±Ž6ÀxØë¢F$B$BD5©"˜ •*$-z/hE`$"pT R`%4‹Òá<*PX9^ÆL«yó¸ J†#*Ò/gDF*2ZFŠL¢úŠE BVŠÎJ¯#hHÍ <Ë9Ç:ÄŸQi=æŒñ¨ÂP”Eó8½T•d51[éY48@Âc¸Lò` Ra ®pžs«BF MI*Fv3ȉïg¼ÐšHÈ3|\®Ö!Z'tª©rI›°@ Š@Ó±lR`d»ŽK ÂŽtœàe*× ¼Ná5XÕmXªAä¨F"NÚ¼A„!‚fTÆWjù£ èTEØ–Ÿ+ÃR¤7/_Ý2 2£EJ/Tg¼¯2¡X ¬¬‚Sa  ^û÷€RT±„Æ”+₤uª¥V&8ˆNÀ"T _dÁ+Xa€:a4(PI÷–•¢1‰× 1x@… W@þÍ?QäôðóQ&‚f®¸ –_^) #–(Ì;Fo›Ì_C¥ð5ZDZ¾ýpMUfxÛ…(N0 <B±£ÐðÆRÈ0ƒ!ƒí݆BŽ úúð>ÀÂÇ{¾¾h`@±`mŠŒ­€J8mGÃªà€…”˜kÙK wífƒ{Îãý«1þï@=’–dQáÆ³x+…ßGµÇ¿E¥gzŒ!)Òñ–×à~5¬Òƒ±5KvûI¤ÒÀœýÕ¼øÂúIu$ß/°[~%…MÒJu9‡Ï02„ŠIƒ’ÖO\µ[TÑS‰MUÆk°Ã¶Ñ7ì²[ŒúBª`A’ÕPæÎAq)aA(QJ²ëÌ&XFHp´Ä7‘P ¥¬ª(†4ä’6â䡼åÑ p€6Ä…..º}[ë’áZÖÆå¬,JC1¶Ø¸O¦O —æ'û’q¨,""Ñî*¨“‡Z3ÀSœŒ X&qøë"³®´‘c¼°£šÜ%‚8w¾!·Ô QÂa‹dÆNGD@Ä@CL4B ™Ô"@ˆ æÕT×Ë za{èX¡#tâ]#Âi±é³8æ;ÂÆ­ k0†=Å =#ŽÖBh‘¬$$‰0¼Ð¥¤‚î(TB˜ë…4Q€ ThY(Ù:M“Jqízæ …å1ÀÒ$±D3SH¤€ËBAJCÍnI Ä&bj£IâN@Âè†I¡(ïØba²Éž»…(\Θ³R ƒ 9Gž ‰£ `MÇD’ÎhD‚‰ wØn’† ZG,|.ŠPå8º´1&¤$VBЃ¡'§İâÙDÃ)/fWMˆÖÓQ±Û?ò…ÖNQ`9‰<’JÉgœ,-¦ð­"û/#æˆs×~‰¨!Bë”2¬J4 äŽ,àªLéêŸ.–˜3³€9 BÕeá–ªÍЀ‚íý'ìôß+—ðÒu?¶Ž—¯ý{ú1ïæì¼nIÑs}†úÜ3Sõ-<Ù§£î6`·Ý/=ÿnÎÕ¯ŸD„Ëkcžr“yÖ¿þn}ì% —ƒÂÞ×oCÊqnÙŽøÞ; ÆXÀ "ÊlÏ®˜ƒP‘P.ªhU.´=¨*ûÿqþûµ4ãžOÈ æ½!¸Æ}{H" ^aÃmÄ×HÑ,”sƒ„ NH” â:è߇â%EcWò~WÙ¡Ú¢\ù˜nhÎ$øp™z_Df%£*¯yMÿ9@ùrÄÒéçÞsÒ’à¦܆(N:Võ”ФŠ"^õ˜eÖ%¶¯§€›®r% É§P&bc!Œ .V.ú§¢ìv£P¢0G|·èúŽ]v«=ªcj`Mzxc$ð-h–f†#R d1pŸŒçÖ¬DQH2KÛòÅ+9Ax]PY]rx‰íÑšSççÙÏþ+Óˆ¡ q* NÏ]#$F˜ò¢ŒÓ¢KöÎ•Ž´v)ô NÈ·±†ìÉ:'¬èXfgÍÐd:ŒSÅÚ”ª: ¦¤ô Ëy[,ÕŸ%•¢ƒa ÍLSSìÓ¾'·ò‰32ßfQŽœ¡¥,ëÇUä‚ ò¦yfŸB߬ÒKNuY¶¥WÓBZ'í†#”‡%;ê¹¶ýeuM}SÜ€"âyç.œ¢’¡E!‹¡1>x)Bp”ÏǼCR×uÁ>'›yúX9ÃP«~‡Íòªæin¼1«=­Wu’ákäW¬XÉ©­Z“$߯M{X«ÅÛ³MIWÇV’î´aVä V˜·éq£S®Û4žH 6„¬¬ƒÏ­¥ÜWæïñ?E ü;»ãÌaöÒcŽœ˜Âª v¢8h­ÙÞ6TST¶ Ô• {$I¥©ij\جÉ|RÓi£SWm\²€Sl76„={®0cŽ‘l¥¥YQ6oÍmxÌǼê3þ)˜.Bã¸EÉ,Û20f%6½øL§0ÉPYy–L:Ç)ŒÌÎW×y0@[w¯ø×qÇÛišhL]Bí?ÀŽ’©z0è Æ@7 Ä×Dz•m£i‹-ÒUØ¿ªéâÐáÙ§^â°Þ ýkïb†V/íëp×§TÎÕowY8 ãÆÊd’.OG5?R¥ìz9óÙ`~I hÍ¢£qÔ«pøÚÔÅ'7#\\8ƒ÷º"$™gn.$^ì¿¿CUh ÃNЯ Èh!2xþr%cRŠ{|8L¥`ø4o«Ì{[ιäÐçÝérÇÆrÿ'mWûáæåæçí?º;Jãj©Æ¾$ËsvÍÃvÎ FÏ'ÒÜoG&¦;7§^ïï/%É[g,æüq‡!üÜRSH££óÃKsÜþ8Ä5Z+›^:è·P&Riõë~Ól- ¡1ÀŽÕèy¹”‘TüUöëè•mÆ+ªûû5zðùü›$å0ž¿‚¡ÚÙCo̧“óÖǤ7{ÎèZÙ¹ÃsÞ)²­d¹¨Žr¥Ù)Ò¿q8ð÷“ýÑj|$«æÙ~¯Ð'’NÂÆ« ëV`§b})¯VñsŒææ$¤ò‡D+Û“/ ßgÉZQcèò¼›²÷ :öfSó*øU-Žªræ@8q„QýÄŽºÞÝC¥w¹ž]áoo<×½ë;*¿ÃØJ;ð>p¤œYªkü¶ŸÃÛÚDWœõR€ƒ¹Óí›kœIË}{LVù)}^ÿ“;sÊñ6µÁM:È™Gò™3½ {Ÿ£ŠÁläñºVÛ pr—6\.uòX—s,R³ç1câ âØãéÓ¯²>ìü_ª#±H„öà3å³ÐCOàÄõG_í¹×ùW°Ý¿ÔJ’>E:¦ŒÂ,F|2ê‹û¸<¶ÿ l¶ :꟣Cù¾Yέz7¼ÏjöA¡àç{2¯p»h>âÔH<¶c_Ò$ƒ›ƒÿÝa‘¾N:>ÏÙ#싆vè›Ìþƒ6Å”·û½?q§ åfÜW žw¨`‡ès¿õSE¶¦ÔÓÈ÷žäð­ÅBé-í,Ú-4 ‹>„ó¯ö1ÍÓ@:Qž¸÷ø¾?ø%ÏWÐÃñèb¯Wž½ÒIªüÇ¥¥6ø-—õŠH̪Çò¡:—þá½³ÊMµ9g¹@|5Ú§#{_š2ˆmæ)$Ã+‹.N, Ê *ôI²ŒNÁæÍ4¾n¯@Í)ŽÏ¿‡a jXÜU"Q%ŸLl¶nî)L ªÞmêïÒÓíc§í¸r/‘ýp«Ý•YˆWéhDìÖ\.EU– »¯ß¶¼%j=ôeC™„QtGˆ:ª‹@Œ²‹I&>ýE¢SߢÐS(KJ£þ¢ÒSž‹E1ò”ZW«û- (µÑZþ¨–•1÷š-!côtZHÇÊÑh=ê‹M*”ú|§ÄôßEýÓQb‹ÝK¿Pg@]¢söeMªûµ”dP$$Y€×’‹âd½?_Œ¢Ò‹Ñ%üb_·¡E¥þ½¯ÔQô4^¢‹Q~j-Þ4]Ô_¼ö_2KB_ K:üõ’‹î;¨¼íá†ÍA•Aâ<¨#6PnÖ È ù2_+¯ÇQoZ’ôuþe”_ýÓßÉtÖ‹à5öTZQ|É/š×ÜI|eCÝè´Òˆõ?‡ÝövHˆë\”D•%L®Ïl‰ÙÙZ“%F0œYmeJÉ2q%b šÌ©2áhÂ|V4°G’]4 ib¿…í´ ypΤë,HTÊÂHD‚HfI'UaTò0c a£Á« £E«I<Û’ñÔ»°c by1i€Æ(Î)<‹É¡<||u]Ì¢éëÉi^_.•TxøéTt±E‚XDñÂð󴤯 m–$±NØ*4%µQ5hKJKŽ4‰g:?±ˆvÄ,y "_âÅTví¡QÛ] +·mk<Ò^%Ï;Ênº´sÎs²xLEÜ1Ý®œq¤[¦ øãSVÅ-–˜%œç=)¹œýy-Img ¢ö¤¸ÕKŽtVõÇÒ’ÕK¶»vÒtLIví —nÚ7磌Z˜ð%‚\õÚ>D–sœùÒ’ÑqÇÖôð½‘.ÜïM쵬’EHª1 hR1¦˜!o1¹²lœõÕËÒ%œû.8î‡qz™/—%ò¼<> Ãȧ{Á/D²K—ŽoOö’ÐKˉQã㢛ÓGŽ„¹çE7‡<ñµ ªÏ]`Ô:õû"YÏA:sœïñüò\};ÔnœóϪÜ[£ìkÚ$ú¢_å’òù|¾_>Adºï5ÁV ÔˆÕ0¬Êç?ei+ -Û±•K õÀUf5×@ ik—uàß¿aRÂGÛ°‚¼âååÝ»8ãã…‘d[·nN©8mÀFš`‰)¦š`ƒkmyÜF1”Œl®œƒi[K…{û«ž½"ÜX, ‚ß½iK@–ÒÞ½zp'üh Bß¿zõ,+„°¶õêh„ i˜„òÈŒc€ŒhJùÀŒ^><óÜ»©Ð—<ì6«ž8Últö»väi°–;˜#Ájª FQ*lßGû>š¨*€¶Ë2NÓ´í:ò`×] ™USL'FpÖFTŒ ¯Võ¾Dœª1°X¯]u×:¾a——w(J@G˪@ªªiz€G=jªš~Õ‹ ñA©™B@F1È1¹s!_’íÁÇ”`Ü_ ÎÓNB†SM4Î †1ãÆu8€Œi˜^KRªi±8ºàG ®ºª¡NP»]už_Á÷"^]•¡//—žwyЖs¥^ýò<ó±=È—9™•‹Ö‚>—R½ÜŒììë òp#9. v†…χ™Ù1’<–Ã]®´æfg{lØ 4¼0GŸ§/—¹‹GqeÑÑãQ PçkÜpèçΰÖì~¡^Žvw‰²$AshÖk/^°.øÏÕâÍ%µaÂʟ¡×™—²äÑ·ïååÙ¡ À££ÝkeœÕêë¯7$ol RY–çð0XDoÈíÐØÅ°Î¯'Ú­’‡ƒ››lK[p8×+ºÙÎú&$ú@Šé]aP¡y` ç:1.ýaÜŠàg‚-´Øtôò›ˆqàkvÀŽÏ_<âoÇ™“#áM‚¾>[ä·æ£e²ÏÏÈ5üd´†~ObùPF~&¿¼—;IÌjlv8±l¢›PGK%¬‘ÙÉ,dÒÅan;ÐGYµÉØI¥¡¡ª´ «[­Á‚t2p`˜»zU†]3!|ŒmÛ‚r).yçÓœé<²\g;GÚ’Á.8Îv¯§Û·¦ˆÜ‚0#Oòï9¯O´ÏÝó\fß7Òð¸—úýßSþþGÕÅ‹¢êÞ,¸]©Nñk¦Çiòi£ãª¿¨œ”/9OÕá˜~åT•ûˆ&<H¶&y••Û+™än÷<]gÍüçåÔì6::?sÉ×ì^*““ÉE}Ä[­˜âMN¬ã\*™Y³èx÷߯ÙÀÜt{^ªZYïÕf˲-MOôåõs¢çžyßz—<ñ³eÆujuë×®ûŸä%œç=3uOfKŽ8ßwÑçž8ét¸ã›qî$¼ s´ûé.ݹçÏtóÁ.Ý»vèß·mV¾ïÏn·¸ã9ÝoRÎs´mæ%Çþ q¼oâKžyç¢túb]»víÐt;y‰vÙ=Œ—nyÚ>|—nÜó½sÏ;cüĹãd{Ù.yãÑçqÇnÏü’ó¦äƒïn\‚¤ °#tŒcc“(Z> #Ào‚5Fugu€U]cððððÚ—‡•ód¾nK·<ïGqÆÔºûb\óÎõ7½.Ül†Ï½çžyéSžxã`yî3©Þ¶KŒçr·g9ÎðoœçezÒ^ªKž6“Ž=êKžzEÓþĽ̌cЩCêA Zä#$ JFDO žÄví¤Ž8é'FÄqÆ’3º7øÒ[Æ$q½-íKÕÄ\ó¡óÜMds΄sÎô~rKi°G8ÙLÎ$g; Ÿ%¹ó¤ŽyîUݱó¥ORKïd»w ¹Û¶ªz14ÀiÐDcÒÜ·0žÀ¹naÎs²}©,ç®ÕuïÐ;ûûõ§‡ KÐ%ÇÏt³%ø\qªqÇ~Éï$ºõëµ9Ï]Uׯ]n½{ûöW˜—^ýbùr]zê½"YÎs¼g=u«$³×U~4–zõعÎsë|õÖ=Yë¬|±,ç9Ýg=u޽ú ½Yë×zë×ÞIg;¯ƒ%ÇÏD—9Õg9ÎÔë׿Zïóý×Xõdºõëµ=A,ç9ޙ΋=ú„%éÎ}à–sÜÎs­yijO˜%ýâ\ñÆãî\qïÒ\óÒ¹ãHä—:Î ,çA.½tNâ]ýú’ïÅ|1.½u‹Öç‘Er6íípÌ1{‘¢Spä7nÀ°m?ø»’)„IÏTsurveillance/data/hepatitisA.RData0000644000175100001440000000203112376634041016707 0ustar hornikusers‹íØù[TUÇñàa”FÙž••™‚Š0Ê*¢bÑÞ#L"ƒ3ƒ¶K›íû¾Ú¾ïûí{ù§ôXï;÷û™§9ÅóôSýrïó¼ørÏ~Î=wžæ¾šò¾rç\ÌÅÊJ\¬”_§ÅøQâ\ÅþÄòáäX"—Ê¥²«+MJfboXÊ¥óÕ0ûY™È·€p Õ›…ƒPƒq‚vÅa8GàH…£q æàX‡ã1'àDœ„y8óq *q*à4,Äé¨Â¨Æ"Ô ‹±KQ‡eXŽX‰U¨GkâÖ  ÍhA+ÚÐŽµèÀ:tb=6  ÑlB/6ãLœ…>œsp.ÎÃù¸â"$Ð "‰-Â0R¸[1‚mEcØŽ ²Èa;°—àR\†Ëq®ÄUØ… \kp-®ÃõØp#nÂ͸·â6ÜŽ;p'îÂݸ÷â>Üð ÂÃxâ1<Ž=xOâ)Ãç˜Äø_ák|ƒoñ¾Çø?ágü‚_ñ›Ëß?±à^ØvG¼e"Œk-n°¸Éò»ì¼ÃbÜÒÛ&Šë7)_íY¹ÕWZ¬±Ø¤|+ß ô‰âòêw¹+î_ùk,…+Ž*¿ÔK×xšUß·ÓÚë¶óî°ÃøfK_oéZŸÞI;·üv‹ëÔîDñ8µ^Þ84ÏEv^ëŠË·xãWÔ¼4¸Åz‹•^z—®þ´Ô^U^¾ÎçXÔ:kÝxíWzåzíÍ·8Ï«§y©]í­‹ÖOû±ÙbO8áÂõ(ìO+ßé•×õQ;ÚÇê¯Õ¢¿N…u·ò^ºÖEûÜOoðò5ÏUµÎ~¿‹½¸lŠôê)Æã_Å*/¿ÚK×¹úÓõÒõôǯû´Ý¢ÖGóÖºûë£ú­–wÅQשÍK×85ÿºè\ýè>QÿêWë§výý­ûCÏ µ§ùh¿Õyõµš½—®u×}­qh>jO÷­W_ýèùÓ7F=¿t®ç|¯Å.+¯çö½æ§ù(Ý¿~ê_뫨yxûÁûâ+LŸ Á§ZlŸyEEfPd4±-|6̶rû\øIW(“îÏ&3;’ƒa^øªsÑÑÑÿ˼Çb¸|¿•éÿò}–ÿ7F,¾'üæmü½ÐA^ï(œÞ}*Å(F1ŠQŒâ§~÷諸¿ï¦ë» —ÿ_~>qÚÎdrëß_†a…l.‘Kþå$“S­-™ävû}æh254ÜŸÏ §Óª:k,=6>’È¥Ò£­™Ä€?’‘DV# †$– ¦²3é¡pänߟܲ`nÆsurveillance/data/n1.RData0000644000175100001440000000051212376634041015134 0ustar hornikusers‹íVÍJÃ@žý ÖJµ¨ñ ˆÐ³Å»=ôäI<õ$D»Š -fƒ¯ã3õM|qf3K6K‚’^÷ƒ/;óe33û“ûùb:\ @‚Ô¤BSK|€ñ.é«+uD2r„Ü@òšm]}é4ÉùǬsÿ Ù¡‹»(Çò©‚˜çlOÈ“(W¶eÞ¿q=‚9ái/‘{PÕ>åÑïÜ“ÎìŒãHÖh§PŸÕšûìóëƒ(¾`;Ü‹ØïÍ¡{²ß¢‡P-š¯KEºÏÖ§¡¾a¬®QGqDDíëî Zÿææ»rúŽ [‚ú‘˜Ý6|9ûš;§î7¿Ãl•¿‹Æ\uâ`ýhMñi–~’-óÒ°£Ÿ ó¼(Ê8äÓ[n}Hê³î_fùjïŠõ š?Ä_”8"¸ surveillance/data/ha.sts.RData0000644000175100001440000001761212376634041016027 0ustar hornikusers‹í\S×Çf+(bˆD Y`N݈n„%‚¸ÿî…‹ºÅQê¬Z÷(V´®:jmÝŠV±8qàþÍ m=¿Ïçë É}ïÝ÷rϽçÜûžéÒ·ß—Ïápô8z–ø¯>¾4ÐÃ¸Ž Z£`yý(u‡«_±À'†ŠH¥0¾0Ç÷j¼ü o7ÎË}äÈÛ1FxHÞFy‡2EÌ^mDZ@ð¸b…”C¬Ä)T@ì¬Ç©„|…TFª U‘jHu$¯HMÄ©…ÔFê u'Ä©‡¸ õW¤Òi„4FÜw¤ Ò""DŒH)âx"ÍÈ×Hs¤Òi…´FÚ m/¤â´G: ‘NHg¤ âƒtEº!Ý‘ˆ/Òé…ôFú }‘~Hd"Gü$Q H’÷=… ¡È@$ G"%‰|ƒ¨(DD#ƒd02Š C†##‘ÈÿQÈhd 2‡ŒG& ‘IÈdd ‹LE¦!Ó‘ÈL$ù™…ÌFæ s‘yÈ|d,DEÈb$Y‚,E–!Ë‘ï$ä{d²Y…¬FÖ k‘uÈzdò#²Ù„lF¶ [‘mÈvd²Ù…ü„$#»‘Ÿ‘=H ²Ù‡ìG ©È/ȯÈAär9‚E~CŽ!Ç‘ÈIäwäòrùù 9ƒœEÎ!ç‘ ÈEär¹‚¤!W‘kÈßÈuä’ŽÜDþA2[Èmär¹‡ÜG2‘ÈCäòÉBž O‘gÈsä’ä ¹¯\Ÿ‹ÿpÑÿ¹èÿ\ô.ú?ýŸ‹þÏEÿç¢ÿsÑÿ¹èÿ\ôn^¿þÏEÿç ô.ú?ýŸ‹þÏEÿç¢ÿsÑÿ¹èÿ\ô.ú?ýŸ‹þÏEÿç¢ÿsÑÿ¹Õê¯ú¡7:)ƒ@•"¯]çõ3\Yž÷½Ô›Y”Z®Rk éÉ[¼,ÒìžÎÂ<¥_”B5H¦‡'`>ŸS¿-iÞü)}¥¤yBiÎémóyÅÙoQm©¤yPqóú’Ô…ô¦tµýb”}W¿ó®ïäcϵ|ÎúÜê÷¡úó­÷×J³¿¡ÿÊ1>ä±ßg b¯KÚÇìgô ü­KºÖ¯tÕácÌÕ},•Æ·KÓw—vŸSïŠÞ s ü]Ôþß·ïü×¥$s©ò{øXëokÅ9ž®~£¨˜èõ2%=VQg›¥Ï©¿*k}ŠyéÏùz—UNþ¹Æœ¯«¬Æ¹÷Í™ÿ*Éy½ï5øÔÛˆcþWÛÁ‡RQ׫´sïs|RÉTÚq²,æ©ËBoË=?ÆÜæÛ|¥´ûü”þóoñ»K=ËRŸjA×x WÀ57𮱤8óï3§U•E<_Üú~̹‡÷-÷¶mJ“Ûh•ô:–´m·üÇ‹J«1פkÞ¯(_ý¯Æèÿ•ó }xý[ÚÆÇòÍOuþ¥ÇßxþL? $ï¹Í¼ggóžµË{ÞÕ¬à#jX$B®È{ŽÓúU¹—Ïé ^–Õ<ç’ÿŒÜ@{âÌ^‡ËƒÚ×!j5{¡ˆÈ^GÊ#´¯UŠö: ?`¯‡*‚ôïû+Ùkµj òUÝ =§V`½-Jð|‰D"‘H$Ò¿Nìÿx›%‘H$‰Dú¯‹â!‰D"‘H_º("‘H$‰ô¥‹â!‰D"‘H_º("‘H$‰ô¥‹â!‰D"‘H_º("‘H$‰ô¥‹â!‰D"‘H_º("‘H$‰ô¥‹â!‰D"‘H_º("‘H$‰ô¥«øñPÞ›årtþh›qÞûÿÊi“‡ÉUáXo~Þ´Âw‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ‚ ˆ/ÿèCtüèÈH…ÊO@OÒAAAAAAAAAAAAA|ÙüGŸ¤3P„û)£UÁJ¥æa:ÎÌO}±‰7…%ÏQt:‹€óy:ÊçZ¯‚l©ŒŒ“«C”­Tr¼¨yÃ6ÛÒí¥È’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%K–,Y²dÉ’%ûß·ÿÑŸ[Ô—Gr¸ú ¼màç§üê§Û8 lð¿bó^²GñŠMUÓƒGÀfs×U |×ËuB*õÓñãztþ¸žžæÜÁìÅŸè‡kÏ ë7XGµM#UÊP·(µ*$"HGõyyËUAQšs“\Tr†þaò(,¤'xý’4ïâS œq¤Ü ³Ê-ÐÂ5-ïÕÇår‹Ý¬M"Ôꎪ…Žöa›[Ìfª×¶E¾ê _–*ÏöR :‡×¼ç'¡õ+Ö½æk¯Õ[œz¨³›Áà_X?Ó£PNTèìÑ¡ïÕûr »‘û^».s5žÒÄýj9¶[âb¿·ÖŸùÄ«òÀÄý›W¨¹.Äq=ã½›üⵂVI3ñ¾ÈÊQ?7ñŽ '=¦çÿ½ÓnõÍé‡@|^0®{åÇ ¾¿ÿ^¿­×@ü´M§?ÿr‰ó¤ªµ3@Rm£Å“]¾ ©ÐíäO}+ƒ¤ÍÜ%£í‚ÄÝ¿ë’4;?«b$^vÄ—v)â]x[·½¿ž ┞¾Øïâïj˜ãó@¼h^NâþÚúóNÇÊ>X­m¹|‹Æ7n‰SgÇ=²Ê«ÁTúð ƒzÀ´=hZhM0u3ïÈ›™¦¶Uι8ÌVówe ™æëÖ êæK ½°h˜¬Ž±™µ̶—?v¤˜Ø•;6Ìô»$Ôí<øS·/Ž;ð+˜L¿/’Ý·Ï£nnW`×Ö5l瀉J¯Æ#gßüTÆÍÞ`â´¿ÑýËôåX½5V‡çTüÀžc¯£A¼«ÁU*¸×W1C‘±LÜC"?gsÝÕ ,䣆ÍT®P®7}!pâXJ÷h’žbMM¾IxJÇôvB¬ ZìÉû $‡ÒoLHÝ’#î= ôâûó*¥¹»‚dÌîl‹v}Aû}ìéÝ‹A¢nµ…7Ó$í:g=¼ ’Åß.”mš’ßmÓçnÉªÍæ»šÏÉ®±ÎÞNv Ù^¯ÛžœË Iq¿=çXfþ~E¯ Jª’qO.ï vIÄ–ç‡Û˜¤÷Á[r‡|7bnÅÜŒ¹]ùyçW^qN%ëqï‚Ä|C{÷% i–z|JòM¸Ú|wòï qÉÚøôÏÜ>¡ÏQ§I ©â7¤’ùv4h8wÍCH:öá‡LŒ×^—rµüf5•ò œÝÂÝG2üÀêÞ#ñ¸IÁj‚ýäªÕÇ•ô;׺¡;@ðôÜ(/~74ï'=¶,nUßü,Æ8´³ÌÚ´.Ÿ¹1Ì\f†.ðý Lì;7Ç´¶«-‚IŒÞÍ ’F`¢/[å; x¾ó=g k¼ÎuG¯ïŸÆ+ž¦ÿvÒxm óú­¥Às‰m5íÛË`bk™z³u˜Ìz0$îÇÀÛy1mB˜ñºžZÎOëÎæ¦‹¯Ê¬À|À: W*ƒe ?qÞµz 0vŸu`;&ù8üæ}§ô僪+Îdçö€ÕàŸeª—ƒÕ£núÞÚP®ƒzNò׫ØuÑáÎ5ËÖu:Haw~öé°šëxÞÄ»’FëÕ/ßmX.Är#–+±Ü麭AV"{FËWŒ7Iõ^>}/¦‚¤‘Ùÿl·â(è4¹Jœ¥x¾Çf3Å ïLc÷‘}@2eò‚ì A2ïÚ=§¾6ùkêÍ)¿~ÉìþÃA/®Få‹Q\¯æ=/ÃBà®m2|„»¸“æCï`?Ð rotgÕ0ªP¾ó¿D0ºzÍñ^2ŽN5Õâj™óòs7MNÄr$mÎÔsìåé3À¤fù‰ç¦˜¯ƒÜQ°ë)›Ÿ\žp ŒÔM~¼¸w/…O6ú5¬ vã?ªâqô=Œt¯=q§ðŸ,'g¿çL­ Vï2˜¥x×è¡«v‡—ó­E6¾²=››ùUå<ÜªÇŠÓ ÕèÑÉîmk¹Ü+¥;ôq¨UøÏw±wO™ªZâ-)k‚öÇÑÃ]u8ÛÄG«qÏ´ñÝe‡GnXý5GR6eøïÅ^0øŸ˜Ó6Þyˆ/›Ç%^ â;ãÏ$-k^ÕÙŽ·1¸3øuwüÞþ ©dº|FÚ(Ì•6ÿf° s¼î&[þw‘’À]Wšn­¿6>$­ÔÖÚô‰¸I…öÑWòs– ±ÜˆåJ,wb¹Ë­4¹–6÷Òäb,7cS$Ú)6…ÂFM6*²Q•²ooJÃý6hÐ~•^ ˆ½®?Óë3ÄM.<ù¹gC·=Ä«ÛÁÄÞúçBqûÞ wºÅk¯³Íþz–õÎXƒû¦II–`ÓzŒ¬Iì °ùá¦SÓí™`óÈqɰ.Áæ–§ÕÆK›Á¶CC·Ž¿Ç€m€ºb‹óÀvNøêYáCÀ6ó¶á‘Ú `ûaŒþæÞl ^û~yóåG÷ÛoŽ)¿Y2lŽZ/zäí6÷~»Î:º›úe<úêràÂÝÍË%"»LºÑÒßìd7"Àêfu³c§9…j”y¡_ÚGmKÙÝ´Ñ®Z¦å|‹Ab¿Œåoå» s#æVÌÍ|…ÏŽ¶Ëw?,²àQL²àRl²¹ý€“ûÚƒ¨ÎØúpëˆ\œ½ž¹íQùô@C›¥ ²àü)]:DvrÓßÃÛ€ðÞ,C= ²¶é0áî¸}ÕmºO‘_%ùŽ‘– šâÐlÜÅzu·›e¢Ñ-ÿˆ±ŠѸ„5zÒ• Ú2WÚiëíq¸bÝC Z·k½Û%8#«ä¢M}|/Ø ¢΃\G‰µ×ÃzfVçºþëÞ“Ÿ Z¬mÞ¬¹³æÏÜApjØ¥òXæË,èdA( J5A* ZÙš³‚ê÷Í07w5yãz‰ Øß=ø€l*X pZ3¤ú°}`U­«× œçüªÁîÀú›#&OëQì¸bùØØ¿äÝ®C~wökâé¸r›´ÖÖÕhÏ·²òù¶úšPÅ,w°¹˜¶kB£ßÁ&pí¦‡Uîõ?zײO„õ1oáw1kÙõÐá¾eë¾:¢°û¾\…-ÒYÊ&ZdQ³VïP0ðiê}/gdáÉ¥5sÓ—z*G,_0ùó!ÿ[ýÓC†ŽÎ-§þ}òFv[‡´ž—Ú %Žz“=1:pËjp+¶ˆ]NÛŽM;âË’f}ÿˆìù·×ãvOª¹-—€ØÞD1<ô ˆMœ—TÛaž¿ô§Y dKƒÚÜ”åªl!…-¬°àœë,xgÁ< îY°Ï‚Íùi‚jYö¨˜–¿:ËžïóðkÓr˜ìybbíZƒcdÙŸrm"˱¸×ðÑ ±,çZÒì=‡:g~½FMe“€[uõýT‹ çu^Õ$½+è×=TÙ}å20\åñ`xý80úéI•égÌÁ(ôtÔÆiÚ%B¶dÈ–µ9«&‡e -0´A= òYÐÏ’–h“„Wç÷é§rt6ØÂîõò†"s™¸—ðÄ•MFü f™U#Á«PŒÔåâ™.¥…jyÕI¦F ìîø}ôªv1¡|hðñôî Œj;AþÛ_ L>²Ál;Ʀv41=Â^G’wÆý ÂPyÖ‚Þó@8yêÀîwžpÖÌŒ'‘ËA8õª,;޼© ÉÍßß÷9‡÷ía¼ç<‹_l@˜Ýa͸ƒ­òGE6J²Q“¢lTe£,[Qg+ìlÅ­ÀkVäÙ ½vÅþoA|pËz ¼¸ål¯ãgAxô/›Ü*wAø½çæ{®íµ×C¿ËÙÌøaB0èôðRnØ:0LÍôNëÖŒ!wÏfïc7žÓ‹CÉÀŸrakýŠ`:`–]æ WíJºeÅÞ©;³»ƒÅžN®?‚Áß;W»‚§ûRb–Ëõ\Ú;­˜V½·^³¹qGÝ›LÝCÁªíÔqÜ^ÚQ‘•׎ššQ´àèÊVêÙÊ}Á}V?æÖìNÃÄñõ§67Cƒg‹Ò¯IÁ ÷«_ã|#AëÜÊ¡ûRÙõøô££N‡Ðá¾y÷%é,eâ¾Ò¡0®ÃÏ``Üóû§-æ¬Ñ×ܤ›ÛתVJ÷üö©6µÃ¦zØÔ› bSCš©"6u¤]Ž×,ϳåzíº#[‡dë’l’­[²…ÍB[¸Ð.dtZµ÷ææ™ ^.þÙõ ]ßÊòùˆ* =øâ§®§/ôêÜAÔ‚4ï)ê}¤Y‰ƒí§€ôζ›7¶+Q£ù‘WÁ£Î“ÀÄ0ðèïà“)-Ì£åä*Ûðh¼sØ×àÑ"lÅã¹à!]Æ_µ,<*ÕYì‘t¤×o{hÿ HsÚ;Ôö ¤Û,›ú¬3HÏ-òK»5 ¤)¶.Sýóë—3z>éÌé5¶Ú Ò *%[ƒt¢›yô a ] ïlÔçH§L¹ÊYº9ÿü”§š¬h ÒÖ{ݪC'Öê{þÇ8¼Nw¶.ñÞs$›¶Oïs@’m[Ç›·ÉŠ¡N&µ~Ñ~l*‹Mm±©.6õÅ¦ÂØÔ›*cSgl*M;µÆnS`·-°©8v[ƒÀ|Âü óWg²‘ô¤ðš7Û8×ù(/ËZ9Òªð¼kC¿D ívÁF³€Ã«º4FÝïpþûlÇüdÏ«ƒ½Àø…¾´KÜA0Ö[¿XñxÛŒÜõø‚xÝ,Ž×.׌7§¦Zd£Ußñã5#¿ ÙíÏ7Ã;I]«qoÁÕ1ó—ê ú ¿›]kzžûÝ«µwì‘ëNÝn´^Ã=Èr_ïº4ÖY–#ÞnØq²ìç”O£íOd/äré¢ã.²çÒ;æON„˲†yœn$d·ÊåÕ‹({b²5ùn LötKõ±ãõ|eÏ>e-ËŽW>o1C– A~wø²ï‰5.+È^<«}¿jW#àˆÛŸÛZ/A–2øù?WÊráÁö=€óó%‘ú¶?p/Û×Ч?û^ut§Ò²íNuvP…»ÓW·pÕy•Í\A¯-ë¼Ö­ýšœé?¤.,<{±öxß']¶•²;íÂ&¿\Š… :ý(õÛºZ³¨hÕ EHX˜<Â_‘_kNÎÿ½«…Xʽsurveillance/data/salmAllOnset.RData0000644000175100001440000004715012476355037017233 0ustar hornikusers‹í½ ´UñÇ»gæ-Ù÷… ûŽéy/™y VM@E„$&A@#⾡(¨¸ ‚↸+Š È"03wE÷Å WþUÝŸ¢oßûøý<ÿó“óÿŸ3s¸ôûVwß®ºU·nUMOîQßœpüç\êjÒÒšüYO剫»a9NZ¿|Õ9û®ZuÄêõ+6¸¤6?8ßX±vÍ©gÊS¤ï-»s‹ò·[vçV®8n Þ¼ ø)à&x)x ¼xøðÓÀO> |,øðsÀ'ƒOŸ> ¼ü|ð¹àóÁ_ ~)øåàWƒ_~#øÍà·‚¯¿| ø}à€?¾üIðgÀŸ|øðWÀ÷7¿þø»à€ÿü ðoÀƒÿþ øïàø®¤ÀwÕÁCà‰à©àà9àùà-À‹ÀÛ‚wïÞÜ/Ÿ ^Þü4ð¡àÃÁÏ >üðóÀ§‚OŸ>ü|ððùà Á/_~9øUà×/¿|%ø*ð»À×€¯üaðàO€?¾ üEð—Àw€ïßî¿þ&ø»àïƒÿü ð¯Áƒÿü7ð¿ |·+ðÝuð x"x xx6x>xsð"ð6àÀ;ƒwgà%à6ø©à}Àûƒ ~ø™àcÀǃŸ ~øðéà•àsÀkÁÀ/_~øðËÀ¯¿|ørð•à·ƒß~ø:ðõàƒ? þøÓà›À7ƒ¿þ2ønð½àø~ð7Áßü ø'àŸƒ þøðŸÁÿ³À…;”c <žžžž žÞ¼¼ x{ðÎàÝÀxÜï Þ¼ø ð!àg€~øÙà“À§€W€W‚Wׂ׃_~!øEà—€_~%øµà7€/_~;øà÷€¯_þø£àƒ? þøfð­à/ƒïß î‚ïüðàÁ?ÿü+ðïÀÿü(øŸàÇ |O­À÷ €'€'ƒ§ƒg瀂·oÞ ¼x1xÜï Þ¼ø@ð!àÃÀG‚? |"ø$ðrð ð™àUà5àõàóÀ/_ ~ øRð+Á¯¿ü&ðà·ß ¾|-øýàoü)ðçÀ_ß ¾|øpüUð7Àß?þ!øÇàŸþ-øà?ÿüXïM |ïx<< < <¼¼%xkðvàÀ»‚ƒGÀ-ðà½Áû‚ > |øhðqàÁÏ/Ÿ>|6x xø<ðà‹ÁÁ—‚_~ øõà7ß~øà«Áï¿üAð à?þ,ø à[À·ƒïß þ:øÛàïþøgà_‚ þ=øOà¿‚ÿþwïK |_< žžž ž Þ ¼%x+ðvàÁ»‚Ÿ/ïÞ ¼/øðÁৃ>|ø¹à“Á§ÏŸ ^ ^>|ø"ðFðKÁ¯¿üzðÁo¿üð»Áï¿üAðGÀüYðçÁ·€oß þ ¸Þþ:ø[àïþø§à_‚þ=øà¿‚ÿþw;I; ðxx*x&xx30ù‡ü¿Cþß!ÿïÿwÈÿ;M0ù‡ü¿Cþß!ÿïÿwÈÿ;äÿòÿù‡ü¿Cþß!ÿïœ &ÿïÿwÈÿ;äÿòÿù‡ü¿Cþß!ÿïÿwÈÿ;äÿòÿù‡ü¿Cþß!ÿïÿw®“ÿwÈÿ;äÿòÿù‡ü¿Cþß!ÿïÿwÈÿ;äÿòÿÎ&0ù‡ü¿Cþß!ÿïÿwÈÿ;äÿòÿù‡ü¿Cþß!ÿïÿwÉÿ»äÿ]òÿ.ù—ü¿;Lþß%ÿï’ÿwÉÿ»äÿ]òÿ.ù—ü¿Kþß%ÿï’ÿwÉÿ»ËÀäÿ]òÿ.ù—ü¿Kþß%ÿï’ÿwÉÿ»äÿ]òÿ.ù—ü¿Kþß%ÿï’ÿwÉÿ»äÿ]òÿî%`òÿ.ù—ü¿Kþß%ÿï’ÿwÉÿ»äÿ]òÿ.ù—ü¿Kþß½Lþß%ÿï’ÿwÉÿ»äÿ]òÿ.ù—ü¿Kþß%ÿï’ÿwÉÿ»äÿ]òÿ.ù—ü¿Kþß%ÿï>&ÿï’ÿwÉÿ{äÿ=òÿùü¿Gþß#ÿï‘ÿ÷Èÿ{äÿ½E`òÿùü¿Gþß#ÿï‘ÿ÷Èÿ{äÿ=òÿùü¿Gþß#ÿï‘ÿ÷Èÿ{äÿ=òÿùï0ùü¿Gþß#ÿï‘ÿ÷Èÿ{äÿ=òÿùü¿Gþß#ÿï]&ÿï‘ÿ÷Èÿ{äÿ=òÿùü¿Gþß#ÿï‘ÿ÷Èÿ{äÿ=òÿùü¿Gþß#ÿï‘ÿ÷î“ÿ÷Èÿ{äÿ=òÿùü¿Gþß#ÿï‘ÿ÷Èÿ{äÿ=òÿM®À›’[‹#u€MeÅ‘zÀ¦!ÎSØ4iYqg¥è]?}Ý àZ4H–ª¯i¬ß°|Ý.J÷ù}q‰ƒ‹‡Öœ²~źóVH”“NÖBºsµir”(/Ï›^&M2œT¼BMVÊšd 5É0S™å©D¢©dC©D ©D1©d5™ÍµmäEÕe%¬ÿB õÎ È=ƒ’Hv> œ Š—Ï2$ÙæÌ !Ye†df‹w<¼VšDRC/“ë$ÂnHÚÈi@¼ï€Ü7 Qú€d ‰vâqë’õÕ$óªI4SšJ›JäJ´˜Ê ˜Êõ©h*•þÓÏ"Ÿhª&ÑF*yMfe*ž'o™Žr¦‰×$úLE…5‰"kÒOM¬©!ý6^$í-È&Ã8 ÊÏ0 Ö1(5$Qí°xÆa™MÛK“s$S–1–~‡uChÑ$b¿‰x–DÆ5}'² &2Þ‰Øvr²H$™J©x¨ôf敌_Mì­&^½.ãU»WšŒc]¦~]2¹ºÊ¨| ÿ ±•†¬î ‰ 2/òü†d+’a$­.ó³.w]²„šÎuá·&ã]“{jÙ¦bß©¬ðé’‚¯äó…<‰ÌÙäËð-s?¹†&Ùi"}%•%2N‰ð›Èø%WKÓ9x4ú>¹„ÿôgÌ/=JöT“Œ¼.ó¡!¶Üûj\/MÆm@ü×€è}@lz@²–éc@¢£†Ì†Ø]2“ºdÏ9…Žjâ©k’ý×ä9µã ›Èçø\ü˜è7‘h"ùÓc‹yžÏ õwõ%b¯‰Ü›É·ÀwpÏГú¹ƒ¤ÏW3v:ŸÄÆj¢ÓÚð [ó¹!¼4dÞ5d6$JnHä? Ïjˆ ˆ- U̵†è³!c[¿}ÊXÖÏ“þdÌkWH“Œªv~Y}²È–Ê3Ñ"¼$×2$?@÷c¯r&7c—% ™£‰ÚÖÙ…œ©¬É ø±ûT2‚TæYm 9Å¾ê ¤IäZYêâêbgu’-ÕÛÒVI]Öeqª¿AšÌѺÌëšd¯µë˜£ÛëHz)þlø~t.-Ÿ•ˆÝ$¯‘&~*ÛOäy‰<+‘ù–ÈüÖd1¾óDøJį'²æ%â,í'èïAé_|p"öžŽJ“{Ó娿åÒd j)mGlGæ@m§Âÿ×Nʼní§Ö±—t¡ôù7æ€Î ñÝÉ…ð&㔨?ÖìBäKd¬’“¥É:”#MüC"þ*‘¹™ÈڛȘ%b[ÉÈ9ºúBÉð“0Ïtn‰Ý'çáGnCç:?oÂn+øÊý¦ô—žË:­sùDü’úšÁ¢ÿô€Â_å}ÉáܵkW¬;e͹«Oã×}ù¿IÒoýÖoýÖoýÖoýÖoýÖoÿ÷í¿ÖO^½bågJX¿îÌ5kˆì]2þóßÖŽ÷Ä'|ÚÌÆ”µkÖž»jù†•kV´nù©ö’NøïßôýcÿØ?öýcÿØ?öýcÿØ?öýcÿØ?öýcÿØ?öýãÿ—ÿ­j~íœåkÇÙmµ~Ê)kΧ¶Ÿï¬á·qêü´'ä%}üq+W—O>†&®]·æ¬ÑõÖ­\}Æ8Œ ééåëÎXÿ¸"àcò º{êªåë×ÿâp)ìþG\7¸vù©g/?cE0féúµpò7´vͪ ÎX³ÚþINœ^»j͆#Ö¶bÃÃÓ ˜™zôÚåV._uäãýée3û9`*ÇxWú|îµs“iºqŠnÞ´†ç0 8?úhzÿ$þέ“8BkÀC£ý­ çê4ÏôòþRúà:¾~z¼¯”£ý=èa{æoœ†9n 97'À‡=c"÷LódæïÚ$O“ÉøÑëçycp¿ÉÓàž×ÏuO»v§Á×$úš6=˜^Ôvâoãuý x-ñä±ñóÇy8sË×ÑL‡ ïú)®ª+³‡!ÎM‚ßùÈa:Ñss»©ž&{ý»ÒŽí¹F›fK“àÁl,q¥}šÜƒžnln5¼¿'ñüA^÷ôRót0ÿ¦›ðl÷Nçúa¯Ï‰ïÓ\9·&q̓aOGf¦K³]³§4ÏtåërÏžèWÞu£ý§¦uöý¤=Úbi»ÐÔ?lNÓ¼Ô‡¨Ý͢߅Þ8LAÏ“¹fš+ýÈTWÚûWõYf'æS&пŽé<ä2›}ÌâÚis&×-q¥OÛ–k¶C¶Ü“úOû?þ9¾öuŘê˜IÖátãÇeÒtC?Ý”ídiº¹Û)ÒtnMAÞ$í2iºi¬nħ›Sÿ‘mdÌo?-Z2“mV³½Â>lm Û5è–)*»næx«4Ý„ñWÅvùºÉ¬n«ð*iº!­nr¬±éfÐj;º ø ð¦àê&Þº‘®nVùiº‰²nœûiŸ@ž#¥éæ‚o ]ŒÌWK»\ÚWx®È£[mäÛ¾L„gÝâD¶•ø´+¶ë¸^Ú•®ØjèE®Øþä=,+b‹É„b«Š|Œä§ÛêæpoAÝhNÆ%Ÿ?ªÝØõ®Ìbu#`Ýœu­´³ÐljÈðbd½˜qÐMcu#Í[Ïò¬¿Iû¢ð!¶–o%¢ÛÒœtë‹‹8ÊØäÛz¨<¯tù–]ù5j·f›ŠEò÷ýÒtÃñÏ!Ç{¥] M7¹»Fšn&©±Çbiº‘ß%ðº~UOºaŸ<Ãɘ¹‹ëtô} ×]Å©NÖÑÇå´Mð£vu¨+¶±Ñíx^†·ÑºœÓ­OĆòmid|ómyZEùö1ºì¤éÆê·óŒµèBÇT·àØûQ{¹þ”Ïó‘CÇà$ištë‡Ë¤=ùuÃÜÏ6•ÛU<ã Åxê6 ¹íasÏa>À¼9©ý‡-êÖ0/uÅö>:>ºˆn#£>W·õRû{iß‘¦2ßÍ^ˆ~ö”ö|ìGy?ÓsIe:Û{9çµ÷¸çyȬüëfˆŸr…}ë–@ ÆV·Óí‡Þ.æ­[¨|Ošnß"÷¤ºýÎ7¥=ÀV4 Ñ•à|[ÝŽE·w¹ÚÛmÇ<ܹu‚ý¥°Ë|n©-=^•Ÿaûº¥ŠnFüjôøl÷ãØê;]1Ÿ^ ÿê+t{˜= [Ï·‚Ñ-ed¬uÛ­J{Q¿Ð-¯òí¢¾áòíát;«Tì1}%)ÙÙæIeÒm–DùvFÚ¿ný³9ÏÐ5ñAiwöàD¿ùz¥6øvìGe¸¹T¾+ЉŒ‘{›´ºÂ—\‹ÎuÓÜ[Эʫ[ð|ÛÛÓè–V‹Ñ“úd¹7ß¾éŒB?¹©_8'úÏ·¿Zí ô¡¶¦:Õ¸@ô™û€/óÜσ>»íŠu´…éœØÏÚ–C? ]膯·coça'ÑŸú] .£Ïò·Í%µ{Ý^Gæt¾…ÏÑÌw•Y·'Ò-×Dï¹O?›’5+YXÈ’ÛnàªÛùè<¯×ôâcòy­ñ…îv)sÓ@»9Ô¦Äwæ¾îlïrð~È¥z}#v¨kÜkÁ¯@ž7a»¶öéV@âÓÔ—ç|è‹nò5EýÊ÷»¹ç+Ø‹®ÕºrTÏ…åU}Á2W¬AêëÔœìŠ5ÿ h:çO€ötW¬7:çvE\¨÷ƒ®õºë|Ò-¯4&ÒíÞ$öÑ­©™‰Æ]2_ÜAmSmEão×ëÖIù6Jºá©Ú¸®Ÿ—öQW¬:n:V — »«‘á4d»ˆq=žéŠÜÿ@þVytžœÅ¸h|t”+ü‰êúhžõjôy ÏS>¾Žœ¦Kg:_ÕÇ?Àu—€Õ÷ÿKÚ}èäbøRÿ¥ë†Øfn7oä¹ë8ê¸.vEü¨ã¯sáùð|r_ꊵèdέ Èõjoj:¿^„Þ…çóB·°“C§©¯—¸?™‚lê—ÔfÕÞÕ~¯cLô¹+¾žg¯E&­Sßæ¿Îòd/c·qüÇç#ó9ÈýŽ/ƒ¦6­ë€úÓwÒ¿ÆÜOÊgcù§na¦zÇ·~3_»4æÐñÔmÜdíËÇýA—Ïß|}×µA·à;‡˜Eý³Ät5­¡Ëxä[ÈêÖï Ì4Vl˜o—+c_“ñ©ÉZP[Ï–²âŸS™¯ù6|ÇЇܛŠý§2òíY7Ã?j¼¬ö ºÐy¦:ü óVçÓï]±õœúSÝ2OúÈ·Ôñ×¹ªÛñ}Ÿ¸eGÖïðÁêsu»ÅEð¡Ûÿ ß!¸|ûGÝn4ßöð|¶„•¹V—<¢&cS“qªïÉöŽòìÚÇ ¹j{³ížæj·º}Þ/Ys¯,Ö€ÜGjî«k‹®#BV]gZØq®Ys»Q_*}ä1Æ_¹Få×\N·t“*?u;GÝÞRcñ»‰\Ÿoƒ«¼I^oMü»b+ØTtœoQ,ú¯ILT»Œm4Å÷×$öKÅ_ç[!Ê›oÿùÛb¬ò|Cã¡#YÕiÌ¥sNç¿úõ™?‚g]t P¿ªkÚ½…¼7ç2~ÚÏŠ¿ó-ööfÔøRs6µÝÒO·ë”>Ò•ly¨Ûd /©\“ŠïÈ·žÔ¿ÅFjb5ñõ5‰gSñºq®[ÝTåo0^³¾›Þ†XB}›úD]ÓÞ†‚o‰­rõPaWùZªXý—Î{õ-ê³þ†ŽÑçBâœÅآʥ¹€Æš2“/"Û.ÅÜÒí~ó-E·©øŸTl-ߊR¿¿’ñJÅ—¤ËøÞ£Û›Êo‡©ù†è39 ]퀭} ýüÜ_¸ ;Ôy¦ëÞÑ©ÚÞ®ðioÃGhþ¥õ‰ëòøwKô£þSm]xÎãU)l'•µ.ߎRøHeÝÏ·’þ2Èڜꖞº ¨Æƒb7‰¬KùÖžrM¾ÍçÕŒ™êG·j\ŽíXœ¡9¾n³ù‡‚¯üœÊ¤ñ¸ú¹?÷Áº^‰LßÂfÿ\Ü—o)¼å1èضæ [¥:§%.NE¦| M±|Kæ]чè6ý¥Âw¾•èëŠx<ß¶Scs™ëÉÇñ‡#—Ä%yŽt4>Lã]w¯…¿{±«Oñ÷'áWcB;îBg›Z=BõóNôö¹bMÌë!sxÖáž×óê;¾D“¹”oŸª1÷­îñ­—“M\wãs²+ò@gµÆ"òiü”ÇUúµëWàIc4]ëuíT}ËüÐy¢¹ŸÖItÕØL×É·À·Ømc+ýÕÜó.üÄû‘Yõû Æ@ý’Ö5.xÔÙÃÅ5¹ì:Vãœó­µ]&×êß¹ ÝÃ3ÞÊx¿>U­ h,°Ñ±ŒÆÚ /4–Ó5Jã»`sW ÇÉô¥uuŽÝ€¼@Ç:.WñÜ›C‡ïà¥ßWð™¯o2ïu Ó¼‡ ÎÇþäøã§ÏRõ6lCc.Yަi® q§ÆfgÀ«ÆªšOHî›ÇF'sÆ„!¿êûÝŒÇ+‘ÿú×v%²]ƒ®>]ð’h¬ûK°Ê¨þRý¬Úºæ ?+l*ÇW1¾ª{õS ÜŽ,Ÿ®gܯ€ÿ—Àë¹èlôà]s‚ý8÷\d< þODö‘[æKn› “ÚâëЃòpz¾‘1¶ÅëЛ®}j«`£_à:µ?ϧ¿Õð 2i>s¤+ê¡JÛ›¦óâYèí$Æ[cö•èOë¨{ÑŽDf•w14­µh®¸Ìµj½Gó Í›ZO§ÿãx–^³>Ôþµžt!ǵŒó3+Í´&þlž­5Ý=áAºíÆsv„/­ck¾«ßw.kî· GÅZc×ïJ·äZ«»?“ãîß>TÏZûÓºø“òÙè,ÖÖ5ññ9­¶¨¶p?k¦ÆÕ:/uÝÕy¡~Fçú˜Ÿþ(ƒt=Òœæ b-ÏkVKjü¥õ8‰=òíÁ5ÖÕØ÷Aê?§‡/’¦µ-ñ)©Æï%¾ÑµVã*™ÿù6ÖZ{P[Ô>4–Ô¹¤ëàžðy•+óH•Gó4ƒ:÷Ô'ë¼U©óCý·ÎÁwpþòB¦|n|ÙÌ:tÇñÏZ/•ùž×~.%nØPÈ’¯µÛ“oI<1¯9—Kóx‰×ò-ĵv¥kУ¬}:®ê'§¹bîi]CçñèEÛ¥È}™+üšúõêÃun>YÕªo×øBýñÝŸå9“Öj¬­’«ç¹…ÌÍ<~}.±‹Ö¯,ÖW]óšã7XSµN¯uFk꺦õ‘1÷Ûúì[]1ß^˸« 3hMJk:oÕ'è¼ÔµéäÙ€gÒl=~)r jíã6ô§ºR_¬5͵ƒ—¿àÇ~ïŠZáÞ4•MÖ§ü{‡} ¯çs[ÖX󛮌c:®ˆÅÞ€~žԆ^ ]uð|d2?½2©mê?9Ÿ…Ì Ãõ´×0Nº^‡Ît­¹*_0ο„ö«b òVã‚E.ß<ßâ}bœ¯ko¾ÖÚº¬1›®…ê‡EÇy|v±+ן3‘óŽûÒ«_Wß)9g¾6=]«îžÇ¸¼Y6Býêótݹy4Ô5R¿sy¤9þ÷ósÐU+wqŸÖdt.kœ¢ñ™Ö VÛêBçórt`uû½á{™+×WÉyòï2÷¶?ç_Žªcµkõ—"—úo£7•å¡B¹ÿ¹™qþ|¡£\ÿ$Nø.MÏéœÔ\Eçºú µå/å]ç‰ÚÏ ÆáHÆûy•O[u½ÓXåéÜ£GµÃ£Ñ™­?zî0΂N4®=½è:¯sI}‡Õ^uÞ}]¾•±Ö¸MmJmIíTëyÿ}\‚”ç‹áCí^×ôÓèßìH×C]¿u=|Š+ãû{ ÷äᣑéPtø ÆáYôu´“#Ã{0¶zÆ û±Œ³ú§g3~GsŸÊ ¶±Œ1Ö>t_äŠï±G¹Vcõ7 C3;müj<±™wàÞ#\h,1æÊØãHt·mOž{8×èØª­®B§Ç!ÚºúÙ½yöñðu ÏjÑ×ÎïŽLÊÏ~ð¡ùɶðºüê÷n;q­ž³w´F§vtc·çw¡ÏÍÐëAô¿ 9–Âë®Ôñ^Œë~Èyã }ªýêš·?tã}oîÝšqjólû{;WÆpª¿Yð¾ÚVÈ·-Ç-¸GîSºêXýÅbžu ÷÷I<'ƒ· Ywpå;:6G Ãrôw§ÛQW¾±»wßÖŒßLt²þæqnkW¾S¡ñçüΡͣ?½GëyÓ]ùnï úÕ{'3.z~®+ßÁØžñÙÊ•ïýlÍØíÆ½sÀÊÛž¿ý-pÕ÷íùú>Ìý뽓\ùNÚ ŸÙ®|GN׃‰\3—k&yý›¼[rí ¯}Ö“òÙèüX;÷³GºbþíãÊïïÔª«W¦v£ß¡èü?Žk4?Õy ~Uãõ³ºæ¨ïÕµI}´­£šÃéy£+¾ïWës3ñÐoÀ·»ò;ök½B×$]Ÿ4[ëÊw„ôšëù[åÐù½ØóZçÝSáÝÞcØtÝQW>t®îŠüê'ODæ“]±~ëzz-÷hl ë½®õêÛtÍÑ5óVW¬5ZO{Еõ'­‰hÌ ±’Æßhl`ß+®tå÷Wj;?}”¾•gõ7êgÔ÷ï€ljÓjÛjc»@×¹?9´¯ÕÏÆæPôù,šêHküé«k¯®=oé:iyË&äÓ5Vã}ÕûEÈ¡2Hkïþ­¾BýçsÑ¡Ž«Î»m\éÃt^¨îÁ¿ù¿ÝÑÓŽàQäÕþŽ@o{óœc‘q?ô¸’ñzclë¯ÆèºæoD^£ì;Ü ¹O}àñ\oëñþô¥<Ìà™JSûR{±5gkW¾‹¦2©/Ôù¾YÌ?nG‘_å¡e®´Y=êœTü tyǧÁÓ‰®Œ‘—CS_²+âåu5zÝý,å™ú,õg3¦;¸òbå6ǹ®|pä[Œ¼[Ò6CNÕÛžŒÍ(Ï[„Üê«Íïšm<Ý“õtxVþ5^Pߣöw.ôeŒÇ~ŒÃô©±‚Îç]\ù¡Æ×K\¹6ú<êøO/äïi®|W[ý±úf‹ô~[•¶3c·+Ïk¢Ÿ2ï…L{¢›cÐÆÇÂë!ÈÿTWÖj–ÐÏnôµ+|,d,F\¹îo]e˜ãÊ÷.ç ËtøØÖ•ï[oŽnºò=q‹ùvFæ­àk7Æù@t¤< ß{!Ë2èz~Î/…_åo{úÔ±ŸÍ3÷c|¶weü毩ÊëDW¾Ç:…s[»rýœãÊ5t}Ìç8ו¿ šŽÌs8? y·áÙ:Fmx³Ø`'Wú(‹ æ»Ò–§¹òýìi®ôe“9ndzgÁß$ø°˜fx²+ã™®œs“\Cl}¦7F 8oöj~e¾+ßUûÙîD_6.›A³~m¾Oqå{Ãs]ùì4dèÊwµ‡]ù>ðý¦®ˆ ¹2þ™êÊßûLñî™âÊß(LåúEÈ0×Sìg¹2–Û>§qÿ"W¾£îljÊóBWý­¶AWý-Ìt6‘ë§p~’+×0ÙUߟ7¿¾=Ï3?cþî›Êµ;r­­…»rå3Ú¼m¸ê{æ6î¾Þ¦ºò]õ¹Ü;Í“ÇøìÊwÅ]õwV5îôáÝLWþneº÷ì©®œf߯Ӏ+ß#OÁÚGÝ•¿Qveü<äªïþ×]ùÛ‚º+'`ý4¼>ÌFk®ü]’=Ûžõ¤|6º(ÖV¿©v«º6¿ª~П§zn!ÇÅ®ð÷êk-Q_eñà~œSß«kljuÍÑ5Rc=]ßµ6£±ŒÆÉïâ¾gpÔþ4nP­ëŽå­O¡o[ãµ/S3WÚ°ÍeåUu>ùôœù½w ®ÝŒ£žS۟ͽ–Ëêú¹„ût]Õ|cWÚ¾®¬in¢±®‹ö=…¶#ûÎÄêmÆÖr=µ‰Cÿ ~ÍÏßþzds~È£MBÓ¸WçîúW™-ÝšÕM,βúÂŒý2ø?Ø•±Îèd®W>çÐ÷nŒ·ùQ}æÎ\£üÙÚgã­òLtåü°õË|ï4Wþ6ÆÖ%‹+üf1äü[f“Ó\õ÷…Æ×TWþžØÆxÀ•qƒÙ‹Ï“ÉÝpÕßC›~&ëͳº+c›†×¯ñ<ÁU¯<ÙU—nr˜\&ÅùÖ·£­ïؼt¥í x}[¼Ssåo>íXwåïá'»j\3ÙUc¥š§ó“ÆGÍÓÅYæ#‡]ù;È)üm1”=ßll8¸ÞxñetÕ¸ÍÆ;õd«y|»ò·¡fg&ƒÍK³‹ Á³ý9hµÚAWæ(¶VLqñoM_³¯š76zÜÜ;oòÛxX¼ZsåïVÇ9ÍÖêÞßvN¯wÞ56Ff¼g˜¬ÆKÂß6Æ6æ5ïyfAÿ‰7vÏ«s忳`óÌ®ñm4¡=iŸã4W¬ËVYLÓ9j5x[oT¦ù®ô«JSýZî«vdõ] uíW?l5}û^Ãê°Ói,º7÷/åÙºÎjÜ7•çïàÊÚ¶®ô!ÊÃV®Ì_Ÿ™®ôÏ8gþÃÖ›¯f·~íd˜gY|kë¡þ½½«þzGxPþ´öfß-ªÜ£®Œ5-ÖYäÊßønÊwÕ±Ólh[ºÒo*×Lsåü­»ÒŸ™ß²øÁü±ÍgûÎÆê=ó]¹îÙwGV#²zÏV®¬…ù5èEôcñˆïwÌNöÆÎb󉯝óôb¾Àæ¹ï'mžëu5WÆzæ{MŸ¶OöÆÑxœéÊøßê`;»Ò¶M‹k´o‹®Ì ,>°5Ã÷»Æ§ù{‹k\uÍ´õÜ_ƒm½µ:‹ùr“mÍê|Ö¿éÒòóë6]髇\YO²µÔü£ùfóiÞßþz믙֧S ϶>,N´5ßbåg‘+늃ZL7Úf®úo4 ¹êšh¼ØOð®1?<^Äâ!;o2úk¬Å"¦ãÛìÂê;Vk¶¹kkÿLW®ÅGØZköa6bk¨>ÏâO“Çä°¿õzçÉdz4[ªG?N7yÍý¸Pù›ëµéÀä·øaª+cB›ûÖ·­å¶žZ¼êÍ—ßד§ù8ñÆÊü‰­Á~_CÞ½f“aümsÃâ‹ üû황+×}³3»w’wÎ|™óžok~-èÃbŸÏ0ÆÎû±„éÍôm>Øøõó‚P&ÿ9ƒ®:ÿ-®·~Â9ä\ËXüZ °s¥8WÚ—OùñR« y}ùq¯ÉëÛ´?ŒgãÛþ6­9ïÜÑì>¿&jý†vîËçdžá:çÇûCÞs†¼±ñãKÿyÇØ8Øõ>¶æ<™Ìþ¬¿šw´ëìÜïèÏãÍ?úýØÇŸ7‰w?ŽIp¿3ÙÂùþm×úó«ôõ¤|6>Asź­õM­ikldö0‹¿ç¸ò߇™Î5öžŒåSV[˜âÊzÖ4W®AVÏ´ï}´Os´v:ו53‹å,WlßÙé[wå÷„3\ùïæù¶«ý™ÿ±s©wÞb=¶õÎæ­qÓ\Y_²šå€+ëF&¿ò£¹‚Å«ö=æ|WÖ ¦y<[ü9ˆz¬NjßµÍvÕ¹ãçl¡Ÿp®êçü¹çÇB†-f˜áÊõÚêi äžãÊlº«ÖÓm\,— sj[ó ûëƒÅa~j>ÌyüycóÚæœ­é~<8è3ße:µZ–}7kã2ÓUãy«†«ú󉶸¾Ã×ù1kö^ÙWõ)a !q¥µë&»ª½úµ ‹ù¦»òûÏ)®\G-Öñk›øu £×\Õ?‡µß—§ã\ë×â‚>lÍðc[ëÏbž†+ß·ÛËãÏ—×_O‹ç†øu ß›™}™Îü˜ÄâãÛ¯5¼k¬?‹—ÂøÜ¯qÿ&¯ÕŒ|»6;6»²ÜÏ…CþÇ“ÏBŸzçŒwÓ¿­/«_#3»5_éÇ6&~\®å6—llͧøë¾¿~º@7Æ—óúµØÊ—5ñ®ñë–~l×Îû6ìÇ}¾øó×xômÄŒwß÷SùüûþÆ—)õΟ~>`×9WÕµ·øÏóãʼnחó®uÝ?Æ>ÎUeðû¶ûü5 Œ/ýÌnâµWµßþê.ûPžZ€ýõÇ££ù¾Í·yßO„÷˜ ù¼ùkb8ÌÞCýù>(Œ±}›ïcr†±±óχÍ_“ýq Çw¼9îŸ7^}~|>ÂkCžüg×]Uÿ“ìÿçŸÿCsE­y?Wć7Y ÅêCÍvÕ¸Á|¥Õùìûº«þÛÅÓh̼ý[mQc7õ¹V¿ÚÒÿo]Îr¥®,~òóxó•þû=þÜqÞu~ìä?¦:™âª>ÒÖÀiÁól½™ˆ\öÝ¿ÅïV+oϲú®ÕÏWÆT~-ËÿîÃ|“¿û¾Îdðí×Ï“ýùgë©Õ<üºŽýí7`ñÝWÖ¥}>üï7}šŽïËB®Oóø>Ö_ký{ÆÓ©¿n˜=øöbýú±´M¸n›l̸Ô÷ï¾l5WÆÄ—Ë_+M‹³ý5×Ï«ü¨É`ñµ_ òyößà ý›ï«|íYö }™¿Þ™üï(BÝÙ¸›/ñçºÅ¢>ÿfs&§åla,bcÛðžccæÂõ=ñhþ5~Lcׇ¶ìÏ;{¦?¡Y^5શ›xÏãJÍo 㣙~ëã\ã_çÇgvÃ¥Áy‹¿ýš¨Kú|Ž7NÓ]éo|Ÿà¯³>ç˜ûÇ‹­,óß»óíÚb{{ÇÌÞð묉+÷¥™áʸÃìÒÏ…í»¡ñæú€«Îk ôpËŽ·Nðú5ž-/69—¸2žÑþçzýúužA×\ùªÏËùaãÁŸc~ý!\?B†¶®_~Ügü…µU;Znb<øqŽoáZá¯þœ/Ïóý’}Â>}™&¸ªÏÒ>T_þwV‡·±2Þ-Î mÂ÷üúp连h} cûÛ_Küµr¼qÏÿúóÛÿ>ÛÿnÄ·ç ®ªôíÜø:³Ïxs,äÉ—=\û}^œw.ÌóëÞy“/òåyïš'ZOÆ;Ž‹óð€wùñPf{®oSá3üïkLÞpí c×0®ïãûsã9ŒƳ)¬ýû®é.8>ûãù‰úòÏû|úóv¼XÏ·[ßׇ6èÛÙÿƇïÓü/—¯¿Ð>íïñâUŸ‡ðö®Y¾7×Â?vãÉ;ÞÜ ¯ íè‰ì!´áÿ û÷ørøþb¼5ŹX7ãÍ¿ó½ãñ>6™Ÿè“¸ø^ÿÜx÷‡×†k_xÿx÷üoçdzã'ÒÛ]ÿ_ýlüš+þÍçºâwöúÛ¼W¼s¼Ø•ÿþ¢¾3½£+ÿÝÃí]¹ÏÛ.®üwi¶á|˵òƒ]ñ»À\ñ›4ý~ø Wþ–R߇ݟgºâ·•ÊÃð¡ïmk<¾•+ÞÇXàÊß)ÏpÕw޵.?™kÛ;-[»âÝ¥MòÎùïhkìoµû¶½Kíç ›3ó‘[‹¶-xkÎ[üjï·+ÿMWÔìíwuö;À®|ÚÏgü÷#ì}ÉÙ®|¯Ñêeö=»½«0ƒûüßêXN`5u«')Ÿ³\ù{¸m\ù;§\ù>éf®úÛ6{_Ä~‡æ·à'aõ‹mLlÌí7Ñöˆ½KYså»ö^¨ñ:Ó•ï2Y¬éÿ¶Äth}Mwå÷-6V3\ùÞÒlW¾S¾«m9–åQ½f9Ÿ½‡;è=ËÆÝjèî´/ãÕ¾Ë°ß ˜mÎôdµï Œ÷®üÞÁÆ{Š÷¬aWÝolºÇÓ WÚ²ÕŒýßß8WÚÛ°÷ëשæÊ÷YýßÛ˜‡L_VëÛÿ.ÙÖÿZ_V¿.á^üxÝÿn¾æÑüø5ü>ÐχŒG¿ncØÇ÷̟w6^¾üZÏPp¯ù_ß|˜Íøq·=ߟo³¼ë|ùM^ßG†¾Ç·›÷¾ Æ{ø·ïcýùcó6Ì!jÞÑ—'̋ƫå»qðý³ñ?l.ßÒ}à1÷x=[÷˜QÝ*}Pé3 º®r®Øú}Bsñâl·ü¿ˆÒ)Ù’ÒlF”±*¥¹Ûâ%!%kF”è®æÒ*e$êg$êg$êg$êgT:(c!%‹îjŽ„”‘ÅUÊ’Ý·BJ6RšYD Æy©tR²,¢Dw5ƒñiE’¶"I[‘¤­HÒV$i[R²‘ÒŒîjã3& )ÙâˆÝÕ¬ŽO¶8´^¥´CJ`½B ¬W)ÕñɲÐê„XR¢»«Ëš¡¤B $UJ+¤„’6wñ%mæó´R*V—SšÑ]«kæót4¤dYD‰îªX]3Ÿ§£!%ìg$êg$êg´ªÓ‚Ò)YtWE§e¬JYRµÞœR±ÞœR±Þ‚ŒóÒªNsJ¶8¢Dw5ƒñiE’¶"I[‘¤­HÒV$i»j½9%kF”è®f0>cUORPÆBJÝÕ )#ÕñÑyÚ )õê¬Ì"Ju|tžŽ†”Àê”ÝXÎÓfD )¤:OGBJEÒ‘|ž. )«Ë)Í變Õäót$¤d‹#JtWÅêFòy:RÂ~F¢~FÆé§â‘FòyÚ )ÙhHiFwUt:’ÏÓ%!¥b½e,¤4ƒq^ZÕiA )YtWs$¤„:mE’¶"I[‘¤­HÒvÕzsJ–E”è®f0>cUORPÚ!%‹îj6#Ju|tž. )õê¬\Qªã£ót$¤V§”è®ÀêtVf¥RIuž6#Š/éh>O—„”ŠÕ”è®ŠÕæó´QÆBJÝU±ºÑ|žf¥R²%!¥ÙŒ(ÁÓG#IG#IG#IG#I—TušS*:-(­RÑiN $]Z_9% )Íè®f0>­HÒV$i+’´IÚŽtÚŽtÚŽtÚŽtÚ®z’Ñ|ž. )ÙHHiFw5«ã£ót4¤dYDi‡”fu|²,´º, ­.ËB«Ë²Ðê²,´:§KCJ ©ÎÊÅÅ—tI>OGBJÅê JtWÅêrJÅê–äó´R²ÑÒŒîªXÝ’|ž¶BJØÏHÔÏHÔÏhU§9%Ë"JtWE§KòyÚŒ(c!¥b½9¥9RF‚q^ZÕiNÉFBJ3º+Ôi+’´IÚŠ$mE’¶«Ö[PÚ!%‹îj6#J0>cUO’S²fD‰îjVÇGçéHH ¬W)­X¯PëͲÐê²,´º, ­.ËB«Ëš¡¤Y3”4k†’fAÝfi>O›e,¤dÑ]«Ë)«[šÏÓ¥!% )Í變Õ-ÍçéÒö3õ3õ3ZÕiNÉG”變N—æ³2‹(íR±ÞœÒlF”`œ—VušS²fD‰î uÚŠ$mE’¶"I[‘¤­ªõ.Íçi+¤d£!¥ÝÕ Æg¬êIrJ–E”è®fu|tž6#ÊXH ¬WçéHH ¬7ËB«Ë²Ðê²,´º, ­.k†’fÍPÒ¬Jšu›VTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnEàVTnGàvTnGàvTnGàvTnGàvTnG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTYjG•¥vTY‹*KcQei,ª,E•¥±¨²4U–Æ¢ÊÒXTYËçi3¢Œ…”°Ÿ‘qú©XïX>O—†”l$¤4£»*:ËçéhH©XoAi‡”f0ÎK«:-(í’Ew5›%ŸV$i+’´IÚŠ$mW­7§d‹#JtWs4¤Œ’ŽU=INÉFCJ3º«Y§KBJ`½J )õfYhuYZ]–…V—e¡ÕeYhuY3”4k†’fÍPÒ¬Z·É‰ŠÕßê DwùV—'«ƒÒ)Yt—ouy¡ êg$êg$êgdœ~|ëÍK…”¬Q¢»|æ†Q±Þ‚â[/”VHiކ”‘@Òj¸ d£!¥Ýê´IÚŠ$mE’¶"I«`(c!%‹îjŽ„”‘`|ªà‚’„”ftW³:>A¸ ÖT€ J`½AJ;¤dÑ]ÕàÜi„’à‚HT€³,¬”ŠÕea¸ T¬. +ÀYV€ J6RšÑ]«Ë pA û‰ú‰ú©V€ J–E”變N³° e,¤T¬7 +Àe$çj¸ d#!¥Ýê´IÚŠ$mE’¶"I«`(í’Ew5›%Ÿj¸ d͈ÝÕ¬ŽOP.(õà‚XoPβ°\P« *ÀPªãT€ J iP.(I›aÊXHÉ¢»*V× +ÀY3¬”l$¤4£»*V× +K%kF”±J:I:I:I:I:IZ­,”ŠN›ae J»J©V– J–E”è®f0>­HÒV$i+’´IÚŠ$mG:mG:mG:mG:­V– J¶8¢Dw5«ãT– ´CJ¶$¤4›¥:>Ae© VT– J`uAe© ’•¥‚JZ­,e#ae© T¬n$¬,AiW)ÕÊRAɲˆÝU±º‘ðÝ‚ö3õ3õS}·J;¤dÑ]Ž„ïf#á»…¥b½#á»…P‚q®¾[XP²Å%º«ŒO+’´IÚŠ$mE’¶"I«ï”¬Q¢»šÁøTß-„2R²è®æHH©ŽOðnaA ¬7x·Ju|‚w J`uÁ»…%°ºàÝB(c!%4x·° T$ ß-,(« ß-„ÒªRO2¾[%º«bu£a¸ „ýŒDýŒŒÓOÅ#†à‚’†”ftWE§£a¸ T¬w4¬”f0ÎÕ 0”±’Ew5GBJ¨ÓV$i+’´IÚŠ$­V€ J–E”è®f0>Õ 0”vHÉ¢»šÍˆRŸ \Pë *ÀPªãT€ J`uA¸ VT€¡´CJ iP†2&èß´|§Âe_žµQŽnßdV;?ýã2=.{tѲüø£ oÍÝ׸üøÅÇQ¯ýAq¼ênÎoïøTûO-޳¯e~\pã[óã–ù¯_åø§3óãÂ5^øñ‹ã«Šã££ùqQûtúŸ\ü¢¨&×§ÿöiÂ{úqi¯úRiÒ¦ þ€´Û¥}HÚ=Ò^/íQ9÷EiÛ8W®´¤‰PÎ È=ƒ‡Èñ=Ò~/'ÒÞìÜÐnÒfHû¤´¯97|ª4ÁÃk¥] ´—Éuo’>þ$írï.Ò例¥µ„öUi¢ƒúK也“v§´Ã…—ßJ›$mDšŒK*×§H“þÓÏ"ßßäÚ†ß/Çäx‡´ó¥r¦Ÿ’ã®rÜ$ǃ¥I?5QJCúm¼HÚ[M†n@t;8QŽ¿–ã7…ï-…ÿk¤#msirnÂ9Ê K¿Ã:ûK;@úø°´ç‰ "]d®Ë˜×¾-Mø©í\ð™¾KÚsÉÏäx’Ð÷-øK¥TxHw’¶Ÿœÿ*×Èø¦Ï’&ã•n-íUÒ^.m¹Wx«(Mô[—ç×Å¢ëgI{PyÖK»NxÝ ¼«ÐÕ€èv@ìg@xü¼Èw³´m¥IŸƒ‹„þ6‘áµÒ.’~äùuµ±šè?}@Žóäøw9Ê8¥2nééÈói9N•&ÏJ·üšêGÆ+­KÛ®/ù•´ÇäïÝ¥©~K»µÐuMî­Í—&¼ÔäúZSÚýÂÇ;…'±ú_äx-zS^?!<¿TÚs¤m*t7(6;(ö6ðni2– ‘·!6_ÿŠ4¹¯.2Ô„¯šð\»Tž{“4±‹TîIOÞäyÉ7äo—TÆ4ݧÏÚO¥‰ý&ß—&㚈¾“ÏH“ñNĶ“»å(iÒGÚ“v3óJƯ&öV{¦<_Æ«v¯4Çú¡Ò~(MeT>…ÿ†ØJãÅÒΕ&ó²!Ïoœ-²ì--)hu™ŸuñUõI?:×…ßšŒwMî©=]ž'ö^%mIÁWòùBžDælòeø–¹Ÿ\Cû‚4é+ù£4§DøMdü’«¥é<}Ÿ\Âú3æ—×I[#üÈ|hˆ-7ľ×K“q7 z›¸Ešô1p¬œ“¹Ñû¯]Ú ò÷œBGµŸH[.MžS;¾°‰|ŽÏʼn~“û¤‰üé±Å<Ïç†ú»-„.öšÈ½‰ð˜| |÷|=©Ÿ;Hú|5c§óIl¬&:­ýß°e1ŸÂKCæ]Cæaã6igÿò¬†ØÀ€ØÂàQÅ\kˆ>2¶õ;ЧŒeý<éOƼv…´_J; ¿¬>YdKå‰è?^’ë ’ ƒ{‹±W9“›±Ë‡¤=‚~dŽ&j[gr¦©oÀˆÝ§ï“&ó¬6†œb_õÒž&Md©‹ÿ©‹Õunì%MÖ¹º¬)uÑeýùÒÞ Mæh]æuíÒ®cŽnS¬#饸³ýáûQxй ´D|V"v“È™ˆŸJÄöy^"ÏJd¾%2¿Yûá+‘1O„¯Düz²AÚøÀKû ú{Púœˆ½§²æ¥roºÛ¼\šŒA-¥íˆíȨíTøÿÚ©ø/±ý´Ãú!ö’.”>ÿÆй!¾;¹ÞdœõÇú/‚ˆ|‰ŒUr²4Y‡’c¤‰HÄ_%27“Ӥɘ%b[ÉÈ9ºúB ’0Ïtn‰Ý'çáGnCç:?oÂn+øÊý¦ô—žË:­sùDü’úšÁ¢ÿô€Â_å}É\õ™´°]Õ—ø·d9r¨Že^ç>RÖÖÜoª¬?E.ÇäîbÍN$^HD·ùüP}nåÉ$ºHfI›ª™ÇNtèÞ Mútï+du²ö»ß¹|å× NýÛîØÞ-žŒ²n'Û3óЩĜ‰ø¸Üè¿b"<çÿ¢Ô“ø/¤ý˜»s÷cî~Ìݹû1w?æîÇÜý˜»s÷cîÿêgÜE+qñ¿¢¥5ýiù¹¢ê?¼æ”õ+Ö·â´Ì•ÿdÙË7YÏããm Ö¦èÖݹÅFEËîÜÊÇmÁ;‚w?Ü/÷/~øéàÃÁGŸ~ødð©à3ÀgWƒŸ>|>ø"ð‹Á/¿üjðëÀo¿üVðUàwƒ¯¿üðGÀ7‚? þ øóà/‚oßþ ø>ð&ð×ÀßÌ3w>þ)øà߀ÿüðßÁÿ*ð]…Í/»«OOÏÏÏo^Þ¼xðîà&x x üTð2ðþà§~&øXðñà瀟>|:ø,ð9àçƒ7€Ï_~1øðËÁ¯¿|øÍà+ÁWß¾|øàƒoüðMà/‚¿¾|7ø>pü5ð7Áßüø'`¾¼ë×à‡Á€ÿþø_¾»ø×—Ý]‚'‚§€g€gƒçƒ7/oÞ¼3xwp^nƒŸ Þ¼?ø ð¡àg€Ÿ >|<øÙàçOŸ^ >¼¼üð…à/¿ ü*ðkÁ—/_ ~;ø]à÷€¯_þ0ø£àO€? ¾ |3øKà/ƒùÂ÷î{Á=ðýào‚¿þ>øAðOÀ?ÿü;ð#à?ƒÿþg w(Çx<<<<<¼9x!xðöàÁ»3ð(¸ Þ¼x?ðAàCÀÏ >ü,ð³Á'O¯¯¯¯¯¿üBð‹À/¿ üJðkÁo_¾üvð;Áï_ ¾ü!ðGÁü9ðÍà[Á_ß¾Üßþø;àÀ‚ þ9øWàßÿþ3øQð?Áøžâ__]vÏxx2x:xxxx!xkðöàÀ»ƒGÁ-ðžà½Áû> |$øhð³À'‚O/¯Ÿ ^^^>üBðÅà—€/¿üðÀo_~øà«ÁׂßþøðÇÁŸüð­àÛÁwïwÁ_ümðà‚ þøWàß‚ÿþøQð?ÀøÞ´À÷€‡Á“ÁÓÀ³ÀsÁ À[‚·oÞ ¼+x1xÜïÞ¼/ø@ðÁàÃÀG€>ü\ðrðià3Ágƒ×€×Ï_¾¼|)ø`^0º÷õà7ß~øà«Áï¿üAð à?þ,ø à[À·ƒïß þ:øÛàïþøgà_‚ þ=øOà¿‚ÿþwïK |_< žžž ž Þ ¼%x+ðvàÁ»‚Ÿ/ïÞ ¼/øðÁৃ>|ø¹à“Á§ÏŸ ^ ^>|ø"ðFðKÁ¯¿üzðÁo¿üð»Áï¿Ì‹n÷}ü1ð'ÁŸ| ø6ðீ;àM௃¿þøà þ%ø7à߃ÿþ+øïณ¸Ó'§‚g‚ç€7“ÿwÈÿ;äÿòÿù‡ü¿Ó“ÿwÈÿ;äÿòÿù‡ü¿Cþß!ÿïÿwÈÿ;äÿòÿÎÉ`òÿù‡ü¿Cþß!ÿïÿwÈÿ;äÿòÿù‡ü¿Cþß!ÿïÿwÈÿ;äÿòÿùç0ù‡ü¿Cþß!ÿïÿwÈÿ;äÿòÿù‡ü¿Cþß!ÿïl“ÿwÈÿ;äÿòÿù‡ü¿Cþß!ÿïÿwÈÿ;äÿòÿù—ü¿Kþß%ÿï’ÿwÉÿ»3Àäÿ]òÿ.ù—ü¿Kþß%ÿï’ÿwÉÿ»äÿ]òÿ.ù—ü¿» Lþß%ÿï’ÿwÉÿ»äÿ]òÿ.ù—ü¿Kþß%ÿï’ÿwÉÿ»äÿ]òÿ.ù—ü¿Kþß%ÿï^&ÿï’ÿwÉÿ»äÿ]òÿ.ù—ü¿Kþß%ÿï’ÿwÉÿ»äÿÝÁäÿ]òÿ.ù—ü¿Kþß%ÿï’ÿwÉÿ»äÿ]òÿ.ù—ü¿Kþß%ÿï’ÿwÉÿ»äÿ]òÿî#`òÿ.ù—ü¿Gþß#ÿï‘ÿ÷Èÿ{äÿ=òÿùü¿Gþß[&ÿï‘ÿ÷Èÿ{äÿ=òÿùü¿Gþß#ÿï‘ÿ÷Èÿ{äÿ=òÿùü¿Gþß#ÿï‘ÿ÷N“ÿ÷Èÿ{äÿ=òÿùü¿Gþß#ÿï‘ÿ÷Èÿ{äÿ=òÿÞe`òÿùü¿Gþß#ÿï‘ÿ÷Èÿ{äÿ=òÿùü¿Gþß#ÿï‘ÿ÷Èÿ{äÿ=òÿùï~0ùü¿Gþß#ÿï‘ÿ÷Èÿ{äÿ=òÿùü¿Gþß#ÿßä ¼)¹µ8RØÔXV©lâÝn4rrŽýq€Ý´aqs}ÉÀœÁéëV¬]³nÃÊÕg³nåòÕg¬Û‰rÍ©gî»al¯—$¸lò9ç®’žÖœ³rùªcŽö.ôF'õ^[¿a}qjFÈפõç®;oÅÊU«–¯>–Šöÿ«(͵ Ysurveillance/data/fooepidata.RData0000644000175100001440000014531412420316223016730 0ustar hornikusersý7zXZi"Þ6!ÏXÌû5–Ê])TW"änRÊŸãXdGŸã>@j½õtA©°”'å»r̆®»a{ªñŠÍÊ i-ðNœîy0ûv·P´rÊæWÚnUXßkLÂ-ðË£@¡Ûê4:Õì,Ⱦ}@D–bŠ˜q%Jð)¹ì6ÖÌëÝ=Ô%ömP"ˆ±`þ/¡†êß{}$«Ç[X,>x ïhLž‹ÑõY ÊÿKÙX õ©g:íHxw´$d{-_’BqZºz)wª»±Ï!ópæ]Ö äjdZÊBL·ø^K'ÌŒCEb†;µ:e2è ýM¥wû( ÇŸ4àÝÙãc¸Óí4o…XºÜ¸4yI'®¨þÐuª½ _íàC¨Öêî"×¹ÃQ6åS5nwX^ï uŸ7$„D&öâ&ºO_"¿èü5ã ÑÓ Tœ61KÌÇÀ‹ì—'W7œ²ù$ Ãô…£A«‘y ,%ýÅÍY ê‘ÀÜsÏ|I:M2 ²KAsT²Õæ—e©‰YD‡Oo>½ú…ß*‰ý*®nOc¥ˆ©“Á´®+PÒPÊ¥¿ÕÓºWRSG"­N†§L-x üß×F  =Õ_¸öÇA–ÒZ¦)H»Û”òµ@îÌ<¼l|v§ÞæÉ\ç§Ø `ËÔõ¥ö ÷9<Ÿ‰ ¤q0. 3_å‚éi,µÆÛ4‹Ü@x ó…UDú­‰6TgöE~q O€ †¤ó{)ì|/P›7x¸ÊŸÙbÓS[Ó¼Pübuè%HŸßIÉà¸6§HÉ·('Žƒj¿xÒ‰kAÁY¡ƒòbú^ògHêj¦RÅO?¥  ¹A7õ R+ÍDRއÿ#åo¥ZÊE¡zS{|¡¤û%æRµFÙüàÖÆ?a£*¾š9Iþ'PŽV®tdÓÑ‹¦¿fqõ[cÖÙÖgNIv|J„muƒS¹ÿ?xdÔîƒlÿ‹4g( ØvëòZ½x·{ùÌþNä\*åJsÜe¦‚Ù·ÃƼÕƒ>Ò:$îžõÇx8¤R¡òÇ*רê[1ÂMæ;¼‡LÕJà£Ksš!ÙmÍüløªqI¡MA¨‹zuж:©(âõÛ‹«Xsh9µséj„›$5 ÷­HEœO›c}†1N DÛŠe†U(ÛMrÛ¤œ+¥ºe +Â?N¥È ÿE1˜ƒ YÇËyÁ`Ñg9êD¦ágŠêaE°•~Î#™vY,›vn#èE[sï91–ôÛjY`“²a "!€¢`’CxÚ¬míÁþ߉-öxB!Ÿa Q¥G$=KŒPơʩW_ûaèÌDo¾ ‰]Zm^‰Iã„÷3 ¥ÿÎ÷8pÁÔ笠¹é>’rI´FÀ{é¾™,$QD#€B˜Ä–S…ˆ?®ÿ·$9îÓêÂUO£özG lªŽÐ`rùïx1ˆmO.»u´ÒbZ™ª°ý66-øoŒF~q-ØÝ¢È`[ö¨]›ªz¹ÍD‚ÉÎWxËÐl‹gÓËûN}U&€9í),Qµ iŒÂ°¯È÷¸q¦’§¨b å â1S‘' †fÛj£Mî”!—¯ö¥“ý ª<"¡ót“Ÿv]rê[mCÖ¬œ„ÿ3Gíê‡û”u_‚!“É7?3Üî IîX% lc—Ū… I=,ÚÁÌNä§ôp3\q~®µáÂ~èY'šÁ”c“ö ÜੇÙl£Èµ»¨'€†]eš¿Œ¨Íð¨õÂDyý«vNûÛ­Î`çìÂjåR4ëïëì½{žïÉG@óM“´\v¥ Ì?´•ý’†VæH‰Ëð9f#Ûí 4^¸oQ…Í·}]¯hW•_‡¾ðâ* ¾îH]øYñ·%@d}õî?TºÒ#P)þ{Ã’–ªcBH6 ¾ûŠ™ È©³‰t‚TÞyhXÌý±w08ùµ†@6:JןNzÔ~¢€ Mä’˜I¸éë(@#e’ ¦mñó1ÍàÄocsâ7:ü¶xÿ’ˆâ±ë¬´°z?/YZú:.øÇçX1/w{M÷9ó×Ï;)T·1¢üzÇÞ*WðÁ7å¥r™j±Ï¦zcŠi%Ë+,[?»’”½E%7k£‹@ÒK-óJ§Wðƒ¦ÅXŒÀý-­‡°.èÜè²½>æO*Éüêä|@°Z­näÛ\­3z¥–›'è ÊeŠ„„r®+V"cÿÖcð¦RŒQg"Þì{çw3¤’aß0C}¢9.¶pÁdoâòíP¤RÛlݔ٠Œæ…c©Ñ%:jýcÄá-t|" YpR¡º0ÅO’wšÅ–º©±u$‰£à0ç™ç߸ínP½eð <ß§ƒÀ¥þ (Q2YÝŽîúÔ7ÎËÈvÉû©t%€ §™ Q^V!ß–ª²…¨&ô({rá¶Iû-^îICYàîtk¸ü#ãœ8­½Wç6ïüôÍ‹øŠ³‡ë!\i˜¦ñŠª¨¹èÈôÙÝ ç|—F’ä¾É%¶veû¹É¡ˆzÂT&2:mQ^²¸Š¨ø GÒ]dÃD²¶¢qråaªV²Ì ÙtœH,Y}ÂL©‘Äk|Àý´ŒÄV{ åiB¬œò  Š.e\“©ÏÆBíœËº~"F ½œ´ò‡;Nge_o5WHù “›ýRç8p´Âõ¥¿Ò ,)„x2ÒNœHJá«2ÚBsõyG/8à7øe¬É|²—~¹Ô/]½ÉÆ)Kñ.ýÕ]½Ó1ºSøÝ¥gÇ-¿†üƒmUnqûÊw»šyÜm¯òO}U©Ãõèt¯ñ®xr¸k¡ýêÄ£O¹ºNÊ»÷zá(«ž“¼–r¢yw¿¶|Ë‘$°‘‰-Ä|‘VXK ééŠçÄY%ï5±c•ñzÝKµI:œ§ºØjKzàzÃmúLþ¤b¢&CR' ßüyƒÇ7ö¸¥Æ%ò!h4b ÔͶ1…B¶Ñf£§>Ÿ$MwŒ^\j[’¢Þ¡¸¹c2gµÝ಻ ôãDÂÝQôò¿"%ØSïÊ»ÿQF`4q2ØwC§_p`§ ÷©Ùa™ØÈÞ]t¡%Ëí×mÞ$!Óm<[,÷*û¼±_2^JÈ1V<½ T{Ð{h7zdƒ}Šþ(_ö«L_ÊÜ /ã×%yÛOÛN’ù:¦SÍýÀêlR¹þC¨3ÂD O˜5¹ÖÈìÜâì Šæljžj´êo‚+=ŒF>Û<ó@Ÿf‰Ô_™¦°ŽÕæ‚5†ÈÐVd@±9&TCd~0 «Áë‘s¢ŽiUñV›]ÇäªõÍaªóyÖtœ½9Ý—+&M³/±ôÈÈøšÅ’µ¢~»Îæ[‚­ùœ˜þµ×Sjwm|2çr®N/–éL»ºÌÏÍ¥§E@1t ËsBK”¾ÂÇf[øSç¨IµÂÂY¢‹Ðáåá_ZžX £¦¸vdKCHðï*;‰N¿H3ÔRÆö§!TI˜AæÌ¿¦dÆë– ¾è€{ÿƒçú»ªØ’A:@ýtb¤ ‹ÓL9åÿþf Ÿµ<Þ¡äFªnÐ;¼Wô¤1¤+Xj.1×@l"Z¾£/+çÍës ¢SÇâ¢ZåÐ\kc» ÞÿsŸæt»á#PBþA-ŸðÙ*ö˜¶U•©wÕOª<»ˆ~zb^ÑÕå¼Î,[ÓÝ{ókúìÔ^ºÃ›’†@L¦Cí£š/ôëBWd&NÔÏ8ÃGfö¦¹qk^&Çõp ráÛíb®¯phåÏ7gµU>¥k—Â"›”Ó¥ÀôíªßÛÔ¾[Îð¨TtÈ2 “(w˜ASáÑMŽnºƒ¾zž[,Ú/«#¨Š±›'[Òûÿ¹™¦[*Â>妛E­´†¾àÞ¹Ÿ' ¹»r¬ëɦT°~ÌE”­Ø[ǽ+çT‚¬Œ—nѽΖy¨í\­ô÷¹–ÍÀ7®â"Lê|}$Ú:›ÖÝ4v¥ ƒ’ÑGp·h†JˆÀ”cRšhÓuâMH7¹¼"Ž0kŸ7}&Âr,ºq¯ÿÉûçMW9h¸ò6:ñi05tÍÖnÒ¿úuUOG~r•£ÎÅëòŸíxÁáü‡¤<3ÊOBß=Œ‚.ÈyÇmþ—1ÃÛ<Ç)}?%R!2;?ë5Ó0‹3Y×Òñ_›@ÿöM«în X[;m´E¾ýàNÝšëV€vºRÑ#ï²Â6çgû -ñ¯¦/Vìß$ˆí7Áwe]êûžfðóU]Nån‘¡ãò(~Xù­ëµ*yL(4E+àm[ÉnæôldüáÝYZ#tÜ-e·WXêéI¥ž(Q+=‚QN×ÉGóA~¶Æ/UÏF# Qã9áíߌâËë)OíÞVÎY@µZTvÖê Uåô7=Àfæ» ¹—qyxKjÒ¼Hý40†¶NêÃ_óÖäÔ–M 3¨¬>×¾¿müv¬Yäå[ùÇÚ­üû:ràa¦?­mÙýÑîÔ:©M{é‘ýLİœ¶¿…¸h„¨±ÀS{™ WàÀ„;†ø…òWö27šh\K ƒ‚>µ]#Z?\¬€ñ—›ý"ô*†´ÄhšÍªEƒ±µ¿G”Ú’É<­{>Ùr‰§Æ/ž`$@õÛP³zìÊ”^(×—ÿHY/C¿Oõ‹$OJÃñèz3öÿ×õžT{#åU3XÀ»7UCœ¡ÙM®Qš™¸Íòˆ®úuyÝk§â¼›žÊ^Sî+}YN ××ëfm€H½Z¤Ø$#;©î8éWg©äÅÜøàKä¢oN?{Ù±/…"7ye¹ÕÂMqÇA{° óâÓµ×4QÌÕÏ0ÞGKÛ+ ¢£àÈKO¨‡ÛpòÒY™“ˆ?+Þ² O~eMÒwRòVø›¼ÔVy”PêËݼ+N¶ø~|­ø»“\@글 Š^ ·³¬ÁŸèqC:Ô¬\ÜOy¦%DÕ0]í|¯b¤Ÿ»þ¹Œ2Ë(ì#N휨gÁÀëgºŽS®d¬m2÷þþøùÒTt×GÞÿ2oÑ­þ¢‘᪤ yÅ;@ M—±f 8ݜȱ‚›ˆŸºz&ÿ?Ñ€5(N8ÓäŽb.PÔ$.^ñ(_žþ‘D¹TèXÏ‘¢‹ë ŸÂq4ce°‹"gð[¬âm_ØHª6¬‡&i$€—(ª1~¨»à.ÃÞ€v##|Þ­J­³óC^¿p]J²…×1ú—®?ï">–^ö¬Ï¿Ûmi›2x9ì­58}¦±0Gƒ¦ÄRC¼;3Ëžöó®yÈêQJcd°bô0 ÌWgò@u©Žjept ¡’¬¢:?«7>JÁ\û¶g¶÷bMMÐç’Þõ‚Ø .^Ñà0(ºJº•±ÊHWYj+fBé“{|pp°-ûSs{Fƒ—wùh_m¡ß²äÃ5&lÀùD§p+׆F8©ÉY¼F­L'ûÁHúز•JWe­Í£îö™Õ‰‡0ea¨J&(}úïÉ ‹qršŽj¿SX%àK Cú>Šz`„U ãA½ÏÖ…@=ÅÛ ÖkÌì±ñånÅÊ÷ë ñédwߎ$¹þŒk‚%™bÈX3ÎÁ ô¿ÏQrŠ)­ÈI–M¨¢¥/µR|ðž"]Ú¨½Âä6¿hBùR´ám—ÚÛ0Ô¸ ˆýÑ=×öŒ¨–›ŒÆÍó)-´JF˜Þ ùù½èëïÛ5ª, ‰¿G´.3Þ ø(Qm·I;›±Dçã‘™ 5£A¾öO΂ÃÀ3f6ᙪUÀHº¨ ÎÓö—+ & ÊäÊØþÂ:ãB'\ ®ãXMÀä@ňOâ#HÑ!+VÃ^“’ÌÙJºhÄÈ>ÓìȼˆNK>Ø2I´ÞµV–,€ýS%ÿÂ@„‰Pwí4lñÓ0ëßc–™}@M˜ òª7rø…ôu:ÕæF'ƒÆEæÊ¯-é%ŽÛ¤G¡]¸‡2<'ì©é€áÜo_ïof‡àE›KFkc¿uŽEIØØp «B&ß3¦‘ˆvŠ‹{„ vµRß›¥T;/„¨½m±¥N"f˜±31éÓF‰è¥åƒ”#‚ˆ’âOý"ÜÜ*ïƒ%Ž> WH LÂŒ¼[ü¤D*מ͓m0èf cv3žëø’$QÀ©,#,¶J†/Á˜œ,U̸6N漺7*TzÀš !„wj׆*wæ¾RÆË‰‰K•MºW½’ŽeY¬®‰×«J³qlÁê€à`ôôÂ.fO–ȇ‘PQ VÌCøãÓíC5â¿Ï `˜DzªW¢¯ºÕ¦2Kq¦$°”„øÆu:•çõ-˜kÜüæ!äó8Ð4¹ü¶&¹™PõáÛÏ…±—ìDù‰ý–%³’ÇXùŒ3[ dë¢îàwó}Þ´cñ° UœxT•£‹ù@œÑùL)ÍÙ$U„™hýãÎ Õ˜8šÅv2ÑènWánž§¶ÎÂÎü1¡˜Ûš6š_c§ˆ½(7 ¢jmÚ˜Eéè@Ý1¶Óôw<¡íjÌç2_/™ÚåŒ]ñx`¡fñ6M± Æ´T!#‚ÍQ3>²ŸÌvBŸ‚¦YjOD=Ø ÷ Ÿ5ð»3÷γâåŒLÁÌEP…ƪd¥D°Á÷UÖ:CÃîô\§àÀ³V ¹Ÿ±ºº¦gzêï1óª™ípÓøýç.ã²î¯ÇçÞÂZõ¬”ËdOßæâÛðSê¯âï ?ÎOE#†pó"oq§ *aDÔ­ž8i±ô[pT=M³WŸ´ÿ‹ze=?3¯GµÞ“,Ò^ ¬”g&•€Ý6J2‡ãu yÜs»<†tj:ÊŽÏ®÷àO¤U{Z±6 ô>húvä»Ñùu›í…£Õ‡ïlw0xìT»í£s ›ÎCkçóîŽê®Ç©P¢÷^²f Šwì_U[ËæÊaÊ­Ž.ŽÜêX߈S›h£E/øqÊ›‡“è¤üñJi™ºM>oÉöá5 ïͺòá’æ9öŠâq‚u5Bð~L“†lËQ,)'‹„I–†³1a*Êù—ea‡¾âÇ{çFB ÞÁè? ­à¬¸Û^'ÊFò¦¸¢Ù›¿=Û÷9)AÛ~iüû¯ÿCÍov¹82ïçRf,I}åœõ²35%æKn°Æ-Ä´ò¼U±+ÊÖ <ÄÂAAZ”jq Fy'‡|¹¹'!Gþ\Ùä¬ú—ÁÇ=ÑÌ÷w `Ù7¬&¬ ÀæŽYˆÛ¶0ܲ£±'É÷Ä{­zÞì Æ$›Gñ)P`*NL{môëAéó…& •Çc¨Uï]VŸ¿™ÓK^¸Hs<Ú‰þØÃ|^H—0š#]÷&’.¦¾Ü&×1›«ô‰ÍÖð$‚ï?ÎäŒ/ˆØ ;4 W£ŸC^ý7±›Š àÇÑnfŒfð(-¤ç.ŸãÔ»zïG.` Ü †ì¤Ÿwõ©óN–à0Ú”Ë| èPÃàÞP R¢ñB1´$5¥ºcÎým+™¸)CtÀì›,”´©Ý¸fåû!>%ïKm±AÍMêÛ9gÎÿe#û©N³b´{b{Ø8¿kò|Ãíß… ³¶óÉò¦R³K8A.ÕXc|UncIjËTJ;¿z·\zÜhùé<S¥#öiUZ~k›]¨T0]Ú ‚ÌW>·Ü¨!ŸÂ¢i)Q¿ú^ê ¥H@ªf)hÕ÷üG碈,±+Pí£|#€3ö–l‘).\ÑJ™¥¨Eô1Ÿhêª}?̼™>„ož”¸Õ÷“ÛÁúGvÓzkòë·9ç_-\…vïõø“AëÎpœéºá¶X)Í y4½_ßÖ!Í‘‹Á¢?@ÊC´v 58&NË6T!š±Q-Þ!.*ÓO¼g"‚,Ÿ›4&¥ÓDà¬×.öÁÄ!e˜á®›¢0µXÐÿ,ÞBݸ)·KjÑšÔžöc".d"%^› ¹’ÅÙÝIKa3Äì;¼pSTÿOšÍ·Ba©“²®CVëû‰N×p( ù$ØøƒZi<&_ëƒÁ«a˜éÌ®÷”þw²Ë÷Û8'óB'åÖÚÌ?]Cp¥@RÜO¼"$ÁˆCøê˜ô µ€¢7TF°º£'`jœ ‘ÝüÑD¹7Öô²m ¿#Ös9÷;ýÛYÉýôA`HÏû*{ÚËVq%þØÈñM¾µÈˆMx›Š£^°ôaëùíšS‡Ôšš°ºrx³N -<ΰPœÓôôº§Hã`©€8úbQÞÛh&áÌ´¥’–Ù½‹VŸQ¬Õ¡¥xÆí1¦{V•s¡û‰ Ž àzW þÍÝ{Ƭç*‹U§l^ÔäÚ›…$èÒìÈ, ³õ)†Ag¬Ó¬¯V„÷SÜZÕ*=„´Òµ— å·v¤²í¯­¼¨4Añ©•ºL‡@µZɧ–›ÜÕ\‰Hoó”¬CxÊ-ÝÿxänlúP8þ5à‹£ÙàVSB7íg‚QE×â~UÙÈôؘ¼ž5GD1wŽúìMDÖ°ØW0á8Ñäó¤Hó€luS†ñ½ˆË0dô‹‚†q+;f®,(lº!æŸÄséµÔCœÅvkŸ'Üùœ-i öë,­€Z²ßfé¦茈&U0™eHÿæ!®ÏâL(2îr ʻ³Qâ™Ø­ú¤.«<\ßç†]F§p÷W€E.¶ÖMGüj÷£Ý—Â;O(å?°ÝÒTÄ))5tÎ^tRÊশ°dååPgHâX8­ ,nRB`¤2[]Å‹qÀ‡KuǪag°¥ßg†{Æ ¥6¯4êóoIsR1^§f"…swMÖßòÉóÿQÙÁw – ô ·­ÿ¾Œ)Ø-_—|afh!¿ñÞÁ¨;®ž‘CDéÙG‚"í lüè«NE“»=74«¥—4®H4bwt^:×W26ap½¢`=xbwz¬Ünô}JöW&÷×äÇÆY5ãmÀ+íÀùý&ö=pJðo¿ÆÂvmTàçÉŒfí:°€{ /¢W>hçß]5ž7y¨”’ï!Óµ GÂl|6œ-¯èC¯`æ/ÿ·‡7x_Ök§Ý48í¦Ô£x#:Ÿ8Þ5Ó"Ç´× Õ–Ðãb•iþbqf¦šé.÷ÊKÝ$$VuÅÏÍ7wËÌeý$çD·úUS§r%¦!Šî¯Ú£À!¹§ÎCXáîÿÌÙ`ºÍ0Güà›©#ú©3¬î'S·MõDÞò¡ƒÌH cJŽ ¼wCLÂ$XVÓ”õú+/íl?IÅÚj4V/Újw{ö¬˜MEE„+„.v`Òj"áËúPF¬Í±YðníàÒùY6#{ M+„ÊèGÉâi¢4kõ:_>ÚnOý¿[çn–Ï`ù`‚lK®òÍ 4ê2±Iz*Í»O5Ón¾ óý;q²ëKÇ'Þ½½E ,)tã}ï¾8=ð궃"‹‹'àŒ”'·Ù- ±…¹öë²?µºüK\pÕ’™ €°u»a½Sõ[º!ŽÄ× Kª´VÌ©¡K( l®Ü[¡O¾EÐsíýZk4r ¯%1Ýoòº °Â—>;! Y$¾!úhçœÕ€j¿çm.ÃJ1CÇÂŒÜÝFMÙE2á€2òÅútÿò~,n¶kcú"q)æ2‘ {ÎÏR6H]j'tUÒÆ¼—-@3…Šn±J ŽÆúlìÔš¡E6¸3ï©SR6ç¤æ«dªy\µX=özÑÒJÄ Â³Œ+vnñ=ÿÊaí¦ ¯Îª(Ž•-ìæ9U]¯¥œ6iMШËr·Ñ˜–ù`C"¹Iç!–Óó·1jiˆÀp2,³÷ªqA‚d˜®g£¹R_eޛĄ5š ¤Ü¨úÀ»·7€äjÏDŒß‚ëc*§ìÅD~¥j+ö<Ç(u“x©_Î/|‡õ‹R›’Ø,‹Ü„ªZñ̶ÓSÉe{lÊ‘ýŽAß•¡þ ÛãÑ ËaŠì鿱þM‰YFBŠJ±nžE&sgÍkåc¡hêé‘ù£)Íð¡èîkô2ÖøN2Zpýaºa VÍ_LÚ`àjõ†[Íû"¿]0ªžw+ü½êFìã •ˆíL°Ô\h 2~×q£o gŽ6ucšáýøãþsö,•k„åzϰF4üí b"Á#Ò©ìùÆ+$@ÜëOÁÜèåBü„¤{—¨²T•×ßuóuŽc©ßåÎjdIè'ÿ‰ëÑÌ-X+²‘.мðDÊHÙòÏHãZäªþÅ<û&ÍÔ£ýJÍÛ7bX …©S˜¾·sh›övÅÚw>ÕìÕÐуæù¶Ü~Ñ9½äãÚ"w8È£Rð¬U";¥3_¦±k4Ôo§\D©—8 ,ãð ™NÏ^–8ˆ÷EfµÈ,¨‡9„´ÇGìñ€ê‡‹;d!gM„ðÿHOåfe.òèÊAéLU†TùŽõdR®~*o"6¦Nú™œ¿ö)³8Ñ%v°kš­- õd‘Ž:×0—VQ×T“ÏÚeJÀ‘Osà6ÓGYn¡&zXCÀÿظ-þHÛpÝ1¨AˆÃ½ÐwR+î0sñÛFöv"Yó亪!ô+I Ó¦®Q­,ð'’” Ægo²mY+‚+ú…“—ûØÍ~Þ9õZÄQ¦ wþÿï0z¾ Ý5<ïžp%ëj"W¦'o&¢HFRƒ²–éÒÙŠ‚rQ:Pëñ›œÄNbïþ®OÐ ðZºÑçcí¡}44¾Äþ~]ᶃz;á?ý°Ç^~2Ý7ÑaÖû˜£Â1Öã7Jé¡›àCvþà^9î=Ûœò î–­¿YrÌvLjánÓ{­|’°ÙÉY„cOð”©Aº÷ÐV#ïÕv!¤e{A%×õ¨{—t‡ï[~6 u•Ÿçd[œ™a]a9¾ìü@b„æ[ æË]Aço±®@€Yì¼—‚p4ÓžÝÙx òŠU³Á8ÓN¿çügšˆà.Õœïפ¿ Û^Ì«wxyÀ&„Ø{!ò–ð(FŸJêi¿¯L´Âÿf36'"G)c»_žËuçvòn./èv Vk3Ù8ÒÚáÞø=žì%ÉsõÆ÷õ©ãß4UŠ0{‹ä.ç©  7‘9ø?E´DÿõÙÓÝÛËVU §:ħlüAá1$LÀøÚ&жc¥‰|gK¨¿gI(¦‘LMp?ž\d­BàA>¨»t@SÚ7÷€ÛÀ!W‡§ØÂYpcgm$§ÉŸ@¢_ G ÅcR. %.$¥8ÂúO5¡û Œ ÿrvå9¬”gÌ´þ×Þážmùkb–8‚NÓo¿o3ÒÊ‹Ay®_þ.ÏnÝÍOâ’â']×_¸èýh§Ÿuö¹'B”ê3àóc‰X[¤ð¡Ý”„Š_Ô¶q«æ/~ÀóJ¥¹÷jÚ2›9K(§1ÐÀU‘BaÍí@·Ÿ\r%æ+ðR ð°ŠÁ=?ÏåØÒ°ã@¡19ßOz­¹˜ êíû fls •ë’Aϧ†ìpÚö9sñòm’…š+Í©*ào³-æîHÒÆ»gÿOö‘ν}pìG™G_„­òâЬ™Q›¹ÝÉîQt_^Ù´‰pµH_hÁ}UG•í†ûí R¤j}å—[g>0ògÒ®•´LçÖ~);·HwJJpÚq:Â%£DæX4oí´!õ¯âÔ ?&5î Ó»¤ÞSߘÉIÓ†¼!GÅœJ¤/•Uqãè½bÐp§#ίÚMÊbÐ,—Þ_µÙHù=6pfù ¢~c«¡ââ™7øHîÃéBÛkÚê–ÅÀ&ØÖÔ x T§Ø¸‘¢v õ?)·eR*a÷ãí^CŸ,UeIÉ|ÛóõÄ“9²Ãwkâ v—ã0K‡]–A:'ŸQVÉs™nb¢«˜„m`d¡î¡ùP+÷Þ„rÑ¡,¿ù§¢ ñ-ÙäÊÈçÑZÃ×Tåµìˆ9 ¡:~ùþÏÚ냳m›¿NÃ^:óبv»=öKh$ìß}ªU¼Âé cѯ(÷ø,¹¡Ì¹ÌŒÁá…ùíøEø%NÎ hoüÚ¢+ÚöïÃàåÈC‘Lp'“ÑÃæ6FçWºá¯['.8dK[sº²fʉNöÞ€ÛÖÇ™—õøµ|æø®šAÌXƒGxškqUv È¾QØî8ðÅ0ÝLEe 1Äib=ƒúƒ7žùÅ%ýÆ|Ëö$.˜d{aë"ù†>m€gEVßxD•cFÐÔƒ…ã~q¡-iGÅ/æÚd`$QyH`gi;ïˆÁ÷¬$(AŸt¢U“T ~äo8&uU;óGÕãÌGV°2éÍ>ökʉž{‚=vJËh¨¤ùOñRQï¢ ˜­\v&‡hÚ`¼=4Ê(ü©ÜÙeGû”ª¼l"då†$¾ö˜”OxªýÄ‚Ûøì&ºO\$§˜i>$éæž,ì\–àžåc0\@¯ú>œÿ4yÛc>¯¯ùœÞwEQûì –”ò¤ÕMc‚`)ögÕóe¶ŒöªMËŸ˜Æ^†npŒªõ˜Ù̆—"‰lÈíOŠt]d®àïÞ»n‹aH*òù¸ì¬cÀ&ðÚ^þT‹†å™.ºÎo‹E8ö¶´D¾»=‡à7ã¨Ã” ô\AV³îëpÚÀ¦¤ÔàJ3ë$v.ð\£§ÚA@´Ršƒ«`0KEÖÃ?8É4¯W©ò®)ô ’2”€ÄFÎü>DH-%2MÌçåw}ÅÞ™Þ€šìà D÷‰% •BF•!&ª2¦d\f÷¥#ûТÜn@ÿæ—¢üÏA"4š!ô ü!f™þ²éÏ íëYÏ¿ ï¤"ð„)‰D ¬z-ÆuÎÍa„¼$Í+ÂWæ¢[ŽÝé<ÆÑ‡“‘£™¾’¥çŠUJjX§ØM?\à - µåît\L@«ó¨¨ÂLþfu‹+©šñOü>f—¿JX €_•ïÐÂèe'µÏ‹ßõ‰O¬ò¡>‘ù`êg;ΉÍÍ \ æÈ§‰Î8\C1u÷'ó"n{@-[9œ ƒÙŸr£5<»éùKˆ²å]xõ›ÏÌE•óžßêLšL]ÏH`ºþp4†ìæÓOŽ{‹ËiÓO@ôv$;#jàZ|Ä”¶,(vXI>—¡‘…Hþ‹›Ž-…±´˃lR˜AiÊÇXjps…þ{21æò·÷bSv`kpV‚y³ÇwƒšXµ£n¦jœ¨Òe¥õŽ3Ïs£g»ÐrÜÖ9—ˆví óÊðê'”c4+Ÿ@ëaHÈ¿£ò¿×/ï•z<»NÎ-¤£õƱØmƒ¨TRÑé5¥²Ö4‘­Ð.d|=æ~{˜ñ‚”·fŒí{#šÛöƒê†Sp˜kl6ÛN.ec’à=~•¸“@ñíÃ/“t*g‡U +0,¢. ½Tº‰Þ{óq [›#¯ã&´‡¾ùøZErC5å°5N¼©¢PÛ«)»¸ýßÌI ±*‚|3ÈVONV:2pàtåÐéN³žã.“¤I‘Hþ€XïçËnz½VÍõìèÆ etoÝ£ÕÈŸ›·ðZhMxyrlýÃ˳˜B`ªãDa^º³å·û¯ðuÇÀ,5÷dî…µ!ñûçgdâ(HÇù TÛØPœ õkG7duëJ ŠYCmÿŠí¸ ì¹~ñs"¥T‚/sÊÁ¿a=e|eªŠÐ9ÝŽý5ì¡çôHÑv¨@ÓUKT&ždƒºîq5—Aµ÷™C"Le àúÒ5D˜„2údïʺ©×ÈxcøYl¯´Ö„“²¸‰I‚“¨Fˆg3(¯¶ƒ­Í”úbÐÃQ \±´´Ž1~COˆjð¶·h$ªM¤:×ÕP:Ô;òÅàéM6¤ù-QŽò,´ª2‡ªï ik¼x›k»kc_„ÞEüÕ”k7³˜¡ÐüWâ@Fnš³$õ XêÐô\ØÄ¤z…ú#«“ªäü€2ß!­h­êý¸f†¡„3x°ú)‹ g÷’æUØS•.IcþŬæg?œQ¿ Ãüª9¡•ÍØÌ9ä‘9.ÇãÖ7w£T«Ì1 Yó_üÔ˜ ÐÙFD»î<ø ÑlG¦ ¨’fa*/Í:m·9§Xª’m¯þ«ò¢ð½Ö>5m Š%+\ò>tƒGèÈäT»û6áv¼n#¯îR§ÇGuiQê³e¼÷{æÒ‡±ÂÙÈÉ}^žœ»–´VùyànuÙ–2i½ÐtpÐ2Ó]—3ZkC±uÆžgäòÂ…©…?¿S\ 0¤—Q µüîi—Ñ“7p?Ûª³O|²\î‰ûšË©’‚…3?b™ºçºÞWGéö¡ ]ˆÿS9ÃptëQc{à5§e¬kÑD O¾Ÿ¸]åòɯãÛ¡Xp?nÀÒ b"—MÈõ.Rg[ß/A åwµ} å´¯â?g%]–V xe"Ì£K¾Î‘w¢TF„ŸÒ1¾Ð/FË¡1q~öK  ³ýèûŸû¤PȰÌû2}r} í¸e+ çã­, £?ƒ vm&'g+ÿ‡X[+F@Õ%/£úóïºcq8à µTw±4\qÑ¥á½Òz¢ò‰í›*Xg£L±Ü´ç¨k9¥d)!¦Ðu|£ëˆ ölãH8.\S”°ëkÖz±®~ó.€³c?U;.Œ(ñj\øvþa ‹‘Îã—.-Ì5ñÆ›³VMíEëeHP+FEç­iÐç kÁš½üñ­Qâ1$Dö§Ú»^gíJ‚ÞÞÉ0IùNQe–ÉÚ4üÜh€‰ô–¶áaõ Hº8C§¤’#˜,\’”h`Î=ߪԘ Ç1qº£¿NôÙÒˆá/D©¤'J2¢yw?(Ñ9—Êe%(ݓΠßÍ ´¹¿¯S¥èô °Ãë¶ÑXh.×t&_ã“gmÊ€Ø'($†ep´{¨"ׯû¶;ò`ócý-èþ:¸}²À5Í^ü[ÖŒ0Š=Σ&7RÎM¸Éc(BËßõ ÂN¦NÄþ?+æ9ûÎK¬×PЛNç0[Ÿ0”ý™œÃª1—LErhвCx“ŒÖ§^‚ó«|s´,  ôº…ÔT)½Xg1¦CJåµ{0ï‘0Þ ñ;mv «K—@Xã²h¾òû»¹CÑËß.À‡¸¾²àîr›T?r§x szâ.³—±}˜ÿS†T»¶Yz_!èED;EõIpáô& ¸šר¦á9ÍóO-³ÊìZ¢U©¯TJAÎéÒÄ£Ëw"yªJB;Îï5¯d}ÉÅC„–jƒDÕÏ´f:@m¦·‚»wTãqy‡óáª*Uz„ãÈXi™#TšS¢1Ža ¡ |h™ÿ#½žv7çZœý óÊ©c\n¯)€½7RŽùL®àý?XTùÀ¶Þ{ eGåQÈŸä7A€ÎFY¸ƒ™kÎÆ¶Ô& ONxÜ/%á\4ðexºÀø¯2Ÿü½¸b­+u?÷¬œïQ &Ñg•êŽ h•nÔ5yrµÛoÃè|U}½bÄÄ/ ÉÑ&ó ­k”þ>èöæ!óN%FÒé8+Yóh©[i‚”Gá–H"He8°œ5Ua…ᾚ 1˜ ”*í<‘‰Nª_¤jv°Ú$Q6j=í U¹Eþˆ(Ìsæco°>×®;åqe$4E_$¢-ï9–8Ž×5ŠÓ…¤©´ TFËMÃà`è2E.ROnÝgãÆ¦VDõ”ÆêŒ[¦ðh©%{ÈV*}k1ÊíWuˇ¼ÊM½ËÏÄk®½ë‰c¾yœhI‚ƒsÜœ5º·:ï¥3ͬ£v ¹rB²‡¨ûÿIuÑI °·I+¯„ï6k@ºšÇzν÷é–Èxã›û„ë¤â:ÚŽ”¶B`QªNù±6¿»0Þs—WAÉ\ßñ¡sÔMŸGÉótÈ Û*s&XZ(ö¥þ8]†Ý?¦s#;³Z |Ê6å×çW.žâÓ%N»)A†@ ×[ÞÉc#Êü÷¤8%£ú®Êø?˜Â€–¬DL"Ô*g4cð¡×ÿBjHØ 2ÃDÞ¬zŠÕÄnØ'úªt$°o´&x>ÇD™‡‚YLcc‚MqNç”J À³¿Ú5Ø)µ< :š ÛlÕcwWEkd¥Ùp¯àYwŒ!ÐÀôJ¡Ì*wœ—õ;`º¶Ì—zÁzZüÙ’ÊS?û6Hð ;Áj–´þDì$xŸ_1—J^}ÐT â´³ø+ ðYH£eç»P Sœ&¸žpð¯_º—¶-5ÑþàD-Ø~ˆêÛ2UýiT÷ª·(`‹Ñ˜¤~€²­ÜG+(œóvcÁhß @Äk”'üEÆÎÿã”›3ýØš~Ñ+ÚiY=Pä#"¢a8þ¨‹ŸÎ¡Ý%*"™œÄåhªs‰˜¥õ†Í6enMcÿø.6É0¤ÆÀZc”’ !¢é?5È<‚Erò âa^lºðm úÄD³`¢r:‰¦f²Ü2–Î(ˆX5 ˆB }ß>=7q¢É†ú̱=‡Çè½¥ÈZ$5ب^1‡ý´… K¿ÙÉfŒÏU+ÎáÊŒ5‡¹ÖJMZcïa¤Î ¹D涨O?/£æ~{oöìÚ’Âý|);&Þ€|@˜ø‡Ð(Þ4!n¿`þ:㔵aéåPqá„od©T=¥°CQW²Etðš¦E•X‚"¶4 Õ–[Bøy¢Å„DžÖ³ýÂÃ[ihùZr{³ž¦@fO¦ŒÈå:s¡t ùΘføDƒný± ìê¶@̳‚Å/rÈ‚oðkéN¿ô'S§ÝÞW¥|2ºGTDÄÔÌ:ßJö nƒMôí ¨!mð/0…Kî ³Ô°Ÿ°ö™ÎUØÎÆœ'ÑçhòºKò¨aó›gÕn¡£¬žÙ9âÛYŽÆIxsñg[Ÿr´9væFZ? D,~“Ú“½ùssÏi°|ú~.öÉâ/uuµ×ÁšÔJÊ¡‘B§\ÔPÀpyÐÜG#W(Jœ*K›*ÖŽÀbÉ …OgÖk xãûÒÑaøÆ:7T]qˇ92!ªWÙ?çH™m m Ÿˆßš´ë úбp_V{Á™±ù A‰B/rˆC….óÑ{ÆOßm’L·¢a ¬ÜÄ:=Âõ= Ÿz­\¸çÙy…"‰”älT²xîÆùǦ¦8éÔx”YÉ»™caN’A‡évsÇÒŸˆ…ÉŠ!#ùç _ã!þ2øõ·XÓgÏè ^eS>g·|MTª ϋׇfÅp-ƒœ…A7ÿtºP³Ù´…¾3Ÿ¡ÖЦþ×þÜÁ~Ѿ?ºOý$hh-ÝL‚²C5ÛtSŽNtL.ŒÃÿ¥˜¨*kÙׯpÜFáCgÒ…Õ uÌ“I…‡ Ï`öb«ïœ]Ta÷¼Hq^Ýê[n 0Äúj½­– &ö[f8âóÆ ÇàZo…r^¼rÑÛü_‰Ô%ÛÝeú§Ç»ÔÀ9å› 2Äi·„ K¹›&Óýà«Ó³yáz\† e¬FŒ•üké£N§™”ñ5>¯¨òþÉ]Hõ 9À>@@,j· ±²œŽ ªgÐSþåÚ ¦òFʉ¹ÉŽ]ó—Š`¾K¸-à/ö bJ²Fv·¯¤q&ƒQ‹3m‡ô¶ëŸ ;KSõ°¢W¥óCµæ(e—£“GUŲ)zÍB9½P„Ší¡¦ïÝu=„Ÿä®&[GˆB.lÓ÷TýEbø™¦¾zÃ?í¼ûM~þg~F£ R>±#±j²•—ÕÁš ;xŸ¯ _½üA)pWðš—,«‰Ês˜.ƒ˜$.jn|Åv†a{U_Ÿ–²Ÿ&F郈7©ïQ?$× u쫱c¿?"¹A¯ëËt#ZwƒÍËjS#ŸÕ朜ãmÃ@QÈ\Ô'¹.¬9”ÞúÆÉïÿxÝɽõN5~ÿ.xâ3 rG’†L>ò ÎÉsfØè@‹7ÕÒ{™¦„TQ`z¤×-_m£¹‰=£LÈJGøî»„‰îÅ‹qJ·Bˆ;*ßœ0‚ä}{´FEø ±i|8*Ù!ê€êDH~؈¶TÎÉ)é_*ù2+Ê<ܾ°³;0çl‹Aù#5Í©"wa@9‡dÙÝt/Ÿœëôr?± Qêz ´ß¡v=rº(©>&å–q}"5W‡P‹¬á¥þ‚yÈ¢LõåO—ó ­¿0ÛŠtL1³º,âHg$™z^ós.qh¬@#…9¦´ò ¹×ù¦"Àxì,§B€fÛÒ ¥ÅçÚ/J%äI‰DŸ.õºÅa¯ ˆÆŒìÖ—«c&/Ƹ_Àý@ÏtGv`èT–løl¦aE».ò ’Š‹Ì °®.CTtòû‚kÙÎÓGl¥ HÒî†ä\åÌ4Ÿª@õpUª5ü§y¶FÊøùSZ3¹žôR‘'ÞÄ;™6ƒ¯ÎŸÜ9 WUÄHª. Ù¡¸Šze4jÏ’${v8·Ähòò§`ÝI§ÀÖÉcqéûÊ 2;ù&ˆB=Y;sÈY ¸ lâÝP× T“úM¶j[‚JYOöÓCñ–¯Ý l®”3ÌDý!¼S<«:ŒôRÿc%¸Rv‚iAÈ)ñe¢|B­¨";ºu‹Ÿä)ï]]SO ü(fÝþ_þwç߸D/§s ‚¼(~²–6s +­­üi&’]¿"Ül?LAk/cÖYÇOêÌó¯8 ¡·Ú Éy79Ïh’Ígi¤O6ç+ Dœ³÷.Åù'¶n-â·YæuÈÉ@m¡½jÀNÌÅǑӰſ×JMw˜à ~ßw0SèAo7§!.»qÒ `i|-gÛ:pë±[䃹yòwSè’(á•p^Õµ`8Þa"ˆgw{XÀì@(u˜ýÆO‹Û0L¨ën¾£ÖMÈÙn@C–ña®A øydVvî •­U1G"öjjß[¼‰CŠ£,¸°øõ*¶p–Ê<!„të¶ó{û )˜Z·=J ® Ûç˜Þ¿[VÔô:49§‰T±$É3 a¬û&t‘k¡–q9æýýý•á ZÈ4 D]âk¸^ñx jŠb9¥“ͦî8Á ŘÂhãwÞQ<´8ùÕðÀš>Üôüž]ÈÖÅÈåoG„ð÷Ø•a>£Œgòüt4>–î«´ºµDñl0M_¯Jªy¦jÀ 8˜=®!Êô”ÍÁÎTÑéTˆ‘ËÙ¤1ˆ½½“fȱ1á,DB/U9°:9a¦Ýó÷¯©iðyðˆ†ÚÆwUnè3æ›ò…·yÐçj×ñ•‹ ¨iýk†çÛÄ”D±`uäX*ÿ?ñ)u²Øž&£ù¦@«†U;ØkxË—¿µ”U•Ìš—4 ¡ñò1ÜV(ƒ#ÏT[bQŸùƒ4•¶;¦™‹¡Ü¼za߇Øë»…Ø@Äÿ0j‹9qÏ1vµÝžrü7?S|PºìV¸í$Â’ òŠF«{{Ò\—+§¡IZ(êV@œÞ]—P/C9/ýyÞ¢ˆ{ªb*B×Ú\&¨‚~{•®•®ÀbÔ‰Õm`¿×Ìîf@ç1Å*Ï×x-ç·‘Cœ™‹ŠˆWZ\ŸV«­?ò¡zÕK·¬Mf;·>Å.FR% qƒIpW¯Lÿ™y?Œ? \ÑÐÀTÆLx•c"08(rÙV’`L iz™|Á$ ù½°søu†«9/zO¸ 2©“7"uÔØ£sNÔÓ•Š Öb‡…¤ƒ¨[¹óTäÕ»ãéNMA'"¢Å1 ô«?ôôAL†“êàÐh VÑh4¢ôVr LïpR`ÄŠ 5d®ßÙ%²RëZos?(¿¾ú/ðÞMÀ¢`êCÑçãý+vüøÚK S>©át8àÏ]IÍÝý)µ’ôΑƒÌÎŽøùå­Oõ NèOãÝ’må”–¶XDËj˜õå¾/`N6–ùK‘8b4u*3ÓŸìö- PŽH›´¬@m´¸$^=v7phGø:²G‡É».ÓKX¬½,Ü'"À­¥¿æþÙiØTñÖfáãÂó̯ócE®P:x½ÓÚøïŸï_ºÁüB§ÇørÃ; Mù%)ìI$µzâ÷sŒÎ³ž¯ø{ b—+>þbHÔWèdwì% ˜&o{¾†‡‡3gx!(*:ŠòŒ $üs“Ìš7ý–’ ctŠ'Äa?evε¹!x‹£õ¹¦ÄU‘³Ïùö;Whžúå…™Z¥¬2ÝûdÍH*tYå周ò¢Rt¾§ BYq_Ny7^‰ˆä¶ø%@瀂êÌm˜º¥þCéI)ñø»~¬ ‘ÏüÔ¦“ú OØ1¼¶„fppxÎþ±“.Q€©uuú®¿R±6ˆ1”KmÓ‹Î^é»ÏWwña~kñí¬ƒ® OBÁ‡"µïQòg8´ùÀ7`’dŽÀƒéÔ­Ú¿*L•£ì¦êàIÓ…ždù5xSðÆÉ„+lAÕNvµŒ„3Ðxó‹_B:sÆÀ=¤žC)óDy“‚º¨|Ùq!\˜Tž6>"R1VgÎÔÁ©2HÌ[dÏa¨ïózÍÌ2›"ÒØ%j½âþ¦_Â{Ü’)#|lũπ íˆJ.D®eŠ(é?„›ãÆß@þqìá¼ÇŸíœœúp§ Ú–ºª“ÙA'Rj­½Ù³Ýª± !Y“ü@fY {{FJO6™Ž>=wÉvÿ=ýkÄJg³S  l±xÓµjax²Üç{(zü¬VDRÑÞk„–5·dp ¾Äq—:á+^€­…$F§K4@o`S|ŽGwïýè8}©:©§Ò^ _"¹oYÚ»V §8Æ—çý@ Úˆ‡_‹œy͘>}™É Di’ŽÙ! ñQ 2lz\ÁaFUWø]¿³€‰ã'óDz«t¤™ÒÎONªÙ(¢­lÁý¯È®S³xot¤ cVûWŒ:…·Á!ɉ2v{äYd¨rÉ’Xƒ±o’éÝ*‚°´ WΪÆe5'›D4ö rÖóLçà¢6¦>‹Zamuÿñ–g Ó&×ÓY•š4âJý»Ú0ôÀ—ó‚ÞF›$¢A/ÆhN 'Ë"×ìÄÍUbUé˜ €^Õ]wŠÒKNšØ;A“Õ…nñVƒ>œ(ª”8‹Ã,Pý· ÚZan8g÷rüÓ“y_qåp iúƒ\ܺ_lïq-”Ü® ­ý.g¨Y± ¦„8HØÃ×u¨³Ðôû¶pÖy‡â ý²¼°}/=/+òʨùÓ¦fOñG fQŽÖÆMXÛfù!Á§ÚÜ¿Ý*8± öÇöI?píƒ )ˆíJÏópK²6‚> ¬hM9:ªk5<ùáäÑMb }™æRü#>Ä:W,ÜH][tlÓâè[לN§7Þ/Ñù“LC¾õ€Õ`f‚§-‰M £ ËĘëLW¡„Y<ïºFn¸EÉï [x‚78$žØVi÷G°l‘‚=輋瀽ÙéhJÓ„–Ñ{PíJ@Y‘I…Ÿ­<ä…«A!:… 3ý|þu‚FÕ;ÇéXGÒ]Úì0‰8Oõm„ýén4ƒ`˜tq¾N~噳k …3‚ÿ¶‰qvÈmbŠ’¿*E­t0ü؀ɻgYóƒæÞx \TpÆÔLawøu’ÿŒ‰>!gÏá”6TàiÜ+ÁX}|–œV^/+%´žkMiÄô”ð»0ÛZíÒvHÔ †”Ì\ Ùa¤¹ÆDÁŸãÏd)ÊýªÁï=™,èÔWÙ»KD,qA™â…Xf]zF‚«ø§»#ß¡FA´g)a^ÿÌ ŠÍ Iºó}ÌÞQå’ÎÎKÖ>°;|͵@ä&**EƒŠ|0F‡XØ8¯x0Ç.ãs\‰°Éâ¤}ºï®hÓ¬ô mjì)~3ôß»FæeŸŒhÛÓš23N žIæèüág²azMŒ(~³Dõ—“ KBbG*u|Î"cw4^öâ4íˆô‘,…;ÝBcr+„IöW‰œ‚¡²qEpY7i„ÅÉä m)C5Þ{ÔúÁàÓV ãéÂÞ¡ Åó-Á¸ü™±Ç `>Þ;ú÷Žþ£„+ZØÕd˜§Ëâ.2ݨð?Ç”Ft#+÷,|ÉÜœ…nã•Üä^‰±é7´º áÛ‚&ª`Å›íBwOñ2ÞOn²v&Ñ7§n¡Uï¡cùc¯‰ÿÈ¾Š¦òš¹;Ja@zyîÌy±|RÞN¯Û¬êÖ÷¥õ|Sì®kÞï lÚˆ¨Zþ§5kDHª¨–eׯ‚)®\‹rdqú–Ñ÷y‡ófo<ÿe|M78hAó ¯ú»sÖË6LßýõûHcÊ´¢Å7pŽÁyâÎL8˜Æ…{ÐTJþêk Ò¿¥ȼ;¬2ˆÍ[?8Ëѳù&¼®Îf æg)8QÖ(^!*·ÊŽàGìDrC@Z‘Ï·¡„z]!ò˜}ÜFšñ—8Efž0™Ú•p±z@—ÊÏ`4õÙ3¢H›ðŒ•°­Ñ‘Ô”.ˈd'ø¬~Ý´ (8DbJ*Žü»¥X4ñ¤˜)¶?ÞS—úöäq@Ò¤ý$ÈŸ›ÅrpKÒ€bÿe¿o¼‚+M7|ÿîÕ 5“dr,!{‰©[ðT„:ƒ>ðÙü~‚'ÛjG°ž…iãbmÔkY8…©¢Ào Þ# ôÒ8‹€~kùâœ±ÄæÇOÑs¥³MÆD\L˜9¤$k 6%B;K22ÚØcb´jp~wÍ QÃé›)sã½dcÃò‚Ó\„ØgWÕPQâg;S̟¨ðö dÔn5 =2”f•Áj›ºK®È˜³á#—ÖIÞåYPíK"¦b˜{º;ßqâ ‘´ÊÿW¬1É´!-Ë’\Óߥ\ðzAáTÊ,5–É2ÒZ`ƒú¢æŠ?òæä)í.3Ù,&ÞuŽèz¿ØÞ*kçç,¯eøØÀ ÿ™"ìã³ÿ¬ñôº3¸™‰1†ñôvÞO6+ó“žRÖWŽKñŽßºs’k¤)®go3¼69IÕ$öšòs¦Ñ[I¶Y„¢XnˆÞ4(žÒ@ž‰éÅme%솢Ãg?Ûùª{¼ ±~õ}­Ò^{d©±¼Ž¡˜3N«ÆŒÛâaÛÔØã›ú_Š|MððP"&fD•‹àÐ"O1 ¡›ãØ£’t^Ãy 2˜Ó×ÁuAæø:Tn“+ÞYÝgÅׯ‘ž§uÛŸœ‰ø}9?[>z<ˆÃÒu "ÇÌÒO©¡CH1í˜k‡àßÓ({Vþbr£m•÷µÙÁG‚}¤‹Ý]¨™ ‚Veúm‰Z<ãEé{õkd•q-uS1ÛÈê8“¦`ô…6Ê…b«¢Lÿ’Œ|×N6P'伯5nñõ6q'z%äDyˆ‘A5îÀYQöDÁØ1¨Ô5@m2_\לæù§€”¼T Ó#vwMîNG!KÙþ«Ø> „úÄôÙ>o³à§®—òòª:x£f'B,’j ÞŠ% Ãæ+J‚‚{J¸æÙ݃ÿØgõœ8 Y-Éà¢EÔ6³hÍ­ÁC¹X9ø±ƒNmÒ³àWùão#^.M¿ôJO‰AU,Èg"¬9±ó§®1šƒvG+,F5€p`ê=Ð&E1“&ùÉ•º^cð§›§§ _‘Ïáá†(÷/_Y_?'¯=f´ÆÒŸ·Mtÿå°5aѾٛÀ^DÂо¥äÝNË\›¡\ÐßÔœ O {[ȯ”ÎW‘Ú^GHÙlà¡!#õöBû ©gõéú_»-`ÿxËiáåuñ“óï žsÐA o´5_·‰Ô£Ñ†ÞJ)6Å=žµÍdÄ4áîçº]¢Bd¼šV¦hî‚R›zSMêpÙ¼…ƒm;‹›!®L¾«O, Ž«ËßÁ¤\ûÃÖ[†v¦WÈRÊ꧶׬¬ïÐÅ·k/ÔŽÉ´ôùY–Š•@@õ`eÁóÏ€:øôcª^ÞW°•]8Ÿü Ö_%Õ²]êí½í*ÃN¤I–‹#r| 7ê›…~ {|ñâZ~Ä´ËD±çoŠj‚ ‡%S C¥-ôµÌ‰µì*\„ UÊ@Üù¡ìÃe#ÃôN̤ܞe×âÇVBÇE*/46ÇèÀTýç‚7ðÉuøÊèß*¤ÊmnÖ7 (D£¨ŒU‰|£ÄȾhZÌ[ÉËb \XõeÙ‚²úåv†Z½‡ÚE=ù¸Gƒ¸XD¬hôÀ¸'ñÅc°çíA.š®qª‘Zô•ŸåÙçDóÒe=»ñ>Õ” Çì6BÉ,ú<[Bgàý%qÅ/îð»ß) Y€ëŽË9¿6…`‹›Mä¹Ó¸krñ;y•g«†Ó"èÆ lÉtÕÌÊ1Dø³Åõô þÜœ|ïc»wS†B×LÉ8‰”åÝ?jêè?9£×?†ŽÚ*‘´AC‰î)¦RWŠ%˜âA©  ñRئ}8ðK¾ÇFáÌ1\¡ãÊa^ «ºœÒrL¼.ÎïðOê8‰èŸvص&|"âèÿñ†9\`Á'ás«Ÿ€&V™9º;7F_Càpäé}Z1.ÇMѧ¦APÕ,Ð1†àòŠ ¨±\ÈÍÏ<fÚÌT1Ô!9+9¹«"û²‡å¡QMØ{êI¸f[xqjO¹Ï]©=ë±[ͪtûÁ.h™¥òÛæ?ºZBað³þ¢Aÿq³^•ÅÏÄDŸšSëܼºÏnp/ÜôüYWDñÊ ¢d ¼ë5/|½NþqêSž‘#³Œå ´ýÑ œjxº»ñù«DîI¬p=®ÚŽÛ”UIÝUFHN8|Ù™Òà‘ý(WOMp½~ÀÒ‡ùЄĀó’²ÞÒ֚˛b¤~`Q+?â0¥è¶P+¡vµ´´D!Øv——]"œ·™Ä?#¶p¾;úÙµ»fµ¹-?Û"„~¸¹wèTKû !îè“a£Gq±/ºó0UUˆyN[qí2Tÿ—/³Êæ Ü|ݪÕU‘.ÕøÖgB8J ¤R,EkXD¤Ôæ6,Ò1Þ)ÆÜ‚íq&‚eçÖdŒEü&$Î~Ô\ù ¡ÎãZ –#;+oM;³ß&ࣖÜÍ62xвð³²TŽ22ˆ%ñ€­ú~Å|Ε5`.¸•„%TëcÍFŠÀUÉ7]¾'Ä%šÅ+L«´9[A²±oǶ.s<¢Œ¿Àx?ÑIûß]êB«’PQÆÏt³h»|`ç;Üt;Ÿ’ïªjÍ“•Å%YMkþý½!°YOÝ?Í´6¸“‰ÛÜö’á×lºtÈ€íûÔë­ÅÌ]+ÖØ³tmZ}A­‚¹þiÕ—¾;îˆ1>´5ºW8GÜ6å2Û³¨£m4¦|雹ÛM.ü&ùVàI?+Õ< ¸n¹ ÓÀ³Éc¾QÖR¬|È6%ð¼LðîÜhx/«@À¦} ýÚWüÄ™[o(tÖ?Í—Zñp†Z˜ÕÃjÎm'ø°ˆD ©[üqÇzB+á]ƒFœ š '@ E`Ü„âšGå$ÛJ‘ü>Þ—¥¸ßE7§üN¸»:n„gÑæC±‡­¯ðšm¸)‘K¶IZÁ6„Ú¸š’¡,•ʸù`xuº†Ë¨ºÓÊ”$øC:*0§ßAö2‹ñ¿0r%pß7ô¯Kmx0òç.U¤ Tx<.³Y‚g<}=·ñÍSׯ*éMû.K¨Xáâ•@W¬í4ÄÙ9‹¦xïéº>·h¿¨Jc “dçø4Õ~ ѳW§"té×t˜£“آ ~ñ¨|$W­©'?#t•iàA¯`8s5 ›ú¤Õðkæ¬0TOÃslõb÷eG,æün“küJ.4„ë¦÷âõqœ8Î"qÞ=Ê{VJü0”8 Áj]]ªi58Þ{»¢ÃËì’jc½£lH’MBâ¬x¨)WmMX/ƒ(©Nçbþï•¶l¿ÏoÿÑRSr6O8>^òþ 4T{ñ -*35°M¼=ôêy¬™³VIâ7*;Îg¢ÜàbþšÏÊ1ö¯Ó¦¤»aIPøRö;ñÍ©úÏi˜Ï©ÔnÓ.íÒ—K5Z@c ”ò<ȶB‡¤}ü?æ\gÞcÂ1±Î¶Yd+øWPâiåO©üz1u3‚(õoçN¦ÿ ¼A¸)‰'25‹–;57Ý)ÑêŒÜoPh6íì>1ÿœÐ &_û1tN«ß cyömˆÂS-rp¨É_‚G|ET¡3ܼû]d,E5Co/žóA•,¢HÍ}.æ+=§üUfVi™<\Iò†?jÍJsf=lrmUãø|F,)·ÿ¥Jˆ#ç¿sC€·7,…™¡²ß¶s¿ù1Ò ’v7.ÇŽÔ OǯVÉñÿ‚ƒœ÷ï—Ö*ë'ÁR…Á.hÅE0(¹$[䥮Ö.e@±Œ "V“do[i à£>ÉcÝò_餔/R‹3àjÆÞ}‚âçâ#ʮӶz’\L±Ò=T;“Û$‘AŠžZ¡8y”ƒî&¾‘f¼4îÂ%Á†3 NDy¦   ª®ßÜK‚ÀâXtèÏ@˜ñ\0€F–ŸàÝËw‚¶vwoWZA59™¥Hó±G±Ä¾µZp%ÀFVõ¶‡ÍÖ½Aw T4ºá0Žb„££ÖË‹€Í[X’¿° èñ3MrïÅË“óé<Ú¬Q­Á"€ïâÁóhzçËiS~Yþ.kÖ¡"šj æ#üÒwˆ4áÜùì[eDi€#s>§aެ8ö›JµÚO2k4ôšgQ6|ê½7 yŵ¼ÎE³ìF€¯ )ú]§ø#²©¢ÏJË÷Œ]T²ìTšhòjáÌýôè^dÙ&g>O¯û ͯª³Ê2û‘‰bM¿¨ßjäzIÌ3ƒB­k;}Kl@8G!í=a˜QÍul8„l¾ 2 ø–õvŸ%J3"vºÙišjÉþÐV7r ,7ÈäúTš]§û~\W¡Ük‹*„%œf8ÏžÔ a©0åý:ùœænϰ(!ÎéA™ôKƒãS™[º9 v/à¹Mj[Н°L×­¤ç©" ‚wªŸ˜ñ5¯¨'m¢µD#t™»°´Jä¡…cèÉ>e;eÝÍù“ìÆØö.?~:°7˜àzoLiÐ9`äÙ$ö“«Üj;„+ßçÍ ˆºñ·©›í5NŽª¢öìÜPÙ°ºSì(+n*‚ßÕfПuÚ#Á'ý— $Íl²Z׌Ì&­®}Z±´$È<±~Ð!’¾fGðFR7>2KþËT+¾6ë†bÊڈ̬¾ ŽÛNÕ¸_ô”LŸ¶×¬2’9,˜ÑRËþ¶"•Ù³„ŒLƒ¦ªÑoSŠsž‚f[ (ÜÅ HÂ8J¤z§ªEænúÜ#?Ñœ²…6p$ ÓÇ#ø6çÕjȵ-ìB›Ïszƒelžñû¹N ¿€¦«Wü_ýà=B¶±—ì›Q®pãê"¶ñÆŸ!Û?U ©ù2ÉpRKéî]剠NVš“FWK}‘}“ŠqøÀ-°xçLëš:G¥_u+ÃÆëiȬÕ*ò(x=~#·à5·½–mŒ™ãhqÊÄŽr¥¼ÜÁ±5¹‘xXónµ¤ž_æZÍ/pz“àMìÕÜYð‡÷¬ç¡Œñs“1oÈÐ €ÓdÐÁ`j «ƒ¡VƳ8=#=ÆÕºì/þ³åz¾"óðÔA˜`©›#z ÂÃáÓ™´oÚ9>F#¹ïà¤ôÓ̈ï¦ÓjwÑ(¿ÈÎÎå0ßÌ*" ?ˆNfy?v¼mÒ(ò0›[gÄÇtÿŠ"ø.S:mŠÓÐ=Ù ¾å fYµHdælŸ†Å üŒùpÉÙ† ß÷âgpÜS/%aë·)~sIfíµÎ¥bzÂqP!yœOÉÔÕÅ^cÔ´ÄïÎFRR vÉÓ7v›Gˆ5ÚsE`\ËD¢gô`–Ýõ}t[uà’/×.UCm™>9¸á»;sšsýí=}ZÛ¶ g­:­‰˜S€%©‹ñüç6ÿ2 ‹=¦Ì-Óðæœ–Q: }Í0eo›Ò¯O¼ØÛÍYgç$•ª] ³Êö ¥ÔáåŽZ-‰(—oQ*ervá»&J‘€[špO—û>ö¯ •©‘Á±sPï¿1uEên¹$mÓ?T½x¯ä,xP¤Mví_W-<ß~B&á)±Éâd¦GƒmÓ]æŸ`8îë¯Tù»¿ßb˜÷KKM­'_Ž:þ‘¯˜n¤ðCJð˜µ_¶âöcî1²^ìÓú"ذ€¿±ïšE 1tgoœ¸l e÷æ¸!uس9¯…cï—J¡?ÑÄ;pS]Ìq'.à2G xgòl[Ulû«ŸÇZlHcÑ#è?ð_:¤£ p˜øäR²Ê/-ed&]ÄüÀQc5ÁøœÅ{ò¼‘S=f\eñÜYÊ[ñŽÌÎ&2pOg){ÇÏídÈY[ù–çbíÅ…]úÃɤå yuÆ© ³ %î“7}/oÅúžäö´m?}«?áÇá 5Çȼb —¸1ͬ£b3*®‹B毉P,!YÜ]’9òÒÞ@ù©#éb9=iÆ÷Ò áÇ\=¦:¦ÎÂ@q††æy¡ý&@«ªdOÔdyÿ\S±)߸°ó…uÁœ¿§\ ‘_Vø¥J?in%@œ¦Ë6Í8ŠªS³ áy‚ÈZ«1Öo‰׈ºäKÔgYYÅ}1e×uÕWƒb¶†Ò‹ƒµuç¸ËÊN)ƒúk®áÈN ³¹Uõ‰,JÁUE ) ~€ñ@]Õ%m4¶ýcPȬTÓ8 ¢#vYÿJ!É DE;nðê_G¶GÃÕ¿ ‡ta–u½$Ë|¨nv¯ÛTß\"íí5ÉM7-‰ð߬m(Íq\WË­hÈø¾ÇÕtxóVj ò~ôù†Ü²k²â‘,y°Éø3ˆøÙyäWRh‹z<íù¹Tmâí¨÷é3Ûç(‘Ñ­„é‡áÏ6Æ¿Â@Í’pªºR;‰p÷ËÚrÇéö-¯-rÚ½ÖÂÆÝ”»"á{ ù+BÌ' ŠŒÞùò5©©’VäDñ/º5»?B2ú Èe“´þý¸…FÁƒµ¦’G» Ľd0©üäë¼”P) æø ªÃ¦Ú柃a •§H®baýá‡?­AÊÅÜ4:æP\Páx C®Aò2ø8+nÆ‚ÂÉ3¥'/I·*8¼ë¾S ˜aqK!ý× $ãIþ Hð‚Ô’Ñm‹»!¥Ñ¬Îô§ä”ÅWJ'#íƒ#w„èbV ·Ž¿ TÇ ÞÌNŒÕ8WüÁ¨PÈv+¤F+vP±H÷»N›8²€ç¶ü´Ð$!}Šާ”PbØÀ•”A^>`@Nº/ø|Ž…£Tu¼x…ã__òÄ>)_ãù$#¼-`R  IÊ[µÁó|Í¡@ƒ@¤®s3/{_Œ«h˜¶Ž8þ±§¡5ß4å¾Ý&OÏV8Í>’@åà¾n Í+Qù^âæöd@»úQN¾d쌵öuŽÔ;R¤»±­ åªuÌLðÓ&ôtwˆ¡Høyv þ›[w·É‡ªÅaAÎ0§“á·¼hüx?FÉ€*ÈlÛÿ—mf¤£Š¥¨À5¢ô*a |³`ƒ«\ã’Y¯læ•7™U'TäSðæ–hÌJ²…ŽQBršâÿök¤§ðäj\øË}÷ÃN!†²'Q¨9wÊj|~(ÛÃ]L&.(ôL¨œËqÞFÀª“q"KsZÞ#1+}á1È+ š3]¦Å“¡uSªþͦê1{¤ì‡qw+rŽ&4ùÁÿT Kô{—»¿Ônèˆ+Ó!hYî¼+#›RŽŒËüòàcîBE”Ϙö€ó^Ÿ©ŽfÉ35i|¯PzpÎ f†|'ë¸7^ê|U LmkJûÓ¸>ãƒMH÷ÛÑcÉÝýf]•TqÂ^&9ŸhYÏ‘„W–L!xàÇ>ù-ÛËk`CÌ-‹•Ÿp‘–þl›ýdÊ©68œÒ¶>+ü"ïêˆÿÏGýë%»ôGûØ(ÿšÚì’èݺì”Råôòyd€-úÁ‡*rwóTJ6ü™ÂMHt<Í»”²ô.¦qà‘`Z×lf‹¨¦…$ǹ\ŽD“¯Æêß|+Ö%(ççÍš¦vú'ý½†¾†!òÊÿÌÁB„Gˆ•‘šVIZY3@ƒ¶³ª )œ[eú´|f*ù®Ç*×MQýoê G5M[€Ìo¯"Än°[wXåÃKG3Ùî4Ø©àÉGË\=Bh!3¶é& 0´@g¼;Ðó†™CúR ȶl;5Êyƒ´»‡œ PyÁY†$kß%],Ù¼,ñÆ€…Œô?ôÃsüw¹,#¨=DØOMlaPÞC™Î~§8G@™Œ.ØÒ˜ú±+­„T…äv=Uòg)æÌ€´E­ôøD¼o¨ÐYNV/Ù.Ï·)t‰ºçMžkH¸ºƒ›u=¶¸ÈÂO\¶!eÐùmÁÞ6 Û¸ Ü>6Ýþü®Õš•ã?g´w‹ $2 Êÿ…¸Gè…-TœÕq :…%Oº×:8Ï‚Ý4ž0^ƒ‘àl`kÓOÃ>Tå aPð/æ_IðG?fXñÙÍû£Üꜷ®!¼|(ãŒÛ­1s3Eû¬ðîH¿fu2=ë°_κ"/y•/? ^z3zQ$³À*š¾Új¼&ÉzD^[])†N!C-h:k£Ÿö>?ƒˆBExAÄ@f¬ë3¢º«ƒÂþôêpËV’‡*âÁ±ÂpŠôÞ>竟ä‚;uø6ðám‚C³=Ò(ý.:C"[ä˜6Fg¦ÌÊùV»I*ÿÔ05_ëä\Rï9crÝ>ꤟ¥lcÃᎬº\VÒ[ô–i­GIªþ§õ‘‘Dz¸ŠrÓ,£*¢Ø¹ÒP‰YµÁ ?ÐÇîhÛÅeK.žQÓ–9#ßÝYƒZŸ¬ÄÏ~/Qôš`cð³d(^mKem&‚v+þ°/*pÂ'c³†®ØzùQú2t[t† oOŽt)C[KVR­v›ùmp3Îwå>´‹éà’°çE­ážxjôi —ˆ§é\)ßâߟ£Ãúg-x™1 Ÿsäž~n†*ñ/ +wèèAN¡l»5»˜›ìSuÂ? ½¾ÀõÜ=¹×n&‚É&¥#ÙåIÜ¢áÅ¥–’¥Þ8e”€Ü°š`2Z£ï÷qWrŽÁÍð˜‰AÃ`‡‚~VæÚMŒ^ÇM±kÖ*®’ÉwÈ#P|{è"í¹d]ô`¸\+@BLøÅõbˆUs?äR©\£O$›9ñkÏ õs¶ÓêY†DmØ•'²‰Ä&.Á¡{€M‰YC*ôãC&]0íH² uêš®Ha!Šî£0]üM®"Ƶüm̱›è›×€„‡©p|íoŠ#¯·Êê½0L/ݺŽõ{Ô>ð¦0ÂÁþ¥Ç+…P²B‚|t4k€d¥ZYHÚºÞ‡’0K7.àííWù™Ï="ÆZ`YÝeÑ»$Æ$b‰V©««âßì¥c+Î{î®6Scäi ¦ÔoO¢oÛÖ#õد0£OŠ}~Æš7Õ™"wš)·<Â÷>@:6}ïëˆÛXAp>ÿ·µ¥J”þ“˜é'Üc—ŽS¶kAé{š¬¾$#¾¿ýHþp¹ô„©`˜…ÀÃb gÅë}MçÙ[¢[‘ USÅÌùKã"mìuÔœ¼þVxLbd e£u:).#(?I!¸ß h]þ‚Œl ’&?—vÛ i}ÃÚºQ*¯†qþüú¼"VÞ™&¤»8è?¼n¥%Áp3Õž_Ôë’¾H‹¢MµòüHž–ÐÑMÃQ0{ws©'€D.`l2%üˆ¨Ð™¤Û«€î€™7Ë´óPÀoÛ¢ °!F&i}æ¬Qœ4Ö¯Zn‘×Uì“›wƒ³,.¹4maxh ‚!l´f{màLf35Ÿ{2åDª.NeÂió«ÃàÙÌ ç æ”š <¯ùLäÙ:Á0¹vŽð*H$Gnódtÿ@µ8ã{`ïXÜ®¥bÉé4ý[4F:Ì>tµMŸ Q„»xß÷R Òù›…ÄŸµ…ÍØ]/½Y²óÿXì,÷îÇÝ!VQ¹ÛM4•ñS'¨lDå€wñÛ†ušáLWüH #]nÂ_F~˜Å¨ŠŠ‡¡8áGMæÎ(Gµ6‚‡Lˆ~6⎈È)‹‹×þzR¢¨–ËüÙ0ãâgí׿ŒÉ#Þ1Ú³‘ÀZ$Zåµ[ÀÎá*F÷Úš³ÁÑ&~ü뎙l±v̳ÍÃö~Ó¸¦÷Lr†·ºs ë=XȸP¬}§Õ÷ÊU+k´rç/P{a/‰ÓÙá8dúƦ9Çgù¾Þ ×ÌùŽx»bDL™Å%ÀÃ+w¹N DÊUHÕ“DŽéœ’¾~ÈÔ ež„z×£æýXÙ½ë·Ã Ê“¬jä==V–øåfÔ°óž1µ{]MK÷'™>3Wâz«ù†„‘q]QÈrX4B·õ7„~¯¨aU)«1XˆZnhSCîØcÞxT±£ØËÂp…DÓ?FÛl\Èé˜ ÑyUê­¬¾ÁpÎ÷{-Eùàµó‡„ȉJTn£<49# -º‘Ðû84¤ñÒ{IšIóI<$„uãUj§‰æŒ§a†›‚QÄ\–ð£Fª‚S3ø1,â+úådA†íý§1;„ì-Λ"™Ë¿/ž‡C› "ü”Æk]"±Ê|~²ñ¼O,nøK͇l–æÍÇ6CTLˆÀ²„'°G_cÈj÷Ã$ Êö潈⷗¸cíUÀª=K[ßÜý1]kút–™…µwŠÏ´ömÇŸõ9õi‚˜r¦àõñ Çcßýý€Â¦¸:öæÝk×B¹1ô'§ÙôæšR6Gl³k8_Î]V„8Wä=4Ž %÷ §1äw]£g¸nE¤^^8»ìã1óÁªšUj,3lñ¨d¤þÜ™í} ¸ê¦æ 9È B_W ¥oé‹> D(ïy•5ÎKá°/9ëIo±Ž;Ü)B»n/@èxcHE®†ñæÃP Êrj,2{PÎÆ$¾ó“FAåÚð7¸ ñ«‰n»é-?˜Ü×ù³:·7ô=Q5ÙXʜ׈HnÔü{‹Gš åo–ð»ð° [®tr2›ÜþFÚðßãMŽÿÌÍs†Þÿ>Ù~:Ëëad¼Òàê`™K|$P'v ¸@ £‘ ¨ƒrÑKàK¼pîÎ7J0½„Çcr1¢·@…oùw*x˜ÅEh•ÃÀµ °é_åP«ñ„NkhyIÓY~a²è£ÿÀìáQY0°»ä|×Fš«òÊ+å•‘#SȲåö+É'IzßÛž6_y¿§>}/ö’רSÕu ½ ¶Uú c"±5/g†Œ :›*?͸l0¿É"pöe—Ê|Nz8Õ¦€¹P:Îü½ ™ø%(7Þü ²é];ëÿˆtY4wÊJ»lO•´··ìïšÃ« .é\Мšþ/£=V‘ŸEà®éú@J“È”WGð2£ K.•³$ꕊy´B?£Ös_ÒfénGscö¸ˆqú vÄ!æíÕÈ%„2ÊÝl¾Æ€å­¹"G¾L«Ci Ê †Í7ïÒuhmL†ŸKöñÚ˜È$ÚÙ[þCÍu£­`ª@}Kq‚䧈ÔM[®øç¬PøY ݬßïÒnݰú,ê¡!Íðd+ÇGíB*ª¶ïɌי§Öäæ*Bào‹§­Í0b#"®su"h^÷ÚѤ?cŒØß›#¸Vãi¤|=Äû`'aý'l™K)uŸ¿/ÊåìcTÁ«ô–þ7køÒõrkáÿÍβíÓ!wy%#ø©}3æ=Rô7Áã+V¸PO”'=ÇC¬š.î[ò3†Ÿ!Ę›œÿ¢‚õRIÈfáQQ˜áMþþ;s<”†ó©o`IÆÀc`°Å’6èV<ôvÉ' ^¯±¡b&æÙñ†<#£/ù†å°RMMî á\áÖPƒí`†ð\uqÓŪ_ÝIb?)Möº3 DZ¸%®$pÍ&ëßu˜ÿ_µ·¨×]jx%ÉT8ÑfT•(IgöN´·¢Ae$C¼ ‘ÕSW¥>¨:Åv{BU3¹X°‘-mÕg!:s]`äÖ5"¢ a4Ó'¶lSe (SàfÓf¾”@ØŠ·+ä¾F±|ÂaΫ™ý¹*Á˜6ª”J–’H>À¬ZPûcòiùšíÁ;Ë gsäòûrÔ;¯ÔKë‰Ë–lËUÅàÃn1NÇ–|½m€¯EÎ<^…qüÌçb(t5¨ïžŒèr£¿+4ŽIÁ÷Â$j'ÓCRżáãµ§qéÍ­ú}`Åj‚á¼¢Mµ[¤©°}/pLó ‰:Yk ž%O/%+,)yó2Æ£¬õÀØG—!_%Õ»~mšï9܉H²’*«ŒGëfáûo2j:)Ó÷0‰\œ.vÖl¢ÿZ#T×ýª:Õ×—¨VÛéž•­aI›œJ­UÖDèåÿqE ìÈ¿4¯Ã ²ŒV±]YÏ.R8Ýa-Ž)žo¸×0ÄGÁtn°Y¦Í#ÃtË¡ Ou…XÿÄ!‹?º»ÑaºOõ§Ú›©ÃmŠ"b›_dÕw§Œ-%èS Á-?rÁ\â®&ytሹ—­™tA»Dv²=UuÉÚ„?¶EóÃà-#Œ‘Œ Á¸3>ÇžÇ $"èh!TI¦öî?8¹o¨pª¦ú&ö`ø}´ãÇNë,jÑDZQé;A0>RáxROÙÞ ;×÷¼¬Œ"8£ÀY§Ž¹Á°Z^Þ™pµ`¤ïëbƒ…̲'ÞΡ㻉s‚¸­¿ii| “õ ºê dwç]2iÓœ%u#3·Ÿ¶md$–E²/?]v)| $F(~ ì÷œ˜Û¿X‚SÑ£pïòÙuõ'¦œâìo@/ÓÔÃÆMÅ/‰¹JêÕ»®ùö,àX¸QÔÀüsÁ¨¨Ãi$A¬Y-ŽªÞ~SÁÌÞÿš¼šk0ý û8–…Í)¥k·–¤^ÐÄ0 A°ÌJAù?+ÿ6‹©{Âûßo~òê£îÂo‰Ql¯þè3‘ Ò *šW錖ÇJÐ!õ¹~®¥G3"×àØÓ¿›¦s #hƒ;…í xCÒØÄl3íÓ¡wàǦwÀáæ§£ù‡MýŸÄ»Ùd‹Ÿø9U\¹QPY„ª€.Q7‡cœa¤œX¼Áª$êÑlÿ % {˜ÔÍmÚ,ÓØ›Z°@].ÙÎV? {oý½sG;E|ízÄë“‚UVÜÚíHÜܲh°¹iº,ä­oÇ1%Í,ÉzeЇ}íô1-+záIœf"ô=‘# dnnä¼ òS]5 CU 8%ŸX9'°Jx^ȃÌG®_¨1Þ ,^´ÈŠ€X×þ¥xJu£N‰,øùØaèÅt#™¤Ý6ÙôLÍËk“(0aAU”Ö•ø‘›y“©WöNÙ+ÂBþÒ"îïƒoçL¯Q¸F bw^eߨ˜]²¤¯ÅÛÓPT ÕE\àž˜ä±ðSá[\òõœôœ‰Až$r¶DÅÕ€4°)Ï 4Ããéƒ)Ç¢#Û¡—€«v/€¢ à2HJ¥s2êed«*Iå3UWñdº–”þ‡Ú9œ´ð$^¹0Aƒ²š¤0¶C—\`†mŽkÙè‡xáŠàµx@<O£ ¢èí¹f¶î Κ!Øj¡äJïû]8žÊ“åvŽ?ÿì‰ ^g[éFK’»îCÑ`©T·]û+i» š­;#’W™ê.C£üã8ÚC©Á µ•Jw±ûïÚl˜¥ÂÁ`ógbá¸P½€‡F‡œVkS1ÐÇïK?áîý. œÀg…âö¢:ÁNd;‘Þ (Yµÿƒ ¢^©B´²‰–Ò½ÇXþ´»é޵Jóùe¯âŸnôí3ÿ>Øv<•H-øSiçâ¾7•?Xnî•E§ŽzY/Ål¥¡ÖaWDEf–µsW—B·–ÜÓ g|°ÜŸßaÜq™Â´sÇøVìÄ ®Ü3)ue+d°ê½InU!rZ¨dt”.0°ËLŠﻞñº²4âc.Eþ@~î8&¨quãü<1¼%†ÓÖÿ>Çwò©öZ¿‹¤x"ÊPÈ"F=*ÚÁ‘2°C„]÷ç&œÀ‰ t´•¾þP·ãŸ®0^+Hg´1#iä­eÄ,”·«t4Ÿ’”ß’¹úµ!Ò©!2-©žp½j[ô™J¹Û¸ª4™.šÒcmôÉùì9ºÖ`46•´Î ž+ìS·Äw°-¡„»Ë±béõç~ p$§áÝ$¢ U{ng‰%ï곺¾2Z\Ä °ŽÃ?¾=¸<Ëì%9i#OÀÍÖù£jϰ̷Ku§Úœ£­ä¶Vuø|g_¡¬;/ÖÈgïŠàì²Öºa|KGúÃ?™DxJ/¨c~¿1ýÇÑ‹y­üò¸µV <‡Rûڙ¦Ûhc]Ú²D*Œ½sùX®×iSQ¡Ÿû™ ô‡–y"ûE{}@‘l–gX}ª2ÕÅ%…ÿ‰ ä:É4(‚gÒ5 )WKì=ªÂ"ž¸ÕT¢s%ùô_ƒ± aÀßã°Õxÿk}pës{`Ê'.£ýÌ«¸&~ð¥ÿ(ÄÒ m„¯iÓ±gh"ÓŒÅÞ£©)âÄK³=XÀ½(Vy[Úöñ¹<÷^ZÖ\‘3Ï)wM% ÎþŸ¾”>uÄ‚Þ+-›»“ ÑN¾õ4 Ê~C7p þŸeÊT+{¯¥# Uçv.ÉljÈ3c!½é)[C9£@ÿh©0 8'çrpÞü%”UWÙz„·' Q¶“˜_ „â’`Ž=D&5ÛAyT=R%Ä¿ÕÌ×NLÖ‘jÑê°¸û?vÚ;ï*2²ÇÆÛ lß+„–m"ÀµŽ–0JeY •û r`,-"Ô6Ÿ£ù ¸´ñhÅÐP Ά¶}BµÞ´©c„¢MR£9ÿÔ‡Ôé-WBdg:×~‚Þñ(³`ÆìÔ¥0=¤Bu•AÜòöÇþ®ÆÎ|‘Ö3 PçVvpŠävMò*{Hv;_ì¶øUàÿa¦€I¼ªÑg¡Á¸H´²÷(50»aÑÎÖøà.‡óçÌ£uèĶ„$×Rô³dÿI¤õµ‚õÕ|d¥ø¦4°Ú/ˆærÿw4iø]ǧ`»IïSÂÛÊe‰ø½Ã<*ûÌ5ÕVޱåã·{]¨´ÛÙõw@u/ìãÉhm*ÜÛ& ßÉEœùùªò QNéæÔ£Eñj&!x­6W 츬z9þ`ƒB<Ðë$ÞîzC;\>…÷,¡õ¬ D&Oæ‡×Ê%°%zHåæ~·&nïM­[¿Ömµ+©äEM¸üü™ü ó$6o—VžûLù齜s¥Ëà<׃¨¶Ogß…€gt¥ké¬|üE-”2FW*G‡,ΰŸ˜oFs¶¥Ì}¦NoWÀí¾w58 ®ÏSáv´ïÍ ¤ob‚éHßnk{¥—€~F” :8ÃÉéÅy˜Pbôñ˜^û¯hWvÓ‘w½Ma·þù¶B˜íd½i5Ã’Wìl úlÃhu° Ö©Žƒ5? ›=ÿx'r1ä (]u^jÝ?ÙSpYm>ç_ªq+«•~LU¤¤k¢ë®_7ÆH_u‚ªµ[ÓÃÓ,zú²"oÔÔbz2*1ÞݯJÃÓ#^€¼T×ú\úæ3¡8 1±^ê(¡]«@ä“Ât7‚R½O¾(è¶ÇƒnkkGãZ×H/¸oŸ`µ¤/GT=¸ c-§jmEMS–ÐèÈÙ@´§.d9(Š{+½+ÆQ…ÄiÄ.¸@ƒ®7z{^ÁÒÎêŽzUÈ2Öã—N?º ¡Ý!ö÷¯¼Pé<ÍÛ¡[6,1FØ&ùP–0†’öå‹¡Ø[^ø™4º|Ý=“Ý¡”4ÒßÝC£„ˆÕ¬-©NÊìi`Úê’óv2QÀ–ØYƒ”ˆÛcÛ®q/>Ž`+¸e••ÃÊ0S±þq€ûKIÃiqË¢]ɬÅnêSÅ£vúQ_8Á¤ê_Ûf§7júíXC2IÛ~½ÓiKÊ­.Q_þ$?ô³¼v*œ( ¹ 2µjÀXÿugD¹o¢Ec\]ühOOã¶cõ¤Te8Þ^×ûåâ%ûYx¨âLf4¢‚PùÔÌe¹êK^ׂ®8N‹óM..©·é¡i á={õ`“5 ~9¨·±B·&õîØß›Äy³Œ»<%0À¼‘Ïž>`P™<@ÒêÌ«²5™3f”/$Lá„ç#qèäo¾dÀwУºÕ[e_ h~ÂkíË…k‘T[—Û§´»¯ËRá"³åž/ o$ÿ˜Ûw7Øšzu9Ð}ÂuTAZyö´é€vO ›…•û½òÐŽr\§DŸ¡‰YH žþ¿iÕ¦‚|LêÇ­,u)Ò]ظU¹ D?‰N´Pzmd„îsô3gìߨ½âï ¶g¡d'uÄÜå2`{—0†y³”&û„À𱄫…3——jè‚* Ö)¦â(œ>ŽøïGzç ! ä¹î|~dWs•®€¶¡!^ЉºQySPÍC~“ênS˜?ï;_x¡Úܧ‘¼'`ÿBê-ÕoòIˆˆ`Õ[:ñ©g<3q8Ö'G&:¬Ñ¼~Þâ(øäM¡0­f2× s¬Xùc>Ý›{ ÛüÑ0Çã(ßÔZ"ÂÒG‘Cõ²zØŠïæv–Èlá†õ hÂ!Gvù;?Þ¿©‚™ó;Êjz2š@õèa©ÂŽSΉ`¢ùQX¿€DúD"ìpÛкølK‚wMȘOc‰A9–ñNf/»Vê}f'0éW{Zom·Í÷gì»ÛÆ;Y{m´œgR’VǘҚ™Y|¯½`zÝ>£†ôøÌþóêbÈ„†Ö†¶pXÏ$zc”OHEû‘ßÉ%´?¶Ôtñ8N$ÌË]¼ Ì"¾îeÆ ‚Cî6g½Å´úÉÕèI;µŒJ¾^‹´¿Mê3™{sš^,CJq(i1µ? O³VÄIµvTÓtæb´¢P4só•ÓÿEƒ-Qu©‚,ö@!ÛoáÄœœ/î:Ê3ÉûÑæ¶ßˆÔ›ŠKç0¿,ŠAÏ'LÃ0ü1#›N¦TÕÑEæÎD(Úö”Jª`¤OY]z61bí[€>åÖ¿¾/¹(ïQúÏ'‚ld^5M¹ŒD¢±p¼9ë͆¡Ëo6’h­Z0ÐoÌ_öûÝ?{ìIo,[{–bÈ8X[±²OÚÃoÞ ‚-9©¨!ÒöI"2$ÐdLó%H¤ˆC\¬]䬥Åï ļA:x€™±::ÐÊ¿@µEÁÓI4[zܲÉ@Î’O lWöó«d‹®Ì _›á¤u°‡Xä*¸'÷þ¸åjFƒŠ|1•n”MYa·\ǹI½»óLR%YUÃlfÎu-0HwUu*:—O·ý^RKSL3n/AÑ—¢ƒPÃ7ÀyX²”y\ñWúqõÏœDSê#ê¤Iâ)ÙÄ‘ úøp6y\–Á6/Y,²EÔŠGI¹.T©÷P7Øä†Í ½#×0Vb9æË ±›O #Zß"v“ÉyTðÎA|`Ý> Z¡öéèßž] w«+ç³>³«½Ö–†Îcè„ä¿.×Jº¶«#PÜã1‡—ާ{È$šB~$¿â‘‚ þ;thdõÎÂäSÐk€âZJÙlÝA³0TŒÓ!õøÁ†ˆëï6|†Mç4€ò٠ưBê1ãæm õ]  èi½ã®!ër|I›Ž5=# ÏŸÿcBªþ˜)¡4DzlòçÏñ(æU)§0NÙ’† þÙß u+Ïø‹lAíß\ÎúdÝ {ݼùà vú?)jÜQ…É®Yô“7|ìsP+L1&%)²¾±b4% ŸÇåþ’ Nà³–åuŽ#AåWK*«éP†c]Ï‘¬Ï‡ì÷¨8k‡™ûŸí-ÆÝ™z “ÿ†'úÞj¼zª.AÂŽ%XÒÏ8»uó¥6/½ #h¼Îf_"`礻9ä›8~ÕûKl¢òáùIŒÁL±Õg¤`ï(LS»4Ç×oÚì±²¹·‰LV\5¦­ *ý †nT¶ª1BJdFäS_ÌîÀ›ì˜¬*aÏ-ï\ž ò™•öc±ôISM¥û%„#ŒúEq †dPL›ìw=Aî(¢€‡ÛÒ’>~Iž_ÌHv7ce÷/šÄu96Ü.F[¡üiâL[_•1dz\fÚó÷ -÷ëM9¡_@­ÇÀî5 Bˆ æäÚšå¥þÉÕVuž>B_ÑõÏsi ÚˆðRÉåTŠ[ΊÚ=¸Ì*2u>F]]®3ÃÌ¡¦SG› ï¨méÃŒµŠÅ» ˆ’¦/QA*´›W™±p‹<òeÿ#†}Ü2r¶”x‡ÇÖjã]1—w‹CοH†ŒU\ÕÇTW9Ÿ`¤mžsõÞ¸4úpsŽ5J±º_1â0¿¿nJý]5ð›cîµµ–”3Ø\Í„âÿòÓdüÇ<µ0›ͧ›| Í•|>œX—EXü|•³x~Q~ì] ÏQÕw˜ç,§>ÿ¬èRîù‰Ø€Liµ¦þ2þ(ÅÊjÅ']6ÎQ*+.´_´«©7Ât<©¶\Ey}؃±½72¯<Δ’)×.›Ã¥>È~²™er ¨ž)Ý‚´º½û¥$¤B3e¹êš¥ãœM#h—IûÀGÍûçêå7owÉ!£%âTªÐ}š?&pÖ6M:P¯¤hØ®8q¨ý»ï úSô©Îü æ8!™ ¸D)ÞÙ¦1€ÃÆû3_SýØ»Ë#¯;éFg ½­2xKwú P9Ï8&í“2*8Èà ‘–Á¡>'³fëuÕÂSY1S'6Z*;q' ˜‘HqúЛ†ÎÔcs<©%¢ ¾jÍ†â¥øyîªz…®k—o87&|Ɉ´®énÐOw@qƒY¢WJÙB; æ´'Í, ¹eø ÎvLooÝ åZöSYîšiÿÉ´?)-™‘¾ÆÎü {CksX 9‚‘6Ât:ͦJÃH0[¤ƒ™_Î’þg“uBš¬åK‡ *v·½—¹*jð'üAJ#?ïΨ6N×°a_mìÁh*P "‚zº³æ#Y*´¨¯ ù /ä› Özèw¤þBÁi-¹ÉÈ«GaWw|mÙL‚y¢âÓÇz†Ú ¬7>‡?šý´ÝXEwºÈ>9ss²úxäÞtÀïœÿVÎè§õ†ÛÝÅÅÖVÄ,ÉW·§n%UD.À¨»Ã̧ZƒQ¥Ë¸Á’Öæö¦MN裂¡%ÆÏ뾜6Uüh=Ré*Ô žx&MûQ[H‚^¡ÝOB:^ ³ê¨õÓƒ`ÿ$}õ!«`ܤs¸KP2.|Å”aYŒÑÉ_ir˜;äÉQób¹¤K­ëНUX ˜¸òÛÆ7•󣋥ýµ »k£¸ï¦›å:íö‰Á½†"…bïÍ’Þåþâ”äÿÏÖ˱‹'BÙq%ÕnV»­ öºõÍðî{”z`ünÞ°ÿÏ>I4^Åø/q"B]ÈWl¡oÔ>}zVÑ;6­q"Æ7Zš# _\Ó|`GHp>s fò>Ÿ‹È"èpo.·'œâÖ®í.ǹ7°í-•öÙûuÌŠFsÒ˜¨¦JÊg?ÒÑþQ3†.KJ\¤ð¬pjÙ¸0½óáZWŒ”ÊïW&¯¶¤fZچ߭+‚|@KÞûbþ PhKF>]YoœV½Ë0Aˆ˜ƒÞlZìZÑò:¶¼zL®©Gy2^Õ… ž3ËÕÀ(çm–•*—FD»«Ç••ƒŽ3‘tfüf抆‘1ü^8 d2¥¹0ɾƒúæÐ¢‰C-îd©s,ã¾8¯=ް3òÕ½²Ÿ&*·õ±%Ü öî Žº¢*'-7¡ÆÖ$T廕©¢ÿ²ûš÷±­ù‡èßžO:/= —R¨ÙŠi¿"¤O«v1OõÔ›<¬ÉáôïAC§:x¸Ä· Æ_ð€Ãd¦Jí4ÌÆ¤›ÅÒÑ÷ôJÇ„œIVí…È2Š/P®7Ó‚KúqG‚ªIú#h‘ÏF 3 ³k\ä—g¡eFÌqÖ…œù&º4 áW¨Ç)û¤Ü | LPŒÜ«{¡ùã² ÎhËˉ78‘h§÷¬*>]Òâ¸÷¤€—Æ(g“vÁAð2i±…M+@êQ*JìÌdWLôÍBºìRë8j¾ýŠÇSN0IÂþWÞà\«4½nŒêÈÕ|3š&%i„ :†öÎã¸*1¿Ÿ|Îd0ÝŒbÑd¦ð¹bZÑ/ÅL·6lʦqS¥ùãa SùîpÜÔìY=ÊùÓyd?cÖÊŒiþz?çP§O7Á\ÞxˆÞ( )NîPÁ 0ø0º¶ >ÍÂC‰9\ývOe±‚Cu÷üyåšÕû‘”ã|×@ÙÄŸHÌßðqU¦¼þ²Ö_nú Þm‡vš›l¨HbºLΡÎв ;ùü »dˆ4,@’¤³c¢¶N@ŽD€IÿÚR9'S÷¾QàOT)_½þ·®¢\K“­p¨ÓòÌV°÷9`ý¦iP}ßBõ¹U½‚òU)Øm84kÒ&kPçÁ!Ákü‰¿± 9Ála±·Ý¼Ñâ7ô=-}ÂEo¿ ÜvdÁ<øQVQaè±QV67qø["L¬¯6–åçÀY?‡ÿmèѤ9ôüãÍš0ê¡M0›‹P”äÌÜØ7¦OÛ9ç¨5 nn ‰‰Gñðh…Ù&%9„},öué¾=ð¸ª~ÏC ÇQõY±5~CúæIǺè*DQZ[»Ý±’«ésdOφÊ`Ÿ9P+"HÇH*âM4t%½&S]3§Öý4Æ••ÍŠàôÕ6Ьò5怃-sfM}‹•¢%jè'ìÛ0Ì A’LpIâmj<ä•¿É(VEïæì™X~**6XJÄbhØŒ2'Ȳ2T€³±ÈÃà,h/r<¤ÚN2ÓáH)Ô¥T6(0Áµ¨bÔ=ñ|EülйáE‹Áž'ELrE;1aX‘—ö1Ñ­ˆñF’9ÍX”“¡8Q„¦Ú¢ºËWäNø´hxj¡ÜY÷G÷·ýi2G‹ÕYbÇl šUÑFÉßÓ-gÍ&é3£$ ÐíœÈ×Û™ ÂÏûK7¿mÿñì­A‹Y<¡!wOoÉ_34¥½X 8˜nI_ r(ÍŒZZ¾DàÇ=>™—,|†ð%ØÛ«t Ÿ×QKªnö!É·‹@^éÞÍ»“ÊÁƒ66êv=ñPi,dVêo3M Øtß&V°)Òiö_É‘<ŒÖ­´Zº˜4 q¢ª¬q˜‰xç9t­©Î1"’ˆ[Œe#EùBª2VÔ$EßIjrX(êk¬#¦c–£ [†B86pÒ4‹÷XFF ”·îûÅTø.K×܆™þ€Î§ÚGgÝ4óH‚ýHýª¸'ñÔÔü¹¿«Z2~¹zLcþGffàiGù¿ž«çB'sDÕôZ°¹s2ãÉ)¡¡ íÕ± ;Õ‹±ÈÕ¼—T$ÚÕVs°^ãQ¢nÜ) f¬ß0©Š¤çÀªýb#è]®)Ácè*B@b8ºvnOø•§K«1ÝR5LY:z„ƒÈ‹Ða óÇý—ͺZMÚÉp£íD™ØÇxÖŒQ$öœÚ²áÄw¼öwú×¹ßR‹À-'ðߢ€9Ž ¨ý=n&<ºø»G99§`=æòѤn_-ø³‡šZUJ{( œ¾‹‰3Ž'F3.äŠn, 8¥vù)¤tÊrd<@A˜D¶ýòÏ"ݹ:¥ÿG¾¤ Ûô¹ÆåV‚ÆÐÆ¥ õ¥„°½ZPRoˆf°¿c™±Á£zšXö^P·êÐÙwËu|72&ëbÞ²³ÇÉ“°À¾a_ä¨APE4×Êeúéɦ"î:޼~×ážÙØyBb—‘=؃0õⵂð¾¸FuÏélvø’Â+ ,‚ï¼^‰xc©H-‘dšG ŸàÊÂ?[~ئdt=:»‰u$à°M^hóíÅ: ÈŸÜpÖ~8øï(10öšQ&[ÙÁIýÌ¢²”,ɬ-Ch}ûÇ¥Êgù*ìZ rô¹l ËCOÚTà›ZJ”‰œØ!3?[?à¶Ò ®eˆ}oZ” ™PåºÄi¤cY—pvÑÌu³°è¤Ú ží«_asÛ#w¯Se£6f\œÃ-çÿ@ÃpqôX’O¥X—ã·ÝlëÎ+ÊŸCê³пoÉT]Ì øç8}îsЃs#‘Ç”œÐ\œÏ÷z>~,íµ ŠÃJ„ã6Gú—!HÚ‚åŸ_8HÄBÞ) ·fk?xÕCÈÆ[ §ï@¦"\¥5…H_väm‡ó{Ý”fñ«ðIÑv±–ßׄÊÔ ¦«À²Î²ÊYO ‰Ý#é´zõ?AòðºòãZÖÏ‘9Ätslõ­Ðí_‡x)šé;— âÍå½ÉćËÛ$XÛ,]¶<\]Ls?ð6ÈØª[XŽ,÷…]ŒÙŒ—‚fdºJÙ¯ÅhR(ô²UøÃËV~ËAðO iPëR£Î$Øyf«áYФ!K76þdj1·]yL|û‚:€ƒ<>öW’|(nðZBi½`u÷ f]y8DupF±ó´ÇËÑ€t»ÁÞÂs!VÈ$Ÿ„9è(/„ê£9ƵÎàAO’ ìo·~øQ\Ps\DJ䣕iañ 4dÒ¸TÎäy›/Õ¥!3¤ê­Þœü—::¸}ŸÚ ù^KâÕXQ‡WˆZ3’¨ýg~­€m×€“ôLà)™5<² ÷V}ÃÞMß/n­^Í–bHɵ¦ÈíbÕÚ%ŒŽ œóÇ*“ï–H`ªq'zvónü´ÚÉ^• ×âi¶a¨cµº£a æuõ¸‹õÐ' F7¨1(ó¾ºS­)~â=ËåÐŸÒæÖ`X¥¤þ¼µÐü®ÚãÌ@ *¶È† ÊmVùÁrêz@Q6¥Ö¿þ…Ä®.óÎ/d«A¶U¥ãšõ[+úl}4®;Ú¨×.k*Í[÷µˆÖF°Z‘¢ ÜMS¶|(øúvœ¦î_ÀõIÒ œ4÷Ë–5W¯C×é$ ¦€P½ Æ&"j’¶'¥3¿•IŒû¼Rû-jk Œ¼rÿ»åÇ踇bÆMÞuº·¨@(qU¦7ýQËŽHwL¦³ âAeßm _M* .¢V_Ô¥4'ËqTt·ŸAÝ×È–Ÿ 7¦Žê+ý˜Œ¼`û ÇnMš1Ïêf’4ǯàÑKß gv…bÞÚÆÚÙÄ1Þs¿ëìBÆ–J¦Ö¼ºÿœbu ‰üŠYŠ¢ó­2_¿¢µ"ÏAÙý—Q%ĸ0=õÊr¥#ô¥a7{EÉžŠ¼±QtºÝ}ñ–X2ô0 àešß|ãÒ'•Dò!‘lauʆfxe&©L Ïv_uQÔwL¨ñk‚8­|ÅòtÉð¥•ô\”Ï[¢ðAyšGÀ¥©éŒ™¾ñMN+i>àг¯àçdòáj†z¦‰1pùjwÆu-Ú~A΢…ÐÙÆâ•zK\ãiÿN‹üKE.äd^4 Á©š¦Švžxi“Ær¨YˆîTò§+s;wÔüzµ°ÈZA§§n~@ž(.øç<œ‰Šg²iÉ7»ÊÙ¹våµ™%C¼Äý+²V~ÇïuãÌ4rjѨàüÌÀs­ÿ,À¹þ_Ʋª§Ö©¼D‚W^JïêêX0[á÷út)ªUglÙÜ”p1 Ùrau>s"lÔI^¦³­ç—Z]â3Çù&5 ‘©båCµsÑþM“i/*/ÛJ{â]§ÎüúM(¶Í9‹<.míµaR—ËH?#žú—ù -£‹U‘|7è!düß÷Dd¶sRåäà*]=‡Ò€•†ÿûÌMÉç)äf[Òϯ߅¯JÒÁXš g¯tš€UÂ"í{où1ýºãVuk;ˆ%ggY—rzHí Íi‚‚a˜›™?üí›H…Jaf*иwlóàÄÔ~íõΦv‚K¦¦s\¿FÄËôÏdÄ^M+¯vü¶vµB qGñ3Àsdø]S`´Ú”b‡PQ *•(’~Œ2MñÿaE>ã-¢ Üݬvid"qm’]0mc"—ÀÍ·x™œ òn&ª TÖ[>µºzSþ½n4Ö¨Ë]¾läl¢D⺶ÙT;ÑšìŠzT„ÔœK¨ñ–6q;-ðjó’°™¨lSÃ…à¿KohÖðþ"Ÿ|Ï‚¢FCQ ®ŸþêUóB£_±oÀõ±í”Ìçæ­Æ £6z¹ë†‰ô”Ä:p=ê*«•ÔÅŽåÃ^p¦Âs3Ÿá³«v÷ÈŠ›ÆÛJcŽ™•áèàSâïõ*l¡ ¤çÒ›>¾ p(€ªŠÂH#¼2^D üŠŒˆ>†jH—?±õ¯Â÷™„éLÞ8ÈÛ‹\¶—e iÄ31ºéÈÜùï!M-ïè)m+¥yîÙKãÁ©ô=Á(V`ÎPþ¢—;øÎCÒÒša˜”aGŠZö;=ìÉÚÈÊæ;… óŸw êÕšú|Ö"žxvOÁñ ¦dhD¬ú—$WQ.ÊM­ ! à‰ë®¿Æò¬Å‚?|Ç( ˆQÊÅ5Jp¸´‰Aïom. Ápeʱ\Z˜pªþv–}•vsÌ®iÄ„(')²Š€¤p/`—o5m““òƒ‹Íû}eï,ÐBÖ[µ1kH´Œ}äRýeëxÑÚÙöƒ.ouC¢‹ñ›x€…ˆP;Y*ƒ }®ãdjE¹²ÅšE%*gn&\ŒÚn³2ãÓ-ÑÿŸMʆ , ¶Ù¿×½ zꞸ—ª¿x”}ZV¯RDotÊ'Ë2‚EÎæ:Øù>o„ñ7Rœ°3Æ%I7Z×5 „%NÕeøÍ<ÜV´8s G’ñk"Û«iLì0„‘1æ—Õ„[ß:³—½¶>ˆya¾“d߯Âyê‹÷ú¯ß4Qôiõ™¢Ä#)bAðßÄàò"E”Tr#º㸠 wœþUd›È kuí™ìâdv373Î@Ë3µè©ÂCQ(T÷°Åбл¥ÔIY__×J`¢'ƒ=fÜ g:þjÍ¢a2‹òoÅF³:v+Í^m|õêBé:7áWB¨Ç:ë/”~¥ÄìªðnÇÊB‚•*¨%Ywss˜­‘!U]Ò¥92•[Û`¥M×ÑHÚ„€|¢ëµ>úë¦f13G¹mBŠÅðèl#î4˜Oèa6̦™ìdMµÄŸ ˜¬Ìã,®KÝÇõ6Úû:‡~Ç/ûÇ˲’Óƒd}Ñ—IéÉUBr“  ¤8_*䉂I=Š@óyìi—0²¹ø‘*Aå×Wd3=:Æ?–Xƒ‡B6Ù†nPÝ+g ׺u*UÚÓ6>3©½¥Þ¨åoø ¥þMà¤0_²Kúú]ÞÕæég¹K6¿³ÚmS¾—þ;#S\v,]Nû›4ï¶PRÍ*ë Î ‡úÚºcðÂi¬KŽÅbaüÿ™Mgaoþ2”jÍcô:Kßìv'7ÊDâ2‡iÑ·R¼Zö‰ZxªŠ´‚ÿé1'5i¤ÿâ̼÷Š BºJù’nùϺkè½Z>z¾ØYè­E -s,õÝ…ëøN—ü@5€,XEÝÊõ÷v–c¬Ó{–¹Œ„ب‹;Q†ÈbÌÔ¾ÿj·ïg t]:é9DÓÕ'¢—î3IÔ¦ìšÇ^ãívsÏ*½Ù€6Zk¼$žOk™]!{£ïtù–>O‰Y|5ò§õõR5·KÊš¥*#a½P<ˆšdsEı-P^;aжz›ÈveèÉqtä M,¼MSùÓ²Xök‰dÕëËTé¬Ý¥2«ßÄÄõ–êËV­ÈñÆû: •ëæU‰QÐ_žÉ&¥™T ì‚S²{I #ŒÒ¿C—(#´,wæ$ó3=Ô«ïÖ?°³È¡ÎÏó-æÔ}BÇÇ |‘ÆY…4•ÂB‹ô¯~< ”˜Úã41þ~v¸·T¸ x'j÷;Âí:¸—Ç­ºwúñûþœÅJ G¦äÐ4”5„¡§Žýí™èùDTŠ3‡b6£¶h0X1Ýïæ`í2ÄžA©ý{LS·¤zêZi“7¼þ;=FÈ3Ió˜ Kbr,òEî Å¿ápUvÐbÉÔ|N)1Ù®h°Aø“¾Ï]¨±ü–¤|g°·å|4¤ÇÒ¥šÖ7z0¦š¬HËG®mÃ+KG×Ñüº -b®·<4ñ_ ¿WÏëSm‡sut¹œlŸ$˜'8loÿÛÙ‡É×çØk' éâ%¼ê‰Ý×û*eà]É…Iì¼3oöš€¼€ ê³RÀö“ M•pØ×á³­ÝCVZ«˜µð¢1Š»øž5öŒ¿tV\G¢RO¿+Î/o#DÓbÔF+¤4«²Ç¤ñ`Ø8'ˆöÿÑûö÷Œì`ia?jw}n8?“ºï@å]XWÇ8Òãšb>X+Úu–xËqlšŒM ì’ŸÀô-KâÝ9uÆéÚˆHJGé9™ïÞ¦×NÎ…@ó¡¯Ea!ÞgŠl•еÊf%ç´¹[_)Í¿?ëKÞÕ 5Ø_Z½”;ò¯Óº—÷ä…D.ÌÂþÕ_‡»2É£aÆõÖô_m‰º}Iz é²üˆ$AúÀ»OŠ*-ÑM†cvmÉtN8 y„s'nñ²ó-=º."ºÎA6Rt§uhè ê™Smd)o|ûtf×å³bòœì¿û–}—½Àja¯xXW‰>-ë¿Y?©S/"q=k·‰=À~cË'ÂÝ´ä’ÅÏg"0 ã7§bŽr¤ùŸ=üÙ(x †ê%]çÈ sä'bÃĈ‚Í· J>¨8hó!AÀÍîÆ8áŒf´¡ùó튘cícƹfƒú3œ;¤ Yõµõ¾¬îe°à(Áê1¨ÿ‹j[ ¦Œçijnúm6A_ƒ“†6ÿéÍcèz<«CÄ¡E8u¨) @¾Ó”À ”¥gÅw.|ÿ6ý~VéÑÔd•Ëeüêèôƒ·WÁgRÒ#ØÛ5‘ªDÓNkÚ°p÷õáˆ][÷$RÑ·B¤‚¼¶æM8?÷^¶§ÖAÂã_;2ãxLÄû'"þS è0Ãj²yôyæžJ^Ìø? zÚÌ[Nÿ?å}Þ¡ükÎÀ‚BY½£E=JxõS%˜Â¸ f&Àû-’5oqónF'™%gJ¹yâºÆñÑ•‘2Heÿ \&®Ðî ’=?rÝøùЬo[·D¢eÂúrüæ̇Ï¡@%ÓZìpï+¬¶X€“$íÀìöµ%ëêÀlg ×4ª]ïÑš.§Øâfƒß™½«N5†ý[Z?ŠÕF„<™®Óójg[;Pí ›r±€B gÆÿFÝD¯¸e ß_½qú;;fÈ ´”õÉÞß®Bê ä¤U0̘œÐ‰*Óì{»}·÷âOq<œ¿— ¿[b!kÅQˆb)½gÈÔ§9™Ýeu:üè—Øpé­ß@qx5€ HÖÔûœ'¿œHI\%Ínáæ>PØOSÂtq z'Oøþ4ì‡Ó=ï’÷?1=3ÆÇgUX—)#ñ)„–\¯y#’ͅϳWÃÃ1ßž23ÍM“8ñÄ(\âúÉå”ZºNÔ9\+pëób19àŸ<óM%ƒ°6={·ò†¨^»ZµOeÁ¤5›)Wº÷:Þ°zˆô^$›#oé&nnµ 9z›Ö! £tü‰>ñ!rj;ï#tåÕp¡Ä \íïëqý›°¶Ëcí$L&‘Z-T·Ü¿U¢Ñî+€%Sö̵Ry6覀߮W4öDÓ€iä]we G³z¸ñ¡}𬶇qr«8Î mûÑ»°®Aß¡ˆEø 蛌Üo ö¿Ó”éWs’€2b…W cümÙÕT G‘]º´P¤[¨,c\TGØç7„TAï*°ç>V•¦[ ¨§§H/vwŠžRØ¢ûkô‹Œž².÷h/®ô¤£«U‰#Âk €nû°@+ù¨„ߌ7“°Sø ‚È'VQ椆©¬`1¬^Žr2T‘©Ô‹ü²ñ™Ý¿¹ÿ$ÔÚ­•Ø’2CjS²Ò8o¶ÚEÊ'ÇóÏ^4ÃñŒPñLêÓØj/‡Çî¤ë¹sµJ§1Öe75¸N @ÒÙjÐ,º±–ÛÓ¸d²n_I‰‰‚}+›õ,a·%soï>¼ßX\Äí—=ÝqËäÌÝŽÊNŸžXßcl¬Ò ¥úËV„ªL¶B#„Q瑱ÄÄë_±c1Ä>9žW"ƒKî¤ÿ¬‹_|Tƒµ´Âªˆš™N›;¶A†ÚåÈ:-œ¥vÖaÍZú{’Ù€O2M-©kŪ²“¸¥¹3‡¨}†l.£¢Üuâ™(›4æpÅ‘¶ƒM.ž†%:Gž ¥h+˜°2iCö[§L]îÆâpmÉ?Õ<áKmk»@Þ\¶)¾dÙZ.K>yYé"5Ê[ÝC8¥–¯»_p„;Î$]4F®!óGËTc´¹#œ&!äܲ×OX’݃¹øÐÊq\ÿpËÉÌ|;”î(ÛWåð†ÌíháÌÿ ð­þIáaæ9<6æ#ÂF‹“æßP¼Û Áä¨&D/®Žk› ³ñÀQÿþÒú¸a ³‹…É—_¥Cµmus¡ÏAׄ®tT'Çe•þVðܔ憲z gR‚Pjݯ+® |ëV25d#MÐK1ŠÌÐDdÌÉt¯Úý\ûf6”âÜ&~ ß¡Ïåh_Dr²õÙÍ&¾„ÍØþÆŸ%Hôn¡ËÎé w°!þ,Rt5 ‹ilÕ­?“$,žä,œý¬‚ Áù¥ºÅÑv¹¦GÑX£¨FÒü„±þéý·ç?™’Ép"³´¦˜''±íÛcñKÀéÞ¼Vùäêeù¸{Àà(š¶˜ ÎTsYÍØ¥ær †­ºP‡ï ÃV.out`i°Ü+¤×/ ËG‘Bž/ñn™ÑE1¯´‚D~µ—–…À¶¨#`oÆšä °´ Gå-í8œ´k¹€åþür'k3lRíXnX–±{fJáóÓåyD;rÖ¨…èõ“Yk3+6H5›D|ƒYÁ¥¹î÷ƒZÆ ¸ªjÉósñp\Õn‚`‰ê²SÔNH1Ôþh¤š~nºŒ³ƒ2`ƒNÆÈŒ·$Ñ3ƒµ"%k0³2EÁ±ÍQŒUù´RèÃmy&º²•IÝs9¹yØKæ=ÿÍãº~eÖ+}ˆ, +tþõO†yˆ‰¿ÅÝyÍr œ…õÝêÀ…‡òŒÚyWgfËÇ"Ê\û$"ÅI&²†{šØtYß!ôîçòú8”ù~ âÍ•#¨'èÚÖûŠ‚9™1?[­AÆX¦P¦ ÃAúYÃ8™\íR¦.mbbåõ|¶J WÒ]ÊwÊh>²ë9ø3—uÊ"óËÅuU\ tâ ´û.—<æ,|¦÷Ú}<Žxi,$P:“ÞïgOôÓ¬|1þóõc1'ASRø[;[¬ç/¶:û±”Æ«°\´zsV:ò¸/‚ÂáOÌð$¢’N]¹6¿/7èRj±®ºlû“ê•\pcÎû3ÃŒ¬«Ë®ÑÔ=[´ö&¦Íë ·W.€H:K½ña»UA´¦G· $Á»\¸jºáX_äЪ]+W ’OȤ®EËŽ'[ƒÓÐ=·1Òˆv ~öiðë¿7kùvTÚ<1àúÁk8ý‡¬hs;“hÚIgS¦st¦,8§âÅ© -ÊùXÂ…7ï Xî96™Ä½–ô§ ˜ãÿ•œ3‚|Œi梌h§¢¸Ú¨QH¿fïŽz:Ô¥/Þ¨~8vLlþÖã3 8/ÿT5EÐÂ÷7Rßħƒ‹$Ò¦÷8]q]ŠåÇCù”%–çbRWSe9<{Æê‰}Fìâí âΠ¸¯bÁƒÏƒóÁ[F³“æb™8ì2œ)T·û¨¬N¸9QÉ6e.ºHØŠ6Y3©Þ—=œUèÞ,ï…3màøÇÕ}~¦¦(±®¶^ç¤dp'YN´w„%/˜ØÝ7÷Ãd@‰6Hí,ÎØÕ|œ½(ǹãÔq2éw‘[C<«Îå$ ÚÜãÇ6Cyî)Lº,Ï£`9ŸÄ`7tê÷žp1.ôºÍ*Àp"¾¿w¦¦„gâШƟSÝI>"²FˆÔ±Ø$cy’¶ñ¢¾¸²É…Ó}ÉŠ‹Ü|DË· ]~½*qX“0ÿ§õ7ÌÒZù ®Ýìò7ã`v0Îb~›oœ…õòû'¼rTè?añÇJ|7DL)ÝEô3ЖŸžíÓ€‰OJdÑ>)™×¨:1ÿcÝ S7B3pb (‡[±ÃûØ8PÖ´ÁñEäh5@Ò†y¶“çzž- ¹bõ¨ ÿ(kÂdÊ9¯é¬€®‰(h4°Ìž†”)U.àÒIä•F0؃ÿO¡1¨§µ<œY0-‘9ÂÅØ-M”òå¿<½›ä­yÜ×zv;ÔsbÓ< |ðÿ"„˜˜›|f"VFƒ  ªÕ³FÊÇ“Üíe¶fw–œŠ š »Ð{Û…ò¹›Ú¸|oE½òì1°†°g¨¶Ó¼X¡Üã}Œuîø›œ"ÏO¹ÇL+¡Ð¦9µòHEgœÄ`Nü]]ýMÐ;b‘ÕKR²° u£mÌÏ^)f?ÿ9Í„¤b¢¢«æE»c“ý›F QÏ: ðbCßyOˆ²;Ú,»…@yé%ÖŒk°Kç׆(TÍs mlU¡»ib¤è’Ö77ï"œLèdâŠ+y¿èÌ´8Yú›ò ]/Cã,ùf- œ•…ÆÙ /€_M7)6¢ëé0bpWÁx¾I¥ˆ4JMÑ„*t¾×aò﬜Wå¶æêÃd)åÉ”ÿK‘0‡¢ÏÀBhœÃdFè6ö:–(OûºLGøô°åxŽL}v“D…ÍðA.|W,_qUA³…Rö·œ-ŒÛü18¾O(¼ñÓNù€~b­_ƒHËO´7öÙ—CoÔHaŠ –‹¼Š@v±SO÷úY‰ìKbV͉ÞfÊŠ±á³¥M*Ö;aÉûÖO3sÔ:—À^pÀmICQíe¥•—ël/ú€>0 ‹YZsurveillance/data/hagelloch.RData0000644000175100001440000010602412421673007016545 0ustar hornikusersý7zXZi"Þ6!ÏXÌÿÿ{L])TW"änRÊŸãXdGŸã>@j½õtA©°¢Œ¾ðÙà6 ý9ÄzßøïÂŒô^´n› Gä·¾ æìV‹Ý8oÛ¼ü)ëÆJ?(]Šaî$¬%É!Oª»¨ìK§ÌÑiVˆ‰¦u´@d=  <š+$Õ†ÏiŸ ¹‹tç#„²BU¸<þãá TïÚãÉ·•mv=ÏÞ`ºü.χhÕncH°¤p;-yó¤Î×m ²ã]>?™ÒõàÛQÃe‚øsr‘þ­M¿U‰í%" ÁðêuÜviŽ.ž®î7* 7¡çù0ú¿&oÀ•CÉ0ez‚£3Ìü’2P_9¯É©6cåYºˆ—òÊV¦x8bC«( zL®¤ À%—¢÷ÚTIXl‰%Ì i‰Ân†HâèÔŸyÜD„1‰ŠO ¦O†ü™™eª»¹Üm˜Ÿ®]bÜ»GM¯ïÂz5󠹃f>¢`üŠéæˆß¤*/ª_Uþýž*ê ÜæÞ„¸¸L;xsgpý²äã‡ÿR ^àa1Àl!œäª3-¨Ó€Úš1 Jfñ<â²KL}Þâ)ÏßЬÆwß“üÃ\­úÇ6xÁí‰&pÁ°eŠ¿Hé†lýQ#>ð#÷6Yká)aIdÙŽ¾•ò±9ý»˜áïâR…3ø|Œ\š¬¯oe7 ^%+«¸4i—H=z“Æ^ûhñ &›¾6ӉͶ}áÜWx˜ÉõqŠqÊÏ #Ã]¯·XR·×˜ªÿÏ ¦dµ³¶}•àâÿã°­*-‡¥M S2ƒ'çÙÈ_½P8zþ7:\LÓÈö].\:‡qkzOöªŠEXŽGu¹Çi‡èr›ÁÞ7Ǥg2m‘&XÍL®"Æ­º:Ó[n|ÅóÉÌf#m÷ ‰Aµˆ(ê²ùègXÙ‡-YR|]°UJø‹mÛ×õvéÈ>ZJ²;—m‡! ]ûHS?@®^¤y5P•¹OŸ;ÕÌ €2é땾ÄfD/ŒÜ«Ç"ùc†w(ñ»z1Ìþü]ùù ¯6]Â«ë[X ¢{Ý ø'»p/ͼ¾(·˜ý6'êkX::õãM1¡3"¯—» ·¿í>°Ž¤í”ä +Hì6lÔEé–ñ¤øgا"‡=NÆ›hç;Bþã%¿”. à”!Û¯1ÒGû†ðŸ²êÒ÷álíÊ{Èr§Ä‡­²Ú&Ú²¥ŠPÈFÍóÂU iŸûÅÚ»/·%¶a'Ù`ÿ+[úyrK×Ëfûîëæ,ÚSþLpj'ÅË#uåxk‚‡n攕l¶?’éê@R8/Û• & Ëc¢B‹ÅÇ4ç^¼%ÌeµuG¹qíÐõ›Ž~ih=eŒêª€Aý(Hçû‘¯L÷•/êç0;„øIså"V¤ã!%»õ ‘|‰˜dø{F¾¡LŠ`ȵäf¨„Íù&¯Ôq…¹wô÷ó˜® ?žI. †Ò¦n.¦ ˆ ÷º×ªYx©°oÐ pCJŽ5}Ãø%»ùF~­ù¶gQ5{‚»n7·…Ç4ІW˜J÷¥~¡4iFƒ>q”ÎuS½õ L˜ äÒÛ­áAH8Zh±œÿIkL=˶¹Ø †Ž^ |Œø’EB¾^*wÈ©ˆŒeµ½Âòk³ÑpRêÀåÆùB£—aV¾ZŸrïKdšþ‡ë¿eøÅyëø3©%kÜ. í¨æ¤Õ À*_ßS« ¹ð%¹¨êÇ\Ú(©¸;«í+VG÷ÇïÛüÎmi‘AÒ‘ãò€°ê d~_ïn@fÊŠNí‰íÖ¨¨â.|œ7e I Ւȉš´ùº,XV/Üiq&ºðÈ#Ø4–*ÄÅG¼óyé½õ-] 8«¿®„±zÄ_bFýe¥ˆ>ß“z‚”@»Ô$_ðêBÄ€¯¨ñƒ)(0¡9||gæ=H©AҿŸNÀ¥Úÿ`6±¼ñ׫Ä;»§sË,õU~!JGÊ%1ƒ°àmÿ™Ïu§aØuàű¶­0×Öÿ¿Ðˆ¡vüsyeAºÁ’Ç/Òs1L· Ϊ|˜SŒV:®{YË©Š$NÑJ>ây|TH³îü¸‹»¡`¹\CÛnö£†èç.ãä×Pœà$#ü?LÍ+g×voàº5ž+ž€‡éäÞe›˜=?FûJ–9ÊØº§Ð³J ½´·þ˽3ß.Èûo4%Õký0L,Ù”IOhõÝ¥ÃÈan6²ðìK}Üg‰ïIdѦ*«ø¤~Æ ¿ Úûh |þK4Õƒ©R†çí&Óm]\^Ü…°Pß¹/ƒp?ay¥81 X™g½_ù z ljþeâÜ¥—Mu–ϸ¿~!°¨’¹Cݵщ¤ú¥¿Ûc¦¢ÇÖ1üg¥é†ÂøAy–Ã^§?c]ùkžA}nì+˜/øF´ýÁz¬'öÞÖC©3ˆÑs¾n ÆSÉ\Yûz—ʼ@äJ7ò‰®t=Ûá*âc™ZVü³µ¼Øõ´ÊmuÉËï 7ŒP9/•ÞÈ!9ÌÅø{çeõ©¯ye&$#ËM¦¾› ¡U[gÏDÀô¿µµ•— +“n -jb"YÛg7×R-e¿?]ÉT°Ñ…¨Ø£+1ùëž»í¾—WÀÕ ï^¿5“}o¦ªŒÎüúÈìœUoWaY…#“ÀȽôä×j…Gfö:ꦱzgþw·ØÏM š*‰5$M˜Üä° Júrp~µñ/ æÁ›\¸©¸ðÓ*~s|ŽÐÁÁI£Ÿz~Àrïùä Dã•1ì[»8¼ Sá@ möÚašÉC³ï6sÿ뮄õ¢?×ÈD^ˆßÆéç¤ji¾ÓèðÔkÓ;6æÙT“ Ü‚ó:¾¿Òƒ”ôImt€ãÆ×„+@áÁ^S¥û*5ºóïÎ||ÍVˆ|/ÞÂèQ\'ŽLVWÇÒ 7z1‹ÚOq™0@gÒ–‰&¢„ç]5‘ÇÆîN´ÕwDŽÿ{‘¤ùcÃ_4BË^eç1‘r‚úKcV7ÿ. 27vNjéQŽÊ÷äÌå÷G?¦áìÙPÜd*¿§ÀûÔ¤[®gàˆÝRi3ßïFDõ˜z-œ 4¯7Y>  â^¢ 9\§V³»qwÙÌS¯( äÅ¥‰ÏCKÑk6`Ù¬« pöÓï ŽxÖÔô{¬5èmÀž;bBö=¿GÚ.õãÞ} ”£æ¬T+(.ëw!sfôÂƒŠ£FÍ9¨¹Ð¤1!¥©=KB oRæÀ«ÒR¬2Û–-UÌ=ÈŠC`yM¼tè^B½(3KoI¼niLê(%ádMä}2!ƒY‚ÛÆk}Â'0ÿÚOTÒáµ^ìE‹ú èåÏ侃",Ø«¼Ô6CËwÌÅkþïÄk þ^±A@Æh—ªçþõv´Áw\×Wâ»ä,ør\ÏwuvB´íI1pTä+¿³»ÙÈWÓ¾Ëõ?ðµ,[´Ö¶cîRTÙÅøŸjã(¹ß%¾Ö9á4) §%E;™õõ>Èü0ú—|`9`¨tt…°ª.u<6ö˜d½èШéCÁÔ.+ùhqX=Sríôï¢rðTï&Þœ ~ù@{EúE«IÞå‚––•:’8¾â)…ßÙ£»¿ þLÀ&“Št´iç‚äêaeß²üTátøb§⮥mªg"Ä{JIÈMB|Õ€"î©93ô3qž.„Þ¦ÇQÜØošª pÓ³hÞ¡ò°b×øQƒ}ѽ÷ í¦)ÚÉŸ^o¢v;ÃMæA}.I‡ý¡(vcäŸN<µ¤!øgĨeFtð îÈî'ÿžÈY@£|ÿÇt-æjc€s°ßËà‰ÏP û]p3øþÞðúñ ZWˆN÷øc«X ¥Ö]ñs$mãèßçÉÕ¢)iLm†Y/¶ˆ1ž°l[Oo[‹Zo §ÔçÀ2·ºs=Lð8ŸàIZKie< )ÈöÀA>6‹M Mð&=tK¢<,—ÃF­j]ÒHŽIN;9ö_aÒ0uûò|\–A‘ÀèïÚ¥|_C)ÉÆtËíù†*PnYp‚@}8>œÒfÙ¹].qSÜP’Œ¾iȲ¹øÜéoÎ#`‰9ˆ7q¨“Õ’nÜt7?¶w定ãñKæçp^zÁ;L$”Tc•/Ç6Ïðî}žûÀ§‹k\Ñ鿝cxøÇj¬æWØç‚y¹G%ùqN¸*Àt5‰9Dƒ¨Ü¤â6¤ªryŸ&”?´ÞQüêÍ5èÍM¼VApï¸YÙ¯?¢u ïÍ*ÒŒT¨ü`§ç㕉ZÏb#±Ÿú›]y i»ŽÐÜ5ßÂ÷þ,~}QØ  ·–*4^5ùü´¯à·T"IÞç:©´g«S¬àÅ B0m1u"…rùÚ ›+|µJ Ëc`´WiÏìÄú8¯éØËRÏT§)×üD¿…òΩa§ƒBåmÒ›žlÏö›ÿK`¡qÓRVŒneoˆv,:žgBÛô6ÔVí̈ñzn–qk~óùëÔz:¬Â¹=B•¢‰Œõ±Òl‚’­°È"Â(j)¥5‹[Ú¥ã¤Q”FŸ6ŒØ¨ÖdóÚ˜Íú2½äf4¢ ÏZŸÿ¬¡ïE ¿…÷D¦zóñ±=Wo®óñAJIAQïY— \ Æ>&ȵ~ç|é˹.Û`{þËØ•³jÍôUöX3òáØnØL¯‘èœB{¶î„­ îH@Ì32XßÀŒ áüE?ÆáÒœœÜ[¥!dÑ®šd mvGŒóôëÛwn ÞNU)lû20„˜RwÙ Õyžû´ô$2 ¶ŸPÍŸÑÉÅÌÖË?Ù ¸$Ÿ¤4ŸÍúÇÂØ©J¬Z:¥ëáôúLV[#Ž]}vp£FÑRë5’[+bÒc<;m|çþV®÷7hù)Ð^Ù[}Å–«]zÌÅÆÙ-š5ƒÞí¨acÈ(¿«ðRÔ[ZÚß‚äLêÌxÊä/”‹1þúËÍÃÖU R×·špš¬SàÉ;¥üEÊ_`|êãÀ¥÷u2Èßí¹ín7tl{…³´æ£°‹¨y¦ë@©ýÌ÷š “&Ž˜Ï ÌX 3@œŠo08ïôX­þSÑ>ì&V¸8.°>í¹úX%”’]6NHëÒ¿S¡ï'¾]HÔØã˜y®|…Á*1M+ñ™(…‘ßCL¨³TB+ªpw%Üí„B·µÌ”1Tÿúñ¼TDÆ&… V¦˜ èGÏ~ìèQ±ì »sùCªëo)5QÒ¸õ¬Ôî-™5Ü­õ3AwújfÈí/ù÷hÂ>~ùRàEj‰ÓbŠSãÆòó÷éxŽt“<—"–>åÂólŒºŒ æ A [_ê,:ã-sG9üè4U¦E˜ÎÄ즀ï¢ökRÏ=ÙØuŽc䀹&KïÍv+¡'ŸêÜD ó™hÌC°ôoÛ¦wQÊqfÜ J·ß,ìÆwTxáóCB'õ?!Eb‘qܤ„µÓî°@̤ÕAŠIZuœŽGR¾Ñ@Ù¶Å:s¡Ü:÷Ewg2‰÷x¹ü¨žfsÇW\6·±o- Û«"Øé¡·1øïf•ü1DœhþéÃh»uîΘ¾Š5ݤD`˜,Ì­]X³çrhmW>l@–ˆÛ£\£XWWÝnµ¶­¸ÒÆYì§ ¦ßG\OV§s_i½s<îVYfÌù3s÷87ú†'¬|ÉIä¦wÔŽQm^‰ìNn¾«ö¢;ßeð=掮]‰7vÆtÇaSTù²úè¬R·Æw™ýõ3ƒõ@O<’þ¾4kR‹²ó<ªp¥GaA&€< Òc< ¥É’1þÓÈDüFö±'"¹9Ú€ÎË•½ £Íë§¶jBgô¦l>÷|ntW%ÃzSïÛè ÖtŠI r7r¦: °h¦Ÿ] $˜ÞW‘cÔ¬<5@^ø‰'¢F^ç&YµÓ/ŒQ‰Ù"zÉ·p­8R$i×QwßZ7‘‡ ?+ækæ=!i®åøóNˆk“NOnšeñ›RIÅDô¼²KÐË›±Ce8Guð‚ÿúLØüåÀ|!¯Usnñf¸q7GÜäcDÔMG‡ñ]ª–Å'ÞÍ‹gˆîï·[›–b~8Ø›1ØœJá6½ymá3ÙHÒ™êEÌ–ð^ª©GÊ¡ŸäùêÃø1hͱpë/Uv웣éÄj«{­W Kh­ÏšKëþ†Áì¤ Ù¼Ø ˜arrVïa¿všw<‚Ö_ÿWG ŒåI{ô2Bxõ.‚\ï£1ãÉ–üpÄKí"ïö Ø÷þ¦%û-K+âÂi »¶2Õd¥¾øš’äGÕ7{ô²v~¾îÕWh8ôN„†êé-aêUoÁæ Fîõ«Þ¯C•;÷¶Kyð1üU¼×"wÝXÀÈë†û]*‹éÜÆ^4E#n-û%ü궨arI õc¢-_³Š<ƒø%æÙB(1/s_b™ wË¥b »…g—¥´ëÆ»¿â8 Ná+&ªÿ&õ4ŒDtš¡Èmï–qßùÐTgùQˆôöØIAôÐŒ‹~ñ¾œ,þ´DoºÀ™Ãÿ¢ŒŽã×míHÀë(S½R{x#°UlþM”Ø#w+6Ž¥‚S¾Ã™c¤»ÿÜŠ£l›]¶ ¸jÿk™§Y¬ÁyZ(ß—¨A£Þç—†œ5èËž¯ŽêK‡%º'ÔŽ³æŽ¥ì ©açRî=ÕØA ¢½8O‰ÙÜ)FYÈÛ+VÓÒí–{çc=Rd›ûX`T‰Ùße1¡+~äÆNÒZ ÛŸðÐc£ ®.×Vól¨³ÿCŽOW„´xøKR[^«5.*½´}«ì¨yû¦Kè4Hmð4à©Ï3p™Æt, ~á\·K´ÿmÖõåp_þ{ú¤>Æè–ļ #¸ŽbV=ÌÕ¶€ÔÄQÀã}|»~ØÅô¬ÌGëPÂA󬿡[ù¼¯rRʱ÷X:—Ó/xRP fO½R¯c~…ÌxÎnd›&[ç•€C_{z?‹ºûÔ‰I×ÀÍR‘º¥è£ *ìªÿZ&¬r ’§¾9$ápž§#_ì(Ë…Ñ•˜Š~*‘ò'u÷À˜M˜ýدÕÄ%Søô/ªžöÛªyûÄݰ‡à4Èl|°òq3´ÙQzªqRúpõëì šek&wîÐÑx [#*‘Û"ÀPˆEïëÓŠË:5;{zX8×ʾµyÐÁ3¬”ú*¿.Øô4,6³H+Zëhíû>i?à¬Ä÷x„êþÞ$´\_ûí™èYç&GX¢<ƒlOp¾@Ðaâ†æØÞù´3J (#{óDÝ„{„Š6~Fô§4j÷“qâs¸·œ“ûOç±C½Ä`Q‚—ÆÏn¸1èVgKµY·°«¢iƒãÀ??{c¨ì͈äÖó¾_Ép;À27˜¥¥è£ *ìªÿZ$çNŸÿDìsS§ý¾®|1Ÿ·1npž§#_ì(Ë…Ñ•˜Š~*‘ò'u÷À˜M˜ýدÕ(ÿA*,Mw¼uªðN‰ÃfƒŸ(ÝXFJ넎kQÿECÂ,'.±hA{øtNg:sÕ’¯úY­} üm¨j±«ˆÕpJ0Í_™ñF-ÑqRžZ¯ÿ¤ZÕùÇÚ­üûR+tÍ[ BùÝS=ø)d ;€Ë*lßµ8åQ¯K*ïw”«´½Ð ¸Ú”dB΃PJn„NhW(Ý߬¶]E:›p,ŽÝÞUcQ˜+‡ó?RµaØ?å Ç~Ûþš·^õ¦@­ùŠ“ †•£)_Ú…ÅÛ÷éN±$@ÚÝ7Ò¯˜F¨3†Nñ) 6ÁŽ-ÏÞ<7"È€¨F?Œrbß1Tü‡Ç….գͬ@ͳÈܰÕoãxþV@àüq£Sbv¬Yäå[ùÇÚ­üûR+tÍ[ BùÝS=ø)d ;€Ë*lßµ;ð÷WéÜÅ Êeh"ɦlªíÖQ±ß[àb#„×\ÀFþ °¼&……k¸Ö#WIdîlâ?> ¾‚Ϙ9;ñ Ì£RzÊó ¡‡^‘vZ´u;+^§’§¾9$ápž§#_ì(Ë…Ñ•˜Š~*‘ò'u÷v¾ßv%C£¿&JÐí²ßL ¿S] }wÿ¥$4€Ô¨<% *Ëùr†Áj¥KÀ–¡…FÀIUÈo¹L•Îûú«åAl?,öþÎÁåyC¬jOoTSL€©O‰ å2û­ßcn"QÏzL4ÝA…|R@4jß8ì)ùüÁøÔᎠ¾?­¥¦›H‡3ó&a(¿»ÙGQsóçvá‡~îUtÄÉä-áLìgl„¸¯QÐzÇ…¸”jó”fÑf*Å‹Ä@šp®,ä&~àwÐ?8)ïŽÞÖÝÙÀL˜$\,fÌÞ–F÷ê”<×ðó=á½éiýØ’’â#ù±I¥wÆ$¨¹AòçÀ{«°Ó¥³¯{J¼tµB«O¾Ží¼€m”ëJ¤Ï¸¾n„&|Χ?¯=)Lg¹ö;³"ñ¯aâ—£˜P›ãËŸO6PÎTIHÌ)îøU*ðÍYaZ̲ʜ&Üœ õØO¥ô¥ñi8˜ßlˆÃÇÓÈ æq ¥HãHçAÝôA-• ÷^‚ïãCÌÀGù÷ÇÛ[G[­h7úðQ¥U}™ E 78“¸í¶Mróܳ¯A2Mn¨Ø"Ä:Íî-¿qx†,/;ßœÀƒÅ€¹Ì@ˆ˜õäÆÀ³Èôþ„˜ñí6š–šssÌò#X=)‚/ܳ5­ŸÑ,¹N5fSǨʫîûD:Á<Ù4z£Û:롽Ÿ)ŸÓÛ¬KÏ‹L*½`g¶)qÛCô¥'›r•ñIµ†hÈ'»pÔkaëÉPf'9rõÈ|ŽP{]qäøgN8½·f×:^vÊ0Ôž`7¿b™Šj­$kIüƒ8Y›Û\UÎÆÏܪ§šwú}ðp“šW°°ñJ‚ žó•v³>Ó¤|x#ÏÌä7 ÎOx˜nx:úDNôå¤ é8#heóJ”·Å2ƒµ{µœëÛg°K}™r­Åá eŽ`r-ËØã1Q¯µG:èŒjø¿lYÞš‡þ`šÂ”â~¶™zj*¡â½Sþ’(Œáô15³F§dQ'7oîÔùòT(c›¡•õýÞÁÇ#ŽIL¼a3˜õ¥í—˜KÈgÛ<ôc,ϲ£ê+ÅÿÐìlo¬™IHI7m‡¼cc¾×TÍŽpp¡Švß±Ûd¹HÔ>TV NÈ/.>ù£ïq~Œæã¬Ö½J-BéÒ&ú{hÞ•‚Þ-U5wi M!#˜7ÚïÿÛ×”³¹6·Ó¾v‡l }ätÂñ3eú›cÌ:}\CÛ‡p֓ņÒpù¬¶ £%Ð n.œ*‚¬æÓgWn¯­£˜cäLãmE);n(øô¯fý¾냽w Â¸·'óêÛ²ÖÖòUÂi…ò>Bß:#³¸ŽÔÓÞï¨Ãý=%Ôpˆ’² »6…E‡ãû€‹lÂÆ h}ÔýHF«ÿ"f–ÁTËÑB>N˜y¹‹ò“sGçÔ³Ô:ôÀ ˆlŠNû'ÏÑžóÕöTVP}–a/U²Ðrµû PGS­MÇ/Ä((ÄqDÞ8ü³Ú6° î7­ˆ+Ô¶d!ç´µóÞ»A *]G•(Dçó`ûM#ýõdžΑ”Q¥/8îTõªÔìYθйš´Ìor^~Ríe¦¾÷k‘j†^ÅÃ7ð§U4µ¨ø úÜM^š\àlVËAÔ¯aÄËW‚ «Že¥‚ÇêŽ!ˆÉï¸9ZhlûwâWÇ=‚Ø“ZB£Ý`ÿ×Ãu.ZSJ#1¹óa¦\›¿™[Q€hÉ `{&HÛn¶´ïÆ7‚|öˆN˜þßé¡6ñb5-•(\*òš¥gÆ÷ÜGÞ-]…{ëä7JÞEÇ.pBGm­ôonT¤¾µé¦>Æçe¬YÐWÚˆå¸;w» 5êÓ’i:ÕGF©Ã4daŠ+‡ÿI¶ð¥/™«àà7†Îû¯cªðГÐK€vÔ©Uî—±s\©8òôB‘ó2àÄaÖö5ï’í*hõU -ϸ`V“eYÎdS‘Í­ÉvµÄ $BŸ¦é6òಷ––ά©Ötÿ÷”ûÏ ­ÜvR ®Ââù¸zj˜¤ýýÛ [£º6ü¹a¿wîOVã»±»´zDKP4“GØp¥^ºï‡9\…Ì;›sF6G•좟މå°lr. 6E–„ÓÞaq‚vûã£ÊÂgÙÚÝÒ¼Ž²9³àn¬0z ,$á¿‘tR÷°™‹tX:}%¾GSÀÅyy¦sѧ|«‚{ÖTŽ ìŽmwleë~`^ µ­fe5E‹å0`hU©îövÛuR$gÆhHäµFL~¹òáZÔß™dÚFsr…Ùx_zÎõ@\£=¥ XbaEý’§ɾwòQ~AV[OâÓéê6G©ÇÈæW–ßÔœ(%NÑ73¯‹Á–Evï±lÌ+.þ”mñ¬=BÝ´ «B\¨ïŸŠ€™-†ÙÍ­²IÔ_ ‰ÎkÉ9,‹‘#"=Áà°ª„Þ• ;Ð<-ŸÝu­zÌ8~,†ÎSáäžó“"Tm¡cX©>rAÖÀâ˜ð¿N¥RQò9}RLó{rî}YæˆÍ‘Çç>Êá:›Ì0ŽóçÑõ…ã®ãC¨ƒð“ôÓÙ~¢¹ù]xx~»»u)ºr/àÇèž8 ’™Ë‹õŠW|§:Âå+<áa0?#tÍ1nÂ_€©¾ q?KµæyÚ‹T¥Z®U«T›…"^ÔÔ+zÑÚ{KÅÇÉ;r‚²QS²e ›ý`óúõ™2ÿPð탭%µp‡>}%GÑž!è éŽÝ,Ï(R„{j[MU©I½"£ôˆ@hö<Þlã-ŽK§ä?!~±ŒÑ'×b‡·…´:ãꃙïM ŸØ­…†Y€Tß…‚ä.2vNÐÔ¤Ê] CÈF雈iÏñžLoaª a‘£"mðÒ-難Ròœ9vÇEDSã±Ç€¦g3¤Š«_šUøkz¨?_Ù?‘bƘŽy[âñhÊw¢úQ!Vm3ò!ÆÃ6ó5.¥ kÔ•C+VUiyÌ2ÐyfÕžð@î›Û€ îXi·O`ìÙKýlÊn/u‡+®è‘ªƒÿÀ 46„,¬@m(´ý×KÌ)Ýv÷ç'•Ïl–¹”ÃÙ$©1ä´Z›ž†rס¤qìÑF§'n#PÃi¤ùFøÚ ®jÃCÿLff™4 åqô[¸€Ž;ñk´õFÛUØ‹zCilwã:ÙÔr2Ö~Šìq?ªPcä¼½$݇Ôìä#?<Ô·xÌ)í¸¸_4‰S7Ó¾Å×­wØÝ ›>½^¦™|ÙiޝdUŒMq¢y|Ø·:8³Û÷K·èû÷ŠAö&‰vÿ6ïáK' ¹Ë,À4¡IëßO½ªÂÈËXÞãqé“—Wæõ[ è6`·ýø¢úð3jNeœÔ§?i ìöVmC^Gñí|”áãÞÝQWF⇚»L¾Ø'‰¿d2 DÛ£HëµÉAQŒPhræ*%€Ÿ‘-騸Ы-¶ïÖ€3öǰÚUõ(šîzGkŠ‡Ð¦3ÖéÒ¥å@4|j%5Pª,´tjÇÜ·ßÔFíH!fqgá½ö, Qj[`­Lìúý’¨Ø£×Ú—V¸oL¹øP´ž°þè”bt- &Ÿ‘ ÔMšŽ2——UC—Vï’Ô¹©©î÷ 9à3éUù¿º2¯`íî é\v%İK0H¨±%ºi¿I Aú”k‡tn/0µñˆÑP“äcPA'óTc“Ôüo •@¬ȯ£' }Ù|pö™g²ãÜ!”}8«ÌoœâÅ|÷ÁmU5.­‹›á-ë1pÁ$}í[Ágc'V¤Á·¿ªš0èBT¼p{í$"™`ì‘ãq»Ð§¶Õ¶+S<7xvâŸåJø_¬µ¸#ôÙbá%…†FÅSUàŸ.ÐEQãôÇYîoàÅíË]€°âƒ˜L[¾R?‘²ªîˆïÿObê„{U@Ò±þ°çèIªsõ~Ë zÜÐoO ·Is±7æ–õn,F› ön€)÷\-·Z…Ð(ÅÝçßãÃK•(ËßD¨`M2)·ö°5]·ú&®¥‡îˆÇÛ1-9ÙØG¸=p%F‚þ“qª¶?sDc+0y¶JoÜÄ.«na'8íQ@ѸÖˆ~#‘ÖÜŸjéû¡~L(œqM"/N®ÆÄ…Ьk€ŠÿJ;f·ÄŸCAå†cuž¹ó¼2ØûXÊ×Vƒ™óa1¸jš’Æc˜4lì¸wðãþ<ж𸄇¨íZ¿pší–Ò4;Z8#@ê)ü¸‹sýÍA €òªp_û¼ƒ=kb´ù²] ‚$妗RzÌVÓ‹nòU“PgV:…ý{Y„†+`´/„ØñUU¸!Ž=r€ç(ã/ñ!ƒÄR-‘£Óš MÒ¶Z…ö¬ñ`exNÁr Œ8dœž&2˜l±Æö¸5J<@>ØçöÎwö$Þ.õ+'Ñ9À´ÄØwŸOÂÕ€œgb×Ä,\#»ú\*ãI·bòˆªžµ"¢08É6|‡QÌE ]æ-/¦Ãõ…oÚU.Ö²dLã°%Ví¶¦ÎßL>À‹ËH¥Yï²&`´‹äF¸{±Z,èQùmÒÎ,¬Žq¼UÿïȸۑO·¡Ï.¥Ë53ŠX#û3&&ùºw9aÛ9k½´¹õóeó0ôTĈGÒÑô*`v»¶ßÑála¯YÎÂ}óuûù„´Ò®£Òzå¼–`‡áTœšg­o a§û öϬ ‹›!K‘p‚çÂüÞ{Q$bl¼W Ô”ïÈ!ÒënÖýW¯±æOîó^mýêÝ‘>íô‡¨t×Lè '§BŸð•ñ© ×7 +ûÀ°1«ò Fb¼¹‰Áë ô>‹j5øÔíò5Ra„½Sž„þÀŸž/¿ÒèÞzÜ ‹˜5¶¤ÌÑà/ŠtéU¤É¢çt,Ýñ×X™ w[²ðζNe÷L«sIÔUÄáñšp øª™js|aÌRâF¯`º¢Òû¼ßÅeÍÄ,l¨U)h„uVϯdôé”*ÖæÇò%-¹ɇlÌ|Œ A ü¡È"Û mã8ÿžDQ([j”ÕÏJ¤NòšW "çÊF¶qÊhJ"úvU`IÕ hÁ–Š2€îB’&˜½u}hR Der=‹_x`)¹‰vÍëW/ý‘Up5Ž«q+:¯]/:4Î;3›¥1e™TÛ¯ ›&¿Ä}´D¨?ülGà”<'„pCíu°ÈI¹›"tÓ°ë”\|dGýg³6Ùa('é6–Hš[ œ ?Œä-γä½@RË Împþ掑€Ñ`?ÙDä·ú ‹®â„[›ew­ñ‹Íì„`ؼÝK9LƒHå¾ÎÀ,Šƒ9ž¥Ìj¾ºâ"¡vå˜íwIï؀ŽmÄ[KJö½ü''g)Ïj@³ÂŠ j1_li„Æâð^ª¥^-ÅKþ‘yœs–¨ 5Ï=ÞßVeu2\¦?$¼ÊL!ˆx<ÉŠÆÀ0£A÷ ˆËUHùb¢© Ûì˜>mÝÞ:cR/X]˜óêm@l>PÒyrtb¾¯÷¸¥ªõ³¼Ñû>Í`šÿwç'D)u'„ô¿«[‘wÉÌy# ÆBø Jd|¹®Ö$Û*3Êj,Á»7:” ±-™$Âf°j¾ƒIz|q“¦ÝèDÔ»"=Ocê´b?î»àG82˜hÿóØå›ˆdÃ,E¸G;`|ß!i² V‹îó$,p~9GÆ,y»Ô]µŠ!ýþ ŒQCŒ|ÎϦ®´Dfõtá#¡Ø\½¸Ž ¥:µ'iŽØÿfžËýNs$4v,²éÈP„e™lzyD§F(=väüS ¸É]ù9CÕ®75Û2m¢ÂZ<ÅÒ‹Ü(gP0 Yg•ÝCfó¾y:gdŸi_–Š9 @g[ޝ¸êÚ!Ë¢õGöƒÆÍ¶¢#9–rÌ 6Ô©ª:da¦ëKüžó& n©3k±Ub‹-Ü‹qŒ9â~äÜ^}¿y;º“Y“,;“q¡/Î;Æe*ºµ;Q4AÐÞ Qo¤É¾Ÿä3âÓÉú;)óÖ‹+(¾ Û›¢^ß~êÄèJ‰7]ùÏ*zt8º'uò›üËJ¹ óõ‰½,…ö³ÁE›ŽÉ®Iªñ#5÷q›Åyh ¦xsÐî!±jæ!ô[©Â€Z)îæï;hd§Å ÜáøÁ%›$ dðfÞª xFí’h˜"2"ƒë /èËùB¾óQJñ›'ˆ$Ýȳ* `ŽÁY+:x9‚æÔýªC⦪¨øô81n"° `”iÙÅoöÑO©!›OmŸ¢¶˜xEôÇßËø\ìÍ3íP½jå½NŽ ÷qlé}árãpŽ’þÞ15 #AÓy³}ÃH¡Û“‹€]ÈЪs¸ÜÓ#áÍÖ±!xŸ`˜6.)QQЯÀ+Æ„ÚjÇç·{ù`P¥=tØ—µÒ]¹Œ‡´Ø+ÆYpš(€FÔeÒ¥w§¤ÍkA‘çq‹\?áCÚ‚ºóÂ;oÞîokÉ ÊzIÚ¯µ‰8ÿ±•u]SB•ò¯­¼þD¦¹(3¿úùtù,Ö'¿1nQŠW ÓèÿR*‹KT´þo¤ªÍ‚u ÑÃ'x@ò$b– ¦{ Tç\¿ù¦ê =4ÔæÔ¬3;C¢óa©·e[½óÄzDì‡Kq³1˜4÷p`VFñì%Áª ?kµ†KßÞT§AH÷§¶Ç¤XÖóÆß/`£,•àÉ¡þ·,G[o9ŠœŒíR¯\u¤˜AHJ ,…nÿŒ;Ú2MêqÁ–üÍÓÉh PÒí´"akía»§vó¬c²ëþ8Ò¯AG0äŸ5A/IPº}‚©_‡ XbïÑBn9¿KhÅžë*p•³,í*[k‚#¶ $Ã(?Yî6h?`Ç$ó¬{pƒ§}4°¶öà€`âÜ!Ÿ®¨ ëªóè…F4eßЪ@uF4nN¬ê§¦•zy`‚§ç(3ÊLX”%²l/Øx¦I†C.uvCÍ€€¶ÎƒÀÇG¦ÿ©&{O»‘’R¥•ä„èÁͼBÕŒSÛ¸,ëækyܪs3}´Bf‡Ú/À»ªdD÷ EbæIÙ9³ ¾Î]ˆúž†)Žr%ù²Äj pûÛnǺê÷6X€´¤‰ÏìxÃdë\g"E¦—A&¾+5’Oéô âÚ›(l\vV<5.·Q‰èˆM{®‘”„µy.ðZ>(M ¿l¿)5áÒ‹~”- ¨º(} ÇÌÓ$‰‘ÐöS“rP‡ÃG£'‹Œ ,xºðîvãÚ*5õ|—›Ð+òOô2 ,+¸˜à…ÚÉkÑÙig§çû®Œ4ýpü©àÎÿŒMaEÏ .!‰Ç"™²Æ9+óö@mÌK&¹ª¡ƒ]q¹Œ¼ìßþHéï\ÁïGª¬éÆU³'Ç4:U”å!¢‰¿F–6óHKrhOˆþÔóM—\¬oÊ[®«^ •íõ-þxI·æFíKÜÉóÖ,-5å 9±@$þO3îݦj°‚"oâ8 ýïËž ‚&½—HW°ö’ûФ´á*¯õ¢fk™¦¿_±å=þ$>àþÎ ,‡ä¦±ÜHT”¨$ 6××¹‡ZâÚ9hùÀ¬ÚyÑ—ÞÒAs¢*êµÈÕ™òyMÙ?_2u4¹¢ÃúÕ™¢¥æ©ÏhwyÕÕ!».̓¦ÇãßeTžæëY <9Ιý(;ø”Ýù¢³Áüë¼Û A=$­í'VµÔmôX®ïŒ¾Ì³2U¾âð”¬(i¡1‡XÎN Û®íè{ãÝ“»e Å^Š ¹T.q^[Ã=¾*9&ÞLªHê^×ÊõÛ­ (^Í“¼B—e—¬Â½¹MYö·ßæQÕ£q+quô ’Ob¤u&ü‚èHú#GÒmŸŽËç2wß«œéo}Õ‡1x´á?¦ávN`)ê9•{ džîûîqϸ˜ªŒwùˆúõ„àTõï1'F'¶áH¢ªÀê«R)0~ž¶ÔIo¨'ôó)%GŒàF–Èädf%«à]±«Í^)½_Õƒáž$œ 5ªÏÑ˾±'¨´Ó*Ìe ¢#¹Ú´·<;)¼e¡p±ÛèCxo“ÿèñœN´\ˆ™h¢,,•/Ü L¢¥oùÙ4CŽšwÒ_IBµl¸áëá`…ã!ц°’)¹ (ó¾—ÛÏNUwy¨C§æ'Íþ ‹ÆÈA$ºÒ¬ wp¸Ößã o`i†ÈFs5=”ô/5½W"9ÔÇ8"\éO³˜òU'ƾ¯Óþ^uo†ámª§PÙéåó9²{¾ïÔ „ëÇ”U‘·X(ÏÁ$‚ÂÐÄŸô“x"ˆÉ$DJ¯8Í ~Qh¹ÏyŠèduvz^…÷šÕÞepô®†Vé)ØürÄ)ØœJà4»c0ÒiQŸ=—ÇM-C”òdÈ‹C‰/BC Q$2N›Ñ`N{‹Ø VíLvß—¢ÈŽôë@nz,“#Æš^é©ÔQk/ŸúÌñÄiš9?Ïx2¬Ïq“7W¿~u#g®e‘>kÁö~E°çvdè6ÍìÂ7ÉTÖ~zеIÏí/\—‹-Ï4vÇçh•Ö'; ËöTEüÐÈæ×SÃ+Ø¥øX˜O÷¯„¾é3Àh>µks/ccáVoImƶ¾7( ‘Uáåì-URøÑÕX2Ösõä-NÓ™ëg†;•Ów-V¾ˆ„5dE²N¬b.hja_&ûPLÌßšÈÀÅò²¤A"½Ë,J± سÿ:@_¢U×o·E®õ(' N;ä™[‚êà¦x¨½êtR3Tó#WNE·•ÆF û­F8µ«‚*^º×³)'$Í7·Æ‘19˜°L‘sx‰—»¢2ÿ ñÅ B*×|A˜,m×ùËa,NêiÂýfå3|±Í½Ì}aØ–ˆé½áòí–VYbàç/VÅíG2DÛ\Nw%šÜÞê$ßÀ/éö¼²áT¿C€y¼ð“è^Ä[Hk“ç†W“:$Åûà ‡Þö[•ü7š‚íKÄ€Ž÷îiIF8•'Fí,@&0[Ëŧ†¦² ‘ßaêÎ¥F$Ê-»òŸË¢ÒT––ÖG%BQ¿*#±Ôzyq‰™+¡Ê$‹S_ñHeð¥ˆÃk- ÿ–ꂎ9•2ƒ9Ïì°Ò[x£6öv^Ž'¡-à I1d}ô¥3¨ŽË,Uà:³®2šõOj «ø–6»TKµFQ¹I¥¦< $pj€;×v›?LÀ§ B})aލ*MfsÃ^h¬—>ÚXž…NîWB¨=ogmƒ2¯ÛO »Ø“X÷9ð+ €T“|ëËYñøÿ³öéb‰¯™‚ MÑdööé‹åO«½sVá©c.å׉!­ï~'ŒÖlœg7t‡¡ª0›,Úø±Ðp®ZG×Õ4ÈFì †Œ{‡\©RV¬D”Bªý~·ðnª2d0¡f“SoÀÎggåÙI¥sG¾½õG;Sx(â¶ÎÕ)~eá³|æ)O!"1G h˜˜LÙEªC¤ýM/77ÿö´ù¥éNàØ}X³¾½kŽŲ=yüêAð¿¢yÏ‚ƒ£)Œ‡lè è ¼Ã¹8öGi[¼M¿ü3*ߪ©Øµàá¡Èè8[–ïÊYrÜ6f‹“ÞŒèôäÚVþh<°Lܯâsæá·‹”zv ay…ŒJÕOJKàb çº}¹„Ïó4Õ¾¨@9p´KVZœ8†¿K€ jo©çv)Bì36ò?ÐÀBØ6q«–z­í„þ[ö\¿µ”=«¹-ÈÇ¡}tÒ-ÅóÓú”}¨ é/MÿäKD_‘1 ¤…ÿn¥«@<¼ÕC*‡Yg2:¸ðWý@HO%ý~‡ƒba—ß³çJýïVÖãPHÅy&)·×ÍÎéáq!U%AK ÇkøÔ㬪«šà°EŽ#†ÓÄs<çñkÕ¾\6˱ΠF8 æ‡I8ñóººÇKns›þªÕ$Dï¿UXzn7î:Œ@D•!ëbˆÔꨱ¿z³ñæÉ>œ~4IE8||p7¬>ÂqChZo5 9`fT¸LFHY3óºŽ ©mgîA€ŽìYÜF7^Æ“£"W†Lj=ýÍ5HˆWó@.Ü£T%ž×eḔ­‹±ÍjRÏ=rÿ¹¥c˜Fö*äfyb£Ê ÈÑ÷ÜIMý(dXDN6kï+£lWM†êäÈÍ–Õ^ßœ{uIptMëÙ—·rï ÍãaP2@ɳ/˜°Fo!ëè#ÃvÄýKÑD /B"ÄÄô%Ý'=<ŽeÝs§A>É“$½ûd¥nêÞ# wg¨Ü×D°1Ž`¯/CTtNNríZÙ¹cpa3÷öJl8!—¢O¶¨wpwÑÖ^ -¶¥£dÚAæÃfêK0 8­ÍË gÙÁ+ïüžñ wÃüoUÇ36ìêö)oZÚîÐ6R¢ô”nŽw€F›ó3®iòîÁ{Càø4jóC w ÕC–½”¢{Eù6tÎjÝI>ƒýjÖ¡öñLÙʱ<,ò#|Ùz›u&Æ<°Øj”9Í­ô‘iE¶ÑË‹Ã^ÿË ð³9¸äŸÄL΋,à¿IOÀ¡iÈ÷1vxºYÇ>²F.Ô‡~H-†UL§+~9gïÈÛRĨÐf^Fá9&´_F5?™‚W,Ä—Æ_P 8 5”Ó~Äâ\¬lAÐf¦üS½¼¾Q´Ÿ½ÍÜèDï#õã³y@^$PÌ*»Ÿ(¹Ëºqઃ¶×L,¦RBqÏ¢^[ %üOh¦ç•ú™Éà¬äß¡h\ýÔV3ØôjËœŠØÈ—Cðxn`"sQó^žøqSëØq`éÚVu¼†,›X|妨ðUŠÐ=q÷UQ$=¾ Y kôXÓr ›Sþ D×K¶ \•UidVß`7yNçh’CÖ~øé’]Й'oÆ—ªšgzTöIZêO«;®7—û3âåÑiþu›æ¥— BXEmuØÒo¥T2‚òölGÔ˜À@kï 0æA„Ær ±ÌªR«‚…~Qµ7 ‹ìÞŸ&ι߹çj¸‚½DÔªä E L¦={M}¶òÄ–jýI‚ƒÝ1AÌÓÍj[Musf-¬o;·,\ý¢a’"w¹MÊS‰7étBb—p+@;"½>}³zy"´}I7àÝ‚¦¬ÈpcÇŠ)Èm3ÁTÇ`G"1½O‡û©…n5ԄƳïòÜ:ÂwÀâ‰4qýŒ`øS¤RÄü+øBÍ[,h6=3Vä¡X©=¥`·7V:ç0˜™àòæ& TrwȬBîÕ·æÀBNqÇe†´?$¹¬J%áŽKËâ6êE"=h"ñáO*ï«kNkUï—"¾¹ Ù‡½Ä|:¾zŒæo±´2xò Í¡¬¼†Åœ5>+GoEËü{7°ж£“ÿ Ì€Œ¸ˆ3/n:¥ª¬žÒKô¶f ‹ ekM¢ P4›" –ÇÊ#§—è.ž¼çeôKX~½wêP”É[±Ë\Ë^!К"ByYqM„q÷9Gáã<­áÝðα›³IÌqñ­Ÿ©гi/Ïî[êk®tšñ°T"ÂéÿüÑØ„y¦øÂ)OÁî>¦ÿôÚœr19äé ÎÕš¨P|½ŸñOI"°´ãÒ̇o9›)ºýxÉW`šFÊ] Jö^³ÒLü·ô}&ñí?ª¤Â¿ð!Hʬ?“¾Vmû¬ù;Æ$®1À”ðÕsÿ¯¹®š»‰'OO7?7ò4«g€³Ó´3]HÝòAHÍ¡nn¨w’õKˆá‹KÅÇÄ^ÜLöÜ3?c:_Ù¢BüÁDGm¡y¡A¥;uJgèÌÉàÅd”õnæd ˜8.ûpsZ‰Æ6 øâP¯#úå\¡éQŠ!XÜk¨9àA›B¼¯ÝyXK³Þ‹§‡¯Ø²ñ¤¢é?þ¢ªg19±sŽøøƒ -“ «ÂÇ.ÅñcÈ¥®ÍáÓí?êa´ô·¹!í층»›åsí|7¡ñ’¯Ü( ÀÛðÚºû…@4óqÒßñÛø:ؼ–Æ)á8›c·Ž¡p*EÒAæD Rf)©%e•ÂÝuAÿ†€ûœ·5ª÷ñÏˬýõªÙMû]èuÊ“S™€û®ÀV/—€ÑHK÷°^¡®–ÞpmúnòBF§pg,æôúwö¤i†ÄØ7aQ0ÜÉã)KÖþÙsu/åÛi‡°ý¯À¹Wy_ƒA‰ 2ðÕ«¦'ÜÐèÃÁ†¦õÂÜ)Cw<*yñp¥77H,³Å ¼äôqÏòZGPCjÞcšÄñ¾Üsi%òÙ<¥ˆ²ëa$Ó‘x쵃å‚öE ÷xdÉ*ÊM·†…å M˜AE 5;b) e†:òý¹g[òBÂþx1 [RÁÌǰíá4Ÿ+JÝBŽ®íp? {§`¹ä@þN%g×}(ÒwÅæ #º¢m¹b;„§”´ß–.¼¾æcÚ»v#´éÍרZ84J4/$W“å ݳ>©ƒH‡yŸ ½€}_[¢]Kä¡gKæp;1ãÞOh"ým)k9ç6L¾Á.Aí’Š¸“¤)q—å ~P:n•Þ“#ôËùa¯Y, ¯Ì¥áFš¥š_•²<Œð·,¤ÑÉR‘ïQ‚0âðËQ¶$/ÒA½?ÇVK,Ô…NÈÈÚëdQ×áï8–pÊÉ·¿0ªzÉV‡(¥4lD@ x-uEÂ4×§®¿•ÏÞ‰È t¼µG«£ui)FP˜s +¥z@ãË+ù•Ôõ‰Ã‡–ÉÂE𜴠•/(….)DÅë%Û6Y&›%ÚÄ%ìÄ# òÔ1¼õåbW’ϯ†o¶A–W¾ÕNH?c†3ÏBIJé7 Àèo <ö+ÕèكϑO‡ •lÕªÜ_¾Ã~•pÚûß*í‚‚¹y,æ4$ ø]ÇòxŠ©ÙæHÓÆS?éf–‹>mA³“Y26yBɉ¾GœØŽÆê,»¼.ýhÆרµ2™šoÐßÚI)ú•ì,Kâ˜âIzÔÝû¶¡Q…¼v¢Õßûõ ÎzFƒbSÞ$ž'XôpQ€ËÕ˜BCTr­ òéAX—Ê·ÍFÛh‡Þ‘3†ÍbcÝ ŸW¬œÓeg­Ejs&¢’ÖÓ¢}ð,|Òc‘m_¡Jþ XÍæ<¨>¸G)жRÐFñø˜ÚŽâ‘и6l£õùýè° 4Ú„Š×˜SR#ԧм‹7:¨8Ì÷uÙãk 4M›Ø¹¹µ¿ižIþƒˆ[kº$;VµoÁ£oAr•È1ñа1ü´˜š&%‘+†˜¡‹8kg”DLóø—á€J‰ríU¸n¾ &ËÇ,ê®å½¸ùï7ô5Žq-…övßÄM;ÿ·~ü…3Y͵‹£K ê¶GÏýå™yyašãš§D)_YÕl¸Ì¬—KEÄ´|¾ÊßyqÀÿM¿"h%ªº[ ª¯ +¨ÅBò2_kcðO ã{puÚ‡6c‡]m•D?®‹y‰ ]ò©”ûÙ_˜ÉÅ\LÅioƒÿ¿Ð1ÞÖûÿwÑï÷w¬ñcƒã‡ï©ÊF…•{!¯½w“^…Ø yêF#Ï&9#ŒæÏ!†»2¢&0»’Mzq*êC·¥KNZ— ‘f´ä½fF*ÅÒ!—y[S…Û×øñÍðê—6ŽØüÓàLæ,I8â«Ý^ÑIOÞ•åÍonÀ=Ž%•5»¿r†ÐýÞþö4òÔñT³ÂÄõÞêIi’ê­MüÞ}ú{û³ÂJkñÞ¯„[Ñ6Ñ—Ó1Q?)ãš™äþ„­[.œg<4”64Īš¤†¨…Õ´~P½Léß’eæu¼q?àO“ ž1bS½Œ]V°m²NECÒ°-¦3Ñq·M§ØÐ}9]°œ—‰ÇM<1gLD¹{>`Vƒ•¬~°ÊBÛùE£jŒ-ƒ£+ØA3©æÈLX¡F|ý±”­÷[ÌŽÜf•ôíS |µùiX|ùäejÁ¿Äj»áŒÌ3ò‰ 3k}¯±•ÇäÚrÜ´ÁÕˆr«2GwÐNûϤãâ3àŽûÁ0Fvé¹Ï>>Ô¿ð샵Ïg·}¼Ñ.‚˜ƒ?“¾êû[_„Ym=ÖõRŸ4ÐC¼@-B%z,{ðæ™­©Æ—ºÊL ŠÔÊÙ•Gæ?ù¿" Ýd#2sÌ#ç§aÒ4ËõÇíD›XQþyt€¨9àÒ‚_$©³rÅãµAZq× Ý¤°¤vùŸºkˇ‘$a€[TZ²aË‘ä¿.œ˜€ÔY¼Ýnê ÅeoªªÌA SPl.Á“yIÁ- :—÷/ÁÉ`!u?¤c,QéµêQÌͼ!}Žr[Àä= p¸¶J(¶¦w¿oV_àŠ{k­ hòÞwa¾Ð?vÞ'D6gµH9æ¨S_Pã•ÃåjÎÄF0šäGU§†-i'uøY¯jÜù‡ >µ lÁVÆ›¿‰Y\åª(¬Ƙ—…ßUÞþ½:vMé—Z8qs¹ú‹ß4i D0ˆëã ©.‰p÷NöûHTšH— ˜šS½ʓ؆Äu3–=MI@!Ó.¤ƒ£Úc©7ЖÌBm YÞœh¬¢0®”Â3äýá›¶BHÿ™‰\ñ^ãü©Pù´ÌgÑ;“OÆ÷ûcç5ŠÖÙ3›6U·QH¿(†åÛ€EÌiWB§ù€hȤ€Î~XWVß7·a8Šž—P&X ÍÇ{n¥#ˆfP×F–þ9ù¼&s¬ðã¾-˜‘›y™„±%~2œ$‰ûÑ|ÖÖ$vOT½žŽ/ÑVæfOÀ…Ÿ*F-iš)Wªb¯¶± íbf5õÕþ ¿¿·S'Þ`€ïY-+Qdƒ‡/¤ôTÊŒf UEŠÖGÏëñ|»QÿÖ¦D%äôàü”ˆC#qqÇãu§Ý³$g(+à ‹·Ëðlí±úÑ\ñ…r'‰rž}¾ßlhçŸåÅ )ü€-…0ÿyáÉZð¢–ÉjÀŒ¥Ù}ÌÛ&†ú&ƒY’òÂME ¾М—½n‹RæOçà?)œ¦-óX¹RÜ4å’ÚDc ‡ ß ¦oûo._"ØÝׄìêh¸f®©!’) SÒ ´ùŽäZá`ƒËèm3Ç»ê{#Ô/·Ì†T ©ñS< y¦žÎŒTVˆ¤ü³4Æ´Z²m¥‡ŒǺH{öY…„N‹.àÏ­ÃT6_þï^Щ^Ñžì´fμqOŸ*wãçó1CZAÒ ú²*ª ë #=,hH«“lj"ëÌ o`¼÷UÍšLqþ-,qÕ°}Þ$­ìL[=€UCó¬·‹3˜.ð òpü>ï°kz-°™ú³u½Ël&{>ŒÉ6?Butϼ\)Ý»ÁÐ5p3ëvF ÐEðæ‹0àß½ì U8ő˽¹¾êÌ]á‚\A+‰ k‹= }°dMÍ\o 1OÆT™\˜KJZ˜;gÕ›$–&6, QÎbÂÊ|&ˆMæc”¾-œu§0¤{:zOw’jCnþ°¯WÄ8ÏH>-õ^¡5L0ßH¾ð ÆE®ÿbÖ y˜Pèi†G ,|r 3â:åÛ­âRƒÏÅt$rUº6ëúұ쮛°Ä@1ÞNÓe*¨¬‚m{(ð vJx\t©UÒÛê掽.w AшTîºm02ðöfùhšÆ*J)½2gÿÒŒóÆï‡¾¶\„”DL”0”ÎI}X¹èpÛ|01éÎÑ•Óc3ÓΚbƒyhZæbÔ¨à~dOÿÂÞ®ñËú!û³M¬¥fO7yËqØ!ìpùosj/_N¹Nûqu aRØÛ\BÕK|5‰Ù¦{ÃùÜ¥JlÓ#W]®7³¤ ÙpÌádÎ|Äê ¯ãè<¹ÃN$ 0ðòm™-öN:BÞ¨½ÇâJ*¡”¤š/´˜•íxËݬ–¾];7% >+y!K^¿—¨Ÿ3åˆ<²@`Så¤e±n¾Ãp1n/G·¬c1ÄUeVàI fͱ©T²Ó5+m£wˆú!Îùåîç$¯’’@”ëà¤#ãi 8ôc‰»È€!eæoœrØ ô;{f°M£øÔÌ « Ÿ{} 0·‘È2ŒPŸX<µ.ÿ§pмÌéÑ‘©WèϤwÓD¦m¸«NÁdчæ‡@™+‘y]ów8PbážJW˜à†«3¨ü°QVÝIÌo”Ž÷'sÖˆ˜²L²T‹m­ìó8žÏ,CÉ6_…ˆ3Ç¢~²o&.@‚5%“4‹ëψœŽmÞ‹¸ë+¡t7bÖ‘çHk_ÙL߈]õ¹?uäûÆ„à˜ˆõóW gˆX0¶½lwKSè÷ºgX’…±ƒý¾äæ¡ó¥®¨5ÎaT" ¹«µ àÖÑÔ2X3Xy÷«ÅüC· ~¡÷,ÌIù’ÞÔÉUybTÑ8Dãc©.å+}™$£4ÍÖQß¼)–Û~Lry¶C¶Î%{«åÈÊécçïÄ›øÓNéì #³†ÝÅT~‡bk…ž«~•¥y –@ÿ“­¾‚ƒì63ØL-ÓƒŒ±É1’ñ"Kñ¹wPn^ðfq”c€ÝÌ’ŒE.3œc5Ü Ù‡6ØÁA>F]þK™`Ÿ9®~wÍEM_®è¶cKÏ C€Lði„êdÙ³Gˆɵ+##ÕM]aiÍá§iá µÿ›°Õ3¬QMk‰_1ùãÖ©³2wšøÖŽªâ¡Sä¢ô¾Ø’/$by—íöœøÑ@R0a¢i0Æç¦ájÓ˜öU*¯dÏm5Â!¾½îÍ“’q8« ?ä¯d®uäyÞd'e3üñ|BðÞÐS«ÎÏD{èš®EÉ)¡‰sÕjJ³ÕÆ[݇jº™#ÃÛ'âi@TÞÁ¿…Œ»Ã:zoÅçñ{g•Æ%Ò;MJ+Ñ*²a=æ—ËPë‹?Ý•¾rˆ±ó†s°[ýßMDd5º°,®NHmˆÇ¡â…삯΂„»u1ðg1 ›Í¼Oø…l[OÓŽÀÝŸ/+g>ìþœS“<çÃÂÆÕÃë¦ïâÓ’0Vެ€¬Æ›È3__S5ìVíÄéò·ª]‰ÃÕóU©h”Yé ØÚ™ÞÁ)ÈéˆG/íÛ$td¾¬ÔãàÒ2ÐO_^!n »[wšÂsÿpL°àš¤í%‡¹äó­áä9ba0òyRÒ‘ø`ÛE¹¢IBJã4ÚýÂKâ¹Ø#À†]%¨öÖƒ-þ©ÿçåw€iºxŸíñ½iÌC¸•èJ<«{ç*pV¶•ÝÇ$`_|UMÓb³«œ.Ù½äã”i‚lˆ~ÀÅf„^‰Õ°lÖkí\(¦ÿŸ >Çt&E§[ç=hw©1¤Ü[‹öÀd™ lŸóÂtüÝ]àà0_Y,h…nS´Ý=N³Í—M@7o|Ž‚ÊƒŒÐÁhèò=¯á©ÌAbA¦ˆÕãª\­¡›YæéÃ6µ]„”c<¥5êTrµy…a5‘š€ÛH*‚QV-ù×s)4Ø; ãêXRyPÄ=ëÄ‚¾eSý,uX¡÷V’!OˆžJëùu2Ý3‚u~ -ýñêÚ ¿‘‡ØÑû 7R·Ã÷¨ ƒß§{ü,LN-nðp³¼¹¢Z°þÄ$mÁº&ÉÛºfá1cV®Ç&ª…W@_»½Ë^]mÚ7m·0ã/Uj[ÏÓ ýe(ª$ãÎÛ»¡wηÈV_rš~ưTÎëSÖƒ dnM;çvX\áJlv±Ã©Š‚gvÕý6}\eëXÖ8žÚG¼×ënÊÝeßHܲ_† +¡}¢¾¦7™ÇJÜ~î“òÁ°¤2ñ‡ë¤ýE”#ý«]ƒ‚ŠYDˆ‡Ò ÚŒñÞÈ-Ä’ßé>dpç'XHË|<¡ +Ábùßø‘H_›ó^Z %Ë?*–ÖšX0oq.ùL”15×;¯yãË¢=¥2i—6·\"`ÂaZï ¾’¥¼@ÅËE–AU¨Š L>IåÂ,ƒ;Æ °²e±isCf2F±Y´`ÕêtøãÎÖÄEBVx6‹ý EÑb5/ ÖˆèÕ~·üñš±¬!RZwMÂL–j$J`›¤œõ~ŠÂ*w>g‡!{3[üåÕnÂO¼îÊžÇ, ¡ø™;sðª {Û-õÜ„ýÿdÆË@¦¦ *T^àÏT­ví¦ ÈÊí#·Šõ!™㓟Ω©ã,MÃ|ˆqŠ’†E™K¸C/Âß¿÷ÂÛÏ‘1ÈöOß1 ãÄ^ˆeÕ‡ cqêQÐ>œ"¶Zo.ë¹—[Í|VÈ,8!/ü]A IÑæŠ3áôêSœiÑI ¤îÖ" ïÕ PÞM╃§ËèÄÓÿÅÃX?e“D^°eÙÕ‘ŠÞ:Z†Ñ¶N‡X$Ñ´:ü…àÑJµ¹!f9z•Aï9õñlÂÔ1Væ]ªphQ`n¡Ø²ssAkƒzf ÃuzÞÙïâÖ<ÈmÓ£!ãLŽrk½ã›u÷“ERæ…Ïï¨8o”‚•™Ý+Îñ&‚¦jü‰8¶B´r›5ƒD… ¿ƒ¶É‘ŸM«êeK¼XjâÔ<ƳU©ú¢!Š@îrÖeŠèÑç~³w¸ê㊚äÒuQôE®´gš›báEæ]Îû‚Iæ½7µ™µy,¦ÏÍÃtÍù¼´4({IæôÔàx S’àäÈY´›Y pØï~ÚÿA<â…„ø[4eþÝ$ô¤ãb쯗ªø©òÚÛ’f±á¨ ÅÒËŒGšÄÑ‹¾™…%¼¨×ÛDšzv½`ÊFÑ?«¨)MêÁˆ¡ º•&ÅÍ-:jË©Û(5¶u‚qþ†Ú k«ª dm#6ÝŽûÅÊÕ¾¦vBÙ|9;¢JÉ–µ§›¼x5³%[-T)¯߃Ì3é¼]ésõîdlªÌ !U³ºò¾*@bÍàØû©Ò¼Õ]e€.r<¡kö);ÑÏ8†)Å’PŸØÐdŽ¡xÓ|Ð÷P‹HMx~ηp2‹ˆ®ãÉï·÷lÏŸ|øìfëƒÄ¹,Íê£)ÑdŒR<[>z¾•jù(qßZÆ/¼þ(D<¤G4KÝ‘ o^Oûú… ˜uÏÈžyQäÂÒ›9êØ+Yµ'Åäð¿.yvxhœŠ >8˜øÁYDå*”Ý “„¶0¤Ü߸:‚Im¢‰]L_lÉtÀ¥']“2 G2ý•#wååjòtj÷{Ã{iÁÄ5z¥X(ÈM Œ•®-;¼üfÇÎãúV7BY˜Ê;LT×?nÆR®}uèÎÒíÆ&NÊD˜6ñÔ|dÒÉ`åÒ `ü˪àŸ‘Rˆ(¡^‘ñ3m¹ÃpCwuŽ1‘[u57Éý#iD-5„ì_ÎÓ9IÐJ«©Ý¯"‚C³Ö€„³»+ ÔP 13ïu¯Ò]Ð|¯Õ3¼±ö–ÌsægHƒ¢e÷[&ô󵙯” Z~½_“Kÿxhë†B=g Dø7-`Ýër²äFöTðˆu,0ÛÂPT‘"—]ú*ñLj"Z:IÈ-³>³¾Q¥Þ¸ƒ§êÓ ½û¯%™ÈÍóМQó X `Ë?¥I>Ž ŸØV1¬E¥³”§;Ähí°®Ôø:5÷÷Aš®$C¨ÎnŸÒ‰=ãâü“l6TÛ¨Ù´u«e@Dqï3c›Pwm÷ÂMÎîBÇ©‹Xû— –˜"…J àõ¾¿šýS‘Ž/‰÷Qõ H-s#lZÓTš ¥4qVÉÕõ d¤ÉÄ…åYÓkh1iW£ò¥o¿4 KÛƒ,l§‹¢‡¯å‰æÙ7µ?×½ÆYÑG‘„ü–ÏuÏ{éô-{ÆÝÒ¸G†ºHdçEÔr="oMy©yÚ>µ W>§»xjýÓª®†_°ªiò­ý"œ¿•ë3®OÙ… Ôži©¦”ß—VôïM– šø=úX–y×^ à XWû Ƙ†5†T¬ (üÌá'Z>bQhVJù0YÞ0#zy<óœ5[E#À#€PÒ³ Ž‚üMr*Çé¨oŸÔOèÔ}::GdïbT@Ÿv~¹aÉ¥ÕñzúÖav»|ÒÎS³ä‹É÷ZÖ$¨D‹ /ÔOžÈÇzj åŽ=¤# F_Y•ÈP­¯=¯cµVdæ€92.Ò#±é¿f¬›<ÏOþ#úâ1Nƒ 4[„&BŽiºÄ]èaðeâºÈ Ž+ â÷»á1lÈQ>vw[X“ÊŽë+  YGÄh‰ŸÞ˜~û˜°’gB¨»r^GªHHÊ»<8Š}¡{qò’WÑAXby¥)Ç%g¹ÄÞ‹X%„GæGœÛÌ]Èÿ¤Å:zÅRpšØ0f¾@€†Ý¥o‘Œ’´±Mô´|¸ î|74…)íÌø°>s ÂuÈ$7÷*&~¾ºtïô!Ïùú‰j¶öŸ‚­”Ñ5Ÿ,® ?Ö3QØ2> Ãøi¿€GüŒÑY1¦NdŠNs½"°#‚‡b Ý/ì½Ø’/¯½ÍHR_ùÞÔé¯þŸ/1ηD°¥9Ã_¿SIí ¤éhBS³ æ·&–ÿ(QØz…èTæ’Û '6F8c‚áÞIªÆyO Þ×&ì§·²À©]ö¼W\q|}ˆÝ2šš’7{N«k:š5W@ÙøÙæŽ¨°8@ Ýh ‡Ípv‹u/B.iÈS-HXý(±?'$»Šú¨ñÝJîœ|ÕK5Ï¡Ö*ñ…4Q’ðüÇÈú Na¿kü Ö”ÓÔ•ú¥Å'VA})Ù! žþ]@–ŽŽ‘£$óÃS>{Yl’ ”IXÎü)¬w‰ùp¬}‘~±q ,wC}™®›¥&:¶C®Î­˜é5÷t™%gÓë˜ÉåH‘ õK!GK½Hí'“)C½á «ÚDf¢Aᣳ5r Á(Ý%P醌ëƒ=ˆFA8Kª8Øõë¢/À7ÝÙ†âûÔÛÿw`DœRÚö>ð–7$6^¡…|™ñuhÖÏA¦‡S7 /‚Ãv-•"ìš/2ÏV¶v“®ÎªáÖ=)é¨vµ²œ“".Áá/¸ÀÄ—÷í# G_Ì`Ó-,Z¿Ô4‘b¬1˜CöIµ_¶‚Ž#­îr…¼¯#Ö\º0‹Ä+/S­˜z2­oÚ°ûJóñ$XçB05éðïÊïn!å§¥¯XÞ'ž†}·mhvÙ²‚­ØÆîM°Ýµ›­ºZ´õ.>ˆ"w sUè²y¤š—#»cw>ë[iCÛ…ídø<ÂÊæ$9Õ¸åTæ”væƒî$8âY}`8%øÃCÉùâÕ:ßÿ^‘„änÌÍš]ÂÇô³ì5{¼ò£M8;rJÏA*`Õâ7Iž]Û61]2Ê+ç>á83iS˴룓,fìq´ŠÀ COo•‡d4_7ÛöëŒN]öjΣx›‚²ÆtRsBªoÓ„Ó¡)B— —!ŽÅýö]?šx&¯KÌ¡«–™¦J  µy²W•Ê¥Ÿhl!ªMu_±ÓEÙ…ënM? TvyñÓ¿µà Ù¦äBÇšÚ¢Id™K‹ïL4~±¾VìæáóCØ«¶ Ƶ¿¶ŠBË)=Ççõ^•A]0? I¯ÆíÅ×Ђ7©8Ç$fãÃt?R“‘úQs$14L- nG9zW5›=\d3ˆ÷BíP9ô_-sû¿m( GBÛ''Rľ¸wâ.ݲ(å)®Õ½çCšP”%<º)xªÈšÐŸn² dÌíIíc*«ÏH‡ò.j~šoŒö°Ó¿åo=K÷^7Bñð .°Ôrµ mìu‚ÿ>œºlyeÓžd6ÚñbïÌL;2™8$C&ÈoàûDþàMýüÔÃUlüƒât©Í‘çÑe¦ +ÿ¨(#ÓB15èfn Ú— GþI+e¹Ä».Š5v»ttlj„c‰Ù^ ºr F`*doÛb!ŒÍÊ_ùœÓ¨–'€*Ø´Ì÷-àécŠÖéWLR‡žÍcoãÙÈ£«Éeh,pz*†üÇýXù¬Ñ6¹ËL1:aô¤‡íÉE\Áì›M3RÊIí·B¶ÖõÁWm ¬ ÍÝûÇËïø4_E‚ÅC¨ì”WæÍ-wlŠ%ØÍíz»-DšR´À*Œú]"¸ý9z¶\Š6Ïñ˜o}Þd“´Únnò§a£T´ô´úqÊR€²Ž÷WGùÔC…Éïs=±öoüŸ’›$ˆ¤jaEõHÔ“èÈqd¿Íž3ñ¢QËÞEk‹gÕ6.>"å¦÷EªB«ËÎõ´­*2ê<ެ†çÖÕ«Áî%l¨¬×äÛ‘â€ã(`<ø°GßÊL3sî÷«Í  ¸–‹ê-X»¤Ö]«t/¯Fg¼1Ö©©'eyå}Í’íVl 43wZîCòÄwý*Þz×ufçiZžeê‚a}½–†Uó@˜pïÞݽ%Xd­¯M‰Gbð¢S¢¬Ð‹"{ô–Ùm „ùKôÎ^}d5Ÿi‚†ËuÔ×QÈÄ[,ô˜~ úü ΊY €¯¬’ô¯ýFE˜žÜø’ZL¬Õ}­Ššô'E<êÎ^Ú½·>­iñ:Á"a¾jôÔ@ÏT^ì”h¸ÈßGÀ<^3¬yB`ûV¯åöWÅ>·Q§…ûÞkŒ4JðŸ§àc¢ýtë…Ø†.ÁÀÑ R§œh[ÕüŽ«ïIég¶%úžDPø9 —²´¼–q´l"ªÆÜ½ßbOÜ ³7‘d(pÙ+Ûÿš³…‚ÝÈbLÜëÒ§£1ADÖ6=šF¢ß€;û-s(KÚUÒq&p¢›Ç]a' ¸G(tM9d>R$ˆJd^n%l›¸Äs]÷x»õ˜œ]¶ë§Mœlú>»mž>Õp @óð¥òŠ7¶.‡b¡.¬ñúáhÈߘ.íA×Ñ; ”#[k;ãbˆíØX+x«Ë)º{¡ºìì#Е ¯ùÓ¹[á‡VG›k´»]í *?`Òl§È²#©ïò,(Í!8‹Ìå¾'¶²¬œî‡­‹’ë o»w7tFÎüDÖ«bu™ tîxD%ñî%€4$F+#‘$Ê€˜sŠª¡£Ï6–öüÔMÉwPtºr;ÓvÓôö4W $w­nZ ¶fµmgÕsNnȯ ®×“³Ž·ñ¼Ké.õð›m¢ÍM!…;l˜Í¸×cìÈ Ù•îÉöÓÞò"àÒDÙ¡éh ždú¸zjšš©ËXKÊ•Þ~2T¹tÅIÉHÑê»:á/Vÿ³æe©–iaΜËqœŒÁr³uMºœhj8‘DÆGÑA£÷[¶ÈIK¥{Üê i»çƒÆ$ʧÒÞa«'ƒCJ:krÕ{©Ÿ;Jv¢$Ó®YWeBɾèïƒÓ¶8p$V²¦/‚-qW7Ÿ[?WNÙuºª¼>ø!BÚ~»*4GQEÔ‡³¾&’P4j࡞®¨*(ýN-¶Môu¨Ç%CQ’iÊ'HC™}Aøa£#2s¡ìÂ3Z²Ï‘Wš™Ê¸Ý(5VrBê¤2û*Ç~3ŽkÖk‡1rn^múÕWè;””{ýÕ8³CVžþžu<6<°Ž.C°^ÏR<¨fUS&×°´éßE8.°8&«HXèzMüÝÎ.&7ÿõds~8/Dl™õ‰­Êž#Äæý0oáðRÙ Bƒ´4Šü8L>¹QxÛQM è@¦ŸÔ @e£‘½“ú~”å÷dWû!žáj‡¬×‰øùC¨‹ØÉ6z€íœh£–œƒ.2¬½Ä¸UQš¯Uk!ØS#fŒL„=¥§\šV;¹Žó6Ö’«Ç©B6@Høèãú3Õ°É!šÐý4ïåB²kO|é:nN‘CrÁEÆó{g—7Üe„1.´Ì=bp}Òo/ïì`üi/6äÂè̯„òŽu«d}!-þ”›a’?øêÛŽJ˜ÃME/;;åØñ›ÎôÛ£ µVâb¨©8üÏ].5þPÙý”Ûô O3†¡ +qTM¿núH™ƒ F"ŸKv§šaH;‡þKËËURu‰˜ïUÿ4œÜêĆNŸõ¨òÊQIqp#t>Î~CC–ñæ€ê·Îµw^a¶ Ÿ%Òl:ÉÀ…ž¼;G$/öÉ©ð×I_ ii×µøÑŽæ… QtI]Ó¤Jr-^Ëçó5µM¼1º1¼î« ÃT®—zØP?[ÖÓ¦í <V¶íu×× pÄ·ÇÄlá*QD½ý]—Q‘÷Ú(ÃÅŽØÌLò ¼h0E«ãñ?£æ.€0Ðlcʳë6^Ï%¶wüUêsŒq‚íNHÅ÷U™=Ø8㪄LcQ”˜¬ÖI¼êç‚ÀxCNäÈn*¥~öè¿-¢ÈQ•z{F~ŽU{(ð¨Å¡º!Ò¹ç2ÔºA£#œsÊF(—fÇ`]="I%Ãähã|¼ugΰa,Tãiœ¯™Ã~þåy‘@³Û[¸’x®‚#æÖqâ'­¨:â}u;æsÅMRl/_˜FbþPãÇCO<~3)Ò´áýäòX’²RHT¤Ðüóuð1ت” o'i±Âu;ÒþÙlw4‡(^áøÔÏPõúøÌË?ºˆìÁøž.„äN0Ñ6 Úzâ†*]¶7÷Þ›œÆB“¾|† ¶Ôß ¬ˆk¯Y°³“ªùˆ—pK(v‚$~zcWBP¾Ý4mäátá‹n°x+3ádø8b@Ïÿšì×í%éV`”WŸù¶÷ i¸rN˜Ë´ßÛú3â€rã1Õt¦è—˨Ty#5üðÚl¥oŒOöd`oàÕ:nýù³^jã°€×”×gO ¸Ë«­’œ‚ÆLá׈ij«¶lô¼?3׬„Òû5šd±9bÅ<“ñ3«¥fÅ—Í›þœßâ³®ÎÌC™{øk*™=þZ½yç–! @u¯‘a#`9®ÍÜu90Hcó ¦h‰µ°§níîΦJOˆN/Q4$ rT>NDxb3Œ÷äõÛ‚ú îõjyøØý‡Øá™p›ùÿ½â-ºn£b¤ ´ÀHaRË£y³­¦Îç–M?wö×üçÁj¤(;©—G˜A‰çjäi˜)$‡ ø¯?]¾Î?€ß*ŸI8«²pççN靿£6ѽVºÅŽ›/E€ss´]Ój| ¡>œQC'7ü@Ùó,ðCYÍN€rI¦G‹lŒ$Á}˜Í@S™!!b£ƒªL´U§ˆö'P˜Õ–’QÂ{²0Í„gè¾sÜóç¥5›áôºÓCwOØ?›OE6Üñžgª8¯“ÀŠFG¹#§»(°[›Å”)¢Q²’Ò-~M­îX1|KòSña=eÏíæ ó¯£[¼˜dD{e¡éÁótõÿ+¿”~±¹6'O6°×±Ô™%Ò0!"nï¾ ³jovž,&øÄ ¬ûÞ`ó'²†N{ÐØ»ÝBb¨"'pzÊ™ú• ì ÂÀÓÇ­‡²¿ cö^ÊKá¿?Ÿ¼_A/]*_¹cÆÀ¡gÕÛŒ—÷‚)ÔÓ,µñaž²O1µ#é4p­LKé0 ÓvÜï†÷H¸hàâg-TŽøÍ¯¾xŠ[p °:\²D×Б&¤´‚¡ßüµ@• pèGìv:IâëpŒû`tG$–ÞqãûEãSržhVkƒ‹$†töµ*颿ÿÈn\´;Ç„„pP°Båý¥ ÖŒL\•fýÂÛŽDF þp²v>OwåÏÞî½ã{umË09Óæì‰5ýŽéj”ÓÇXÖ7óµÅÓ×4™J7;½F[Ž—¯p'7––?²0¿¬ÿíñ°0Ö—{Pf°“)¸êIòâo >qŒV‡;‚S>-Ê]¿Ëo•EÎC5u$<ë($‹ < ÞÓVØw¬–v“×/ÿí7H¼eøìçö98í=};¥N4Ö#¾t²ðpRVî r›š:ËÄ<”OÇ'ÝqfêUÌc–µIؤ›)Q~ùˆ0w¸^>V^ !&›@¤¡ ý¾ŽÆÙ™>ë½y›K¿Ò1òå¾å¨iQX¦<ã“Ì´Olâõ¼ˆ3|úz= ¸(é²Ì©µs@9‹œ}¿I+,éfÄåö;YFã‚§FŠÃ’Íàœoïw1óÌG"@‹§’«99ËùðX§’ÀÐFùíaÜ©œ\ÿþ@ÂdÔzÄ¡™pŽliP®ÿă腞¼Ôö—íß/'þªBXC#‚ÀE¾BúÂÓ™ï0¼Jãî Ñ¥j]xÞ(AlÑT“³!ûV`'Ë:¨ü/ÚB £œ!Ê\è™­r¸ C@V¨µ€Ñú1"ÄhܺBAÛ3|Ҋ㪺ŽÀº»£O•¶ÁID¦¦´dÎsǹØ×ÆWYœNʱ >Â_V¦y_ßu8æÂªó 4µG€¼ :stŸbhÌx'êÓÍ¢|«–2ãÓ¶Ï àxÒÄüú¼È~̇5ð~ À;§ü8`nEv;ì:¼4Æý× ]`ŽÉ2ÿ«XŸJ[çrn>«`:í¢œ'(É#NЭónòŠÑ/2ZYN?—ÚáKRÂ4ï)¦š#fl»ðCJ~r#5áMà,]zßmÙ *VþȰxUˆý*¬Õ¼Ótûöˆù-x“J•þܾp¼uAss& jñÓˆ}´Ä:vÁ[`„äSúd¤ûqÊNÞ°Þ‘Õû9/[ƒ>ez¬QZ^ª¨e“õrÕ XHÚD{ˆþe‹/úÀÖº»¶Ã?BéÚNü„KÝßsŒFGdõ+ór1ÎÀQ1åi³é¹Û–È'§¡8Œêªæt˜yƬžÅ2g¹ð`ȉó~L³ÿ2ÙK ƒùކ„ Q3§ç Ú‰)_2 qlíÔ¬‹õ©XÉGÇux A¼u.š“ì„ðùÞ&:…Y»å%dõ Y›!~Åfz¹ý·‚ãÉÿé©÷7xóû ýðÆX‘(q©L4VœhÃhÓîg˜ê©À®«ÉÇCcÏð¤`_ýOsLH<íª­ß½è¶þ“Hˆ=ž´l SsÁê¿Ù¯Z»ïI®Ë‰<Î<ùô[/† %V÷P¹A.Ffù,‰_çŠíÒkÈ*™Á0FuÕôÐAXÞ1w-º7Kv\Ód°#û éÆL>Œrá!Aíuz5ýAøè¼ùuêÏÈŠ)Y´…:å:ñÔì$Ù{ˆ)(`䍨 ¸i¬N-ÈôŽ…=¤é)q¾ôÄ»³÷PG-ó:H °í[ÏÌÉqIŽ›W‰¡d:êzÍbºCå䳨‹÷z!û)<û¿€ä‘Nè33‹æéh7æœ"j:εâçr<Ów¯6´yYÔwäYÄT ,“Uw¢Sê#½.} Üò-¢K0%3.B,ºGäÎÔ¸ú®Óœ ;ã3yæW¨ñ+ÝžT±KØ‘^`‡ˆè{4µ”œO܉hÁ¶A\§iÈŠ„ØÈL.säc 1Ýäù“k^ê þçá¾7*>îÜ€Ÿ¡4‰ºd&s”ãU4„}Z„wÿ2Xkò]þ”èÂÉOK¥hÒˆ˜p"ž5½pýªwÔ;Á¼<ÿUîåF˜P:ªÍVÔF”D´‡Cnv®(:öªÎ@ɜϊ]Mÿ]¡Œ`*àFdKDÌ7sKÆ™ß6½´'Ü/wç&“’YßœsXrf=È•ø\øwP›h× YÒanŒ: Ÿ¿ˆËZê|*0 G`þέ¡Ñž'“\HÏ4æØhŸ¸¥Ïa£j|òV É´E è#;sp]Ø* —äÜé ùm=úW'85ê/¹œüe&ô•·1•útšréòv]vtWYíào†d´ècî\Ûò2ü~ß'–ãE3f P6¶É'«£83ä dšNJî¤À¶ûzÃ?E—¿ƒkûˆ/ü³[:Û2 (ž˜É`˜å”, ŸÊý/åxO°ÿ®B<ü¸Z&ïw û増ÕùpK3ÞÕg!·› Ì(gãyÅî}Š/Æ~ƒ«ßŽÆYs-,žÄÆ|ü¤›ó-…Ñr΋Xî«ÖY‹,¢Q`©Àtï­ØƒÛ¾l,(4oÇYSÅ”ô½(¨S½¤Lðn‡ý5ÁдSØôt¤²‚fmDçj\v™œ—ªå€bëy鯗*CӻĽÌå×Ýþe2E›ç}<57§ÅÖ~ɡےÏxºZ™TÉî12î$ oàž»~£J}ÄÏù¤{ŽÈ–¥§5<úÀÞ8Òó­ûÛL —°Æ`mf–:qÃ`­—kÿŸáÀß:ðTbØ»]$ìX0S×4”ÌÞµPz÷‚‚÷2¶ný³+ ù«ÈRfþHÚÔ*ň‹ÃAeÌ©áím¶Ñf»DŒWl7ÿüÉFN«/o] C$ÂQ3öï^'Uú¯S/|«=eTÙ¢’O¨{6Ïj~«œ³5šÚÛé½ÞÓôæý÷  &Àh(2.(n˜+…é Q¥LÁìÎ,[§Å©*wðÖ+Å„bI2&’¶É©[6».V0;vš:çšEžáÜ’›©lÔͧ»®Û5ØéZr7úm³9j#)†"q—òE ¸$¹B:Bje6röÙýÁM‚íß³ÕqRüIë@w¤wPÔÝ°Õ 4ë6ÉJz–V¿[ÇÙÌ÷gi~‡c[ÝÉz[]KEGhmüòìõSóI¯9¤KÓ÷×ÿª¤]Úɵ²›eùÆ}èÖtSÙz‚—¡ÝwvËîÞéT±µÇÄ®ò;ä<ž²ž:?ÿÜn—A(c.ˆ3ëvz.š¼ò|µÕ9ïýK|´ˆ ñÍŸ;šÌåÛË&77„߉׋•cS3BÚu–ÒtÔ±ŒÅ¼fЀç•$ÿ²T>–>._£uM‹l–ÿL¶2Êvõ¹Ö{çòójŽՃNæí¤#G І™×Z9D€»ÇxÒc*ÜÈ¿§‰>Ó§ÉbÁç¹å“IŸÕ-—ÍÍ›€R• 4±5ó;×´c‰›š+%‡È¶‰»×ZåÃînøš_ŸmU¨®±ãÈ,Só„Ó|R[Y—D”ŠJk˜‚Pëí‹à“?v\xÞ¸B{ G¨Äj*šù¦þFÚÉJH¡ h!F²!Œ~¸•Šý׊23¢{„¨ÂÀ¦³H_~î宄£'¾|¼0À×—z­wáG„‹óSZS#$KÒ˜ÛgAYÏ^ЄPFxºÂgx•oõ¨n>ýK?Áæ}õT#ƒ]^ßµ²×žšdãîqÀ =ÿi?š9o®ÇîA ®Yêi~у°Æ™§è–ÑmõI“ùANúô´}½Bä”Ù¥R«¦§›ŽnO9Eè¦ÐÛéxl8«ÌÌÁßÁÓaŸú=ž¬üåFv£ýu†oÞi…ùq©åý3'òó¹Ûïlç©ãÅŸÔˆöÕ‚Iq¦ášT"œÊ@Å´ÅB‹ìy œý€®9 Œæµ®kFzÑdà‚¬¡×-B²‹*þÉFêÞkZb½©(pM¶pÝ_]…XªL‰Ö1¾3·ì=œxcËßEaö D²a‰j)ÑI'_f`¾)žEo/Î ‰4Ù˘k~®æ4è5ˆŸâŠeGºm}píOæƒe©šYßÁ©î¢œê˜ÞÃß`»1GyüÇÀç:ÎÚª‚êr„¼S=ë@Èœ=‡; EŒ(5—iî% Œ«Æ2ÔPIÔYÛÇ@Ç:7ÆåfÔ½…Ä!ÙÁãì.ž‚*â°×ëæj¯êíá:í™ködi,K´8 LûÔ®Öwª,œc_'{dÏÛñ°ç{Fœ3`LvÍ(/v ¸‡ñrõÙ dérMºÀYÞQeš|u^q$˜ýÇ£òº<!v™´öóBBƒÒ¸1±oóš×QžR<ØÎå­^}01¨LxÛÒ‰#…_ ûe.AÀ–·- g¬¤ˆâÓcœ¥¿’ð‘£êgÊâ†w iÆíí d^€7±¥Là¡&>Ó®ò:ù OÏ ²„ñ1"ÉÉÒÄK„CWa[&ê—¤‘ä÷PuÜ›ãQ@YZsurveillance/data/q1_nrwh.RData0000644000175100001440000000040712376634041016200 0ustar hornikusers‹ r‰0âŠàb```b`bad`b2Y˜€#ƒ'f/4ŒÏ+*Ï```É1/_dÀ¬PšÊi‡²Ù F‚iV$šl5DŽ *Æ„„™¡fÂÔ0b± V-±æ‘¢—*ÇÁq?#”f£—ùèê)q/µ,^@qò#ËÀ: ˆ §Áv耈/Ú€p†*= FÁ(£`ÈP}Äèà…Âgr˜ïæ Ê{”&"k^bnj1¤ÁÇäÈO*N-*KM)*.I,I…rXÒŠR ‘$ŠJÐLÎI,† ª·ÁMє̕üt ó½†w½ surveillance/data/influMen.RData0000644000175100001440000000274312376634041016403 0ustar hornikusersBZh91AY&SY¶#÷ÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿоêSÃÇ€zÂ¥Fši“ 12i¦š2dhÀ˜&CM440†C0Œ£Èˆi 0&¦‘44i†ˆÈôM4ƒ4bjyG¦ª¡=1&¦i…i¥ /dZÒ“B …PQ¤ž¦x¨¨ª¬®)dðÑh Úâêòû3 #(Fn¦ˆ“à Mm­È„­à€pqÖsèêìPï¾òˆôöòøúùþÆB ï U ø‡ˆ‰ŠüÐÆF¡Ç)&ÇÈHÉIÊJËIËÌLÍ›œžŸ ™¡'¢£¤¥¦§¨©ª«¬­®¯°ã²ú6ÙÚZÛ[Ü\È]]Þ^ß_à`áaâbãcädå7eæfçÏÐÑÒÓÔÕÖ×½úð~Æ.¾ÿƒ7eFÞÂü–mÊýÍÿ/¯ÞN'!Áš:xþ$ ŸÔ*(¿ßôxpÅB$HÖ—¢Œ“10ˆÈžQR,QQC‘(E†ËŽ”¦Ë€–ØÑà`N€ì$‹€„3ìå­Doìî>%oºr†Uùô|Õøþ4ÓÔ²$?ÅÐð¡c²èBz¯E©ñW-„5 /íµayèPIË0Å@àHfŒ tÌÂ2’f^²$0û¦sÝ©ÛÝ<ãÖ¹€Hkj" 1ˆA! !0I jú‰H°RE’õ’¦*\ƒc¶2KYh2(µSÂU¸{!Ä–$†"ó½°q \d ²’@¤$‹>”€VwP… $Y¸ME¤eUP @j‰Ix’’,AEQEŠ˜š¥TXª(ªä4Rª¢Š*‹SE"È¡ì]$„|ÚÚUT3wÚKrj—=ú“8eÍ‚¦NØÃ^ý¨'®{wÆGߊ##â`WC]wâŸ?>‹×Ë0 ÁFãLX80ñð(œ„•ÔFCÈ8zÏ8Á+A @1•¤„¡à8‚0cÙ˺ò8bxpÚ !Er‹¸‰AÍjU7 (,IP) }¾Lx@Á") ¦dŒ¬-BêI’±@¿Bã$±€ÿ2S$ eµsÿrE8P¶#÷Ãsurveillance/data/m5.RData0000644000175100001440000000032212376634041015136 0ustar hornikusers‹ r‰0âŠàb```b`bad`b2Y˜€#ƒ'H<×”Y$ ļ@|‘ú€‘fg€^ >4Öà˜ˆ¥Pš ªŽJ2—™zNh€6yiŒ‚aì?F‚Q0 È úˆÑÁ …Ïä0ßÌAä/”Ö!k^bnj1¤ÁäÈO*N-*KM)*.I,I…rXÒŠR ‘$ŠJÐLÎI,† j€ÙS2‹ŠòÓÌ òpŒ4¸ surveillance/data/s2.RData0000644000175100001440000000032612376634041015145 0ustar hornikusers‹ r‰0âŠàb```b`bad`b2Y˜€#ƒ'H¼ØˆY$ ļ@|‘aðÆA`­Ý3;pŒ®†‰Í U£°èeÁ¡Ÿ»ˆõ?±æ wÀÇ08óÒ(ý‡Qz(У` @õ£ƒ ŸÉa¾ ˜ƒHO(­CÖ¼ÄÜÔb C€Ü rä'§•¥¦À—$–¤B9,iE©…HE%èF&ç$ÃŒµ@‚ì)™ÅEùé@æ?å¥!¸ surveillance/data/imdepi.RData0000755000175100001440000223622412422250502016071 0ustar hornikusersý7zXZi"Þ6!ÏXÌâ Æïÿ])TW"änRÊŸãXdGŸã>@j½õtA©°”'ݨ$vî}pI&{µÄ–×¥e—ëUñõC¦ºl bØÅ‰EŒ˜÷ÆŸ³ì¯w‡õ¤Â¶³a”™‚/ïîÜýîÓãã\§8­Ò§"m‚}H¢cÉܦ#Bg*ìXá,äÀaV¬CÜžù8p~Í“{9,/6‚2í>ZÑZîïª]íПåÚ Ó,z¤Ú&»ñå>]ÖßϧDzÂÿõr0XÐ'«$& >iå&eaÌ>(‡ÿp«ÂÞ§‹ #¦¬Mîñv `¯žÜ ¼xèÕKZ°;!ï½¢T_èP¦ Ù[ž­}j«wpÚ¥vãÍH©uÆŸ0{v’Òç¼47øY±Z¥¡÷–M„ùÞ#UoTx0‰f à >¬|UÛî¬×gôu†ýg‚AS»u‚3ñ˜'pü Äב±‰_'1çËåPtã©OG?qè`PnªÁÈÜù˜iùˆ;¡±T”:JŸð¡¦xËጂ³uØ{‘År(´‰¶ÇNnu“®1& ãú2Á?¢è€lèί!ä†YFèfG iQ Ú艠ûzTÑžÉUšÃè1ý+X3w”¯ì\‡’0ÏT©­nª]„GÉÖí3L÷÷ó˜ÏP'*ð¸xVÓ´O’ŒÒå;Ÿ¹çÎçÁ´Zfµ;$ÌiáB¨#’ß èÌa0Žf²R®¡Ðß)tp!¦™3 CîdÄ m)ö“‹ë„ÝSß&«q'+%ý¯@S=ô%ªå¶å©D™»»¾‹»Kmö²'žØ­‰¥&³wñè¡6$ë‹Ú€ ‚ßè-ðf¨alY逞Uó;ôŽóâ$€]ë;m*¢ŽMÓ¤Œ˜ Û¨Þs_'/«‡ƒM>ÉüÒðÙxOLV#¥r?‚ÉÝ¢Ñö8•ÛÃð/]ü>áe#¬xí× £*Ù¡Þ|$Þ2Îh1à h ¹†}uO†]»ãaBÌî7£ž&^l<]Æ™ £k¡(¡ñQ“¸ˆ‚Ë衺¦èDGÕ]Eü@ž=Šê+GõÔätÒ®täYá<"’Qæ¶ùh+ŒY(KåäÝ âí¶éB÷EÝ:5z¬«S4PcÖÝ|Q(0»­“Ds×nˆãÆwD@ø ÕêDÓ¬Ðʽ473ÊÞŠØåçÕ@ùe§Di î¹£ŠÂaA†=už§ÅLr ÅøñÁIùÝùúbîÒ¹Qáf+|³ëqÝc# ×–³=e÷Õ†çÜäV¤i¥ñô“Ð ¼TŒŒ<µ¸5¯çR ¢W¾£q >öÙÄG]´Mfª ÎV¿~Ôº¾ ä ŒxCR-UâDêkÀo:LˆKqµ5µ¼…µ6É|•Ípb`bVVùé5åŽp]ÊÎ';6;Öw[Üql·ðo >7”)vž ÿÿ·ÇÛ.A| ¬ñ“¹ïZ(XÕÔqÌØÊóò!Æí‡¼·(« z³»nÌ»&æ>ABø&ñAƒƒhùL¾ù'íú¥a¯Ð'Ãyì| çdñsJ¡¹ûì²°`,V4­%u†œŒjD[lz·Â,æ\ Î?åJ®‰j¿H7‚ï¡Âhæ¾ â?ƒñG@bdë©îvGx»§†’ãbýþ©Òö´+b Ê«Jpy¶ngv±Þ'w”º!u Gßè Bà¢þ—½µe|%INùâÆön2©ëâß’a†j…·îV¨XàYŠ`±ÞKzûê…fCmÓá±/’Ô*6 jÑ9QÚå®*¶q¹¥É½þ÷Lu…ÞÚC¸ó_øöï¹[sàÓð伋cQAĤÇÎ<Ë~5™®'^¬`«÷nbtõÊìcm¹ mš­¡9–ý¯'©}^‰u¢·”ÝâÑÙ·}¦óIqŒç>hÆ:ñB•k'l¸ÛÔIqâtãË7 ¿"˜MùI`K ¾dŒD¤ˆeFÜp!ö;q›âkÕHdŽ­!R³×õžK@Î ^¢2ÿz˜ªÜ|ѧíÍ%{§_¿Â‚¬PkOñ΀߷ðùÔ4+lj,Ð0ÆC}âYð~³#ÙÎ#,4ÄqqiŒ%5ž“|~-Ø’»ü…_ÜOØÍz-Õ¿Íc¦;ÜÝ»ü<Ú1qåP¥ä$»…ë Òpc2 Ĥ@ìZJõã\éáÒmÈ[‘· Ì+M•m½Ê*·¶£ ˜Z¹æC­EðÐýz;êåÔäÜzïNl ‰Ì7%’Ò¦Õ(À,RL¦pʬ`(¹r‡O”0Ûa68ß‹¤M¹/efÆÐcH2¥öãßöÔ }¡²2 ¬­¿6<ŠzÛ6±¤«x$œßýÕÅ/¬ddŠŽ)ü__†ÌP¬jpÞb®kÖÑ®&¯qå´¶ÝÃ?°¦‰ã#áIjð0Å<%ùðÓ©P¨ŸRµÉ¤­a̧}>=4W˜’‘Mo+à¶±á…qŽ€NVÈ%H Y|ïöZnÛE»1΋“68f3ÉÏžeyCÀždUmÁÔñÇœbRc&ªïÏS84Íàv{€†}˜Ë'yüC»Œ–£œmGrËò Ú¾kËÚ/Ç€n€®Œ¯o)–$âÇúÓåÔÙ#×Õ12ÆÍñÀwµ9¹€:Òz›HÐ1“Âê*ºÊ‹Í•>Å1íÂ-—´B Í‘1§)K[ò1W÷¢˜Ý¾»²vÊt¬U2ifa™Š]ªÞuŠ *¾P‰|£–¦t³ñ@xP´)cfh°jͦÚ+ÜWê2_{§3Òò@:ÜÒ>.Çá»ma -ì,ŒoÊÎ ·G,—$•&·Ç§‹‡V7»TÄf,‘ø¶®Eª†ÛòR¶¬aÝ >®e;šIÙוRƒö©Çé5 ¶eßl™ëÃT "{GaÏ„^Úoÿ‹–Œ¹ • ‘q…†wÚ>0Y¶NÑ!]tmN^šlç'f¶%æÂ%Ǩ•uë¶Šø ¤‡Cš—ú»$>ø.´³`ÄÄ!£°9KWÞ"³É‚¹Ûû#j-¦+Š„ûÎ ÁUc}•E_œó×kóæ˜uÏú.õˆ˜¥æ•ãwšÇJm¬ÙϽü) íµ×¢TNòßÒ&¤ôq´Ô‚†n8ü§}±õ CLfAĤbå‹óp¶¦6Žƒ+äó¬r1}H;ýЗGfÏŒl¦CÒßš鿢løEj¸\þ(s\Å… <ÅácxŸÄ#üÓz‹¦€÷ÊÑÕ‹ªlþ©Òº®[ÏNÉÊõ·³òuV,4aLçPò{ÈÄé6Æð¥Á^¼€Ö3“½cç›™5×ùï,i()uç$Þ±Ÿ Ë1¬¤2¦áô%Ïàvº“På4"óý™Æ¥t›=ó.¸y€EHÜëTˆ£Ëï3>þñw»»I5ÒDÖž|Y6j«‡=êug¼;ì#TFövï§cÒÉûhfcx%ŽQÕ&½¢)ûõ[:XŠÊÄzJD†òÝBåxžOþ†z}ÊÅ’tGw0‰˜C€ÌØí$¬«´ò=QÙß{î¶–,ë%Y¸kk,l[HNDOÍæk‡|~LP‹\~Ë2”ºƒ ðË›WBDgƒÂ^Èl…&Óü—[îJ ªá0ÊPDާýëî“t¾KÕ k$‚u~+ΰÔ©;¹3Çýd¡ñm;&´ò™l’ª-±¬þ± YK\,+š¨%k,ƒ#qßGnnFÓU‘ïRâ˜Î;X\Tå\ΈÚkA‘oUð~V9lëØ~5­ñ°%Ëk솓{`RÚ‡ŽD˹t4ßÕiŸ. £RFÍE^ëâS³ûá^•hÞU?Œc‡å¥ÞËÝÕ.¤ Æ2áÞ5Õg”Ôw>Ïq˜Jü ŽÏþþý K…Àxÿ ‹Ãbdw«—¶ÏÝT¶EbjHd…w[á6ìœfÜÏÞJhRŒ9£‰¼Aü/lD´¦õøõ çÀcò`OaãZ3¥«jShM9ºW:þfÜêèì*Jß>U‡æ™@éþ|¨b³ž=º´ùtT ùF`߹ʅàÌÛMùýJUOÅì1†‘¯$`醴ˆ§Ùþévý¶y®…ÐéÒ¾ö~­Û¿öykB ¿ßõ/S©â²w¦ÎJˆ“‘ZQ÷„GùØ †èv+P®8& :ÌzPùk¼XúP>¦q²…‘ìnsL€[·ÍÿÁF­ã“˯Hx][”ž $c-§AYD#»K‹Fs×i‡¿ý$Û_䤫rÑÅo0ÃîÌßlë6#o±É¶çášéÑBš²ÅÓ¹xìcúÇœKä?ƒÂn€îHÂg˜W“oáXGºì‚Ç5=zolh ;AϳQÑE¾¹¨¸c³ºÛ‰X¥Ž]W÷ÒŽX¥×€h€ ÐAãÁ>Å-Ëg|wia¤à”Û òèÌ÷3gݳ˜¦KÖê0²Ï<°¡A'á`Å ðÒþHyÉ*ZÓq»Õ±=5ŸQT y¬cp[œ`ä«åúòì!£HAù adéáD~þ«Ç¢œ,S´ÞT žáÞi¢7tÙbŠö‘™š²Ê1¶­±í¢l]l'»†h¹Ž §y槨„;Ew,ªÝ3͘n ÷•uLJeÆF›²‰^¹…zƒí“¤Ò¨s¥( 2O@; ßÄÐ4¬Jú›W]~A#Ôôø¡²EØ6íjû¾ébþëUœ¨jÞ_­¹í|½q–)ðP· oÑcT‚x`–J ;: èÍ,Ýÿ¥‡ õÍKâ ym¬Ùü~£Ã¢0ïŽ& ¡–Gûçò2C÷=MŸo+4E2n—üèXGÑ¿ªÇ%¾L™a êèšZ£˜ðÿ0Ó m´#÷0L¡c1¼ˆJœµ9Ó%‡Œò@eÑ °Ò¡ A^ ¼†j¨9= |~ÊÑÒTißüß–Z¢ÛtTR´Óúk+ÓÙL‰íѤ)býr nFÐûmƒª ½y=“ÌL¯s +Dħ¬ÁÁìYB bç¸$ oÛ»“.×’äâß´1LXígƒëT°ˆ?¸L›#˜Éœ²êÊ{ÄmÕeÙ´€mòµVÇ?Ýÿe »ºø®_kÏQG¡.ÉeÂìHbliS5¦¢w˜vdЂ¤"w áôCØ^½aB‹YvËñøsÍ2½ÈcËLvÜØ.é¹åw⌚}è-49[K¤Ô&VFÕù9’²»ÈcweÞfÀhOº@Eßþ„ÒÔ ³Méá‡+Ǹ®à•Œ»5Üâ¬)üüGbð»;Zפ/æž{˜YC¶;cî6ÙfŠ7¡Ð1ëkèýK¹¤~êí ánf7;•'¿lâ‰8¨ÿÒ˜†‰®¦öÎÕ̶fsKZ2¿N™Lžµv$".Ч•íVov³üM…IýièÍ/Ðù§ÁO%{í¿Âs-+n9±±þï"Árí­²‹wIX`ühbK˜Oã™Yç‘Ý¢YOp*²’Îßµ$‘éðØ/<‚¾äÅ•#7-€à!ôÂÚÏÅû° |ä`æò¿uÇŽ¾Õ©õÎúü—k£ž8Ý¿I¥ˆçGZRžVmMiQ@Ã\ÞzML›ÇÍÔ·¿€î%ù ·ŠúÇÃ.ÙP”I’ï›…´Âž"wzjÊ  È/«xís³­™mxÔQæ_\öŽ“€ï‘,¡÷”·ÈQd•\¢æÁÕ@JQÜè)Ë@žž©L|ç•€LÎ÷27¢ÞQÖ1€_ð×|ŽÈ´f€ >ÃÄ“ïÓÉ:«m»$A­¨âö eᦞéƒÈ9,Gž„®Ð¢©/i8ô·î׎Iø›âAœ€¥Ÿ®Æ5PNâXµÀ_ºhq‚æÑ-ldä."m@PLº¶¢£ù1xÄ7É™ºÈBÌqÙ¢ƒÂ½h{Æçy`Áõî b鲃RlAÓ¨îÛƒásN ¤ú|1¼gZ½Pûè¼€Ó"¸™”S!4¤•€lGÎQüDaÓ¼Ø3Èéµ Læ•8ŠRìïKôÁmÈZ8¼a7[T5§né-JXê ¯„èîÏ&ð±ŠvVôOþ¸Â’f”¦ZcD­ š;+ uᣋr ÔÑê>€†¼SZW‹yÛøŸ•m = ß,I³á"<;Ü&@OîðŠNž?Ž€N¿ë†—DJoðQé&ä]ö4 m piª›-ˆÜÜð’j€‚õu weþø‰ß¶uÅßbÑÚ3ÿ4)/åx:ÇÍb„¤f”ôFTבݠržü°¶Ž6 –\  £o“ޏõ‡¯°Á¼¬œ”…uØd&LàD±‹KbõÇS”ë&et×§íûµNµ0Ýi­u¤@žÊY¹þ‚†É~ܯÃfyHAjØU“AV¤åÌ;ü¢ÑEcƒP–d¡3qù}KôƒÑÅE7Ä:„G kßz”ø×˸MªVš¿ÁttQµzûÑw-UÒÀÞ]'‘vOßň L|Ó¼«à#‰ ¾«L½þ-›áïø—Ù›džeÁzì‡\ :ƒ²Q’Â3o×*›³9}cä…ã‰'ÙòxC` *;sõšV£$Í~µ5çA²ÕØþáG'ý÷þꄨqüýŒf-9z_x¥§“œÑf#éxåx^ZÆÓ¬Å7,Uè2L×  ñÚy¸ƒu`’/bo„ÙªŒä鄨WŽL#Mùnt*K‘ömk›#¿Š(õ7 ²z…åX­µä Td&Cá7!?º™¯‰ËMô‹üߢÿ“¿±h,ìkÓNhYJ-,$:PÕ½sA™Åýo«öŠƒlb)pó»tÇ~ôÈ;]<§ãüЬ[¨4!qç^2`ÍeoæÅôŠð=™ªýÙŠæ¦ ƒÉ„¾i[¯Xó²DW*F‹E<㹪f»J C´ zÕþðúFc¼r^^âøT”—™Ÿ[‹/úÀ¡»Š¤;Á©}ttÒjüˆºJ·ÁççhÀ¨³ÃÇõÔ“ÝŸ{²&—yÌ6\º‚Ûlƒë‰Ìç[(¹í²úuaÎÓÃÜÏeã~*KFÂÈ—ƒï‰8h¥ùØLp4o )ƒU†3ÞÆ·¢ï;/î`Ã.êaöÈTý1"ÛÖ›2†# F@x^ºÙ3eÜØYÜ”>)•)»\w‰,m€÷ýìòìGñ1ÚÊÁå±£UÏm]‘$eˆazG¥¢wÓr owç·¼+ß]"M“É‚VjB€=U¶n)Õ(úBW= \u˜·7VÔ¢:­×ûü0Y?¿ê–¡>°:Yðî!ÿîë;¿÷·¡{Õ×úݧÃr‚ÆaZ&^¬Ã²³›Î:_¾.0‘ç—(NZžç&éã 0¿ËClïèÿ£Y ;+©Î·d§á\)ÔR]~ôÍK“LØ­8Žq DÇϸ&›í3mÛǺ`æ Z¡>D-úánÍ£ªd!ðÀ•¬“/íSá(ÿóëâËÍˈ¡ •N«ýnÊ—®£Pî&\ð÷Sæ#¯uõÇ@£Ó;ß I^,L#íÄ¡ÍtßðJÃM›òoü­:ÖöfKiƒÙJ`pð" {\Ó@,Ó/æça`e ¨ý9´{OØ6q1¿ÿUÚ;²ÀÈ  ½†x3ÂÊiP3&$:7‘‡÷ú`‰¤ïaŽãžDÙÔE7ì×=u裻[W¼¶>+kÒTÃwå¯B»ûòáÆ¤É}ziîÄ ÿÓyÄ,”•“M ¾ §Cq~®±_TUY$*¥öH½«ðÕÚma NYä4#Ǻ3£[1$€TbxŠù°ŠV¤y3µÖV2f6`j]àotY-yБ±%3 ðç¦<õjòtFécbõ¶·Ñ©«ÓBÐÍIºé¡`#£7‹õ@ZÝç±RŽüº/É'KXz5¥^Ít«ƒ¦„2†ýqIŠæE™\ã­y²ö·ji©Ý™à#uèž3ãé½®“«™2€â‡Íîð\Ý¡Åu±’Þ géQX’WQ’ÏVã}H웴뇦!’ÍÅ­&ΠΛ®øÝÜ—‡o{Ä}¡;’g å3Y¥CLxÔn¶þ<+*srÐú]Êç¢óP³«þ*G·m¸GM¦Éyï•i&›ïéKO6ŽÌf©–^êè‚¿j@ N0ô`—¬æ ã:¢%Â>ŠÞ;ÌÙù”H·ƒeHü2³ÝÔý3°Q)Ü)ì™2Pž=SwØFÄÎÔ)Mt4”¢Š–¤peŸ2ÂÇ™! óÞøïØöi³Øãþúà[˜¯Æmô/"+j¨ R‰Áf¹õ×¢ aš ï¸K–/÷a˜xuü#õo8¼µ8’½˜—¦´IDA€HS˜QÝù]ãÇ®+uî ïò(–«Î»ê,…^¢ M}G;y©ÇOõ˜²Á¶Öë Ø#ý­bûÓ,Cû©—uvŒv¨a:χ†'‰‰¤ÐU$x€‹dM®"ÇâQCô¿Á2!^bÎʲ@ºê'VëïUªxø“ß3ùMF0ÄLù2Y§›U_ħÄánÈ.ý=ˆ,"ìë#±] ½Þ g*ßµç¹<ë…Ý}ò™Ÿao{z¾4·HÎ~˜ŽºÑ¼L„BÔ…Étþw° ±ÙZ×±‚à•,¡Ìø‰†Ÿý ’fëÐKwt;ƒñÒü{Ç ‹H©µ9“†ÍñEb4¯……õM‚ÐÙHƒ* OË›¢°£·Ö“ºýN-ÉQ…&¯>c¾xCÿûîH =éw?0àÊñMƒ ÿÿØ<5>iA[¥Áoààš52Ó K+G®Ï–N½5ˆÜÓ¶g9·€[“I‚î÷´›˜ e<‘Ú@Ôœ¤Ã6¡6ñ,*f5ž'ÄZ uãr•¾÷;ž÷´½Áô<Ä&YPqølºgÞØ=Ï ‰¦íáëûK×âXC¦ýÔè(ÅŸ¸{Âá™=Ú¸þbWûåU&ú lšRW ³mQM5ülè$í°1-2š¡ÈýÆOô=‚£uÒR"ð;w êW-ÞLúNî*…aíµd’È ÷TVÀ_°ážüìï3–º¼@õWÑ£M/Iî+™‡y,—ûF·\,»÷OŸ2 Äc‹}2 ¡±òÊëX|04ô_¸õ/XÔ¶û’†¥o£MÛïûÒÕ Ô9uvL×% °™)O—5©ŽùÁX~{r!m2ÉÔ3ºœ¶‰4Ivç¶ ¤k³âF”ÿE$b…(cXv=" žï'©W÷Æ~h‰^Uæ:ÝÂrùG\뚈Pl¢ôÁ g;of!•½}z @‡˜¸^O»¹&0xÓ™_}Ñ“[v´@…;ø*±ï-*·¯[*׳2 |ë}ÚŽã?5ÕÃw eà”o‹ójDc5Øb˜×HŒ±ïé_÷±EUBeð xåìdtQ¦¬;/PÉÀÅsÃÙ@UJ€ÑŸ5q€©Cá-íõɉ…_Z\"}}Ë ë3ï¬O½}M ÚÕF™ñÆñˆíÕQŒ¯ùv˜Á|~$~BfoäcäÕ¤%vl“ S!,1œìßÌØŠieqÿÒŸ[Ë~Ï£bÊH 7úýóSõ”vs«.Iœ§9›^]ˆØvnDS¼Ž]D"o^’Ï‘ UÈA{TïׯõðmÕù*Ѥ£ëÀ\¨ÂŠ®ý25E“á9~ÃÅ\öOr8ñ i´«ïk†f-„ƒ-9,^a:*P2s#R‡)шR$/ŒõYË‹ w{b!'®žäê¯îïä#ð|4p¶½rŸ%Û;ÙmΡ:UåO wÜ'?è¸SsA™N:™v-ÿö¬¯/ Sh¡Ø1Ùߌ ÈâUøàEr5G4éó]ý=#¼×è-é>‚®=€m!º}0qÁì¦æ + 7 dÄz2e,‚ôþÞº…)™ÙT€#?wçÐá­F­z¶-˜ÅuKì‘ÔR2ÃÉœž]ÓГwR¾TþKè²P´} L%5C¯z^òè(ÏlOó}î!jJºFVx¢(³ѹY!ÈàxK×C<ù*“Ò‘‚4‹¢Ä±BŠâÔtí‰ð-[æùý;ºßÔþd[ ««Už’o?,ûÂð¥ƒæÝÍgó‡³W “½®í•¢ynÄã|©e³´ Œæ…bØð²e`Á¹jœ<ê;G<\I/äöŠo˜j[eFrËÞ†‡DtŸú6¼—à Z(þ™FÏwJÚâٛͫ­”¼p¾±¹0¯4öAÎ9:Ô©P4I¦™a¿>Œ©üÚ¨6˜»vÝ1h³I±“ÉÓåF–ó,M¼ñG žMÞÙîrõX`·$0³ÉÃù.Ÿ¢qNÏ#ü£öxM”Ÿ<æ23Qæím[ˆPÓ'; ki[_(þ‘æÏQ·Ž*J»gHÖvœ½ÿs^³ý2«K.Qlz=e¨¼«Ð ½ÖËCÿòAÏܼQÿ̇`‹gcÞ–xyÐQ´Âéœ)B;À‹2«ÍÞ½JsËÄœþÁÀ–̘cñ$9Sa:=ö^yèÜ9Ï3€»œjiðuãýùLQÁR·¾1 ‡ ñk­ ýeyë ~‰¨TD”¡MX7çqÛR0ºo §…(ÂÚV‹Äg^÷㟠~´‚äMåêÀ†!¨BŠå¶N»×¤nó€üèžÌ\EÇsw µÀb-5¾T¦Ï FiwƒïªH?$&Ët )<ÝáB‚‡©šJžxhj³o~M߇(ñ:%¼ªß¦H¥!(X¼ÊŒ‘þ¶¢Zo—RÅùÃR†;E²‹zÔNˆ›Ô@â.\N_ö˜¡Ð#)ˆ“Z“ƒ*êܲ'@bnl€ÌbjØbô9ý~µaWÞG>ÂÄzKÒ ÑI|xº ñsþdõËá•|«{ë=/ÌÓN¡zÑ lI­5 }ôLW´˜à´ñ—uv*áÎØÆ€–V§¡r£?²KßBWíÓaTQ‹1½–ØÏ*þgS*ÒUyIÚÛ€%Ÿ‘ÊDD™0«ìQX;\LF¶sóY·´NÚ¢³‰|3^Y‡Ü#ŒÂ[îl¦(oÁ~²ŽìbºŒís%rаþ4¨>܇Ù„"šM?>ÜÈ«yî^^Ìë㯀ùñ›;ýÅ~ÅSFŒ.5Ž2¤½™²511â–t|<¡ÿöú&‘¯æZ^]¦m” „Ú®.úñ·!øÇñßéB܆š[ Uì~­-eÖŠ1ûç!rc>ö*Q&§ª»ÑÌ 6¡ fh òEƒ#–!Èx¹‰¨uM­ûÿf,v†º3KÙÍ\ÔS¥-Š¡**`؈F]ät‚½zzô¶Û.mûµ;=ï€/78F=س¹”øV­4FÚNU»¨­ÀçÕå‚}Ïï`¹%žât67Ù¯?pCÐ&Ø¥¥Íÿéë¦ÙH œuÕhO±+ðkZÂï¼Ö)ºA^³lר™}øp@·%“&“æÂ0I™E’+òš–ke×½eu4ß Ÿ‘*ê,‘xó¬GM~æ:š)Îó:Go¨®ØZÙ4ŠôÕ»vk]š4wÏin#õ5øî™erÎ]±‡¾_…:3ÎÅB­Î²¿MvÀ£ø ÍÆÈ súXÑÕ³E˜Î©³tÈ´ cw‡›ªB)£¤×ñ`óÙÇušâºš«§C³q½Ü+4IH= MÜ)#…c67&±ú”\‹Ã-‡žzÜÕGŠŽ6°$G:ÌÆ“ X§”|0Ð4kò^–ïµÂƒ+Θ8²g(îI6:® 0D0ÅÌy›êúu~š°Æu!×.Ù°=_Ó ƒA­Mä|$©kή“xBt…‚XCèÿJâ1¾¼\A™¬Lg0¸VQ«ÉGÃJ.ŠÕ­6þùæ ZÏó§ËÚ!vÈ>Ê–1#b#ìúzÛÔË»¾cö“ÏBkVé,Ø ûk²GðÑ?‡Å 5Ïzñ1 .™!šÛkh²–XâÄ Õ©°R]ÊFB^‘•2ž e’d”/ˆg׊]Ϥ•ˆn<ý¯¯7N"RÉ º¤ŒÆnó™Ø |žàZÒ¥O_·u+f£pí$®ÎCXÅΉª´Ú†e£ba5Ãö„¥.rí¸L<|ëdÖ .7ûoç,–yU8>è¼eª@Šþù‚Á/P8Þj…3WéPÂ%F¥d–›­,ŽDÈþ$ ž'²ˆ¼ à,UôìNyNaµ™ZnÆEå,$cyô¢zfí9]Y’•~7´ý»ˆ¶^ª·Lé™p¿»ø€ŸBOùIfÄ™•~áé8•¥ŽLNS+-$ƒÍpüô6®°: Óê…^°„$ü6 s”ê€ %ï68ô_Šè]*íòâVvH@)XMSJ´ª¡ƒmŸ˜–cÅ-c+Éâp]`Ì“Õå#ïz¢äøQ²¡Ó2Y5H©u½ùŽ­€V¤˜Ræí¤ËŒ,H·‘µ©›B‚çôý§–Ü ýÛ‹¾è·ÕÈ}‹B¾S‚ïjlJ' >fè¤ÂÊž¹SÃâ&ê¼s4åÝU[E »¼wÑe잘ç­ÑN|[Õmœ2ƒžÔÌ\ e-†€ÜA^ó9]Ð0ÉjèkSmkww|Û)«¬¬c³škÅ\‰Cw/"C»ñÍ|hm*ÅÄËŠ‚ß|$º V,. XýlSd½$×pB“!*Rà;ü[àØñJ[…¹~wCÐ0HÐ »KÿEmÌðJ…+ÿÙwÌcç_ó|2iÝ*@Þr †Ä¤$¼Aöª7\…¨§üÛ¦66â.S„o¥d—´X½ôÜÓÈu–û1ü>ûMc‡6O+.•H5s=\*[èdçP›²’5#mªÉö®‚pÓûfÎÅ7 |Ó”3KÌîH¼FÝŸôõÄ∩®†c¬ÁÌÒ°ÈPˆ°Ë3l‡H5¡Éi1ÈŸœPdñWN«Ê6“VBN´¼…ƒñÓ†àÌì+cŠõXéâ²"ýþúåîOð‚ši¢R­E‰\æÒK`rø°Q²çbiÆ‚ˆMžÍYÀ¶¥1?Pe©µ·e–XßÚ$Á½¢z¦K!\es /е8LˆbûA$útL„èÒl/™]ý®uQiüÐÒž•0¶õäŠÒX,ù‘ pƒY!Ç@±°ÁþÈrA%‚Ù•·^+ÈêXÖf9hº€ÎóÔÐé æöƒ®^û˜ÿsÈjD^º—LöïYk¾w¶Gx5O*…ù.ÒÂlç>i‚ªQ˜ºÌ€G?ZûÎUøxJ§©‡peÇ}o•±çžY†8XBzuÏÊô×Ã.¥>ÄU©«À<Ã]~Á¨œÅ…ÚbBôZ"tgjµt5(‰½ŸçýÃÁeó€ŠÓŽ<>U{íB~¤ ¨êìk\¤•gÂâÎf y Š.Nd ‘^Ø¢¬zxSRöI+Mù_ ù’¨|«d*³ b µ”Ð~»É³æ{¯\Ë à¬Y¨âP °:þ© åV"ŠGýAö‰ àÿQ¤>_¥ðR¶æÁêüm™!Ê2èC%ýå ª…Ö$en§Å5 ´oZWv _)¿D bÅÝ ÛµDç§;”‡ÙGˆÅ››(W=6UVSö›Kš FCÁ«&[$U­œ.dÍI2˜P2öÙQRËQ~["m»]FxBÊÏ̆ã_Ç¥¦àiùnà¡fe¡/™>O‡fð OLä¯T+ö?þÙüL‹ÕUÖ"þ¸ +g›ÑªÿD L¤Iéÿ^0e_Ô° ! ÏF²Û ö%´ÝP¯Û —/,)w'ÍE;dót\ˆ4Úw‚»DúÌUHÞƒWbêU-¿ó#à·làáív·Æ»·}_!‚ó«†8~¹#ï°Ý‰á£gbæ=J¨¬êû¡;úlݼ[«4¸IÆåä· m·–ó>ÜX}ûI½PÖß§ÇñØÅ«ú%•H}ÐÊôö—s ½·½…Œ©rðøÞºs&(ËAÛï"ø ¨7Lü˜)…_5NNƒ{_>þ‰‡·­:Sñ1?¼z®êã-Ma4ûo#ñ_ÚðwIJûƒ—ÑuÃÔ–CCXÂõˆa+µÉ…±ÿ¨²D.$zÓi'îeËB^]3©'4x«yªs;_)è¿He„¾L?s)†ÌK¾’;1ܱ&7Ày­$'õIS²ö5e™$¨Ž×ê ¹‚)ýCÂ|zIÆÃ“i;èü%V3=îáðVGÓš·z\Î{ã 6Çó>'šmÇ Swæu{š;úËDÉè@xIa¡+ó—^`ëªguEßX|yE×-+wÒá–-É1ÏÃ%‘þ„4÷°ù¯w é‚Í»a› ›æÉ ŠÛ‡ áá¢]ü¼wI§UÈ+(c›g/+VÙȬ°äV+üò@Œ…sÒ`zù¹Ã¯u»L©½d¢¿£÷y„–=™—ÂñµÌIÆÃú/C ¶ûÒ>gP¦ ¬€Ð Í‹fµ ñ'©wsâÇÖ¯Äú æ6‰W$'Ö'Ž1`!:ü7rœ¤Œ}×ÑÒwo•wUÿ]±{¥M¹<šë4tº+énÞÚÑ,0ŒrÆ:׊¹–”ž*£0 Ií6 =£j € y!|}{E®±è«IdfB䱩ðO¯&ÂLÈ{0IãÖÊÎu+ÝfhNî’ýP5ÖP©Š|4 ŽÄIƒÕ]¹ÄA¿Kg sP -S˜Sƒ¤#ûõÛ-ßF€É/P3N÷t§E€Dø#»Ö·ÊçÌq¬ñ+ K†üÅ3pöc ÒüÕ'PÐk—¶h¼œc¼ÞYÚa›³Ûú*éÿ_£t#3çWå0 ”œœ5üz‡4Ṅé‰\–‘ꉨ—ÈLÌ"®\!ÈïC÷¶¶9iÌåDY?«––Z5õÊy+ãêÇ­e%úÀ€!žãÙës;;ž¦Ñ¹Ô²>MZõÔù"6@¥MŽ]8->X‹ÙY±™¤ýßg®±ÌB\Wȶ*Ö?Uµæ¾=lÄÞ~og ‹Ê^íùƒAÅzÇqj¬¥'Á”3­!€Vmfå+­_O³E¤a™õ>¦MfÁŸG3˶#ªy… ÷ä±Ç%v€w>ñ­RxÁµk£8 ÃÝ%'yþ!jÀÛø±ZÒ"ngç-kÁxfbºbØñÞ~M^e¤Ù.bd’lˆ»Ýcx«KÔ v3ÿ8 \ÊUM¨jÇï½q¶Ãúæšp´Á _¯ºò³2zà¤Õ'=V\Ä8÷ÇŒ 9c3ý /þÀõœØ®ˆ_U¡!š€Bt‚`òojÝ—³ë‚‘B¯–òˆ€"^éMÔÔ{x²©äLŒUèc]PVÕÊ?Cbù?g³Áá1’•L¿À' 3ËV¹á5|`Æ' ;Æló>ßcžŠ;>zèѰçä©ìÔS4k6©-SøÊþæÂpU(˜Sl#íý|úf½ÚZÌ3‘‚5ÔC½=,X‰10e+ 6O£l[j¥IÐý¾Íh¿2U’nCªë® Ïã.<õSqNøž˜† ëüá^´$𗤼B ‘ Á?Õyßà!ûð_ýû¿†2dãH<á^–=œ{¹Óq»Þbuy\üç–I$ÝNd¶içªÛΘóˆz'Á‰F¯œù­Ï˜|½k»¸ ór„ÍìžÙH-Ã1ðl\?§récùξB§ÀÈÿÝd ¬o~åƒd>$ÉúÇê‰k3…!=ß~Kð:1d͹DÅ'@Y’×'¡jFnIï§{›÷0mèKŠÑtg¤W÷b8ï”..nËÝ'â’²Ô蹨ù·÷Ïâ($¢?é¸ì©XÚÕŃw_± Ê—Œ8 )Vø~&› ˜Þ:)Íë5RÿæÂª€'XÑó·RˆµXøâ?ÁÈlö$_Á†R¡6z«X)†¨ù`µ³÷Ï´ûÏ€/á8~/Q ÉZ€÷Y¸Wö¿’_k´6…Q ¬*Qnò…qšSW¾øfPŽŠ—»Ð‡¡×$ǵÃ{s2$œËgÕBÇÿïD¾VpaÑÉŠýÿûû=ìCÙkŒÁóA?P0tmü‚$A¡UóV7 %óëZ…«|\ÎÚÝÁn-×yWUÊ`ÃLÂßJ±ðí&¥·pDÔö%^г¯ ["¨3Ò3Е4$„ðJíAm3!¸ÒsÍÄ Óÿ7Ü›V6Aæ5Ì#ä}ë"\àvAxδ猬Ð;ô€%êÀ]n7Ì)–¡FlG¥&ÔCå‹Ca{ñ¦]ƒ‘+ôV:Û˜ëìÎC†:ý%ã rcìzE$|ç3 Cm™[/g”ZÊ; …ÅuÕSÛ:ûƒS¥‰ ‘2ÏèžRüE`šâ)鯔@6b‰Äù¨â=@ýgnÑŒ›Æ³| û|¾BÉŸ6"xÏpÑÄ6‘–”^H¬saîjÕú'ép+^ut‘ê[Íqìž+ Ö:'' ïñ,t[Y‰Æ™ðsd\0"‘ࣧ*uô!Ë’O¹©yç[EçKRJJ豜 _C”ã¤Lïëݯ[+æÓ½ïJ€¿Þs²®›ÅŽî¦=qާW8/]iÙW~KVmT/GÛ'ÁBÑNuõ¡Çó;™~ÃÚ ãÆsƒÈ­gû¾£Õ 2ð#:¹¶òúnÒäŸ6íû#Ó-†\½Káím¯56»òímÜ·jx©:a'Ä›æ[ã‘Q¿ µü“<Š$ ÿÖìO5û”í[ÔXÂõ¯Æ$Ž˜)X/#wtâIÒyû.ºÚuîÖÇM†€fß_ÅÕW›GGHN7MòÈU©§‚˰\ :C—Á/„ÖŒäq:}´Ç¹Z)â_s 5¢Ÿ7И'ðFxÌñ6Êç“0òƒÁ/F1·¯çÃq@¸µˆ‘™ãè£# 8&ÛEqâ× cÍÙÂR½¯µ·^s'¥Qßß.,Özwȓܩæ-¹l¿8&\×½¨.¶Kj†€¼>;³¬ý¢z4NÙ®ípÿf°‰5½ ¤~Cv}’°˜A RàÃÓ$;!¡>™äŸÑwBR?DÖQ¯ªŠÙýsuìH•M@•Á23ù¿ö§óèúõˆ­âÀ#7ßd©s1Þÿ&ü²9x‘T./—K)`$^^‹•ú1†.F„(¬ô"¤$ Òä×ëî&‘ê¨{!‡§’ÃéÉjÙ H05~ ‘˜*ûÕmðlÑqqö~°w +uYLYª#´;ŽÐAòäg:]=3‘»¦D‡“ (%œ“.áøð‚âŒÏd©•VB4™ëp‰7T˧ò&¬Þf.~ž[Ïà‹å¥ðÜmÄn9U® †ŽÃ$™™FÁ¼ ÜÙCóA˜X]¦w뮣Éà¡4Õ%¼N‘ƒ‚\#8‘¾ã"D þ%§”Æ­a!@º‹-D‹ý¹NË[ÇòÑ &! 'ÆiÀ-7ÙÀ=®èha;t ñ`pš6à——oçäã{Åšˆ¨5Ýž.n¾„ìÊc«_øSØeI±ù¯«Í¡¨mŵÕŸ×ñ_®!èi‡ ð¯$œ|øCOHg-¿h`ä°¥ 0·ÉÝ6WG2ìÐÙA‚yXòBx"¼nW–o“&ØS¾>é7…zoæø³ #+‘S‹.ÄÝÒóÂÚéÔan`ïÀ2‹Ó= ®[žÓs…TˆÐ»Ô޹+S¬“ÎpŽè¸4°oŸ„ð ¥?÷çåI®QÔÜËFoê¼ÄàvÛ$¾;´>?“a¯ Û±D]¹ÚFú.w~zs}Ï/2OQ™ r7Ú<Ý…,3ðÅ,‡}ÎzÇ#ÎÏ‹tT`d6ÙG1 ¹¨n"²Ý)Æ×Ëj'w¸2¬Ç:¤ëÂ%kqÅÓöu…ªa]ÏÑ4)=±×ÀYüµnÕ€¥ Ý¢?mÊ üY vë!¹^.%À'°½Ð~ŸálQO3×\ p´o™8DÏgºˆµõþò¨†sB<ªgn÷9àÈ£×^ìE"Ã3X[Ý<¸zÁJ&\ø3æ_?Ku÷¨x§­Æ!—f#ÕnMˆÑþ¨Ôëå&ÛœbJ‚tnæ3¤\kÊÜþC©¸á‡L0p¨7Fã;sÀþ‡­"ãò?cSOœG =Nt5š(D*ÁdÂ{«p¬ÃÏË·´*¦…Pàâþ+@³TËÑÐþIÚºY&R{v°‘¬‰9{’ÃÚ£öt GG ”y\iÅoMÅöm)NõNQ¶#ØûÛâÝ/Ïë(Êç€ 8ï^ÕqÃO‹EiüúÚÜ ÒT-Ôù57¨ä=Û`Ÿ{Œ·ët^fI“’ƒès+ZµÒ\ÄIûeÌFér¶ôs‰31FÓBö°pªZvRºÜ6ôEO»P´{Ñóùc^ü±CyžhPu¸GÍ(0†ÿn› \ßK_Z@=¨UÆ(#¤Š“ÉN€èS·3Fú¸_¬ªšoñ±.\x¿ÍYî 9 4¼ÆÿÅä¾6ZeB¢n°ß®{ѹË}G£wiFÈK,{¦ö·×‚7nöAÖÏ9X8¡Ä@!‡UÜQòÙ¾ž6g(@ F)íõRð‘ƒB 8ä”— ºF8óç~ýQF›N_Ó€µP^:!Ý­®¨YÖw\£#ÑÆ™½&b8û7Â1†ó×çÚûïQB¼]t7Güà˜“úêÝ ]ÈHlfTÅ ÄÎÙfެú3gq:Kýê䟄Û9¬§Tnw\U.õ2í*ÓÏæó.Á6·Çg-N6kI;õˆ—”ŽGµ«Ä[éØv‹"4Á‰CýòYÊŠÝç+ä‹^Ú!óá0^?©÷]™¹‰Ô6>¤)êÏ#çT|T% {`‹óäeS!ú+ µ3¢“£iÍBŸÔvÖ¯µsÍ3š(½¨» ÷¬æî q‚It+F˜_8ob!(ÿ½0¡UϹ¾š¨<¥áè'Ÿ7!ßm®Ù³ÜšReÈ*n ioN«ÙבQö‡ƒ*ö 0Ð:çï¡9E£.ï/A>Ï$myTvÌ A?ÄÔÓ`ö'÷@éîûR¦q"Ö5#)ÙV{ ã¦yÁ÷N/’,D¹4áÅŽ4¯^„šÎbÐêð°baò<…Ø4–qWA÷}É´¿àª•Õ¦•ÇY©o)žôËŠ9Æ®KÞNìÛ‘«à܈¸ZëôcÊw#ÉßFÏa[P ðu‹ŒCЗ¨oçoë“uÃ%‹=»“ú­c®jÕ#È;öÁˆ?ìs¿[ÓÑB*K*GL?yîl L~¡•™Î=ýšDuÎ(Ùn‡¤IáÄ9FÖšÛRÆpv¡áôÏ­É2¿]fÃÁ¶~J{ïÝ–+1EÓ­¼#Ù@$Ëüì5¢~T?é£ìÀCÇvèždu½±ÈG&YØhµðf4*÷l` âæî˜¹d¡w¡É½F0Q‰AsK¾È'†¦ÃÅסV£LQýÉìÄ/"¼+SœóiÕ'¸šxu^Ðîˆ8ÀÄ;ÉuEla»™¸5ûõ“áûø®‰§4‘HXÞM¥ 7ã[ÀÏL !¨ömrÂTÈ[22­[ë™X¥ô`‹ÉìŸÑhÌœ4ÎÙCä]ÀÅdu³{_׺øÐÌçêRNÈH)©'d n‡¹¢?†eÇpx½!YÌ‘›0óžâ/r;»v§£.bÅpŸs„¬ ”2È¡=(«ýµ½×¢î—RÿôÖ³#v„±Ö'(Ù,Z÷0[l  º®Z=6Y©¢Zc4ÃgQ–{õÿè'M?öÕ)º5Ø.€ñ@¨‚éUK…€=†ŽêÛ&aÖ!³ÿ½žý‘ Á®ÂZè)x´éMqç½7íSóéÔ@eŸ9 ç-ûf¬Wør[ôôs»’Iñí‘KFg)å -e6X:UÞt§wÜuÓ^оnmöÂÔX½%2i†U£ÒÜ,>>]ª¿VVP]¡’bà@Ò¡-«-!bÇo_°›5ŸøLÏoWæKÜ;PÀ"ûxf%º¸!+2‘+‘J4¿Æ^..Šå¹%ÞX:1ýõ,’Ñ0h³é±¹ž9½ïL‹ùïÜ0ÕŽ Yo¸ö8 æWÁGOˆeLvFP÷Žö¯0ê -V=œèŸ£ØKšŒØÒÜr°%ôhŠéŠœ>p“‡u/àÕ‘ 9Àæ¤Ý»C}àUY@’Æ..ÀBÏ>¥…®ß´ ¢&µ´¦!w@v#pNl<^-#q‰qÌù©œ%5ÓP/ûJǸ{™ ™‚ÂE¢÷É)¹¶ xXâžg\ÊÁh[ýáƒÿ×5§‰¯"·O€m"‘àƒDO #ÇÁ ÇY<\]ÎjKÜÄHkT ŠŒ Ñž D䧸ǑoÐ^GsNë\i§y îç=Â*eàv^ohûUSŒ<ôÄû²ŸÍïs^ ÏÞQ ,•PF -þ¢›ð)WètÜÉà«ð ¶ª1׊×zA»”Ý\SS5›§€ qNñ†Ž<àuß+^J¯ýA0 Ú`™m½¯FÒ¬o¤Ä´EH›Y+y`À¹Ì©Yå6)[gVdÂ/ÿɾwcrŠ`- ›UìáÓêqå¿€ònkE˜ 2>õµÈùc›^+‹*¨JL}ùÕèèê§©ð ?|¿ÁOð’m…!rD<eä²ÒD˜oàðblûúÒc•E¥Pˆ\&›=ñú²Ú© |X¾‹8Wq@ÕD…É YöYJuÐFÎózÖwþŽ{Êðz„ó9m–x?-w¹§ï!w†¼¸ÁÇtÉLÅ~e²&æo~‡-vǺg Í*«ÓCåÊIC½‚nAþ ‹ÈàÊ,oõ\>p»Ý”ª*`ÃäS¬ÜviÌ8 š)m<½1mµM—žp²gm–Ó|Ä6Háë••œ@N'p#Ê^¸£¬ïŽsràVÈí©ÌçCÜÙ 5jÿ¸ŸJ\Î=Wi•`á„Ó´ÅÅQÞÀÀNѼ½Â¡ª­}OT¬66acb/€©Š À¼1| 7`¼Ã<õµ¿UfŽÙXütwáA7l)àà÷ÇÚð¬•Ç‘Ø`©ê (v(Hà„c3 ðrÔK5µeRg¼‰È)3D+ |ñ{/9 ¿Cýr4Ó^Æ…”k£5¥‡@õÆ]ê‘™ÁOö` ©|éäeÅ0N]˜££°m¡VfâÃSj…É‚æ½}¬¿¬õÑV ù·ž[±t˜ÒW¾¤¾ =:5Ÿ”>w\EÞs(^^ÙIñOÜ!®p?jGÒÛ[%9ÍDî žÜB®=©SÖ»¶(c´ÊÖ×ðêul5)&µåÔ•q' W+öWXò6ŽW2i¹ Z ý²s©§mü"@ð,‚»ñEäJV¹²ºB~Þµ°dôËC~>*žŸXs ¤à%â|ÐNfb[¯œ×”ð¸u Ìù3iímÐ+597aڜݣ`&Yíùd=ÜM²…ys„ ´8èh¿2ü›z¶šr/ Ji¦"4®ÅÏ”\ / a‘¿‚ŸDÙŠy–'KèáL=rÄHáwÍÀOL°ãÅÔ|y|í zi¦óJ8ľž*ïHNñ‰Bþ DVü& «jú‘tv—"gDæoœ5î%ƒN”`@‹í>rÔÇoÍ ¥ï‚ïÑ®§äå %M*¬˜¬¡7¿Ã‹q ØJ±©Á îÖîî*j}ùâm<…!2­= +‰Œs}mÞ¹Â_9l¨/^w¸x áy}+[Ô.F¿¤ùðlÙúåoS,ѤK¢·Ñq·lÔyVzĬ©”†Ž ¤áäR¹Hm¿E¹E¸¬àu¢vxêzý´ß7{*läýW$·AV£U+öêA¯@U·Ohn„ô¾hËÚ÷jý·Ù¹ekò‡–ðXY¢çnÊG‰²•£ÔSeS#‹\Æ] éõƒÁè¸@# †åsðƒ¾O­¹ iæ„lm$DŽ&·`{'ïK9 +ÿ¿ó‡‚QÄÝêÄ›Œóc?À¹æïŽA:1j ¡ñL€ZÛp:´Š¢=îî½ü¿\vY>qž®¥À‹g6C¸cóÇÜdoh‹‹ ÜßÃËzÂF}ƒˆcnÛÁ“u¯içâÆ 9áq¦ok¼X;Í$ùZ"йtã~Âë£ü8cX‚R…ÿuŽåÛOÅÓ»Jy2™ÓªÎ'ÚåYG#Öæ&¨o eü÷‚&pí†2GP?4Ç`™.šR1!t7¨èem Œñ‡ gâQòqOXk:v{?QÑΣ¡»?‡ÅTÐŽó"nJÏ£î“ßþ¡¸•~Ö„A¶ˆ~wñ¨ÆÊöGËg™eë%=3Ï/eAaf?ù#cƒ½WœRïb½NY7U³Ë›)3¡×{àR©¸q¤Éê­iwZﳌ‚&\h1Œ.˜ ‰¬û œÿ;Ѹ8—êlÉÎC]œåñ‡ë×1ëÈ/eP·•½›eÇ®}u[^RÏŽ˜J–» ™¦ö€óíÕ5±¥Ës”6 ÄÉ€&ŠÍ®æ}e+IcÓщDr4•ed¼;6x’æ4‘ïH[}u†]}ÑoŒA=…j= ~‚øÕ|nÿ gž¤A©rôðÛó6êQpò¾‘<üÙ¬Ð&&ëÓy_ {Œ{egçh^–cËOî¡¶¬E‡MiADäT–eçˆÃÊÍÔíB…e`«q®ª“ÓÌ; uJLíoøO’ Øø…ÆU­è½%ïØSÞørûHŸAfÀ`)¼»u[pÄë—¡²3ú÷Èr½µÄBLüqz•óí3¿.ˆ‰"¡žÇ¬NNe™p³Eêì)ÛjDùð½Û|èÖ8Õ‹Q剜y.c›ÃÚtË!ÞöO47ýÀZp6)7o”à .âü:IŠãid®}ý‹8‚È€öœQÆ4é››{ã-¨6ÑZ²CÚÚ­tâ2Ŭ:ûÉbÏE –*žõ«ßýˆ™Y“‘›FÔ¯ÀA4亞~ñRºfðŒþ½Îh<:CÞæI3¹ ë~Èêéc¿á*úšIê'‹B8lnoq:§ÞØ—>néIòð‘w»‹"ïÆ6Ô¨+æõ^)”qr8‚BïÛл¢íZñ*4øÍ¢L!Ç „ÿaHo©ç•´¾ö9RqÛ!cW4'h(üryüùd1l"x” o²wïkݼ¸ÀBE¯>[®qËú:Ä–$ìtyG;,#dzkÍiPƯ¾Üv˜YïB![ÕN$_?wR·ïLª×ÙÁÙì`Ð$^"=Mûr»7í‘ÉR÷ëÂù"0„&è× „p2«ŒA-Û†§ÓQa\¿ºƒ½«æ8ÉQŽíosß?ÂûŸÜËW”Ë=‡ÐYÎÉuçûàbÄ=Ò†z)j –¸âmù|®A8’Koè°âñd”.07,Lè¬Äó»ý#M¡ÖŠ]_‘¯J!‘߉3ÎØD»Û$ž¹Úä¾ ~% çOÝöA°õLÄú˜>I ³8“àjS‘ÃÔ”úZcU¬”©f¤UäD ’̺"<>ÈS\¹þÛƒ,ФNÄÄȳBª‡—ºÔ¼®ŸØ¸¥OÜ«wYÒ`l3šÌaHøz¥Æ(ÍÃGL L˧•0|Ô¯»=&u À¹Ž•Na¿LÃåÀ£8Žù,[”¾ƒi™°aåÿÝ&ç¼Å^‘ipª<ËžÕ€OAÌA2m;N*W: À̊Ƨ_G¨3NU4á¶>Nˆ_e¨šõI-G>ÝV³ø¯Ñ1$g|šY0à#ÃÔ¨,䬮Ž<⤷•:’u?TŒ1šÖÃQ‹Å…¾Æ‰>óûpÛ´µh#еq,Q6ýP»Vá²E HÃ6J’ý#Ï\OñøÝ\L¥,ÂÈ©É^&Pÿ³Ù:…Üü`ÕÆßã„¶iYë¤ýtíC4¡™(È~HXvBz“&AêšfÐYqõkZÿûò«ÍjOµÍIáQ_’Ð||×±œJ.° ûw¯ÇÔ§|z|"_)ßOþÒ]Ù™»ŽžŒWA¿ÐCx –ä ‚¿©=È>`+tèbÁ¹óßÕP™~ÎlS5dÂåª' mP0?½©ÈL®¶G"]U àî=ÁÎä-üÀ'…IÇÛÍ=Þ97Ú®¶’èв= uŬ©O鿍‘ þâg ¤=xð:˜HÖA”Æ{9ìQf^&Räœ9C‹ ÐÒ<¾x·€ûuÆÁˆåpq¹˜åv–þ»ÜºÌµT¶ –™wãÔ–Ê9²Ï¯BÐP&:–Â7D“ÿZk¾9šQ8‘ub<,»gÅr.R}Y3ïM0?ôAW½RÓ%èB¶_ã¢ë*"0õ¿Š#ÚÚny‹…Òb„š]Ñ›û"Í¢‚ZyØ¿­ƒ°pñTê`ØzpJ„Ö‰»]¨„}é:–³a?¿þɈ†KÝ('÷¯·™Ízìˆ8”<äÌá ¢¯Ë©6‘4Dbó,Œ8cĸª…,wx­?^6Œp‡Ëïõ=îˆV]J‘7ÔŽ_«äÜ#tÞ'7(¬=ŠoÕU&–§6 ã Éý7Ýl­+–{­Z«×­”ïÌPSöd²äfômÓ¸ƒd¨ÚG)x0ô솆!ä‹Ñ½Ù*x“ÒaÓRužQë+ûÞžéê-~O‚ÜMû&˜Py†7‰v²¸V»Ä×eòdÖÍ.)+ŠËb‘ŵ±(¸¢ÍNjÕôûDK)}b“Ñþ @O%ФÐ}û52á:Í$¯¦µö]#]|âtjhÞß¼9 ›^訄ørS•è*Çjs,~ZB°Š–hǶcΤ\$jè‘«9;Ü6¿öù¥iwÉÆ`#‰éM=~ú¡O‡²e­ˆƒ°>‹?FŽa D‡ÐÉÃ=Ô(§–%|5–tš·‚ÍØ:GÚZrK4f´“ê€Õè‹#Ì7I÷zœõ}ØdåâÎÆÔ”¶Šy]$\t–í5–Èo¤„ú¨N^&Wž¶Ð_š×S~qZþ~`Ïÿ²taLó« ‚ªýÞ¾Û"–½ÔÄSДâinÖp$®âQî”×5†#»Ñù¢LÖÍÆ2Cœÿ–š$ò_ˆïZ°¶^yÁj, †¥·g†;ìÄVމux‘+$æ¼ÙUNç@g‡Î¾º3$*Ôb­ ãk€ùPm§¨ªþÿ=i…–­Â04Ú#vç, }É´µyŒÞ’Ç*ÂÑðCrèÌíòIºdVó¬£Ë¤1Kjî·qc>Úð¸Õ MŽÌ¤Eø5N9cAë" âÂ3ˆð÷ûq€ä9M°($"rŸÍÛ„gì|„5ŽþIC:C †%©… M4úZä‰m­·W"C²”lˆ'Ý*m>ÞÓ›Õ˜á'õ°9œ0¸.7Þw¸ÏÂ8FVÒ¶uåÉI>›-U½ÿŽ\WD¨xõ;ÆÅº_®UvÀ“c¸¼½_½&­*;nÜUŸ„ÏÁ¬wÝЪAãän ÃÌoSÏBmV'èøè<8„¼†Y1ް’õR ÷­^?ÒÔõCS#(!?ÿßsIC®æ{¯GÐ…hÏ`pÌ-þP³6o¼ƒI&Ì€µxg¶ θ­'œŒüž³½‡VI²kŠsée÷Ÿ›®H4;þ²Z¡ÞBJ‰.ú6Sß^Ï_ÁBZ7§(‘‘¸–ÅÝ•¼ò ôÄ¥¶$úìñÑ, nch°l^õg¤e0D ±õŒ%¯B„!TóŽ›ãKºmì·;³ù¢Aü{ø|Z¥1`›byÇà ÀQJ–ö" Á®”{;„Ú %0ƒaàÿÈ`MEït[š ŽÆ¥²pÕ’öÌWÇÞ¹xüaUð뜊ÜëHNø›‰Në_†n£Ð—3-‘\¦2¶1Å”u6̓}~JáÔ^¨×HÙL ¡²5ÐqHŠlÙ.D3ƒ´½6rŽGAd9 r„å(UG‡ö× ƒ`šÑÅ&¿x˜ÿ0 A¹zÒ¬}Ž¡ûdÒR/±´è5ÓÙËÊ?äPÍõ·Ž!Š€7u¿6S,S'¯u&`„ùKXü’¬@ÃíK™ÅÁýñ@|R“ &¸œ#"¨¦þ³e Öÿw Þ¤wxV0#Ûë´ûNðŠ›ŒÐ÷!^rŽåÑÐÜ›h‹%‰u\ì†Ü±@e¨!,‰ÊÅ <ÜL¾àϾ÷÷WÔí(]æXÑc3­O¸èÚZÊ”HÑ»‡^9òHº[m#–ÝûU›<[xK­7W÷E‰ûß± ÛÇÂËÈqÔí΂†„/QFA—ñt[œBê+7$~QAã¿¥I/[ùš Æûî¿Êÿß ¾“o´„c°»z”Ðsü 5òqãMZÏõ⌨+‚hˆOæo>l>eydsÈ,ÏäšW£N+ÏÂOúùÌgÑ©Ä6³(“صY¢M†Iöu‚Ñ2Î^Î`’gã:ìd•‚}Ì$ÁàÕ­ßMË”Þü?&úÉ"ÈLznÐ< jpôm–ÜBcåü-ÖÀb1}ÕóÎ3" ¥Üå ¡ÿV8‡•A}‚«x£„ ˬ s=ñÁru¦P·`k€Ä_ ¿:0ÝhÎYOë£ù>Oé‚3fhÐ&øFƒ¸%iп¤dö¢hCdT°N\ÉAe(Ùm-!R9}%Õg2Ÿüò˜[¹¼»D$è¬ÓmÙІnœº_šÂÎ2³YfŠþ½M‘ks¦Ø˜Ã›bûa4)Ü¥eb¸Pb`­µÆÔRÉqkz–|P51SŒèR³ƒöÕweºP1'«‘{)e¹bU™sü˜ßP\ï ËÑaˆ ɖ𺧘ñO]eN¥îÑ€8O¥åŠþ4eq]Kº§¶lØÃvÖhäe£z_®Ï&¾êgºl›¼ €¦µß2+ææiæ s¿ˆ}±Þ9‘n˜a_9½E )†é¤ÚÄ#Eú7¬$.¨é‘+lßTó\D†PÖ54oqE@.Ë’¶É×]浺R³—#²<ªÑ‰­¢QµfxÖ6°3Is _$cõª<:ñ™Ø¤ ø2­œîé²(Tô AÍäÅãœf öu!g ¨\­Ê&MDŒð"rkžc ˾‚’Çåçªx`dóš|pñ3ˆnô&AÁZ¯%ȧ÷©ö¿¨Æ*ÎîÂ’íò½ OT>“¢Õ¢Û GÓ.7¦÷@u/ù¾7l ü™ÄTŒÆµël-Wd%Æ-ï%Y'¶Ïî¼Upܧƒ*Ý÷Y¹žz^®@©äÔkêxU¥i‘…¤FŠç¥'ƒ€–º¹LÑ¢ï¹<ì૸LI¸ŒæîQÜa°»^œbœõ¥vÀDCçO0I¦è º}TYÓ×û÷­ž¸N˜Ê¦6$L£›d0ºŒu,¢.«ž&´7‚ß-ÖKšÙ³`e ý+ªvˆÛÚ‚À¢§g_•1Né^,ëô{”½Bj .+heLçf¼,;„bðìöR\0D5’HbAM ÕkS lëì8%$>ÊÚ'gfjωäë÷"Æc_Áµ-eÕ¿‹XBPͦ‡sv9û¤Åé “¾H¡d°fíDyRl‘й—u˜uKæíÖÔ£‡*ònïd1£+ï;$¢T.)~SîÒÀ<(Áõš ¬ßjyoã§øØQyhýã1ì>È7| ¿ÐÔvP9´lÖ't>¼úVÓI»•¿Í½1½¢¹-µË2%ÌÊ«5Ù¹%iô(Š—¤w¬ïòög†‚ûÍ›2?¬½‰ž¾\ËGq)Š9qîIçÆ«ÃÂPhô0S¡µW„Ú‡ "'À}Vhà²kUh'%ÃUÃ)úòvŠ/=wW 鉀‰6Dø¥ë·'uS‘v}@ ÌÜKWú „ ^W'òäy]  «?B©HD ‚xG¤ù9XsÈR©Ó;ˆ;7Ûâl€Ëú£Œyí*HͼT£Eoð‹©–J2ê áA—{Ö–ÎÛ?å\¬èáQ8çp­'–ïáÚ¬¤÷û5sÅAþù!˜EЃ™–2’(ãæä{"ÆÓÐ/qÉÛ=ã—€Lô7UIoE±¨1£UöÜÛ\õÒü¨UV}Ò…« +Œ(?µ‹í5È&]h¦GÚÚòWIzYÁ o(¯a>¥¡tÂ;H(~W (¿F¿¸ÖåRú4y³æ©Bpá“n{¼±€‚³m;æbúºÄuá Äojp,MˆN±[X„<ƒ%÷¾ lW‡»Ú¼À¢h~ ôPRŸIÙ• çRìÉ'f3¼ÛC%š¡ ×2‡j.éöÇw%6gyC¶‘΄°_Æ0!¯À‹øwû[-ný! ŒÝqó…rÈ!=€ «¨y*<Á¾aÀïù|G)3!°ØÈgÖIx„“3JÔ§ÁÁÁúþ¼ƒ;·Ÿ©›ëU­qKé‹Ê?v·«Ûìš…ëæÕ ™Š¸JM(QYo*8=æ3ù0œZÆy§#ÂOe.1jÜÞ68¥¸#ÏI5“T‘sdз¢¹ ¢_…Sk¬÷Šÿ0ÃßTÚNÛ*“›Ó¡ïp_"Kùx)×¢D>c¨ÎŸÒuV^#F|±««5g˜ŒFUïXûø!±éŠ£GB‡uéÃU ê©™ ]ù¤w@º¯:.a&kÏ~ã2¡Q‰*Yˆy¨¸ezw¢ á ‘¡ß ! ®lxᮎ ÀwÁPÔ¥æóÕÆæÚ¾òØë?ÈÝ«µ•™5~¸Lgn¦µÑòs SÛö"<²E¸Nìµt:Ò¦{ZmUECØüs ÏüF-GØoηì Z5 Rª YP›¼±É¢²ÒkD87f÷â;N0Î϶7Å –ÞuÇpJ’pG7¼Õ»’Wô>`£šmm,G#JÓ<°"„ä¾gîkIáGÊÝܯs`H»“7Ý7š!a]¦$»{'SHªÏkt³¨åO’)¼â(-smµ´c¹ÎVr-¿x78Šëk€‡±•Ék€‡Yñ䛬â?Ró|â]Sf-‹PÕ2ƒÄm¸5ÉCîàÙTw~²†ÕîHQñˆxQ|q!ÿì)®:?©‚þܲCq: u3£€Û ò_Z˳»¸W0Ož…dzë„qŨ¥•‡™¸†Ë´¶ìÂO®–‚´ïeÌ·Œ¡.i`;#e‰·ñXQîòÞvpù7zßÊó‚úY ᤿B ªÛ°/CuÏÜ –š)&Œþ½Ž”ºÓÆÐ… R.Roë<µ ³B6 LN Æz¦mø'™ -ƒÚBe1E•“ÃîAwƱ$ƒ ›/cÜv[ßRJ›¤ißl#DʳðnbGå»gxƺ>p-¶~%µWâXÑÌ+õˆ¶Ú NÞB†ñûGGüw³©óU'÷Ôè ç*(e%ð)j~Ñrí•nh[ÞŒÃùW¶¬A¶çÒ眓ïúÛÈnC]‘Ö¨˜+ع…?äZÑPµ¶²Âç«=²âøm5ïÒ1WFšE£¥ŒÁr^s,Tþ»¼e©ŒúØ›œOjY,K±83ªZ”ù^_Þ‰¡I}s@b0’Ç])!ï™á6󠒰܇z*ºÆQõrÖgƒ»zÇ{.Au§r­-û:„ôÜu³ö9×ÀRx4`j¿‹b;-µ !ú麧7œÞW"Ž›§MÄ kðƒxà …zX¸+@gÉd åÊ·áÁÙIß sƒ’+úT6äTµ#ÌÜÇÌSt99Ö©!l4‘·r¿à‚Ì}Èýi¸{šÙ ·¶‰¤Ëq1ꬼ¼e›¬Û­;œú†ƒ”Ûû餩,IÚ]ÛK\Åp*¦Qü²û3㊳Ýà~©8ƒ‚ÊS*K¦åõÇ ÃØ¸œëñ@½ÿÉ®ïsåö’ÛüÉVßuÌ„ Ôî=ß‚~ÄAàjì¬o¯›ŽÉí®Ë}þq èò,ȳ¡ä^’ªqÿñ`ùÂ89Ù3±ú»Î)ÃMØh«õï—Œ8Z9Óg=~¨ˆðZГ9/5æPh,X¡¢X¢±ânÞbü¢ìÓâøÄsN›oÀg5Ðÿ;ÖTzñ<#|‰=½Ñûød(ªR¢a^9ö×üh¸–[~†Ê”øŠœS™´'Bò&ŒCxg÷ë[“u‰ý%Ö2ÓDŸ€Pˆ^¸Þ²By"x™øP\SIÖ«ºˆÇ­S…ô‹Óãqk±£ÏDtÃ#ÈçvÞ?ŸÒo¢ë6ã'ë%U-¨*&±ìïj–c– •ykpÍ@òY¹JSáÞ«onYwfØÆš)$ë½<\,ëeÙ<” <B~ñ·÷vò[Ûù…?¡˜ì$7bz‰16téšó¦eQÓ™kÀÍyã}Âjå <:¡cq«ù!vSÌ’xI ?¾4šÔ|›˜ŠRuY›…U"„å7_BŸOgä´¿EHrÞ[Õ f¶×u‘ki¥èHÝ™gË’hY^ŠÁ \6ÞqœB(nÃáå¯!vÅ:zt’$,ÇÓ^&s…¶{ÈùT‹½Æ{ãwŒ šÒÚ'@Ñ€ºFöwrøå‡³s-ßLzd°Ú'œÀ†þÎvÙ}£¨g+Ù4ýŸ³ÏéÌ“š0x ½àîmmnïÁ«zƒy6Ðoœ1Îgüººξ J[\9Z‡€¡ü(~æ&mp”/PŠwè3Ýœuów¨C>ìõzQ6¨L,Uï•SmÌO%£¢Ë™f$©T *(ÕXKUz´™£îà;YL~m„ãƒ|v¾‚‰Ê¸W›ºÜ²T¶ßW~Ϥɿ/ȨÄ;9<3DøÍâ´¬N—¥"Uõqof„å`m³½~„*X Ez¼9£dÝ[°dWBÜE\b§û:¨Âåê”\×Ï«Ö&ئ¹0Ò)¾Qïh·än¥zÆÛKMªà±s‰¨Õ*=îm•Ð;*#mQºe–²þìÂÈfGÛ5@º:‚ðÃËòJos¬NþŒ(~Kb ‚Á$Ã9Å¡…ªL Ñ=è»cPx‚‘½y½ªèðŠŸzuÊŽ' máþf'ï}lŠ)…RÞÚÖRœ‡Î¤ÜVÒˆÒ¹b1$8@ʨ,$¡jÈÿÈÇØt “ÜXä-²‘*‰5M  „¨—©²–„ ¥¤î5‰w,†ÁfëXêF30¦&(d“Mp8NèµDÉï›x5i‘»\n§’ë;âT•§ƒ"’K®mwÿS¢õóÍѣɷs*?øôaþ^X(ã'Ñ@dGm²ETAmµ5Çð0zë³T/ANƒŽ u:ßw'æÝ'8·þùða”):Øúõü¿GÏ™*¬gˆÅ³²Æ5úºüÙ¥ LÏFÓ«³œ.•pá:}.Ñ*yb¿Œ¸-ÆôèPÈkCÄ'§çºßï"`cÈLóÐ)µÞï«JîºßPUÖÅU,÷è§É0ÐÏçM$?!cx%°¨VèUkîütKÌË×ÂgXH)5s."T¹éçõ À3',˜('ïÁ,&tT' ^ú‡ @¢’´©µZÑuÙlíbÿ¬Ðê@¹(Cè¯ãUÕÌ+Ó\¶¬:¬Å“3ªÂua¾iº±:pò‹ýT@&æN•f üQ¼Œ*LÆ ó·€,m*}T.5ê=3Ὧ Q”# $ïîI̲h¢ .\}s)âm&•/xÉ5j'#\ÔÌN/¤e$ʹº_rÈK·QfI÷ ¾Ãt"+YÙÊ=z„.Nì#Oém2À8DÊwA“i`ÎÙMäfZ™Û[ @˜ÅQÿHÂö9úŒSül†â¦Õ€Ã*Á3/¯t=ý ¬ù—¡hÁXcETÞãѵEÓo½TñдÄ6À‘D{•á ç´ó»Ø+Wÿa#¹q%¶³3¤uLéËv‘_ƒu6‹ƒ°fíL•Ù‘Àó‡ýLcÀ%`ÇœE~£ÑÁDS¦ €”Æó`“±i“ªøjl|æÀ¾ÿSOŒ"픀sñš5 7·ÚŒ&€RjdYœ “¤4ðF´i°’¬œ¹@©Çß6øŽf?!ภ³j¢K|G©$Œ¸ü¡M(s°È'Ê"ôE£z§öΊ2Þ\•†UgÞÔú´^Ø|oZ¤ÌßTç`ÿ_Zº—·ö…ö%ôµøMSÊ¥¨!*·úØÀÎUc% ê[VmÞ/‰FtžgvzT­QaÕ²`¶¶½gêYÊx¦Q«³I8¦ñü›9«Þb‡s;uÍü¦º¢E/õGæ\ †­‹>YŒÀý[łזëÝæ”“ïùCoðsñÙE\>5QÒ•v¨2¨OÜÜý‡„’åæÑ® FÊŽŠ8^J¡Qi¨UBÒSzáïÒõ{Åïºé÷óÃ0.ö‘ú7`ï6€Ã uÁÛºfœ×…Ã…ýãˆü奅·@ˆ^h÷Êî‡ –ôŒ¼ С2è,eciE˜° t <¶3d|"ÞHAC£­SÐmÛ/¬Ò÷°Õ¶¯˜ÎòîŸbðq;yü{”µ°Yûa|c¸[!Õòw{t•‡ÖVRÄ] *• R‰qË¡#è¹£W 0ÄÓ€¥ÙDØX ¡íaA»{óX"O6Òf]äå ³”Ïú›)+Áqêʤq9›`iCÎ~‘(qv¦ï¿3ià‹á1<Γ3ÙTñF–äö$~TVÅ oá‹¿M,@z[4U?g!ZU\ =(„4 w¹2wBQc 2* " ‡äÔ¢m p:zÄÂq` 5ìÞ5Ιùv¹0Žݦ–cØ‹ ¦w‘jžÓ(9²Ñ 2ŠP³Z ~qñT›÷­§÷z(Lä;ï DãÜ4 pì;¢rL†¢Ì9•f àþ‹¹›ÖÍ\O¿¡ŸÓ^® ):±¥œžŠ´ÇNY…Ê€‘'ÞgÉÖî §%,SüKlŠ…92 ”„&G‚†Ý¨•o GM¸[!†ßø³ ¢ã ,gg=LBY8¥öº®ÜOÄÒ”_óí2_Q‹×égn”¿Ðj®ªiÿúrñÂŒ„Ytˆjª.P­îM‘»Ýo1¼¡_ îƒåö´í#(Ú¨w¿cµ× €}T°¬ ðC²/šý¹Ž ß·­¼zFÇð—™×ÞgïõC•fo(æ_ë¹ÕÃ>”uè¤+€¨©#zœRž&pdA«#@+nŽY©mÏü |¹ã¦o6b‘‹œ(\« #- mxÛ„0½ï]\7ÕÂù¡CT‡ý‘ª«[ _kÒ6sÐ[QtŠ©Ý´LŠ´CVIÛ¤NTÇ­ÎÌzõúj[œˆC |¬ ÞP¿þóì@ø_KO/ ‡®ƒRFŽ7»qÂÒÝŸÊœ¤l9ùÖ®Vn=&¥u· ]97þdÛSÃ?8 -5„^3J¾ô±âOÓ½Ÿ:Íî'ƒ5ç>±øÙ2qQ«ÃC¤·¡ÁÒÚö-!QpÛ‡NºÿHãàðM‚$¼‘ë£f9M©åuÛ0SÂLLkâQgLiFŸµ|ÓåúG3û%f&0qïÈ­²ð†— zåÖãs”xPÖBΗ;^®_rò״ͳtÜ•›¿õâGxqß1èUZ7Ƃǡk-¢úì1~·Õ¬èþ1æ½t »¬€g„²ëÜŠÅ௜‡˜u1þ™`ºû’9b t:åìÅêÍ·¸Éi8¯p1GùíçÐX˜óžÛ„7ÍD~ˆ ‘à´ù˜/#ë(º}ÚàÑ¢¢Ã½ +<Ð6n@ÉöM¤U±”¬q`€XÑ¢øB÷¤µ~Ò¦?8{U" ­ó—\›þ)0ÚÕÑ,jZ‚¢0Òr°>¼ŒÚ93.­;|sˆÀ¾ àÎy'‰AŒº(úÙˆ"ucü ¤»©LËõÁ½1Ø¥ÿˆyGÝmmÞwÓòg$ Ë(f„Ý=Ëëѽ~‘ÊsȨzVyÎjh¢°ÌéS,³yI)øØ_ªórQ^3ô©E™>›°_P˜ç1+F"ñÂFÀP^‚ÓL.p¾gx3üÀò?jNщ~M@BDpkÐû41KŽCÿ)É>‚}ä÷^ª+öD±ßSú:[þ¯U´’g<*¸ÔÝk^êÁ­#ß zÅà—övZ—«æ¿/0ìme‚ÊSæäßx1'Þ¡œ×²öHÈö8°Û¢ªÓfoˆBµ]Á7È€ƒí*¦‹Å¸ht|íAþéÁx/€Ï\ØLÌû€r{RT(:öÁðÚ*3GžÝ÷ÈRDZ2GJ‰e‰­rcÙ„Éì xw>@J3.G8FC!6ÉiQ ¬tm!v?Uq7–@hÁ‹²ÿŽ-æ[ifš=10}õÆuüÅQ²©¬kJ§½w;½k6 °´Òt€ã²w‹ÄP¾Y'¹Ð|hFJâ·û(â'˜øÐ}”'ÝR÷5Gö`Û[k™T– "JoÍÝèìxh²Ìê?‚\X×­¬âF+jŠSþ;øž Y ö‘éÛª\?Ẏr‰dòé-%#åé­{J’¥jk¹®,ÐÉ•V«1u¼‡ªP‡æùn¸®NÝð]ª(¯å±v½YäOþ|!Ýß`k2~ˆoÈNv·‹ïi>m¦îA8†¬¡L‚ÛÇM ¤‘3~½Ô´ŒJ _9&Ÿû_q›—W^µ}\bx:‰ŠïªRNi“z€T5Î@\õAóœµL-ÎX}¨s?9B!²T¤æSâçl+œô>+4vö@¼cqGïL˜ èÀŸqƒ5ý=5riòªäŸríe™T RÀ‰P%JŸÓ¦À¦å›|8Ãtø&Ýß[êV˜ Ågq.[È‚Ÿ$={e]L²nQKë! ³±,G}¦^è‚ñÖ¯P ýÉ_.éÓ@®iz8ZWÞ”NgØ`¸ô(èSÑßt•”úÖ@¬ñ.“ÉÀ.=±æBÊÈŠ²úæAÛVdÇCµÞÛ”Ž’Ðëgt hùÝxõÎu ïãÝÑ u´[÷`@Òàˆ»+>>’–eać¼IÛó÷FºLø'PÞûšTµLäˆÙà Wrâ•ÖM†ßÑÎ]ÞòñèÁí+g ÁBxiŽú›kÇ¡tÚ ðÅ|/LFÃn"ÉÚ¶üè_yW@\À¯t’¼PCbÛj/xÒBœÄtXÌ)ÆÝ'*¸pBkà­£æÿï]¨Ÿ¶t#áyEª«ê zÀ4/ðîd5ÄÞø³f¢îÄþ)t¬y²ùb4=Ï Mc:m'­<åI®}^”Â5UdÚg˜Ú%ÑLŠ?m*½Óeú%èÃ~ciªßƒ{Òìn©–õ¹–)¬þ”àã!wáÏ/²j¨m"C Þa UÑ×ÛÃ)h¶ñgÃ0RúÂÒDƒømâ9Õ¬ô2ÛY~þæ{kV KmìP”Ø_üÄÿmŒX>ÔŽI&cÜ¥(ŽÛ­lpPŽ Ó,.ÊR˳Üz¤á2®WM9Vr“ „ÔbÎxƒoZp[á½Â‚‘ß«Àx¶ýµ,©n¯5ªËÊ¢û¸9Xþäyðã¹ø¯¸óãÖÿ è=Ic¾7ƒQ² ÷xç·Ê.šˆ\…tι…MÚýaÙ3«7J+MŽ6_³%…ôWÖD$FHž×ʉ’‹!{®º)2†˜5ÒÌþ*§aæ~åI]†Öe ЀëÕpmÏ:§ô¾ûò'Þ‚îÌõÍÄÁáÛGø‰ÑlÓÖ 6­Ëä’´æwGEµMÜLÑÂã±PÛ]à~{”Ö7ÈXÛo¥3Þ,¶ÅªÊ=këJ;L‡5” ù„ù\ÞÖáºT+õ>â>Áü„ÃîLÎ<!‡ƒBòÈç_¥òyˆÞkLÀ÷”>Œ×ë¥ó¥$RtÖ&-ò1èͬ…Ù?ÛK‹MNÚ»Í4÷Xx»´‘C¸sâè±'ŠDNo—\Œo\D.TÙºD®]Éy,€ AÆZÓtY@”Òqýæ´­=Š<ž½‰qQÑädäuzSd]§Ív«8¨ÇI4WžÕ£-†Ž‘+1èUE.ëÒ"S’#Dà™šœkaÙцž/Àñ§Êû…ÛYtäyv8¿(wðôâs`¢Ò ïÇÖáS¯%jÉ9œEjw±Kwè÷„Eëx{öLZ‰Zß“àç*²’ìÝ|6Ábî¶"ÌY]þ]j–ÿÕØVpK/Ñúfó6ü-³T¾=aöN¨âÙÇ„UBBÙNÒöT:ÅÉæ±Ý¨Ûö/HÇ"Ý?V6’M[çØ}6.%ÖŸ‰ Eΰ1PÀ][nåÈ×¥æýn€Ì,­ùžÙ~úY¸ ¼'é~[©ÔmKG0Õo£Ãvü~øßæ—ôEk±ß /§”5n'ÌêÖ_s³ŽTE#¿(.9ˆu'?FëÃ2jèþHû\T=ú7¦bèö ]Qö„BîáÂÇBöa–E›¼˜£MIë”?´ÀõSïR(}Œõ8Ì`ëªF21ž˜“{éè³+<Áf‡÷©ëYT3“fÈ9,Z²lP¢` ý™ôïVg9ÐUþµÝç Îl•å)ŒõäGÿ¿FØ‚Þ[«ø0‹nDKʳŽ~—ùÞQêï¦XìgnÞ~ï™v¦¦‰Sñ‡Ñ¶fõe\UçÝ©NŒ†ô—!˜$ä•Bbé!8 gmÅ`:2`‚ŒW0ñÇe¯¬šWKÀ³G=*&í_2ÒåQ"Ts~}–ãþ ü«náà,®8£ÞõÛ€Ôw›+²‰—¶XÍX±Ÿ$eõ—‘‡†} MWfÿÒA Þe·eØŒõ~#¸ZA÷ÛÂZÝÁV¸ ÑÊäˉÎóõÞ5ˆ= »;_eÞk¾c†ì ÷aäj¾^iùç[öôZ'#@üõ@!âž9#p:ÒL¡˜ã?¬0î*÷´už…iL`©ÛõÚ§_’7XúvN|X!„À|¡-~¸vÅÕŽ¸NvuhCÒ÷ˆÛzº‡f â&(¶Ñ˜%zŒã§p:ª‰BI;õæ½Æg˜³ˆ»ÏFBÐeóÐK^ù Þž)ö8ʈÁóÏ"ÛÞDÓ8tu¢oáúvP%êBüJ´5«ÖOÉï¸U\„/h¹à÷ç‡dYøM­v¦$¤5Áús- ßg„“r 4Õ}dó„”mqFÏYöã°*Ñ„‰\K°ÒPÌÏú çÒd*Æ«tvMBÖí6C¶´_QqLžª?x9¬C¶|÷Ìù\^ÃhÛýe.lÉ]L Gšœ™ÖCÄùòáèš<­æ'ÄEPáPW¬*ñ†ÿžyÿü£‘*¸pʱ–§6±Lö@ˆ¶ë‡î£ss¦ZðÑXÄÀ{GÕ+˜îD>b_;Pé¼âµ ÜŒ,ÇOÛáb‰–µ$‰ñÚqBšnMB˜Q=Áb0…aŽCb¼P õSzåî}‹WHÙ³¾!³Ák¬á=áÐÕCœ“´=û|݉³]µí“¤Àíþ¡¼ k;óÙ ~üÊ,PÚŽoóB™FBÐ#L1›=êᥦ•>ª¹¾™Z­êÊTküzvoˆ/f† ~ÃráÙ@FTN¤/AVôOe'¿x sŽ‚îS41¼p¢÷¯¾6&Ç'ïN¡‡÷ˆÊßApÄEÕPÕ+dÙèªïÌ4?fÿÑä­ÁÜ%pævÉtúäØëýØJ…:ù ^Ó÷Ÿ¼FFš˜+Bãº,(¬3C~¾':ÿw’F± Dq&¨ØZ~Ê„_ÍøÑ/–äè|¤«ßášÆM=ø»ì£7ëM“Œn„ëdƒP™½ñã(Å%%Hdèv!tƒaà*˜ÓJ—Íélðéíõ"³ßŒVùùd2̳=®Ws‹I}5K“z½¿'ßfAF3¨hêØ‚Àñ˜ž¯T\ù‰+óJžÞ! D>5”)9Y êI¬¡ ´Xbˆ¿¯)€xä;áñ‚ÂõŽ$W\ƒ ­&Ø nƒ±R_kUcŸï6{U~G:yÂÑ$–ñÒ‚>¹¡œÿügSÒ ®.ʨa¸áW80“=i $8xSë{W*ÀÄ_ ÜE2]ïô¹ä†¢c O:, 4>‹DG¿éóýpûêíñŸz<)-XÒ%; «$†Ü¤'uÚŽnº½øœOcÀ{%‰Ò{ÏæNðÁB::¡ _d“¨Ù>nJv®Ô÷,SE^aïóy/7²óéIw­šãÉ_|žE7uànŠ\#¡}UÁÝñü~5b©œRt8=bôˆW#©ó"~³'­5Ãé“Ç)`ûáÜÃ6Ó8¦SàÇÙxÒñØFh.{Z]qdD¨K›ÀÁN*‰«˜°B)ÓÕåáœ~5dºñ{Ñ]sß~‘PÈÎÃVäÓ£ …]&Ü,ÚmZ¨Fî6êGƒ@¾l¾1´!xÙÌ!n®Z> ˆ˜¾\ÇÚ#Ù³'~¢-Ø÷­t~„è ‡zciÚ>@8 Oj–dˆÆ¬°QnŒõ”©1Q9쉫x·ayj`$âäêÕ±mÌ›ÐN›\¥Yürè¦7@½EQ‰ í<ˆC阩S&£Ð{V‰ÏSÈiÖ=ŒO0Õ~xHÅV²úª¸]è½ÏËéd÷|dw4%…Ï®t«ôGdµ±'I‰T¾ýQj㨫Ñ»CvŠÞÕíÍÑiá‡.§ªâ- vˆ·Goý–²—~ÈI²¡öµ6…r¾hƒ*T}æ-¼A</£dþÂo,ìo\&L©?ñZÓK¾òº ݤH:ZÍ '€+Ò±¸/œ†‘Kåi“èb0Ñ5ÏÑSPIsï?Ü4UÅý¿á´Þ2}¦×xiaÈ:¼[0ø÷³’í¨m· ŒB(æö§UÓht·,«÷-wC!kì Æã¶\‚å¼·ídƒå#¤aËž@ð"Ú :»8Fdr±“»I-Ÿ"—flÒ!œ<þDVùP¶kýµ}$yÊ.ö™”á–B­«+dâ‹ÝÑPڤрé¨SãJXá ;¿È55eÁ§“âÜGyÙOÇr"+ Oœ9+QøCõàgC ©ê®÷Ó,ÚunztUÝü²vÏÆ°ÿõ6ab»¢¬ãËX!^jcªë;ûY¿ÎÞ·­˜&ìäs‹›oÕ=:6t7ÊIã|L)%þ¶h¢Þ¹ö;óœ8ñx>áÅRf%$ûó4ôl.xc™¬A6A’ã©ñÛC-…‰ô–¨ì ìÎËÿÙ¨f!zÑ+’‰÷ëÑäň‚$×Ï;þÏÅöðFÄãŽÏò7¬°]Ißés="Õðï!eb[t‘qwKS¯×Ì¿œ+¶²xæåK˜Yð6M—¯+#?•úî×¥¨8kÄw²3‘~ûdüƒ>»YƒfÖB®ÇŸ ý¾lY6 î•»ÖÂQÉ9x„·ŽÌ€ñeÆy-æJtÊmጯItj62ä°7{UëˆéÖu¾Ž¡Ê=;°Öߎ«K}. Ïj¢QìϵÜDèé]å塜 ׉ê¶'²œîdúëy4ÉYŠÄõSþ@wq/9…ICJˆÍÖ§\RèØOõždº:çoN£oî#4jei×Z¬àÙØaçút Õß)\i#㺑&D é!…‹àôúæ4´-‘ü‘ÖvŽìòŽ>s<Äéé§ À~r<¸*çβž`<ÊÆ0ì•Ð!}â¾Úp«8‚s)n0—º©Í%²³¯=ÜsטUB«¾½7¥âœ“+΢ÜãçÎ !/è ŒðC£Žú*…È9~›£õ±±÷dƒýN˜7Sºk‹G¶î2üíÕ ßJŒ,pž.3 ”6Ì´À$,Mòže·Ý= iLçPuT¦7²s)¼=æýö…°7ð8#”^Ï&·ž#î9Ì›NësÅ>«¿~‚Uz tð fÉ\³j/1¶c®BÂdy¸¬í§Ök冶d€ãrŒ|HíX#2š XÕú«J›o°+Z,Ä2uèÑ?!ÉíÔÒÅL²23‹K&û꾟žuÉò;›½¸.àö²þ/°œ4ò¤°màÆ9ÿ…CÂA3/†ŸC†¡‡Rô u#Jhq÷57,Ňó¤¦Ë¿‹Tø&a®léSÀ[#û)y™hpu©0 ²ôù=xiluIá"¢!áqAõõQ ð7ìî$O=M¶jYLŠD Œ"„HŽP¥“{ tûðÜÆÎ>arià!óWÿzÊV NoµÜþ# ÄøoýˆX¢½_`éиƔÿí×¥¼v*’%Ëw^–‚QƉ¯ÝœeœjÌÙìê[’[f`wÏ¡.9ÀŸ.€oû-ò£‰¨$–(­C³qp4V”q§ÖWêèÛ«s›äbWo逴ÄH³<>µªëøÂ…ÔqÄ£%²ÜNQ0R¸ ìѪYkL¯URˆ"¶º%²ˆe1"ÔØj¤»ú2JŒ8–;e)ÃשXŸ7O;–ó§š|ÈâaaAª>ô;ä´Ç ŸŽ>íð­ªJ^° ¬îÇ~,j/­Ð’]R_ ÓBÇjÇí;={Ã~2Ú>싚¤£ j S—[Ó»Äa‹!Û8tË8\jfyñTt¤ àá3{µA—*gÁ}‡j‰nˆ‡}+QÜÖÒmù·×™T¹TîvÊNǺQéÛãûú²Œ'½Í¬ à¶2Ãí˨›‘Çv¢¬‰¡G=þç$€'é#Ø>}J5R#¥ÿËCâ}ú*ïÜ v>=|¿û;B0û-¹g?Š ‘ßµO‹;C=FÕA_äs–ŠÄ’Xø;ØZ/zV;,@ÂŽT`¬ Ñ}«‹k7:ûç½Â]3QŸ_2ºÓj“ªµ¶ö;ÛÛÊ)‹u†ÕjSÁÌØ€O^pu¾Zx!¯¨iï.„\[…9—pTd±ø&œÐGXŒI‹ŠwBlX™¢«áÈ.Àø2„ÕüoM"Dײ¶€°)±Æ€ã´($¥dP gÇw_C—%m‘Œ}¢eÁ¤˜ºÐ€‰Ä3oÞˆo“?ð®ïwI=³#dü©ëœ>9Ø„ëcÀ=°ê„£ýÆNÔI\‚¯žzÞŸú>*[³ï',¸\jsp²;ó²´}"j9m«Å»lÖ9)À#ÅrmÑïû÷ ×6÷ÊôV`©Ä(ßB\b´‹]~£ü:ßÁ²ºP#ÅÒ1(ž?›ƒb‡†²0•xÅBmÔˆWQåˆ6*¹LÞç/>Œð߉·­u;îõÓ»L]ìë‘êj4øö¦2Þ“J@¥¦Ÿd_p‘q¸""ðY¦R°Ðþ&/E„€#6 O<2ªŒ#?"A"&«þÞJÖõŠS ì‡ÿîtÅ‘ç£Ôwü!¹Ð›U%½ {ÍZçϘ e¬`Ã)JÇU áÎ<íu»œ4|ƒDXR„ÚP»¢@}„}‡ˆ{+ë(¯´ûÁõ¶Txƾ&êí‡Rïë!Ç.ÆW?)©æÎÆG^2&¼gÕþ}–)A_ ´ 2Q‚‡ù}ÒBˆw¶Ãk¼ÉE' û­d0©ØÒÔ¦Òò4{æ˜;$ø×ó/® Ds OýeÐÒ¢%S¸m»`´§©í¾˜Ô AxÐ]ƒ±5ÍhùËX$O]¦[MeõÌ+ÿ¤Œ^ {fMa¹ì’¯ ­U¿W£hx1l‰¢göÑ?Y—ˆV=mZ´ÇŽ¢»Íø›ÌŽ1з&= ÙL¦é! :š¶þ¸xί.¢ö+ðàB¼Âáã\Òä`(›f:ù¨\”IÜR'ŽRVe¾‚ôçWÐø ÚöX¤èb˜¿÷ˆ±·­ÁXOgvö±I㟠m0øÛé$Z_™šÐÖ\s‘`«ImÙj·SgãÆì†­Ä^¶Nñ´ÚdY)Œ 7þ¥üŒî›´×ð`wù™j}ÁêÝâ˜Ã|d ÔËÈ9í!ý„®O——‘Gœ}‰öq—·ØÜÆþP> a껯‚I”ÄW±éfzmTÕ!½6Þ< zˆU‘©ð%Oï|v«¯ô^Uõˆ¯,ܽA´ŽãIyŽÁ•NrÈD9^xÛØÜ !ƒÊîK“Ï$ôŒQctfÓ=½)°èÚø‹/¡›á‡› ¶ù®ßR!5b·ž/iÜQ:­…!‘qq‹È£ñ¡Õ©&³ápxìû1e+ËŠ‹†”§ÎH¿¯Û·ÐÒB¸KðŸð7 t>çÞ~¯ñAº_Ûö<`èGa×yL4.¨°Hñg|þGô7;ŠôÞ¶éJ?ƒ]{R·’dż¬Õ†øäºŠ/.¼+ðê2Š¡>?ÃÖñ+6sýbQ¼Dòë,+R§ÅÙ 7FÀÖæÈõ¶Àð.˜Š5 ’u\+̧Šv…ÝÚÂ;æû´;j ¸Î¶û¸K’ßöÐá¡Á;¿[äM~€WËbåþÓ§¨M¤51³E«rê öÎL™{>`¦­ߟ{bMÔ½Š(,v`B%›ëZ2vØÛb¼ð„ FQgõ××ÚJâBZ'Vj>”aB7yø®D¤8k”)¬¿¤ã‘Æzd=˜¬¥”\W£Œ73eFâ,w Ц”¥•¥A‹ÎºÙk‹z™¬ªIkò!Í/ÀªlzË*€Ó®GÈe5ÍØmsIښĄŒ½1çð«?´N\øJáH¨ACç?@ócf\O¹æ+‰O&½´Ž» b¢‹ ‹e$ºc©\ÈÔ2ø„…/ã´Fùö‚µ-xéJ~±r’+~ë§‹Uµëí'íFy$Ô…R¤Û§-1gx7=­èëÏgÃ4Rõ×ñ;›fmM±ö²¨e¢Pô„òÔ@‰ðBpO~Ä¡ §w¸k1ޮ¿âílXäÌù$Ƙ譓Mÿ/˨+}dûW+PŽ‘A3ø&J]gÂ*“|}‰•+Y$4ÁN©;j*2-0Gˉþ;‹¬³Ó²0žƒ =D-2YK0§¶Ó\ fùn`©ª0CTÑú•”f¡`:çC—ºÞä¸þöðYÿBéFwäÿ!&U<4ziùßA¤ü)à(•`‰íž^ÞýåÒè9Øtû-Í2îWb”vÇöè4WêŽÌì³àÌý历jÜ_Ls¥j"FÅDˆ¿ã¾zâŒáŸbJa’oeùˆN(íäv/Õ ÒGÓF]µó“¥P€ŸÛù 9aQ=ä9ÛQòPP¤Yµ}+Ïk߉\V"Q¿ä½@ˆƒO»’ t 皤ÊʹkY|ˆÑKs?jœÿ> {<_*™ã»nÆï¸¥âÚ ¥·Áÿ4øÆ©õe0Ntµ4^ÿWšÌ›œúL·_¿½Ó¬Õ¡+Ç×€^Ì:Ä3ç«>æ@¬©SŒ/ê³OÓÎxHï!_]@~‹ú4;#ä\l¹·1•öÈàB )§¸8´f>Çâ“0VÕ9.7C)Ú“Á%è­- ¼ºJó£ÖZÐ\¹-KûÁØh5Y _°±_àn‚µbHÙÝ­|ìY¨×’¿¡ìÊ`"µ)bi;¿·Ä\ë.Á„âóБw4TŒ¾{Ý––Y£·¼xµÍ >ògëbSp¦´!;º¾I­QºÜií·3u¨Tws^ž{Ž÷Úç+(¹’± z4á¨f*›G¸ellªjj#=éYÁTZû !: ïµ>À®ä‹U2ÙCþóNêb^MM- d{qùY&tb|iâb!MSSwøØ€õåÊTDÚþéí§³½²m,6‚Œ\¬šjV7¹Aæ„WáøÛ+=§wψ[®Ö6oÔzïÄNh$µ·ž¾»è6XF¯-Äæµ-T¼ áÉ)íxO‘¼xØNBìѽ¦ð€¡x0Á@»hÛçXOèuËÆ B2ˆK¸Å› ï|.Za‰ù»¾ë²æ™w ýT•rý{9¤ÃôZ [ÇnmL ±Dÿ óéË÷ ã„/­>Ø@×wÊyø1ªõûÄ#Ð#ûçc¤bD”ô`têrJ)ÛI°‡†P,\ªïiƒÍµRÙô}Cíåj›§£s.`O­Â/iÍM ¬Ê‹#Y~݇½Ÿ£Ýìñoc]GZKÖh‘3˧“r2nG†9¿ºy”î­zÜ¥òXPä«Z“¡Žï/EþŽÖ}çH¢Ðlâ?þä‚ôqì5ªò‹åä÷“ᢦU?’•lÉVYÈÈŠ\Ftó}Íæ£mYH Úæ;ÙQ±<~yöí?å ÿLpûz1¤í‹UÉõ&a‘kI…s¬õ Š­ô¨‡ž Q•ô#4®¢¥}X Û’ô­ãÚ‡¼ßÔÕª#þö,Ï€þù°gDŽ´ÝˆRÌÆôл‰ð•0¡®÷^­ qÿ{_b“Ð7öÅoƒùŸNɧï²Cû‰éÞŠ³@Л/þ6[ <'=¸¸ä@¥Xz¥Ãè/ìj¥ÚšLv8…­Jµ)ùk) ©¾j‡tÚbl=?¦¾q×k¦öß¼!cË­°šèŠLÍØq÷ò¬©ùY³›<G½ ÉyAÀ”iõTøR((†fÓC—¦¢*!;ªÅ6¹ó˜vØîËaÄYñuP8‘=ij殞ݼ„ ºÞŸÑù}ƒP‹°âU–5Ùö{‡mó0b3áì.) )® ´nuÿÞ3Vp(ö–“7Za`6Xq\Xžyß`­o[=xêLžì0ßu°½Jr—ÀÐjé‡}ƒÁ.éäZRjä~A&ç~ _ÑlÌÔú¶Ÿ"ey]v/Q•ýßJ86Aô–[Ñ:YSTSPMxõª¼´NÀý°VªªÓ‘îtå¤Qµ»<PH,NºÁС0uƒ„ð<uúˆ5Œ*~Âãi²u)“ÞDq&pFuÐCiAÏPç/Ë—Ó¬‰-/âÍ&jt± Ñr žÕõV¦0Þh%ûš£d/Z£¿´™Þ´³¨ÊñËæè߇ZJ Ì`^äeWX£@Á;P4äÂXPn?<½o6ro;yÃgÈÅ€ ‚ÈK³ê,Q §¯(½R&¬™FœÇ6$Ê“ØJðòç§CÛ={7%ËÜè­IJy^Ôï`­Z÷,›i‰öC;RÖí®üÙÿJ‚(è[É~–]ò-´›§"q|5Οô²fIL^A(ú£Æ“Ÿ=Yí±Õ—Ýæ©À'¶3ž{ÇY°¬Õ¹pøÍœ yA~ŒLÏuæ¸î³¹›^ŒÇÜZXª_Ö¿É™ÀyëdÔšÄùå¿Hù»wB5­jÖÖà6³'Q4—`dÿh%`pâ­G½üøÛË@Öá¡YÎÒVE#¤¸rà;^Ò à%$9œpouo” ²$†ö·È\]·Wtnn”n•5W×ÏB ¸µ­9ŠRñh\0C™¬æ#´-MDë7ÒëöôQüˆ}”LèhIØâ¢ŒËQ|ZWk?ÆÁ(•/m¤`@¢Vƒµ¤B9!ϯ9嬱]ôftDù]yýOÕI„Ã÷ð/ǽ ÙW5jÖwbÏÝ ós°õ[¯×óêtø3Úô\¶NÙïd«x ×L§b$ïUc2ÿ,g¨c•òi|-8“âã¬NÎãl÷T9j’ÎE²i,Dä³åšjãØ®‰v}ûÇb:EûZP Œ•…”ލ{[Ch§h°ÿ ùðdÕd=ŠïÒ[NYo †œÐñ°xÚЧ3ö¾È=Àäz]RVlU}èé»în©¶ †Mvp¹= ûøË¹æeú ¦ …½FƒÙ§cëiƒþD>ð%ÿ/svú/÷ÁÝk0{¤,X&Hð·k?õ)‹„רDíù!ä'€¥O9UèÂÞ;3WòCü®™Lÿü-°[àkBÊ““³Aà3[OŒ“48ÐÞ}\šºœŽ/>¦¯›åØäQmó̰Slr< Ú~Ì –E°ªâEí"pÿã¥\íê« £]4þvÕ®ÛmÆ€åž O¼Š^ê®$NK•ô\SeÐÍqRÖÿœ!©y-“zé2,ýó»ü_vÃ@ä-üG;ÖRgjýí”z6|t)2VÓç΄áíþ |Ú£m m¦CÞ‘˜‰ýo¹ê´TSº>]¾ãK?$EQãß[ ;vSEµ¼@A¤–xDÞ3 d»V¬Òù\ŽÁg<ù ðneÂÒðÈþz  ÇüCñ5g\ f\‚Êi/Ðî+G_Že“Ÿ¹ì˜,ˆØ”Wiˆ÷¦ûj¶iHe™á‹L9²—œ@äë¥q¤¶­bÂ,#l{yÓeÊÇî€Ð!±j†î°TFLÏ Ëš 0]0òêQð(m˜I`”ð.ìÌh…˜á­m ]¤[­N"Ȩ¢ãX;•æ’€ÓÏ@FGL¯ªz£êöѾ„>º¢ô.£ÝB4(ÐÏ+±ëdBÃ?!m'+ì03—/>¿³aq!çÖù¢éÈ€fýêG/è3îozQ÷?›¡]Ø’½<,ò(¿6SÛ”˜¡ØYÖ•¿ w⧆ÿÒÇŽ;'qŒÔaÈ‹y™—€}ÔR!DR©|ÄèºxàþøÒB|DK B¹•5ð!cN ‰ˆCìÜoïè÷ÌÒão.·]Ť² ѱ 5ÅÖˆ›’©ìâ(²ç˜§Éÿ)ˆWïØ˜”p=¸ó ®Î¼ìuq’CŽ@ŠAßÀfΕËcä ¥•ºNòŒÚ‰rŠQ¦¬.ÇøX7øU,R½9$—s!Pˆˆ·pßMêX±tOô=ôqÈþ”–¨!áñC.kâêEºÎ\‚ CÌ|Tú\’ýÃOê9ªnŽ®¦øÅÚ­a=[—èÉtïŞ5‰‚³×âéÍêWG0ÆUŒ0Ï8Â7"b6ÚjyDj¥›HÚŸš®-‘üF©Ê´Å‰#»¡…Wá#>0ƒÊ†ýéCç'g>Yl‹yÉ(“#9ø}«ÔpЋ€Uº‡º„N΀M—•œe•s0íçoE膢+ìXÀ}™ÿg1§5â'²*¼¨Â1ïMFm³|á^•va¾,&‚ŽÜY zi4àjŽÙýB–´ƒa9¶2Kj0m”bïK:Dý§®Nk‘ ©‘5ä˜'Y N #óö°ÀD¥â©¢B+D?î’΋¢av'cÎd—dî?1ÌOšÉ©;u^Íí×ñ*9œ‰Ræ/¯JKûN,ê-4@Öƒ«¿(Â=’t¬F³õŸ3ss# Ô‰lvO.5þk- UèÞ7 Næ´ÛGÒè†4¯–tÔý%äweàí«3‚hKz‹´/,Cáh 5©èc²/ô£r)žÏÝŸçù¥Wí§/¨ 5͆@Óå‹ÇÔ5˜?J ,CúÃÂJÃøý8º‘4á+ìsRÇŒRŒ€9ï®ée%û–ˆÆlÐáép¥imì!Ì.MºñYJÌŽLh!Ž9Àâ;\»t©F~ã/÷’på¯qÉ4w&ãXFt¤hl)ñ% *wD„µ,92Ähäe1m$6ÝKû`¾3§ì×¶*! @kñ1lýÉóoW¾áÏ­Z€Àšž¶GÀ”Ü´Y1Y!³yþK‚“V|ø—Ü‚:Mâüi`Eö›¦ªþw2 n÷ƒØ¯™¡”k¡¸%³Ï;öZ¢ ò­ä´Eðÿ#ßñCÆôM\ãyú›7Q”;8½±cÙÔ~JY¹@TÏ °„™FBsÝ õà›¬ÊE¿Ö;Y>m ñåê¹ÀgCzA¢¬¾aˆwÉYŠu¶ÐÉ“’ºFˆÁO›•³•ƒNöþôØmq\÷Ò¼·ÐÅþŸÖ±b\•|ásúm‹'ÙG£JÈ¿Þ/ûXM]«ÈëdBTI”ÊŽœÆ¯?A}/TLJް €œ1žé?r\Qzö…†Qñípè,+м‚ÿº7âg ÒÉ>õ¥}¡Kƒ’’_ý "-+›br½IAä]ª—€?+ðÇ«ßè3¶ÍÞž/ÀeaÙ!ê™Ç¢œu¥yàýËEp|“Šëý¥\çñ.ù‹ezáW{® áejJs_ ôZê9àÆÄ %|$õ­„»›#èµt˜&1ÈqÐöGöÐ’½\`[Óg“ ³áFJŸ÷×£à2IDQç pÈh‚™òO.°óú?”õ Ÿÿ<áÿ+1(*”&ÞÌ"å‚xÔÓµG’8é‰ tiú5i§øKY’§8Ó™©.±RÒìëô›¦adߟÂ’’iò”\!Ý,µoÙßÔ½XŸ^½†ê­©ö·+¤Xr<«~ÚØ_à@ WÖ•¾M,½¤ùÔ¸c—¾« ÒF‚0>PÚ¬ËÒÊøH¡þnùVE">ˆ–ûUÐ=Å<8sr©`Í-j·Êïÿºa¨Ø­Î¯ôæ…¶kK{a¢±iRèd ÍçDÊi̱Më;òî20$uÆo”ÁtÿBìë‘––F{ 8Ätv'h &0ÐGQ³ÆìʳºÑ“ËÄÜÎ{ÚÎ0ïäìSÕ4¢ ÌNó®(Ö‰«4iJ¹((ïa"Ù¾¸êV¾Õ3ìh"Þ¢Ï7‡¢}ÙLXvRÁ5ÓÓׂ§íÇÓÂã@OÕaÀ^ºè:ŧW]ŸoLÉgº”’«ñì uá­bŠ8¿,l›žƒCTyÜ ± >UxŽ?*iº¾ý¨»s`‘¨]ŠB èpH6Á%ör°œMS@tV$2jð?ˆ]`µ_!.q.?T,]íªnÂ)¼°ËM—6ñ;)ǶQVDë§îÐQÏnŒ*«ŒöåRjÌÀl—‹†ßZf+Èû‚¡&T¾åÖ˸‰—¨„€¾ L$xï›,½”M1é$½òy(ƒµ"í›Yî`¸£ÎbøÚRºØž1¡èˆ”^cÛ*?Ú²é+•GÖ3·N[ONò³…½1õëw®#æø Sc.{+‡¬!X#¶QS°Ò*(xÌaYÐÖÎl½5PÏ&M$y*xB±?Åûã>óêY›«½¸R[p(šQwc¥ëWWcÃÕŠ±|A-¨[4¯C7!Z„3l†§WãZËB—é˶ùhJà©2OÝÝÐÃF§¨TP@59fÆWò‚¤.öd€%í¹CÂÃt—ßöÊ¿bÕ³d¹à`¿¿å{ù&’Üø•ÐVBó!{a}$eõùêç¯ë¡… sÜ,*y¯1÷ç}Ô4AÚŽM ÉT 6!³õFi,ª€@ƒXݱ»•È,1_PlÂEÍȱ5¾{´2“{?ï²ø]KuâP«?4r¾“{;#3†Y& þÇÿ@„!ñ‘Œ‚&²7:ý«ë³>¯ânåv諪[Þ¦1j3†Ý}x…oævl,ß"BõÆE÷g‹ìÒàÙåÍàíðËtÊÁ| ì¦ÀÛµ:9 $É  ®þY 4§ÒŒ¹ƒBL RÆ?Æò²­²ˆmÜÑ׬T!WsÊ“±H9Öq{·sâ¢,cÒÙdAŸ˜ï‚?i<\ýb/*ãÄ·¹XHu¬âg®;êÉ“¦±h*±cÎâMLÏÿ‡‡þ MJ¤§ å—Q´ÌVÝÅTô¡Žø:» F`ˆñ:¼þ¼³ïeßø3m#]§Ìðó¿l›óÙ´ÒžÀ' +úìEåŸ ÎXÔH±©ï²î/â `¾õ}à(s”í`A @`¥M"ûcÚ€HˆÕZ¨Å”8¢f¥°ßA­ô ë´,«Œþ@Ã`ûZ¾E5Ȉ *bý2•/ÈM[ùZkü/×Q|58í•Ü×|‡Ý"¼{õÚ+ú%îXÉú‚­k©Ys4 <•Þîm`e/:¨Ì­¸HÜë—õºõ7¨Iäv8ËŸæ*-ý]X&Š$ù:@+œ%³ý¥¼-ü_-ßÔŠ6Œ Ñ•±á'Ó«Ô#€¡zvl_¦ø$W |m•Ÿçêý©rѨ™`¸là EÔN®eû»ÚB*,]ãÉõj¡0¨p¯.n•]ëãõì. 6úë^ûJ_«Wòt¬Öݺ{Ã@ ‚{tß»‹|(ÈUC~* ŠöšïØ™?êL¹]Õü5džËN—íÛøWT !oÔ'6€ƒ)à³…1ïGéÕ‹ý{4‘ð±J¥/à’Á„ }×J?-™ÿ‰Ø&‡ÿ¡Hlé®wM»úcªkȦ½5;øuL'´•ôø7BÁþá†[@;LÚ“¿Èv-*h&¥ŒFOø`Z^þ‡=;ÉH›ö36ñaÈ›f¯Ãû\­XþhB›©ÿ=¾€ù““s|!¾7TÐ>tžò/²9´Ì½û˜oàä³W@µ¸Uùö ¡)Ô¡îƒØº{gú.ÍÕ«˜±¹>ޝÊj %­2óðk~ËNÐsHS¦?ùV…,á"Nxˆ“<ÉFGƒ&k(ƒõ sZ¯Ó¨‘ìØJö­uƒ|÷üøçyom¾i—1¶¿znùŒ\|}F«ô" Îï³à½EXtñ‰ÜAJ±ÝË #뀦£„8ÕÅþ¶èÉF2]¢¸|6—x;óÚ"¥•¬¡Ì§ìI¨¦VJ³&HØÌÊŒ~ê ÛSË쇧.¢Z>SÃ’Ä œ ­Ö•÷Ê7Ÿ‰DüƒƒG#Ò¤øS—-žû£N_Là«ÐAk]A›¹Z©sÛ¨äÎä­úÙˆl¯<|êýxó2®‰¾–iÊÏ~¯ª´\rX"“ÐP*ßÂ/½ d[¾M‡¦óÒÚûVZP’‡ {Ì|Gøw!hòêV,—R€BÎ]ƒ¾Ê¬@ÐA5|h&ʾ°ÐM³±Íé4] "›Æ’ªp×ça¨ql¶°©]ÄÊf‚57óˆVu–`éì—ý(Èd—ØH¶ï|èáûÝ×Ⱦ/þ×£õßESé}Ÿ†!Œ–C;Æ5WÛÂBßdüŽf!mšJÁS?‰ù³èéÃPa’p”g‹ÔÜ ŠëAx³G&uZÅSÌefã[2Šü ð°1¶„NÖë;ñþtÖgÂ…¾¬†„Ê_<;KC’ŽŽÅ¡(ò·Eœx–ø fñ"ùÀ–aÎõ* ö8Mc=“;;›Š«ô&¨µü×s/µrŸ¼‰D dû$o—ÝU¯Rßeæ!WÍž¸ÙY2—J_«à¾ÎëÄÅóÿU0Bw¤¡wÀpó¿ˆ?ÙàÞ§V“½ð Ô‡´æFã^Û¤èñMœÈe­ð§éé¤Öm¼Ù(ùÁZº¯Ñ½¿è`DøÅ“Œ—Ú|.jþz´~ç[Zsè˜BéȵdîM þèw¯o§”dÑ ›¤×¦.pMŒuÎQº°} íºQ‰ªÊ‰j\…Š7uµ_7ß*вLâ²9¸ÜÏ ª2¶¬ì¦A‹¬oø?Ô€ 2½ÈûY³hzçÈ\º¶sNö+¥(ô1áÙ…ýÕ%öŒAwŠ’UFTó9^¿6A‡©ýÀ.àNl:5ì.ßæÑ3i„¿.]«,bÂÌ’È(~WK}…{û½"h"fE®=àOGýó°V¦U9Jû¼Ú<¼ñ÷7©Â«ŽO'QYÖã?>OLðLêq•ZêC„€Ýû}è¦ùÞj=[Ìfd- œEl°€4rQ/1Uü·¼‹îæÖËTÐòâÝà@›%N´Oت“`Z†É¾¸}¤ß„½^ ²D;m„Ýrrp&mÐC¶‡0>õ®ï@´\®'‘¤>x‹»i;JÔ=k[ÁwÆÆ*ª)<¨Aù-—sïÝlG@>ÙSsÄÞÊ8€eÂBëÇqÁ2–âb¦ªq´%ݯthŠOž]û]âgwö†]]PÌ}ß~”S~¤+͹Àª¿™¶‡V«¤? ,ãEÃÉnd)½AR¢Q BŠŠÇÔiMaIa–ÏŠ’EÒ)3„òÄð9wÀñdüÂz‚4Ùb FRS1=ÉÞ9qCpJÀ(QXUµÚÐ÷~ƒ°Ø‹þ2Ô¨«~îìÎDÜç£L½»vàaæ#Âö§Jé`0׺f^ŒŒq«Â.ÍáŒj—¶ˆ“pt²«·¢Zk‘s¨LyÄ<üÿ&©òph¥©å&ñƒsTjÈP\C{MÏZbÁC)ïÄèb¼È_R¦JäOo>$YôØ çP &!ÝÆ»½;j@Òh“j¸gÎlBæn.ØN²®Aê-}'¡f¼Á䈘Ïu6ÛC´ÎÞp³Î8á ÈHãó…>¯­ØÎ–jï ƒ% ÈAàcKà”Ë6xpAAƒFE!g*ꥣ:*ÿJº©cÌ—KUÁ¿yÓ¦e*äë’¾ÊYíg.Fº™ Pý ¡&å¾Ð" i“¨u"u£÷#âúXʨ°3ë~ íbzÐsÕ¢63²KÁ*ÉVFÜr«Á d0‰u‚ÅØ‹–ïð/€g¥„ò© h\hM¡<ÀÂ¥>‡U¤*‰º$íÓæh¦×Ÿ.Vó³2{ Mõ6Ù,Êt¸H¢Á½˜!é-Êã·šqZ»-Æa éç¡Ø\Šší’VB×´LëYŸáì(µ+MrDx"‡z =†i;~§¢9!ËðE´xš þ°@{ˆVó°q€é@õq©s}@Iꢒ)ä,1d#‰%ÁÆIÝlâý(šCÄY¨íšú¶ˆ½¾áG{µÅ• 4}OÔè8¨•Ò©q€½­ a†!†º³ÓCf ÌðÌ$b}â´à~høBi\eHÀ?Ýq3+ªKH›·Ë²öƒ±ØÖ6Æ}[jʬÖÄÑF–)oEöÐð*É TJšc1²fQÊzÖDÁlgÍo˜@ ÖCK[ŸJ^âùâíªmXŸ×SâôLìöÛbÒ9þ²«Íþ°·,&R§2GSeèFMÐý2máÏ#z‰ bî½e"¯‹L™¿F¤U "îÄsDkM¤2 i ±+ù>îOóbž5b/â±~…HhydÓ®Ž/…oüýH»TL¦ç¼>[ІN0൵Dúkà ö–Å wá8JF¿öUÕ“ñ«íØz+ëfÒ3¤Øwpù–ðgn®wEyýó®'æ 57Þ4J ¥i@>Þ†HþS½ ¨Î#ì4™aIA/VÉ|çjIë»Î:–ÁZze¹mZk~!¦#pþ“ÊÍ/Ô{ynœQ62áÌãºujÄrÆ ÎË)…NR3±9²´ Ê]þ$DÞ¡†Évèô £?YêEuhbƒí¯ä^–:Œ§†ïŠR¦¿8t­bD͸í¿YU[¦Oaóæ")`ñ“eºÏ ¡Ü*(ŠÙ—‡GÖtÖI9„±±j÷¢êMÐØîtÀ‡ôIe~«?Ú7g¿M.$AŠ¡yÛŸ=VPÓ•„£°Ê;ø:pÒ:‹k/_® f@ˆt±ûj “ Å6¾W-ƒ|3Ò6@ÔlÏДÞ_4óOúÑcµ1Y‘ñMµyd¶ör-'`¹5Ñ–rÀ¡E+!~< âƒç+ÉNXEÏJˆÑ‹Ô 憫9t›ÌŒm¹6P»åóñÄOÂ{á¶æli`LÚÖJZÀçYij%/qŒü~žse8x}ûCMê‹Ô=¿S»ÑâJ%-€3U ªðŠ˜h›š‡SnÏÐ7 4j7kóš|ûx˜·gcÌ«øä¬Ȳ£gUßÔ£˜­ Œÿ«¦Æ /%¶ÚÀNï<^8ÃVæûâ·!3½…±O-Qô$;Ðjø‘cQ{ü-î·n›4$p‹Â¿'}€©¹˜äd€Û€KOÐæd5ÜDUéÄЊðâoÝš™3Bã¢Ð‰Ùý=`ù‰{¿9kžÏTljP{]µ³êO^4¹–÷#HÔäñ^æOíð¿ ˜2\=zPõì-êNzŽ ?>Ô)¬ií+Þþ•›É(Õð[تÏZqðr)Ð?NÖòSÀ_öí˜éÉÐÞ•°{a$FͯÛí¨(«™8"´f»ÞWŸ©ý.¿‹)ù¢Ùžë˜é 1R4ûvTžºT + *(ÁkN­ü½mûKÕU23ŠY–PâLÐO‡>‰e'æ¼hl"õ¿ð–²Ø &pGÉCA˜+Ú&Fl ½*éË=©[~DÃΤyPß/²…±]ò·ø”o4”b`«ç1Û»JQCû´t±üZp9%M­½%÷–h{3§žª[wðuiÓL˜ü•HxÆ£1ÌŽC>’ã¬éî ÜŠ‰1HGPBšsrU}ëCÙLŸ\‹ÿ¿í ˜œŠ7Ù»ÍE‡Zx˜Î!Ȥ=ò°u`Mî-ÆüAóY$Q!ž¢•‚®Ú$‹¥.©E†BT¦!Ȭ.K7y¹fÐ †Y€ñ5¸›ÉøÞ°òlæáDÛĺúeÀG9ê:Y¥$’.×=ÿ–ì&.˜ÎNVgAº—*H…P\c÷Ù?/>é¬X¢ÆeÀäµÖP 55=.g¨€zEúu|–B¢î‚â->y¦P'ß¿ ©Ìiðk£¼qì;»{ÑÏ•Zxþ÷ƒ´ö3µµ&w•[™ðœÛs8±#·ÜâôN3š19+×µw‘V¯0¤"¿Ytˆ9ºˆûxeE;QN éGäMç-³•Òýxž§mÀ¬+'´0–¾Æ3A^ª+ \bø¼zgTt––õi‘±{옦k[x_“¤“ž6…*«¹ÐM—-†ªä“9_ï×[ñ Šw)²|í“q¨¹4 QÚ¢ò€·‚ þ©ðL#µf<1|Hy÷ëÀIˆE/„JšºøDTî>4[«XŽ·6&B,;O¥É~‚çXqÊz7À,Ã9"!l²#>$§ì‹Ã¹ZÓrÚ?ì6¹Üà¿ØDg•õZúÚ Z«§W=‰¤ÖVý“ˆýés¬Až¨~"Ú5JŸþÇ’<êÐy92zv [Bá¯5¬ÓÆÀ¸*9ÚŒS ‚’5˜3íiBÕFœ^¸CL|§ROâ˜:yöŒXä ¦.z< ‡¤Æa-}öu®]Pý„²uúQÒµGxÕLW%BغýU¶™®šS•,·•Û„”U.¼¤ÉŠÖOAÊÔ3GOáõ)1X‰H‹$`•^P™‘RšºÁþuˆH£A£ ¨ú%øf8KÝ64^ƒØËG¯ÄkƒFžY…·×Èññ'w¼¯ºLnInc?kH憅§FþÙJÆ¥ B§äéÆÕ4¦Lnb•á’PPõNúTªü~Û#;z|ŽÏ˜BDÔÔ¦´j»ëé(ºZuaÿy3ì¼F2YQ\ΙޠB–áÄtM:h7# Úb³(Èz_¹©U$ñ†’­7FÜGÅ•è{÷MPw•|aÍ_K¡¦$?hãK$2" dPBS¢¥4ç£8Â,VKM ¯qÑŢ_nc´-.ù1­ c1×o¢äZ†Í‘¸óŸKRNIWršƒÚYýÖ93P¤J8Øoz<¬Ëu¿6ÑÌR̘=Ð…TâE¨yÈÆleGÑOÛgYÓ^9†0Hê:¹¢~úõµ¬ÄsˆÑ &Š<¿mpˆ•–c¾ÙwßÔ("`RjÃYSžtÙÂÚü%ÀDØÃÒ;¿ñôvZŸ_>ÍÉ™UùÂŒÊCoLꎅ›~µ· û¶l¼aw·<œÛHÄ„q}EŒdCå™%œ–(\vKzi@³ôwlðÏ—KÝ»Ÿ¥¬‰×.˜lDÜ8?yéúÌÚƒŸ=uaÝ^ë®2’ßâ¶eo%T]q»¶Á‚ºy¿Ô” >¾‚TZÁÞuÿqf!æÅ•@q$È !8„i~ú“ï{ã˜ØÜ' Ç’ö=FAMZâë$Ê0»z©Ì$Ï÷ bŽ3XW51÷x–;±KjãÇ‹2KIT$­¡ºúæ|mJ-‚H&1m:aÄéa°I˜ŠQÅ¥ài^ Ȇή’ìC(P"6s&ìf²€“~„ÀŸ‹Ü2'™VÖ1øú¬W|Aè¶ rLM½cíFÚÜ\O–(UÔ› 81à„v»<öTx‰€«¯ó&åÒô‰,hXו*wÃäÆ+Ör’Déx¹ÔÍE™4×3©òºFy–ÕD¬cŽíˆY™jƒ_çq‹Ï08ô~ò¬o›^™ x2®¬´Çw•ÌNû ²ÂR™Šù"ÔílZ5.†à©ª\%Iÿš€˔`uÿ+V#¨ìh«„€K8ŸöeÔÍ»müÌ hËõ,c3ØhtE¡ƒRŠP\(ü;ºÚp5¯Ý$mLôßg.&–HY1°€ó-Ý£Ì\°k< ËÚ0u¢à?…ï36 © ¼kÈ3OQg› *°º:ÓÎ[# ©j´#ªnê"yóêL–ØN¨f~þ‚ -3¢û§ q)$äÁ›F7eÖ2±èt‚ª²Ç\k.hg¨– º„<[Oðqk»;¸aW—žd\yDK.i‹Th·e¤•PZ•˜¡/¸««Ÿ»­1u·|ocÁ)oÿNÛ–Ê ºbà0 €#%Nwûoþ²Y„éý§šn¦Ô'Èë"r ¬ØcK“Ë]B¯†¤E ‡×4 ,Z—ϱð(aÌÄv=uʳÙ_H{Z™ÁÁȃ-h»ïbÓÍŠ›žmf^ò½rò‰Èú´V€ èƒÉÈ£¾@ƒ+ õÔ‘¨”ìyµ¡„|2WÁ8CJ˜YcIVø’£ ÿŒ(¯ó½(7Ko.m›¢$±„Í’ïŒÅÿÕUs*.¹bK72BþÐU+)ac„‚òc'ê¿w ¬x©Û²o¥¹ú¦4’ «s?Ô¹ j ‰ÄWÚ9з`á³§Ö5¢¢Îù{ÒEE‰žVÿº÷Ìîèv³¬\iwÓîÒ‰õš(ãr¬^€±YáFb ÖI#.¼GžôÇÊyp‡+}›‹;õ*ëžïøbX‰ÏXåÍq¡ ÏZ¤^Žó×5š±º­¿z÷] Ág~‡NÎ\À4°{¹ŸÈÀÏõ|V8BÆ!êPCY‚¿7{€ÉÆ23|JZE°˜T  /µó‚xáq[ò4Øÿ"¡ $¢D¶06®ð ÄÏP8¡Ù˜d«hPâÃÄCo!±'µâ§­‡f‚Xõ\\­s±Uâ©ínŠ›d>õPªEÊÄ’‘Õš“¯ò冠KYue¹[¡7·§ü6ü®9¹HÁ¡_$m Žfòÿæú¿8×TŠü€±rΗ#‘ùé^òƒ]éÜÇÖ#AãM‘)KJ}+-|ÎÌœM)säu75Þ ¶Q} d«Âgè ZR  ­¯†Àö}ªúy$™±M(J¬(‰'¾øÕm Ó¸ËZ `¦˜Q1öM3õ+ îŠõž^«*P ôXg|øy|5ÜSHmAõ9œåídç%ä?t×¢eûx¶­Üái¯cŸ_E_Pƒ#tÒ›rH<í|šŠ78Ÿ¥3%cÙF¨»w‡KÏrvÿË)«Q* Å:œ­PbVíF^´Þ9ˆži¦gROë@ªE‡FF9²åV¼"^ÍNãóAE^n²4/^!µJét|¡tã¬Ò]IŸ{ºD"nüª44z‡G¿°Õ¬ÏGÝÂ'Ö¸£P–.úã8ßTÂDè(žÐwTÇÜü }Y>Eáýø\ÎÛ4„ϱ&SÍ25î7†wûÞþŽúL>'›Eó,1Ðf©×'OÂ&Káæ“=ªá ( ã'ù®i󸂈DAn@o8ãw( ƒ±¸,¬µ!çI”t4õLÂfF%ëÜÛ)™ñ€9kýU &øÅîëê°ËYÉ0›>ÑUž¢. ûèÁ5.±ƒ#&c, DÜ+ öýhÑõÄž·,mˆ+! Cõ!åþÑ1à”eh÷cèh1pGx¦¢øB+½`ëà³Àý™á¢EôM1:³`.íî¨âx=/‡ªn òŽPá‡ÛJ 2àpÚñ,XUì¿jË"+²9ú“fFQígës/vÆÕŸù»iØÛàÁM4uo·¯ö<Ÿ‚ø"à¼ä.&¯8x‰Ðµ­Ò̈́Ź9d‡JSþÊùããº6-9ÉšSÔµ1Šš¶!©@ÈôÛ ]Füìú\nôÏ+_"„T»óÂ=I{p$§ê9›î™è’}«IÐàšUÚ^ão)[Y–ªËâl ô×^A :‚×WЄÝ\³ƒ„±Òò,Y©a:}î¨BÁýa1næ^A‚ žžz{ŸŸë@“!‹:’'êQ I_j+Žßü<Ð|à¢Í$p˜"‚YÍØ¹ÍVÏ( ƒc•9^¬{WèN…®¿€¾HÉ!l±·÷ŠW™ÊL{VWZÏ“$ ^W»¡Ï㎰ ãvÇÅK}/0µ^ˆ¬3®X[Oõ¾lí\Xø]¥\¨½b@«‡¹Ÿ • ˜¨ÒY[ËZTÖÒ·€‰ÿ¿¼ñÃäZ{ï -Ô,5PqçŒGC#1•D\Û hèÎù'ÈÓ‹ÈV"vÒ¨Ù!Ií^~òÖ#‰sU2³ /žŽ]¸ÎCvà·àEb·¨"%$}?Kvð²×¬©V·Z®éwÜ9³DÄÆFó¼Ù<Î?”|Šf"›°['¦äñ¼ÏÓ2–yÞÌt®E_¿ž—i<;¾‡nbSìášp]àä—¤t–7naƹÅTþªÎ nÖ¼M+~îï¡&NÌÔLM[Lc8ý¦zZèSp,£¤2[F܉§=E”:â@r½UGàK­š­W<Ìg­Î¸£vC”uøÂêŒ>~™(è ±–ôïfiiý“Ö›°MЏ~kßaí«ÐOf'V?tž°Ô̾fÜ ¨ª@?r’8B™¹2"?z!ž0À/(Ò½Tˆ>óYyó¦“è¶ûjTqp¤zD»±OiRx–™ ÔãŸã%Ø_C7úspû:Yˆ)Ú¶t'×Óçk˜ƒbá/ø oÚAÎ𠤯`ÏÈäµn5ã}å!*\ÖÀ/ä…“FãTØ,ï¤<ÇxÒí·²Ô8Œ#†i>P–…µÀcc€'ä m{¯óé…¼“Çùù÷Kk!æ½Vϱ—Aqî¨I+Â{¹R‰0W±oÏü(UlzPj­þLyË#]ÉÊ&\¨[«áæ'¿õB. ¸ޤ,Š•ÔƒàÀ°eÊÆÏ°™Ó»“Ê66¦‹ä¦ÎgÄÒ½'bF£8Œ [‰SÛ¤®€RÐDømiCÐÕkûÀœƒåBÝ—輊OÏœÍú¹H@»ô è§Åüä‡(É<%ü`/à*„ƒ’xŠ¿{ˆO­r®fÔ“6²g ÛOÔë)ù0¨¢>±ZÌúq¬Ç—tÌDŽzƒècžKn¤ÈË9 ºà•+hMš/~%lƒÝJlJ+á¹oâ;ߊ{þŠ-¹õ‹/£}ø¡ì_Ç ,&b»ƒŽˆÔ¹Ö5G¾Ã¸¥ë®ßzF;@ˆ´åjîws=´-šäÑn0»esÿÌ4Ö¶Þ>í§þˆï¥NRÚ¹Òb]Ÿ}á$œ²òô.™»8âq€Ý³î-Ïf.ÌT«€ÖþåHC&ñ ?/(›|&r]*ΫŠ0­;¥Î¯WžÖ¤›(!¹%mlÊÓ‚cÜ.q ¯ 0y·É2„â±ÁÛtt]bjÉî^P¨Æ7ž”tÁòÜWJë*þÄ%n´XTèIML´7É)%L,ñµ°1åý\à×Á€Ú£6k[É zªã+ {©U<½CÒõôI‡¬š# ¼°­Å;)ƒÝ¤[åLN'±º-áŠwׯ¡^ûõKBƒ·Ä½·eÅ¡½O}•k›¬w†’bÃ+ö?$Í¥Ü3ú•©žIjZÅm‹Eè­|:÷`ˆ <Ó/ê Ér.SH™/ž{‘‘¦I¸av(n“Ïx°áw0ÇÆb€óJø7 ü,u¢˜£öŠfµ+別¦5‚ßDNª'âÀ­é–ÞÁ?ÍaùÇ‚ág*ßM ÙC–R³³†±ÁØöœ—´DË—o3ÄíŒ7 ïÍh"9ä(ø§"6ã/‹ÏÂo¸YGÄ\^¿›uf¢1¬>†ãfž¿déCÞág-"]wÞ+Â1ø4±©v,Nã)Õ„vÒ ^ æ±0Žq2ôV’€¨`ûdÕVˆžÌ¥m¥·¦À&ôƒ¦Bj‚òÇ ÔûR½ÕÍ9Vc-\¨9¥ÒGò>á©,ÙkïIHá>›Ýî%¿…Ù}ÈTŒY>]©ÅV†}·ò™2b4 Ų^+5vŒ^1þ€Â8ÐÛ?t_)Ÿ§Á‚¾hŸž°‰q[øù÷µ2_„ßQo$V>îÎüGêÞž±±¼/¶ì¨CÊÇ=´4Ijø»(ðþÈÀ¾ u²Jé¥@Ê»"QfÒg>js” tçÓ'Z˜A¿—ÔªgŸ~]=œ.÷È¡8‰•;"0 sx…#¶ ¨6†#nÈâwh7ýê"„:íZ{±è #úÚ‡îÛNs‡-Í¿_#µ¥Õ±5.ÅÅS5çŒ'â‹rsÎÅã÷Ç[u~1HÞ¼Pý›|ãîk?€`0Uah¢HÁì V§+¸«M =®tÁ³Œ r3Î'õ鎈xËYxEªC“ìËC[à•­¬î²_ºú{TÍ1$S¹C¹ßò ªV&ˆsr7ˆ%%Ö´»¨jWHâÞq·Rõ/üEX‹—+å-nïíÄMû޾ÉÖÞµfAîÔ0ÄP,⌤;ϧ äÝ®ˆéÑTvÆvV¯{vj¶¾c|ˆÅ™óe¤7çÆ«€†´Š»_§f_å"èîsFæyï´?º‡¢S3#lÒSІ.ºŸÇBQ‰Pº)0ü,Ä##ÚB ýnŠLŒ‡LØhU@ÝÙÕü! ‚lÀ›Ç .–ö(÷¼zŸü<½­? ")¶«bù yq@i%P,ÚR‰+qÎ*xH4é>Òan-R¥t¢ÖtÅ®„B‚™ËåzZ2«IÙv= ìÊ;P0‹úÆë~ç®ò_']mÉüpÙ¦@‡©kß6ÛR,ç‚׆dTmqù¼Ò¹aOçmR:¨‡ ©ª„©ðCvûÊášÇ‹5Q€„ç+u2VM®œ% ¡¯±ï0OÔ°\¬îÒ>ÒW‰•g¶)Ãú¢`i0º¹.`õϪ+ÃY‚ =ozÊ@ë…¯cU †fb_3=³€ó± ¡ÅqãÓ,§Tl·JC-(I‰â†”ÕG_$“S$¥ïpž÷(ÁõIÏ©°8ñQ’#È­¶Ò×Úî¼|«|ÑÏDa›qæYs®@54ëèGÖòþ®1ïòàßÒ8?:Šõ§!»Þ”ª:qÉ2dZÜfÓV×ü9‰;~WÀ­âá“iÚU `Ì‘Vjº;­–B˜uQ««joL’WÖ{õ–Êy[ˆ±SÁšqòxñy$ª’ Ñ€AòFzxÀ‰[¨7 «, i ûÍ<¸C¸â….„ÇñЉ»O!㯪ã_ó¦ `£ô³-½jsè\úœWLâ›Füø«]æŠÑ}ÎÏk«[H¯x_ÈNêM%ž2h)ëT–T=ðÅ,шÎP“׫RRêâß'ûaËo™Áüa7Œý€B?“C’€ë)Òô³ÞuêÜ,tvˆë%à¢@ÁÓê‡\ÿ 6GC4cÊ=ä5ò󀜛e&«zòe‰‡E™“„Ï)´ —ËíJýç)p›ÇJþ1¼œßá‘ „Ïš°é”­ÌœÜìq¾þ²«•G"ñ½lŽÌxÌ4‰„ÄãxÏCÖ•%…ár7»l‘i*›½wì˜yÑ׉ŸÖ­¦ÒŒ3Ö”ø[Àþ‚z„¼Å s¥PöBâ%N¸„8Mbjò¦¬ VkCZÊŠÂSðÈÕKÀ=ð\°×a+ :\t*„<ÈÄWÅû»°à 1eC` eDŽVäÀ‚ *ÎUþk‘fç)Ù›£Ue8µo 6P;x,ªÍ kz¹»OÕq½ sBxµvûks9ÀIÁÌ$þ’\(ë[ŸVuR±Šèaɇà½õ<{Ad£§$<íW÷>6É5_ï!}v”oºN»k¡là¤[ @}s Úuº^þ\ådððúrÆ\Ìxõü7éïÍ µö]ë#{ù” ÖnÙNÙ}‰¨ñ(ÅŠõâà*‹rØ.…€­‰ri,vÇ¢<ñkñtf=pp0ô7v·Ô†SaMða‘7Øf¯/£þ¹Ay.Bí ‘˜2øŠà x;:uõ"yGêgdO_3ú¬ fÕ}=?ÄtUPÁݾ?ŽkªðWåäV°„xb³½$j¤|¨öpûÒ™7fc1 ü¤53¾Ð‘ªèŒ4­j/1ÖÒ&M Ù§p)^ùÎw[}7"wWŠpu.òJ©bÒ'Ï8*úË›*F…ZëOYiÉíÇŸÌúJ•H¨C îjærYkÇJáЕ‚ÛáLçǹS=¼@d¼]•)§uÂSÖå•WöpW„‰s¤åAcÛk¿@ž … lÄê¾<€< •ík¸Uœr1}C!p¬<­EÇ—Ó+ go–\O`ªkyªŠèX”Qw0ìPÒ¬¯¿ý;èš¼EìÏ?©£Ó±”ö(N‡Ñü8ñõ¯-ÅÂ)ŸeoÝèurÆ_ °ù$mýIÕe”VóÙpˆúJ¯ÒbÞÚÄÝI°0=àÖ3ÎiNa={Š=jTŸœ_ø[ëê‰IÃlíî¹[sfŒ±½LšäÍÓhB7¿ý’´Þ°_ä>]à·ÙòCy8²`íZ¾ž`Œ`ª˜zvq4âó¼P¿6rß2³ô5±|¼VŽær.ž§üÒ_ ™2‚@Gn^_, Ìu¶@Ç.'i‚R Ñ<º%4ëÄ$Øôñã`n¨ºQôB'í‘v±VàkÔæÔ8ƒvâ Öbž7ç»W—xž.˜ ½ýä\ËZ¹ù÷ˆÆdúHŒ¿ FrMØÌqƒ+ùA±M©/¯%íÁ5\vLà.ºß缿i)„8M˯O¿÷k¢ã>$&û+XôÚˆ*æ¹âay]´urˆÏv•ÝÄéÇåû¶öU ;RO8‡$¸RÃ%`½~ËPta$9¼b2.X§’’–Ù÷pm,µìÊÚг=+Bõ‚3‰`¨,«Iæ› ‡«~5ÂãʸžÇRzzŒI¢Œ®«h=„y8\¸Tp;›_Ù»\ìÍŠ?mצýmp+S„-+Ã_!BÛ ºWÙ‡[ÌcV‹ž2NB«³ÁاH/$ï už@Ƥí$‚¿ [¼8ÅDj [\[cý‘Á ¶á«à‹f‚>ƒòIu[QQÇ[7¨ åÐEë:cS0`|…\5Vòâfœ@‘^çi²ÝF ÅxÕ¢¹¢zuþÌl««cLD÷׸ …oð üåxøÃ¢äÖòjìÃ!,ÓQ„ –ÎY}+&8ÓD†Œ:­=Æï¨àY¸>˜¸ÄÅzmf¼T*û‰+ Êg¶=ÅŽS¦,@T{˜›C›¶iOBˆkT©ì‡ÞìeÂDŸ£0JÅå¶Cp ë’þÍqˆ_5V€È=†}"ž=ݤÀ Ì¿%0€^ÌÃøÊͦŽ’Tœ½§!¼-ÜÿH‚€ú„Îr*¼$ßøH#î7ê7i¶5˜j y½>‡Éu¿õl²,îi–Æéq¦ÛPk¡Áô1uÓ{VVCš7]rŠJú q½Ob°ŸÜ³º»/ÄêmH[æ¶ æhì‘É^!§»«ß&É6“düΤs˜`Æ„ Ž¿{;8rs-ÚÍ”iÛkv9ÒÕo)&HqOgŽAì0þKý̇œnÊÐgtk£$ì@8Ik-›¤ôêZiaÓŠEÑ;†3}0}ëȾg£ÉêXˆÙyZnä3©±’%è–¿šÑÐætuYǹü^Ó¿X0–y½@Xú®HœèiyÙnC”k©sRÉÏuÀúó9¤"¼áß. ú|–+*ޝS8ºw¹Gý£yP£þˆý}ÃN=:ó…‚N]ñ$°,[ 躺ÕIöŸ¤¨.o¾£ÖbÏ{ZVŠíkc­WÚö š[?Ép1îŸSkM^NiFh¥^«K6Aº¬ÆLóü:¸ÄUïOàÓží¸¯Sˆ‡ÇÄzrˆ‡›)Êl8u#¹H2d’¿Ž›jã*?ÙqÓœ¢Hœõ`B‚j[{Lêh˜òk¨›—|µÇsÞçrˆ- ¹E$>ˆM'eí¿j£¬–°\‡þBW"®ÂlÒ}áBÏx@Ÿ«ìÏq°¥Çr¢”)*;Z Ù€Œ/-¤¨ wÛè×]—¾ñكΌWŽîýü¶Ÿ«ÎYhÕ6£²hàŒ9mº›ZGƒç¢ÑW$qF{t»gNfu‰Ü¡¥Pi\žkþ¾Çוki>•,9’.'¹gcŸPu_Ë?h°“ZJÿ¡õ(`HcÿµÃa÷O%:€ÚÙ _Vrn\IZœµÄò™88¨ï>T ^c)áOÜRžˆx'U:o¸¬û|cÿØkø`å$òCO(šoFUté¹Ë†Þ‚~Ô´já’î‰Çßõc U¿âeLÇ@<kçM5¬<Ñ×÷jÿý…úë&e€W*ô”/&òbïNFš5ã媲ï»jŸž|6û¿ÚåÄp J³¥rñ´òKm–Ü¥Dñ¼ð*Öæïáx§ (mÑõ'ì:œè¨¡yÐÝ8`å¾E™\2*“çmÉô]ZR Õ\4ÜV’ùà7Ø¡WhýX]]mÐm1œwu—·H…ç´¯[|m{ƽ•PFíŸU ½ö×&5©ms^$¼+W‚µî·Ãïd8ma¶åt£þIᯕpªº@3÷÷aæ– °CµýZ½O™_ÑÀ0A7‘ž×ýȶ i8bÞ»ncíãFÉ‚ñý˜¹EŸÂ[ùmÔß;•Üu<ÿ?ô‹|5‹Ý…ì»™ Û jËý,Üq6Þ<È;<ªå÷¨¡+Š¿‰Q@7^/lÊ[éãÿÜÕŸÚ~Iù>>;2;T; ²x©\A"&s‚NX˲)ŸG›kW_‰é³¯3b3°Ð¦9]S§©å:0uŒXG/‰kºãjÀu=·w´€wë`a‚‹3•"ò&þ¡ÞŒµ6¼-œ&8|Òp†$ÿRÓâiÓgó8@´8K¬åcß^ˆËGÛjÍ’W9‚BBhlFÝW] uô ŒZÉî¼T÷æÝæPdâzgP»U3éeqDh_Ì’³  æ–ý¨tæž÷®-_7ÕN"Õ.؈r%ƒï^œÁí|¦×›éð 0ê» ØœÔŒxsx\e)Í,XB3úÌ€ EϤH<ü–B4€Tȧ±t癓Ɠpû{\à7³h„·ƒÃߌKªÏÆ›´W%@®¸eXüÓµ ÑäïÙÜOn+Û¾ÄSÍó4¬;`´^ÚòàܸJÓ_F_-å¢2P¤5ø\;ÆçÜ´ÝG÷Ö ÓÿÒ$F”ëæe¢ø¦<ÂÞ·Åßç¥-[“ñ vâ_@ž'4{‡¬{-Žü¹44 4ØZŒ®ü¯{ÊÚpä‰d)#{ k²Š‡­ÚëdºWvÙ¯?\rõx-WOí£r`’„ï 0„“‚þ Ý5‘OÅ„ŒÉIs¤{PD;&¨w$'ß­v#&½A¶±}ß{P)üÄxo>)znØ‹õÄ(Š†Òæúö6Sº ÷Z0Èà>úàl‰«.àáØ²ò¨4NŽ­‘Kx…,ü& šïþ‡;ÚLQ-ÿ^æn.†s2«=Ö©ñ‚µéÏû $üT+eÚ·Ç¡¯@¬5K‘î3“ºCšˆèúÎk¡3w€ÿƒšÌB†rôDãÐ9@ÇL‹žÑ_‰MÛx„´…OPòZ'ƒŸŸ@÷€· ×l‹°J)ÓÖÿ„¶‚'ñ-+-$ïA°}à0ü•Uñڦó¹ƒFï7œç]±Å(Wf2¦ô6˜w-<:Æ–JÇ2•^Z‰%ˆØ¸8CÓ­ŒqüûTÜ+¿Ö' ™ÈM•5eàÃ8©ŸVжæýýK"-FÕ7BË™ª$¾]^ˆly&#Ü? z‹ r"ªô'öÉ$3‡oq'…Víä'áË¢•QÂ죕æú5ѧ‰å%Á”n²š¡µtà$÷ç”fáI);U[9øúåbHçé€ä›Q»Û²áå‡À¢>%½Æœ¡Õ±P0f%YjgÃfîj>Žðóê:Î}d@¢¼fžðmp1î9èJkR¢œs6#pg0ܬDS–; ø;oG3CÙ¡çtѧËX\É¿:ÄVÒO<™H ÓÖ 8`•™·z‚},+× V|$Î’£A¦îjÒ [$ªCòý àõÿÈ ÖPT¬Ì(úþÉ#K‹ÑÄ =žÔˆ~5ô#Ça c.ÑÈp‘wJAÙ4Ù•l/š#hoªÝ8üŽ%L䘶±˜„ b°Çû‰”ÿØ!!ÁàkPÝ‚oÀÛ¶Ú³eŸ–îñ©°¾šU)hZÃ)ªï£eãdÞ8ó˜ÙÕ“Úð"šŸÇÝ\e®þW1NüåÇðiŸ:Ý•UAØØlQB§¬ wxR\{8Â/P~dÒG¢vBnk”¡ož:’%" ÃXYÄn ›¾]%Ì t”säJ©A©\‚´¿×o“œI™Ã›º†@'­ÁY`çEÏôAÔQ~3iföñ /:Ë1yÆÞy*Pœ5x6§ÏM’Kd¶@ãúàvýâšR¨ µAð vME®LKz—›íü“ÍU¹ëãzaš¯Fl½$öª" óS¦ôy/ajÚ@µŠbîŽS)/Ö"cC «üžrÿŸá:ÿ©é¼ ƒûSœ×!„<”ŸËnr-ño7•M#=†äj«u<ǘ$¯n Ëïÿ5¬£ÛJ§dI#chëªI®ÂvC_î¿É¡žˆ¦¤us-¹Ä_Îä>»½È+D®pÍF“Þlp@AÜœ4/³ gƒ‰æÁ¹NM¼Ð͸÷©îWÂBiw„Ï}Ä|q4+«DÇp7›;†ïÅz»Š2ò.’…Mê4 ÜM¹vÿ|;0úÐáð>éÓyh1vtN»¸™r—ÊGXu'gsæÕDˆ_–Ûð Þ/r·97…«˜oú·q¸&D=ž úç‰j:7OÆÝÔ§ù°3ú줙»—ŸD¿2Sîm:6 eŒ J2;G¹¥ˆ[£¶Ä˜i|'ÌF9˜708D ¼ØŠuÇ-ªä{ÑÔJ ÏÌd+íøW§±|YWÚµÿ~¼ð±]ý«ne;Äçè`þJKçõ5qˆ„ ª)'‚Ú€ó^e‚iVÞ”L|´üOt"ê·^Ѫ›)‚CqÜA;ðtðÙ„Ú‡zWÇ'‡Å-á‹åcæº>†“î&Ã>\*µå>æd-«´M‚[Ý›»âï]ô‚ Úä>Ž$(8:8eæœÅöO®šÛÅH±oÀŠÁaÅX·-Üöà›¯sc€Ã|;ü<§ø~r¥s„ëé/S¯ªªD„GŠ#ËŽõHûEÒ®"„¼™Žaå}Ú£RZQd¨a~÷’Y¸ëôäÇFéÈzÿãø °+Ž9En?½ è“åRûTK ·êÓeÖ…ýõl-ëÆ2öÇá¢h…ÌPޏ÷S»_Å <òD¡5-‚Ç\º" 'Úÿ¯qS»,&-Aªp¨(pú])ÝŒC¦we&Ê^бÉúbÔy)ÖúPëæ‚Ћ®<•Œà$€l1@l®¿š¡p[‰ knz˜F—µÒûÇÉ$ ¬ÉtD¯GE{b†j‘±ŽúÁ.*¾ßm—Ñ^É耠å<ÄŒ†àá:§^ö•Ãí9.”h m_[Ü¿{n×1ºl¡ë¢TUZäPú´É’"¾Bó‰àDcªÈ`ÆE­"9í<·^ˆVkç©ÑÃo¾jåm‘È]!iùÍ3mCÃÏΡj!u´V¡¸ÊSjý=/<í~0z3-yt-wR¥÷”Ÿ³¶ ó¸®ï*Иڻ „»¨Œ÷DW!Çÿž9"Oÿpö'lnï$uÃÇ“a84÷DÐ+u•Ü+ŽM.!‚U˜3fÎz³ì*#LßÝ3Ân6µ)4YWr–d,ØZ…ßÞ0 â±rÿ Ç(nŽ_ÈÚÌÌüþlrù‘dYCRÓ’Ã_ûØjï`õ̤Ùû³. ÂåSfà¥Ñô'#…ï×%øOi°\Ùu5±|NÁ›*Ùs’0~¶M]zÓ:dH`Ãï0,¡pþÖÌÚËA$·8h‘ø2¾J¨`À{Ö(‚5ðxÁmõ™èdpî5Üõq_’ R²OTgæs: ¼_‚hШ`äÍÜàåÑ.È©D€‰Í"’ èR«T(UÓÀ©nŽäàþñtšüþ!ýšâŠ ² rìqõßÒ¡1¼ŽÆ{~–q“¾$I…n…;sTñW#ªvx£P:Å·½1[p½Â†'¹nI®È‰E!9Ùùùñîcxv/AÇÁ«~†ïÃÉT^šD8|Ô± -Å“£¨^q`üÍòs‡ûhUÄb‡¾?EõÉÞä†zgR|O°x}G*­€$e~®®„}o»Ýça”.¹BŠ¥ºAF' !?„3­Þ³í+tµ·¬ ¬…qäœE?ï*ØÛë·°.Íö¬EùPZ=sêHˆ.lÊæu§Hÿá0d⣰æ¨Ü}˜*¸[ƒÎ²¨ þIð’縡Ý;¿âÑêE)) å¬?qh%H=D9Ä,7.”&œ4ƒX8u+2ãUÈÁäÅS þð&º-ü¬/O©ª¾Y°vC¯f<â2%ã—©üu5­;V–OŽê<ðf¥@Û“ö 批@X@4áþßÒ]l€dò U­ŽóN%¢ÕïMº¢sôk¡éëÒ [—TZþ9ƒ³—€NÿøYÿ‘­k®4‡Ê ˲ûÄKŒ¾`Ênבº¥‡ }Tã‚ûÐþ&[ˆ·sÀ¦šôˆ~PF¿Ÿ ñï2å*¡vi¨äßÀJäÄ/0 ˜ÅëÚj8µÇãÖ»–ëµýÆR¥¥‚îÜ„/qˆ ødô"e„M•~þ'àÎz$Õ‚ò¶QÆCå“1TÉUÖÉžßáÿËÛæí¤Ç7+‹L’¨tV:ÊïÚ4ûFþ˜Ù­?—UFæ0C8EØ·÷:lä(VRGÿÒïûØNfió L_øÕT oÃòÝs‡–ðí“­¥¢Œ©kJM©`@ƒ«þ”ðÉŸ´ÿÞT¡¾1$½ÆÅBŠøÄ)1÷º·µ/œJÏõ 5–¿œGà)rÅ­Å®µïcÕ°x5meÐM_¾3.^‘úÈ 6úY­å,ªÎZœçlÀ¹hkbŽYhðb˹ˆ)š5 Ú @rõ©1?ø‡ÞC:­™n½Ù•+MnÏå%”QÚÀG‹xDbÝxYgqÌw–E¥ 8 :@æ7A­íÆh€ìq¹ñÏJæêþv-w wKÃÖ9þ¼ $ ¡f©ÓÖš?ûÀ±0`N0'-«úC1âYŠíÂkî|În  Ìc÷UTuìä¸Tõüó¢Yb$›ç7èC‚ç¡®N— ®{ú«áMä~Y3†ÿºÂü8wÁ– ½Ó×nÒ2!û6fÕÕŸ™!Õo¸Â¬Õ© ‹:Ü8Ç|güe“vx÷ä2`7IëæÚZåÕn*^dBÙ°F°¼´ÉKv´ˆË™/0¬ïtqå±"4u›ol´ûn–÷ìùýóNx'U…+;ÎßëJÀ¿½«VY0]w“LëÖsµ…J7ïŠJöø¢ôk,·'K-¨'ŸÁ€×–§$Ìá9ˆ%+!¾oõ˜o5ŠB1Pjˆz±Wm_ʤS»¦T¤ˆÞ¥#` #8¶f¯øÎ6¹z^ä•0%<é;n(Êyc,W_çð·?qMÚËØîØºn\¾,¥Dþczñ¬F†|×iM%|0[VÑuÞ˜ÉÈባåee$‹]w\—/áU9¿î£Ò%ÿû€ÖÌ^UrkÚ{] é¾Ó\ÿU=@ó «‚Ë³Ó:œCžu¢ ONð½õ_SHvJÿrÎvWTúÓª€*fœÛÛ€Z%éÓç pA¤;¶Ë ±£Ü=¿Y%Μ”ùwþ¼üñ¶¾3Û~ˆ0–ú´KU²9ßAU6»ŸÉÖ×ê àá0³¶°ÐfúeXØ“*¦~!ÿt@aç³rü{`ÑN%£¡êÉEú÷ ¿7ß:uŽ?Ó,‰óÀd¹¥_ˆL›9qðŠ”ŒzÔœðá²[O9G7žV1’TŒbÅ$)™cæ¿wåë.qI §¨! ¤ÞLÎfŽ Qvt;” Öv®gAæXÊ|òŽõ.4_Q´p5^=*„yÍ' PAuí&Ž¥tå­rŒ¶á)D΢"Tb¼Ú ÍKm.Æè4ÉÉ–÷ØK™]¥c‰¸‰€öh7³ÇµÚ–ßê |€Žö•p4,5b’ˆ:‰•f(Þ”íU*HEð%] >݉©U*ù3“ÍÌ)0Gäo¡£êé!Î÷NŸ8_ˆeˆo#É€©9âñˆDÀ4Œ×ÙæÐAÖ,ýîUy¼ëOBç¤6Š˜ÿX<躾 ä¥êOÛ ww#PÐÉ6WòÆÀ¹¡Yq6Š6}­õ•ÕØÈ½Û^ƒq,slu;9öD”²¶/®¸¿½ê5ÞZ×?n•‚]°H®yTmoLhuî½n€ˆùW­½Y¿‹Ú_´Tûfªã×ýí)œša‰¼Oçß¹6¶®&ãÆ—ÿ„)ÏÉ=D¬¸Nüó†ƒ -Ǿ¸ƒ ñ›¾‘îèê@;ŽQ©$cï Ò-]kÁçp‘ª­érXú¼SÚ#qYGb÷Êä2VÆ‘ô‰KÜú5½Ðy>j™ 9Èæï¬ÃhÖq=ÿÇàd/2W„eÜ- d¬}g>{PÜàpcÄúpdÔMªÜüظ÷gm=vó¸wù['ÙÈ‹p¿ÎÞ XÖ<¿ÏŒÄ>rÜ„ÞÂB&ê.ù±§rÍ-]ÎÙx­CøsL[õÍu¢ò£D8ð*:Fð[¯òœ~+v-ÎÄ'Qg‡ÝÂøþR¿¨?¥Ù‹øÅH ŽãiPq/5Y@.Ðÿw^{„·[M5ŠŸ[¾Ò Á¬nñ@g£\"ÂOE12Öt"Й ò»¢~Ø÷Ç®ê „8x\›;€Îù`µ3#ÂËäG]@Òäø”™jkFŽõmÂá°-¾x ÑIöˆŽñßÅÆبÑ—\gÉLŽßn¸‚\CéÃQk^¦"pùn]yʧj…¢öIî?]°‰; {‹»Þ? J^*#Ïi|BÎèp£QiR?Ôùö½ -¢Üî«J4µåûn¥TÇ=…YkØñ ]ã´GyúˆsÂ\ý}UpÚ/cÈÏõn),ãõKœFõ8Ð(ksšÞìà 1T‚éã„@ìNé¦û1R<ä5ÌïÑàÏYÊ¿ ž E´ÀZªZ5qÔÄE©ß4,ÜtÃõñ髚¹’Z×+ í¼0è€Éš?–;+ëu%gCŠ4n÷HÿûÀ÷§@U»£˜SÜy(“-£k5‘¥"óØm%ºG4xsŽÒfµ>.’YÆ…ä1붬>¬¯“·a'Ô=·bJZph_´Y¡èùW0'áqúÏ1Bt¹æ¬ µÔ÷..ˆØvCÊrÜ÷õâÖÙæ§RŸ&å”oT6z¼ÝûB Õ1ªZÁ›”ü‡Œúò 9­nS wí¯HOé?[7¢@ºæDÕç¶0t¢ãqÔ‡Å&‘wh.ÍYw­y¬ r-³Ý²Á­“ùx, Qn׉­­F CÓ8¤k§ŠM]j‰ðùEbèF;p¬±Úy›‚ô ä†hÿäcã]K‹Öè”5)ÖHMc¬Eã4vRå½>‘½Ò?“~ÇvLÉÇ4üúvûæŸÆ)eVvš n-¢72~mþ»:Êè¯*ÇÔåNL°l1ÁA®ýëÈ…=¡i s™h>vISʇÊ2BÂ)(|!0¤7⺦r»™ÞerŒæGÑ‚rˆÐÍȺá†IüJ¡š3&^¢B2ꆈÌNß`)òmåúopJK¿€¯¥Ï0Ùê¾ÉZnOèCä’íŒ7 Nó2Cþfh}å£xÓ©îE…X|c¸G€e2J â¿âB爚xŸ󌿽ñ€R–C÷‘W¯ŒyV?A`ŠÁÎÂÛ]wÃ̺TŸM1.‰$X{¡†Ñ®ë™Â%ýz ˜hùg dÉoLlŒZŸÔZQ]sÉs½—†ë˜BaÍ`f¢<15—¤Ão ¯ÀF©¬*ÛÙ³ŒÂâé^ÙÐ.Æ6°î2¡¹"õ Ào·ƒ,p¿š‹6 Òþ<œw©ò_ú)q!÷Lµ°'íA#]ê_ebIvú“ ƒoß@ÊãÒ.dXá}#>lì ¯§ „1ÜQgꂦ+nz²<³g=m¶¨FÐIÇä9ì^_ÿÙë˜àÔ·+ W,(‰nß×°›"œ¤­JM(˾—=™±x:µÄ);'ßé™l·Üße‹ŸôÇw¤;÷YydÈ`(15Ó'Ĉ¨âáüÅ<"„nõÁ‚¢¤Ÿ%Úñ[ÎãxÕˆ^Þ/aúýEÜ‘ 0rN4yvÀRqdž»l¥ŽÚd!Shà',!*C·G›ï „âgå/»0£3RlÖ·ZÓyÏöŠ^Ÿiꉖ¦T’–gûÞ\KÐ-…âUV¡öØk ˆùQšlq,ýõ-„b'].|À\ðÅê±UQ4ÅAõ[҃݊…]ñ µ´†(MnDHætÌ~œôšþ¹mÈŸ°ÞÛ,"I¯Â-ÕÞ't‘ö^#^ç“£ ®Xù€òÃeW:LoIùg5†÷(Éñmvãoâ¤Ý$†5tbåš"fv^6ÚBˆZE*õ:riŒü“&N3 SµRÿ㘗 a!N`‰©¤ÅÃrˆ=¢ ÁGÎòüä¥ÎpµiºÀ±DÔÓ£¦¼Šè Õ9<ÔU™lfyª•Ü­]ž%–ÕfI»ôafó6Ú%X÷ôgº·¢ŒHbÍ/ímqˆ)BfýI6“-ê(%­ìÀ„®€I;5¯]”›F8ú²çv+–­Ô)òÃÅj5Apñb€zÅ-Òe™$Ú~Å“9h ôóePÞϦ˜Ñ£Ÿ–5b ¦£B;ÙnZ_®<\™§<@ËW¿QÑ3ŒrúµÁ®#ä}Ó7žãªk7ÝðC‰Œícâ¥x 3àâtV¿‹¤µaÞj@ÛÃÐ+9 0vì0tÚÔlæØÓ-öû4•Ký…41' °—È™•K¼Sé³B\j6‚ͬ ô=º†¿aNî"¯WŸ•ÈO\Ô#­ˆEÓÖ6N¢µo÷ó"´ö‘Ѻº"&þF²K.MŒ73 £($g±mQ"EߊÖ××Î@9¬3'ƒË&ŠÀ)Ò7HSél'–]ˆûps†_ncwNë÷*×e‹æ®ggëüã@IØ~íomd&~T&ÿ_"{¹î7Ð៕ê`YѰïß¡:¹oÒÙ< ›I©£î“Bzð¥ü㾋ÉÔ›ŒÛˆ³#ö©žÒ‰$¢DÁ\Äu š0ÿ ÑòD '9§dý~c’ŽŽIUªIhøQ^ךþݽXŒå+@ l¼T/5¶†ï¢NÂâÿy½ì·™qéK‰”îÕ…³ËªaPö 5é)&¼„TÒ¦õbŠpH$á*¿…9žÚB± 7¢`(G,R ¸l#´LŸr§‘-d:ÇMìö)‰WŽ¢œ8`8êEr !¼u^ÅÑ>„KWרP®ìºk-Y*œÃ¶Áu+§%_ñ)ú¹P©YXà ¸®šn$z¹Â»`•ƒîÑU§ó¡=@k€Í“e£Vr§ÄØ%ê‚àbCu‰ÉµHê/t?×M aÐ3£G45¼Ã¸,1ÔKóy‚hO‘e¶Ä7Hú. ”=ðü»¤Ð ?£¡vÅ4X>„ׯ+6òŸd¨ü²If…L\r¨óì±ß{ÅæR$JÃÀW†“f¾RÀAd±”éMì±Xçzœ<¥ÍþñÓ¼'ý8žÈ[Ï7_³»":T;S7•h85(«4Ýë‚~tèêÏL]ï`ŒµŽO›Ê ùî„Þ×ጴr¡¥–ÜgXC=Ì€á¨~œsGölE¥¥Š”»;EÙŸùbŽËà@|÷\n[ŽÕªA¼+ãûcÂÀÔð_ÔÚ8KlÍ_S¦ÀoPÏ–|Sýì·Uº~ëÀã|îÜ Ç“[|§%ãE|÷ênüGuŸ*±—(J5ÊñðŠ÷–©2bÔ!ÌéÛ¡¯²Ê%]áðC§qj¯@¸ê“Pºl©ÐzònØi¦AçÞ´®Ɖ"žÌÀ}ó2{½wm2œöc_Ï +×SÞ1ëßZÆÃ3\´Ñ»&¿ Þ&­…Wî–n Ý¿! I’Ñ÷=㕘TnjßOà —ùJ94¦Ë|/µ cÎ0ú Á!‡ÛxI&Œ) Tæ—cÂ[YR/Ò3’9ô´eÿ˜Å‹F¶jiÌ‘bpß_vê%ŠG[”Hÿ×{"G®"3uˆóŒUE…ãï\5IT¼ÿŽø¶Y¤°adØúÚí=ü2ÍÙUfç—ÜÙù~5±ÌÂ9¾sù¤Y1¾8,Eƒ¼ŸôòñÅ€=E¯íWÖ«ùã¿Ô¥Ñ.UÿËRí¤þѧŽÃbø‡Ò@qÞŽm¶:A s‡ç³W?ͯÚDͬŠUzänfuÁJùED»”wZ%Õ1€\NÎÝŽHiÓìï¯+aëW¯ÖžÜÚj󦃤(/Q´Úáþ¢¶…Ën¥×¬å!Çîò[ÙPbxÑZAWäÔ¡'þMtóc+_|ÿ0Xj9¤€>öZ9á‚ ªôj`|±·=•¼CںʭšKÙxÜãJ—Txx¬L]bH2åµ –¦Ûõ{ÞɆÐm©?wÄúöý}> c»L#xò›ï>Æz!w{£Ëh·Åpóúys•ƒÚ©å0C”ýäK¨âb-㥃˜F®ž‹µ[†ß ìaÑU),–c4ÀXÃRÔ,Üôé¬HxTP¹ÕÖ ž0"\Ë"Ñ ­©óÌQ}!¦r’ÄåW_ñŽ£S\‡‹Á‚XóNIÁétοn} žwRì07±7 &¬ØÜ‹ïkÓgEÐõ¿Î{¬ªÓ¢îKR¿ŒNæ¬Í·Yùüp_‘š<&›Æð1¯c¼•N‰Ä›a­¿¨€øælmð*ùxížd”@Ž›GÒ!ºCÄ«1þæ…îF–Ãb™¹æîÙ|ŒVá -^ý îëW’èñŒLó¤ÿ”ê×÷ƒº¾}5>|€7ꇰ4Í+U#÷_öYz¸#§7ì§JœÒÇ^Ç}D)®HÜücÔAóG¿~é)ÐŽ´zjQÑš-ÒŽ)¬ßš8qlŽ/~3!=ñk™°]Š á¿Ä¿£¯­ ¥ø9ùcw+µ!*žà a´NêÈÚI1¯`Ê’ „v›ÚÊEǦX(óÜNqÞ€ãî&]K4 ¦¯^b­KköÉ^IË¢”lááUñ_جâv…s<)£-÷Æ+E‰¥‡@^2ð­äUᙦõ9Ž2áj¶€úK+_)÷vϼ®žâµŽ{`’éíTÜIÌÇÅDöÞ[K;>;=|ßÐXûÒ›f=ÜÂ?$œãøPs*}ùvèQ4N.Aúg’ÏXLy¬^cH~Z¤ª¨¸Ç¯¥¯®ÑlâªmŽÍ6BÓºÀµr„Ý}ÍŒ?ßïÉÙÚ5dwa›—&ÇöŽÊü)»Ñ·ÛÐA݇×îÍ{ÌS汤žÔÓi†øËüû_½‡eá%»"R‰ÃMÁ›öOk=÷DhkϹF7}?ùò*µT¥¸5ášR kDÁÁ£•Õó™›fŽéJ¡׌@ÅQ p'ä»H\݆ÁÝÿ¬u£s¶®ÀO}ÖÔ×µŒDñ/Aÿâ¦FVg³h挕þ»iòªm01¿¿?Eàiß`"bÇIæ.ÕqÓ¯F®V2‘åó…– €¥´*!OªÕ÷‹9¢hª¤¼ðîÁïÀM6H&=›¢î줆žMN¸š÷E¦ï–épn,âtï-/îçòÂÀœ GfžŠK²GD J>$¡jØÃçî ¶'ú²±ý¡S–š£ë¨ý£F¾ß>…Ø1;xzfé…èЭ7+±IÇéìd䮹°4ÎWˆŒf†• ñèÞ&h`ú_[ÙJ™ŠP p=aL蚥mZe«õj³w0Ã,à@t°˜°áhÄRøôÆš0É~ÎUÛƒw_7jæL¡Ù°{­}«\÷J={Z;‡·§É©ïZ¢ë“DéÇ.ä×X¿ºCcn,z ŒÂ`%³ÎÁë’Èè7å´súÃf6lþR§hº) )d-rvΑ1%V¤ß¦ µÈŸpi{.ÒqÕæø•¾­ÞyVG‰ÄêÔP—;Þθ´¹@›-¥ðÊjå³ «wBWÚÃKWììa¹Â"¬ê::º×®²0Ôí6¨ ÅcᯔóLþç‹sØã·ï’ï~ã&5?‘ܪ5ý;á`„"˜½F˜fX”¬xÇÒü]ÓÖ¥q4½µÏh™çœŽvÖ±^’»‚`cÀÊHGJCo.ð«£Ø-Aë‹ëÍw‹kðÇMF¢Ä7X2«¤` P+b‹E.âÍ9çí·üJËBO‘YÙ G/ #¾—Bk¡Ç©ŸŸë•75BñYØn!2ÿ5mñÆL˜„p ¦ 5:3nMÑW›[ZûyúÊm",kLT¥ úªˆò³RЇž¢—îÞÅr†7KKÏ×+ºÕ¯›ø,¦mgïÂêÙpS{7¡þ‘ u3D4R¨š|_ÂÎ|äžÍ»µrí‘çï“<(E;e(ü:Ôœ¿J^ *Í'ž×c~½ÁkÊ|þn×2é×@·£Ã¨ë¹|3L: šÿút,‡chHššò˜zãRÒ12¨A¬¶¡lâÁÛÕö])­.cI%øìÅÁÊ£ùÆÐ©¢.4 ,VÈèÁ»/U›ÐÒ’ºç “K§eƒ¬? ]µÆ†ƒüÒôû§Úr&QP%j‰Œ=¦oÝëͺ MX›õç®¶èîô©mÐÜcžT¢Þt”*àÁ `ų¡û}Q ù¹Ú9\!Ea8d?Öµxôœar;NKt¯ÑÚÙÍ<áà±ON £‡_å,ö°p*Š-­$éQÔhL}îp‹œCÊA?Á‘eó»kN»a0É4ÅBȈœãûÈú|+A Z÷%_5Q$ØÈÈ »öM¹Ko%/ü*yð­;Jqx”†ˆG{€ꢞcøˆóÌ+"qéOIâ K…—¹õ,Ÿæ›»Ã;µ±.3ÑÞþt•BcË×L14¡ÿÐFžÏÆUfñ\¡Z—eÇí Â4¿q©äÖûC%z¦²ÃÛ߬™TS€€]͆LiÖûº^ÃTfZ¯ÎÝFꢶ]LTr+˜½]ºs£óœØ`ÞØÜ &-‘ ¾Km ­›þGå7‚ž¤¯³7¨áý¢¡áÒÒÅç‘:ý_iƒ°)¨Šª rVQ«@Q@iI¬tl¸²é4c™sš")„•-ô´KpIÅİ‘iƒw¨šBÿ`S®ž`ÒŸo@Ò`>Ym{{~Í™¾U¹­È  o˜› í<›Á"§mÄ@øänÂJTÙµWÖˆ‹'!@›A9ÿ¥;PéªI„€>oÔÝ?…»­ìÝ,»ÈpóÈiTgÏŠÁX_>|¡€½RO¸wxsiBØ /úV`¸”RFñNÜïêõzwõduÇñ%ýôødˆY(û`¬+=G[ÜM$c_{X xðÄÆo—–+8Áï'jŒ’¹ð»u|Ý£Õð×ÊÑV"޵=¡k’ú­O:Ýa–‡ˆ%G¾a¿udÊá˜ö(û Dë1µ­T˜Bw Jç¤C ü%ÊñµyùJËþ·‘.5œB½è³¹¥ < ÂûÈÉV@Qƒö[A¤ 7å ÀÁƒ6kíÃí!©]ܵô°· ÒÚ±¨‹ý°dUHvL#x²03Ödð?ã?‘:Ü2-6dˆâ?×þKR‚ÃøbÄ_:Ùßç>‘Zžæé¼Wmùï*˜3J÷uæ,ŽÕÜ S&Èø¹q¢Ä‰3YMlþ–®êWŽ@£¨3Òãzç yEcƒQÀèËg¢«Ä6 ¥.7õÈÜÓ·#5‘û¢—NÔ¶…œb°€%3¢¹D+ån!0(ñÆ-Å0ÙqpÖ¸-09Pþ´?r#‰"YI~C* W#AÓ|¹…)26­ú‘ú"ÍDØ(Jˆ@ÿX6˜2è¶3¾ªöÙ•©fS#ÏçÏ!­ž åj¡3Þo `ŽæÑ¢ý,ÀS¹ÙÓ•è8}yfr‡^šXoƒI€[׆U¬6ÊûüÜAÙÖsjÉÒwÔú½ˆãÐu;PÔ®ñ1ŽØÉÒ çíéHÁHåé"yœšCËt…€¿a©°ð&{EÖ’öZšk7@°XNþ‰¡-½}÷†Ã3jS/àí’¯Ü4a ¡Êç«ÚÝñ«dH…!:nC–¿A"RŽ/Äì¿ÄÑÖݺõmÅzÔ~.dùgÐ÷?yäò&çæ"µÄèYœZ¥zE²/,ò@ß·†Xßå?áŠj ?´h$á}Á«÷—½trP[È tr·žKZZb*ŸAËT,&ðêCå§Èr‰à4´äü¬€ž.Q+âþÝÓŽîÝ&3dÊ0סÎÚ˜È$ (¢bÙÚv lI›¬…Qý„!{^­ÇR‚¹ûyñ™†Šò­1.’i±æÿeM;–9³Rw8Y9‡â„Öç-bÏ¥¥*¼dY][ˆÀ“¤ð’ô}èy¯cBôt žøåy$†»vóˆ*ïûÛ¨w=kùAõbðó¬öm¿ø#Þ$“Òc´s+«•ÝŒüált4ÊS†‚Wl…6ú>ƒE´ÕC嚣Ê޽´kt‰jÈ‘l&» Ùúja^N½–š.mB𵉋DcÜ ¡ÞØçq÷Üùur«£¯KGBiî5ŽÞ\M ñ$:Y)°å—˜‹­M Á—_ã-ŽÛƒCFÔJ‹ôt\ƒ?Óïé1ÛµðÝ×Gü=Ÿ+vþ:·ˆÖÜ|+¶v¯7¶æFÍ>Û~¾wû¯š06ù¦ŸÊ ›aæ8ñMÈ[¹šB@&è.‡·n–ÌLÒžZ^Ä“˜<@øýç¼e ¿®g;~duúJ –„ãýк^4IKȃàN¨·;ßò¼Ê¸Ú%l Ý24]3®òêkf÷¯³ËI—¿nZÍUcVÃ5aH•†¿[zyo2ˆb©^ê#9öÖ8¦¤B®R2vIiÔt5Ób 4Í8i¿ñ#­™2$69†Í*ÓáãèU]‚!DLb Œ=_‚ŠFGAMú¼ºÓ®b8lhÐâ}ÈTÊq®áe¡ïßJ•DÓÖ머™vQÄD’bøÊ šú$"êÁ'‘CÁˆxøë [·;w»÷Q3ŸTô ƒU!-ê:ÿo&ƒNì8ìD›öoº•q»“D¹THûʱ¢dT×’Lµðä<–À‰Á÷6# oñ×.Kr–Ò`9ÜòÒÍKJܺ÷W+1órö7Ø›7÷*/8½†#y Îr`¹Q±c‡ÕGPŽ>>d£¥íä¢U¤NºRÞ@W^p_1:™õ˜ªCÌáþðeÀ¾Fæ}ÉŠZ”NS8FàÌ’¶ª{©ä¦º¦¯cå ,NXÎÝ}Yä%éåMåËÏÞaš%ÐÖ}cMĘߔ™V9̧½1Jµͤ¬Þ¯¬þ.^ë©Ì}Í9ÏÏôã½yí‚ݶº(6hP›0všyÕqgš'à³ú–˜€¦Ø£Zf+?3 D›¹³ÎðãÇcÒ;ÃÿT°|n¬) ±0u—5´>RÌœstv«¼5l&8 NG?ÇyÿlÙ†î΢O#žŠó4…z‘ (z-½æ¸s]ñÛy)ÕC—×?Èü쪄S;0Zòüwó"¢$ªê{!jß°p“/s“ñlšTD¦°nþÄv-±‚#†&7‘¹fÎzSV\ßL™«/À©ùÉâêl\JŽlŠ¢†[ÂЄ;gÕíLz:쥰D(Ý-+üŃ¿*Ý«õŠ*ß© ç©åkm\„âÊAe ÕdÎéÜ» x°Û ^Ö¤õH}ìçWë;b Q{HØom.f ºbâ2òm`?ü¯]ÎÓH?ì*¦ÞÙF?!ÊiP†KÈ$L|‰£i<»oo‘»C©8—Û˜NuËÎ(qfµ”˜šŠp³Ü+ÌÌ,* xaúß~¿:šjÖFd=9C³¾Ì…»(ñp¶Aôr×åúGœ\[6Ö'&“×ßú‚Ò*Ü “=üXMï- Ì鄾–{[A+ +$öo%¢öªk D…ˆ_wV¤Íf}w¹®õGsýÉ÷^§cFM –Ìÿ¯I©O:ž/·û¾¹bKq©nµª×„šëç|[¶ò+z¯&Ü\!±p@½#Y!7ëoæñ2»»˜¹–•?K[:Ø }E!¬ô—LCŽ0@J-ðì£1„ùH_è(M ¾÷ü´ËþdÐC6¼º²ËU›N‚%Ï™X$«ì¹jwO ÑCìwÔ·wuëf ûõ‡|N°÷'uÜäå*ÞGª B*Áõ]›GLqoëÃ?Ùo‚…HO«‰ÔqñTú}=ºÿø_$²ÂzZ€U<«h³™1ùsᎱÝ0鑞Гæ]‡Œ£¤"Ø:‡;fò¦‡°NÈ_¾O5Œ&µy’’Ñ+–A¿Í¢>—#‡“ºÐ>]¥w¾—é¶Þ†‡åðNäP®±â(ç#ãƒ9Âói –[àT­tü&%4’ØÉSj½¼WÀtøFÎÛå=˜•Òô!É@I°Ln–ƒÂ¢¬¬©•;Åý¦o±20kÈf³«KnBƒê:R‘YýêkàܦC@è>9ÄäûJ'FO±Ý\Âð*c¬n¥T!-×v©Ó Çc›šü3Ž6Q’[ÙR]L”óØ8F­œpÙ ?Ñ¿U,Ä*Òø¾„ñÓ›wYÏùñÌ›M¦6QàÆC·Åüõ[ï¥KÊu8¬  rƒÓð–tý˜Éd==|Vðæ^êB]ð¼á=3àG"Õ7*{ÛT³É¾˜ 5“LÄ¿Õ_;jhV±oÃHÉмS´Š”Mäò7y+÷–nòahj?êÿ¤Tš˜(wŸq G#þ»’ÍÅW¯U3 [æ Fõ[k¤ëi€p&ü/{!¥ZëL˜îNß3¹¸Åk¬À1e;Äò4Ѭ±ÜII0Uú8ø+ÃÆN\,“e>BZ¸®ïàfOÃÞ6eB ©Ç®o ªR˜œ-;þÎ á§ zˆÙî‡yD¼¤yXÝ„MðüdVC¤MÈüÏAùÂòäþÙ` ‹ÍIˆ+# ëU:E®¬µ²ÌþΨî)¦†ƒ¯Â#ˆ[… SxG@GUù@%¤±.FBc:Q&ýp Y­þkŒ÷€Ý2æÓ§Ï%•;«Þ3Ö¹ëAï’ 0ë‹Ü6¿´Û7,ÈryŒü?:!ô£Ã°]p‚ñØ óQùë•\Ï––,p±˜‰ïšs>­ÒïlÈêŠáë«öHM2äýº¨²~›V¿¬Àó ' #Â)ý^‚œ¼i„ñ&IˆB½’’°¼x9(f1>V*#|½,Ë8¤ú%ŒzKÅ•[6Æ€Sï5uÑÿª´,¼;©¢±3ç³F†ÁÑDg+Á¦³}{ìú6ÔAóœ(n`f,[÷?YÜÇ¥U ¦Wi‹ý°!ͯWÅV3bв²ÂªS%ñÆçfé2–/\mÓØ§ÑH×`nÿabƒÊPHñiIY¯‚™ù_ì°C˜eºúz¨‹½Ø+áYŽq®”Ý·b9h÷$“]«e•)[÷T+lx‘NçÉ´,ŽV3Ó¿ìõ혈®ùX¨Å¤™ÎôΧuG)/¶ù`}ø#ì"@ó<L3¢VÄõÆf> 8o˜ø¯óô?å?_ßNñ“ÓsØœ.¡%±f¥|v|‚ü•‹pŸ€ÇrX=nÅ“9Ö­h¢V{8TdÚ¯:¢×éÚÁ,Ÿm£¹!¹ˆ1ÛžpúîÊ\y:Zâ‰RF41$¶µÎª¾ VÚï@Çg,Tg8Ò2å›,ä~R+;‚›˜ßröŸG¥ˆÁfñ… ½ÁÑ\b{Óåü!JU¨ˆ±'eUë²(q˰×ÔœiÚ¹LÚ— ûŽÃDôòßÅûù´×‹X[¡%#å¶vý ~ÆÇ;¯nœŸ Êð­å¢X äý+„²&ò·lª…«ur™r“Ô­;íkí ÞŒ6涉$¯Œ/ŒI<.gþ™]÷9êùüQ¯Ûkš ñ{$°šˆFž5&û[ƒég‘(ëJ[ˆú9`’çÄ¡£5øà•¦P­¬#iÀø¢_r!éÔ/³¶uÍ'G0Çx¢ÔZ‚<†Ç¤!}·ùöTí&Çj+'‹ y%*µ`¿¤ð¥Å®2£6™ýŸïH0¢f°’¤'ya6~1¤ÚÄuGètòÆG½¶½_¯³W _ ž”üœrÖîk~¡‡ÒtÐdr-Ý¡º¶ñ r¾$n¿Æè¤•åÀ>Íp쾉}}¬HöÝ™ÇÚÒ¶dÇ™¹Á¢Ý£3™T½~M)®Ñtž3›GÕ¼á-r³?\ ª£c˽þãLU>Öë}H7,ýA8t•1õ`P¢ŸARP7ƒÍó‘»ð® Œm‰œ~Šs8RÉÙ¬‘(!*ͰZn#Öí‡Û›Õp×íš'2÷%ƒ~£FœøzØLÞ½Ç å‰wÿlõzvÆrýl‘+&»’ TŽäC\žYŽNÏaò($«q˜B¶`.“Áœìl†#T®4ø„b‹Ÿˆà… OGáJÝ4ZNŽ>%Ça$á$HÁ}o—¹·2KËpÅ.—óæÉwš·ñ­Y¿-Ñ~å¶y?hùÌdxßܺ¨#±ÍŒŠý“Õè¾­X @;ÇåB5q¡Eo)ñ%æ9XÙ¤WÏ«²îxNÞ¿wæ[ž2O;ÕAÀú Âšà D7”·Îøsl~2À?#•ß cQ€$n}£JŒ_t«2ú3zQ/.2~éà&Vm†s |¶[n,Ý3£­‡<¸C[C(»œ© B½bÚzÛỖ°¥Vu[»j_4í¥^ræ·±™¡šÆ "ÖžOœ[³Poé ÜG°¶ ·cž³FJÿ²m·0àÓ ¦¦»á…­× ø¤X:LþDÕí7ºâZ›Ø4Ÿe…f¾.îÃodÞ±+žÞ´´“/ªÍ™`¾k‘:hD)ÁdÅ¿åƒùæíòõØß9TüÁ}õ$¬d(V·#AÞ'¢[mD#†­djìñ•-¥b;Ú†Ô¸köË$_ξú=è æ¤1gGqƒ×^öEIÙgÁ/ÝÈ튮t³‹Óš·?h3Q_[È@έ]L?ü—È?—‡¨æÄ 9âÙ‹Ó…‚epNÛD=^bÌ;Î1YÂ#×m „|^¹¡t–×êÆ¸ û YghÓ2­Ê|5ǹ™$AîG<Ë’O'x’BŸ[Zw† ÐIö>(´|^›éÞÀ@vfíUˆ#g§»¦8XµÃ¦r7Kº\ûõÕäfþ,9ÝSƒ‹Ò¡qŒ•i¯…J^µêaˆû}»ÊÇȽÎî-¤±¯|·Ö¢‘ï»\Ú`*òK²L ìbŽ-5ù»æÁá„yþÉKXà$¾¿Ñ¢’Ðî󚬗3§7ïEúgjݤ8|-h„»t1#`žñ %8Z6¨zÁYÌ™›sävâ5‡û¬ÎÂOpjL#rL‘î™ÎŸ‰“TPCƲ?viyÆ,–©Î)y¿Ž™£Œ~küGîÏÞlÇPvêèHf|WºŠHÓ¬=ÿØYÉdƒ…èUyï¦UÍKíÅ4AÞs / Ýc´#ãÙ#áÍÕlòH—pþ‚`퀻ê[pü,$¢bo•žÅï²=ÿ“DïÏè’›®ŽµÞ„Ó͇M`Z=™P’G‚’¶–9ÅäÑÀ“²¾•Ú6a±8àã©òF-0œlÀÐç³ÿöù¥1ÌñÉF;›ã9QE™þc¾<„+ú†½Äd½–FÏll›ƒjߪÈ6Lj}¼çh}ËGÏøÛjÏøy½îDÊ­ˆ Ç7’ªYjõdUš©b:ÿ-Bx{™;^¯©›ÈlÅÈZŽoq´¯jE µ3ºÊ@ÿüÀËi êi˜îY§°"7êFž¼:k¾7EîVi»†0R½¯ï=‚µúŽ›²•ÄR‡7çÂμkò\àG@º?Ø_÷uÇ~wŸz,ƒ5ª ¯Ú)4G–€ØìÒµµ»òª¶Mi 2)·L¹³F â&Þ^õ…د9ßùGÕ9§þ¿ÒͰušëø %àr+n•À´RÖ÷Â×K)+%Å^Ô0ã€ûeýh³ `Ó?HKÊ‹P«˜…ýŽy° ­ ììÈ+ÿû ¡ùàIׯžÆtãàÙ¨o,Ç®fXd( ôã&<ܯŸ¾ÎÄòÏT}I«w"Î×±xà·ƒë×ÖïäÆŠÆüÅ?’¾SÞxÆ7´|®—Ψ¼q™Ìö؛íµ2øúvº¯“vÃ-b)R&õa+Í$a8àqâ³dÿ0¡¶>úS…•Óh¦Ò„.ÃÆÔäƒ<ªEÒ©õ'´Y¬A~g{µx%Ñn‰0áB¾"iœ8Á ÁôN™„a½æjyÄSÖA|ó‚'üºÅH5œÈà阴AužN+{—úªÃ>—ÃË,ӌ߶à[ïãP·ÒSÚ;,bgÑX bOælê½¹…OÏn“ìrÙnvü°ðñ!DÖ,Qðñû >¤è‹µëÝÿÌBpˆ±ÙX`Â)Ĥ5Ÿ©–H@Ês·v‰#'1x¦_pÄŸMâÔzP[ååv!ØG¹EŽº¶§Ç&vV<&š‰_þwyâ×»iê#‰pStsx» ‚ôl!âH¬pq÷Zœ,Š´œ¡]¨á–çeéߥeXEwŽÒ”Q4RÉòìÍFÑÞz`²¹¿þὡÓP[œ†‰r£ ûÐwè¨O4€§‰î^ãÔöœE-zåý±'ÞÑ=˜FžºH®;Ö›†u­~Áˆû„ ºcc7‹½Ä ÈeÓçO´·ºA·êa‡9>mšfvèê8x!-×}mF½ D㺦H:~NFÀ7’åeÛ-Z²¥>U%nÚU¶àÔ"HžF‰ß|¬ü§“¿ÀWÙ\µ¾–ùꋈ’}¶â7÷zýdê§\ò[ÍÛMÜt öœ¸€¥íßíøüô`†ts>bÚ¿»¢àx‰ùUHR«[CÕæ¾ßèEyLÔ:иÑ+˜+ó¡ÕR £pA?œç<PBœfu«¬EýEÕ~ èHaÝó}£ìš™ï£|Ç*wöaþÄ2Õ ©šbcuøŸ“X>½‚5lVòÉ2dAuÉ ¿€ËÇóNÏIˆ­’jÒ#+%ËWù„pvÌ– lµm·•ÀÝô T¯O_cöB¡÷‚ýÌCÆ·{i÷4„t ¤É^oMáxÁ£¯,”„‡ÄÓ÷s»5lÁ·¼¨ÖWC‚ ÎL³ØÁ®†w(ǽãáw¾á½ kššvøbÔ¶=äI”L›MÔóïÕ!˜Þ4 8UtÁùæ*®™-“J³Ï%˜ù,CûŽ6n!Žé6 U Ðq]‹­§×PÓ›,ÀåÖv/‡ùq¥B6O°¶?Žì8|$» €q¬–2k6èk–êÄPöÍ¡ƒ6ò¹¶ÛŒ§ •ê3ÐGêŒ\Õ f rãp"5[±ÔݾÙÜK‘Ó3¼¹ÞÏ9•¼ºj€]çµ4PÞÎ^í'YÔöš1;Þ;ƒ¡Íbî± ªió kZ×ÓÀ\ ÐŽßBKBÄõ˜³¡ìÒcC98o¦!éƒ ÿŽÎî‹2†üS9‹È Î_ÅŠXá€#¹  #ô=ˆéÅ>äT ™åE·ÐE)H˜‚,&Ÿ%5ã=ý©µ1±B³òöì*Ãl«§hB~ûL¥«dVDé¿(*FÆÖQ‰Í¸"¸ZM4Óá=úæ~K+ç]C¢Àöv¹'sÅ8°sÂ}7À-›æ<ŠÍ^Åû‰.2oPªpsÖõµµ*£Ø¤4HÞ¦šÀ»çHí5^%_hº§±Næ†׬Àk Òݦñõ‹þù±üåHŸ^•õnº?^ „3eçIA57ú›Ù=ˆ¬4Ôï±—;h%&X[B3Y2Ø¿]J½á8³´ ‘¯•ª?ô׫À÷ó¨E— €ŠÈ±?7E½Ôoqð§APê4©!tžÖ/Rˆ›Ëg¥ízœŽÐ¤z]B8$¢EmeäÅOØ ¢§ ÿÂÅ.n¦ëœÝx¹jÈÆÚÅÄ £*¾pÍ4~-æ÷fxÓ6•Ðë¶T¸áeôK+¾¬Å´ëi2Zb·‹Ùä….îÎ\Zø7‘Lía¸b oVPÕT$}m±ën±ïÙ†S\KYJ„»ž¦9yæ)ù ëÃ7PUvWÅCˆ££*’ࣲ´ÿhÇ&K„³Ç*í¡o¸wRqÁÆ)mÏ2*@Šé® ?A[5"aKKªm(ü_N'úìøë¤0pq~A+¸@y­b3£gÄlÓ˜˜‚ÎH¹ywÖ¯”Óƒ}èa}m¸àÙ ýßrÌõoDb”¡¶ý+Ü4jè7ímh;ÌÅWªý€¦&lúžU|ê!™ô ¬pþìU?Ž ¯D‡RÐlJbw®¥:'3˜5LßlûÙú#ÖËA¢ÏS"}>‘(Û¯¾¹ð5 n¤‚qC5 ˜¨ÿ0žñ2 ©]›s1Ríhï±½è×ß¿à»arè³’ë?Ag½5¾°n-ÉC´UÖ¥L«^uÞÆRRþV»±ŸrØ'8l¼ø³TQ59`(´ø ³Á«ÖI‚hÑD¿éJ~J :¿ C¥6}±äXÄ::Yú&+Üv¬åÅm™GLD²"ûW'goµÓ^±k‹…Fòõn†v’Í1öƒDnREFQ»IÅ4t+òê¦ÑÂrÅ·:IªÒéVÛ5¿„Ø ‹à÷¡DÍÝË"CC´9Ú¢¥—ATôåïèÉoêçê«m VíìáBI é9~ÎWô¾®FGTîPÕkj)û X|9 Ê$SÊé°Yç!Zð¯kÒF)Pç°‚{ÄÐÔߌº­‡Ì„ÑrÓ¼EíÒBü©,"`K©C9ûÜ T~láð®?¥{ó9ÏÅ>Ý}ašÏüЦ†ßPCmMt¯!9¦¬šœcœÎÔ#wy½„íºaø’óõªBsMÃ(nšÇ¥JúJS扮£Y´ÏÔž^ÚiƒeÔþÀ+ ‘|(Ys"œ‹r©Xýefð<?þáÞù™5ÈZ*‰¨»P–Àªº]O‹(!H¹¡û^-\0Εö+¹…§—Al$*2ÜiÈytˆ5íÿD·d «:ƒ[™á1÷®Ý¥6™TI6v¿ž’ÜÌâg…|Þ’¿z“DqÝDærµÔ@2OØ8U’ìü`5O8Òêœ *ºÎ ]@{™à91‚òwxfã¨owy×Þ,ƒMe|"´Øîûîè!cX±GuÞý ±k,ñ'‚ˆ ¶Ú ùá‹;…¥:L×´ô§º òy}ô.®¯ûiFž^Q£##òŸíû‘LáÖ É¨âêøý/9OèA"­+r½Ó½ëÎ2t[tOÁ›Q98°šûºÝ7íc”kx¥eqgÇÔ¿5ÑŒùî&Ü[‹ÕÂÜÃ;Ë/Œ‚xGr8.uåògͪQŒ˜›úù¹0ˆÂùÉMçÁžãÌu ¿Î2;Âî`VÈ*é È|É 6 VMeOôGÓì(±”‚IÚ&{me$ù¤’rêmÈ9¤µ ™ªÑ¯uîX8ë³'.ß~[P 6ÜþI;d 5·ÉYÙy¸×' ‡£¹Ð!˜Ls½=dŸŠÕZ\¼+<ƒj÷r™ã’É”~Ö|?ˆ"ZFŽÛ}RúÓ·’«5J™Û¥P&rsi­€¨ ˜ž™È=ƒ =²f9EÙ+Ô£– ÙàGoÛàóŸƒNwmºö“¶¸±ù;Ó5ÚŒÕ+=œâJ¬ô·øíbk%–rSqÉnsÉ/]f«[ª9P"}ñ©½ÄÝ”ô·¼»°ÒÍðòÒPÞ Îà,è [Ñ’=×MËq* ¬ž~ãí~,1?X‰HÝÒY‰c;mAä$5‚ #w]šüÏEt•‹Òºi€OòÐúZ OteIJ² ÑŽ,È÷°krè`ÛÈjQ‚ã7ÐðÕ¯mü¨–6¹¼ëeÏŸ'&C«@þÔ,ÉðU{Ö\P%õ.›rU³UÞVñ¶·9¥á]&¶„*Diƒ³,x_zEU]ÇJ]_šêüaÿ·/2¥} K0wÓœYÝ&ß+òBgZ¥c&¥V³Z*^‰èÝ kºé…2˜‰t¸âá=sÔ;ŸªñþÖ©©Îe¸li'pÛ̦H[hç¡-¾¤šóû“à”¢p¿¥Ìýì»áp¨Hf„µ‡)ÿ__:Áí~€N†]ÕçÙØ‡ëz#ú˜š.ØG0Y›Ì•-ÝD¨ZññvAĦy–Þkà´:Þe`­ Œ¿PrJ÷Š˜MllPîÝwŠßùLʽõªûØGÓ¿ÿÛ^RCžç«T#;Î@À ëq1¼&*7R)‡‚2Fû—é¢ÍÕqCâåŠ|„l~*s°`ˆšìE}=Ú·æQ®™\Øy=… —v8¿‚ÎÌMjóâ¹:ZPÇ]†¤hÖÙtÙ²w¾í‹ÀʞÒ–}ß{7ñ[°ü„bInÓœÐQ²º6Þ©W:óT=rаA ÅÓHã=6µ·Yæ@²“¬; ¼@ìh©4¼Ö~¿?ڻמD¼]HþhZ3»ÃóMfìÇÿ1¢pÞÑâ×£ÅtÜãˆÚ2=$e•Rú·M¤GŸÆ›D-Á~æáäE,pk§ª49O]Hˆ‹Â"wDüºO)$ux1D"¦¸ÕDÛãòч´DİSœ8–5ˆí)ÙêBSÙTRMÅC‚u&/IMõ°[xÝŽ—“ìí‡bŒšŠßnÕùöfüWy:öD‰¢Âšzxÿ¶wfí‰ÝásTúŠ?é“?8ÍXÁ¶šÆÚ’ì<“þTº bzàšºP.fìð6âS4ô,qé U79O!<–~¨–jF·£â Ûš2R`æ“Ì-°”ø(µ•³Sº4²ÂyLlCÄd“*Þ¸!{9ÛPl.Ø?(Ú#Âà«™rDÝf‰† BAý·|'w|jÊsvíÉ=œ6&O£‘s¥É!$@¤tQ! ,GÍÂùÿÖ0?ò­S¡p£†ûÂúHú—ª€ä}ÌÐùÌæÒe%ŸîŠ?Þ{øXEcË®”uÂ`èZ˦ûÏÃþlnn~R<`û˜“h›b-U‹˜ƒ­ÓXôç^Ý2×ÎÂîuðžy8k¸ÞÒäE–p-ÎÔÊÔÛ°çq'ÌÞWS B( •¹=F˜¢\«>’?cU)PÐN•ªíLŸU‹•jQ ¼þnTºç¢‹3¸-ºh’§í€ù$3̰©«» ¢ý$â}Vx½µ‹É;.+èûBkñüÌÞuÂ|¨'ê 5º9íô¯EtFô£(2™óm%óËBf9Dªqz `ßuÝÞ]ÅE1vÎ(5¿Ý\Pj?<'Ú‡GÿBgE~îS€àð¬R§×Ña¶©.~6wLìi… ¼0j$'kP2»…"àQ4–[Û@Ý¥¶jØÚÁßãBäøms`븿RꥦqzS±]#Ó·šlY¢m?*ôG©–Jé›å™_«ë_¸£öníá­à«Ñ¯u)®:ï7ÊpjÆÈ>”)Ñwµ83ì‚—’·èÁ3ºç¤ÎÀ09Ë.½§¯p®QâSk&.®c'KÙø²¿¹Êp+ç%˜œë¡mó$jvÕeöúš#$ð>—hÉõóƒ $M7œ‚ó=ó $´meºÿi‡ ›þßÛ‹\*Äð3ëX6“)ÂÆ“¤kà]=ZÇŠWR{R…ñésQÉ¡Óü½ˆ¿£i,B+PÈE†0D&0Y‰nê-cý+Õ€’y&Ç6M$Ó~añdJK(¥u2)€ÊÓ-r}"Жù¡°y¡ˆ-cûÀrgÉ—^Do~ø÷Âu3IŒZ‡¯qÍNµyÐYÒ–8T£—…”á£÷)K3¾1P4PŒïeÑqn˜ÓeÍ&㦇ί_T’i„ØÉ˺u?jß6{èÇf”~ývóš¢:–LýzÛüHáª&’|W•”q®mŠ–xm“vTQˆˆ0:_šÜ^Ä^m?[iøFÂí̶YAð„—°׊þLjºãðâ¬×ÊšÈ(ÒÙ2µÔÿñ`'©ò Ù‡‡XAmâR²Ó¦ì© 2›&ÆàÙŽ~§)uMö-^~àeï8íl$ÉÍETäŠQènåÍ} D0³ÈJ&@&ˆ^ÆÀmÛÃ@$+ócÿªTšfRüÇZ¾+µÀxàiŠ1t]"˜2ð"“†=×.U¨¶|æ¢úÖ% ·ý9qvBN@¹˜vú:®-ÁŸÚúAAR*6¾îÈý:Ÿµs<+†•hæÄ+ˆñþ0Ù6ê)D$D¼–tdyÅ*,u ¨æ‡ø”ƒÞ_KÀ{3çÆ¨Jý †ZÄE,‹o•áðÓöœcX+¥iG’vÒc%}Û>៻{[$Z×Õ¿Y&ôB2YÌ6õš·à›)†³zÂò•*wQÿÿ£3÷¯ƒ÷_ÄÈ ÑB.–;aÃ?þÓ Yi'“‹¼:"@'1g w³õÓ:dŸb(:Mðúk±oÖj#§†Ÿ ¢’f¤Ú…Diޅ瘬8´v¼É›È:c¦2ºq¾*'¼À[åS‹õ¹Ý’·.زy~ tQYð—ò¼#Ðñ7ॿÞ%Ÿ° •™‰[a$ú‰¸sÃU|:7[u'Y¥£Eqᘆè$Ómò¶ãìf‡E]]óÛçXpÅ«g ±µªrì¶þ¹eQ‡GÛô­L+Ô8Ý>É8†è‹gÜj&ˆp\Ë–åÞÝ)Ú'"Qgþ]]˜òY@Äϼ±ze yAñG–X*¸Á%÷%?û×:»‚«_¨Z¥Ej«|(×WÌII¯['´‚ËwBÄ,ao'<©£¹;Ÿb»+Ó¾àˆK3F.ìÌ­ ïË4¹‚r^3<½»TA§Çî ;‡WÜNO_J#)#ªá‚(Å‚ãìø­=ˆA°œ°¾‹&l‚ØoìI)cGQTg0Œ¯ë™†O%4âxbìL›ÞÎ0/§ø±ë—‰pÃßg¦ÞƒUpŸþË¡Ði=`|™ múÌÞš˜Ÿˆ~4ãcn½9¦‡!Êpý» éæaµï²¥Íå}/§¸tdBùÒt›‡+|>G¦`Á«Öš!Ú˜û¼ƒÿBMR¯¤‡q<J:i€ŒUéDzʸ­Mg»U7ìIí!¥Rn"ìÇñ_ŠäÍüè»PÝ?µñêðÿ7Ô “½šÅNšä/GòDŒ$ï WX(”ó÷îQ«awÁ$¦!øž ³&Iíã¡åê5Îtº=Õ>×fÏ9æ×œñª:ˆ½ú~¶–!^1óMJÙ3[íFTŸ‹sÄ9Ö¶ƒ;3A;W»X’öøpˆÇv›Uedq©½%èMÝ@;ñzûÊãö/Ÿ:¶_Jó˜BNŒÍ‡ø°½‰åÙ?, CƒtÐë§ßÁ†‰’ÛѨ쵌ë„1›¾ù#î+ñýŸÿYï`[^ˆmRË\°_™@Z¯ ŠR’iZíODl ]CŠâëQ•”²ky¥ë̵îÑ:J]S׿B”ÊÈcº·ØεlBh±81?Í[Ÿ×fJE'¨Ì˜¸”z‡p´ÂTµ}y½šM—|·àäb9K-7;^ Ãe`’ñ™¨çKeÜoU.HØOeÔDjHúókqœaªgß“23p>ê†BhÉŠQ•u|·—Nó[Vž¥$fäÅh ø¾¨Ç´¿Á¯¾CÝ’ù.0fn´™G]Ä(rÆØ²eš~šÄÆSœ/ËžONf œÞS_‚ a/É©n½¼K¢Ú¾ÁË]$Uõå¥î/UÝpᥟYƃàý“•Ü.ŽTòª+ºµØaÓceØæœj¹|„5Iy~jaL«™Vû{DÙâ,‡i?C£8õïvËãfu« Ùe¡Ü>ô3J'ßÚ¹°ås–¨Ÿñ÷]8&ω,3ºÄ€2¸c›ŽXö^äó*É7 »ÙÇm¢õ›B±;/×¶„¼ g@{­ÙÕTBч +Î\X‘|'ܨìœèQcÓg”ÛbÄ™Ûܺò(c.f8Þú€nSþ¦ûë¸<¡³@Rˆ’öáŸÒ™[{gï1FÅöŸ$ 1Aƒß|Ù:?Ls.&{éÙuž9ñøfäÕh ;¾dt IÌÖ†zQÌñ½{üÌ_?"»ûÕÉ)$M–—5D2vÐÙ&ê—½lÊ‹tr›œØ¯§ïü‘”¾œŒ¢Šé¸/Õ÷.mìÛ …¾CÔO!£™3Ä@Øœ.<\¨¿fÒ~¶7Ý™®˜¯æðZøùÊMRB$ÑöKëÝlô&»ß]îÎÉï$ýªL޳†ƒC]@Ýk7!̃Ó=‚ÓyjÎýÌ«±¸º¶qŠ\àfÊî6Î@s?ü³‹‚ê¢vX1Š8Ã.Ü?+ÝȳâaâmÎ ž·µ¾¿ç4Êã» ã[p’‚Á䯖îTF 5,øÔ $æUÏM}<ÿô2ð°¦^¢›Ÿ&ì8‡®P+ŸÁfÐ ‹^ïZÍfirããQN¶_“1ëºU}‰õ÷~SÖÀ¢˜ë{1H±/1þÀ°PØd†ßéX²„ÕÀI0b±LWXþËä·Ú îim7’­˜ÿ!Û­ú=x3ÂKñ¨ ¤ÐúFÀ~èyã} îô5ÀÉ&üìDhö]P ¶Woú+ÔFòÐ0 ×>„5üÊñkËÖ FÕSR8üé¦Í½çbH”Ínf*Ö ƒ³GPBá(6"âèhéb›»3­a”•gˆìM„ÅIJ®¶qE Zoªï3 Èwá£óíë%ÝléºMÙÚýl§­ãDӧĤqQY³Ð ¸žÀQÏÓz×4Ñw µpb®–#X˜ÔÇlN-æ§}fJÏçtŠ‘sÁÈò°1(^³š¥Q4» }’ân»»àÜTgÇÿÚf>2˜Ù_¦Ê‹Ùg›iR½ð…‘ºtQÂŽ°-ùïC˜¦w–wP3˜ö#¸Uî¼üœç*ŠdçEÎp̸n[ãkÔÓþ/Ñ~*’ \±9†[ E >çq¤ß5Gê-Ї&oœºö| Ë…1›><˜:¤Mà ™ ”iÂÛÙŸF'p^Tï°úD•¼‹!VmÖû‡xê0œÇ¨ƒ6gñžGwpÌyŠƒï&Èžû5îb]qÛúAoùìúŽû:ô)ñT¹—*{B.vÉœhÜ@©وëäpþbå óHä„FhQ$Øó"Ò¬‘ḶF u¢â€'•§;ìWpæô¥r"µ’{«)¸L¼J„±’nøev'øVϪ>ª‡ä~Ê"Œóì´4YY E˜Ø_Oñ¨_8Í:Û™†~¶Øzc†sjç}´½ Íd¸Ù¸s¬Xe)Ú¸*m>b¨¡OÏ–^ÏGˆ‚Šÿ€­„ÓŒœ/J&ðÀ apÎ žmB€VáVçÒ•ê"+oæ³?—#0zK’HüƒfAdù¹ž@Øu™ÄÒ’ñ©&¡éº3¾–äBZŸØ¼±¢´"SÆ`_Mæs¹ã:¸4†XJEÛ퇷yé¶"¡¸ð˜Á[å¶Àèß’;çê⚬³FŸÁõ¨¥àݹÙ-’æ,¦n›³ŸÒ ƒâ«)÷¸°Ùb¡§‚´å  L!ÓÚCŸ§o†Z”Qø³¯€z_QSpÇP.´ÍOà}Ë¢P¢øPåuHTGÛ?iØeýAتXr‰àéíå#ÐJ ï‡âñ:ðAxRn–Oêã}8¥ZÔ=|ÐC¯YåõVâ ˆ‚MÑ­2›ã!;á¨ãb¹ _z…vbó?æv€ÙjØ®‚;Û=Ë Ö烟HkÃqMä$ñׯ Vöñ¸Ÿ‚V‘SýxŽêõ20ÁÑÖµ¼3 Å 5SŽbHâIJA¾¦â2|ìàòoÛ'{’´>x»d¡CHÍX:\âçH†Ó£•í.–ƒ‹XbáPËFã&¡m¯îÝü°žU#‚5Ä„òÓèÿp Ÿ|HۧݵÌW§Êø›³sÕ‹½rñ%ŽÕsHÉglèÝGè—>1/²Ö§ Ö´öq* da!þÀÑÍÁ Œ(“˜ÅAí§ô¥4øšäÜÈyðú?IþoX¡;'’¦§ÙÛX ‡¢7_ ò³ý Ö¸ |gæÌÉ0ϳžs¨ÇêÁxÆ‘¨ŒÛ§tE6‹[Ò÷Þ·ƒ2g•ÌqÓ }´\ÆæpµÌK~ ÒÓÊÐEd#É ³®êÌÃP”™aز`ÜFìêT1•öÙÆ A–¾µŠî;ê(ÂÒa‹ÔÀrWγ ¸€pÚh£û“žÃ.Ïu FlÏ´—«—É:@LD²©˜0IªˆD<¡28^äÆfÕy-T–!ê£ñ“1<¯gäÓþé4ôowÙá¦y†‘ pÎüŽ@¢ÅÚ9„cN'OîÂAô¤eOb÷Áµ†Éæh«QÔ‰…Ùªÿø°©knP°%ªª¶4TÉÝŽÂH!]/›;ñ‚lЧy¡d4\ûÔ8å˜Mõ`Í ª F«(á âTÇvŒ X¼¬HÉá1Þ_Æq î(îmÄK 8€>Þ+÷nˆ¼²×š¸¡x£è({ÑÆM6Űʔ h€l£6OEŒ|R¢1#òÆš×ì|†1·æ­ûPD\•q[ÅÀzÓ笧 X×(8L:Q›Æ´CÇ÷™l(l-Òj¬ö/u'+WŒ/€g&‹ -ŽŒ[5þùßNÝ#*s*C6[xÎOàì‰+˜P?é`hiÈ(È.ô³ÝáÿÙšÛº%á= ýª¨Ó27T*=Šno˜ÆàßËå·¸õ†Çû_»Äît‡9;iÙŒà ²"'6¿Í(ª ¨ºOœgàDŽ"§úA ºìûü0µB­Tmÿü?P^ÛòyãhñÅÎYÜ~¯Ú…•e¢LÑ`ˣȗDé“¥©I.Ñ£]äa<™`¸×êüÔíËÖ…ïeúvËØít ør %“s‚ÎݧÀ9>F™Q—“Ù𤧳æó¿Y_»u¼¦ö>ÙVz˜z$ˆx1 ï1”ï×Ô¿îh²ƒxvœ‹SW¢*-…z“Ñ—Äéö¥¡ oJÆG/Å|bÊ1¶Ò'ªWoÁTgćØaxdÊk-5•o-ü£®m·Š8ã°qè+œ×é Ð-›G7*·Å 9u4 ìþZ`• ýÍEÄó<¿< ß‚˜m“€yÛ;KÞŸŒ#Jf•vÅB9µ–RüÅõ^ƒÊãÁ± -g²N‚â²,ÐCÅX2At2†¡cýùG1•#Õ(²‘µ¸å‡x#*\øIÔvƒò>oy½€»t,þÔ ™'{+ŒU »C¥üVyVª{€“£„‘YÆ«1ªÞDšý‹»3Üü/}îw’ AAúÔ§ò’{ÈbÍÏ-’.à~l|Ý&ÅðØw_¾%â4î¼ 4ò9ý¤Ñv¯,Ôx#¥€ô²¢]ǯj„òéìk5 ¯z³i8Îh2Ñes×gÍ¿ÄÀ³O7KL·Ì˜­¢¦ýç.Üm¡šç„/q[*$cÕd­§Ô˧ëX¸i£Ÿ:2üE¾Ø­†‰—³µíÛh&_vrú˨MðLÿ Ö(÷%‚ùÁc “"³XˆÌŽ™â¸FH b™Až‘é^)-S™Nv˜:^•CƒCÉô»¬­#Åe½š†ƒsˆmì€6-.V-ïµsC-àËìÕšŽ ÅM-8Î…l9õtîæ,V&àÉ•uuæ¯8©Cdå‚ØÛ·uÝlr{C¶Jí¹®˜Na„<æ}¶îþBBXF<¹¬ì<žÄAZ pRÎïìö¾Á¼û‡Þ/¼œÈ¾Ãpw=W“E-ŸïžÒ9i3¢Â°Žè'Cx5Úž›Ò„ þ”Þ7ö–i¤ýºá©yç¥|/¬|2…ÖŸ©Ìë'…ºj}*n¡YfI‹®÷kþÅ#Shݨú•@z<Ú­ÛI-åßEÀïß=ï°NúÿOêå¬ÂÅVµÖ0)ÄùL©SÖd?Ì_Ëiz˜ÓBÐÀ³ÅÔ±nù3æßTõ¦.©!Òüg_bÅì\·;GyÞ_$Ïêb}%͵>ŸÈ«.û7°.)°ÔÐ2üDÆ¢¨ÔdŽ%3Ô½(¢vå½E×ãNÇÚ3?-‚ –l[ÉðDnãV:˜£cæÒ3óžj`Ðä—±±» ®×ŠF-Ç}MŽTT­Ž’w)9¾–ñtŸÍT'>%ë0c1dëÐÓÂà ­óµéô6ÉhöêNWfëÖõfnzc90à¶«iCÉxç]·é´¡Ù´GðwƈýО|m®¦Zöv\3Žømúï=)¶³ˆÜf)¸Qv¤¨t±ªÒ!¨Ø—¦x~+ ª®ØkŠrpl4æO0ŸÔöÜŠæÌ·á²*'Mñ›ÄKÿ‚³,‚úeÿqò dó «f\:óÖ“À"4ÈE' *æÓʬ2Ÿñè:nEw3y¸þö?ì­T ³ìËh£9ô‹#‡^²Mùx—Oâ|vòÒL¦ÛïÍ‚@ECH$5o§–_¨¡]8Ì R~mº{b¤>X+¶MD4|ø–ª]ŸßPaàМ°Q~ y­›(£ƒÁˆÃQ™:åݢݾâë ¯Èyï*åÐeYÿG'œ§ágzØ@Æ›Àð=ÊÞŽŸT^?ÆÁ–¤"Jã«„£'èrBcÃĘ[UOoÛe™Ë|B9º`±s5£‚ÚTri¡ÛWB¢®¿i„Óû Ë[9“MÇë ÐݹiÒA­/í«Â‘DÞÓÖÇ4'ÈF|ÕÅBœQ "¸»ä4ÅŒÝ"’¾VU *0é^©éäEÃNòe+±MÓUL­øùjÏŽ@D‰xô—¶®S¬5W¸É«øqúaǧ¼?£€,+çë•à‡n¾¼Ã—ú\½NÎâ(1…ï3ɨ]5G‡q÷P9`TÔcÎÊ#ý—~[‘Ž<îº?0dÌÙᣞÓ- Ej[Ô|í¾Ä€ÓM—S¨²«cÊyi~’ÝR‡Ë†ÚVî_äo· þÆÈ†µ·…vŸü{jQ{§¨—æÚï¿’³ïøÅ®G!S?mX;–@>"«gß„ç?Ô'{…—Œ!7 ë“&+ÿ3¸ç6nú¤ ¹†›Ñ¸¯"pcF˜™þ¿{7ŒÊgNtþÍ/z.óÒZ}-²9ÞqÝe¥ÿ 7É—i‚nåèOÎmŠ0c™øB±‡æÅ?aÜJœíðȱ—¨Âÿ?û]ƒå]LÞZö®øó‰Ü¶cR˜ÏYp#ä Aù„Wd-K)%N¹ƒ‡>tjœj/¸V‰QZŽ?\«®åÚƒCÀ‹ÌÜu—Ó=ö¹  ù…ÿõÀΧý=wÓ a‡ï .:á’9Á'ÁJ‰EŒÃ7Gœæ Ñ-Å »Øk(Ç&œŸÁ—âîB:µFÅBËöÿ*£ ‹­4€MËNs¥1:òÀ“§‘î®k‹”öÒm¦Œ—í·{ÝÚ.ÓW°¼G†|ëfé'‹*Ó^ÇÕë˜H42ôäE7ôùÆÊÓÁlfLt±—®ž’ï .n[vIÂÛËÓ7Ôz!]Ù&ÑÖ¶,¸à1B¾¥çåGÒ&|¤™ ³ycQ¿T9ÁÓlÖç­äÚqð½v@w…ØÔr˒ΨâŽ1’ô¡ëíp;?‚ùI%€Ý™Ï­X9fÌ$ ñd¸TØègWþÔ´¦(ÅÿotÈÐB¥Žô·²?¸H%Þ}¶çÿÕ¸EC)'K’'HÃîÞþä1ÛQŽ ó¥¢‘Çp‰‰8%ëjU—³vÍeÊ>ñ*œ*ôË˪lVûýº5#”²ÎT<óÈø÷ÛGÒÜn¡½O{UÁ$ßÐ }cYãžb—ÿ¤G Åc­/§:N½Šzï*n±¡‰™®#Øýn7 g¸Øð@‰¤&à}",jB ð#&f‘›È Úm(2³IA»{rŽ{,ÊÚZAÖéÎU ¡Ž}d“îpÃvð…¶«€HhëÁªæ2·â®dÝ~¨b4á·^ËÅù¸'¼nª'ð`‰žY§mm4LÕ"™ÀÀ†¬éLÞ–ýâcªÚrjåù¬aZŒ"_‘pñ ¡ ôŸl(G™e ÷¢Sð ¡/£øæO‚‰•‡¹kà4½õ¶ð¯:›IÛ1ÁŒ A…³>#È»”Êÿ-¤)Û –‚íÖÀ½ ”“Œ¼=“ò,—Äê½³ .·}w =>ºút˜¿oqA2S-²$Ì[à@O-Ýüü>dÍw]§ˆ‡~^×÷ä@W—2×ý~BȤÙ×QïÂd*Ìl¢m•‚ö2Œ{T»›ë25€Ï$¦Á‘{¶H†Ø–ÆBv„0Ž#Õ+À¨H#H)‡¢¸¿h€œHåI’•PŸÜ•9…ô\ñÛJ4ÇͱäÜȘUÁÝ^ˆ]lïqUñM@×U‡¿n’Èêðz$©Z·ÁŒ4¡ÓÇ@““`Íð¸Bá†Û¢´…ÒJDï$znɶSû[0(â©ÀûË:D‘§™Ç÷k…SÚпšÞÁßzôR›(- ïuè˜.Ñ™ûÆ‘ç™^}7Âl ÈþÔâüÂáFÜÎùmußó,ôab}ŠÇãWÝ^ï\†n„gÏÃ÷øE¯R 2õ/& âȼyp:Ÿ %™m4tl¯x :hJFEÃæj5ÆDJç£#Θʋ,[Í ôGŸÇ!ñMOôÍåtÉ8¾Ž•1tA)òéV· Ø”i°éaËùàhÎ_CAE&@ÍLÖâi'ˆo†&´$ۨβ}O=þ:Ç·Í’ùÔ½€ÜB¯ÉÇ.ÿœi8¤ê$"öÝdcl¾ 9vؾW†a©š3  Åá?)àaŠ­P£‘\È.DE7èì4gNq¶¹S<Ü@½|á[Xö÷ƶ ½bW¦&ÆC1)E¡eÏÀlš!,f`š8Ö ü’$È%1 AsNÖÝ·4sP6ÐØ÷庄ßÚú\ˆŸ$ËÎq®T÷´‹l›Ú·—€Ì½êd î³êUÂðdZ:•ðëûA`:WŸp/líDÝy³Œzdœê 7ÙwÇe²îîE/²T¨ã7X5ÙþD‡îx–z*ÎÇ• Ä„¢ÑØœ÷»_w>ÈÚþxUTl( (@²Õ}õÈh(&)³«ñ#Æ|‡ÚœÂ8ƒÏ dz9¥Ùãü ”%_³UQA ׌-a8¡òBÑ2=Ò…8RJñi°àF„¦ÿÆ$ÊéJÝçÕþ†|Gá—Rø:JM¶¿ê!ÌÎWR ,tVôP(Î:#TtVÆÐ̸õ¿€ÝÚ fÝLpU]:!ý6hòdÚÿT-Zò²ÔŒõ–¶N§*X%‚ó aX ¿GØ]ìÊí9ÿlhÛ]ÊügçFÊœpήÄÇ<“{¼Ë0ú ¬ÿ‹_¥˜¼š8ÇŒ<`s,O)QôæÂ™[¢¦(¶:ûpxvoW(u6EíÀ´ÿ!æeéôÊ8C·)7·>›ì“@ ðN«]ÛˆXþVºÝ&C—ňõ6Ôü‹¢éK<äÉwe:γ4GI §êryWa[RšH·©×ШÃ1‹=k‰SÚY!ëbâíz_¹b8çâ$\ÐÏ¡vóGœ @<ïOŒñ÷K89;iiÕ5™Ìõ4yÍ|0´bÉî%J(·¿œ !¤%ƒv(•bé+h…ÞZ•²]®ïÖ×î-’ņOK†jšúëù=|xf¶üÂðJ‹ÂÍ%ûÃWçõ±†“QmìpZcM‚¶ÈCyNþ­Tw8Ê«Ÿ'25 —ìæVn´¥‡^5)z”:R¯ä¬Ä÷p¸3°D]iY9ìÁæ-øCž¦Ü&[¢BãåüR7{Ð/Y/È1”ñ½ A©Â .î;ð?‡ç6I‡ÕƉ²Z»È +3#_ã¨%6ÿ´ÛiRú»k0'ŒŒšRßà¨ÌâÇå"–¦~ãú¦þkRá½põBX ¢1ê*ú§&pR?‡—‘ê869¬ êæMÓëBqÀ¤:v÷)AÕ?‹9úù·“¸)7-·p²Ý;FÒˆò \*NɹÃ\›ÍkàYغ3W¾eJÿ3³ UtÚ­$Õ¼«ôö"ÍÀ-æ}›av­˜a%~8•NÍ),Öp8×Ì7 ÖƒÇ@|o`ø“ر©H2œæ¾-Ô…ðØÝ…‰-•¥h&)+±R¯Ylt꫽Ï$ägj¾*µ‘Ž¢@ÑC@½âA>ÀSô߀€º*8_Ê^ž¼ÐA#> Ö\¢&ëê«·âÜ#•°&WïÜ–º×ÉêjV€*0~_sÉ£Bd¯iàx5`Åt.|}ŠUÜz?ÔržSÂÀ¦0grÇq͵ ™®¼ŒJi=GÂ.–ºÝὟùçh~ÑDáqöÛá¤ÖMY)2e¦Óošù oûúPÆkèÈI5¬üÖÞÑ™Ӽɚfy|XÇK»’„b8GM¬–Ê•8}…(7Oƽ¤ ¦XðîDP[,ºà6}ûdKÿHœñ]Íu1Ù#"šèV@rŸö»ŽFHÓ’‚êìǺiVåÉPM×Ðu9[RwyþùúKÝ UkÛ$ ¢ü"ópq°Q¢{j€õâ_½a"è9“ÁAñs¡æ* iØfàP®¿1`Ö HwÊúG3¹Û®Ú(׋k8èrDWÄ•O€5ñC¶h¡„ððú4Y›„bøŽ™÷Ê-ª!'P‚²Î5`’[(ã|õ¿'ó½';—¡vª‡|B† ì ‹vW˜Iw| B¤ŽfÂ<Î3‘²åwû@Vg.c]m ×Èó—ÒËz ´xÓ/z `8Z†&coÓé»c‹jdvñ,$ÕÓd€"EÿQBv¤p«’}9Îúѧ·eée{áõS3<*Œ~ívMy]9[çúŸ+\ ™¯@ÚR¼@JµŽi0ÅJ6Š¡÷˜>>Õæ…¶%J7™0Í@ÓfšmG‘–0ƒ`äG%&Pø±ñX[7PïØ÷ä|½r@ŽcŒÜÑJN·¡&¨!Ð\)c²+‚ŒûQ¥Y )ïb~|­d†?pPU¿^ºë9ù6}‚÷#%k[ÏU¦ä(ùþÈ©%°uËò3ULVRñß•ŽÇrºßõ­ó´ñ³9k”¨ÙÚ#å4éa#ÕxI+¢°ºùqmÚ¾>6¬þË2ùlÙ:v>mTÝP2¹B‹‹d`'”x&%„.‡Œµˆ<â‡Ë•x1WÑ럄R§dR,C%æÁRó²EM˱‰ ÇC‹ Þm1½Y¥¾/þDõ)^xpë9yº_·c"ðTKÞÊØ‚«HíLqK= æIÎÆ0P°z0ÆoÖ(µvœKÔ ®QÁkS{÷Òj¼*—yîGš¼þ€otA´-sËN‚·X¨‹è{çÕ²£O±‘“¾w9 ük`@Íœ¥q÷•©ÇèQ–À:žiP"ÍÕµ~ÇCÇ=_Ðö:Õï†aÿ)sV@¢2¢ÿ–¤UÓ©/¬ðÁ©ÃG4 a5¶¹µÈ·÷2Ó=…ò¨¬ÐMkj§ï„±ðUEY¾<Š<ÂV(d¥7cŽ[¿E£÷Ï0Êüð"r_ñ±+‹6•ÊÁÁûeü´ížÿ÷k g,²®)±9®° þdB½Fsiú ru¹Ýl7SÈÔüî4I×-6²Mïå¹Î¼ØbÖó —>¦ÿyür‰œ6ræÔ+\jÐîUSyõM˨×J謸aip?¿›BJúñûº´é”ü«ÒSöÑ6§À‘ì6Ÿm8‹ý¢@f¥s3û$®—†ü¿¸è±1ëGJÍ'¤\½²Ük…؈õ[¿ ãÇlÍ(\Du‘8]} ђȨ0¶^îoN‘/ Œ @¢,¾ùµöEƲ¦>„âÐë?Õ/>IW×M›ß9‹óŒ©åí­s¬ÆýnÌñØí‘|”ÃΫ.€ä´IÒæD“Üß=½pÌ—£ž×æHÄPº7®éÏ´È{eÄœÔÞ[3ÇTÉnr|˜qZãgØ Î›’Ž¥ò"¿x5fê1*7¦…Þ= Ì{#–L˜õr«?»Þÿc1˜¿ëvÖb„K-fƒŽN–§elë˜ÀbgÏZ™CÏ>‰™²í€5¾É û™nñðYÃùÂiªr|,ö€Gα|›.zJa‚ç”·Þa¨2™ô‘7éGÆO½ˆiBQ%]{ÄšV0(aãºÞ¸>TV…Ô‹ñ5,Æ<ä?¾â¯ªÌ4Rj/(#×Ló%fÌê/ÄC¡ÁsdKþ5dø°Â«xD_ñg‚pó|ÈA…g·P¢RÕWjØâª2´‡‘ûåèb“Îú„µ­ÆC“´æouÙÍù§kG¥D‚Û³™[wœçS_J^PbkŒ<àæ*ƒ)'M‹ûÎe?xBãÓ RPöçkK¬­[jÔÀá=ah,¯M €©›~B­P6µ úõŽöϘuXò:Ø·¬o¦¢Ï¨3òý’TfÒGj:JÔã§8=RHÅx¢ÌŸ8ÜåÜFtË=@ŽA´*i+‚W§ÄmáM'è¼A9‡­P`tÇ÷¶m“!¡™G kmN£8Ë-úæVåDº†‚‰©h:‚†I-{­\Õê·>Ñ0Â45K{Œ¶ŠMÿUÍiôr ë,¡‘!”í7®Eùåù5¨X¥=ïC*˜§Þ̾ظ€¢N”A›V\­•éÏbšFÍŽ³0ÑÜœCtè¨qµî£"}ÔÉAæ¶r7ã›]ÕÛ—ÑÍS%›‰#rœóeÚù°k,"€¸É”²LÜ ÈÞ^œLÂbÇnn߬/v²fÝK‘P9ÚGâcUh«>ŒÇR‚KáJ]¶naÆîd6|¬)"Ý> _Ž2Ìv™y Œ]÷SœÛÖîðIÄOÞvDžppCá–Ëó|¾¤-#>wl/ºp¡8¸—”E)—‰ô12‹ŠcÆ7˜Öoüð¦?œ!"b«œ5â '‘h"ö¡I€hXcî®+ Ã1*nv)>MJFÿïŠÚŸKõ¤vZXà×_¾Ï9ÅJ¾ŸÁ-ÁŸœ¯ G_¬^Îoï{IŠ|¸Ë >ׇ:¶PÃxŠD˜Ã)D2ƒ$‰.Jvlod ¢õ †i|#bò¬œD%÷ù3ó¸`Ù_œc` ž†’ å‹è}Rt¥ôUv”ÈO 8QªZY ÇE °Øêšy7ðÛ!.¼q }€3+1 âIëÐA  ß[º¥µ 6etp‘»°€KµŒ}ý_®Ô¬8S&ç\kûUÂM{™~?Ëïß(Ýgh1™è–Ï EP?mÈ0ûRk¼²üÖ@¡¼¯`kޱš3Ê›üʲK$@I˜Ü>sæ¥ÍT‚ª»ô¨¼úÛ(%Gr<ÁÈòŠéɶš /teç¿ 0Ó$-xTC ™ð)Ì)J÷†FÂ4ˆ×…ÅÃûþùo÷?^­_½¹­9}lhe†’Ex¾î¤«XÖdâyòm2s$¿!è{GUK ¡<†Ki‚s~–ò^(G£¡øk­6â3Ißü’’‘ª&|4y£¯þôŒʯà,ÛEpÿ‘¿©— {5«·a–ôÛí2Ó žP/|Á2HgØ/•ÐܰŠ_ÖŸzÒ ‰™c“ÒtüºìïV¦k·?}ùÔô–®0ÇN Á¡LqpR¥i'|Eß·2„Wž ÔæiÔK¶¾CÂŽ^±Øƒ¾a„„L+ ¹ur² žFQšå´PO„a0ÀÝ9áÇšJ‘–0ùØ:%^jô1‘†ð0W¯¥UXQh^pPYF&éÌãe<Úä ò>¾k?Àþµw›(ò°ˆÜf‰™`þ¹0`nzùÈTaè†PR—É’sF¢ÄöICÑ0Óc³÷ –NŽ€èÿÓú쵺ùEˆÁhrsK¶ß׃‚ÁNiZõx†þ}ê ´TÃößQC.x½®É¦M6nkÒ‘ÿ÷%>ñæp^ºL Q4: ¸@:úAÝ_tºv©Ú»Ù¯}bP7|a¾€ZRˆQG¬íRäåéóël¬…Pµ·ÒƒÛ95ÏkƒûÍÐX Y—¼pœˆ)zÔN2~•ã-çØ½®o @¶bC^ÛÕøIwPû¸àKÙ<îB&©PWõòû[áMEs:‹úóbåúáZºzŠ3Ni ·×ˆV,ÃÓ?þù5Áúø«ðMvƒ I­xEG¡[ó c’?70ò—ÝÑôÊGÿF’}‘8B¿]ºi¶6özs¢moPœ¾³-j-8$Ó©¼ØÃ˜by&€œ12K ¡øÃ“#ÈÚ@~éñÌ­2<"ý¤µn4¯6'A}õ\ÓîdÑ nü³wx^}1zÛ®[ÿàÏÙj´2á焱 »RR²w‰å}òòŽƒ¿òÈhâ~˜¥ð ·-ù—ö±¥š ›ßw$Ni× "U;0S©®@ô‘óô2Ãð ¿ø%ÖUƒ60éÁ¨o™çÖ3c}nyRg‘ʼnëoí¥¿BØÈ®³°Úy“”AaŒ¸ŽŸc{Kä8Õ¦íàÚÞ×QŒ²'§ó7#ŠÖbÿµÒX†r<É!p’YtÖ”äýóg‘ =ÉçGÈ(ÓŸök²‡¶'G†,¼Š¼ÔàÚ(NRõÒÏ®Öô"|6b¨\kNÇXƒÜCÝ!åFWS¨Õsÿ|Ç ÓìÛùK«L{@&³©†oêêNj7ñO?¥ÖõGvcìóÕ;½Ïø!¢')wÑ&$µRR %²¡|bvimP%Æ5®:“e̺ô#Ðd@Á±q oçÜz•w±Î¸,Æí{éME«›¸Pדàúø¯]«nò.öœ 1ÈA„DI·-az€1Hü²Þd«í`cñºHØñó”‹U8=òIJËHwç$R›%m’Rþæ³sýKˆ oVSÅi¸Ûha5·$ iöÛ:è ——lHD©Ò?x‡bùc˜5! 84‰%oï(‰SË”øS?osõD¹m`žÔ|¤ “±¿ ,ksÔRz RÿÂXæü”t°\Ð:fÓ~¸>Jr’Úº òuøjM¢¼Kâ{0t¡yÞ!ÓÇ:nÆ÷/¥¥Ò—{W-~ÂΔ° RG>JìP-;PªaÕ² i“ظ“YÝY+£+ÓË7Éå)&‹³4›"ß12źV]âRž«òºYÉ9å‰ÇÃJp ÑK‚By ܽ"ƒ&Ç:™œ<66›>ùß9!§0;˜M9 ÉgQùýÿl‰}ä 1^•²À|¤ ^¦Æ0gžÑ½±{¿qŠ?õdžSUB!+(J<®yÉU•]‚6Þκ 0O© åÜ9‚P(¾™ÀK1ôm¥*"N\šÞå,™¿sµ’pqeâÇßÇLds@5Ö=jõ¸zLH¬=%°É“eÅ®šä&¯¹†é{+ùÉâ“ʼnr'{ïW‡ø†Ùb—%l>M_e“u±fÀùv¬Hµ|iƒ‡rÎA0Y..ðµ=¾C`.å%.ÃVL‘>öž%ùy¿FŠ;ÔF3X‚n•6+i ™nŽu%WTjïªñFŽiøi®”βÆÁ‹ûDü¾Œ ‘t’£kP£Ûÿw‡?Õ$ª{ ¯ô±Øè¯°bQT¼k/¯ X”i¯ÚU×Þ³k|þ:‚Ç/€o¤¾{ù<ÇÔ+{ÉÊzLVˆÑï/÷3'ÇóŒÇ\lÏÀŸêâÞ¨£PјèÉaz“äÿBtIÌìuÁ#¤€Û5!nÏÁ=ð±Ïc¨žˆorÖG^]{ÜÜÂp¿´øA™„¦xÆ+ôL¸¤æÅHïž«ÐJ7ë‰(8o÷•$ øþ¦jžÏÝ÷3~•¿Ó ‘ÄY Ë@Xh7è÷]ˆGëªìNȃT› Eý,kØf#G*ŒAÔ1~ÌŠyL/}o2¦RèÂw”5KhŠ™BÓ02ê¤T«‰*± í_¾Âaœú^ó‘ç|Q?è‹æãáÖ|š´&§ìXþ;Lì}‘O8úki'Çñ­TÒ°ШÈõaJ¡Ó–Ò™º²XÈñLxÒ ¡!øVÕzŒ—c/€z?ìX–.-†oŽÊOûî§CD´| ÑM1–on«?¸°aˆÅöœ«æ)0pŒwqlC³oë|ápbËr„/ž'¹¬Mˆ­õ‘§‰Þ ‰D”£U[A粌-Kv &Æô¥S€‹X£öD°ÓÎ vf«I¦Omf‘º‰À5 8f½‘`~Õãòã×Fz ™ Ét×/Ñ•?G•Ôcd7v¯Ôìÿž)Úi €>D/ù¥:E‚8äS†mEe°¿³î’›1]²J4ƒzY ãŒj ]z­ý™ß‹‰ÃG¡é¹ä@! Y/ÞSO¦jº6@]s±+vã‚[Ù7.\ôò e«ŽdQEiašäRçWÇP-=&K¦§-mß¿§ì›¿0ˆ|¶dŒ–)²QÏ2ýž¨'H†Çw¥â¡Ê䚥Þü<+S¸¼Å#âæƒ^ÒûN­~D«ä»Zy¾’ ¡að‚÷»°¨nÚjžñ¼üÕj<²OˆØšpÔrrÈÅ…*®1{>m¦k]á¡ ßælÙ»ƒxÊLæç2dº4ç+î&¯gãôºZ.Š.ªôZ@úA4ll>!Ÿ@ºÞ¨°ît®!4QýxK¹c/+ÝþÙvã×=áqEÙb !Ê8ï×&FÕ&ôØ­O¤a#Ôjvo©ãv¶i‚0WÎ7ÿË ¾&®¼ÈÅÍ+€Gg`oÌ€ÞÉx§Xq˜¾3›1ÿcÅ&fI:pøÜE^ü¶¿¹ÇåCb¶’Mš’Ñ÷i÷ÕDH®Ë¥û»wHgÔXP„2fêéÊÛû°TÔ©ç* ³u%ʼn¿†Î4‹äí[@€aÊÑOGQç0xécà‚ ?ÊšÉ\j0mÆvæÐ¼Ç”‚iÉPð6ó“Ô<þÌûŠ:ôÿ|}t_ƒ$ZV'õ££ùcËÊðQÆÑ_™—Ý !9gÞŸo*„ý’1^dú”ÕVZ†<áóä_ö«¿ ô«B%Çd1A…ŽèÛ¼ ß3Òê¢4Asþ))áxzì2öë¾›íó1ºBšc bG*ŒªÑ?Þ·ØM(¨} ßîŠK½AÀ›ÊŠðô”ˆg„äèupXaùÂÉ ü1Ñ|“ðšÓ}E;í'×ÊÌ)¯Œ—õ¼$xˆ…ä"UŒÉŠHŸ:ÒYØŒJŽ´œ™ÇÉyŒSOÏÃl×eŽOwpËðÕ¾:ž;Wþ?õEì¸à9š*.àÆÚ ÿuèÕô&•ÉÌÈ'N|‘Ÿ¶ú‹Ù°57ù  Ókú®å ½3©&ÒþtÏiŽub3 ¤Ê‘[îD_’ŽôIM·$²‡±0Àpm¨{W {ó™°¶Éi+Τm©¶Ó°L(¬Suþ€tzö aDV~=1²3)‡„Îò_#ÄÜ¥Ô'q³†&Èo£¤5‚“3Þb¶ð¸§<ŸA7Y&ÞŒ½ì hyŽ7(NCûm˲?s üʵeÃFÉ'“ÓüD%Œ6÷Øt`ßA9`˜6ØÌ‰ šg(ìlNeË({j~^Â[ßî˜0Ú rn»ýݾ¼Tok‡/Ö@œñ|«–ν'NHQË`¨û%AKº æî%‡ü sg* ±ù üFa²Þ]¹ )Ÿ#  ½lSg…Ä9Ð>Àœ×v·=C·iî‘·òGÖq%õ¨9O÷šR&açt[z^ïÅÅ[z5›6LÖØ£9f$ ©{x‰=4&#k@v¦²L§b?óä@HZÏ çDž3VÈŒY²,Zu¿Âw5|rEä&Of&ø¼çT ª•Ð<¨sÛîÖZcnÜI vëØm#¬%]Ç2A%HR(Uˆ˜Îµï؇Ò<À0¨KÉñ> ì©Ø×'-åõFä6#ÂC¶ >ÙA‘‘cû£.ÄÝó•Ð 3»ÿ¯áµhNõÅ~Yp6l¼0ÖR¶FÊX*üíÇÇ‚RÏ,?6ÐâÚÍb_“>€5Ê{dÞg82Ìiiî& ù•6Qø•JÁ‘ár•1ë¢+Åzº ‹ÚÖHw;iÅ€f-x¬{1ù &¾i¸[cB¡ÍçSF°s-?Œ.7#6ÔgÉR9È< ».o‚„¥:PHhr3…o0‰V/d¢Ø—ÇÆ²m›æ‰ö9úoñTo°7á¦Ð¤Š A¡¢9ÓñlÝáÕŠ †ÐréÎÈ5êu"{äj|µÏ3Ñ‘'àùý1o•µp²>LÔÈävm– ˆ#0ñm]˜Î<öô¨Kóë’üÏo¸…S þ™WÅàoÛ­ø±z$T¨š`þQNg„7ŠEì{U;>Š‘?ø_>ˆñCi±ÙÙHk&©9 ýAPÖ„û¢ ò8wÒŽü¥ÌÍà„Ú Ït?åÏeÂqÕ1ýì|¶Ð0…²VãÛ˜3QÔ0Q1SïÍS£èíHÂ|܆=¯©ýmú8FÇõr…$ŠÆÿ‘b77oŒFlu´™ çû“9~>d[ã[dþN= ›~™ cÓ$2õ6c2_ñÈæ/±4¾¬ŠŽ¥m hŽCxV\5Û†Q®lþÊ-ȅ7%}ÔÅ?ÆìjVcí©~/`aÎ;Û·wï½#cgÎí·Ò³&Ö{’º-m)Dänì8®êã»ÅÇïd9µ²êûþ»8ðôsÅ܇Ò\?а°Ç?qü@’þËÀ6èéî3Á·„À959£ŽŽÔ.Vž,!Óúð]G$'¥ñÍÕXYJ°n‚À<4å‹§×'¾ÇbBƒÒCw‰a÷ÏžHØ—Æ× N(mÛÉÆ=c¼É!@¸/Æ™BÉÅx©“L{ÄŠè2FÌŠµMS,|™Ö9$ý™®V)džB· ÆÐbÿl~h,eô¢§Vr®œ|H´ÃÌÆ@/¦F«GhQÔbñ¹q*%ýÅçD{D5ªýïà<”탦Q¡šr·—*c¢»>>üˆã0zìè65V%qt$<ÞÁó{ð3oïXÄ]T>Š/-­¯JtÄ…×CÄMv«µ²|‘@°Ù´ O6'ŒÐçq÷]+Ó@euYë·ïþb~ir3²s‹ §9Ì6o‹°~—p ŠYVÇ fi9«îöŸÀ6Oȕҵކý©"Ê|¨F}‘¯¥31¶3Ÿá ÷Óë}„¡ž³ŸÊëLnáu¥˜a9£Hõ‘ˆeö&d}¡ƒbÜê 5«vÄËÓªiHAÿÕõFC¬Œ:8³3°í•¢W4~Ž9÷,²›ií\¶_)ZwÏ_„.SMY]‡b_¡Š4ÝÿoX” ?­~TŸŠ3é\ÖûØÌ{P®˜«ä¦Î æêŒ/x½{®,âÀÛ…¥7ð…“üfmk5fýâ=@HÐèyÀ«S`ÒIR›2ÆÆWç|A šÚxgÞyYÂýÓ‰RãÍ/’í «vt;>»#3rå3[7µh,š$Yc&›^5ˆM&9׿MÀt;Õƒ5jÃÉ­œÉ©‰MU dUº‘Ž&a»Ø™Î*1­a›œöAáe(Žf›G€U(H°?ýÄkäÒ*~ï¨ù€ä;="}1J)±äŽ/²—û*ïÉO"ÎI|ú|Êb.RT]b0¬Œ€&Îã^Ónª6ðo&ök(vƹ˜pN"p1|)Îï‹ Dß Ø%ÞžY¹§ôa¬4ì4O(uya vÄõâÅ4 DÔ6%^>C•íêe-#}bñ>C0}µ 7ÇLGžI;ÜåŒs)+œÂzn”D–ÀrüÄÊê5¹D”JPÿZ9á_jµCâw¥ ¥†(ÒdŸ¹'uRÉØ:ùE…x:ÙI æó®6Ôo¶‘çùoÕ$óS>z¶2(ºŠÓB1xG@ű÷ÕiÃÃåñ*¨À¤tŒ0ûâÑU°&,»û‰ýà¡Åâ‡mù´¸î<‡S®tÐÓÁÞ…]Ëš%ƒ›H­( jaª‡Ðij²›TÈé&ÆqUœîׄ¾Ïõlã½7scT”iK? W?ž³aj…ß?Ó¯Þ·79ÑBÊâ{5©LîÅ#÷ï×yˆ‹tL4Ý…T²LA™¨ÕgO¬©‰¥—«bÕlþâb©Øí0^p©Óp(p”}itÛ;¼½÷JÍÛ‡Y¹¸ð.ÙózE @‹ÔhË£µ E=ù¹q©Ëåx ]®›\­<»ã#ø¼—ä®ï¢°WYZ %N4õ‹ò²œZe¾Ë¹a°™§»1!Õ\l옼ž«åm(ÒC²y/ŽãÔŽp!<ÖLñ«ÏCe[ÆI›ÉGxþ¸aWŠ¿]ƒß“ÁE™[JQø0¥Þa… €cíäãÔ[áÐÁÃ*ðõ\²õE×ÃÑB7ž¡h>¾”,DÎ!¢Ìo-°w!dô ˆ2V[y»mˆ¥ML&¶j};HnœU´·Æå“À™S¬w†9OZ~»ˆÉ Óh¹)X¼ (Á—"_>˜ús\üé럖Nº™[8©ÿ¿LÓº‡£=¿¸ûèî›@æö¯­™5$j‰X·yàMl¡rÛR´4§¿¤´µÆOZ¦/ì”ð8KÅZŽø€2?¥Èn÷p‹Pw”|G³¢.£,¯BëHY@ÓLÅ\'¯„¿ ;Ü*P\FåÜM/—’èFð_Š}?ô7~;áî6\sÜú†‘d‘ž±÷ƒ.ÙˆTÚ¶sRyÈý=TÑ}8bÛÑØ'Ò¦Ñ@Æ™×/ z–ìÒ@SáÖª‚¾øf…Uö5W(9ä ¿=8ª~öF×/kË`]a¥°q•ÎlU En»¥Ö¶Hî= ¿…W)Ñ|i Þ®ðx4ÆX5o½\Iˆ}‚(£ükØ„³¡¿Èl3E[9PA¦I¥¸SŸ#A¦"å^ÿmº¹±"ÀV™}Ëþ¸ù¬å‘ý…“Ú®CQ”hø”´(Ŭ}L¼!Óm “œ°‚Q\?IoïÏYJ4¶ Õ 5WaùížZÿòˆLJg¦/=èØ}œ^”¡"Ä(4²eîðª<Ú \ïxâukÉK’n/¤–вî©fwñu¥EćA‚«cÈX?*ø¼51xü´2“yÑ_g¶=󮻯¾1vK¼|«úý;Á—ºªK„*åÄ£J× I﩯= —ÏA ÕbÕ‹—#tW¹MÇd?Dß\`SŠ0 S‡Eë âîµL ÈkìH-ÒÔò(¥ˆû÷{. `ûCWú‹Ts¹Á±pòphNm¹ÍÆ‚A½{AãÀ7¢ç#}¡O&Ö4"jJ©¼7 —¢È¼¥RTG—0©ÎÐÎ}úhñ¬Õk][^G”±=\~3+Ûð:-µD5¯$’s±y4˜u}EýÇ{¯žûž‘WóDŸ´+¢v7ù §Ð³F¡ 8¤¸XQdvê*ò\šr-{Ck¶?nåS±’$p˜G©n ”ˆÓ£¾àÈqº O gÆÙ±õ¾`køÕ\êçly”:¡7^ž«É»êòáÃ-~¦‡9‚5ð¹+êiÓÕ ³ ^~ȪwE6®bfü{>B Ü [ó?Qø¾‡¿ºsÇÄQîüuaE{2Äo4küQ/Ë€#ÑÂzÏ MŠcÑËèüáLÁÊ˼ µÿÏÌ(îqRÝñÌþbnWºô ¢Áªkq ÅG2¸YG®úbÌk—$N½öbED›…*ì¹! ¬Ümvb'0uø¥u k&VÒ/Pê81ܹ Ÿžvá‹÷¤âгâZþ²€ŸÄIµ§HaJYXò«©Š[ÌxI?çd‡ì[§^ýà&‡'Nb¡lQºà‘Fd$¾–Ò­ùÔýí.X2tŒ˜òD6[>XÑ(‰XÐ>õh?ç¹Ü®ƒÂRöA´ÖÊa-]=?5—~uuÜgp²4`¶÷B±í´5:MÕ ½Ko¹4¸£L6†`X?´p¿®ØK¦_Ž£‡ˆúša-¨Åi¼ö©z$ÏÐü\ÎR"LÁ“ž–3¦\ÂÌúX©Pê×õclÀLnK±Å–ˆM`˜Í}€Ü—`ÂW5g·fO%RàаG'Û/3i™TwµÍ^Bße’ï6@篾¹Óœ¨Î)‹­€H±9Á˜†“ha€ôî­ ¦0+¬à=œ§›ºÿ¬»Ývïm·Hê_ÿoºÍ‰PÀ¹}ˆ±~@ƒˆ)ý1-xKsöæLŒp;YKÊìx `¾ËÎ5(€Î`-;*Æ3tz¦ÑÃ5—]Ôb3ôiÃvñæÎ@frè†cmW$‹^YÇ}…ˆmØ–NvëàûGNP"¨ $tzgA³lº1TRá"êÕ ¾G]xŠ…}i&L@ç9ƒæãÕìÿs— Ã/ädˆ”Ö,^)rœKoÞ[*D£^Q.´üã–EÆ`sã¤ñ§(žQeFž§ÖfoeØùcëîBûÚ£kTZ¤›Osa[ÃÔǺ7·cï/§”¹éãŸæPçÞšYtð‚"YAÑn±³x©NŠ#13Ÿ- 2žÍ‹]¤ƒZ;°€&1P¬·aï^2<Òéµá‰šWêõ-4z§MôR’R²?òM—hàÒ§ÊÌ”ð… Ý–òVé4‘VkBWÎÒÑóñ®a¾ÃU< èg"á…@n‚ò8«®ocÊj3ê½c0ø‚?±\;‡j C"³w ¼D E²¢3Ò„¥ðÈ–ÔN[b@þl´zÈq;6Ü8éøFáÅKúöÔÿ±×D÷&›ÚlWר`Þ–SQV!PÇâìÞ£ÿÚ…}v©åIMVVæyb­‹s=w÷M=¨E—¬|{(*Ö4üÇJŸu6ø™^>"0áU§õzÀl]Sà ÕàT€òOØé~ëöVƒ±VtÁì"_LÀåŒÀL8°³Èlg¢Â¦Èº ;‰çT/¨AGô¥û’¸uËØè] Ô\Ð^¨„‰Wäw#0²¼&“ ‘d„¨1Ï*CÚãÓÖ[ðD(ñöÙØåu¿’é…¸ë$ôÇL¹nAKq¹rCo-Ê 1°ŸÒñÄa¢gdŒ/`¨UMuÐÄä³ä1< 8hŽjˆ›‹(˜QÀƒÞÙ–€§Ø“Ç#Á-DG/Áاâ}•p5™¡yWÖ¥ÆMuûìùv¿¼«jV/áGÞƒñpDÛóÀ3¡÷È… ~—¸x^Í ’Á,À5íæ}ÕŽDH£êcéýÍ‘«€óøs ôƒdˆ› ¦)_—PFLñ"”^XO¢¿ZBÁ\O{%!«ô‘t?3WþœXœâ6—w.jIÛºm7ÏÍÁ~7¥ßøÚ1å}Ú¼!Ø v­·lòû5,;¯4´Wá™3T£å1;ÓdÛ(q¨í›dIò–¸ïeo›N¶jôN“lvMúó&%bÔ»PÑu|зPOB²˜É3~Äv«»ä᪚—j3ú^½C9×Xn©3ËI†kýÁ ÎJEo‰M½¦½·+HÀ=èxmÄíš4¿+j’E~Ó t5˜’1}‰ý_o÷f»ÜD÷Ëz÷Ÿ|ZEEW`Tûû³£ø«“Xò%³ û 5 ÕX_aÔ[ùQkHî!`„V’MJ> [3½µ;µNª9þ» í8S×f0ïå÷âöY|6]C8Äȼì61;ÿ«t…\9‰Tc¢ÉØY_lI›s²ÍòµrmÀÖKÔJ¹ø×œs¡Ui×±ñ"ºZ lä9P¯ÍS>±]·t¨@ß ûâ¡§Ãæ•äû;êŸ(T½\ö2¼kxN~™g3‘B’UUÿo¦ë€ÓóÅ¿­èFÉZmã12ḰAœ©˜Â·™áçÓŸ[È<›Ì´•£¸±rXö½\;/&urŒTnh¥…ÛÁ!ðòÇ 7@ÿàóiY:ŠŒÛ¡B%Ëlø)ÍêýÚ bƒJRÖ½!e_ )d7VsbÐÞ;ª}¹æTÙGÈ)×fr¨¡'‘ÄH+/ªNpr!E_DXò¼Zgâi íŠ nÌ›9²î6gÊŠË}v†|UbÂÎä¯ÐÆXêÒì10^zêl„íÒá}/Ö@­ûž®Ü(Ûš×Òô˜0)‰üØýL×Ú"_òÏö‡5’¹ÝizœK$ÛÂ&ü|ÙÙÚd*_òhQÙŸÐo7³üMЮN[tÞäÓŒ_Ÿ_À¢ìH›)/uŠÜ"”ßX¶YdžñG!=uî6aP#³n4}Y†¨kKìb¸×dM ƒ;|C‹´41ûÂ]§Åª´6Ux[éü?Iœû@\sË9Šôg(—Bu¨¦Z»Šl?˜oÒÀo QUa:¸-oÆ¿ªxÉ.ÃåÊ µó²â/ €¸×ìÒõE£ÃžË:jj:A²ÿ›™ ÆE©ÜJq*²ÌB ´¢µíРYr¨¯2å}k½ Óµ}Ýö‚¿#ÑMä,ÿ#+›“^nø3lOQVAßcûÆÜb³å^]Á΢'…X“˜½Væ`ÑV¬%l„)öí$ÃákU­­ Ǫ¯þº9‹AÖÙç‡dÔý§&öXd×\«Ô¡ö $«+sÎ*>>ͱ)u(iœ2b»}Ôì8 Á=‰¸;{׺ØÌÅï±ög~>­NµŽWëâ”y o³X _ðH&…Tås<±™Æ®Óߊg§É|ß#¾™ÂS¥á. ª]‘n#êFäÜdKžG®€¬¢}ðLãÑZ:Óx~Å£ =k_¥*xnŸcÇ“A´tÀZÃÎEˬõÃ¥£Eý¢/Ï«ª Ñy’%àFÙ¤.:ø&B!ö¸¢X㛋²Óë7;ÊN‰˜+©ºXÍÏWËW±ý–ÌßËÚ:Cß¿(þ6ûUaJÖóø,”lóµœÁã"³ãªÆû¯oj|˜Ô‡¯Ãj‰jÑ,¾BylÕ§¢Ÿ›¥ Ð Ä#ôø³õyží9Ø?ÜÛ]‘ÑJ=šåÎŒßÂÊ ™íˆŠµ®~=z1H”]ÐË^Ìýi? ½¿Ñ¢H,Ür4BnŽƒÕU‚3-w‰ŽºqÏ;‡Õ—Þæº’æc¯Ý*¡ q³ïb®ÑÅÖëàÊ- µW0Æã´twC" C€d½óÀ(~öA=ݶ¶ÿ)Ô°ªý+¼§M¡­t&#e„þ3&B¢P¸ü•€°“ÐüHí#f4´JÔ褼N:?®U§W¬6íüST{±ÂˆX}OvÂCÆ{V^½Ò[¦­çƨeΧÁ.Þ´î~þ2ƒçº᫪.ú”ô)¹ëÎòeµ–•?âü™É<•“P‚õ´rÄd³ \› ö=¡X‹^üü(9øó`(kêÔø¿ëM aŒíö Ös±ÀêqG$3¦°i!Zÿ)VX| ÖE‰ÉÄ44î˜VÆ’¯Í?¼d&£ÏPd ÖX†º&ûUH¿Ñ1( `I)]®„P°¼hmCw¤qüé<äm·“nbüTáWÅ™ÀS£ jËÎ81%ÖÁËó«¶.,½4oo ߆l§l¡_ÏhCÞ UÄi¯=¡sôë®[{)9·2-ߟ¥t… óšä´Ý¸PA°NT17‚ÔU¡#þtÓ`yóó¼nT˜@NÒ¼JÎf¿M­€õVÈøùü_r™Êé‹Çí=ݳsñ6~”vê¢ÜILáͤfz;fEeÏfoZz1PŽüVÅÏ¡MY®Œ \ý\«ªMAE™w§më¡ëåS«€¡­µ`Ÿ[²WƒÏš¬£Í6óΆYÔY‘Ç~Z}頹ƻü²O¬Ç ¡[ âä’›H²@K4ŒÜ—xø7»6Z¼«\€>§m¢Ž‰u×;?«&K9ÌéOD¥à¦°…™êç¶»±ôDççK÷UFåJ{ЧÅ}€¢kíJhÇ'Y;¼@mÖ–rmxŸ,ªLÝ{ Fë(³dðntAŸþ=àï£û ¿¸‚¢ã[+*nÑ®ŠçEË£y‰{T"tO´‘ ±±Ú0@ó“d.Ó÷RøÕÔì–`ŸD"8)¯#ƒ·Wœ~ÛáŠ<ŠÑhÓÑ–šv¦˜ñê» ñ,´A —·éä[ ebÐzPÛJþ’fþA届0 76Kþb¿ÄrŒ&#ÞýÙ,`H$›o„ÐÛ¼”ëâ*þZ;§2W)§ÞUå‚‘¿i‘4&Ôëk,îõ¨ð…¢eQVNÜ!áï8¾|—ðKî»+{ͬž&ËùŸ{¡ÖÝ›gw²ó¬ 5:s¢Ma(ê,Xe_âÏ~TNÑuÔAe ÞÆš¬cË@¿Ô:ñ{‚î79ç§=˜æ8 pZÌÙ§þq“H±èþþ„d0êvL(Õ g›/ɘסùÛ¾ *ª&Âbm1§ÐIiœé€ëÄ-ÿ½éŽ™?ãÓ£O.5í&ÍŽ¨«Óö-ThtzÖ²e-é_'OqÝÜ@ÓÎd^—P*v÷Ѵ˹ØÿJ¨ Óˆín(̈BáÉ=¢(Òê0>ùAî'=BñÇ0Bå#Sºîl5t9à›þ <}1ÚPÈ$kÔ’^Ÿ¦ýž•½ó=g.Ÿûv’K'˜=·ËظâL ùÁ3/ùqÜÜp¤Ø3ü­ð©®deû¹ÕCxè¦BÝt½ƒA¨£¯›ŒeœÞÕr¹¥Ä QŸ½íE(&:O4Ý–[…êêŠ(?ç]ÕžGaŸùi¾¢v.Ÿ£ZûµTÞ ‚•8ô<ÅÂa°ëZ©J6E~Ϫï‚ýá€x™1§Ž§…†Ó‰È%÷½»QQ6ïèŠÃÄi¡ÙCuoUIDdK‹ T› *€uÝõ²¹œG—ºÁ\€¤ôiu¯¶÷ w˜TÞ«—±imÇ#·é)‚Ñiùc‘NMqWϸÑcký8’EÑ6öçfñ¿%à²NÛ9U\D øžçÒ±‡ Rñƒ6Y±÷äbðZÞH’¾þU ŒÓ©–ù£R† U«P‹Ï\—$°RÔt&§„¿.p߉—€ÓvQß:Ó´³ó¤a?^C½9iÕz[NÌŒgî°`C:ô éº=Æ[KˆFª ðQ¬IíëÄîBX§ñ×E{ÒŸèhʥ˞í¢lw»«ª‘±Þr¼¹lí¢…„ºªJ­÷.ûa66à’~I9Ƈ•‹’†YŒY§i!Lvžxí?ûUv‡HX(¼ò‰å,Ó›>‘VÊ6+èÎzmý?±¢¦zr±Raî ë«ø$3ÌòªJŠPÒ&Çm9_åRã™ÏùÕÜÃÕ»ìtB: “Ëáúb­Q¨;3B\°¼^ïÄ%Á©*ºõ¾ZTEmÂ-ã8à@ 9”©Ì82ÿ€qBÓ/*|[;™…&ÎÏÜ íjñçÖ¨¡OØ8kJS"pQˆ>aúu϶ˆìV Šâbfà!X”bW]ï¶(ðsÞp„Œ!æ ˜2píåm 2ýÕã©8e_*eœØê1ò:âN¾%„&ÏhóâH¨‘ZìØÊ7ï\Ø…‘2 ZÖJa~P©„uZª4GŠæb{Í ’G%‡E¸¬=‘l>[ûí…3g-yTzþ(¯¸æ¬³öçB=`Zþð3‰NÊî#Fh¢É(c¼@€å”±®oy1yk~+.ì^ðÓPXhÅàB'XDvͯmy‰ô «rÿøÛ(x§c<ÅỦ ,2¹Þc`ÕÖÕGˆñÎè%×cŽ¿×)±r ® ˆ¬ÀRšÕÎdhÁýg´+©êÙƒT’´Œ¹!»yÍÖ.c=Â\ÊMÁX÷pûÖN%NÏ·ðW¡К‰E/ lDÅÙzÙ|&v¡`úQy/R›_Î8ã¹ÃßïƒÜ4±f –cîA¡¢ÄŠ /•®˜0ïÞI¸+¾Ò-<ßë)¬-6ê¿s¬«"€Æi«CN¢["¯Dk=s÷ÔˆbIºóÊáÏúO.ÂN+U]µØœ§¤¯býÓ(Ós§ „íÈYeYEjy¾~ÓëÂï^ŠdAi†iòçk낟²fæ" £‡ÙS=D>}¹H0*P'Çä . Ù2®HÛßxø/…Ò›°=7Ùþ#ÎWíÁ`oùÌ;2*®”r¹Ú¾ÎÁ…òÊç˜R‘¦‘RÄ1Á¿y;BN¼°!¥BÙÏÇœ¿…Õ£Z\$Õø@u-½?±zâpc±[Þw®|ƒÉƒ‰O\:þ¨w±YDËB_@¦/3Ïãkg¯I„ËÊ(ü2-ÁÔnÅÚEÏ£Lî:C‘âb3à+¸òöZV¾YÓžÏÝy'ny¦Ë¾|êÓ>âΡæxg곫før÷@î}l}‰t)a­¼\ñ0?ãÑé80Í/.ލˆÓ:![ÜÛ&@û7Ŷà‘ q’èã%KØ7r`pÀZ‘ÿC‡Qª½„Úœfr/Ê‘¶ Ëù9T¿ÇÙÈש¾êï:OFCh“c)lk™ÐèÍT5„ ¶?Êòàmy5•ïH°"»*ë §ï,äéä¡}ºØü÷V Y€ÜöÆ/ÑG8r*¥²Ž÷„]Îô†Ý¹S ÚaðUh.r<§âž2u¸Õ„%K;A–‹R%?r‘C¹/ ‘T¿Ïᮦ½/¹¬dÕ½˜ná%±‚±(Žp-¿¦À—Þçš„Ç%>®$¾¢Í c/ ŠÍBâ¸úR$ å;Í;´VuѤÄFebΩ˜gë+»‰ IS²íè÷#ˆN|UoÔ·¶?8*¹># –hO5 Ôí¤á#Ϙ44bBý_­®§Â ÐrmâÕù·ã\’ÒfÚVb"28|ô³—Úe¨6(Ís§ªVHJ¿ññ<¬~rdË-²÷ì2/j©PbÉýt?öXû,Å©Ñ ?ÖÏoÙ!G¯º3lf®£Rž§>'ê#Z¶ôø4´¬êèºkÞ'ÂUX™g®¤ÃþF¡îqrȇlŠ¡— e c='@ñ,! ÚêSšGY8à›Âz— ìã6аRFo+f§üx¥—X¢PzÃè‹}ge…ÑNq B·“å¯|ì¸ñ\”[€Šw‰ÅXjg'óÀu™±nfböñUòýºa¯rØŠ‡\›wû„küp³ðÁ…šQ”V]çB¦`«0u,.™]L4E¤‡»7¥"²8Áø¸Äê)×ÊÑ„¹ÄÛ1ÕäÈœU²‰„‚%¸`·x¡ªrâf8ÄËýï5¨/:µ¦_ƒsŸ¦Ó&惒b]p“w-Bù’\bÌ^îæA‘ª’Õ:=À2b¥4eº'Tû‡dÚ¥=t¶ÛˆÝ?ja ¨©sK×XŸ™ð®Œ}ÅÂ&l¦‚ ¬±\ÿõ#„¹bÿ1¤úýÒa3SÜŸÞî/6Àrn⎘Y5[³BÚ2³scZÎY‚hÓÑû<Þƒ˜ ¦šLÊa¤Qz<Ñ¿ð,!LkcÑÜÍ1¬’K‹K >êBâx>™ƒÝ7(œfïÌo&•ýrza2°ž¦ÞMµjŒ[ˆ¥ó sk'­ëIÜ,§Ø£æí„¢%¡ã$IWÇ'ŸÇ¡øú–°Õ8;Ù¤èC6é¬ú9´0ZÙtM“Ë.²µÜµÒO_=QÓ¸(Û8#Rfü€?6»LPFçˆnÙ:.k{xªzSºßLI>OéEAÓ ‚¦<‰S÷ËBÕLÉÀ9í,(˜¨ß¯µòT[°Øý ®IE¹á ¶Ø&Ξ3F8àç ¹$i‰·ÖGÞ.£n¯.íõû¿ÊA”¬ìZéïmäÉLzõ÷C®b ?àWÚ+E×2OèÎalo;RO_7;ü“^²èL4‚VúüôÛ«_gm‘¡õyÍt} d‘»õ¨,úÇu^V~uPû:¾yÇ Lž@H‚Q‰ ‹‡®u™,»ÅéÞ#ïúJ;99D<#•øÁÍÚI¶`³Á] }”TýL(Eäeð‡ýò¢n¤3äЭ>GnBtY’Ë âHÉBã]Ýû¤ºÓ͇a“ÁyÛÊE&«Áɧ®°W‰êúãîµ£Áví’*g–ók¹yÓ9=îš»CêÈŸr>ÎO,ŠÉ^Žl®°ºH\ñ§ì0 ¡$”åTS¯?ÄÓvVlÇÖyŒ5•̨üµÖmù†Ý¡&Þ÷¢³Û‚é—#‰vHþäAj=o6ëbÕŠH±Kšmº«Œï …×kÇHI¸){—âRëþñ2I;ÜmOïÙ¥›ËHv¢KkñQØWØ·ø¡j"¿©ÎˆÃÀ˜;DDªPËóöÏN’ÕzS·0Õßb¦ÎuíÞ2ðxä«W ZDh`е|+òþã¦QÖb–€L ߯]z¾Þ«Ëßqòÿ5p‚HO®ïWYÀ¯C!†…‡*à½:®!”Ð.dž»×ׯ•µHuÕQU«,•û ´¯éüõ –ºgq2®Û©d®Çi½ ÈTÊÅ+ cÜ+Mâë÷5µhNa*á,á}ðW‰‰ ¸}´÷õ>mž çüþ«3þåž%Ã02rùø-Š5Ô:ñ×)¿¨«='r4óóK1‰CÿFí|j~¾™ÕêÄÿo­è‘ØM9è”-í½èøÿÕNã!šèKLqú¡œ5îB9ØÉBûþÁ !h³›ä˜<ð¶ Prµ-êÑêùø9^˜}ùÆÂØDS[Š_ÝaÉnbó07¬ïÍÞq6öƒû|ˆ3 i8ÛÈ»ÏÂKz9jÄÄp»ÆBkÙKíjeÂÎá;œÞ;FÄè ƒ8XÆšÂΩVì@W·rööÊT“õlÈ<ÊN˜x zlG¬C£úíBú¹+aGîúJMstPŠ_-nó‡(W¶<•»&þÄ_k×ðWK¸<£µ¦ýF‹¿í³k=µ4-x:ÆðÒó•B9Øuã©(T »ÁÌð*è±ï;,>n\[*”ÈXd¤Y&VØõà×q·³’½k˜Ã½04‘ÎE¥w«ÜHJ¯Þl§ cb:ZÉœžÍ‘ >ùÙ¨“ŸCH„=œ=a>ÔD ;DKv,§ç‹yCä •FÕf ?‚ÿ ´1àÖCe˜FÉÇ•Éb%Ù¢WÜj†`ÀéÛëi´¢¿‰Y ÷ô¯ ØNm:°ŒQÛÈÂSFNŽxòC#Ô‰%d¡Žȧ/e(¥€‹Ì‰Gc›Ux÷ÝîÝ‚’B™Tº GµPæ`wÿ×£M—@¯cÆ@ñMݼ 5 …)¢zêØ55Þ«DÜÁ;wûKƒZj²¯w¡!‹É`¥<ú&¿Þn®J´#GªM~ ,t: ?2eÐ@ø{iMÐÿš3K¿Á`Ôü¢4éìBÙ÷?Ž;­wìñØ—›|î@å÷âÙŠi«)ÂEßkcŒd%Œˆ[M«D]è²wx·ñåÜt9 ס9=\¤eŽbÃ*ë†Ö`ã÷öXR{Œ¨Æem)CƒIãeµ|ëX’lŠöìˆÌ»9ц“®ãå/WÖþ6o:¦ä¢wò„ï~¼ä"=ió6WY¥«wçòOL÷þ\ÄB(Ùȹgnti)ÞJüÃ…_ß"Sµ‰Ê$³›{ òÕ²Z5%T9oêIW³€Ïî¾ +Éø‰2ö¾ÐÆ£§—–Jn0õ/;•rsßõç'r™ÏN¿•3É+RPj“ºËÌðÔÜì¶q,«a)Z£*‚S¡Aä<Ø ²`Åtyý3‡¸U¿$'Xö(¨¡ ='Jµ ºÉ‚ÃË´À;‡ƒDÍGÚúD]$B˜)zÅZ—§JTñK°Õ€íÙ ë¶K™˜S/ç‰a|ýËú—ñ|æLP×)ƒØW„ÝÈÞ÷-ŸÛ9ŸV¨pøt[]1_K W0gtŽJB_Âã÷Û, O¡Û¾1³] .f¡tÇ^ì¼ã|=všåžT„ÆÐ–k¼öL¿‘æu=PãðdzL¦>%Ú97ŠÐ7À7¬ O\ÅUöÃ.¼Ü¡Î&O Ì Ï8Tµ¢NznÕ(¥ûuQJCÎúH¸(g)[gØ‘X½Í4ªS„oºDäé´€· Lõøý"yÿDÂÝãðëšð§dôd´j¡íeO“ËéHÚÎUSmOªC<]e}Ŧk¶Îñ6 "^Z!Å#˜ lÑŽi÷z.±Ø>¸m^æë¢z Îz5²›²w¶ðÂãøÃJJ=úDt"Qá>G>ÂȽjäJ~÷ÈAuÀ3™>”˜zÎûˆcBIá†Ç'"P¹†¢Zöi»îO´¢ cžbH‰¤iÎZ‚¾ð ÌŒ­væÀ,ýšks÷„*ûË|̾Èp®æFb÷¾ö°†}·=§JÖM,\¸,‚p¬Ê·â.¼ÂŸTªD‹t2¹]‚C ¤Dó¥Û–KýÂgKô›mAw†œçö~`™‰¨ÄŽüìøa@ñ˪= ˜8µrÍ ÝØ`n®}߃ÝÎÉÂ…šö <™jÅ$Ø÷G݉4\Ù~RY ÊSYòsn0 4vFû ›Ý× "HÑž’Þ5`UÖϰ®…x1Ái!áÌ ¨e‚N黟í®WZ!<4ò­~uÙß3²ívOçµús¥v½ -@>E1Ñ»¥}Þä̦ä}ÉÂa8µ-¢’+HÜ;µ{ËK_îM‘ceÒ4U{ËJ©½B ©‡!ÕÂ,÷ÅÿѱäæÊ?Bƒé!L|œµÖ3#¸¢ mH´;<¹ „nÇû S•n Ù7‹2žõ<ÁûC‡ b "æ”V_øŒLÏ)µÔX"ÑqοTGïž>ÆÈ0K5{£ŠGí3£©ÇHøÀfWŒ‹ ºKòRÄQ?‡\ 3–r3ªWg:k%—Ì4a Ô]ðú ­iˆp¾«jAÔº*˜¶»j¡…èB¨’ÌhQµà¢Gw;/ç€oÜ9ÓRêª_^ËréT;9‘1"Šõ»±ús^±ú/Ú§ÝÓ¡Ì”ÔÿX¬¹Ì$b‡"¬hãâÐÄ Àÿ_ô‡V$ñ•’ê[,.‘&QôI\âmwë ?Aê¬"ý/¿¡ÈfbÆ’^ â_†©×”oïWÒž²B©|N®,ÓÎ2‘xøÂðäiyˆ$‚ r t‰W ÿ1IÑŠè1û”ô Üp¦%=!ì_Z£ ¿U"iµ — ZóÔÅ:œa+À3Qf=ybVYf’F Hñ§l`¦¥´Ä"Ò;ÚpËïÙ&¼˜gÖô½w[û§ÈdN"Æ4]óõÐùI¦ û¨î.ñ5=®ð@eyïbs‹)¢ÅrDU`4jCܨ°‰—ýTp>œËlEíµP ª?ø¡“‘~6c[šH­ÒD€§ÑCÓ©":£UÊß‹žÙßßèøëð1l¢âkÆ"qâ=Ó%(ÙÄ)vÔßôç;¤)eRÔ+$¾ã'%¼a²ÑTt­ ˜©ú2ÄRí––uØÛEº`IVñň2î0Â<œ|M^OyÄ[¢²“ÜHIõ9Õ?OÌêèák­¯Ñïì–Ä?ó3–áöÊqõÓƒL8„sj†V"ùÑ"óÏÂhùBÞíïµé®§qÄ@ú“ZÉôå[‡Ã³1ïïÀ=:¿Á;#K¿ŠòYéxÄ܇o:ËR ­~æô›lpºý¹³çàIȟ½Zëgwwé°³'þ]q!ë2†¨LæòÿYNê³æS©[|Û-TÛ²Ï92——„³ïÅÚ@V÷IKÙ=y˜9s”ŸQðŽ’¬7]k6%¶¶ {b-ëÆÆvðyÒ†–þ[Š$b rÇTÑEô¦ Ê•tÙbY‰÷ÄÅÒ&3šxH:k¡}zÍß: 2¦ÈCÎFÁ~÷Îsc4e¬4Qöb ¯Ws(ö/ªú Æe/~˜yGEXÌ pk¦võùniSfíÝ6J™=žö‚òmH ¹Ì¢3°Ò¯[j@­¶ÜêâWqZ»{SÚ·ñç®á6ÿL:upä}ùA†…=køð i~lK ¿>¾Ä¹úf¹<Û˜µ\ñ:bÙ9bÝ›!$¿×uÁƒrÒ‡NŠiX5xÈoMg(gn'iKˆ,¾â·$+kh>À’!>r⾯bwüMWCcïÓ:=ðm"ÛHŒRˆÒÒü‘ÿ…M1 Ò7ð °ú§»8dêX”l”»Ä°Æ1l„÷‘zůn¤3þ ;“ú®e*oÑPNoNcÂMÌÄ€cÛœ`ü¥YyÝî4³! sSÑE[®cšŸ»´‘¼°bnHH{Ÿu°9¶¬@bóCÊéÈ×.èæïftÂBŒD9µ»]Û+‘—¨À«):L õÃ`St¡Ú85ʦ߮x|Íè”3!™ œÙz»%tc˜èl¾Èì¨S‚–´øØçê®p„°èbäDá«ß$QþfW<Âý^F÷­¯›Iñs |x»ŽPÜ;—6ÓjE«1ë-^žìÏ3õ>‹#Öþ^õÏËÕ ½"D()‹ÆÖæ•Z¿¿í“Àñ÷OÀ)‘ÙlñƒûÚ €×ÌsÞS ì†Ô[ÁñÿÇ”ÿQ(hŸµcÜÌ­ønü¯ßWésT@ŸS>kDS0v({¥†PçèþFfÏþyð6´=·ˆdÿŠ.Moù,;fÜ?NK²ïÛŒ hwº7%†ií}oÒ›Y8¡ÞVrô%M¦¬e%ó[•ˆj޹ü²ÏýßœÈcÌKò ‚dºˆ‰8ïϳÑ2¢h|µ!~¼r®®ž VÜ·ôÙ…4Óó% 2ãol²ÈñãeŽŠÇ¹²Í|Ê* †'ú¹Òm˜¹Å-.os·2 äÌÎ\’%èI}°:ˆ“}½#n—º‘¸Lá•¶×xNûÒP©GQÐïó€D =t\ýädnÕÏ8}]çEò6´0]š^|ö÷âü>dÉØ.`Kx4ØuÑðô‘žý£à[ÌCîœ3j¥žYó×íèW–;óމƈ­º›ƒR "ú‰‘¸âªh/ÛH÷ì… PRs×'½øõA³i®öB± E¢PEJÚ%e<Úö[÷žuÂQÁßEX1ÛreJä>Mpj7ïª í·e6ûwެϼîëc™"%›œhƒ„pg¹VYÕ«’èà÷©éŠ Á[ ê‚$$§ÒŸŠ¿ópãg¦ý‘[‘¤“_Q!"Ó1¾½ÞI9gåt¶¶¯¡Š …- Q[ã8õ-Ñ¢ô›Üä1gn*mW’%bgÄšw€¸—c\ è×rèâ=S‰ru*=~ϯZßn˹ž-’ÌWRkŠ eQù)Æ@P ÚM2ô$ÅA”ª„ Üf¸PJokÎyéYj&µ*6u"¡9:ä/jßâ’åj²Š ëSlþmmêK%­Q±s?<®—u)¶tšè¢Œn-'ÛjïM0bˆŽ¥œ,Í™j6zƒØž²/à7bmŠ4²ÚðÝšr÷¹f`¦uÒî—˼ûÏj´¯·¯#pâGËS™…;Ð(*¬0ÃT¹JŒž†»”qöœöbåø½ ×®<˜Ï.ïx Ý_Ž”Æ_Q„z•®k¸$~ÆNÿêì×iúÐc~_MùÕ1açòwÔ 4”qð0 [|C» 0ü§¾lÂ\tñ´~1¾?d5x…SçäèÅ“ßtý%³5 Ï`3zS‡iìg›Ñ±<öÓíGF½ZrÖŠNø]=zЛ! %“Mþ ê®`Zf õ3šüÛX&jï¬ú¯¹æ°9Ÿ°£IZñ¤sà,¥zTÝáZ}Òè¦Öwèm”Õ­ç\߸?}X BôySöÓäã qs3)üÇäêáÇí­û^ôðL<§„ýÝð³(ö\ÎßšRâ`†h@hjR´«ÞV3æ\ôÊ„ê£Fé&6iß8ñ—*5ÿô¥–T‘ã¿>ç[ͭΖ彋L¶ðÁ9@ ¥Ÿxp!…åQšƒ¡×I Ã][? Ɔ³êLð¤:«v†å ‰ØÉhŒ1hßž0PiÇnèw'Ž¢ÚOxÖÈ,dÑRH¤ôø‰pVEÍC׌½ÌUÖ—¬E`ßÂh2:ä$ÈoЪw .ì|’P`˜8_«$®ÿeD,БàyœÑ %îÒÿ–‡*áïé*é­YçÈŒX¨òŠa%|9%M2qꌱ4k)m:å½á»Îýª²d WK‚–=åS7|kà œnÜA*äNÙÈ3Md\Ø;úœõ­gct+§¢ÍJàMŸ¤e¹G[=ão•‹—x1ƒ¾¿çWb$r_or:† òRk/eXýÓ¾~¿«²5q¯ÛR¸¹z4²l‹Dk¯/Qt­·K VL ö~ÜM+Y°¾ÆM2x›Ër£Vž”}Zé2ø£jtd‚6Ü;t‚‘a ¬³.eN62øÌÔ}ºÐÚª7¤û3áŠ\þ/—†]ú„AW°O=¦b·”ÐÝÎPN¹î7't;†+«ØÅB„õ ÝæÒ\É1]ÅK š~ÎêÁ…°}ç—Æ–Ù$Â=y²àâÇ‘‹ÍFf(àóÕ|¥õêócÆÐè 1sAñ¼ÿ«¢ðtÒSOF!¿¥ÐGqÓÓü·¹ÛÃYÐÅ¡ÞPÃtŠóN¼ÒÜu[{  ýu“×–SàUŸ}·56\þY~?UÞ.ã:”õèÇ~ ‚ fÙÍ*<ìûW¶jàp ¦†ý'Æ4Ùƒ{)$]©Yî¸P»¸5p„Ñç%R¢2žìíø2ׇYi˜>¾GQ™‚°–t¬d½ÞÏâ ' ÝeíkR”OK»_–L¥¢­¾/qä@MŒ}(¥­9ô… ¥ˆX²âÿ5ùˆ´w9rk:²—5‡Ä!š°;˜ZÉo+à®ú³UIàå|.íÆÇ¹XI5N8áý %ËÉî„,t|)¯D€äò’€ªØô·`iIiÒ½ô-9öAÌG #êPæ‹·Ï< ¡nGY”xræy}üè'`Éð¡2rZ­ŒNÜ )›$¨fÞzÓ°!“-µ.µ‰>\¼×4{‚Ý¥ÔáÍà9’M‚|NŠƒ¤8^Œî§înA}[q^ê‡á^£‘¡9ÓœmÈX½`ÚR'7é^€ '#‡Â…œ:˜W{ܰn´^°T9¡2—ÕŸ=mݘ .e¿¨ìíy|~©ì>B*¹x/ùlzõ$ø (ó84e™ÖþéÞ®õs4U4 4¿Œ/SPT>w›yæÄ#ìMö˜Z!?«ñ(¹.À©ŒšANˆFÆ_!¼Ï´Y VHîžÏ21ŽÍP0p¼zå H-ßC™a_B5i¾®øjNd5~)Äl²ø& ó=O'+ž#€k"[ë7_õÌ-Ò‡·*vØ\º”"óÆ ª•qYÑüS¡¨½?ÞëýǾ¡àbM-äDg\Gøén0ä|€µË‘Eiiyî>–*ñ†EÔxfFÞȽÊDe êzØÜ"¾Žöx™^F¤´–Æyyu¸'‘®¡ßƒËà ͼX¢lÏ/X÷ˆÔEtÏPvµɧ.íÊ캦®ôD?låZ5E‡Qq‰ÿIœ¸sÅó+ÌÝm-Z¹O;o8Ši社)äôØLb¥!Çákuéï^ï€V´UƒnˆÅÞÏWFn׫±“ÿ€³ú®Ò#Èá‰ñ„(wH ¼I †“ᬟæþ†«Äî#ümÏÝ`å“—ƒùÖѽÊqL"$UËöa¤,Î>Y q""àbÉ6ç—£R ôÎøŒÔ;Ù­¨Ÿ{-õ‡Â0l>óf9/Zá³Ë /Ø„_…lÚP—0ÝZ›J+ºla”¹ÚR)ï5ÅHbíÅ(1ö%éÝÁE’­!‘”¥‚êîY›Nœç¹î¤Rø„ ÕL3ÇÐö2'®/X4™o"â›WjÁSûfE±^Í‚cÄéǹÄrZP²·@¡ªá Kùw³#ÐfSìÉ¥é¦KgÌk]ÃkéyŽáVü5;åÆ=Fu"*¸¨xA`}ÚµK؆+clÊão bñž† * î>,|¿sh ÛÄ#€:ê$®tÂyü!5’g[Äö·ÛÇ #–PÆTïmG‰´ÒÞ¬(3î§ Âat/s,›Uœ^Üš:¸ÕÓÅ*c—6J|~+¤õjx|cO•åÛx+äÀÔÂþ­RÊÃÐ&ϼ½Ö /ÒÿáœÐ?íq³«9PçŽ|îÐÙÉ:‰ÓN‰ÿ.;zÃϤ*ÆlƒÚ+-[ç<ªÝk JŘ¾’³#n'ƒ'ó]ôXÛq™RpƒóAËõ„79t ÂQxFÞÞœ²Š“mÓ=‘“eìyjAÇÈÊeJË*õ¨°íðAR!”ÿ„±5$ð»K„Û’«b6ÿC¼û ·¤2~ðÀtömÌØµS @úñ×úNémv1.ÑÃÊ5€5«¢>V%p–¦1žò½…–\óWÖg̤ή×h€»¦£-µšrr…¼9Ð¥òa{™ +‹MÌÚÒË׸©Ð‹il%Í9„™R ÅM•볃EþºD|mþÄ!¸Îü¹I„µXšºdˆÈ&ƒ¯ Ûg–ZæÉüwjTÓw‹ÅÐA#E$7üeí vCì¡'D.PÀ‹¹:N{€.w6¨¬m„>ôÃK$àŸrAÎ`×nçõ€ÀŠñ;Žb9&,}d;¾~SаW4%ê€kÔ…ºÎ'À 0±,寑ÂˤŒèMg*ÖE¯h]9}lž^h%ÌòE݈Ð#>º›Š ë},[·Äh®_:v½]*ñ‚í)Ld hYlF†J+ C~Í£çê$T$ÞÆM^I*ç¤Æ Ó®(§[¾?í{ÌNX‚è%±;JÆžã R|Õö°C ;­K{4–î®cœ¡4ÅäÍ—ØL5¤)“•Pœ MyzO wl&ICo"±H:瑽u§±¼â’å›^̲zÁm±x&™Bš7`3&ˆ™T&É÷/"0b…)(²•t@¿Äl›ŠiÖw?§n;Ñ• ßðÚ/t Â"qÏ+ÆÝ Y#– ¸Û~ؘD–_BÒ*‡lÛ9òøí®Ñh ^<¯¥ú~ZGƪA£÷Ð-×Ãý‡Kp… YñL+u¼°ívá˜3¼] ~’°]ò1ˆÆ|O7V´Ä<–òŸÃ,ô[² ‹X5;ä'j7až—”® âf®­Ë —­­Ó <͆# z®Õ¼¤º ºò}.ÊîË=2Ÿi%sÂY»¹Ó œíÖ‰Œ>ÌeîN£X3Œø°·­ïÔñ1ÍüL]!ÕQ?ÓP꾕‡66xgÿä°Æòð¼ᓸÀQ¤ÐéêUàÛ†…×fn@œk•°Û"µ7,ŒÜ,’έÿHG„ûfÀ1ÎÙqVrËW¹\U©¸›Ý™üÁÕ¨c’3qü (•#WšËyÒ[gȼ'ëØ/U9IÚŒŒŸ´ÝÕ_áÁ‚Laˆ þ¿ O)ýü)Ô­Ó²Š³G‚…Y½¡y/àøƒ›Þk bËáWhýÛH¦ìSQÿgH»”ÎrË„´5/¿Ð›Í™ÕXO"ù>y=RŽ­Zu…Û3pˆiüRÝmfÅ'™@]û)v«ÆÿÑ;ñp=&Ìñ€å~‡]æò³Ø¬b†°¶ÏÏcz²42/väŽDŸC?=½2ñÐÍR®høâ?¼§K¦¸š åÿr˜ÍEYÚQnÛÄåiNû‡M¹°i¼G4%t ƒ%;X ¸Z–"ˆÓ#‹ˆ÷˜õÝ šì:‰ŽéøâkjËüøTÌÅ2Wj[tw G)¦™*"7ÓŠk>ÛÊr!oŠs(…ۯϰH Ãyºß—/í‰s’ºu·÷^ÔD|r ªØ™^÷g^¶äVÖÌ”sI;ƒ»Â'ÐúÉÙÂyŠªýêZ¾†$Ò²HÚ 95vš¦ ˆˆ,kF°C 3Ü!–‘~\$çÿ¦ÂÜ)(šMUµ.÷÷ñŒs>v ã¬ïéi³µ ’wÌû¿;ÛùwR™É"Ô«Æ8³è‹×¹4 󒯾n;Pnø°±fî…͘ÞRCBuËÛ¥{tS˜¦þ^Ü#0ó—%´w°ʼnŸ€o *¢O¨õàëLÊ[êã§VR8>ú$%&¹zÅò“º'—ÅïÉhçç:šWÇõ Í£^c 6Ÿ„ÁŠÈ+yê.¤—çE‚RäàÅÎ]€ gú˜$$“E¯“;b»â^þØ ·`Qt¾y½[ëÝ~y‘õþäçÐÀœåèðëPšvˆ—éÀX ™C†ûÏ_·Ü½|·mv8{3§;eçÆŒ±ü˜²J§Ü%m3£íºµ?‰i«¡›Æ–¢ÀÈEðgŇù]¯…j•©hW¢f8¶Ï÷­ãsþrŒì"k8YIÚc9´:Z«žO7AÃYì¶*¯-¥ž]A‰@4þ^@ /÷v?uÄØ·âÈLÒÍDîd:ïSï lV»”Vö¥XúŽf>î 3 x#‘$ƒUC mé™z¸tÔtѺÝSé[Wbç‘cW8ñ -iš˜^—Õ}ÖÇ.Á: ºà¹j·¢¶`›4Ç:¡^ÐòYò|©éu×—º¥ú¤ö3usڬ͡ ç¶–ü>÷wjòz.‡ &ˆ^sMœßç)6óÏõÝßÂûÉ;I¹S{ñlà•[±V¦]^âýÔ ³½šÀ“»hÕ•ѧ‚¨ ·½¶í2O€2Ú‚:Ö{bãIùS¢îÿ%gÿhÊr\ûÜ–˜?B^Hh³Òp%óŒú'ZþYIyL3hÏâ­Pü¹ø™3¶„ÅÛ"-oáàD¯X ýÖŒ–¯”µ£v!À¡LCVK²„Ÿ‡=&)0±â¨ ¨å¿ñš!$0ޏ”i1æl †Ùõ¢Qc\ÎÄ¿HoŒSݺ÷è,¯½i~¥ÆXÙ¼„úS§±LÉè3É;Â:DH;Ƙ2}hgŸ÷6ÊcŸ:f/ð¦YT÷5Ã_*,Þ=ÖyD¾ãÕùaª«ˆLõ¬]š =B£¨|Š9ê^¦±Š7"¸s݈3\²–CÀæÌhh×d€è“K…JüNêû$}¤nh¢ä8µªò×¼¨¨u–U·'ÐNB 3×ÓWMâ‘Õ,fÝúUÒÛn¿a¤è! ˆ p’ ÔLvgY®OFi¼„~‡àOn•âÍÜ»#>Œ^oÖU Üoù·•®~¥©Åýg,KwŽ:4Jó;Åp Ù ru“0”íº‘‘ÝWîŸø™yAÅ'ÕkšSº§Tî|Ò¾w¯ÚŽr3À-„†¿j„80NmÒÍýY>í©¨X@ŒcÝë V-ÈŠõ˪gwZŠâwwÕ¼6(ZŠU)HNšMuø -“¦y:îØ·ˆS’…“ö^–“ÌÛ_Bj¨üöÜ€†Þ/j§oô‹Äºp5Ñ+·7<âUe4kZ\ÜÆhßWÞ”n:ͱʥÚmÆTæèÛê®×ä‚Mk™j²»3 Ík ÌÄ{¡ñ¦Gï²–TS¦œýŽÁßsçvöù¸½»D â⇈„kw_êCûxh®Æ·¦“C Që3’ϺnÉãìè;˜×R½¾>ã)8Ú(vÇDoÆó$K?5Í ZwÒ➀÷*\8fÅݨÍë—4¡§Õ”JY¬¼{sL j¯ÃãM̈k>»wùx^k7&“9¢l~Ù'ƒíL¦Ñ¦Rº L„˜M*8ö(Tg¢c1­€mA¼|J¢ãC»9ÜœGd—K—v=)ÉýTäVaA渜Cbã3@|?š&˜Ú'§^£×jÿé7Ò{c• EfÂWÒûpQFÚÙC‰\rðŒD&°¡»hB0/|„t‡\ìN‰(œ}€ü±7•r™)½ `kDU=´e`†)µˆ×¹guµ|‡7Œ·´øœ‡Ä应t¹hpic±ZS:zãÙ~ï¨ñ‰’lgÃÏIWa=«ùÌ? Þ\’7 à YlyÓýôÁB'âÆl0iI•^)¯ æ6k°@)‚¹Óõ‚ ]K ú9Ó¨…Þwì=û¬:$ÄWW…Ρ‘}ìX')Ì9nZ"H®Wfëž5Ká&à)áéTùԆߋj\V­Þ¥±j¨D…IB»¸l8z¡ãÀJ¾:ÃFì¶ðj`ÏF;é`EM:¨ôDFȉKhÒÕàDÅ”ºòÖ–j´Mó¿4ZºRø‚p‡ƒÉœ\U1Øx¢‚ÜO_’÷ytH˜*È©/\ºC#/ë?¦|Eq"?º+Ò3t49 5Eì뺊K£·H¯±«XN#ü”Iu+|BŠsÿZNº:Þ6Óhžžsyl?Gæ.;åA.¥ô!¯Äïì`.¹òh¿Ïù!ÔsÞ¯>…Sì§|¤.zgïî‘–4~lµFQ[¼¹2'4¸w†£Mõsv?é[a¼ÓFŽÿ.”Ñ“¼‡û™WéÞøÑç”ñؽK‘¼n6™¹¬Ödánÿùž# dq¥{/årú’=:ðN8yñiº¶)eŽJŒòÀhõöåA{œÉ'–°‰›é”,¹ÖÏç5F°ëœ ý VÒe‹°ßÀqsº—R¶¼ñ–.õB”NìŠUÆ­o4<Cï062Ì”^q;; °=Ë„æ"} e>…Ôæ7tþîCEe+aÒ;FjAqÅ ªY³*ÅÃо§+j¬õ+ øÑˆÿ†×ûyL„¤îVI ù= %Y匷†ÀBSéF 6›o2S´ý«9âÖF©Œç÷è”åÅ¥#‡?Z·¹xYÔ}¦­ÒíþËÁðRªŽ”ßån'M®ÐšÝ„©¶ “Íì§e[G[_Ì]ù1—«¾íHCÛÀ.bϹÈ9³rª;çð̓­`ó¼6-–6<‰òž¡C}Þ–DX§dÌÉa¶(ÔÀ¼S¾¼Q¯õÜ ÐTHF=¾ð‚9š‘>c†dÌ9ž æÇzkl'ÏòZÀÌ7ˆÂ¼"$ìãΘ Oèî‚{ìȯ> ÑÞÁÒÿ° ‘Ñe}Ô…Jýó¿û´ŠMs¨ÁøZ~Åá’:õª)S7þK+.—°}Á“ae`Ô”TäôG‰z üHþO= µæn÷E¥påhÝ-Î3´y…ƒ‡ù ú†Xå3¶×ËX½Ãn ßÖ+âý¬2XèÝ“q+ërÝ)9* _Žð×è–"œ#i†zRJG" ‚oீ°Dr þá3;Ú„ïþÆ=l­…ÚG¨j‹õ‘õk¥wI“åÏïkŽO¿P§@X0‰†/8S‚±R<*©×àXNê¬e™Q>ƒ-yŒ,M| ÉA°Œ;σž¬êú¨ÃßpœeEBøH I&G2lÝ Ë¤ˆ2’ÙVbÀ?½~©æZà݉)ZI¸UL$Ê­Ö¨ž×qÍO€ÇÓì5RZ°ˆKÓñ!ˆÂK©÷>m½áÏ VºÕîŽÑöÓâaNò~L‰tW%w¿dÌ87=šÌ®|‰vÁEƒ–ª =åíÇ×RB“B1‹¥%׫ÑqŽ:¥ œ~1«y/dâà°{XF(`Ú<œ‡È>­Å7è«ìÿ‹&«òø¼´×âÈbì4û¥ ø“Ð)Êß à ò67Øõ?½(d"’Â:€¢zÇÚ ¥ ëÖÏ"Ü‹o¼Xó-Fö ×\ª{@xLkç²Àö&îÔ˜\ê³ñûݦmé!ÐË+4æÖ8팿S\÷_£DÛÿ»ügs· ÖVÇÂFTSÎPr«>Fº@: $QÒç¬IX¯ì–€›G½õBÃÇ@³o¹…ð!,âʳ™ìð™Ð\9¯dÿÁ–¸xÁá®f8Ûpî{j…K˜â²/GVªíŒÜ$‘}×ÑÓκ5ÍCÁÏ0,] gßWìQÄî!¦gN¯»6¯}ìmY:ŽéÔ½#q3ç`¥n³ß6Ú•à8¢—o+0Ò5ÝÐP Ë}åíÎq‰î†’Kø´ÂnÝî¯;‹¥Þ q`*ý»h#QËlÝ¿E@W-’Pÿ ’JØÍ´ ‡ØjCoš!©¤W–eHW;Í㔹ž0ãç&?´_ëõ]†tðº;ù± ›fÈàþ¿cÏAN8æah¼ÀÚ1aÞâaVE'"Mñ?ÛRÊ/éqïþKëUbÒVn‹35)=ª•IŸÚ^†” ´÷G“8–ðÖC‘ÎQöîF¯™ïõ“Tº•š"Ë(Sun H´pÏ’aºeM’E’_õ›}ñ×¼qvD BÃLLJPZƒçH#:|LlÑNð88šÇë²ô3L=eW@·ËO÷ý-l•jÐ <(RLE½ïïn9³L“Üþfo׬õ .*dl$|V…[WæÎ¹ù­šŸæËKIÆ&”ÛVšö43?R‹ÿk`À5ÖÉØLXko¶…-ÃÉúÛzªÂZ§¯ÖA$­­ó ø0}ÀÓáÿÂ]©¢*+ Zó’¢ß>D2mó~ýrCòÅú ÖÌEü·'"7yè˜)J·/N¬aøÌ5Òp[z¬.ËQž4à˜çdXÿäûüxSÇ»0})Œ£´å‡ <9…³2]pJãÇðX»7=53µÖ½|)‡Íg)™Õâ¦æ«ÆÜ¬iùÛn»+QJç¤4j³p¨§‚?Šq3¹¢fäZõé@y0jëß«ç„c/`@+ƒâx•ÿ—À€2²3Áظ@<ò3.^IŽ9âý|Îú×¢Ä[ºîÑA7ì¥L… ÒS²¤4ׯm—ŒVq:äе•Ue‰r’ò*Ao˜Ôµìåy‚Gƒ¢ëÛµæó¿Èu@F}s$CêyÝz¿ò.ÊîDåó^>#¡T°{ý¯‡FÂ\³´G{÷ˆ»AÔ±|&bÔ Ëšy<Ý3È»í¯Ía+]âIWtU™ÍmGº Ë})ë² ŽÆ ×½bÏ;¢¿u“ƒ$#õób†ãúϦ+Õ¿BxwζS1ÂÓ.›1žï@ùjÓ“¿ƒyÇ :”Âo„ñ l²•ºéeýÖ¾­G¬þb!r7 ¸sïŽ5¿¹oM­Jõˆ?püÀ˜mLoUŸ{v¿=ƒ?V|ØdÀ–8êÇ×&ì1~J]ZÏà ýb«Ö\ØM°ó™šƒmNgI)AFÊìÔ”1†É>ÂmåPëÿµ(œ{Á@ «ƒ˜¿¿·äWÿu.Ov$³0Aæ |¾eN÷1†ÅŸ:)°;8¯1Ÿ,‡¸¦ôD˜› lŠõŸR‹“Nþ8ï³rg‰‡ôÆÐ`ê‚êùÔ]ìþÕáÒŵ4ôìY /‰W©­\ ‹‡bâ[™@”m¨dqý$«ìÿŒ)«ãâBó#õíM„†™˜$dø–1ÆÑÐ*ò÷|—… ?oes ì‚öÉ”\Ž—í™¬oýgË3Nt4®¤%$’Çó æ¿…Ø$çhtœM›“>ßäAñão—Û5(˜ƒcKRºÁ<·ØH– Á7LiÌé¦Í›` JŠšÿxU ܤ¸î&Ëš§Â3 ïë{¼dìc ‘ÔJ5 ½§&˜V6ÐØÛ… Ó>•bñ&~šñ·tWþö·ö†ß!vÓƒy½$vz&)ãýŸ¢ü•”m‡ ™ ZÎ…åÈEZª_úðxLEVl§¢,>H䛚ékNô1êèáÄLÝ]ž\×±Ö*²è·è• 2s˜NBsËݾ1f¸bìÌ‘BM*Q…ê¡ñ¡~vr— ,G0 6>*h0ªðÁ÷·çGÔþÜñXš#Œ­±¶|…K¢ãÄɺB]ù¯ÆÊþ«x!˜iÁE³¤„ß ‹u¡’]kô§Ç;ê„ £¿$¤ÅíO6¦1|·<‡'\üMÅèm‘ °!œÔÕ½Zê_Øëò±R`Z4»ÑöÛæ!wBZ>¬0J8Ÿ­YuÅîpÔº,ôÓ¯ .SöýIÏD+âraÉ6ÀR[8~½åÆkf›À}é$EhGåC:z1O•ÄgòÔÄ '0¡àŽÀüÓG=yQÓËöѳ"ì{+·À¯ ùÕ/`çý­Þä\M‹ûj@º+ßcM>Bð½*ìS#K×÷ò"µ,ó©ý®Ø½ÉK“ „K“€7p°?Þÿ9ui“„?ÍwÍ›Üü(<A]õ/ž„I6î¿2ho–¢¯‘/ǾGÂt£ºˆÉº¾æg…l®#¡RÉB¥[;¶_òí>ê÷PR’²ÉKæðÓ†M¬™š5 THx³›R}ømŠT¾W'Õ7Rvº }T%ÂAÆþ%¢piœTZ„«·[v€[|¯3A³µ%Þõ<{JðwtE´ÉP(ù²ÿh>ÙrŒ‚fŸþ˜~‰JŽ%[BQ¡R5ìÑ8mwWd©5b9‚‘¥0 «àï¼Ïëkå3û  FEù<1/-ý#ÿ«ŠEäo³—’E;ºÇç6þükíÖg‹þT°J%r—J‹Ú}ª$×Kͳ›Ä(ÿÐ3 Eôú@š1+ ðÊræ'{J|ÿÞÈ=Š5wßymeÎñ#8Vâcw8Áý.é?Y‡¸ÉWð'”ÀÌÛÀ¥Z„Ò…4ª5'áUoÃ,6aD¦B'çˆu×(ev¸"÷LÊçàÞO—Ið$#…g!Tý7. â‹Ý¸¢3k ]¥ŽÿG[ϴ刯ôñZÆxÒÎaL!¾\Ïk‚¥å„âe v>³ ŽêàÛU‘K`Òœù“-<Æìpÿ ûµîã|Ç tÊMÄÃëáÀšÂ›¦Š ù5¶[ÛJÂpB‹ñJ°¿ØÐWaΫýC&µHdÖ¹Ën§•Üpé¨X ¦³–ç ‹7Y®rk…9Ùæ0Øð‚Ì6ûíÔz'âI G€¨ ኡ*û¦§hÙ4zˆÿ/'€Þ.»ÍSܵüK} JX¨žÞò©mÇ´ÁB›´B›%ð œðT—î”r¢M©øº8¸H İòÅøQc$¡íù¦úTŽSAzì%UÕ‹6ÑÉ:fIhˆ´žì7â.y–,2“…3¾rm>™§!–OƒùþÎäÌZæMÞ(NÙö= ]ð%i“æóXØ ôe§†ß#ëêLaUÜ…ä±½ÜJ<|ï­ú¸Â>‰8F VþBkúÇàUS Ÿ€BS${DRÜÏ´Lh¼À<¦p—µ9Åø­¥gw†—ÔáåR€Á]Ñp’ùÈzÊ]äß×ZKg묙‹ˆ˜4ÏÿÏQŽzW½uWæÒÈMz’ñâl" µ›_–»éO1-Å0ê×VáJic'ýÓ||#H1Ã&Ü ©è(˜ˆ~«¿ü¶!4(°xìêo0!’˜Ñn÷[7Ï´)uÓÊ„!5æz‰…ãŠ×n©(•öoVw\(W¸1·¥ÎÙ÷<44ìc!ÞÚ¦­&ã/«¼ö±þõ®Ê”³‹ó©#™_u~§ÃTE“±M?¸T³Ékáîþb~^Bp·Á°áñ5ç5àH]õ%M-@V>ïjùCý Ó]šŽìœç`åßE“¹àÿšp©Å¿¸*G„‘ßÁlFÔ¬Ùõïgx¾è‰ Ö5kq d9Þ“X-ÇA,îxé/<…TÛ€lHÙ~ý>.2Xkë·Â딉!C?ZFIu¶OB”Ÿ Ë¡y4ÂÚXɈö"ëæl¢&{‘ö‰ñtS§0ïf{[–¨i-Rzr4–HTÑ5 IJ{ šHÜ$Hw —* ˇe¬dØÜªÅÐñaîìa» 5hq»æÎúù†tæ‹¶1!ǶÜ S¦õ[‘qÈ%>8‹wôXD$aa©[eÎ;Ž­¯èP0<­ªñ`”p²/®þïü> W6©Â>,U“,ïSGÝd°¿g5¿ |Ö6âѶîéºX«ýl²*÷k^ÕærbØœ¾¶Û¾È¤Ë{ò÷P¼ÃÇñœ᦮ÞäúQ/A>Ø5e,ÃÝó`œR®Ž¾4ÂÏ•»îúPbò#M¤=”_|AQE4e6î»Çì4Žz‡E8 ¼–ó´Šù€qcþ‰r†<öU¢¹¹CGÒg?¥·-g±Í3}º(å#•-ìŒàä€(ñ ‘üäê½z ]Þ Ê ~Ü‹©DdóÖRÜØCº?ÓKµçÝ ýb}žºÝãéȳºõÖ2©U kF*GÓCuz²i5I;,vvà Zú Qç¿B(–άÁ·F:‘¯ˆá/ «(P!«|«¥Ž(}K»Û§%ûBoþT³ÿüFëÇs4>0Õïê)-o0;.´)³h{OIʘ˜gmBOoÿäUµX«{B6çê  [é@Ðáñj~Ž)x¸„‚'ç§7IRΚˆ'¾]×ÊŽeÁ¨’0ÒÝm® H¤‡p.ìç J¸à.IR*¼h˜Í•8Á„Èì½A •>w}~õƒVñæTlëà±ðj1ÊòASŒ«íà~äÈ´5ÍšZCÒÚO’ªp|`*(Æ'ùæŠ=H@ ‘Å/o­íu͵Aa6Ö.4_£Ù°óí¦ü„ÅjóF¬D†/‡8†î?º@+µkÐ'Z| Ì|«ù ]D~ÄVûêA-`“{t«QWz-?W™ú¶œñÇú­þˆÚ2±QÐwv^ÿ›RÅY@8 kãâg;: SĨjë’{ãÔ¯u1ÿnÕp©4ÂõUkDè/1Z奜=íÍLåòÓʺOÇrŽ?-Óté\1ƒ²cꎶšÞËň>Bñ‚½’;: •_ŽDÝu +×cÂR[#yŸË „ñíS yy¬(ðLúÉÓ¾µUªÛÌËÍÔ%7rMâ—!nf>¦0a í¾ø=_×]¢ìV^Ç}5@?ösÖ_AÍ<*…û>h’Kfº“H»:ôÑ6ÜŒŸF4È—¯×7án5•rR‰êv -¿Ú`οýO[ß=æõît”ÔÈÇ%^îþœ!¹|>[íÅDãÅÍ ™œ—àØñh/“(³èç„ÃÞoŸÊF¶+´5Dr $PW»äÜ32 :m+êë~ Å}(m|a&ÒÖÊ’ÿZ1vÃo½ûš:WG‚?öîÑ_¹z‹è,Y¯ (ÈŒôg¶û9ÃhúÐë;¢¯Ë ÍÎw¦ÇÐíø7DÛ:hñ-«Éª×Û¹¥sÿΰÿ‡y²@þÞB‹ÆqbŸê`eÐì¨b^¨MÙ –/V­D½2‹Ðv ÒK` Öá$ÂL.«ŒpŠ3  ÄK˜&ÒÉYͻŭn9oâ’Þ¥ÉTŒgÚ@Ÿ½ãO³óƒÊ!65†¦Í^ÄgÖ«ŸB9Ç,=¿Å{“*¤l“N$íÄŠýB££|¹PŒ·‡Ÿ]oC×kê†Wy1AºÐïx¶ œé4‹#3¥@o»(Ö›Ð|N"Ø K#H‘ª`7áè—vãì±^¶‘ýzáy\uT1}5ê‡ öÁ•«R‰çæð32Akúš›B7æ¦Fv–ÂäR·rÔ”@˜7ÔYÁô#X6¦Ãîèwô'~ÔÈv¦<’Ø*á3Q­'¡‰Ì­!°/¾ˆhøžýÌrX÷5g³Ð¦}ôÕ ôæ576Å+ÚKh~y87Kã µîe]è)áø˜5¬\ãð ­[ç‹öFÂPû"_TËY æz+ P88©”`¤Çü”ö?–BÔ•@[,E$´PWâÛË>›”pj0$²ÿáç^2礯|8‘ê)5ÛIqIl‘B,ˆÍ/’ýáÏ^XëíƒÌ6.&ìZˆ‘“ÌH=ñòiÊ\×BÖ¼–s2û˜<¡'Þh«¸¬"~Š9%5ÃIЊÄÉ-óp´V"ED¥žÀ) ·”0R§;ï{blyÂvÔ"Ž‹ó2ŠòùJ*ìzi¿»É¬GV®¥( ê|ê ‚ dYðÅ/ð›Ox'ͲÞ%ÐÕQA4ýŽþßøû#Ó^|ü{üµyuÊ–#~}?Ä ©üv䢄r»Ù‚B(Uƒ¶c~·d_¥J…æLè†ÒÄ[#X@”{«°o+Ù!„BÚÎüÖk+¡€+åDqW—Kòè_Ø«rgÑ¥ÝZèZDñµÄó‚%má Ò¸…؉2 6©Ę©Q?›êô åiž#Ù¹Îý“¹>•ô©á§E©’ïþÙX‚%c˜JS*”ÊúDFnöãõÛ‰…OÔ3¶q‚ÅÏ£ãº@gˆ¡vd•m 9YEíŸ4¬ 9[géâu¾G£¶œB\lså×’d5‰9øT2X‘ã׳:æ3p܇ÖJßêf Œ+j6€¡¯8à+ÓÑ45p¯BQî©X ®W ‘±÷lêE½cïª{ITá1.°Ó†6%Îça:7¬£#2VVõL\"UÌó8­½|Š£†Mnú,›%)(…·ä ¿Ox¿ût@N ŒþJshUѳD^ﺬòjŠpºØç&§Ã⪠ Ü»×ÇÿÆ*iÕ)‘EïyxÆbÏÍÜT·Ò³¸ïK_E ¨ôw~§«Üâ_€¼(«áùûßósèY,ß3À©‰ÎŒ-·¹Ãábg‡')¤Î_ÁW»Ù•Ò;ß? ¨lÙCé%ã†ä>‘ªh8¦ »v(?Ñv—<íy„Ù"Iê9TýsMþW²GŸy¹ ãË nìíÓOÙp±„}è[’Ä5[ 9Žê²ñ¾Õ.àOÆÛ)·m˯“l(ÍÕˆé 3 ŠÞö—Å@K—¢D±Iq4þ=ivO&ˆ2·¹$;RÁóQc6BÄJúuR'äè^=Þ ’; =±ºN‡iO†æ÷²5&ÌŽÙ52«uD«PþÉß„KõÌèVšH.5\ ÄâJ­>áE-ààìJß‘[d-Tåȯ°ÇÊòàƒµ9eá +7Å?˜’æhþý¯Mß‹ÿ—bGú§vqóro*‡Æœ;RU}uVõ‡fÏfcã¢4– ª(ý¢^l§—+¢M”6äƒÔ˜'¿Å° Ú…Ðt;, /ëñì¸'BnÐg‚w-UšáÉŠ¿”+ZŒ y0øPLoÛଙ«{F膀^¡glWp« y©©Ÿw"x)…'G´MÇÑ¢‚úç*p<Ø(ý;«uŸRïBI+ÄèΔs¹®=wøÈ‘†·DØœ©ÖhAÉWàÕ‘m›àÚb¸#J®pâd±é]T'»¿éÃ$ “xÚÑdZ¹‰ëL‘X„,põ<ªR;᱓›\7Ò‰o%îëÙ÷¯Â0x݇Ðû—mû¢âYAjÜKm__?#Ñßçlï½¶ Œ_--3QÖ¶2ÇùÅå {aŠ÷O™©¹V…ÚŒ_X·Û”õˆwtMA}ñÞ1ݬƒÎJÛl `’xq¥X?R®Tß`¶OhµÅç:k~á³À øÙ(úé?^Z!ã¨å_ˆ;Ž/¿]cD”ƒþÀˆš¾ Án”Ù±"Õ¬è³ñ=ÌÂ#Œ'¥ÔF;'rújÏ‘Ü>Þ1…<*AF ¶òP›Y¾PH¶+‚†[(ªƒçÀÑÀÓ`ô ÙbŽ•k°Ä\D³YGÚ¢ÐnÕ$ NÕ®L’\üSû8Ñ#ù ¬!x©¤Æ‡|Šà&€Ì…¢‹ˆ¾9Mørr³öŽñÊ÷ª`›MŽÛ!ÇÊ=?1*ãb¥á(^3ÈSýùÉOì¤ußÌAêòã &O?93ÎÒôÐ ´t”0@7EÏt:eëw2©Ü}ì¬5ݽÿWô‰q_jPª¦ÁêÈ<."¥AkŠ^=P¼X0e™Órô†yU îÚGžúÎ Á$ ; ¼3Èø0ÎãÐZ€o3V]Íp/€í€wë YYeåŽ+•ÆÎ¤8 ¾FÙ`æÄÜPpx´¤ü¿ø›yq#ÃItâý£^>D×”'Ñc+gëÁz‚ùà½H¹ŽâäÄ}¯½âƒ}*ž‘€^¬ÿ&”0Éj.W n·¯ µeF0ý÷›¥MîìàjØøþí:¿¦îDV7¶Ÿûð*cx¾'>ášc r¸XpÛ}îTì;²›}R9ŠæÿÓY¿Šõ70ñ•¤Ífë $2<8ž#£Ê»ð]œ‡+'›íjHøÅ­Œ?©jb A¶Ò¾™¼í2%‚ RI~éLäÅ?µT0²6ýÕ—ÍÓ‡±+(¡½¨JØyE?!nl ¦ãô×îîõkMFŸ÷K£‡nÀY¬É”;õ¤ÕÛå e™?dÉÚj0ã£Êý¾­'5÷cË?*»1YÛÿ{}.#‹3;SÀ³ôZl¨ðö5²düuÝŸé#«VÑ£ÒOþøQw×q€D]äÊ,·CŽÅ’%awîrq’ôîUszæ¨(_bÅõê%ëÿ(^€„iñ'èüï}ÓýŒ8—“Ë?òÓv”ˆÆÑLV³.ùÓÏâoªµþó±éV‘´µŠ[œSRƯ«Ò¹úã«T‹¢6 Ì%É!5”‚çã¤AžY °: Òmq"2pWíÁ$eEÒfÝà¯@ÖÖwX£lô`¦|>Šsº™R4.ߊ¯áŒ"»zg[…=÷ÿlµ é$T0fð'ûF68ù²ú8ž§¯²3“à¿êuÏÁëN%³AÁi„2êényr‰+_T.žLZÖó@i§Kc‹’´u}^M²¿¡ ¥Ï%×oËú«€ú†aÌÄ,Ë´_ÆÑH–×W Êý›`£mc¦]üÁ­Î.õ4멽zø,c°‹@ï’¦aªÎ áæÞàìmŠúRPü+wV)3zPÇêïÂAâ.DãΙUWöƒZ¨üV†|Æä(çÂp“d¶¢~Ó@B!©×¨¾Kü›Y?½¬V2´Î¦O®B§ßY9wóBŽç:Z…‘ÅÈË•«}‰¤{`˜¾äÚÀºßy»ÝÌøÎüÅGf^€h»Æ-RÒ¢ua§÷{rñpä‘֩Ǫˆ(jãeã-ž;ƒFRcFɦèGE“tѤ§œHðï|Î3 ˰ݴ· /-U’‹Æ+é—4!ºÕ¯'˜PôúÝB3ÍG-5æFh•4zG›ÌÈ'Ý´” ë!ÿƒÛðÌœ°EwW·›‘}Ç8C^ ÏM±É^³&«Þ®¿vàœj•Õª´.R;³ô³ÅoL_g€I¶öYµh!†è2)eßÇMï˜؃¿äŽõÿ¥øB€Dt#œN?Ÿþ¯ʶú#ó« GPDPóEÛÃÀ#³Å€¶7&Ã…ÈÊU|¾Y‚^|BTû(ªûK)ÄWÊtYo¯rÜÿ `dL€ACøc6àclÉ¢¿I¯eÑm--lƒ æý<Ïu!w/N×rw£DäØo†Œ½z.=Æ0”-CxÔÕ”PÍì`m›WæªM\*ÓõàÇÔl )þè6±U&‹A¯?0)í §‘¤d“&CxÒÆÁ2—&`˜„—6D¹a»¤-5°çŠrŸ°Vo)Õ³¾™Çf©ˆa4á”åp9r4!Ãó‘~Ÿ’ò6 ãŸá7êÛ¿RÞb†%2±K ¬.H©ç¤0l;Z5çp‰ 8g%§r€²~ÑçƒoÁPFL×Óä‘IádBÜTº%f^s/"]Ž$Ð0ñ?n´ yøâ•C¨ìÅ]4¿^龨W3(^¥.ŸŒùuIö‹†Õ«RŒ ·´ß†j–:Ž‘ÁeϾ6àë$§#Ä’]s]ñ¢§ÕáI© Áþˆ A8ûÙiÎùÝþ½ß[®—?N€>M®øb‘à‡÷úGîBi• x[dלÉ2Ûô 8à’yB@R—oöëž-DØYܨSŒ`P¹Ÿ%ÃÚ…ŽÄGHv—––cŽç³l(LŸô&ÊwmAÕÔ…XÍ_<Y–•”X½|7Âÿ4J? -¬‡„ÁÁ®Sü=ŸZ}Ç7NkeÔ3h€"i!•#ŒˆîS][¦øº”ÙìdЬ2MÖRJ¦-ï€~詟œ_Ę ™ÑÆêûê‡ñí©"‹ã jJ€S;bM Ǿfj²ëo.”$foèõÃ%z|}Acø1!€µ³•þâþTp Mð×Mþ\+é‘àøgÁ lœ”ЛIííËû¡áâék¾W#’„Wœ‘`\SbÑù‡Z‘[ty¥û÷F芶Öù2m±æë&îK‘&v¹Õù}uhñ8TÚ)L|Va»*±ˆ»¿VZdó‡‰ ¦fs„ùy…Ýo|BEø…)Š0MM<¥ž®¡I£6hêía­s·ºåù®]™3„ùØÎïTOËÏOszíüÊNB,¤ÄÒø¼1Ù(hÿzö½–¨A¡‚”™*öCþÀE¼.Ï »€‡hS.Fìl“–bd1i#5Òj·_MK}ñAϯܟö#Ù³¬‘®iuLÈñá©’Ò ipŒÌºÌ!b2\”ŠaÈkÉ”¸8ê¥èÎ8æ–wË…q/A"ÃŽ@oùzZÅSeÀ*0s³N¿z> ð'#b <_]M/-¤ÚÇ}úLǃQÎW”9lÁNúŶ5Qb8îó œö;Dt ‡ýébsUÊF!¢¾Á*>·‘×ðàŸ‡QM`Î;=„]'¤sFHÍ©c«æ"g²Ð©“ATª¾…f(ØÙ¹Êþ<6ôàWLÌä=®~Ðã”hý0^!Ñù㙢ã|äÂö·_'°Îc˜Èd³Ã#Aå‰×&ò¶éÊ-ÖL"Þ MRæÓÖyâ®ëo®ôæ!<”NvO%Fr!d4ƈ ÂIwUj/6߸õÖðýv·ÒÒG¯Ó¸j3f6 I7­Ç} Ûæ˜ê>Š;;×w•”®5þ¼Qª¸5mÓoÄŸCŠh=UlãÁâ àVÕ:Eø BP:v1„Šõ£QÅD£/ÃTLS–Þ É ¬zè¾¼sÓ sÞ§/•W@oœid.ð‘jEëòR]É6À¦Ö}x3”ºâ1 ¸ç_üÏ7íF$k _jÁ<3ýìIçÑ#¿ßçÅ·ÞH$Üž«[ÂÒXâN©‡˜R5¯¢!11ßô÷àªÜË—±˜a¸º'}%öwªË‘¾ÿñY*v¡ÀÓõaâQ'ûà9й: µå.Q‘5‘`³jL™‹”‚îññazEm\9AãÊÌÁï@bAB÷¹Â÷©Dÿ¾æ(¨€ò²Â64|jõÆóTFhý @=éuðk‘íúJ£!¼¤´Ybæ}ÆPéGâ« ³>8©7^F=`Œ”Sˆ¼Ó4,op‡)aqõ„i“rÕzºK"^Û³Ä9³Öß °€FÝ@õ­™ò²:V·^+ȃ¡Ÿ¬KsNóGðZ¢ o÷o(q{^qßnN’PŒm_Ó}@‹ ñ÷cý#lôîQø²ó¥äMÅ.ªfáŬñr†·—îñ`#ÄB¦ ý mõl™|%¡Ç $w 3÷»jùËOéŸùó[ÜéjÆN-Å ¾NH ô£Œ•ÌM†rgÀD(ý&(*‚üÓÁ¾-þ[µ-" „½ÂÒé/÷œül »à$¨Õâ¥Ãu÷îö3ÁF”5ã†NÜ¥ —¸ºB ¨Êƒ§tª8‡ílÉÏçKÉÚr±žR<÷z2ªÓJn"1üVt«‹TÊφl ÷;Û|BhP˜d2üÔ€™Õd2Žù”zÃUЇ½jí¿Ô$(tçœõÊË«Ü{íÚ W«î(ú:°Ä“†¾Q´!ÑãP8ðTN †xbDMÍ@ú1xŒàf(æQ¶Ñ,Z Äa˧DÉnÂíì–ï™c¥•M]°@eON¬Š•Èf¿(€dÑîw…qp•ñCÚ/w…¯;$Éø –SꌨÁ0šiÚ&¤Qª,àv=Én©Äç³I-¥¤þT—[O6@°­ÄÃ~ ¾ ²¿…‘Ðîxa1Þ®†®Ít¡ñ”Ò·Qæ;¨4î¢ûø dÔßwt2.3/Ô ëRé)DÞeÛsZšHz[×ûê_l`ÏiQ<Æ4s“šÔ&Žgá›ôj"4/Aÿ D½ð»u2Åo%ÓÎ;ÏËpS×­m#PRZÇ£‚Ÿ á°˜]â˜2Rç]ÑE‚§z€ÒRËõò3°p €h ïÆs‹û¡\ ‘&õ[ཞt?=#PŠ D‰ï;öê¾§<À“Z‡ä.0›H¯š+ TWKle(x”5 Ó\=UB„º×ôa2M™ë’‰ú×è£Pè’ÌÜÒkΩß!Hí .r Ýs’<ÿ¯µÝ;IŽÌÅRä7².Mqw²'–|WkÎC«˜ÇþÅŽ,Îì µê¡é¦8z£û+oøOß3Øs3'Í4úm¬@~ŽYâwgCÓÜäÕ(@á/Bwþ~B²ÀÏæäùÆÑ·éH‹™#V'Êu+îèWýN½¾i$èšRû³À¦·d¦[>Q’ñ9ö,£¨"ù+K„~jDDp¤ºŽÛ³ã BGFfqÁ«¬†h[¿®·Ï7 Š© Œ‹ uÛª1öž˜IQ^âø!ûî«wœÂVaì ð®%,‚ÄÌCøÏßíŽó"X³û³ñ„SÅ€•töHûögÈ–UíbmDÃj|έº—IŠðÓl ’_½&iTÚWÃÄ‹ø›.N“Ìš«ÌIK $Ü/ž¨5õþ~3í‘¶F<51B„¹ÃŽz,ï÷–ab9èÐ1U>Ü $‡2Hì‹$Ú æKyÔŽ:qö&@Pàá2´&‹”2Mê âèEŠ?é”òŽÉËøÕ\©°Á“f½Èe4MrÙtËòW,±P‚½™!ìÖæMßK7ÈP”öãåºÌØ®)®jÞZ6Î&ÒL¶E>Ñ#í†áž1ùÇðsÑÏ„Oß½pšÕ`Ð[Áì„‹OõÃþ_Øûü@ïÉí§IÎæ\òŒ=‹ý—ÏÏ««Ü,„$Xv*ê|UàmdXKe¢Ñ'¾o1îÉ­JFxÊ>-Ì$eVÔáHáä¿G§VbÙ1b^´ø2'b&«XŠÅ’o õ›k¼&ýýÁÈ9>°ßJ2‚N(Ò:IÏˉLê TE14c²þ$Ö§ÅãÆÞýŒýu,'zš}Ñådç7AÜÝÄ]´€òÞ™ý*Èã,¸Lbny¨ã÷ ³¾ô‰z® û„³ô}Q{NÁ)pâ¶3;NêœpAY\Å_t± °qKì5˜2ðƒ‚˜2¨>¬MlQöKÜöcݾnsceG£',¦é~Aš7©r!wP·yºŠcD •iWrÇ< \çØ5¿—‰Ï094•ˆ}ÑŒÄ÷·´¼žøíŒ¤9t@]S#ÎBÆ] A>ªÚËfÝB¨4³¦,#a½°6d„Q¦ò´êÎK׫<7¤`ýǃ¤€ŠÙÛÎ\Acmy}NŒß¹éuo[)8qý Œ§s Ý«l*¯qÍõÐon³””ý‘h üÝ•rᨷ¦ÞÐZʨOXEuÚ§àüu.ãl¸ÓÔ•­ú¬þ“T½ -¯ÇíOö9Dá^Lþq¦RgåýjYàjP¸ ‘›.vQ—(k`†O†I\"Gì-U—)•ñáíˆÉâQ­…Átl Kú ²Â‘2)àè,·* 0Uã•`ñZ¥Ãû´Š‚s|ž=ÏÀjñ7©Éö Ðñàb„w M MxO4NFúe¸4dÓØ¦NFZ–Ç [.;ÉÌG†YZH¶ÿ¹¾å¯¦K{Á#¥Î:…g&$ï¹§´õ­¡—•ÀQ™s|ò¥„&ÚIþ]I–9«Á;ôi|˜apL­i³ 0rtpuŽø(û’ðð`ðèÆØpt-‡$Á’=•Ù ¸ÕˆŸ;A| À¦±"¥¡¨‚Y+~agò[š3«Œ±Ô‹×H2g¶bö—CÍó/ÇÛó§s h-BÖewÿÆö˵DÕ}PH@Û6@ôpYËANõ*ÂñׯðÙ¬¤Až%7«È÷Idg¢º7B™$Öz°QthQ±+èй¯ištH\è-ÀCi@(‘ =²*lRÀ•Äoý¡ WíÒÍíC4Ë5fÑGßk¶¯;ßa°)>T!ÕAßTyŽŸw]£B§ן¤c(ð®­ ò¥Xk–׳H§Å+†N’ä \±Ã)ƒ^’VM]¸ZgÁÒûínðgÝ ·ÀãìÆ‹ÕgG¾Ì‚< Ïl÷yºh-ócf=µk¥ü» Sà‡»¢€ªùpȯ4Ý1E¨/_ïþ}SÄÄb[¨”<‡µúð_X§æÍ‹cÂ;à€Hn©>õrál=Æï²;Àê'. ¡4®„+¥Ç8`ˆ¿†OׯtܽÜÙ(Vo‡€×'~Î=ïÜðÔÊÛ–ô«ê÷ë…s:²l©MŽZðîf¬- YoðR»¶4 h´Ñ¹÷,$)‹Ó¡ì›2Ù@·ÎÊ0׿qm°7äWÍgß já16!útÿ=Øý„ƒ[ý^:œ°E¾Ôõ7–ˆýRl{àJÚùjì‰*|1g ßUf»v•e•“27Ö‹ßgÄhŽœW QŸS ¿¯2'6gJK ‹Å§‡QŽßø™%Põ'GnÛÀ–êÃw¿@^2íXm}<‹¿IñG´GQcÔ?[¸;ÿqÓê,¢°jow$ÿH"ø¢¿ñÇ5C²Þ’h‘xØÀV¶çøÃÌÁÍÅ)^óÎË?ÄǵÊÝnÁïƒ&E±Zá]Ük4”¡kï7 k“Ê»/R¾æÌ0Ù¨€$jÙ#p²rKñÇûëX„ŽÓˆç0¹Ì‘þ`ÇvÂ^Ùnn„oëºÍ䕦äf’s›»a›l9Ü`|\ê>h¬æ÷ðôeLàêAžå¾pæâ¿0ÍDöl&o¾\X”šõ÷?Ûæ&±/ QUlÎt8˜T×B8Öáòåøôp³õfoÔByG ÏLk"Ì“  þá§3Vóbn^î´D¹.×±]È~™6`MÚ_õÉûí¿ °bk’;|ðÝ„ =Tß±l¶ÚÐÖU˜'vÑ»NF†õ1½Ãš¨îÊGè;·çD`&;í€ò ÜÁŒ¸4‡ÙÏi‚ƒË¤J7oôÿ„uÄœZØT¹ƒ8ÖÆô¾8§D•ïÁ޽B̳ñÌ ùÇ#¤³2óý¥ó°ü» ø ¼­O×VdïÊÝû½/2h™.Ý~bܳԨˆ}¹¼•ü;&jáDL­J ïÖ(± ‘•Q`ÒnG-’¾ .ê©hœÆ±]-é•L^ÇA ¾äÀùõaëqêèk  »œ-Ь^£‚ÚÙPÏâÖvCÍâļMèxu”¸&@yª—Ø^gf"‰eÊ7Ÿ渷d:–²ÑX*è^净ô&|%€ê™/sJ'G 0q°Ì}zdù¼l{f‘5ðVTWXQC‚±šiïß6Çæ’ óp Levcƒ)R„•Õ> cý¢¹f%!í¦F4–oxô·#¼]e^q’vw µŠîı8x0rͯm #´:”¶ØŽÐÕ5àƒ0SØ £`|úš07ʪ4ô·NFhÇViµK…§Úh¸†]E^f»Õ–an©aM&l,§±ê‰+V€Â´kÕÇbP[¬\ÃF˜‡€Ò-{Ì n]ÑÏ%œsñ2º«SìÚ•ï•u„1¿cãªíz °?˜Ž}/ƒDÌxvôÆGkøÚ¨è¤Ñm´à_ÿp{Ðñ¨Ïx-ï¸ÊÃ{K*l0 bÔò¡}ª›ý™ÍŽñikÌ –ÿ‹÷—h¥\ön;,-®\ÜQS¹6C¥ê ”0(•5êQèinØõXŠãå0Úo°Ae¼NU_ãçˆö‘ÁÆ ¢ “TP¼ºËVðüÇBÚíÊs ŠîEóú?‘ Ùh¯’ÆÀ$ú¡éì[â–dpA|ÐZŽÚ;›âÖñu† cìåuÛ¯x¢”Æþ½ÿ½}oUo?"=(¼Ø‹i ÈZ¤™~nƒÇú1@^Ð-taêÜ/ÚgÃj.cÉ£‚ËÏç­×ÒóW&lƒxÙ±˜*÷Ì.cU!ÙUî„] ±î) …G÷‘¥J~þ±åß|­FÊÌ·Ño_«j˜ðõž=ÑmcRú…<œ¿ë)„‚ïû¡ÑF"îÙ2’à¡¥Œ¼ò¿V‡Úœ†+õ£‰‘nAÂ¥!›'Äà>BƒpF ã{|jd>í½fÒãÙs"=Þê¹èBË}-.  A𺧪ðøµHè•®òüLj>p·;%¾Ç ÇÐb&R7‹LÊýAªŽ/Öɇ8¯ØªÝÓv:Y;Bb*NÇ”íúçóS×* ßžE§<4t÷›Þß¡ŒœøhãÛ±nZ•±~)ØÇRø d¢,NTr‚0*"Tú4áÌ^‡®¬×çZQ$VBþS¤ÐG¼û¶Qi<âd†@B2è1ö}µÎP/[èžIK%¸|Ó<ÕšSÌÅ¢Áþ‰[{jSà/H~é!m~a<_Ü~| ¥ õ¢X³‘?¢dòo=_×M‚5±o»þïCÃÀ) íå7ÂÉùÙ-1åƒï|ÕØó>º€øÀÝ"ÆGmŒX…¸zòÐ=r¨“"Wžä$êOðà}A¬,h‡fåø´¯/æ–?M žLi6°½iNŸƒ6­ÞEéú¨ç¸M®5üU‹L3”M–†f¹j•Â; ¡«cè@>ÜŠ=Á %ážýÈŸLÜäòÓ7áæ…$*GFY1´k+Gu±Ó¬¯,ŒÈÄŒ(óÎÖ˜yb{i™½ÚA>VÜËC¼ää—ÓZU¦4â}ÎXKÁ2ÉdjjÕ½ñ»¢a¸|¿x Þêc~ïsG°ª„7~I¨jæd ý1U1‹Q!¿¯kîìúV&(Ç]z;ûÌUíá?6óƒçoy$5€ÆTö~Uáàñ¨¥f^Ž¥ ºu¤E|ëêkìË~ «ˆ,ÿ1•D,Šø¶Îd²ú|571߯C¤Ðc¼åƒ ×2¶ ñùëbOÀz¸~4’aŠî+·ˆ‘N‡”â?æ)kÚËÉ·R »s(ÔÀ°pÛ+yþæÅÕ?/WKÏâÜ8¾ŠÅ¤èa!¼MSY\ñ` ü½)‹ÿ<ð(>X‰+Ø|çÞ¢C˜Pjà Îv Yx‚ Ç×HÿÏo3—†Ù¶ÚýjœÞÔ-i>äoÀã5EE«ÈÁ©´>ëÚÈ3[)’ð©g१öaáÍ.O äIoßÓ*5+ƒNßãkæc™tÙŇ&PŒžûpÊmr™fóƒùæ•à~èÀìð0‰˜${Y¹ß¶kªmÿ<3KØ€ R·“lŒP9Þ«š ÞÅäÔCî¶I…5÷žO9µÝÅ‘-¬Ù2¦<è‚)h‰H¤]“ȶà23H±¼$$™ë¶Ø ªuÌQ!w/•/Ô ŒõÄ/‰ë“£XÛŸë.|³wÑà_ÔçÓXG.(Þ•n€˜øÀî† Þ¥—Š‹FqÜþœ˜üh#‘Óó æe–ZH²Úd‹Öԉ䧽@‡Z§Kä–à×—'ÛÝÁáµæ!'ã5U$üŽ_+”¶Ü7J‡rŸ€„ë%U-ζ¤J77æ{Y"jwÅ’ŒÙw r‹&G`s”P*ÚÏú}¹ÚÖþ‡Éq¨½/¯nÐÐÏ}y¦`§¨¤Í¸üþóJÏ„Á¶¤Æ¸˜îNÀb—æ3¼R'8cà (I¶ùW&H†íÁ|ÍÛ™J,ÑEj÷:a-Ö(¯<½¾­\þèæÎ¤ R ÆçÔñî”ö:©ä,$çbc2DûŽŠïÎOGYæÛã¹|X/y?Fá‹•mL*±Ù<§SJ¸êY¢¥ÌõB q>W|Õ\¥(bAÈC€‡(/ÉúFÑþOû—-žkHšŒÕ/pTV=ß‘ãÁÇloÜwtõg“³cf&o[k¦yzôTù"IéndÛˆ_IŒºÑŠûADbèõŒ‡ð§W(´!%úXRT+SÝ3nfRÚw´‡u>[·›>|–à:¸nÔ§fïú¹â>UEÎâÝÜW“ãpä«XE¹Qmr¢È’ù¨.F‹¡Í0i8Œ¥2¶·®»—œl½…r&zÊ 7V˜¥8ÀÁá·î#RÃÈFžŽdLXY–ÂVÙúLú£ÄoœSŒýå+ûáé½èù³ßVŠá£4«FW‘"3nãMD?-<\t·Ûg4nLby«û,/é•Q ²W;r¿7þ)õFE²i9¨çeºµ}¼‹ýé¼sP}·êòýaɲóÖúCKï“ç| z&XpqhÊÍ1²ÕA”Ïon€›º™è¶;"áÞk¬ì P†•VÈx$1áˆ: V ZÂúlo«â„€øùRÎÐl,÷GT¥ôÝÔñ ¹§'+ÈÐ8*¤¿V–§Ù‚¡Þñ”ÌMdž_úêHœÿÚ]c¿ ƒ1‡‚?Àó¦ tíÊ-íê(k›’Ù/Mܥ݌­ÖâüóFk:¹Z:gûa°›N?MÊñécš\k¡xÚ9 ßõä×kmTšÁ¬lã{·F”yû ¼ÎîìÙ‡½°‘Ð_ß¡Æ/@T˜á[çßÕ‰dÚÿ3­#·éà«¥¢Gˆc:í] eí)N:Nî”Äk ÐeðÊ©ßNTýŽ+dêâ¼QÛòcXèsÕ @NÝkI(+gç±’¿Œ3~S)ä))Ϭðw¶hëKÑWQ Ñ¡ð·îui¯_KA.¯>?/Nè¿bt_[ýŒìðªG_~¾geÇÖèÄwŠïMkŠ›ðöç¥P6²{ʼn§u”²G#WúäBè¢R”Ȭóò2»ÿNhP>ÿ|[<û" cl3W.s^áKµÙ7Eˆì+·«² ÃTj;Þðšé .Ùìe€ÖŽ}($ü:·Ì­Ï\ ¢H¯ÙSë›X:á-dM/ ˜üÏD;Ú˜‰'ÄëÙnøå³1 J²-LY7¥…f&í~a7[QtJ§Êæ>§Ïžt‚¿¤‰ñvÿðT¨m>'íùEìDü5ö¹'£™NaàO=ÈdF/sàfįqµzsdaì˜`¬FUfŽ4½ åEiu3Õ;ñw3ãK˜Ù×»µA¼×ˆŒmP×W²·‹ôÞ\þíË(+Ü8x½l«‡.ý¶Ö.É€ï {h á <‡œ¹í3³ëÚâöÑ$JsÇö²èmÙ`QêX…_4Ñm”³ßKý¼ò2Þ4c*šç” »Àw¾ Oü?àJ_»È 0’àÊÿW½ Pº4²Õ•ó>ÆEEnäô‘QM^Åã˸Ϋ­t_Úør'Ø@ætÓ°qØÙüаÄ÷¼"FqïG‚T‰ó®ÃY ü‹,v¹Jæ6O5ml^ VÞ¹4×A¿ÄyfŒŸ‘–šz௠„'÷£`°Ùz'—g¶»üêâ¶Þôï‰{ÌË6y¾UL½+uøUŠ™ …Ä—Œ|Áă˜†u¥KÜ òÿ$Páâ‚GR.´ê…¢DNÐ{Á{s€±Ål$–226îÄIml¥VŸ{­Ûa{Ъۻ:o‘Yd…â𑿬 (í’ZÁ R°04.=—ûyJQó¬ÙåW´]Y…ýëz6ªtájÛYÏ,ø¯i”'lpp‚Å vgâõáëÙÅ”ÐáFÒµnùê9N˜M¬ÙëÓŒŒ§ wmØ?Ï ´;Ь¨÷õÌÕØºÚJ§×îË>ÜõÛd–ÅÂ1ëòÛlñ›2{ÑWÒNñ)ÖM>Þ‹h—ÿEY?å µáÈÏ$ã´Æ2ÒÚiÏžw–øéÙj£ñ{‰H+k¾„ÅqlvÜ“ÇC<ßÒ\Ƚv/¥–1ˆæÆ$H<"Õsa±™±¨PÅm]ÁÿßÚ¿=&ƒæÍ/¥¸æs]9ªÍí„çá‘Á`_âsª¡$-IJ6çrG­™¸Z7_àBˆ9Ÿ#Å‘UÀ½B6à‚eE2']%'g/ÿ¨2) ‚ñ¡NZ!ňЉ‡ê¬ Ñ …5ìS=dKõþ1é+E{Ü¡O9˜,_;®Ðšô{’˜ k¸™p‹^ƒcÇ­]¼¥2‘ï£U¥¿5ô'–Jþz†ZlWNüüar­]˜ÚFÓ"- ^žÝNM¡ì–‚‘d7tu|¶­Þë»ñCUŸ˜tv=¹æ‡º©›qcëWÄ=¿½rR®BTy\˜ñÙ—ˆ»¼Íï-kÁØÞŒ[:V³œE; È€Mò ›%þNå”÷a²‘7)o Rô õ·I¯×Eê` ORS;sí²‡‡Àûi–‡åÒ LSaé ìÙ² B(Ñxé Ê)ŒÁ§¤w„r§ì¾ùÂc¢íà„`E `Ú5±‘ë±5^—² ò+ Ë kž?”ö˜ëuÒk’ÙH«H˜®îȉnwÒùį¡ˆý8P°µ{`pŒÑÒ€‹¡Úy¿.`[¤Ñ 1o ¯TBñW§Ò…ÿpi.‹ ï|âu1k;‹ÅQ¯c.ônPzå!q¹ãIoõÄý˜ÈŽõº¨±$†h˜(ÖC ¦å0:æ™mó§Xüác¢AÁ‘½ÁdŒ¨Ä ¢ñ×dyÕ(…Á‹rð_J(t5Šj zßÛñr~œ¼±;µêA-X³od³ tR§Oy ¾cm¯'p£¯­r0£¸)`Lß̼' ð7dk-Kêà7Öx$¸Sõ±ÿDø°÷ÎY ^ûÿíá¦(j~ÙYJ;Ûò hê"á•ÜAÓm‡þR¥hdu Q=‹arȉr´‘­½¬ƒPDò.wÖ”IåÁÜͱÛþWª€ ™jÁWÆ”žQÝÚ’‹çMv¼ÜùGA4w6ŶeòWp6Gœ@(åäùjë)=R°îƒ88³’O˜{e£5Þ÷fmå%fiÚ#Ì[”$AÀ>ùéøMT±4³»Ã\\zt9¤„“„«l•2EµÇbs×-W©ÐhÎЋaÖ²ƒP¢'K_T OÈMúg(ÄtØåµdù$îƒÖ¾ŽššãDÖ‚'‰êÆ,~|Êä Ùí`BÇ`C´:¥£ÎÃv«wö$WµRx£3Žº°¸GÚÇZåj;¨ðˆsæ{n×RQím«4›¤„‚Ò|Qr9‚Ø× âV=ÂC?ºoЖÇfÁÏA°²œ¦É0ÁÇ·ý~Ãèƒ^J 󣑢í­Ñ ¬ã©^¬èÙA¢|Ÿb$-k Ù’€’ã[GÄ]ñ$ÐLµä,ËC|¿„øóTÆnerÏ.à ¹Eåyb$LK´½¬-E¯¶Öð“Ôvyån±0œŸúÁWây­`k¥LDÏÜ®£-,‡£†k%¶© C¯¹}/º:°QÅ›¢Õd§ƒÒÅBñ%¨ ©hå”Xº Ë5 í6ÃÝb º!™ê¹p^FgdypœÜÉ(˺3øÊY4 (·«„V@Yü«RÙÚ&ê,Æ\Ñ—€ >‹2ç÷¹Bƒ˜ ñžRqV«(Kqý+ðœ× °`BOkPDK4º·½áX4æÝ:\Bâ¶m© ‚¢ˆš®m›érc°yŠ¥‡"áèPÒM}ªkçF~œžŠkrtIÒÌÓJQY•ûÂÆôCgT[õߘʻ`4ÜCר×Í@!`ð€*3xt6-%ŸGHŸóÆÌä°¨ŠüÀ7AïŒ'õÐhÜ Ä02±^÷ëgi¨ÿ»²Ž—D“>ó{…3wê^•šMJÊKÂ7%»Ö¦à³ÑÖ š ˆÿtJ<ó-ͯÚcKÜÚ€rœÇí¼]ýùÕÿôŠðbR‘5d¿ýfò5! ¶­©HXåWtb „ ½—v™ ŒJ QÒIõ‘W.¤áxÎbíÙÞUpXô³§ÚO|þ¤ X± Öá-Û<÷ÐGhsÏÚ|ƒHŠÜh` äþ)&Hêb4hH ¶¾«‡3÷wð6ÝçªF\{ÔbQ‚F—þª+vAk¥Ç³m¥ÇÅ8=!ÐyŸqW-‘+X\¨,÷>Œñý³´?Å×û{ë²C.ÆçöD‘t.4¢Eî;ߢÅû¾¡º7oKø`¿a=÷úúÚçƒðùÁàŽý²3 ûI7ßZ!1~ø 4åMVɺ£ù-J[ƥѱ¡óÝ6ÑÄxÂóHÝBø~êßÒ¦Ñk•Ƴ¤¼“8^|®¨ŒŸ½Cpü7ÿ—µ¥íÑ2iø’Î2—÷7*tÄõù¹—Ä{Ì|êAD„ùLEœ/K.á %>¡æ^M2ö wr– ˜>ì6ýbìÙ¡vŸ}6Çeh©8·.¬œè¡ HèÉ‚%o€JýéÌ~ĉ=XÖsÒOœ0ÕóZä ¹ìÊA“Ÿ³tÜýU™1ÆX3»-ïìËëô~î¥ÿÖ¸³ÚÄÊ}|,\ùØd_™ÁMIZ•ô— CR†œà¡-rS†´ß{Æ9dk/dc°‹B5ÌNBÆb© -Ý…¦SîëçÌl‚!¶’bèÃUÑátNÌEΰ$›'¤ì 6¸Ò.D‹`3/ʱm¤ šXí=À|2DÕ¡~u²@ÞÍIÎ0c)²uH¶Á“¶©Wö1ãÂQïÀÁ¡Lº}8ëœÎ¦o±É+jb‘ÖF¦ŒÀÞzéÓUºÁÆŸJÖ¡Ýj9ñ/Œ ‡Dí¬ƒR}@€ WÅ×+§dz•§Ò­9&œù_¨ ÂbÅHi¡ñòð#Bض8Ê—h‰½?Z0 Ó ËÌXOY‘9›¦g[`[85Y¡–°Ä–£>Ì-ÒZ&­JíÉ÷Êèp$Çžèû¾uùd.N<¿M®Ú’ðóúZRS¶2• ^­Î;³$àD8›$77{KŠÐ‚"Ä•á\ Bá£Û¯á°ú¨ \K: \ãÎÎÞ”My›È ©ÝõÈÕv7’mš­Ý÷Vf‚< nN{žS§N©«l9~Îp8å7Ž„¢]ÁŠØ"C‹‘ú+{ž‡õâ¡_þåÛÃýE:Ï£›ÔĹBBmÍÔOTÇŒöv.A)T;âÅsá`ßÅe°6ç?½÷GHÅ6XòQûÚžÌTC YÃÐc1À5Œ“KÊYÖÈ…öb¾ôÐ{u¡,εš³b nϘpÒç‰ÞÉÄ¿Á¥õìmØ\^]Ö ºù"ݧ hG êËâpd/tŽ{YÙ0bïm—ESoíjy!jwnN}Ø7OýÄ”¦ô*s<ÄŠ½ÁÚPJzÿ·òX6d·ÑÆ¡£ÄÅ0¤[Û®Ö1âÞ*(n/¢¸kÞ¨¸{áxÜžöôM)€‹”ðMÃ\ÜDØF¸)–×h{[ªhœ#”ÊMì²Ý¨Kf`sraX\rÃ;[³ŠšYTö@\[ù]ζŒtOV^aÊ—ñntct J&ý/F#4™ÁìÅ)åÒ]Ì9Úó& öçn—yT:}Võ <[QÞUù½Ø¢%tu–|Pé˜û²-üœþ3³3ߨ“L:Ô—å¯áE‚“VÜo}MƒNpÄqØŒ2`V×á[u¬fŒ4³éµîqOoxÌÇ6£@ ÉÞ{gs̵‰é–™q«#"}½8·4Rt6÷Œýt†¨Zäê‚ɼ·»eß1âœÁ"»n­ß_“CÝg¿NVûN•;©,dý¯´%§î‚n¢†V;­>ŠÚ „J¬Oáúhzm¤l G/ZÕ+ím—Pe¤J#Ú:`SJo´ÿSÑ(©–ÉÀ!ac!\«ÜË‘\r2ô°£âéõÏÈ=ŒZqƒñ‘£iØÉ@‡Z¨4¨Ý¦!¢ñŸZ¾ÓØ:&ƒ;OW†}_bC{]YÜ®˜$âQТ–ãÂó2Ó”ï–×ø\cÐÚ>â—wÄ'\€Æûd j"¹vSõ±[­—"'êWÆA¡ Ì}éÞý–Z]¬Â»éÝH'Ðê;‚Þ¢„R.þ%.×N ó™ˆU44Ìå&iõáÜ[üî)ÿ³àË߃²ÀJ–ýN>'Te¡ ukŸº‘§ô š÷ŸoÙE4ó]/³À}_ðñ•<îKíí¾æíÏŸÜMÄä ó/ˆù5Cë·kLÀµ~,ga!GtM*ó²8ÒTö¶Xud ¸“‡Í×q+×+"‹©ª¨¼ÝÈ—\²ü+73\&ø~Mêã[B·+¹ƒVCM{÷[9»ï}2Øzó±¨R9¼µ64þ3’Íø!Ç?pEJcÜ¿ë&·Ì‹?;Ú W÷ÉÃ3jï„é+TKŒc‚pÉÖBGJá:*DwÏ'JDr?®•2höü›ŽEÉœ .eK£†0ëTüú¶”naݬ¦Âx«'>ÜØ²{Å";;ùòBí·¢MþNnÜù§§ðl÷7WûÚXºC£hZǵã’ç72Iž9‹—sÙ‹••ΟÇõÁŽh@zîß4/êi ö¬p> Äþ7ÅT¼Ë ›$uL©0o„1åíüAÅØ’‹˜ÑÊ^·%tï†T#1eŒ»Ó*Î2Èú ,ТšÈ¶Ïò”À"v«ïŽI-Úà×?‚ÍxDËÖË-Ý¢Ð=ÿ€7öÄlk˜OÅ®C®#ñÊ\°žwM ¥=S€c:lL8;xŠŒZÛ•à• ‚GÀ¦åßóõ6G½嬎«ÆŒ*eÔW­päŽç &X÷Õ8+Å,LšwÇm~yÌXe\©o{’°l 8+}+@JÀ‰½T]özEì4¦k?µ•9Ëés+¼±fmíZ‹çqbè­?oñÓEý­ƒGVš­dñ å®"3È]£¿ñ±ü’ 3 –ÇvòbÐÈ)ίÄþ‘ù¤gWrû×+ëáYC™r©ã§W^RB¥{$s©ñËÊòjøsNO}ð’ËžP1Å¥eñgZ´Èk“™^1‰4x %bªúø‰q{—"Ot[4ö;4 4µáî¹Ü©P¯`±mªŸðÀ_öõ)C‘{jð='O†¡À?Fe¸±Â–9EØ_¹BÈ”­Š³UËð3QCè¢åºµ˜Ø•¡UcØpã³MT™'ºŸ9XDE¨ï— s9¦p±rŸÖÆ^‡±¶&µ±9HÓ,{»Öòdw Â:ÊK¾…™§h®ÎÊË cÅg­8!•Šü%gø~ª¤”ƒ ýi” ôÜ׆LÅeoûÏVQ¢ê{ Îà˜~)԰¨;ãÊ2MÞ¼ukáå0ÓTÆa»˜¶mÕâÙ7$ -Š¥@¶ƒ2jÛŽ$¨×§/Ì L׎ Dˆ,­X§Xq¬[†jà2Pó)'祥ް@/®’…Ös“GÄ:iÔiç_·6jž“½þÛ¸ÕÙÍoÒ“§óæ*ÁÝ÷¿¨àÇ4 ¿'N #ÈÁÀ¿?w„µç³Ëê‹ý7Š}mϲM`–V€üãñ™•„h/¸t°Ä»b•JÉ©fÊ«•ÔäÔ°¾Mb¯øìS©&M}–Î,®ôê5ÃîUáÑbÙ€–‚v_îy¿vëü4.ñÿÖ(€,¸<<ïô<_‘ Vd4Ó#ï¾^¼UX1Ša‘ëû[2u$±"¢<Þdìt¥Bu1Ûˆ´†UTÚ×ó)ïH¶;$‘Ÿ§çhë¬ÉQy¬pÏš·£Vš}I‚Ôÿ­É[㱤Oöy ìkI¹ØÓ„Ã;5C³ΗãWw‚N™³„\Ô~™¤Þqß BƒK†úû𠱋¨D³^Ê~u±¨nh‘•íëNWp’5<æÍu¯Üà$ÛuB`DɽZpi¨™W¼¶´è?š výRPóýœÈrPÒ ŠGWQ/F¬ª)ÒæÓ·¬5Ã}ɯJß×™®÷cbÄho3áÉÈQøWK™OP¢€j Š[›úQK6 #fMÒúAšhëç« ~UÓqÄ»xçt^ [v‚òCÑïXMè­’Pr€;TõœiÖÈÒiýÚðq`9XÏ"ãyr Œ°lNDQD*=œ»Qúøü0þäüð>w:tw¤=ÛRÃØuv¾Í]˲МºÉ32í'ØfVùšg$}×ç{ìFÌ->¼€³WØ{yV$cgJÜ€&‘õ"*hOúÊšn¸ô v5ŸûkÓõŠÿö×^ìp3LIáà[ôxP¶M·Žq!Üv‹åxxéb-;ÚLRr=ŽDÄÛúgšg^§`ÂÈèü¡¾s«X ŸžÙÒÄTbJ‚®ëÀ“ª>I gcŸ”}YcX3ØÝM7ÆcaØì¥Êa> Ù(Ai,c÷(ÔZãp=Âo:¸dÝøþ„Ìh—uØÈ¸›¯œÊжØùºQ19L .B³`#HC–ýÜLí0¹©iÛŒ\.GË8½¸, ¿>4_z阷}œ¥a1‹Êb‘Ú§MZ:¾14æUêD)Ñ ²ÂH|Ùù×wqý`׉5 á0ßLÇý94«½2Í_ 2—p…ÙቡÒ"ÜœŠþö¢ƒlÆ ž§h\Z@€¨ësˆ‹¡˜™ˆáïø§ÇŒT»Õëød‘¿ÿ¨ÀÅúexÎ,>æü´}kWEÇ3Y<&v ™ëO"ñ68ô‘çDHÀ¢šð— °j'aKé‚KÞ#ðƒ9æ€T’uŽP’b¯Øè±k'mê$±¯×”åQ@oeë€Ç··¯-OÌÓ‹ÈclQ®«E;LÕíeá¸[Ö}Á~ˆÆCaèhè8EulÜ8—£K…• »¹"!…zѳøB"–}6NêhÀ¼Îõ®²tUSDNb&t ñþ‹ç]Lщ4B[}‰Ñu‡HÐÜÉs:Äjå^þ)²‰Î7UQu 6P’£Ÿ›Ù[?5úcm”;wFLPÏO¢)„ÄzÒŠ]¼JeÙ @o8VÔ,Ä•Èëb¶±?6²úõÍ}6›xnµê–°ö˧ꢶ3xxñΰø Áøâü‹Éñ]^¦äYjÌXÊuVç82QGVS¥³›é¢À6Nª*OÆ›£É4/ÔN¢‹ÑU¢äé0ËCkQ"‘Ѥïòª]SÓÆ›¹òùþ>:Ô%¬‡2PóÍ•b¤üw½àè¡ÝÎ.\§àïªNÍôª@q‚ט4¡l¬<‘Ñ“YúÌúæ|ž.ÎhNï37ðšrÓ¥o«1t¡ü˜…e5¶õhPá6Ò±Íqylœ0¦¦­æÎû±T¢vq¿&_hdŸm/^£žlIWÐýTû™%ä'yåU•±;FcËð(µ ”)øÇͤüþL^¡dà.ẫ¼‰×üêà ‚G0¹p˼bžlŠ´—œº}p«þ5.ˆ‘€¯ä$îH+0°ÎkÎÕΉ“Æ8§˜BÄêM+ ºg¼‡» zÒ=ŠEßaNcíê,tVؽ/zq{ÐDøª­ •~€ò•±±• rs$zå`.&ëÂϼɆ³µN†¶o)Žì -³ÜB–|8ŠƒÃ-ñcsqœ–JHfu#Ñ5(`_+@â$¦·¨¢1¬$CXh l¿@før¡%`*ôâæb!ËÊ\È=Ÿ—8PÅaXÌq;ÀHòÑ>n/…ø–ÎÚ-¸}øY«°Ý–TÌÄÌöÀ•©ïuËÏî—ä ˆúÍÂçSÎ=¸x0 ?3=ÇD„™¡œ_T/PY÷„¯ò0ˆ^,ñb~Ý7úf8®Ô mGaêgªÍá8‹%øCNÈ1 ‚ œâÿÉ3økLß§}$$„¢b}ÌZšà™ø˜@¡T¿¢1 4“£g†r²Ÿ\×à‡@e$×ÁµX†ž ¸×žš˜ž—ã›­6Õn å(xUt‰ŠQÌN1­JVò± fcN[ŠÞ ŒÒ–‹#Ä´xJgD)qí¯<%ëÏ0è?Äff~à¨WrÙ]AÄkZ ©Åâ1Î#úpAj±J&À0!݈^”â‹6.ôÐÿ·ƒ¾w7 áœæ{ÉäDäŠì«^maU6ÍÈPp¤Xò ’‡!켕ÔgNî LyX¾¤¤V}gN}¹¡¬¾^,W÷©÷Œ¢r)¯¡G|1¹@v΀`Ͻб²Ðú3÷WiNK‡~.3"nÕr¥Cü–TGtûQ—GÓÔ-dè¶8å=÷tÏscÝBiLÏE¬¯´® 7²îZÈQWô1}Às"Ñh~–É;VPÀ÷QÅÚªŸW]%gS:árø“Zôhë,pRü´‹ç«%Âðˆï¦|w_K ´MÇ̳ÛÓ§IAJhÌ2¿ÀªÒ±€uüeñ× SePÜÜÇ5 œ.•üà a0P¹¾OA"œëQ1¸×@þvp9?À²^o\ß1³û¥wt%R‘ó»'ÿP^3óFŽeZúáÌV¿|{‘°åˆ-G.vï75ÀL¥ž_„F -Ï9¥gylûƨÉÚÅð\¶žÅkÎ4¤þHœu²±C¯öÀpxRrôý¤ÅÀá;òvàwÇ~Jzë­Ú~¯Ê[´7n8°º¾oï¯(Çò·ÐãúQêmä¿z5Ö®j®¥b$A&!m¿ð¦ãô%!Øa2tä4®á¦Y™D=§H:akikg‘ur;%&á„Iý‚)Át+$Áfñ E8ʦ°¥9H¼ß¶q¡q´»+óÜŽµL£äÞiÈudâš»ÕØX„èÛ ¦®yaÒgÚnZžW)sµúZZÆÊ®uǺóÐ|SdN%þüÔqâx€Ñç‰aÕ‚AØj†?MsQYiýćËQÁÛ4;ùÖC4ê¾íâ”QkØ¥,D¦¬Sh ]j¿Êü’3ħ`7`œÅ.<†ƒèvÉðÇå9†µ •›ì†åü&²€%ÓÂMÁ°¾Ý”`áµë…þéøß‚y¥ÃûôEœ^Éa·¬õΛהÃ&„•qͤW§Ë|U=Ö¡M¶Uœ*œ€ŒÍe°…G·f©óY-µÃ`܈`NÁÓ‰!«0K"HS5 ”ǾQ^ê…X4¨tïÃî„W²LFÉ–_SÉ GÄAÃ_+¢lgcTÄÌ¼Ðøâ°Þ¶’ú ¥ñ÷Œ¿mÄ ñ*ð¿+]»sÌKGND¹Ã} äñ"ZlkΟ^- ‹ªqYB³È\6U9X¦lA~ô†YKE+ •À¢ˆè)ůëoçÜ•@¿@nŸƒ vfÖðr /ÏÁ‰dÁ² à•ÆÕÓn@ŧaïiÇ™ü0Pd¸î©í~W†+)iŒ€ã†:×þõ&ŸÈ ú©Xqñ@±e§¹q4ƒõ+bÐÔÑ3€àz´8kï NM©ð‚Pæ®òy;Ÿ©Iáu¨:ÈM@A§Ø3:ªãatÜg@(¡g·ý\‘ùB”ÆV"ÀÍ^#ŠÌT¢ß•I'Ô ãpÚ¤‘«‡Ý 8‰Ô*÷s¤*ƒÝ—ˆšª;±*mÔ4[;`/ÑÊÿ78&švúhÈË’d¿×§Ú|}SE¤C&d SmŠô~køW@Ê©5'O2™¦X]¨ÖáÁDúiO±çï VìÁT¦†t¡T‘’eæK$2T°_¦Óׇ©uŠ{_‚¨ ÇÍ=èìX&³—g9 ËQ^€sm ¥¤9 +û£%;ü ¦À[Ú)‰lLV‹V˜îÍg¬e|ü«€¸ªØbÝ"Üšq3oøB5½Q|- (†iÚ<ÖEŠÝTG­::ØÖ-ËZ'½+äSÆ‹‘àåû䕾aç´6Á5S®ß3­ññ$õdLñ~ZÒ,€ôL½‡ ›2à‡ƒnïD—¶Ñ'“üÖÄË1àz{d7ǹHPyÀr¬/ßo¸Bʘµ@Þy ê{Ëb4ê† ÅÎ=Ý[ž!¥†³Ûù<•Ô,¨sž7q¡½Ø™%º¤x'@dE͉“DWâóvÄÜåøìÖZ`÷ ®¿JÑðE6xã?œ]w£ã™ wg$+¼%ä‹gEç£w¶Y”¦¶{¤Òoï©#àQŽauì?åûâ—B{pÂî×)3í’;“È£—N|»UC¤U‘=ŽxCÃ-µ¬GþH휭»c/Õ’f™$D ãHÃ`qòÆõŽ)Îß©%eú‹˜t8ïß±féÎ󳪈lZß'áãÚ~ÛÄBÔÙ#àY¬¨di²dà»6m¤RxþÔL%¼æ˜åYg›, –ë î·ÎÙÛÿ\1hŒ?¿‡Ô]gˆØò^P”X¶ ßÑ‚÷nö 5–øÓIö¶,M²3M¹pÛÎ (7*k;c’Y=L›»ißoeƒ:å‡oÛá¤ÏšÁQEÿ‹ާ–­€E±õµTVÒøz“Á5SB‡šÒˆýÓÚâ5@$@ÂW¸!,þ>Œƒì¨e"òY2ùØBN¬zÚ=¾v‚ü6u³Ü‡è¶ìNŠ»°Hˆ|—¨›!7 óUTòî~CÉ>´ß|m8Ð>(gÒ‰ufrÕÌ+ÁmbU4֜ت¶òVœ ÌI+Øú1ì>“”˜H*‡lü‘Ël d½¢†>ŸS@DõÑ =õ¤çã‘3µ]Ò ,$×§Wh|¼…úˆ‘T"&’¹ë¯rÁb2h¤=¾ú‡Ú»Ã w†Ã1Üy¤©tÝâæö·LÔ\Q›'RŠ÷5j¡s_3ìÿ¸:é6 Æ #K’$Õþ)³–ã ‰ØØêy“Ø&Ez‚OTØ-n¬H¸~BÞ™‰E“|MsÍŽ8Iõ ¹U  ÌnŽÝ:ÿ 0YE!ã=߉¬wÈ* ‹ Å.ùz TY`ÃP«8À n.£ˆüßî8h @Jcö‚îü˜<÷i è§òsÏõÁÖ*Ëߞ˶ñBù}?€h ¨`C—FÜþ³©`Õ{#Xa9îg47+P{¨ÁMÏ=lÙÀJq¤›„Ü;_beú/º•¼pôoLm‘XaÁ{Tˆge a,ј7>5¨îŒ¥?L{P dò»Þÿ¤ñ«beªÙR=ŠŒu˜êéJÚõDê¯^¬²çÕ·ç"Nrr.g‚¡Ï,@? ¼·•Žqþv…6Û4‘pS÷ਟ1OxèÒª(¬} Z(^väP\¾`o!Pdß9.Hõ[Q›`ÇÏߌU‰;ë¤záI~ÁT`IÛaÙêãŠEÄÁP“+E¾>N ¸³ÿsâìF•E ÿ%¹4øœº»éCôÒ<Á# Æ  jg×ø"»D}ä®ÜÙßì/M–vŒ)¨  à qfú(œm}]Uפs™Vó2jà—Üi¤ i.MX´4ãKpô“§arC¨cAl%Ül•TV.”ÑŒŸ#räóXBÆ,€3ûa_½k*þëO…côŒ´šN¶Y#2¸Û'pPÀ÷MØö[‘Lµæ±Á£!Wh©eöjòCt¾øä°-Áe%Ø2Û aºÒi²a]a²É)s<üñHv²9Ñçê¡ä^ÔóÆX#<_£æº1X”Ñ ‘ß­ÌXH³ê7.HªÂFdEê2>çð]~u7§Ï¿1PÒb+®ë¼žÙ™æM†´ß³¡'ö'âM ÿý솪˜ø3VµšŒ‡BaÂ-5ʃ»¨XäùºbQBÁìç`6 $c3þÿïSñ’K ’$Âê­q%ƪi:' |~«‘óáÖ¦’9ÁÓ[Úü[>‚®n™ëÍuÑõ–ëÚS¤Íß¿»m^‡ñ·_Y³ªz¢‚T%’™Ì3Û[¡›E¾s[ë‘qÒÌ”Á…÷)2H³"̇³Îí!OÞ@\à=â]ÃÔ¤ÄçÃ×í«}vžægÏj‚QÒïõ)Kµ›Cìüb BLááóg¢\G šù-ÒþˆÏIp”'wyÊKˆLýTÒÚ MµãpžåUm÷} 6€tÂëïÂ|—w]n÷tè&ú!+H“ À5ÂÚ^>­â4^ Ç3¦ˆ‚6Œ¬ùàFM¥'–Ne“%+÷_¬*Nž Ùèã?kç ¯ `¹Ž|[°îÇ9ȧ%.ÓA±ÎùèVUF&Ƭè»é(^ÑvZh¾:,…Þ]Ï•ònÔ~-Eì0¬¯2ÃÄ”æÝ–®!–¾ÖoË–õý§I¬ItëEž±æz†YÉ1ŸÜ/·| –Ø yIãó4˜Áüd ï.IÝ-È€JêpÏrzBX|[G„܇ϛešs úe阔…MAÍöÓ'ú“òø9ÔŸ[±W°mW¨‡¡Ÿ£ãSi6»W³t¿_ “t>“•ªî£Ì áÚÚ3—$„Ëië¥_‡ð²õ–eµØ¸ÚT¤{NV:'tZ®¡‡2h-(º·½ÌÞÉ-x@Ö,h·$°³y>+ÀÚû"^ -Ëñ8×Q“WëIïnm|]îölV^‚± 'ÄžÁÖ”—âÑÔͨ~¶â€ídÜp:$öN½šrT Ê»6˜„®bðˆó´i8]ƒþ¦°ùÞc9Ü\)A`š¶ov,çüòCK$Ã|×ðå½´ Çbáß²Æ6·GŽ}ÔÓçH‹ÆM*WÀöV’á»”a{kÎÄàfÝ'¯ŠHç9 öMÍñ Ž`ûT4íðs”‡ñ‰Á©Ä­’ÿk°Än¸gX»¬Fc¬9G²`£œûŒé% Šâ,HŽß7“RXÌᎳ’f<÷©PšòOñ/=&%#ŠŸÍ»‚1ìºuË© Cµý¦ »âS«Dh¹öš[†ê#ëý¹;H7´ÔyŸ¢Hº5a(ËMŽÖrP;ÀÀž1«‚%NÎ,%n8KäDã›N®_·û”º3©'sHøó‚/2…vF'هʽ”z¥'è>žj}·PÕ»ëoëÐÖj ¡»¶é¬€©>*yGç…æ°ìÔ.:翹¼)ž•æVªv¾>õ-°„Ó ,™~2>jÞQöxAÿõHò‘sö.–pOɦçoPa}´ž’X;âdýù{<:x ‡‰IýÔû6ÓJ/]6®¤‡¨B ¤µYuI b#¾‡ûÒÍ÷Ùb7¬ªWLòµqƒ·¾Aʼnºô(S3ê”`É3_¢sÅçFåE'c¹÷851”î–½²}†GeD|t^Ԟ½’ÜÿøCUh½gïŽdVÖ³6¬uå(±n x¥îú©ì× ´î îµ]Ï" ¯}޹ýZéA’úI.óÕ/<¸SþÒä¹4³”†É6­;C9 (rŠ1ô¥NË27f´wèlàeÅrW e~ôF¨yÊ•Š6oAìÖJgÿpùnÊ.Ã?½ðŒM«‘”éqMÎ éõ¾ž9DÊ2X”†¹:@†„K´ÁÒÕ™’.öjѪ3¶ÒÌüÙz„n³R«¯hŸ¶íì¾µ&iÄôÏœª"¤ª±lé7Ž£Ú•“¼·­9ù” QÊ@=F1ÈèìWu÷Jd)õ9¼¤…{ºç Kf9úˆù9Ã{æzTŒ¨åÍB¢0u@_4a±0:‚é*ãT?§²NPºÄ°ü.ö€á][™£¹iö£‡™`žÐ|ÙcÖâªÙ±ºh›z¦Œ+#«:íoš¿ p}+9€ýq9vwI_BYüF2RÍð½U¹ô4™’"ÝÓ’]–\|ÙvJÔž<^Ãû”âÅ>k#Ðø.ß©°LÛe/ät{sÞ¡åI÷”6þpÖu¬ %õ sÖ±rÌÛ€2…g]¯~ÛÇú z ½ &ðÍ'ýèD` ™TòyZž˜z #vsVi`]õ•m´]eZž€Œª"8šmVçD…ê °¿Cº\@dȰkjͱäb†›«vÜ-yɾVØ1=þ.J:`â(W¶åƒeµ÷å”;µnÄÑY{÷ý5aÍ`ÿî¿ÝK˜çÒAåâZ™c†È—øUØ:¨ž¼ic±¹øË¦@.3tݺO6¾¢{Ž—…Sdk x†Õª™#4Xw|Åÿ2oõPØï˜¯‘+ò-kf•6Uþà<& åo.#=޳vçîàfzu‡o_hBËeÅçà_óxì¢ è•Éíy¹µXH7‚9Ce¿üÈÂcå™x;ß­&%˜Ëm;^)_4^BDȼ¯k#m·Ò"»Ùüðà`×ÊZ]3O$±ž ²#-„EŸÏaŸw¡4ŽÌZô'G½éÀ¥ƒõ´Y¨äÒFÿŽäçÕµ¼7‰ ÷TQ‚³*Šö –eJè.?}€ÆI5u³Gˆ5SÌÙNœÞêÍgGxäæ%fŽÒd¹45aL‹êhIón6¥5í]µ.Å…œJNH‚”®LQÅºŽˆA¦¢ÄiAd“ë”Ú»^iç—ÌÛ$pózIußb±æ#홲´'ÿDX¹9®S¡y T¡2JIÇp¨²/%OÐZ– Ö‰^$ãÑ­ Ì9ólðã]”0³˜þÃüæÓîI ßVŠÃàˆÞ²ÕoþýÉY`ÒÈü€.Ñan‘é÷„ûBrbÎ,š f`Sâ‡cMCÈJ5ý‚Ô¾â˜y|ûd.Y OÕ@6Sþ±Ý7&‡f[ q|G´à ´t]2íù’XCMYuDÛA¢ÏJÉMhiôÁ¯Nx¨¿ 9ò£—CãmQÖûô¤å)¹$ÀWeî·,™EMëþì¤w„§ÌXuMH#îøÉeDlZîĶc²?˜0K“ßÔçTu³Kaòo¿<àIš9íÆÍåXEψ¸æ·÷³[Og—#½¨†Á|éÜè/6h9.e­+hÊn£ÉDÒ,[­Éa§ ;«È~Ið„‡•DÛ&Dè&|Ï‹7­ Œ,QQ‚sYU–BRÌ„°;B%­+Eâ”ãÅÓNf)~ &qÎ •šKîœ.¹-šá.îì¢È?¾´­òûó¤5K­2¸øWð:?!KŸd²ÚÑÄ_÷ß?»š@|‰Ûû:B‘¹i†\ý–KP´÷uáÀ•¤àŽ'GÒ ´aöžÙ/‰Äi¶Z¬#æÏõ~Çwб1ŸÜ1I‹ÂŽe°§ ·U(,O&›RЉé3ŽÐ/°e>¢_cz#Rk¹˜)f¨K¼š†<÷/½Šîp´‹Å÷§¯·Ø»Õµí'Dè“Lõ×üšPY=¸PäKH´–ýßñb02Ä9×NY»Ê`ÕY¿Ïá’úÐB²¢3å²RÈ™tæ «§á?ù ¨ôÏÁg+y«X _zÉÜÈ÷刲I|ŽÉš: ÝŒ•šÄ›BëNæUB^õz·÷ Ë7Å^ZP8ÍôêoÃ>³!Õ›ÁèyƳ$*¬P3¢Œ%ãÒ&z!3¡!7ióÖ¾ö¸^\WÕr›Ùbë@´£œÈ¾*)w'ãã\y†Æ¿™' J§5 |XT_1±ãΣ"r¼_ñ§[õØÓÓùÉ'¥n< Åë×ÛfE\Ž—8g,»z5ðøë§Ž\Æ|ùÁð]ÓŒÏ û;Ù£!øÊ„ÁB­ÈUŠÜ£N¤û/Ì΃°õºw¶ýEºT×|ùGèŠοK›aÖ–m¶ôÁºt®ÉPÞHóaéNt¾žýÿäT<ÞÄšªx‰J*PùeAÆòcàBÍÒÉÞÍóA ~¡£E™HtF\×juN¢²¤ ˜ÙNcÕ®¼Éæ'(οjžóúƒóŸ%Sê7ý?JÇôñDmdÂÙÊÞõëû"jOú+ó#K7²´À“¤]määíYy¢ÒdG¤€Üß5Í QÔ×/Ç !DºZÔ“8ks r°þUG¹ x=’÷õ@DŽËüÉú,çÇ¡È.›/GÜg8Õ ¯Û-ä7Ñ@0;øÿü¸N檾¨&åw¿Nsë¾NÜï7œw©ã¹*I†ÛLÌØPe 9‰MAøÒ7Ao¤PØùš–ØØx_ö@ H2àþF5¼p˜Ï$ëÒ I6Rž—ÄÓÀ— ¬¥“;»'ã<^QÚ”@'[I²<ù´(ðÖÓ3ùbø8@LNpïkçY«™ÃEŽÀ}Ÿ‡}̓9©[äåì[ ®îöeÙú¥°wusê©¿4认ÝÌNáØü”Z'è'œ$Õb²žÑÀ$ý5l ½"ù$Zà+±ÛíEòm…‰—%ÑYîY^ÀûÂ•Û ¦ü¢Géna®Ü ”WIÇ‹dœì ®Õþ3íÑ^Ðm&¡ÎmýðVA Z×î¯ÌU*8tÐv#âùsàuÿI tû_¼.¯ÆÝûÓÍ”8&_aòF‚8€à`¼ÊUXÎâ©´nm­°ªbPí–¯1­vU‰oLx¿é„j£…$7UÒñÑ„ìcÅ–Ï™`לëß0Ø/Û\±9L#ÚúûäîvÅä °¤¶NÁþ;Õµ(g.i«Ödœ{ µ³»´äÞK Îb Ìg¯ÀgkXçVp8¨ŸðUti5r¥quWÌ·PQÝD¶ ªÁö5ýÇÄ„7ü6µþ³5"ļ¼±Šœ¼0F¥£a¦LãX^]¤I˜p—R&ÈT·ú6)¤Ì­ûÞ{œ#&inÁ[Þþ9ÛÊ.w&ZºnËõÑý=?Ä%.7¿.L§6›~(á³i(´Ê_`ÜQ®Ô |)Pƒê¡+’ùFf;"+Ý»ûÖJ?âµôaý¼ûu´Ü4LÙ±NMŽÁ»–ò,e‡ñ:…Þ<öcÕÕfœ|º0=?=yëЋ̹“Ì™\óõÃ$ZÞŒ¹Ù8 Íì­x*Þd"póŽéF—HÛü²ê0YzU‹Ø‡ˆÔàÊgòÛ®¡à)ê¥ä‡Oªƒ¡ŒÊ:¶ô—Fþ`±´%[^z‡Yu> ªÚ¢¸ÿ^ÖÐîü7êH_“£ÎÞxý¯„‚gN¼ß (Þü³³Œ!w‚jÜVÝ`/ŠZÕŠ¢† à@¤@â/7®v¿è@ÐuVY÷oX ÔY1ý¦mäû§-ã·(8‘%\€òÐêG«^ÓWvòUäÊ¿m{È¢ø¾CÇ0Ý#¢"b«º÷ÙiW;6—Æñ§?âƒ5[ÇoD,T—ê_ Sì1â}y%q¡¨¾õO('Uñ$€‘(Eh5^Ksb[úÍa>ý&R€xÉP=Ý!s³Á7õÏw_’O„ÅppÈÌDH{oæø ÊŒhúU\‘¦&°ëv »2Œ/9§i=8®0›iªÉ` ‰îP·%̰Œ7aOl › Qº€Ø¾@!ü ç˜)!š²&cÊÂ7º›QÅuù°HŒë uálÇ ¤\Ó@êÎÝL]ÖZ’ Ø»(ªP[8žþ$ÃÑí˜wÜt“ȃ áû ‹*mØ2 û·|Â÷­hš–FÇ)/lû '±òmÔÒf´òÌ+ê p']zeO^ÛTNP%¤X³_–Û¦F›l©¼’‰Ã¦äLîŽM2 0òŒGÿ<üOÚ™Ã,b9gºø5‰½]¿×â“„L·ñœPoàUªAõáAìà£2î>’1ôg¾ÎÑŽÐ¥¥´u¨æ &SN'ÜçÏE ‰£¼©HÙ:פ%PIBwéó Þ†¿¢‹¡÷ù* Ø)ä&ñºž¨^Eˆ6¯ƒ³*Ó#H~~çM…œ›ÿ¨À¤.naçnË@Ùþ¼s2rO¿´Ñ'­Ñöž¨õX¡/jOÓK‘ÉWv®$Bn…Žƒ³œwf°)2ÑØ€`ŠÑuø]ÚT´Ð#稵–lJ[ÇôÆߟpázf2 |¿¦i€@÷<Îhi#ËÆÇÕÕ³¼¡b£bÊJIœ*íê׿üq©-¼2ÆïØÃKJ€‰›ši]aÃÁÒ1˜¨úY(—™äØÿøâäâº(½Ô‡Âq+R”)‘øes+G“¸jnmMá,×IRh0áíD«Zôm¦žL[#à@ãšæç¢§ºñ øç=ù¸äˆûcZä3:j»±"É§äžæ3KÍ”­Ç”¦Õ‚Üv«_×îá„~v&Âzâå}Ùíªòü:óËá\⦳&d¯³å22 ŠÌ B và “o–ßD@înkRÙrN¶¾þÔ¬šªšH ;ha~§-îº$ê ; ;‘K®…ÓBefªôˆ£msJÀ^Î^P?žh“œ´&­ÒüÉS./©£K‰æoZrŽLÿ´²ÉÄÊÕCæë‹î®·< ùåqØ*¯<­  ª¡î„F³`ѨjEå ¶Ž‚Y³åó èEœÝ)óDù+`Ouï éÝ ´À„t!À4Ÿ"Óæ/F°=ƒç¸ÙÞ(ï9ð©b 2ô,®'lô;“S…{üËÔèݶ)Iã¼®¸ü-¾dçw[œHcœ šp³ªyv¶+n1$C¥ô»•ÜêDÅcm[R¡géÔ¡8ùB9Ôa¦¹‰Èq`¤ÙàI zŸ¨>¨VÕ¸05E$onZÑÛeñÞí¾þãªkؾ:š*°°9ù·Í£j¨ò)h/Àš7j(¢ÇÅÿN‡B¹î‡…ªK[ ïÕ†2fqñBhô€—T¸DŒ7xh2+Ðóõ~Tª æ¡—-Ôîp€;2IÅ")V»-3·ø¢°Ÿ–f \gwàM†º.#ÑÐÝ«qãoTðCžG¶Ï×n çÔ>[FiNÖxˆ:8íj¼Eæ;[€ïæ¹+$ðlœÙÖø)*ðÐê‚è>ÜÙåZ¥À~¨ß]W$S$Þu9ÒyôËÏû^.·îûÊ1U(²å…ÒW$~™âj>d£þ˜H^@ßr÷UÀG Q¬“õò”ó’½boÐb=E!ÁRÚÄT]{rPÍ„ '¥¸ú@¶ä-xÖvrã æmö¹–íâG1Zäz[Æ&2ÞBÊÂz«e2n~ÐÃZ¿[ôo’šªÓ¤1žfŒÂrŒ…yG¤ƒìźÇCc—»•rn©4UÀRš%F¯‚‰‡Àaó¯Œ{®³‰cÓO¹1SvèÛNŸ<]”}ð=º i­ŠPvU½ãpkÆŠï׉쉩¨äûýp( u>.óÝàâŒ;·2—ýÃÍ1lÆ«{Ðzõê BÅ…hÿe® ¡èŒáŸ7–¸Qœ{¢D„!´®UKÜ) O±–dþé 1 ,†hô„-,8d?Ñ•„ONŽ5ãàÚØ’ZŒ:…Œ‰wúOÖmAôO#/š‹^½réqo$Ï’.°YŒ–=ZI$÷ı¡$€§"[d}h+óGñ2ˆnüADGNç Ë2>l?,¦”2HM&´J^$¥|Ûºlx£ü¨Œ“I݃y†üÏðÉ=]n&z F@Ñòá$¶o¼»Ã)×q†‹†±o£–®ÆØlŽ{wXa’þ"Ó=«’ÅlŠ-ùâÏ€•Ån¯óAÑŒŽÎá?iÕ?:POóç¾ô¾A>l…‘îÇ’&·øK‰À’/Žh©ÅƒŸÀ+Ü:w›Ÿ*Ÿ*'Ì:¨øóPÆÉvú/;\$ªúÄl`¦,/É``õø=ØËöÔ®,y”«]¤K|ç{ß4)YM§Þ`š”rYä€õÒâ[+XmÚB53ߟœ¯hïí¨„œìÁ@q¬—'DQ¶ ¨]ø”Œ\000 pU}~H×)¡e*k,×ùÝü|Õ8`mžÈ±\xîwc?ü°?÷MÙÕ{iÞþëlßo'Bkw¸=¬ìc &¾˜½¼Kº—™KÜßf ÿK‡À…B#*+Ù?/Ç j8TÈž¹;è"ØÜDRæ¬ø@µÇ+‹ši>’ÅØâ“‰¾téaý/›õ@jÓøe2Iql+ÓçàñWGìöþP°¸–VqvÅÌ„@¨'×#§«†¤µ†šj´ùa¦³Gwƒ%€y¡A¯b¬Êx«ÜVÊîbõ¯ªk¼AðjðÕø<+ §Ä•÷û+Ye}àÞðªí"·JxO´æn =ŠíCL Ѭ ¢Í3ìÚöž¬M+Ðqé§Úèîf%ÍŽð:§§O,q Ï š—‚^«X•í,Ÿ\oŒî×(H«X¯øU[~Ð’U£™8ä4½}ˆšá—»½Š÷ÿa¶^ÊHlàaÍÆeÂÊrȹiV™~Ю¡h°’ mõgg oÉŸ€^¸W›ìhjªŠh§$”ŠÍúrÓ ªîÑ8µ ¯ç7ËM ˜tyËM‚dfü‡‡)rfòƒ9hÅ@~”REֵτSÙ w]¹3\™ò¡>~-JÁC3Q‡cIíF,@³« ü⺱íßUÓ“ò6LñÝ«óëÉý!×€8gG[–ô•I´™Ò­;Ðäµ:“+me4gš^–SXß!'øÿ¦XÚ8¾–PæšÉAžÑUÒëá }_‰1;¹UÏ!Ú6l€sVGg0¨Bt'W">-:å:gh1o³±1ך"QŽLÏ–˜èûIsvóË/úîÄe‡Å­•±Ìú¾››‡'¤Ôltöà‹Cë ( \»Â…[ã,¨+ÈÂdll—©]GŸ®0è; ýd’„f K渜3ðÑ£¬ÑiÑ ¶éd ·¹>µõ€PQž*…ây½LOY'?HX0 ‡FóÑ+ÚçÍ)5ÇØö­¬ V-œŒðz̃•†Û¿VkYuñ‚À-ï“”ôŸ\½ëƒotï%‹7'€-·cêjWê´dçøZînŸ;ù¦,ôÝM_nòƒ B&;Hh¡õÄd¾€†A;Ê@*(0P }4Á× ¡n‰^OY)áÓGø¯Ñý¼RpKuÔÄæ¸*xVßgŽ¢TÁ×Å‘Be´Ì÷ówÅÇþ³e%ü^G~ÆIŽF<ÙïDÐ]cœãMÏÞYÁxf‡±\¹•r†O¥á“;~ïÖJ_ˆÆÇª­®»^qæü¢C 8 V¡Ðr2ü ØÆ{\±E<‡V‚7Hm:تíœ{æìÆé0Ã6¯'‘]«$P¢w/"Ê[Ôº_Ë®ÒåT uþ'/£+ d­MŠÉ¾lJ¼à¬©CÞ˜‘nð‹_¨¥N,&à GÔþ…ж»H]o>XnUqß@Ñ–bjµBØèØy¬M›š‹¡MÃeœðU»%ïÏ'Òǵ«!Ô? z¤E:ŒJB›³aŠáGQÔ¼™rÎøÆÅ"jßÕ 93†^[7ML÷bœùz3™I°îáÖ ¾‰U³\™FáQz*A…» ÓDW[…/(¤èD y÷kLj°ÐãÎù à[à* {¡ºtúÑÚRí_L)Ñ8¶'‡ûµ.ï¨y–¬"ŠQÎ ú|…Ò ÚÑd ­¿11äÓÉ?©€ ÿû. 5~ ª‚˜Z¯œ!Y$C[Ÿ£úJ¡ö>Ö Öq*ã{cýßhê™$„ç+™yñFæéÉ|3–¤lÿ#n†hzKN¿95ªù£½…UÅÍó£SW€ð»Íì壊¡(Û? ¸w];°ÅX¯+r^ÉÕ™º[¥Ô0·.òsàw½F€'Iw[çbÕ»:³6ƒ)Œ§-@]xYž- Q¬®/—;ªî*)ž›ì¢q4ðËqS@ ª¼Î•œy>v1ŽÔ@>œoú×nò‰B6 <Ž3±,K<92«m&«ÑºàÑõÌaÚ9È0`NX9ñ€C.‚,ÙÆÛ­º'Lù(\þžoÍÝæèØhÖÔ½ÛW¿rÅ‹îŠûƒßyûŽU¤ Öô0]èDy8æâé#Ñœ‘cbAJy”°ØíÀ¸@ hÊË=§^H=š @¡¡Î ÄಃUoë‹[‹øÙ\¨)ó„øÜAubùD¶ëôì ÔzLq*åÆ¿Ù]ý‚"=’j‰Ÿ:.ðTðÖ éïð¦¶k+‡ÀE ƒž›~0‘±5©¬Š4¥å±ý…€Ž`LÏñ±Å×Á¶7ÛæÓìöžÌœ[nqBpÓÃP F˜z«Ó®‚ð™ÜP|tÿÖäï]險 “Škþ¢±Ê ˜â;zÊ0½°Í¬…} 1Ìîéz°z>%^%1 ùºÈVаUÛDð%¤Ï·/•ò–'wȧbé¶ÁíJôKyBçþ)¾œ—~ØêGÇŒ]®äY"¥Ú}b}e vA⇱욆#V£`”÷½½ñV*ºÊ2"R¢bŠZ·j·ÛWQ¿„ÀjôÄ9Ÿß®I3õ_II¼B}|üÉÕ–úZüÿ2î$Üü CaÖ)flãÅS¡ŸzšÙeÃ6™"÷p†•’g=¸Ù`´¯›uì•ôÚ»¬èÿUíaÿÈæK¼‡î–¯zùDjˆLš-ìRø*\¯A·LHìYÊŒy Ao…ïÌž~0Í&‡Æ“²>Á Z$c‘= ^â³Bˆ%Xñ2…íÒ:qmN̼›7¥ Éþ¿d ¯^K¼½…ÜM/ǦÚÖW Äž£däEN[™ÙŸ[œK¨V!>ú8ª#¬H-‰h›ÁýPò'亴—Ïc»ûíÿ¥¡ƒøš¨f©ÞX.Û­VòÌÐ}jâ5M€ºÀ•à ‡3–• h?Âö@ú‡@/¸?è„ÐKT°MR\§ô/σ\f(ÒÐ…Ånôˆ£±lDÞ§š¾ÏÝò Ìf\D@#Òµþ Ž Ô@ÁÊ3³rË5~;[‘g$oƒ,A-²y2+À»F 4I Ü8•[1¼`…KM¾¼Ý›Éç¨õºNv|Äí¥×šlìñ)8ë×þ Ë£¥")iŠáµ÷lLÿãÆ›Ó»ðå¤IY•,4Ì‹›Nåø+º§Ö<ˆd öö\å´“—ƒX¢·ŒU Ã’9cH tæ7z&SÔ×ôúEåï>+:Þë/›ò8ýCú·ÒnÂÚ„›ü+5ü0’}3˜üÕŒ#‹QÐFºUO¿}{žnI D7¼¨””Ñÿ½Ûås!6[èðwT›:T:³w¾ûì†G«BÝeQìö%é¬äõôœð퉎Þ$[‘¦ÝWEv¼©ÕDþ>ëoQÌU쾈ÝÅ›®8;mRÂ˰½­NE›©ç7ŠnFQ'E£‹ºd€Ú% D¤†Ê˽4<4†¢ÞKéÖî(°À· íA·®í;h’y>tŠ$•¤ø¸ ޲ôrˆd ü˜,bcñ8}":À ÈÈ˜ê«æs~ÝŠêÑÃ2¸Ã9ȶœ¨ïÙ²$éǘ­éòŽ`jÚ\ é<¦ûº‡ó#¿ZRP1‚²Wk²f(Yd/ìW_3`¹ü—2¿·yZÝ骎ëdwäýõªÄÞhaÉ ä‡#š“dÂF;×È¿3ݰ•iBgø*W¬ö߬œ¤ÈÕ)p”H®‘óIÏt›´<ïÎÙ œ)Øé±ê-ÅðFB;Ž0^€»I¥ÅPözphµbåL…ÂäØ%hê0ߦ*að‡J¶ÚÜ®v¼ÍCî’Ç¡J#$Ö€ó“FPâex‚fU1 qòÌçÑ\)iX«©—ñx. øÜ‚ÕjØÜ´ ¼ ˆÄ‡ÔeÒ#ÈÖ!äh$’ºçÚá°±ô0”™G__‹ôIQ­¸eƒ¡sÛ¦Gy^åD‚O“’ªeÈG¨½ à£ÄÂùÀáÌY,‹Ò_Êœ›TÄÎ. ¼öÝfD4ÎwAäwxæÇYòI(=œhÒÈ Ëª`S5³":œt¬ƒ«U¬CŠ{w—Óƒ×2hø[ц8 ÔÿJyá;Å-4Ñí•c•« $ðhKú)ŠÑIB.¤`¥ÕÁÞã³ ¼†ñ3 ‹ÿQÆœV]¿½o 5¦}.,’ÆÆ þЬÛsúÿ•Öa¦4HÂz&j,I›¯¥X C¹’³³Ù“Z|éþOïд˜IÂ">|ðfù Ä4Ó½Áº7çzUÇy xxäÿª–éèÁ5†–Ø /óaܼû‰¬Çú˜¸OAÓÙæáÉSÎËA‘KÄJ{Ù¹¸ ü𼯻¸-jÙZ±„¤¨ýUCö vVÙr!_à©í£&kvY.jR±‡Ú&먩ӭ@‡úÅĸ© tC—Þäq½®†?°Oq&rüVàLÔ7ù¢™ yýl©þ5q¤ÆÍ©³}m5®(ÛU\eÇˆÏø)«ϰrxzœýŠÑZ·3®‰„é3Áy£gûuÎ?äÑÀ9”»’¸F3þèû[»t²/¬Œ-ä3¥ê“jB–rõ„˜óIžÚ«‰÷Üÿ~öΜÂÀ´·’+w úé©&i‹rË™ÀFz3!0¯ ¯ç”þà.Éó¥@ÀU6p„îܽ`†o[ íÌxx”’ 9ff!É®*Rüåä^v²óZñáÚ Í£*’/òDÿ£Ø·Ùš9.ãbßåúä•Á“—ì¥Q‘yÚ>akÙ¥Þ«þ 'y$ ŠfÁŒK6–-ã‘ó­mÕÒÝ?»…¦5Û±‘f̆ßųŽÒÍÈÎ~[Z@gTDOâ×Mع֌²íN fòÿ¨ŒÜB;úég.ßÌ9p4P½cCïê žùÝ픾Â4ŽÙ¹×Ƨôcû÷{ž$ºë  !)ŸäÔ0bÖ°¼Šä{U–g§¦Éþ—r£ÒžëR®ÿ»(}üN‚õb|õ’(Mà|ŽøQ´ÇÙÕBº Œ¨†¤P8•u‹ØžmKPÂó&O¹Áïg!B„ú=¦~{ÉPÎÏxÉȵÙ6'ÈiFï:P…¡*€bN1q ¼ªHø†Z#¾LI0•ÚB¢=§Ñ«M€ÓÙ¥DÈé¨Ò;Ê£¢Æõ%);èmT¢ô×Ù? 4¨\û¬!@ºj •oTìüWÖܨ¨¶·³~&¸Ë~ü R3cë&ð—Ó>K7Ý_óU¬ƒççù£è¡S!e`ÚI#½#Ïd)Í÷òܪ„qC@æg·&kF'L‘Tü_!Œ7{ ‰Bì{@ 7@G“Êç>l9MÑ 6•ûßýBÞëDIH…@*]_ÐÆA!‹µxc¥ë€’4`pQÅÁ€)[ÌïhÒööjۘ˅ÐR*Ïov¨‘fJi—ÙÌþò2?ðJœ|¯>î/ÕiN*½/EÔüg™³RÿTaî˰4™¢‘5þ.ƒñ¹LMºJ6Uƒç1ê±Õˆ{Wé¶¿`Uos½„Mûh5¬Ôÿ ?’A8aaóýbï¯.Ò3¾º_ãà´Ò8ìâ'IîUÎÆm¿‹®íÂèTqù´U,'•aºN(EÄïÎÃr¡ÀšmÔ€ÿ“Xlݨ:Ù<ØÏ[ ~©ï§´Hœ²ÁÁrsrRŒÚßI³ÔÜzqÿ;Ôù¤›üÁ[HÙ2ˆF"…ŠîCU[Å#š„âYIäI ÝA!ßVáSi™"Çs¤²à˜ ÆÞÜ¥Ž8\°ÜI >Òð¥–þ—°]0 .UŒìQK›¸¶*ì©U‹†ìê‘Se®gºïA裥‹ÆëÈ•bS)¦]·PQÉnS>ªà Ü(Rë_ý£€ÿ±[,’Êi‚~õ$í ‰¥«í ¼²"Ø ˆ÷K‚áÒ¬°Ñâ¡ï}wˆ;£ =vdß³C»Ê×»|?øÑBÂ=iþ55[åw“¹uÚm ˆ‹P|æ’{%^ÚWÑÒšP §ÿ¦.B½2—nKB–l&b^»,^H¤1©ËÆ=ºÎœÜÕ¢±ƒÞ‡æJEÿb\MAZ°)XlÓ}rŽù¶¾ ›]GÐQ`ÊÚ Nk´u:ž{Ë×iñr2©´ùŸ*¬ŸüLO ËƆ‹-´ò¥9rî¹tM§8Êi×®ÅÈ#Áö©:v¯©ç¸ÝP•ÑÕy™n8¢€â–‰‚²™LIm®ð«ZÁ,Ô6ÔtIWÔp…>e(”’!H²ªôá :ˆ tË’eN2ÎÀòÎá@ór*½êDìŒe¬êM…¹QÈžanì_4‘б“2á{6ЛtC|ï£fŸbÂæ¤±¾°Ï›Ãç&.@²ÌI”½•åù£¯"€è(=;ù¼CX϶ÏÅŒ¯‰}¬õŽ;?7»ÏÆäÖsubdÈáÉŠL¥í7A>è™ÅHŒv/I(q§ã->·êõÑË®{š¨ÝÃøÁÞó¥Œ R¬ZG˜Åû'ñ:̖߯N„^Çé9FËU-BügÓ~ŸÙ.ÈÜŠ­ç¯t^Ä10r¦”ÝKÌwÍô<©×V¶ H¨òFéÛ»Gàz îºhâ¹ÁÇ3&×÷`ïȪ1¯FgŽ’ø¬Ï¯Û:}åDÛ°&‘ Ás£ž ˤ‘ZdŽæÔkvjÃm¬rn1*}º;dc†p¤ j·CøÍyp‰Åùe)Bª¹E­ýté.lÓµÑÐGìÔlWg=§üÀ»I½n™»ÈJ–¾p×C‚§ý=ÄseŽyNßôÏM·kþ?e³ðí’çz9âI£‰‡Ä×,67a0Hõ¼uÖF Ä*üÅ.ãorŰ³+!½¹f¶ÏNü¾1µ'¡ÊÏD÷& Þ%s4rºü©í3 n|x0‹Z’O«y«md‡•ñþê®6þ­ü$æ¹â® =1;&K;;ÀD…=iâÞL?z´ÿœƒfèënÀŒùÂÅYퟺAÝKé??ôz çë‰?‹¨t0½oÚ}ÂÛX˜&Ï­4µôòo’œû90"þ!­D#ÆáÍŠ¼C¬þlbÉGÐäõµŒÖ±Û àªc®ÑK)1²Õ¸Â—¶7+R°V°1àP"Ô9~Zýûôå|J 9n„9êU9Áðvú§°{Љ™ìÞ¿F:þYJv¾\n³cS§)®>`H—Áæ¹ç¯  ;'’>P –ê–&Ê`9>‘CtósöÃký‡á{~øšGoUxãÁ²½âã™2}¤š³ ¹6"5\Õ[?ž˜lô‚®ù¥6#cáâ9?êØJ~âpõŠ6{’eu$‘izW#T#ƒ–é÷á÷Ê?æÌ¦OWãŠá\«¥³±Ÿ·¢Ó~wѦ7©°Âƒ†"Ø•  ][Éõ7SÑ:±zÅêjÃ]¨® Kœ&T*Ø–8«(8±°<ßúnÏV^/襣Â~‰i›O¹ÎR lð… :ì¹–â§²åÇ_$Y°8²Å¹šŒäÓÊÞiëhæ)•)¨F¶0:†XMÛ\ÿʳB7e1iÞÂp8ðèL–$Û†y ©•…ìV¶ƒŸÇ‘­BZ#›EaF¿¥X¥¬bZÊ©<ˆ=ÛN\Æõ‡ˆÀéFö‰|s¾Õné)‘ìÊ,dê“¡â5ŸŠÞ(ۡýßÏ/øžò¢﹇ô™s¥õó3Ë•¾þK0ˆ›³™m¶€»›óæ¤nó†Šk.»pl†h @ ¸¾b3J³ŸÇDZO‚öé(X.?¢¢º÷†·‡5bëZwŸßpO‘H&L%ÁxfA±¥I¤Í`Zè5Ѳ úŸ<ãÔ26dS—v™)ÓˆCEu&/»Šï,Á!ÉrN±4!@•Œ_YI:Í×Ee'·Ã7ßW¼tÌäoå ºNáÉ úë™­t›HJ štô9\jnŽð¦û!Ÿ\<Úã¥iÑXÇó`ûG–¦!{T ÅÞéØd¡Wa8#A>&‰|Óß ]™Ðä1c7ì呼óïEß¿,¸,Òª y§•ý%¨AªYêʼ¬áÍmäí¹|g¶DÕ˜šÒ·Êè¿óyÉÕð² Þßú-HRd¤8vɯ+H?O®ÿ÷¨âq¾ox¤=«¦XiéC³Ñ5y.ŸÜÐU‘ޝä?«+å¨Öy†¾b²íI­®~_]oE ¶6 ‚-"+f²ÎéyúŸž¬¢ÔÒª/¥~œª]Ï6‰Yò¶¤ªJ¦<­ÀîYhKÖ²ýçs`ª18,±¾õGB¿ Œˆó˸ø½¹Êo»“Õ3åZÚÁNøÌÓ"‘Mñ$~€)ùeBeu³¬7M”¹NõBéÃP÷yô@¬ü_ ߾ɻƒ¢jsòøö{ÉIogpOGÓñ$(_›Ë¬-·¼ eg¿Vqè:bdúOã.ìéš¾iFŸKV^ËÆæä£}-¾(Á~ £ìße¢´\#WîÀ®•b?RM·%¸HRõ„ììU7* X$ ‹ËÉ<ÖÀñ4niŒð´ÏÏRí¨Ú¸¦0¬‘6­0IW¹÷>‘Q‹‚k"•ùX3ýÛ 7:Z÷·’ÍȉpXÚBäÚ9ל¿\mK {/ØäïK<•¶ù 8aA,¹fl§Û' QµW.UóAé¹rÆUÀ,/Ë¢¤ÒÉ0¨±T¬+ ÿsH?× Cvu%ôø›Èn0„ebˆ’JÆcÇÀæÂ‘óZèã“v@²€w—H&”uP«±{O§„Ê;b¨XÖüÕ':*yï±(¤pÜO{p:¼„§!¨zŸÕ£rzº×šÓŠeKiq1!vífÖÂꞆÀ;¥Ï$îc±˜rùá̰RKe…¯¾†§ßÔjI¦pÅ™ò¸w,;ÏWÿji•3¹#´#e6gjD˜¼žoOêâ²_={Œ×ÎhÞæúÿzŠ?€& ü—Ó<Ô”ÙìŽâLphÂẒ/Ît2|·¹É#áì;QFÕè®#h¸¡Ìš¯û‹!—‡sš˜¥ד\Å8òm(eÁÑH]ÐÝ 3¶+^Ùÿ}ânøTYÍÆ™C9¾=IûŠïG¦«¶ÍÍ¥&ص0Tð{ÖT¾ôÍ hÙ•XòÝaz—1În=žÑñ_+ä”`½‰*Žjlðí¤Ðqò:ßìò(ÔSìrj—®ªÅz‘µƒêl£*ñ½rþâ©+'–ñ,ÌüJMQ2 g9ìk!B¨Ï7ôÌ*4<Ü’dJ´¦]‹P 1 ÁRÜ(¶fè™ Ò×{‚ëÿ#!"(ãö#Bÿ:澉I¬Ï–I[ËœŽ1.¥-ö‹•EsätŠ5€$LW}ÄZ¿‰Í—ðûbž$ßNë¬:o@¾>c,GO^Q9N›•éÓÕú”õ7kTñ>½ÃOo XÐÁEë°ˆ!ÜNþ¦rŒµÍ."òRzíQR ¡ÐG¨Úøi8àF­Œéc_oU›##—é½baŽA%P)ñÿ +DÙï}:ÇsòÆm¶¢càJ¡‰è‹šÎ,խ؇{‚Ñ )M6 œ7£ìÍÅ ËböxóK™ofëB™'-ºO‘ð&³ ÓMÉNî>6;œ—g@6ÀH­êùB<–\~¼äA@\ ¸óoÃçéQ÷RÛLU;!ð7c#-(m³Ék«+…ÙIÎ+´É¨yU;®âöíóQIÝÄÀÙRao;£ØW蹃îæ>Ä–üÝyGÙ©ý ÜË'’z?É‹Umól¼“®E²Ã6÷ÂTR"OЇBs"Éf3¾P*U‡ªe;ì¶]¯† †ÆypthùöδÚÄÄ}áá¢QTìPßNÚoíFÊCÞ(Ð@Øv”a……ñf(î9Ûðf§!Bm'…›×X{àh ÕjA9ˆ¨ŒDw½¢\ÂäYqiÖ…Èmò#¥Rî1ÔÛxàd¦I#Šñ"䈫wsU¦'˜á,Å¥Rˆ¤§÷‚½-6ÎÍ¢bŸ.ŸÄµ>çiZÛ&xf<\¾õ@œ2 4·VSv}£›E£¯ÐîT¡b¥­ðÒ+AâÓ7Ø_vñ¢…¦0“f›qfýõvK— ´³•;Àè Q³bÕ@ärÿޒĬØí+ju\ÿÿq4+FÅ1´lPÑØm¦¹4³ÑŽOã ª—ÍEæšÚ÷7‚¬¥(1~>"~«•HÙÆ7¥yî+OHpÚMØžPÈSCapwÃwК¸vÁ¶O"CV¤vÈØdczy[ò€3 næ&â\Õpݱí-ì80­M}#¯2nù¢U%C ÙFj^8‹FÇ¿Áqgû¼C:eÿkáä¡ÓÛV ¬ðŸ~Ê ¥¸BÛãwX„†`q–ëj°fô>ÕäðD=-ÀÌ@®tâ=óìb–ÎëãxàWð [m Ö ©¬È=òüÌ…ÎL­ªëê—'(£¦6ü’™KµˆG£CþPʨoßv\yz}©VÀä4‘öÁŽoVÎN9ºâ‡»SÓo’À1Na¯œ7ø‚q` ™W÷·%ŽY=m¢/FÚ¸? žÝ–LÊ@€†@bQT 6|L.HiüzÄ([…Õw3‘Ö8ßœ£}² ÇDÂ6äX!r•wH!Q£3ý¬°PÜt@¯ ›/ÅÄL¾2EX£¡² Ô O‘Kóò†¸¯·£Ž!¥Õ®õ—ñ毤Øä¯‡N6ü–Û¼ï5 u?ºò'Ë@·Ç«²qǹ2ë´X£v«ë®ç]ÙîN¬O×tä<ŒÌ?nQЈ)ÁO¬Ã´[9í`JzÆ\êe¯¦U”ÏëãNà{æRápoíí€sOzïc·›ÄdžL÷kß¶ÈËÆô?#žØm ¨”±Z[ ¹ôKç?g//åïýÜî쨋S똠ú-”qBÈŒ#BKêèíg\:Ç“@O}”Ì m¸È2M‘b†dÿÌ÷3Û%ÛãioÁ¢‹R=p#Šs]-à®–{(n…Ó³Õ®°‰2-øñ&8X*DîV?„výŸæ×ãï~·ü¯ÎÄóð-v¢™öÕçþu#WºûZöAº>LnõN®œOc¹–%â&mÅcA³ã°þÊ’.—÷ãG…œ2ú8r_xä°­³rY!‘·ërûÞjÈÌʰgû& ´XÊ8ÞB3Oý\¦ÏæHýEß[œÍVØßç Pí7'6%hý0iütÀ– ƒå0×H%þ•ñhÓyº{›½ïÐégwå• ñƒÝ¡èg%ƒ•¸¾Òªd0ؼ¡tÕç>¿D²NŠ QPøKÀa'¹uÃ_Œ'm)ô‘}G§”[×6šë;Ý©#z$"8B‰™0xÊïš…m"ê)Fò‡e·ˆ–€Twe”$£œÛ‚²¡|9&ŽMXµ‚·®ýC~ú˜¤æ}xÃoýjWrEySî×¹ü.o–že£zòÞ™D)^¦·Ÿ¢süT¼2-µh¼P(€§ˆ€Ãœ/«¸Oxåø‡YŒTš b0N•ÒèÆ¥¦ð ¤=‰ZiûìÑ9c ÉN èP<þ!Q¼&ßÉ€¿U?ŠxGh8û²)QG+˜3º¢XaO"Z<øÓ|µ¸Ô¸‰ôXµmi!óR¾fÉžíjd éžqéU†2 Uub¼J†Q<ÑÜ…µQÈÛÅ‚6ÑÌFŒ7±ì¦ÕŒë g³8XÈ9ÒØKL+C“ê ¶xÂ`£NØe™èÙB'J†2µGS¸j|GæÒ蘒|ꞈóO5™Þß=ª—ŠYµPþŸ*#·•sîbôÜ6¤l5Uæû¢˜ Gá7ƽ„’hƒVD8—†ë[®­ÑzÁey±‚°æ UîY „G¼…õ‡”< ٺߔþÿ]¿3LÕàWÉÀrM/eBggÖ§ ˆ·ˆà/šyÙÏ2HmVH Ýß•7-•˜© ïWUt•¥æVŸcQŸa g€=Nž»Š{‘Ì/ïE8þSÅýZ€½©§¥Qç)–N¿\òùM$€¶ókSÈ#ϧ(«r}<ϱ¼ A÷_ÿ±Þ§dx]5ò%¸g 3ŽM7•d™p4ð–úÒ\µ­+q‰|ª’þø&•F*d˜po…=`·eê<ÜŠ‰c—ï%_°èñíÙ´y"Cöï éJöe샀Œ Ržv|–—l3`8oé'‹OÃÇtu•{÷B›êª¡R±ŒŸÀ´…§rs<ùQÔ·ÖMUß ê*N­dn³ãäbŽÝä Þ»…å†"[£Kn–)R>B‰mÏmÍÚ·9Zï–àfŽ[ßž‚‡Úûà13õ_©M|[ã³8&$¥fï+Û`@ˆ‡WSØïgœîeYˆolçÏø\… £Pº6Å– MüÞ†-ÂÉ|lOýÜߟ±N–ýœ}¾ ÞAQ«“ÙÈs|}ñJ³ï ƒžóªÝdÀžVPN8¾F—gáã¶CóÕ ƒ†Q¾"íü m¶ÏÅ!Ž‚®|·û);¹ÀUÿá´4Ù^‚Ä>\”âÜðóãõ>@H+k@$OÂäE÷9óÁÁ[Êæ¿¢Ù%‘)Þ)±é\´—^™, K{h‡†1] ®TâÕ&±¹”ÿÀfCk C€UÿóZàjSÝâ|@j^c¦5XêwO¸p iZ tªâÁNÄ%ßõ ËP™?à¯Í1øqñS+n±(R’ô‡®iׯªŸ€ÿU0ô®­!r9ÔŠG_t…‚Ž†Ñƒ¨Îc:ÑaWl¬dFã ŽŽ—¡—¶½Óö”æá!jœìµ24µ‘eW o¥ÿv.«n¿0<óEìÞ s4Ú¾¶Ђ‹€È{‘ÓÚÒ„f9 äAÞûH_hâ^[Ý Á±ßŠ=nî‰U-õhND äè ¾lF¡‹â!2—ª¾Uã ‘í…}–ãû#O}œ¿éÓÄœÆû²Ž·ØšªúÔ È»ù‚ÔT  0xž¥dÆ0Õ«0[7G “À;Á䟋š³r\ß^€Ôª¸#]“Çu0P°m~Ç5ºA8É÷EÔTi#s~°ÂÿÂCl\|/ëUÝGˆ‚œ’N\VÂŽuwIš<­vq.*B×ÝÈo|ȿ숗Yj” M|FGä¼Õµ€ÀDkñ¥ÃÔ ¤[ÔVÆ hc\ÎuÖÅ=ûåûBONÀÕ(oÎu)èÍO9‘ÔÑÎ×<É„€eê2‰Ýͬ Ggü]Š;´5òLP±¢Rݼ´Úî¾ Ï2:®Àh¨áhºÆzw%5Ç»XPŠ•oðua«¡q*³‡ ü¿S˽;8‚Q~#³ñrºxT•öÿ6qÄÔ YsŠRþ%•)6Fƒî2|6¼œ²É¨ÿ’‹à$—ÿ¹?+3Ôƒæ¸ÇNÇ£¤<¬÷öÊ'Ðâ‘wÏ¿=u(¹©–oýÝY¦¢° ++ T¬ìnÆšŽáUQ bйK1˜¨;åèÉ2Jõ¢ñq&pÒµ˜Ô:hǬ!¯]ØAë–*Ymäòó— a'•EMû¨È´íÁ âæ¨V£M˜ó‡Bޤ$äø¤_ßü‡¬m¸’b  ‘(B,†â¼]¥Þê`5Û{—_~#JÄÉ­²QÀ h´¯6ÙªÏý½^…ÖY®•:xùýŸVË„Ú/F›°%TîŹÝîK&1üaê2U'­}Ëj¸ˆ²ó4\=„[Š€MÏ/í†Á:¬„xé¹£¡':Ý܆I¢´Aª_ƒ Nú``‡ùÛžkGžº»¹„²C?n$ 'l€€ýr›Q¥du ¾ÍÃf`‹Y¶÷â0¯÷óìJH ·Kk¬)a¢Dƒ&ŒO„%Àγ(2ßôwÆ4ffåpîÔûݒñ‡@a–3¦1¨Ÿ>QZ²»ôŠî%xŒ\¦|´¸ûш"_º†w·hÉAH¿ÖÃíd{÷¤DºÌ蜞ðë×øt¬åAý¼jØmyjDübž ºÑ:\‚ÿÇëÿ! ñ])@݆†ÓWc•¹0¨%p(âü‘ȸaZi¹Ý<8$Aª k+¿báóÎlÄXk°Ÿ)Îkœ<ô¬•!ª7áÕRÜë~…øÜ%,î}¹D•g‹‰_X‹ƒ%Ê®o0ÕÇ~ë€(ÕþáXq)zC¨‰#6Î-ÿÃwè9÷麗ºÔ5¶÷ÚAàOëÃûeß^)”h¬“%&¶5lñ¯éÞ ‚SÄmb DÜÇ9m è®Ÿ:¬~Ñ’9¾å´ØˆmzDŒ˜ƒS?ݼ‹göt% »p.@Øb«¥?²}Þ|rJFžý4n¢Mt-u¶p›©¡îþ}&Ýz”N^C$ŽŽÁ¢lE&íl$QÖVÁ§7㎣“ïAGT@qÍ»½­Y¼¬žò$]VÆ#ÎÁæt[ÿíº„ÕžJ==ÓW‹¸ä±cgkh^ qœnðx ’’ÁHV1ÍÊë:cûñ‹ªœ`%bé¼}j^0­‰*"ë-;|½§¯+ð~õ<~O;¯NÉ>µ¢!‡ÀŸªv½Åß'zD0q*D"̨ÿ<\˜çªHäŸÕ Kbç³Üþ¤ti†I) ÚÔÓÅqrѵ\tòx¦=ÜAú´‰M ¦…t*¸䉴Ž=Ù¢éªÌQ¿È®:¸C¬c«÷yt«íB+yB Ü£i­‚‹û³‹gþŸù«ÚŽ ¼¢z‡ºN"UŠx{[§ÊŒâÙÌi¥>0U·›³òALç\úß¼hHÝãõg["jÏ XÒߺ¶ÏɃD"ѹm‰|Ÿ¯-i!Ýñ?Nÿ[XN´Vj€rV¥Çßì4ñ,§Ë¿2d–CŒv¬Uî/¡;’ų:Yx¯ýÖâ‡âéö9l:óÒ)ß@„þ¿M¡å˵K ¹ &R0TªÀ\$ @ u}éü}>Ì»9´¡“‡üŸ†®EB”ÚJˆÎï°Íáûö9±åz#¾Hž#û¡õúƒ Úëg·x!CTÆÜ¨Œå+ÂNŸÊ©‡k](Ϊf›!IB^­}¬tÏon¡ÓGr_ˆ+¢í[Ád¿ãḧpF8“((ïóØtK‚“ ÷ÝGL½[ÈZŒi˜yé¾nLuÛ~ OãÑŠ†Â( ŸhN†¼ éÆE*ËxN÷ËMàö-¶¤†X£Á§‘Å´Ñx6*Úø;f9¯ñÜXÑçI¼•fN5¸\ÕR¬æUå×Ö’±Ç´T¸C¸$ÁåCþããY÷–èzðeïÅ5V܈zý¶ ûŽ¼Ñ†¢ïÏÅXË…ÁÁ‰:”ƒwê‘*Ç£º³ &Öù×ýLD P)‹Ï¡ÙTYfÉi$a……'̇YŠKžTLœ黸ú߄Ȣ h"©W¢m?·"QÃŽ¿ }kùéÇß×XõºjRT4©êÀ¶³Á ­3ˆ«ÉH¾æŸ'œb5—?š>¾{6[Ã'lp«-$Ë´ºzdOXÌ›È9ŽaÑÙ«Sڽ˘Ë2çò[öŸ6Ü_™eJÛÏ ¢‘|þ¦ÚBƒïS9šÜŽjw«)Ò^‰¸GÛ#M±)üê^–°2š8õ1/KÅÄŒòkÅîrùç¹™pÞiòHšîà–}ÎÞ{ž‡‘’©«-tbÛåÛ¢¹1ñÌ_ž]%~-9¡“³+£W©è Ž;ýâÛŒ¾„á}ÜŽ‘ áA”Â{×ÿd¯7··¾W¼\@ª#«%áAtÅù¦æž¡¥À%vÝ÷ˆ€¿[O«a› ‡[+5`wî­ 3É ­Üœ“u!®h´*wPÿhaŠz0|ØÖ[èþJù¢ªói½MÔÃ䇫´y¨…±Uéw¹*ëª6}Ãóa“ ?ˆÕÔyß_KÊ–3§±ì9ßAp)„SiAóª}Ò×÷á&pÀˆÙZnn=Ü>Ç©z³b]B &“Òéçò3¶Ý‘„’ü•{ àÈÚ”8A‘kµ#x“­bm%C¸ÿšÉe{º¾/ò>¼¤köè}&ß³Ï ±2Ø£¼Ÿbš²ÄDF®4*'lÏ5[çU…L½ÄúÆ20¹‹%à÷†»µ& ñ„¾yñHý\ÅÍ&ŸÞ¬åâXºYRP=Ž„”Mu %-a(ø÷ïc0eh©ì±@…×3Ïô¶˜îÊÔ“$ç;Él^¯mŒIƒ øyëÉ15‘´ 4r„½³gŠbH§ÏÑ¡™ÙsÑ©šw{¯Y*)ܽšXºjyãˆ&ý—ͳaº.•ìüÊm$Y½z³q ¹®Û³ŽöÄù5õd/Fv)pP®Ï0AõkßÝ0õ§C}¸¿óçjD·­sã¹è”ÏPÐæIF‡¿²‹9§ò­q““rðè4áÀž1žw¶.\ÒYö§É?ÓNÀX5UÑ@¤½=jrÿïõdJ YŽâ5aG"zPœ ë4bÍmZ¾„®D ´Oõw:™S)Uךa-üqž¶l¯¨ž¢Nü|(BR±c# ¾aM`¾(;솭 DXÖí÷§(ñ@òáfg[¥Ù&56æ13yÔÝQã>{À†ì†~vª½gcɯ~!P‡ãÃEô]¸ïO™$êÑ\ä¯$3&‘&  ,B+.Kš;T‡ÿ¢©«?“#ÐZäßûÙ¶ŠÛMmúŽù4e[íÅ7Ìh7C ¢ž#gÍš¿s¾*½¸Ä¿ó…€!/(ÜÜ ÁŸqÉÌøý¹™7¡ýæ­!ëÚøðssÁ%Z§î[xç°·XœÖ¹¢×……àÝÝÀk $ms¦ Ìšeç7»Lâ¦ú5Ï©ßÞÅ_›¹‰ÿL=‡S‰2Lònà.,YÍ@g&"_2ú‹‚GyÎ ÀöY^ ¸˜Ÿ¶KXÏ{'ù‹¿FZˆY"­æjÑö'4@¿)±Þ`äš³Þî Xß'2­¬–_¶R;ˆÓA¾¹”#Æbxõp»)tä±´ýÛÓѪ]-Âö®IŠ…Ëz ³Èó—è´úÜ2&XÓïúÆï¦ïYmxqØKÏ#'Ô;ºÇÉÀ¬õOÅè9ÌlӺܯ÷ýrü©1«ÍÝ뙺?]|l ½1ð«÷°â‘ÜN~9Ôí L²pŠV4žt¸d·i÷%͆Q¡#Ò»fp×ÐiMU<dîbz؀Ā øõ³ß|gÚÑ,“Hf™1N'˜!n*6Ñc^y/ÕÀ®ZÒ¯zÑhAŠhﬢ¡é iªqU“럸YŸë=þb‡«)šsîA?¢UR¸…—ÂF«†~êèÆú¤ÂךxgI/z±ò𾓣Ö‡ OªA°úÑ[îè)E“UEÿ"öBwÿܺhíaçÚ°À.õ9Dìiuwßÿƒ®Pô»ŸV÷kªñwç’GYEГß Z…?{7+eÒV·ìçøÈ .Ò;Uaóœ¥úÂQ­þ>TZ4x"{:×Êde #‚©ËÝ4I•±ínþ8Wc¼‘fÅÕŠáh8ì†YÒè±ýÅ# ÀNhRçÔx•@"ò%F|Ž·‘Z¦Ûi,¯Ÿ®ßÄ…‘êóñÎrcÈÉ9œÌ»!pãWèÓ?6 íÿŒýœ …Ý‚Š­Aëý]'åÿ<‘¨¡»˜†`È ìÇ3ŽÜÆzOã9)ÇÕà9hxZíƒÀt🜿¶1¯ßQÏ»Ê3×ÂÙùþßU«bÄ/KÞ*ì)Žˆåmó_ÉÇãtŽûä#h‘³^Â"6Ü,fg¬ý $õ˜yÉ( òf«½k‰@> läæ°rR,°ÆûÊÑÛCˆ•_‹àžÜך÷&òyYç@éˆðëŒbàøŒMûäɯÝ&Y€îÞµóÞŒ/z ²ÙæÉÛ!èj¨„}a«š€þÑ/ øZw‹ë‚Ð5¥bšáº_ ]½>*êG·Z5ÈJv¾s;Ý~è³M•é|ƈÑJpŒ>FDÜ?Å:O`ù0ºôè#lܹüm8Àoàñ¬ôî“à±Þ2®Nö̤ šfÊMG[gʇôi}¿?ÖòCd?ØaR¶9ôQÔ(-»~Hf‰"æÎ!YŒÄË4(:ö¤í:àd°â†' d ‘©¡«*$þß­ Séþ±± Ú'kås|CU3×zVÅöEG×Èþë*E #Óu؉¼| ŸÁX'AËì >÷lУ½ÑzKvfY”y­Tϲ©¿›EèATZ‡_hûmÃãçï¨üca7`å&HF 2`+C”Þ4û¾ˆ#Ò½Š£Uö$¾áz ÂaÖo~®qê:-³òòGÈhôH=·f4w>ã¶OP‹'Ïî´„zÁ“[ûiƒ×$=ðtûèÝæ Œê`à9ñæ@&ÊuÜÁŸ9›ŸòŒe(lmó‹‡ùïGóØ*>ëüîzÂ8ÞLÁì—$þ±¶ B~ad„ц5¸}Í#—~ê,¹ƒ÷H.}M¸0›Ãüg¼îÝ6†’xÕ¸Vçer¾_ø Ý[@§½›iV ³ðOl^n?ѳjœ zYÆDž'îY‘´²ËК²[QÛ§ëž#ÀÐsS`ɱK²N=F xù8‘z&•eÁlŽ&B<¥G†1Qµž5ëš«ié( ên#´ã“#(d[\›Íÿžµø›pa£JüÒð¸‘RéªJ2l¿_ÚUnÝ×0»$ár\¬È›+f°pÌ^«Þ]3ú%)B`Ó]oFš×k0̱^À~HÅ~Àî6k½5´Àã‚Í/®;4þÅš¿’—ÿ²FFÙËVäïF\óéYÛ ¾{Ù ˜`u-?×ûÿ3„ÒÄTwKXæ„´@8±¥dSUÜM ®0 N€)-ø[¼(ÿ„2 Ý>£w–ÙOâxF_y¹$ “€Áãþ…õq%v2)~jõåˆ Üté?óúÔT¼ÍCzûáàx´ Q<š)sçöåd³ga©4¶á3Ã" ¿íÙœU@%£ù‡c®€Ž ˜æÃ¹M¬— «B <0ŸZF%ÜBfîÏJÚ¢ÑPU–ƒl¨ÑRél|™LfRƼôeB!A/Kä±éÒ'þÀå3“ˆ}Î¥º¾ÿŠàÒ]û!5‘Wr-«*ÿ¬̗om€ãÆ«hšOA,L«óà¨Z¥º˜iìÕ[ñ[ìÔc°­T.´Pš–kžËæ”^IHöàúH QzL½û‚í?ö"DL)xmÞŠJ\,'ßWþU2:ãŠäJ.Ñ)Ó x«ñKƒ=^¼S ;Ü¿ln`ÔV¦Q˷냭OÖÃýöÈ­”á6F7!†›MU„ű©éypâ"Í“ë‘Í +csÆ]ùµ•Ç ø£×š8f~s' û×çV ©µü‚ X××Ãt(L?Ù¸šAþ¬”·îO¼»ÍËjp`5_±†_“pŽsiq3Wp¡+ùO¾ƒæ˜• ÷æ,ÐY7½ –")é-Û¶¥~×x¸ö#ZM³/|¿\DÔW»Ù*˜›MçYÐI½.Qo T%gޏkƒ'j¬@\4¢°0— +–¢2gÎ/eqp…?ìy­2O–ÛÇH¼Å3¸ŸJñ[üº%+N'þ úO­¼¿£Œxé‘l¥iÁì[3œ—ÁþwK44Æ~»a’×þþ»ˆÃ¯8€§ýlTJN‡jXœCöQw‘MÕIÔ+Z÷â¹ë¾nÛîÞYlåšWõ8íɶ -¼!eBaƒ<¨õ‡S[å`j S6ˆˆÎÃŽ#úE9 i ¥¿Y[bÿIŠwRWvŒ‰;§ÖžY8õ¿üŸHwx‰(¥¯abÝ Ššóá¯Â7Dåªji¶ÿª§°†d­„ÏŒÌ6ýûâŒ9Ûïo˜„¬³“è4„ñS”œˆà!¡Ç;Q.ðÜXeÖž‰µ:A´·ý±×bÎ=ä Ü6l*ºùé*—e4Êщr0R*ʸ` xq7i­ˆÖ„íWÔ{$KìºJ‰Iðêû¾Fqs¿9Cô@­ÂíÇSŽ'µMâÁ§£þtÄH''‚ÆHr!á-©†©é«)àü<®´L¢ƒGj!S|–p‹ëÚ¼•òEë‚ÿcc`ãsSxR‘Ö5\ - ’‘ê~èÀ¾¨wß*oÜKpÊᇞßJa$êc~mÚÞs ®ûŒj‘Ù³Ž{à›ª‡F£ “ËëÜCÉ ŠíÇÌ,Ý4ñåyV?]Æ|@¤„°ç8ŸV¢ËxàEgcÔù”@(‘æPùÛ®ž"eÁ¾^ ´SÀiB$ˆ`’î÷ðEÛë¿"æá•Á°.Ójå©ýšñ}["Ô™xS«²upagÔ-6fÍXbObpgLzd/dÜŒ¸0E+»q!çÜ]°7Rj Ò¡9Da¬ƒj·cãÚñwãUe¶­ý %ë6h³- Ëlüí°èA³ƒ_3mPNd=Þ’ðꣴèPÞTh'è:f©~ÑØ{oy%‹žªtSV¾,æ.â÷˜zfbÒ´®Y@¼ÉÃjÉ-Y„ólüT8íÂC²1‚|,,_F¢w‚“´8Äî%5à‘ç~œYh‚ç´[w‚™Õ>À`惸Äó[ò‘†dÑ7îoæÞÈÛ3 wì\)Çþ_³ô=¤6…Fÿ²Â‰<碈Œ,D-É®Üì¼55´Òhp§iâÐqÈaÚu”>EÜô‚2èþ×Ïߎ©mÇ`’`Uܧ~Y¿ùÒØ÷†‚ÊŸœòüjS¹ã]d´OäˆêቻèäâÄkŸYÞ2W5´²ãJï(™Nâ˜èesÔa-ÇqEG€vè6[¾ÀP¼DŒÕWonE"<2ΘhV3!˜iZ1B[O•«–Ï„ü{™OM?Áciíðb4~]¹°Öi£Õ€‡¬uvŠÓo­è%trêlYK”‡ßRHÛ×d÷áÃOçüQªeº c¨ŸÓx:åm>U·õEëö²ÎO€™ƒž³gæ} Á7fêú;þEzDÃ.Ë<ŠFªå "½3#•Á¼šZÚQl*LŒMSd‡hƒõ½aP7üpÑëSôvxº§¼ã÷橱ìA$œÅÜ[´.or­AnæQ¨al –zË#ÝVí?Ô®Bqññ[mó„¶Æƒ”_êz¤ÅEC &lØww?.`MsSj¢STY£U‡øüå!sSÐ2¬,¦}(ÉݶZÀ1÷& +/¼aÙl€°2¾b9Š¡æ©Ç<=Y†_’íˆûzËnŸð@Ø„wKö§7ØáTÏm)Üs•í}‰9&ó߯é$> …˜½’â!ßã>zëj‚8êÏpê„:q³a¢•·*Šø\´î†a¢x09“(ÿx¼:ŒyOù27û¸éhih²§+¨™zÛÄ!µn"Þ¦´QÃi¬#?›c¬X3 öþa¯‹™çÓ‰7­¢Q±x¾¸ Çø!Ã[í8$>Ü(0}ý­Áìc {‰òÄâdî4O@Aó•ç:Ø/¤û¥hå©ÿp TÀ–¥Üž#çÒsî0ÁzÒž€ý ŽVb-æ'¹ ]æî?>ÆÔÕ£{+¨— ÃìÖÛÇã[ÂÛ£à<Á‹·Uï ªï— pQªæð@(…‡3Ͱ}<2ünpˆÛ§Q fÁÚZS-ro|Òþx£þVѳ5Àçü÷¿vš¶‹F#8ö•¥Qt_ë=× ÿjƒÖIü/«‚üFàÛýLäp¢ \ÐÇ9ï¨ë õݱ’fžŠ*B’çÂ0¿@¼Ëß/ç‡:þ4c”äTv£ã‹‚×”a1Þˆ qp¿{LG8UE’ÓzçL¢æ>%̵5{×s°é‡½q&¼/u%+‰@¶wjÒ¸/"¾}.ÅcMq¢r:/¿Ëºíg®¢@Å» ž¤7féƒ"¯?…– ÍqÌSªØQx9»ª—çq;YØ4å³ß–t€zßYm«î¨åü/P2É[’…è|å`dEÕŒ'˜Ž7y Y v ¶€‚oeAíÈØž÷y=üWÁ2é˜<¦ü8ÀÚ¾÷f1^÷ÃÌ9¤ž|$õg‡`ÇÃx7 -=pä¼O¥üW¥„%éUѾžTåÏVh °j–E(©°äÌò#E‹Ì Þ^š¸˜‹„wÝ) |\nC¶ÎÏeÞ}Ò!ó¾,{ápíõ¿Ù"ˆÇ=žƒKP@ž—Iƒx‘éË?û˹Ç—]9”«mM(";Ñã„LðõN´oÃÑBsø®AŸ{A—>äN,™ë·D¿\ îæ`S­Ñ-ä(õ"®ý iìYï\ˆ¦F²$¦=ˆ˜1οº=×é¤í‰èmH|@ ×pçÈÒ%?4çï£&ºòRóL¨©HÔwÓáÜšE3Ûìݰõ?ùíZ`ÄL¦$j¨–rð³ÄŒ} cx´£§!*À¬¨{Üúܘ‰öðå •'ún¼L 8ÒþCÕáå®È;ÞezlnŽ˜ø14ífUÐó¬|ü.®+ B±œÍå¾Ë³³¶ØÐÒ ž ë®–£pÄP»Þ±¨FÙ²(‘¢CwÅ—S ÕoÖÔÓØ’¢·þÄ2B½óî˜ß$í6c:¼W–È+’3[T¥2AÍU#rõ®SÚH~(}¬%ˆ¶«5zeä-Š,õQ*±§ä^¯#a]ô›uÉ‹B”ær8¥#S艠W—2ÈM+À÷tGêfð‹(òÓÙ ßðqtæA?MN‘—Å´ùòG×2åõ…á»ÊÆÌL+?æN͵ÜÀÍ{¼rïmˆ¯’Nã¼8°‘õiœ&À*„|+8ÏDªöÞö,1&€$ôHah qÐkˆ|»* ±d´\U÷bEfúØEë:¶¼Ô6÷WO§’Ç2†rÈBP¿*2Óc†R—ßVô»ÿ¸Û§û*gG±UÀs¥ú${ÛöéÛxôaD£¢(¯¶$EVéÃrÕÏkkã*N¼‹²B<¤Ò{ü¦9;†Mä€Q£»>?¢¹WXDˆd|æÖE4n™’î”'SdeÓ¸¬£ê3‚=Þ§¸´æƒR=š º{KÑÁ…òî¹–O¡G­zÄ Yg¹¶ KŽxPcîC Ó] cºŽ¶_' ÐÈø©yë^°1z*s}×.ù;‹¸6Pm¨³`7uÏAøOà2âžc{çÛëD?>wü±ÝUo6–žm2á^K›É5tº[ÏÅÚÛÙPÅãÛAq8öB™áðr쉮¨Ì¦ f²•òqܯ#ju!=>”›2) ¿ZÊêØ4¸éºpK:·-7õ&.~몂K†¯QIâµ%ìÞ$>Om(ýH¹NQb:ÁH²Îð¼…7Ô w[Ú ÀبŽT Œ•Gp2¢¡ñV «2þvVÅ^\¯¸K’ÙÒ(¼sX…Å Ç6«]ÎŒYT”Žš©Âý{5a·XÖ"«òÈ(žŠ¤Ç‹úÁSl`=è:ÐJ±Ê_&q‡™²¡Tì^ŽÁÞ…ºANiË£ÍVÓ[HîÇHMæ`!Í7‹X*GÚïùÂͳ7 ªáñ¿!?Ê—]”[Ü+€[²«¥|·/Œùs$y—mí{DŸÁ¦Ô ÓcsŒ KVl”VËty\Nl¹u|aåÌo¨egCkö¦-lŽ7tOZLÄ-qû‘OØ·þ×ïi³Ë•ïËÄQÒÐÏní Žµª·þ8ù„]l7 å7v̙ђ$7~¿b}ܿłUH9‡:´I–k ñã×@›M¤ ìÊrÀÐ+…Ɉ@Û\t!I8N‡Hç%#QPÎF²ªñ«ÉGï.nòëwçjF¦1®£÷vÊnÄk‹óC¬¡PG ÞH‹ ºÑ],¬Þ!ÿVe'Ī­ÈÿSŸjÌ&YÄc3–}¯~‡ÎQqòân>Ží<‰jk<( cý;Ñy sþz}g¿‡†H¡j9M…ÔÆ¶Óæ&n3[ZFlSÙxìË¿ê0ÓíyK•˜R F=je ÂÒ‹ÿ<'€ÍQüßgäæ.7ú†ß ˜%}¬°63TPê9ÏV4;¿]µ‡îÍ!ÞÎ$žm5tê ¹}¯²Ñx³²c~]-˜'Ï89qð–.óï% Õôë¾#ü’MѶtÉcCJ¢çüKRàC`ÔÝà‡ÁJ)P½À˜_³¦ g@”21GWãÍÂ7˜wüilÉð£÷Æ=ž{;5p½ÆTÔEœ÷Sg I)*VZ%Ùç²}Ÿ%QI+.LdM„d·¿¾ Kð£Wˆ—ÿCÙ]†`µ#Gêà×ñ%UèÞˆuø<z$  áwLþw¿ìŽÒwSŠl7’“Êè|G{¨¹@šY½ÈŠèú æO”…¼~¸(ŽQ»²xÿ¥b?œ^xüÑêy!}Y¤qzqì%Óés-WG½Õ>:$(hÑ-ô’È+|I`ëf (Ž[ÊXU«j1úši%¶ÃPhV§8ýÐçOƒô߬+ͼ —¢pÝÏ{;8˜n=s@™sYÓ½‘—þ„Œ«#ËÑØaæ¿y$ÆJJt´1ÑW"]Ä]†¯`ÏÊ¢ª$çÎàd_Eü‹4¶Í2 !”Ï*àÀ×Ua-ê¹î“îIäË]zßMZ\Ê|OÐfÃæDqróÂiáÎJC§wYBþ¹”ÃDË)D=-„;´±ò8âϾ?„YOqccŠ&oÜW޳œÖO…2Ô ŸVÁB¡ê7±ðC¨%õo/^*ÍnC?‰¶7ÓBŠÌV9?ê'¬‰Îê T*«[æ¡®2#òH]’EìdÂøP­ã}JGö.‘üvïìÄëºñâ×DfUðg[Oáxk®*%ô¿ÑܽLžgã}À\0iÙö|t·®Ùà.ï…ÁïŠeNÔ:( ߪ^ŒWO°YC"µ–²3½=Ê(ˆr\ÁMݰñ•8¨í–õîYVQHº"ô«R[¾a,=H [a› ­7…¸ë ¡!•±ŠÖ4~Ýëê&ù"9m¢ÃUU”¢gQÌÂ(…*ž…fvJ kup!µ¢ÍÂaþ›é‡¸[Š> œŸ•p¤g4ÌæÂ|½_V6ˆ‚ëCK^’ˆZåùhüµ}»ßujž¶7âÂ; ŠîýHRÎàBºßèjgÃuÅ©¢ÐżìÛ‡ÉðgÐÔÂô!4뇅Íw°šËÝãrƒHž¯ž‡²:Ë«Ó>!c°'·JPÑ¡2“=®UÎù¤ ?ÁÞδSYÝpe†¥ĦsAGöTã)Æ-Âàkv_5Í4x§¸*Énm‡Ü2ý+Ølª ûƒá&È\DfN—w§ç=k¬•¢bXÔ‘ê¦Áø1–<<½úb‘»pùزE ó$æ91>^ Xò! ¯Ê•ˆ—Áéì%NBTª¤Ÿ>3Ê~Ó 2›Z-¾‰cšeZçÊ™gÂa}¬Cn‹u}üa$ŒiÈŒúaÖ¯Pøú$•®º„˜†î”ÜôÄNH§G‡~ÔEɺßQ <k£m²£o/Ö“‘gÀN”Ds¢•ÂVl+‡N‘söîzTú“'òÿÀ«;<¦1èèÛÆÏkl/¨§1-ÕVTý°(VcJ ªZþÙ²¹¶ºG¶s±L:s-­m ¯êü£b.RИð –:(?n iƒy­¸}‰‡à9½‘'A€màÌÆ£hŠØê4&c+¥°#ÞO×­È]¼Ã“ü# Š˜ÃÿYð0BQŸmRâiRÅNËÒâ<¦•zXe–ô?šÀâ´N³l¶þ”ˆ4BÎ5¶Êêå]ït~ϮĔóÍïö¿‚8–ƒo]R¢†ßÞlÄœ½…é# ¯\yK ȬÛekg¹N¨Év­pío?Û¡$Ç1F²ÜuPêô?ø•N!ÿ~ñbæwxµ)Û¼Îóè‰h ýà2ÜS—Ëß1õë K›Ä‘òëeºí÷'F§O¸Ì-ÿöyö6¢¾»Ó¢thÐmŒBp$иo·á‰ô]Svuõ‰É$3öBJ~Ì¡þ¢Œ„ÈHBé¡=¢\výd WŠ w½«-ÄTMÇç”T’Bƒ‹xŠ4Pg;‚Ä|z×Ðc8„!:Óá1h  ä`‡~!ë8Œ”{–.ê@¯l3˜úƒ|ˆrLƒ:Öœláûô§=›MTÞòp] >,!O»oùuž8æá-y?êšÓ¿‚sæ€.ŸøºÓÙ°‡mˆ+aòZ69¶Ð´ÜzRÐ ß~ ·Áæ_¶ÛbNZŠMt_Î Ž°[Ñ£[Xq&ÊöY•GJ—Š'I¿¶é+< JÌi•øÛûí¤š©ìÒÓ šhaNeÆÄKû4º½IØ(ÝëýŠ«‹%’b÷”ƒ¤´MÌ(Œ›ð"XUŠ$7`èÜš†ëëHÕ>^¨s¹xÎa8ÿ8!™.–È— WóŠ}@$ýXœs~þhÄ©´7z‡7óE„ ‰{úÜTá6Í{ì¿Q1#øÝŽßщõtþ©0sà)‰{°Ú:ƒXMÁÚn×w6õÀÍ),]™@£ÁͲN_V¤X¡.\/¨û2]ù!rD5¨4¥n5ËíN‰$î'G#vVj$¢û;¹ZÕ—MÜU‰p=:XÕØÌ 6˜4’²÷}~f+1’É4ÿÿç¥×?+„g›Å:²Hg9Š–˜:ÓXÄ9tbŒ= ÷µ¹É#b×(Yä ì{;¢[ÊKA¢n|ƯžÑÓM†Õ&¬ªQFþ¨ñŸ»íg4#¦¥ÁÕö m£YÇó:†YK.ÍôÐb¼Xzùõ_ÍV¨ì¹+>i¦*±úƒüáuè§¶žá4½øžÝ;çªÌ½r<eŽ÷âÒM>¿7—È{µ†"Úº@ÜÓäzUl *ð‰P©Ö×VÀÅY}ÆNY Õæ¾BÕöç~"³r ñÀ_¦SÝŽeLÖ‡h÷~ryLEøn”NÙ´Xš•ªpï^-~³îîK‰èñIŸ8‡ü™!œO´GÓ¼XÙ¹dTÌØ¯LùC›ú…£lA™Ì­vïKë¾Ê€ÕjÓ¥¥"ȸå¯ÎÅn2Vú\‚ôpªI´Æµ`CíRsu5]gcIayèzöœG âü Ø!ìjôcÑ›÷ëdV¥e*Š8Zv“Çà×k9Áº“:¿)Ô#**ÁYnšÜØÌS˯”…¸]¹}lë—ê!“0p¿““\ÓŠˆvíâÚm¢ù²?Ý3æÿN2JY$ß¼a´÷TëZß(Ö.^Wopãus=ÃH!Ž!R˜ç†$’T4.è0¨¢ ý³|ÆHåë]¨Ì±­ôÿi8‚;J“"±ïû'ÏplèÐ3ÇÞØ<˜n`$¶®ŸÓ`b¥î­0‰^{ȱ³ÚýÕF•½å­[ã’VŠ%gKgß©g Ù³-àÝàÖ¯¬á‹@:CI¤/ôÏ"¯ÓWdKN¹¶ö)i”Á›ÎrùæÞ•Jd½JÓÌZ|&ƒ›$—8'{;Až' #ÂƽÛlTsîœÒ-©‡uîµ[]s;ë0 ôᾑŠ1¥û×o´3>Øïþ:B[Cv&{݆´óòƒv8¿LÏph<ÑÏú\×<󛺢µà½40c¨0¾–/+ôŸûea€^7íK‚IÈËTóZnºˆF†@™…ùÆÛ2~)°XnMÿz&bNÊ&Só¼ßîñެדæ”Æ =ט añtk{Ú9bW0‡¢>¢Ö¿,2 ôkMÔy†scÇliºé ¨ «•É^%IÒPw ´ëc^>Ù¯ƒè;Ѹÿ@2‹ÿé½eÒ~Ï•Øîü½ÛÂ,oò–*Ðoz5Ï*C¢Ÿp¯Q$SQ1ä 3óæwBSäŒÁ·|E{2J†ayh"9mt7¼×xú’\•žÜä–Ì)ot+³$å¤1|©xQh*A·Š#3B© Ó6&ðíÒ²Kï+sì^Ï)4.…‹åɨÄpÐPtNxñøÓtä „ƒp,¡_E,ë÷°W¢€-äÚ(ꪚ?O—¶:Ô¿óé‰òÛ…¢°W‚í‘£'µG½ ¬„ ¤P¸è…u}ÞÙQ¿üló—)›ùkÆ1×Bû¤ðlaœ¼*u…â¨h°áš;XN¿Í›KK<çŸÃa# â?×$¦Jnƒ¡TF6Å®pHpµÔr‘ワ¯ÄÆ”UßY¶FÝÍî}_œ>žóS¯¡¤ÃˆäY‘9B`„ºƒAÖ¥äÿ2Š·åŽnTˆüÙØD‚€ ŒK¸ÊË%.]X™ œ$¸j\ÙЙÎõ !Qq\Ç t²òï^9‚p$Î)aûòªV]ÊÞ¤ñ—ª—Ÿ¨x HtÊ CӤɞ«NºµªtÉCß‚¾ßp ÊwMÍ ž—j×]ƒ@Ý ÝÓõ­Þéä ê*©¸_û<(gäŠN|ïÿ³{¾“µJ™®Ü…]gþϼÔ\±vbxg$–¯ý‚ÿnìWî– ‡Ž,TÇí=®Î«´û9d{¶j¥’ˆq¬6-¾øË{‰en]tº£(+ã`Ëç+5ÆG&ܾ÷iD+ë~ÁS žÌhsIiO’úvú3»|6ŽcF€DpÄ<‰fÛàA{Î%žƒk§Í‚q¾òNP` \^—Sd~ÀGzòF¯¨î}×ÐKéÄÄ‹bùwëŽÂÇ£PÎ*?1@ñ¿|4¥”Vüçe`–ñ¼ùxaÊI”{x"ëvPgup¨g§‡šqü¬Ȕ­¸éýž«Ëi°ÛœÁD…¾£[#DÃZŒ_²ÄåVÄ…éœ2R=ÅÌ0Ý aŽÆÉ1$…–%9ed çw‚Øá¡Y™®ÓÙ­¿TƒÄÚ[fC$/Žë£g1‘̆_ëÿe£û¢_‹ 'Gô5Ãv£(K‚¾AÉÈCa0©àBhT^_^À3´t?åÞÀ²tÙ/ñ‡þ™kwËõÄ‚‚.Ñ—CïåÿFì!*ÉW==X7Õv W߃b¾pRy?¥R‰’©ÅÔS=2ä2·'«ë$M[âßE®\<“Ù3ÔtÖ.?|D†ËŠZ´pþµ³L_¤Ã?ã)ƒ$‰(‡€µMѬ`pã¢þeCÓïR\ìVV7ÒÙ&došý»ÝÒ¡±ið„ßÀî²$üðßr|¥DnV }o=¿í=¢]\ ~ÀdQ±.¤kI 8b\þÅú/$™åýÄõ¥«ÄÚ:(Y"µùOÄšõˆ£¥äœú† dã­¡Ú®Ç&U1¶ô³ÈYgKb­‚< Ä{ áRš&XϽÏ5¨ªýo6VlÔëvÉ$²^¾‚˜Zœ9¿KÅö£'Á½†ÃâGVM§âÃ4ºA¶Ú'¥õÔI,‹ƒêÔGû`Ô=·àÜxZd/çU>ûYf –ÂgwŒˆÑòü(:aã•¶­w;plOú®_Õ•ÞÏïk¶çºá£F\ûb¢l%òzý.8¤·è™L%µô¼’ýð)¥}Ä“yýÑÍ›À$| ^ü'wß8 m «×·´|qsƒæÿ ?wˆ×~+ÀÒUC2~ùVëÕÎ4þ Ù[@,•¹»ÿxë3ûàKsaNyaæÊõ,iPozïÛ3‘ ž é©éŽÀÔò ÏÔu{œ€D>ĘþAø¶¬)‘íšoø”^* 8é…s˜2 (QNëpëCû0S„?Hò¡§’]+býíRÁŠ•ö'gZd© xV·ÖÀô§8î«}CÙ•ñz¹´íR–~}ѕԨ$¬q•ó¶ % ×±>S£òç;Ú²4ËöqžP²ðû°ÀSÛ­ÍãŽ|•ío¾¹¶uÜÇô¢›àõsCÞÝfbõù‚f}£ S+iО`‡ð]‹ƒdC_·Ìþ¦‰4Á,jg í6›•ÛêÝo{khÓVLÓk±½d`!”iªrû2ÈgÕï¹mêÒ¯UðÜîxÏèx=•½Îên#¯oð ˜S™w‹y&œíOkheY z`ª1aí—ì+Q˜& 'Û:™áêJG-ƒ,G±™’-c…y­‹MF<7ýÖJ0o¶žyþ”Ó-´%Gj´>F^U`ÁµŒç#Ê|àÞ™úûɃ£ì ]D…¹$j§Ké4¶@íî‡Ý ªLΑƒ0¨=œ#² ó ­Ço¾²œWQ¥GF¤m°·ð<8jðP¥(ÎÑ}Qâ~¶ºÝO ’ÄN$ˆ N’g@1ˆŠKv“÷½¸ÒàËy½½1Çd0Y¸= Rùµ>ǯ òmàÁ¾9oBæŽâ;Qa¡&÷CëŸa⽘u™~+é§îµÌæ.˜£¬Ç,B  ,H°Ú×0“tÓ±|.¤ÅëedáH=ݸÔ¶ªd ³™‡¼›5.œ·¼•üãMݽ^H‹C\bàóÝW…±{mAµHálTI{¬$g„ð¼;ë%z j!ÝèPзŸ‰OÓÇÔÝ«(€ëh#ªC±Ây°%%êÑ{¸z)²¿?ìÁ±}P>¨ø‘7ik)[ã´nqëúž1ž‘Ä„ 1LSö$Ì5þIˆÄ³éqŒ>÷É ÞPeQ½0á=¹þØD FBÅ“?ey,<©8s¯éÕw§û"æUÃ`Òuů¸HÐuóZ0æYzâk­pY¸ûL²ÌHŽ”¢®îÚL´â‹ âúrÝ©y˜dv¹íy1.1“ Š%*Ä/@æî2 _²§Àت¹øœÂËæ%Ò»——Þ-U?ýÝ/—÷S’º¥ì«Ä°nºO†_Fê}?1èšm@Š{µ4Û½[°<µ±NbÜR Òýž¼,äÛ‡<&I\%FЇ’Dís Qr6Ø× ð&½OYÑ™¶k³à™Ôñv§ùEuÞŸöJâ÷å•ò“ÆæyÓ|gi¬iÖâc³ñÒkIñSëð~)×Ïé„Fœ/?©ãøÌ Æ”Ðô×Ùþß` ŽVíú5`îîšæœ`ó (* Á®©[¶+~äêßîæs7eQµ![Ö!éÿ,êsžUwÇl(Q)!Ûá’¹âwóø.Ù[>>®Åt#<ƒ8? ë‡ãEºœÀS·_Î~] ÌwYâØfMÊg gD>ÿùYœ¢ÍüÙ²GZ%ø 3"-ã¸×óT3H°Æzï4šÃµiI ËÍèœH5Öã£o*dd¬ýô¦|nþ9Q›ñ×èÞï¡4…YËm“óº%Û ¨oZ€‰ºÁŠ>ÂM$ë…Ó»sÍš•qñá{ðóLœ¬üçâ®f©¤i6Qg]yò fþ>“p\3Mô‚µ ̉؄¿òÑó¢†W‚rÓ7ÙŽôE%}ÊâU+ظÎAω1”á± .Ð ÊU÷p®#Ñ]ø¨«%_¯h>ï1ý’­v½ÎÄbAÛ\ÎÉñjûÊç$ËÌJÇÒÙv¾íV£¥8Á‘”)Ú=$–ˆ®¢`y˜ELY­ñÍŽ@gÅÓׯäÊãr’ÚóÕ̺­-G†Nh{UÔzZ߃”Óq:äø¹\¢¤QîCYzlsí)†Ì;%3aø÷!øDšb.IÙ Ö>zι ®ˆö H°µ¬ã¥Ú¢Jgʾqçö@¢|ÐÀr¬1 DÑ-«‰ŠÁ BNö¶6ëaˆ¯uÚšÊn¦ïº‚žÜâ-–3¢ûÊ~Ü ÙˆsgÇaõVå™-ZUæ(0À|ºÁ ÌÐojíüÖÀ[nCB|Ýi]§á}~÷#p¼‚? Ñ>Ó„YÈ+¶ júpàd—ÍÉHVAFÎõ’‹…Ñ’ù: %9± |MÅÙíÞH”½}Úøèg_'ñŸY¦Aém¨åÈHÃBÍ(Ë;Jk¥ÂÊŽG™ÍGó¢ 2·)–Ÿ/JRÙ3æë«¥¼±ä/¤†ŒXK¿‚ÏP™!#²)`È€Ïxß*Obþ{DËâ¢Dˆ‹üp›çbQAå#[¬þ3¢ 6ÊÂpyK=<…‡¬Žnm [÷5bÏ$±®'Ñ_Vq83lÑDˆœzðáê¾ÃìÔK=üAÅ}¥i®³¨Hd"ú·«Õfúo1µ ä¨cQÿÚÍÿðìCõ´öÏ(®t, §ž@ˆ‹d¸ \-kÂT½ÅúÂ]«þûÏžº¦â ½Ro´ó½_wV›ñ.¥ÌKhÄÊff"‚³Ú´Y}ú–X—¶pT«a·_Y8øŰ2XçïMžØ_:v1˜Òˆ’ç^‚k…™Õ›ûÙ’Å4lqaQÀ2£–'ëÝ•NêðH™&H,®ˆ»5ªlJméðÔ–œäü«õ1Ô—cbIQ BLȼbJ”û’Ô3?"ÄÛĤAVÔÞƒ=Ó¨Y×Tv QP$‚Òòןõìæ'vGT W!qúl¸‰bI|”9‹eª"¾é æ“ù*µºy¹gæ0P¼Ö£ùŠ_^åð§ž•ÕWÇØÐ^T×Qöå¼9Å]ó×§ño,köPJ’èó1ô\MùÎYö(´‘٤Ȫc9B  zÂͶ–ò ޼¡°åÂ2°ð× ¬¢aXM÷è$…v¯ÿÀ¨ÑrÚ E.O·’³ÍPé ½ƒØ × ¡UØ-g‰·8QøZÞ³±¹!a­Ñppq’`:¢í‰èl0<Ï`È6Qw2ùè/xc™GœçÏÒÔ¼‘Qê?MEXn¼œ¿yH½¥Øº{ê)³ø³y”A\Ó¾#oIšþ·ÉžWÈ(¬þ}ùŸÍw$1¿ä¤ŽD¥ƒ@9ΰ-–lÄÆ`Í‚j*¿æ¥8ÉÀu&-KëMT¤OÖ½ lþ|sš;ÆÚåU¯Ž÷¾ÈÜÄ3ÅÝLs°¿Ø`³ç]D$ `gò.?mœ–´yr¥B;âÃÉN‰ûñ ë2 6ƒÙuuŸè‹ßõ2î´bÅí¹Ž/¯‹»”ls  q¤˜yƒîtðãBœy¦¼HIè}Z‘¼ETIbÇ¿áצ›]Ò­““A&ÜF£ãŒ¨ŠÊ þL5C¾Ÿ?ƒŒÆe²Ò8ö,š<˜ âU:JÇFJÊÄ;Ú^>;óèM¨éØå™•ôŸ }Œ…ç'ÇÉ·ú(lšÚ¿v"¡nüWÛq¤UÒu14KÖQ½à²E%0ÒãðªÛÁ„LÌÜ /IKÏ–ËÜbšŽªÂ’À$÷:EJî܆Æ\‰ŽþÂ5]Vvz½h¶w|-w ï½›ÄÎ'Æ5Ö;ÔVÐ)‹_5@– <#,8ÄTDPXù8{Zw-QvE'¼J¦ÓSQ´Va˜Û(«mÔg°¥¶½9æ´E2 $Klc<áÅ)ðºÀÛXäÎg–h­‹ôaúÞ±‹=V&©‹^UIÿñY‹6¿¢ºÌ¬Iž*ä éÆ8Püý¦Š«•˜ñé"5NØÎf9ˆÿ(cïuÊ8 ²ýÏ-”>–4¿ñ×wŠU‰NQï:“þE¾éԠɨ¿vA\;ø.ø“ =™Ô3k¨›]ÁÈé/PÙžŸÜß}Jëòø±e«5Àœm*Å|XÉÜš`½]ƒ´Ò´-›¬¾ªåm ƒ‰+#gÞ¨ÚI—´>³û!sÓs¬Þ?¯Åkl8eñÆbª\˜í¬Jõ,FP¥„  [2·\ÕiDG \ôVÂ!Å\ª+ jn_رáž|'â4æhjÛ¥šK>äƒþÊŵâå«:ù´o[™fiéhÓÈ0ÄÏáaÊO£ÙóÔ²vĄو¬pÛ‹j°ÊðV }þ²Ü¼ìˆgTt°ïßfiõ3!¶aÏd±¸¼‡UB£¤ ?nSª&ÿ L1'ˆgC··ƒOvÍW ›ÆÁzrG—›îfÛè7¿v„!~Kœš@:ý¥³v Z´…+8jC<:éèÊ Š+Žå7ækC^ /j/ÅøÓR7Ǥ$®l ¶pî˜VÔ{6E¼­ûªQò;¹ Á¡¾ôÏzÜ‘ïÚ…‘@r$Œ¤Ú:˜ä’ÝòR•OZ²…V|êS̽0¥öâ˜\4 iÓ# 7¥TTÖ™wÞákP<½ØLìS5¢Všq¸©ú©¼}[)0¹à¼÷êç°7î4SfSïÙ/äa”³3^ú_{ÕxAA¦•ÔTœøó•T´·.G š¬‹Wˆ|§Ô62‰­›(ÞáÂȤ<ôdvîk e‰lõÕåçÊ=„"çä K²iüÊêšÄ>ª•ÒK³+Sc 6øÖ³Ùûžý³Ôÿ’ÀV ½~_Ù¶`E¡SnïrðÈÐ qmi÷Îþ0H,FÐÊ7ª²¥Y_¹t«cþN]ËGAœ*\Ð'G]UBÞbITý§mc_ÿû½20ùÖ@;Ó‚ M|ùθêω®±i'µò­r¬á³§g!B¼Ô~ßE©œ{^»ƒ†X>íL7n ÷ïXþQX•Úï}T^©oH”ÐghlíÝÇo¥"-(j MM‹l$Mìì}é±¼:Û5t»pØˆÈ 1›`žLöF¿Û o! †ì{GŒ È; øo»øþš˜Ý ‘VGÞŠ«^•´hV‰ Éë’‹Ïïù­HUye§iž°ŒUëWÖäÑyEQšöŸIæ|>)‡Moé3(leÃ^ûس!MQš´Š™9=R[ i«Ð-WtŠÔÛ#×Ù »¼>Yád^óR6N¶nÇJH˜¾ãžÉ9d1zýRC|øRæ 67À :8¬#]á>üÀÿ“ {«$rاˆQæfkÒG÷G8t¿&ÌIú¬Îæ´9©Ü甈Maˆæ 3ãÙY¾Æ C¥6R¾]yáÔžw«‡i-u8¾0ê5oŸ"fo?¥"7 "SÀ¸"§>SÌöä÷­f€Z¡™|½b¹ž”èCw¿Æšpáy/›n”´ÝN£<Š%mRR |ËD øÕõ:DW~|ê4ãu3««Að-l|'"Fô±·¥«õé;,1¨¢""ö–9–ñÑ6ýu'³J aŽ€­ÉµüZ),LŸÐ„®‘hàQAI r‚nÒQ§|uD†7›*/ý«r»üä÷v×ÍÝ{Jé¯T/Ë·¤‹…±áAf®ŒÉõßš6¼:3ùÃ]©ÛйYŸ—¤(»eÛb‹Êû¥¡%åøÔ–¡>l¿¡ãã±Xúù—{âã­“¾ó†°À‹™,{±¥nx˜p­qXúèçØì/UÌIòLu¹'$¯ ÓåHõ—!º:Vd/ÆHÊ‚UCNûùËéF¥îNÚU4³yÂ\.Ë­\k¸XmêÛÔ™Žb7”Â0Ωsž›§*ÏÇÒ–—m«5_m^?ûù(g\L±VÅ(-6‹nØÉ? ðc'ºˆÓ¼ã Ïg\uXC?o¨Ç8Êäæ9=ÀŸ’i!6 Œh\»NÍ!P\ßÕs¶Xd(;1ÍÜq6"žGÕ<˜ ã —ð¾Ô”ÍÒšRZ²ÀÞRüÌŒ<ʪƒÓ„DnÿúôÎ)æx×d>ÊŠkzƒàÉyié/¡½&Ê ( µΟÏ{³æ}¨V‘ë,»s±¶yuf³? '‚±$š®u…7ô¢#é=ÿ"”pþh‚®²¶ch&ÈT}éöjr¥þ;îGïþÇøaÑ ½4–´öy·fÇ¿ª ?Z¯ÞÑúÁÝíÔ®w{ŠüHŸº“ÉQ½ÎIß/ó¸×2×ËöòdؽÙáJI°ÉÇM™îÒYù)1vzƒ»”bWµ±Æy¥ý*_jµr¼4쯓sáš`ŽB%=zòù€œpjˆêöMý*ìrliÀ\[ßgõë`¦ªÏ+[é¸Ã»;á<Á÷Ué×wMæÑáÚÔŠ3ÁqziBICTšŒëÈx¥Æ=¯Íæšn³p°^:Î`´:§éZ³ ­p ³ «õåû8dj¼¢ÆŠëuð+*ÝáPȃÙÇ;…c›ù]Á5Ujƒ*T¢’>K‘¼ÉÝî% E®ˆX0m䎢@An>`ónEê\ÛóЬ`š-XQ½í™‡ê„N”|t?àþ½§D¿âxó„@ŸË· ¼¸¡]ZØMûÌî@VG;RÜõ·!å)úÚLå¤|B…0 µ‡`›©í¸„=sóç» ¹µl\XI;xõçðËÛbØõg€‚ªÀç,†[¢yC;CÅȤ÷›L”pªÌ†)íôíТ3¦ É°EžG:(DHûÛ˜ ÒAs‡ 9 Ïóì]œ¼<ðõ²ºб§­¿”²ûCf¶ß’ü‹(s„Lܪ£ç¨l¿zúf»}~n–wä8«¿énúÉœC€¿N廽?±¸Æ$4èvÑпOß$}¡;àÍ>ìI—,bDòÌazhäÌdí…¨À_}¸'‚±tœh‚ !»%Qm²AÀA½,sÍ~:}ƒÎþ ÐRlçí­'¬7$€Gþ%pº#Ëñ/Ù<»z@Çp¦<§8wjÏyðJÝ8“[Ø{±nÉ’íw"»_œ%èÐApÐ'Íš<èP¯k?°ž“sÛ¤Tá‚~ÏÃd»Í>"ú¥àniY* ¼/íÖd“`(Á;ZÝê*¸((°¥täû¤‚1·Í›§ñ9:º;i¤8SP6Ñ'cíú(ãÚÎ’;¯Nö>`ã}0R>–M«³€ŽešŽéˆI-¡¥ëÆ’y×9͇.‘ìP÷H%v.ƒ»ãÓ‡ñ¬xÚ+ÐV@¶ôŽt làF\,êEfVeÏ¢ÐX™=>¼)>µaŽ«Ž¿4nš2<Ög0ª.pe§Q/oî½ÕÓ)¥âCüx6‹ûš!2Õ?TÝIPÄ©MçîÌTí!VZ—}Äîæ*ßé“Oš½´"MˆÆ¤3 7'hUÖËç‹Ãp!e„–º%BGjÅv é飂ïÏ™INvÙ6í}™5‘CPFh߯+Yl¤e¤ “³Wß+ÏÝÖ”\= âDµ§1 ´€ »>ìö«%yTÌ@q7ƒkw”sÛëF<<%µ ³háµå\K9¤S­B+ãVº;w©–l!Wy|¶´.Ñ ñOÍ‹TrФQ=‘Ã?ž¿{ î¾êT¿ÊÇ#Áh¸+™bß‘´Ã3í9ü¦ÈQ½Pä.\9ÝÁ“ m*ÿ˜©’~’"±àHîöeÝ;5Kë M€ñK±ñ6Œ€åf.ÔÕßír†¬5×}¿í ììQ:ƒ¹sÒÛ|®(µtõÈùÍ‹ãØ« ÿÊÕ@eµuJQ³ˆ!¶ dωpöv6‚ÃUCó§3øgÞÇ¥/´&⥉:·X½{œå#^¢:àÇ,·5üÍöÿJ|ºDGž:;—=Á°˜°ùw7*g l¸"· hÁ8Ç?é•®‡s'ò|uX¢lÂïbI¢&¦Ú_ ¥#ÈJ€Cö9·ûÓðš½îwS}ì|Ad/\{¿ôùWJƒt‡JRN¼4f¶¯tº¯•òo7.e篜Âó!‘¨çK·£E´·àb'[ʱa"l È ôj¯½Ü0Süaµ`DÛVJÅG˹(`äTº(•Á÷¬05l0·íAY‚ŸçÊQ*i#"¹pe5 ÎðÓ‚‹˜ ™­z +>Ë¿þøªNßÑ7C|Ïõ3lŸ@º™Lί®:W*íÍÂiÀÖGAÂïcµp–*“ÉWÚØœ­O™ƒ"w!2 \j?aÕþDZ[WWy@hq…íÒ¨X1¯Öñ 6eÇ2ðÏÑÈ%mù¿—*K:éS7ðNŒÑpéedë„Aûãs¬Žeýl8íÌ‹(Í9Èa÷õõÚmLS•nhê¼ýñãL˜y$qô"ÓyµÆ!jAu(4Ü/‡œ[vºÕ­Ën,šùÄ9^à9ßÏu%iŽ©kã|ÝȾ@½;¦{÷Iè_n°âLï„vÚiAsçâ!x®3Ð…åðqC”>˜B!¨‚[z¸óey{àë-ZÍT™œPì,a§qüÌ ƒq~Q¼à)19$.tûNσâ$•§išF䘈qÞrÓ$MKlÑæ¹JÏQÒ{C¼=Ìñh€í>°¹SóŽæÞO3á• Âé JÐã¼A)ÈïÝtP1,šy„Ò?jæ23`êPÚýÎAZÆxTâ˜Ïð“¼_$w;€C̆Ëu^ÍÇI`GfÌoó”>l‹T;”%—óOº{!!a6Q©֖Λ}e¡~›Ô ((M¢U²ÞÛÚ µ‚·Øç æWCåVŒ¹Lä"Z|/™™vÕ¨ê<·~;>©ž+e„µÜ(b*5pZy¼pÙµ·oJA³BÑ`"®]¾¶õf¢²°mq3´NÄR÷:’&½¹¢ºÀ®\D d-þÎÛ%ÑL¢ö¥kð¦V/t<+Øm¡Ãyß:Ty-#Åšv5Û©qÏ {ð ÊÙªJºM2£È¶Á¥žò-Dœ›Õùê”)ieXJù{Z®ø–O\ë=–sVÎ=}3•LÞÜ*^ÕÓ¿ïe‚auMÛZ‹ú Á]Ø}»ÏÝOSå ˜³UÒ©:5$#ÿ«Oú{½´«ßFwáM8·}•“#u?Ôç”#é«$¤•frwâæ&3À ÎŒ<¾‘0“—´,WÕk=¸zñæ÷¼¯åªE@:nåL÷ã²²h¿Èö¿×Mª(U)‘©kNrŒ_w¡8"ƒ4ҰÝî8ˆs18%˜qUîÚ‹¹³[þL4Ú3Á¯q¦È×õF€ùæ„#v¦© f/’*âeä±>G=v ¥$û*|ªÅûžñ-}“=œR\šAs~ÿ6 hïIò0 „¬óŒù¥.·z£l%ófS­‚‰èz )Ð8MLòìíV˜ YpÿÝ'×m"©5ð“2þ„~øVO ¡î ‰uIè|§âžc8àÊ4ÁôW¶õH5-³¤´E1eèê^^œR{Ç@_ø÷[Ç¡÷øUtY‘<%:t¡R?ËçÂîP¤T§kRîí-@ñ¾·§ bxj®ú†LÅVÉ\„1W Ý¼¯ù¬ø©`„K^ÀÓ2Þ½¯`RDy`Õ~è5ê;h¼Ÿ¸Ÿœ>Õv¹£æoå;h0-(ß´Äñ”u\ÁT{ Üp– ŸïOiôqÂÅÄm}]³áˆw%¤ó¦"t-†›Z>NT”¦:˜ß¦Á]ºJ bâšîù¦¯~:]‰cS7õßj{2还àÍ4PÑBþËEÈGSk·yÓ˜^—üv±BÕi­–r‡Vð[²‡…\‰"Uÿ:ý¶^˜˜úwG1}/oáŹ/ ö„À3>hAÇ;Åél)à°å‚ÜÁÓQØJºŽG9uÖ„6tðCKûc¢¦ÂÐ…ƒÁšD|ñÖ«‹Ú‰:èJë +þŒ+>àÆxS¸9ìhbœïÁ½Jý0ùrè'!cÜ'jÈ|N€‰óÇðl’ʾuVC_™¯ÏÙyù½éŽ|9(ù/TÜy˜­€°,s{ê±ù¹ËžÕÅñ:áé,u0ÑÿÑ&KÊøhë·ŒûK?’\–+N£æ‰ Òp¹Ô°Ë)Q&ª{|UÁHéE‰hB®òSÖûcIdÙÐ?ßÀðèÔGlÿÀ‚¼4ÛåT*ÙuÊ×hÕ°¨`ãóðhoÙL'=þårÙRñ ÷`  494&Zç^~æÝj¨uH˜&ÃP-ºàh(ÒáaÅœYK^oµßp!Þ©Ó1¸Sñ{ÖÖÿ#-ã<‹¬J( Þýl¦¢R8%GŽWŸÖ_9U㘩Σµ™«Èë–Ùä‹§•Œ@ÂzþeßT{›’ 5o’´=Ü»¢¸SXª?O‘ 2÷‚p:…«lƒôjö`°³í,u‡–¤Î*$+éó3ÊÄÐ×.v¤ÄÒöÕ–ÜË×p!>'´¼XbCÌØ§ÏfvÎñóŽÛm*nµÒa¡êgÅe¿Ú+ÉšçVj­@_ŠI±8_®@åƒ:ør°ÛÿuúzÏe[…áñß—›rL …êfÍŸÅÆgšm ÖíöM¼kb̧MD¹i÷Æ*¨ZëDpàbï…´îÏå%(¢[ð’ä°ø ¨»iê_ŠþŸ‹Þß§Ùg쮲úå„éý ¶;¢Þ°´^hŠ]¥“éºÁ+a[÷€º¤uÙ¦‚ÇߊI<ã.ÇêóóC©LÑAÕ‘ý Õ¤þvûê £q~æe«ŠK bç0 —í•æhÆ`;ùæiQQæWî3Ñz¾z`ù™àÊ,—–hzP™U]ãµáEí)~GqHTJò4ÃÙkp5tß»4*æõ®ûºËüíñYëc%ŠVºhl™î§)'Wí)ŠÜa+0•šT¯|$‚äƒPþ³Þº<'Ç‹ª2ÝxÄz.,Þo¶H )C˜Ý/1ìa*èY÷ ûŸa§º6÷c’µdÇ2ý!?ð~¨‚iÒ ´Äü¯V&`ŠÄðÊ!’ðÞoÖٕ׉ƒ1ô69£ ¬`}’{–&l‘˜0xýObppªá뿟÷Ö”ó¨ý¶æŽÿUr´I0Öü,'€ ßÚ¡©v’Ü>r¡ˆŒô?±OÿiüZî@%°€%/þ9Ce_}e~Ôü­©—ïå}”&ñù0/m:Ú žñ5‹éøJ,S–¸ßÞXœhÓB {.)óq–Yùˆ¦¬g8útdñ¿V³öß¿G¹ÛÅ™C‹¤hÈꨴ~kº cl­êÛÃE Ý® 9W_å!„_„áyÄgE> û;…*çÿñ,TìÞi¯ OdöÈF„Å™d‘‹ýY#œ¹™Ø"`9É$”µŽgs`ˆé+¢x9ñúuŸ[4×- ®É³ ™˜îI­°@$µ(RMþ}§ÁùV òöë<ÈhözE2Ÿ¿ù›Û¸fËFÞÖ$JÔˆ0„éðÒÇ®Øï ý¹DøÖêbP€··Õ–¬Ç@ü#°$oÅl7Áèì±B,] ææoÝüD؃™~¾˜ª‡øD[7`z¡¢qVþÝôÏe/\±¥C.w·-”°TA¢¥Žœ%¾z&,öL>`MReËŠ±ÝuÎ÷tf™»ÌsBŽJ‘¨eñ·‰‘¿­—­Ãdm2‰ØW=zM;I§ÄM¢Ò€_…çøf"Ø÷~üƒ±bXN0°¶:I~[M­,e[w`VC*âßÜELh‚ÿ ‡udÙڤ麤ì8[•­‚ «Àb¢½É«ôìbÐó[ã¡ý÷ù¬®Ï¿—‚/=¦šˆá˜^ÀÈ«‹É1lPí¹Y—âÉŸChQÎ d嬮ôOJç¯ #~ðÏàò©÷=T«4:½ø“_‹­GÔõ“0s œJBÇ»NhÇ44\ÍüÖë£:Ô¤gÜvä»óÜËMþÝØ3ú3»QÕô2=9Ȫ2ß'WžÎ’éóI˜H§®lþ<Æä—%cHœî«)—œ4ž­|\ˆB6]8Í`rH£T ­¨1d/ô¤&î3÷ÎuØRõ»¾õ@µé˜ÿý3E£„·¥í¦W¡;|oýoµ£zÑÎÔ‘N4–í`AYÍ k|`‰N½E".¾ØýoR²ð°ÒªÀ±&~QiÞx1º%:ÂŽl@nÛºôL¾{;€´O¿yÊ/~SþB¤cö!òô¤;ÊütÆ~ü{WJ`¶)rÝ£Tö[Tã¿®AªRýÆ#_8Û$3?sC­Ã íÈžAi‹-ä¸Ö¨èƒ|”zö/'o\\Ä€è8íH\14ÖVȼ,-¼]yåâ.€©Ã§wÇýLP Ci¾å#®ÿj£èåÑZù‡ºH áƒ(OÒZ~œñ¸øTˆK±}ì³ûu…¶}¿]X˜PTb"b2Y¥2"#•Á•ÌóÎÜÄñÌ"Ãë]ˆ=­ 8=wA¶BéJ§ê@‡sÊ„ñ>Ñ+÷ÞîùÁM/>öK¡/ ©ûÌ (Ñj¹Ñ)óPzkÕºƒAÍþ:öùòî—…W_\Fj”Ì‹ñn0ž‰¶r‡œ°¶ÏŒ5ÿ'ßÍÈÓqú3*K¥Nº:£ûÝöþû—‡h-œ±grÂ-½YžI¡v1èÜÚá¿'UÙAkgGÀ6ç!í¸í\r+Þ +“ÎÑù!1ކ  Å~T.ÖÌÓ=ñûµÂqî·¡ÂòV³*ÒøUžQFŒÂnÞbŠú‘±¢%ˆ±´€X²‰`ÉLƒ$5ôâkÙßY¹%,¦+œü˜Ôv¿ãó(½'Iß_ä§Ü"¨~¢bPg€JaÒUÁÚî IïH­­àû+äTÐû°ð%»ˆ?oôÝ3 ŒÀa°;dÄ¿jÊCæ'¬©°‚{®I^óòø0Í÷³>˜ž:¯ãííA2âavÈøÝ©‚¼,ûáŽÒ7I¤½{hmŽZ|š»ŠTÊ •‚J“­ ³™L f¢ÚûÁЉœ!º3…Ãg¸Ï1ûb/e†$y²ùèÍÝóÉ]úg˜_rí–·”££¤†ÎùWDð"ÍnrýtÓ̾ ~æ¥S|R.|G/ºäªüsfðÉÈÂë2\£NâŠk€ÑûÃ+U˜Øœ$\cC•5Ó› ç(• ß÷×BeÞ­0\Æá®> ío…NEùê"4~­3Û$‰wå9¼’÷s@©h8Næ”ïvr×lýÉ÷CÀ©NœKu .û¹%•N[*[¦3[w_ÌÌxhò‚7shXäÍýf± 5ÙotVzGÀD¬ãG®¾½~Ûbp²ýc&+ÐÝjbc}½¶ ×­‹@P1pÊŸ®öXÂ}v"4åßc_I—ôÈYêÅt¿Ê/ÑÔÐÞª¿Oå„W;í•QÀ¸êÆ4§í°¾—XnŸ I6´Rûõúy]OyV~“(¢RÀi‚pQhÍì9goXÂųŸ ¼pw`6ë‡z#ÿJíÌ5ù‘Šîð_|LQçÕaJ0g‰¤õ<'e@ÙåÐùΓßïM`#oiÆ 7@Û¢ 0GPnN B¨œ'arYlrØ(:‡™ì° Ió>%[ʉ$wïUðU/.¹LíY%ÊnÓ–x­áu¶Í±¶öFNø^v˃ë¹s¬žþ÷œF7k p挊0ûêÿ„³1RÕh{¬"u—Ç/ò'‡§k\*ÄÝ~6wrøº€`ûíÁñ(ª¥Q‘Éo´væ¹ÓðÏ:ÞÛßÃ)° Œ³5‚Þ`ÔŽN$% ‹^/ì;–æF¡“—Ûpî%~AŠfž SwÑݪ‚Ï,.…ö´j¢ÜÁíÕ a|´Ûœ—dM[é‰3ÕÃ!œ]?úѺíÞÒ£VŸß”Që‚”?ÜÝÙ~þŸæÕ`é*Ö›·Òn çRòvô¶<ˆNË„A¬Ý242Ú`È}QÓ¿ëþÄòÛŽ#ЉÈRVñ93«Nhíc¦oÞÐð•©=n\È Ù”ÍÜýz³Oº^4h–ý"%8@ Þ°~ƒí8™“°sŸ>þ¥ \Ї «¾çËqᶯr‘ñ5CU„!e}ÙŠí¤Ãα-!4ƹ{ŠG•gX>?Á2™äRpް1àå!ç¼¶ü_æ}¸¾ñ©mâê‘ ¹êÖÍ« ?^s‘D/+Ûœ:ñ÷N4÷L¯wT°Þ+«–¤Su j6Ss̪=Еw‰òPl2ìR~$¼HG-ÍdîZ ¼p±~8­›mG±¨bý0ó³jãËÄâ_†qª…r­ùRD$§bªñ¾ñ¢à51ýJGÕÞ&yV8-‚Œ)N°emÙõ3FÓ¦¿?fžÊ·J*jf»úgùËÿßÉÏNŠHö²´Û1ÀÌ5xµ£ÆJbgWÊKOeøQoå…ánJ2á•mÎ2½oŒô‘¡5uüѽ«ýsa@qeì±Å›© `Jü0rqï5 9Í2&w‹:$áØ9Q=ì;ì*I½y¤B#}7üù¶¯·ƒâ5"Bd‹,°60 ØÓ\-s]-ƒ–¥¼Z¬”wytÿ‘°†]¢ïCä'ã×uÕ°ë:{=îHÌŠ‚ô0 ÌÆGRüL ¹|ÕT¬¯o:ƒ=E£¯ËÁàŠîOÀäwË™­Ó¿c+”ü¹Cã ãߺaí8…Ûw}¯ìíCÊC]u}—¯NØ´±{jÒWˆùH˜Ž7è/9;RÌÒ¨”¨W'Eíán t’`ôlb'2‰«J{ŸA±(zC³èÊRÝ0$åûâ ßc†­Ö}‹Ñ¡Í#:ü=§];kt1ï:ød¦Ry™&Qvõ`Ã,§Áá-ƒ-üñüÅÙ„W_1tâoê2*mRä9ðy™ÊÍ`M&TWEÄ1ìG »Á˜£é€p¸œãs¬Au‰9¤ÿH'NñR^úƒÓþϱZ¨÷‹ûþ°ÆR49™íM”ÒíøkêN d<^¡’µŠþE6¶ÍšœÇ0¥ÇræH·Œ”)î`ú’ìÃ<¤Â_[`ÀÛð¬c}ÐwF鋨@I¡+Ê>Ìp/ZEÍ’ê_Íñ¬cdq=U¤‘ÖÄ qвRqMTÈ0­t\¿¦xºÈ-7­5k]]Êm>Ã7ÉPº‹l çC2ëGãðD ²Î„äÁ$!¡$ÓÅÚÎúdÊ/±œ ðßžoª_7Ó‹Ó5}‰Æ ‡x·„f›ºŒ•ª*}ÙÀ•~‘Z¹P„{{(PäØg"Ú…§Õ˜ET)o®s¦`ôÑs7Œ«š*Ð%UÎÖ­Rð½ÒDÏn‰ €ûôÁC9åáCí4kö&û+Âh'»ðØðhSË—)¹6VJFTCÒ÷®_ør/îuø­(¤¦ñ[é Ÿl’a•€BÈwä.ö…¥wöè¯ö$´Ê §QK±¿^„dš;÷ vÃ1wS>PŒ16t¢ÅïÚ!-˜ù”ù^Tà‹Æãhƒß‘D‰ ò’¹x_ ©Nõ„ÎpÀRH´=ÖDvbÇŽT'÷B%pÁŒ×wXÍÅêz×…TK…ÖáªY÷lx1’vXü=w©*é”Pïó?|ìÅS›ãw^ªz B/u—ÆÄ¡¶âlQÒµ7;_íõ(¼âŠ¿uùóë˜.nçT>…¨ç¯|(üÀÎ0jBmïZä—îŠLwÝ_t’–€­LÞí3]˺eL#Wfu%s!»K„:œcVSø’øœoùQ¨òõ|µó!àº55šì;å5mŒFçͱ5ÇçЇ"õol‚C“EkѤ}Ò'Ð ßãY_bj™Ê¡‡fU)ÚÍ ¼‘vÞhBçUê<ðT*àó× ƒF2ÙîªU››gn% žƒ“:‘·ºäz?׋ÚcÜuF;<êÄ™°l&ZBz²9£šD$¬¢ƒ^«oÎ ‹™¼­ÖÉ2NQV@×báB·™2¬3·qé‚x`Ù¬»ƒð.ÃZ¯kÚ$©Ìª3¨E³°xúIõ(Ú'ÎÑké$¾Vé§­u]›d®pË­hÛ ÿÎÈRå•å«R«ê ÷Ö¬>ð(×CH®ª ‚©Cïeb¯»ä,*ôqz‹«œÜäž Ñ„VÌ'ȬšXqIæŒ.Ôö ª÷s\¹ä‘ÁGd@ílÏ4ýÃÅ¢í¶/S+ ¹}}äàÕÃ9|ÂÞâªãÍa7K•ýN,Üì9áôÀz…,’Šútr|º <ÕáÑ‹6‹ÁAr÷ÚôMI±¢š½&‡a)9) A6EɱsYÃﯟ?®I[Àï–m„µUŒy•\=y` ’­VÒ†IAN|z7ñ Ý"Œõž ;ÿÞr1ËÖªªÍÿU˜d¥4¤£ÓöÎTT2¥˜ðÊ@"Ã҄R‘íƒQ?o.hÄÏ£|¯ßrhuÔs/ß@á:6PÌ09³Åj™n¶ QkÝè-°ºvãN®Uš^ZË­Â>¬–‘-ŽÞêjú°LçÏÀC˜"v¬zjµ½‚µK‚¥7÷b‹‹?õ€)X>÷÷ß(ÛÕài-ïT &Ê.žf Ë‘¹IJi%'ÌÁŠƒ66½õ‹¢ˆ5÷ ÇAjEï7Êó°×á…(Σ-¶º­ÚkË <‰ùsÛ‹ÀvDãgWNWŸN4á=j;ˤ˜ºg‹ÉSE þHÍJœc˶<»¥÷ZŸüV«0ˆk„(`òJ%8‡/W ‰W4òJûµ›³˜H¨(þÞMQUû]v$Ã[ú“Æ‹ÞÆ'ÔÁ4ªõwODÊü}ô¨ƒ‚6ªèqôÀ"ºÚŠâ°¡°ÑÙ*ÔÕÁK ù…¨Õ<5_>“–ß@C.;<ìϬktétÜ*Ú\™M8d ¬Šg^Îô½ˆ²á”Yl¨}‘°ZÒ3’·C²9ZÒr¸[ABýõ A…¤Á!ÖƒÆV¾wL“¹@Êî´”øÆ«\ý _ËS⪠bÌåľ9’RMvÚ ÒçiãVx>âþÌ' —Þ¯0.vnÑœk>³pÏ©ö!Ž©#ºEuúÚ¦AΩBRWÒmz”~‰«âW¬²%Íây?UxJU¥)Y šç,@š¹…µ¥{ÉΖµ@µÆQ[ «éû²Ém‚@ÛM›¶ ÐM &ª¶VK’LD˜i‘WbAM ŠAÜ»1¨ÒáÎPü±•Œ»‚ÅJ[Þ³ü£´Î²Þ+F㊞ßò­†¬ ÈGò‚Ýlßó³IÂ:ngdݸäÜü¸·¬ŸI¦«„UPvmþHóUÚþ‘½Cq@3P™è—¨PNqë)*c‚µÓûÊ¥*møzj¡ß ´°³Stšü[` E%m~åÇ_`h‘å0<°£Œ*Cï"Z Sî$á– Tá,!|©~®Æßó XWì“åÝ %/¤;oáqܘ ªƒ%–ó/'‚À4UexЧÓËqØ$:ñA<0TüJ}¶ç›1?˜)³ƒS‰ç\uTp'>YØ º9K7jD›Ÿ RBìz$Ì7=‰X «ðræÞv:^é£VnοtR1ýð‡D¨gUz€¬DŠ„’7›U­ÌÄQ•L\v’–ÑpÖDL¸a«ÑÇHæ‹KŠ×jÆ{4Ö‚.¬ö„ÅV3ð¥§Ó…Eìc»¿ÕcVJ¿úëÈVø¡o¯=%Âå…ÁóãWxÔô ºmžw¶Vo#WJ#¢Nß蘇z¼lÛ=D~Knq3·)<4§ëßYŸ[^L¯Z¦ûqÎláˆå«Ø¡ö·ËPôEz¡°îÿïÎsÎEóKNÔ™~ žßd¼ú)ŸxW'­ö"ú­úŠ“ƒƒ€Ì%œAÖ¢—2-Ex Ç=_^Ò¯=ðä¹V Nk0® «8篂”ç`E9”¦ ±·{)p–v/¸ÚkdÑLž±›ò4O.*¶db©íÃIÄ>_h(Š/ÓºðâëÝí·×½óÏt÷PãÆ$æ3ÿõŠHX=¿×ÒC¼\‘a‘;íg5ZtÑŒþS4WPQy…ÿƒYw¦{¯5/^}pTlQ19J:7PÙ¤WMž °v‘@+ŽÒÎòcI5fŽœL{ùl&.½Â꥘lÚ—Í”. ˆ­ß‡Ÿ‡b^Ô©£ì„yüV®:m6`”h3jué€ól§M²KɈöÈл¤:öÔPá –$m¡ľ^×ê›pŒ÷¸`¦óc–¦á•Í] OƒlsÇfV@{?L*ᘜuU%1W»™‡”d»¹Í»…QµœùpX‚*ÑD žfùØúe$ùkóy|«§*ܦ8‡ÐS@Wîó!íÈæú­"U5 Í-»ˆlŸÀ©w÷´[BÎÕk‰ÍVä}ÁBYíZ–kþ¨|^YÓ P:i~œ Jv?€”i¢üicYcRÑbÔšá7ïôýƒÀ°ó(6 +†8M2ïÐÄ/Á•ã2ÂõDî%GJìê‹>ðZ(R¼#Ê>=ÿ »Åh¯­ß‹d¦»‹Yè¼1,±<Ï–™âÏ|ŒýnÍÞÉìþ?4€ä ¨…£@ ˆÐ&.Kƒcž#í°9çÑ݆² Z¼øÑ„^ô¥Í¤I´áC*Ðóþã?sefb.fð>É‹­ý×l“1NšhØKÅa ò‰©:•¼ˆ×›gÇdü#'špÏ6/Åi¥oó2@m cBÏThD,ÊÂ"ÞZUäÈ­—Îëòö~w3––f[ò—<hI%1Kxß@Ô§æí[°f0 Uø¾?Lu,*Y‹iå­Ã ð£‹,*>à›»r½ïHÝàÂ1xÌéñt5#)Á0Œ¬‘¥)NÙÑL¶€‰1xzñêÉñ§$]¤M¯Øñrõ!€p¶>¡Š&¨í înÙ} “~×Öj9F)kDä3ÃZu¬ÏwÍy¢vg)•ÄUƒ¶=(îJ¯Ã{‡¹àw:/œùº@ºé²ö—ˆ~ªhMmþöID*Æ–>Ûäã>š±™ÊírŸW¿)YÙe•Ä@o@×€Mzr”•!L’»éîšÂá2ßÉø™2m˜9(Òq KnŸ¥‚õ~i›iÄåÆß߆@ó¯%^k,šcyiúÀ›rl›À!$æ™øbO=v>*UÕÎßSB³zÞ> ȲDÃbˆ(ÌðùÎ7ÜxW¡,4³ðØ=qRhYrP³9ܬ 6€ïp¦ƒ+Bø’4‰b/ ˆîBe¦Æå¿˜ÒpØ+BƒV-ÿDÓXú‰Ö‡NÈSqÀ¢ŒdAm?ÄoSçë-„dÝ É¼QC#kýàdÈê8#¢úë²r`)ŽžÙ&ãìk×SÑ¢¶nQŸ#—¥y3›p™œ{t¾'ªOmaðíp³á)rY5}–]×&P­íY)ÍËLÉüä.«Ì¯frU)&“"î=£=ªÞ A‹BB¶{KðÚÈ$¸°Êa.&O³µc¬s½'¬v hrŸR)§çÚé®ýcÆá I±XfÛÝó³ZWY!ûez:âZ¹¨£îíIn¥Ò$‹ÌÙ‹M‘–iþŠÜÒymi-fW½NPâX!–³=7TÇc¢ZÍâ64h ËAÖ¦pD.ˆïGõ5ùШòù|~½‘ÓóÅ¥‡ùÿT_ã³™•—5Å|pRk ± [œþnïx§Ð¹b~’Ì"žókð´q¼!’Wo†TùŒb¶wLYòX©´0€bç& YI‚Iv%ïW·i]…ÝZ‘sô]øòôí®k=‡ùÍŒ"wpn¸ÜVeCªþÙ6a5À¡Û¸½øwÖèÞÝ].$#+îùKFÞöýM¡…Ÿ;¼áaÜ…Š‘*CÇX7ÒÚÿ1}ÒãS\fá¾–ÀoüñY;Ô}‹ˆ‘´ÄvNE—6›Tà „³±Ø8¬èù‰Ç­qó—ºÔ°}*¨Þ¨1xóQìûgJB QÔ±ç_«ÇTC ®ãe¯6œýßÙÅf*sTþIeÍx'PP]Šw*`Ÿ9„Õ"õMħ0×É*3ŠòJ ¼þ¿fH ñ™†‹2µ1Y ¢ïûrŠÞúTÊÊk4Ë`-pùä”:½bF5j‰MÁ¼ûNž;œŸÕMBðùÿ·äfö|§ìÛ¥ñ+aˆN"MÑk ‘Ùõ`$ÝXeÜ^Sôã;¾lÒø@ïãlóz* D#Ák¢ x¯,Ç{äò‹0Æ*éÜk»_÷2 „Þ“o–B uî¦3ù¬Àžùiì#±FS‹Ó²/3“ƃŒ±SÏ òaݶµÇ €ÁªÓj6øQu—&ƒÓpJØâ˜,ñR÷wŽ8É­ KÇï= Ñ®SNîO2­•›³\´¶¥GqsÌK>@c¡ÁJ(6¢yeÇu²I¼ÉSw´Š1n¼éJ1µhˆâ׿ÆhÁcŠZaMÇÿ e§¿µOÅÉstF>âˆîUÒvî88¿'» DOð‚Ûq¸<[U8õ¹³,…Wc’­ý™Š\xט¼\lv·àÚkžâòÌjKÜ–i þùÒ.©o*”| wµƒ­™?ÎW²ŠÝœÚ 3ÛÓ–…ÀÁ“³n\žgÞ£öcÁÛmxg `0öªä·•½gTñ<ŽÍZp!Ô 2ÇôÓHS´ê¹ìÜãkðÇ8óD2­G1sÈ(›!nÿ?«¡- õš;àÜãñ$kt¿/À–WhrŠÝn·…Œ,oÏT:ÙPßYX,´ÖSˆ ™Žl†ïñˆ ”vRúVãTu""寴Ä_ÒYÀh  WÜS\,™N蔯 õ)ï6+ RçdLcOzÀ‘ñ>«‡ò¯”È*D­‚º^ÐÙ–8?vIŠÇÓ² |õetúmN³„Üi‚u.ºïD~¶ŽEw0ú:)+JR"G~æEk'¤onÃ5{ ÂÄPé*8`Ú‚»öÚ# Rú‚?¤„†‡É:®˜‰p¹ž—Ñ/^=ª*„¡:Å£2©`"äy‡3$)ÌžÊ"A!ŸÄP»½YŠ>þ†ÛŒÂ¿a¼Õ¤þ°DVƒ"À‡¹Ï¡w/ø¾ZÖ3óg®ØJïbµrZÜÔK@Gq@:E`©SæÑãb·¤š;£LBeŠ5æÚÔ‡m9 m^Ôv†ªCår.1³–±²Qðvu†çð€¦†`ÞtK˜£‡z'PbˆU6Ýrgé“—&à%`´°õq~[øÝÙ~´f‘¬Lce×hŠêÈoÑjIg£ÎÃÿˆÐk“Mf¼Í¾Ë.aÝõ§X¾?TÁ³D¼DZT¸ØVÑz-ˆêd¯Ù=ÓŠU;+ŽE!ý ír•#‚+¥ÿÀ¹ ö¡I¨÷/{댈}FÐg¾úh(œ#™¯¿äoÞîó°Ÿ^…æ—µlƒWNgýãÑXþ%ë=4oSÚ²¾ L•ˆ{] è©äA} ›çÂpÊ€¶]¼¬§6–jò¦^ÈÖÎ9š•lDY¹H£Â‘Æûä+›â×â(C¨ÌÅ+¥‹³Ô%(>%O¨ú`úêÁÅŸsšFáA÷ J‡2Dó;'‚ƒØÃ׸¬ˆö‰|èzòE¼®h®§¾_ÅmçP®´ñ…¹–wrP+îA™+!9a÷ã/Ù#Ú…BKÇI/Ó¨•ç-b$ò`l‚›’ƒDÙ¹ æß³ŸzŒí¹{WRŠkj¥£h!»u¯2ŽÙ/ÜPM;•}s¹—k“§/"'ŽŠ¿RMUóµŒrYb؇Ņ¢í2“8eƒÏü–Zþ£fÉ”¬»ÂÀ‚+óx 7»”+›J«s*F„è‚c¶‹ª_·L¥Ù†Ð£7”ŠhÚzJbq¹Û¹dCœ¢©É@Rl³ëœª‚u®¥¿ "Ý«ñq(nÅvAÂeÊgÛâ.¯~þR2ÁqÕäz—©ÎD'k³m·ÞôøÕÖŸÍÖÀ&=4EsÒ×'ê´o*Kã·"ÈfÓT«˜ô÷8ËÖR¼[ͨ\=d#qß`5õÖ|2®žo®Ý@iW¢E”Ï ¥z–ϰ¤€Éáwë© ,dÙçfúm¯h†§ÈS'ž¾Ïë¡1S’…“cî•‘ÛŒ#¦gàц¨ÐÄ©“Ö󉣙¼šè_¸¯Î vÞ©óP c®j~¾K`È&؉È>ÕºÏðÐ Xá«í÷ÀÈ)‘ÐàÐ0ƒ¼²»îm¬¹œ0'S [ñó‡ejà×ÂáZeÆ#q»½©0~¢B5ÁjÚÓ©Ñû2wÞ Ì»L¤xHÞ‡uX½o¶¬²l´»ë©ùÜÈ»ö’\´5@╵Ð6 ñ¾àw® `þ#õ. =àÎ0 ”*³ÐÒÅÀAö¼Ãê´'FÖ0@¿tÕá‰uýɃlèúbþÖfY8œ$yÏ +Õ_`¼=ª-E•¬uĆþöNøÜÊ6—>•Òœ«uC ûíE‰2ìHJº;F¸Ø·ié$õÛ®Ó|-¸·m)ù*Àï1Ø* ‹”« ED@–ÿØì™žÉzmAO ê5ф腖mzZxWQ.£ºBL7ìLø£ ‚Ž»-u<{"ºY³]¼‘yN-?Eì$0é’9®¹ƒkg"Fñ AG¨çI¤§•²ÜöÈŸG7ø‹ìs¨—/Ñ»d™”Ew?ƒÄ¼‰¸. Y4EÞ©Nß«0²¢s.r°è tfDáCb6Ã/*¨ MÏ{„'&xÁ(ǘÎ&ñZ¿` ÊšÏu.–¨ƒ,“AÙó¨ÈÉî—oŽË÷]CRé[b˜@bÚZŒ·üo`í,·F¼¹ŠýQÐÓ´¢JCQMƒ®_£!`þTK´Ì#|=GÏMã³â)…óî[Õ8Õ¢£•|$ð"dé¶¥UñïÎïWXÅyuÐ?ÊRêîç„/rLŠB2‘.®ÐŽd·â)/,Šð¹ø[o—ΤÇ%}¿V¥§ÿº¤åCx£{|Øä­Þa°oœ€ª įï^ý*^ÛãâìT–„J úÛZ‹•o"ýMŒà9½ ZÿD@TšXçÅûœ»ª^ø8fÌ>=•h< ¤îêÛ¥6ÚøŒy ‘‹× Ž­?Wâte; jÅg*ƒ’ê†ߌÇqÀ≻C3â¬!¦­òc‰T.l§åM¾Žˆ¬0$Ö~üdÓÿkíB·9DK™Ep{Ìï¨Q» ,«®ôµ×®Å^ÐX¥NàC© OÉ{E,øˆ—74Ûö8’Ä9íù4êÍ £@?;¯¡y%\ž9è`ÃØ¥X,rêG"F^—sì‹‚ø¬ïîÄtÂZ 4îšÌ½ÿ§HÕ%‹£N´‡Má |àRË÷{îÉÀJÍù›Û»Ðh”´§Qî鉂UŽ¢À¼UÌN¶Ëͪ÷bŒÜ™åw@¨e1‹¿³y{RKò,Ÿápõb"ßtR2L×ø$i}ªÆB)[Cù°$çW€óy<ŽBæRmÉÕ'ƒt§  íÏìêÖ÷a¢ ¿]ÿŽÕ¸ò¼ü*g[[*†ëf­bâ'ñ›ŽÎìà,vàI¿¼[óTOëá£évIˆBÕZ(·Šÿ%*¦w° ¶JŠÝM %ÓgIQ¯,Y— EºU¸#*Ü—Ä{¹jÝíã=Avj*[EMx]|ï÷i§F¨ìòcÐêŠæ–¸£vµî+;>ЛtV”jòCM(„]@eaÛ§;j˜i.—s"¹rLûKäfB¥0Áßr߬©QÓ“<˜¶ñÀb—ÂeЖ§G`{1Ç\yIª1¥Ó©«Ó±yS8Ϫ#e@²‚-æDP.Sü—ÎÀ·p0?Y™–"ã’°Æ®Û:lŠMÞ ­÷¹BJéZ¿sBÁÂäxù¹ë¤®n ‚ÝÉF+ùŒ®Jj ½0e^²¾Eyg:¦ :Þ‡Àމm7_<²f °0~iŠÂ`äw7™™'-µ¤éQ6jróÚòî8v.‡."žrÇA½a5™ë½Iü:ÛÏÂUL¾+¯¿gˆA8ÃÜNæ]SbX ?JSQ yh¦Â{ÜZÆdm~Ôn¸%7Ú…Jƒ2*¡X[vE-“žU¹–ÐØ;xµä²-]bmss³Ôß yö‘Ú‰ÁúrÈV,hóýñXQ7-Ì|pJv.-‹|xÈß/Ÿ¿¬XŽk{¯)k´Ý€{CfÑ@·pöư’g%œo›õϲ|X’÷uCÑ·¡gÊ€6bÛ“/%vP­z«Ã³¥2?y]t>ðWêx\5hÖf1;­)áoÃ'eùî°õ);™v˜jKù‡œÌ&6_¹ÿÇ»5ÆÄRA¹@…˜!އáûjIÙ ƒ9™,§ xÑd££ªØý”eØèŸ`ŒåÔ”½&7À„çõ*Lu—T.4:v9ï©FÚ„§8MÃY EWPú¥@\®|6ˆ>ïhš«Ššqû8¥É_£9ÇÞV7öa{"Ó”,À,¼°“ ®9ͦò!û /OåM‡Þ¢+\¤-N8Õ…Fµu7+F¹O<"íRHê˜K´txéq©ð¸ûp  ?ÎóŠÑѪ-­KŒŽ—ý꜃U›MÓÔ¬>§S(_Q!""iRÝîiÞ;L,[Í¢Ãyu(d´û1(Sƒ¶9Û,\»â²¦^>}ë]{—¾Ç)µZÆGˆYÐ`úZ³nùÆf¦wòË6ê»Á±¤Pä@“1Ü„ÌçÛnYÊ E„¾%Šû(?VÙŒ6Lžo”´&¡«>èɟЇ;Ñ0NvfƒIÌ#ò(5^ϱºÇ¬<ßí߉Þà·N²ð¤z¯äZ‰Ú@O+©”»IïÕÿºÓ­å-Sµ ¼«Ž×â¤(ÎæäuɺÏ"b°pÍa`¼Atd|}…6ú³v^§¼¨w®Ú#õ411¬®ò’ µ‘î+Ò‹CëDF†Á "iE¥bhRÌù—ŸP ¾Yc?9žã±>&ÁóFPä€5L+ÚHe$pz ?;'2ZÊÿF!¡©dŽƒÈÉŠþ…¦½Žf™ânA#¼†¨éˆÑå`+Â5“/Óï§K'ª@)zC”ùov+©Ë͹fÒfíæbPË£Ó8› æ¾ÖŒ ÷*u~»/-øvEMVBÒyä°ÕŽu)±y“õ¸+ì:íè 6°ß¼]ÜüPÕ0ìvJáæ3çtÄ_ò\5èGÅ@Ø\çƒOgı´lp›¦]O’gãb!mÒÜØ”"J "]ô"«P÷­&¡žK|jNdáÕ Ñ¾ Xå,žúƒ2•Y\¾H˜œI?»t9‰qkk*740tw<·üÄð×Äà’o3ûT,§Á²W¡ˆV|„Ý1¦!\[ø(†‚ ÒX¯4+×HQجßuÕ­Çý§’äóޝ'Ë&†§d «‰ÓÉñÓò”¦¯Z)æÅÍ¥&‚¡ÍÓ,ùñkg-rƒˆ}hYÓ ’‘‹^†‡s­#RžóÐX Ãu!V7©¿yº³{³Š vóÃ.)èuã@>/³€$ÞG…Âô8óV5Ž>úê‚ÛeçÇž•] -fé_½ × ¥•E‘̶Ð(ˆ/ékwqBÔô®÷p-ÀõË ì%$™Î i+•$rzÖK– 4 yä&gæxIp:[@$üÖ1zVµ“+TŒ ¶öƆ÷CÃ%X$–h<(ÀV’û¯òÂ\aa×Üá$eNMÿ"ÔroëˆB,ÝÂÀrcP‘¢_Yéð lÏ€Ö4‰‹qM^âÅ `ß L*ŒeÉžg–bƒÛC{1yAj"’ã†TMP6‡Õ–Ê-„“ú©Üì‹óYJùu .¥|2ïÃkyº!¸+AÖ_Ò ·àƒÛ±B›Ù^>ï(ºë½¾9Žûí¦á…Û’,µªQyÈõEMvö„ñ8þ€²«U–XÚBjIͼ(\*JºRuífÂwq3`uÌUQƒQ*ípsè;-žÏÿ>B‚‰ñ’!ßRSƒûÿœ‰¬½ÊH] »ìÖ±ù²¶VÉÓä\Û»*‹©=IÒ9R—&‚òæ¿¶bfKîv£<×zF's©3g΢U–´Iïhâɬ<êŸÂO»=˜ó@ôãχÓvÄͱGjË®¥“w$wøv öldaN‘ƒ‰{7 “œØ¤ÊêÍ=ZEÓÏUB% ÃÏ_ûŠ¡}™Ú-¥’ô™Zpcœùç–re¼Ý"{" ?È÷›u«>d+¾ð¤l Wwâ–ë¼ÑÒµÐù1à ùÞBþV‰è„ªZ B»H ‰¶)"(¶»Ò *‘È—ˆ’̇'ZË¥ÐÎhGkgÿ¼Î¶c6"˜‘S7.H4Ëk'!!Ξ²}þ“À·ÇüÃþù<§ùoX£‘Ï¥¥5Ñ9î‘:7¯   ŒáÌRЧþ‰úW2ê$<¬4ÑSe…¦ëÌ4ˆ#PRQÐlFô åÂÊn‰IÕøªS™UæyóC=EÎKZÒtÕÿ8pÅöýó~*~ìµ~+@PE%$Á·{|ULWsz¢‚0'ЪÚJ¤wÉ^@±7»T‰g+ý÷…û^ûJ"d°¬r„ï=Aê•´„+R¥ÏQÅIMîd¶ðCKÔ‹ŽAÀLö‡ê!¼ÁHf¡!›m É鎹§Â‡6á§¢xýÎB²ÈßìdºPß‚¬þKWÅBÙK|Ø{&i5A%~±ÝÊœÍëA³ Ùâdbe¦"%„«ôƒ(à,•Ëj¸@GA6Ê‹…{¯m1<>Z¤—ã¨Ùï…?á;qÆy–j—­Ûžäì)¥ Up²í÷ꦙJJ²Ðõxë={C) ëéS™2#*H¥ñÆaØc¢,µX<‹šê¬ì¸C”ü@‡cØ–½90Èd+ÛˆÜ_õn›àóYb[`ÔZZVÇ.Ö½!£ HÞ fxÀ«§ýï ’MZÏ®øäE•eóŽkç%ôù¯•.©'Ì1Pi¸ã ƒj잌[.ÁÊÿÌV•ØêEá%ÇÅ\¸/%>-×3€ÜÉHs;Fƒç˹¬K÷uw¾^5ÌL ÿüvEuá,°–}|6Àµ"_¾Å#/‹g•à 4€Ð ZK‚éU†Gö˜o.Mçº3Ÿ°Æó&ǧ.[_¾¡‹ „Dwžu$iëb” '{H!`ê‡iË™èMd#•UŠœª.V,ƒ–ÙUNQšTKm¾\=¢Ña«ì&­«" Zbž C/$£SVM°í‰g‹ÕÔµíQ_â§âˆHÒq/I•ŸFÈæf?ö˜êž‚ïËxK*pkÖ®“Ø–Š3(¹Hð%}âó·Ée² ΀L"æe@Ö3•ÛD²°ÒyÞùvó.D‰"ÀqûJŒ[6qÇp±†PØ—¤ô çØæ*2*-”B<¡7nbh)ÒÙi¨»|ŠÙ»£gÞ̶¶}8üi•]Wxü5aݱ ú©UÔ»èѺEJ9ÿï#’8ºig’2øt Öá(€ñ`Œž—N¾ù>AÃl㔑‡,ÀWuºXó{DÕgffFfí!gúPð‡t‰&£T¶38k?AÖ[6ó¼±n ó^7ΧÛJó(e=³ ]È ôýèæÚM;ñœRÄŽB Y0r..HŸœÈl¨Í`D+± Ù.^ïwï1¿¨^ N¥‚GÌÿ™¿&õí>·}›P;,:Ã1*¸Y› ƒ&XgÅ·’êµU+’ÎÇ>^;;uHo|¨ д3åµ^•!IÖAªœY»¦Æ’¼Q™MuÍé-ú4·Ñ=)s©Œ=ë%ZeÉ÷þ°l¸HŒX´½À“ø‚ê»Ø<ÆKáQÖ„lhRµõ¸é“qwžUG~3c(f³Ujš^LLÄäœ&Z©ÎPû_}pôþZì É&>Ú +®e± =T½ØÇ¨”x+#ôL9"þn6„­Tf„oŒç äó7ŸÊžæœÇ¢±R‰F=þFyÑÍjôЮ4*ÑZ<ážÖX´µû.¼éꘒzþ•Ö€Rã‹D¶jðÀM<ë¡”àjR’Þ9óÐt°/… Fõ_È»ßþõÞêÂ_L[Hé#j-EéÕÃaÛôÆ(éìÙ·ý½ô?rï2Û™×*x%á`HT¶ \è †U§}¢Ü èº6á"Ê©´|çïüPÛë³¹e9ækç´WH4!Ù@è¸ õmî9Yù¼ugHæZÍÖúˆÝ&â‘‚®ùQQåáY bÞ%•&,1¥*XX â^éÊ/ƒ”A”¿þ1Ã3èƒÀ¸ñJÚÔJŸ`³¶ $Dé0ëߨ$y$Ëgäös7ÔŒe,ï˂̯”à l`ë^o‹ý87ìi~wmþl3¹¼uni>‡asû"ă¯‡FñÆ:õ]Â6`d»àNY-ApF~Å®ˆŠMZÇ´Uy’á¿H+³çÍâ¯oÆV,YÕ÷í×R®Èúãœ×{fb¯}óïÕ2G»Õ˜y†èEÒPç&m‡®„­úlÉ;ÝÅÿYø¾œâÔ—0Ûq ÜdÀË¥·ÙTÓw¡ ‚ ÌV!ôñy{’ð޼„ŸÝ„€ üÁ.)ÑʆT_’—8ÛU¼¿3g¿ÅóU¦xP¦sã7÷ éVx1ò*ÚíÏ|€)×s, ¿ÁQ3aE„stßbŽ$ÃfœŠZœ<; À¼,¨,è‚• ¢^ÜOZZÁuÚ®~}‰ÿsµU62©ñ9/r}ˆåàw=S|€{Á1?x5)²ÍÕÀ½o6PúÓB8®Éo“»§÷‘ÿšsèëÖ7ÌÆÿ]mP¡L¼@Ñ𼎫µ¿RðU þÿ©+¬pVI‡<ÚP*ãé¨F;µ5Ëã‰*E‚”)’ ~¯•Š‚áŠq¡Å~É,g8àùÇÄ^4ZîR÷1ë·K¯ž–Íp¹nJÿ˜+bõªBs™—‰ü*o¬k.Á¤FÃ¥…¡qD¹he½þªˆ, 6›–ŽðÈ+Ñ8|.p¿3÷†¤ù1!­EGvR»Ü¹}ú¥)t ùõ=!u³?.'1ŠñýeÐäÀ³ È^~:-@"‰Ýå]F–Ny,^w2sÇÈ ©”"³¿¸˜4Å‘<-DÒžÎÙÜ—›ªòÃéç! '´°]a€“]ImOS?Ð+SÈzÞIœt²ÌðN°Sò- “¡€wÿ.gPˆã>ø²ùOCž´Ññ³5 “[LŽ©î¶„S&6édòq™° 7­©Œ3Ìù¡VD"4pf]$¸|]™ÜiIb¤³„Û‘ªŽù»ÙŠç7Czªù¨ QÕ6DµL@˜Õ¸Šâî¼43?©ï ôˆ{­%Ü+ÿþBBïN7×ÛªKÒÁ‡¸sP‘‰­íÀ,, è^†ãËßj;xDz^Îi'«úÝ‚Þû‚KTð/6á˜FdzI™ãí’h ¦½d$‡Nvˆ©–ÅA@@<­áöà°=˨:|4Þ¢Qg( L"›Å*õL5 r;‡ãúŸ¾sõ,aÛSÕÕyîGð¬…Ï|:arD˜s ÅXE!’ý87-`)m~Z®¡âáLnÔ^.íµOF”"A–ŽÐNW£g7Äõƒ·Rñ ¨&(FØ­j’Tl¨ùV ±ÏPájnUC®íy{À½Ù(ÉL˦b{\5Ô¯ÄØ7®$Ni· ‡@ ~#]üí2th/tʰ¼ÓV2sV09]RÒ¼ê©@›Ü8/zÑþ‡\fÝÏ)êÒ #ן™Ð¬¡g²I×å¸KûKå/üÀ——ñMEŽ´µÛëi 쑵b5ù Y|aÞ[’Šƒƒ‡VlìRñJÝàîh¢¡u}ñÊVî¨*rá6âÁⵆ È2©>³`1СéÀ±%ê·›— ð6š‹êº ‘ÜyMŠàþáëág #JmG÷j‡×Ó úe}g˜BNô´•üTéT(n,#T÷³cº!ZKnó‡ÃrlqsvyhǼ=Éßc¯ÙT½!ßíQ³¸JÅl½˜¯áì´i[üά*Lj™@tÆŽžt Í^xe÷ƒœÈ"æ>,÷á«ó%:·‹D9f‘m-‡Ÿ’&Üwf+ì%‹2ªšÐr[5BŽÞ$:uÈLG•—‹Þu‡Ï°–¹éz¨ÌŒî¿™Q]C ñ Ÿžn[Ó‰|Ô|ÙD§ïmî{ =±] ¹ïCØiÕn¾N‡„Ä_4h•?ÄNzÏzv²‘Ï4ÔóõjLÅŸM…¿üW³Þ†PÍhJ‡cRˆ¨ô†¶Ø×»=$¬dxC3x² wnúsÞ_2xªQ‹*¯°aön4ÃÐæ;§•©_9¤ÞÙæà,Ü-n¿w3_Æ„j_>x˜û:êV€L§½í¥cGgÜF·!‘;èu§–­Ô%ên)VžiôÐìqó‰’nZÄ Þ|sYe óî|ýí.&eŽZÐx ¬(»‘KP›^Üâ"Ή®Ýö+ö 3¹5\5Sò3ýäC4ç.}ˆþøf6¬jIÉȱEpÚݶ$³¦.@[\âЂnI’:‡àÅ m4£úYÑ„¡{ÛbH¢~÷ñë+*Ä›ŒMÑdy¶¹øA£ ýð3X/ÓEå…[qÈ·1©³¡ŠÊª™ÉÊpµyÙQM tûÅþÝ‚¼æ–ÞB ¡-å!3îpFÄæ“û»û´Œ¸†&±^5ÌM?¬î¬Ÿ±Ù(&”t”< %i0PN¦^A³F%úx¸PÉȪ"šAÊ!Îþ„›'®r® |žˆAÐ!*u=œËe:Ì6x{TŒU4ºÈÄ·¬¤°‰¤6ê#2ü¾/à›Hçìÿ).ºœ?LèD»Ó¢[YÃüBÓ!£?Ë 7ú:ëÊoÛôXÿëëG«Mƒåk*í‰I両ÚŒ3µQ©­âFTYõûÞ«}Q¢£5""ÁµQs,y€ëÖ˜ÑwÃÔöóAc&Eóòᵇ‹žd4ž5)vc;\þ’¹•ph-h ¡·Ûßø PÿéPÌÊ*JA…Ù ïå¢ÿì!Ï\Fpã‡Lt3È.ÛdŠrv;…Û"*ämø@ sc°ìžµv;WøTk§e%*taNlï0ÿr+)´ÇM™_-vq¼YdéÓ?£KØê•“u%„ó14À 3¯…*cË¡å,Ú¶Y=˜ŸË%¿”À?BÏš?•¤§áY—»5>¾ØœIšÈDQ´X<ÒŒ2-¼½¯êÃ1C-÷¤xœˆ0(ÄÚ£X­aa[ML:dOÐǽ€ü×kú8f… EÆíéõ;êµBv¦‡áEaH9ÿ‰æTªÙŒ\g•Qlk¸TI«Óg¹·M$ ì˜Ù,;¸u0jD’NDé5ˆÚBZßeSÆt¢Ÿ<+겊_LÓ*‰Þ+u7º“¢?ä®UŽ;¨•×¾#jƒ;æ1”ErŸa¾Gæç\žd ‚ưéŸÍÜH>/í‚*…¡ ;Ú©Ìëe¾&õ ¹l¶î(| «Á‰9ªs¥ï½Uz”@z@CüÕóËsâØšTpR"¿|çŽðÍG}E¢2¾!Èl›çõâØû¤f~¸â°9oã>&µÐD”.ÓOƒ…îŠHÈ^é6Mm"LUòXÁ­úH|¾<ÖKB]4›ßÌòŒ…ï÷ê¹’Y$Õvh×ÉC…ý¡[ul*Že˾¸jí]Ýò´ÎÞô"½@”b†Û6ÈM@G¡2ç†éƒÿŠÎ&œ(²Ì@¾oï ™= ÕáÙî¯Ì^*ºrŠ~^áÒëg÷y–Úó³½8kl¢Ç V’9¥ùvÈÜužQ2‰GP’ão>^héL „¥ç>‹…¡üÄ\Ÿ2ÀÑv¤èØ5ǔʠæ½ëð~§¨’Rm¡6ÂKä b*žR…`Ò)V¸wèN!À½û2szv.4@Jù“‚F'®êW„¬^|x®5˜°Ï#ïE|÷ò2²™Ÿ·T'tà ? x‘™Â|eþDdVëé)A¥¥WŸË “#¶ÎñÉàš#Ýþ,Ò)ŒG¾/%ħԆ2ötŸfV—‚Jï$}ö®Ñ¦:ï8çëûW@S9@Ù»I²½®u­uQ¢;øÀXU¤i©Û È&M7‘F‘Íþ»Ú%HZr ãMËýЙ«‰ ¦ݸݯ‰h%+ à±ÖšZe¬ ‹ÖEšGÞ=l[þçd'M’׫XGÀ˜Û5°Û:湎ëΗûbñxÉ ‡xxñþeK¾m›ªŽ`2ŠEKÿ›ø0õ˜ž½D–é+ä„ÇæŠýÍѳ°œÉ ? ý‚2¢Jx³ò~ÔŽäï2PàþèÅuEÍ„r$¦!>~ö¼Gð >c^{C¹´ÝO½â­þÙS©÷×³Ú eË#xe¿1*àTÓëÃOÎC“{Üer¦ª.•Uáì/PÊ”£‚Û#-¿ÌÅ~’ª0Á<4M·ŸÊC˜üM›¢¤®ÍeÓçÊÞYµÏº“Qé#¢À¼Û¤‘&ÜÞOjØšq{g{½ú¢Ik×Dn=Jw=ùq$Qs¿;²ºxµbà3 »AÁ„aRÑ“H¤Pþ“Ô ¡`LcˆåŒöSÚ!'Ÿk~&G»È0„FX@t¦g6ùÙ¯¯½gµ¾„$'÷Å$t™,¾QÀ¢Á‚/t…ùá5Å¿²N¯A¿ØC¡Âj—1ÔIQ{22‘W X‹FÊûºÎŸ³©Ã' G‰íÛ†í‚s.w누m)Ý–JkûWh‹IT!­Ÿð# Fn½–.¹&>Ø× β@ùÐ Á´äŒúi’mk­&Óc¼"c±Ó„J»ä@R¶=ö)âòS ÓL®D«:ýž\MgÆÁÍ•Ë B,54 ‰ð-P§1 6 ދŬLéA×Z5!¶Ì‘¬ˆÏÕìøóøÈÖ‡ú Ì,@Be´ Ì ‡ÿ°›ÅøKDzÛGûlÆÛ-e\&dÄúÚ¡‡`ò_ç&î3A­Ý}wÚ ¾¶Ò2€(ºeQ²ºÞ‹w®ƒ¬T§VG66ŸôúèÅÇ™>’S/þY„qSÛGº ¾FªŒ%óúÇZÌÞþ{ùÒ}Ù!·t!Ñt}tƒ¶Bâ>µ¡q4»Pä7æØPVÔ½òå3¦m¯ Þóœv~Nø‡zòˆ*.Ôz­qsNd‡B"|(Q«îÔ´ò ¹Má¤EzÕ“ÖÀ(-Cu¸aoc€• Pª&Oñ']X(‰å˜þE³ s´ÛÃ̪ ®šósWEgmÛyЇ¬Xík¡ÜäªûÐՄ΢KW¼ªnsvÓ7_ž¨ÐøëH!BÞ}:B,ª—öi2— ýæƒ"A®© ï|¥]¶÷`>(û³ïu§E×À ‰¯É!KãÇmÀ±Íœ ’K•Ïõ¢‰üФ7Ϙ¿c.‚‚Zúü'à*ƒ÷'˜£ÎÀž`Ö¤ÏDw*»œÓ±*¼ÇÉxš‹· ¹I‰ÛdÐ~àP¦ä‘Åa oC :¥ÊÄv•ûNL’pÊÙ&+)Mb£EÒcªM²qúW‹ÒCÙSQÙŠt:í/ÚÕ½;"i’Ù%ó6Š”‹…¯Á4ÌϬÿ å_ú«ü |®·]¡l4$s·XéP>}à'—íÃ~+¹¯ám¸ >ÎÑ|4É#D h¦Ã\æ)‰å•»R\þØPdõü5ç÷Ò”‘MmuEùš}±¡Š[æT¿›Q±=‚`í¹°yPû–[””½dã:ĬuŽÄVY¬ —,{÷ü¡‡(v¡weîp]XkÝl 4¾M uß.Ÿ…öGµ'G²ùdMpΦ1ßõ9L‡ûN•°™ÌEóÛñ6%›‹&ø _4‹-C?µ=~’\T/ çÃR1áú[¸½­ÁØC×|Þó"ÐÉI!ˆhyÀ ÃÝËš“”ˆpÈ—ÌQ·Ú{é¸Y8Ó’Ï%$õ0A¶O…pFwJ_zÝ_ßcé³|’§ È)·.Vö øAÏËÃ]*V»¼/ûHEaû&µá¨2Oëè"ÑÁ׋°1ѽsO,ÛÌÊýì tàEe(ó׎±¸{9{º[ÉÛÞvô‹#¦Ì†EÿGŠù/XJœí[(غܵë:5‘ Ë›œÅï°"YÕ•‹‡’Ï­î™ãÇ£w1N+Ù”c±hÁÁ´±0.‰QH ¦mäo¼u¯PÂŒÝú5…OìÑ¿λ¸-àu~Éïä {Ü5 ÿs$$£iÀz¨x}ú©-ëÞ­Ùf®h¹÷áC?ƒlõD… ï¤egópE£ƒœx{ˆláOÈÁ[Â_ê)kŒ'l ü™²ï´Nb+¡ —ô©_•lñÄÌ×§<ÚN¶í»J¸½Yƒyµ t«´Tö¢¿I²Ÿ03¾i*Eq½ƒ€Ð5Œèc~fN%Q|ÆriŽ µ[z#ÌÊìN,ö÷tG\,O…p‘:[a»(lÈ­³ãöWt’c%ïæ ä7ãÖôô½ßAâs¦Ày¥Í 2N©XIKï³` vøULJ ¹S¦3âJ°FÐ… P|1÷'Ö?È*.‹æ“ÎëâTC5À*¤g3,¤ìÃbJg°ìxXZ‘¶fø—ÐŽ} -!Ø ë=ýë ¼fdß7m‚¢äHTÃAƒ˜ŒÏ3*”F’±QÂÂüÛƒPÜ»'oœKù÷.–5]i1™oì÷þ¬e6(GK0Ýþ 4"ШZØÒ_Õ2·Z0 ]ØY…¤Ì ¬B'÷9^Fzq3Ö9ÛC88‡‹@Ní—d\‹"^RïnF?Š8œ_I'sJZÑ #*ÖýÌ’àÖï-À¤S˜¥6ò/ÆaCv‘>Š5bã+Þ× ™VáOýÃÀmo¤}©'â(/x ¢…#ú„P³ÛéÎiD®¿)°ÜIJ7Ñ ¢ùDÄEûâ#dD§¯Fº±øX#òÙ‡ÔôÇßárKRyªÐ7Ô2Íÿ‚.Ë)}.£>×ݳÌ÷þ[$R¿í.ØQ1ŽžÅ7§øein*Ú ]?xnã«kƒ"uJ2_I¹pÎH²ûÀ¿r(âõì ðl¿Ö³\Ê?ШnÆ‚ÎlA3ÛÿÓbÙ|…ü.J¹€â«±ÍnéHH ö!˜´IVÌÌw}¹G’vz€¸ÓfhMýfö | kº/«Ÿêì=•aH†òï.Òø²zôÖr@žK™ª8JŸ±8 Ä }ýæQ %{ç_(^¼ y¿u’,#CØtu¾ñ:GP²œq]\¦´8C¼ÆL‘ÈôTD2è€"ï,µƒ1NE9#0§jj®–FËÜ«tEX€à`Ð{‘ÄPzÑ%ïbñæo‡mwòtñÎtJØ\TÃÝ4 NN&ÃYHJÂ' S×e5å=Ö´AE2åQ‚×·ƒÍ<Œ¥G¬W2^FMÍÄëI1Šýuv¨X©Tx[ê(›KÀúNnJ­!˜"Фj¦u3ª$üß9ç ˆÀòîááÓr€´m„Æu1Àuø<½½Ä‘É©U¿¡¶ü×]t³-)“G¹ü&sÔ†e Œ&›²Ÿ51€¢+‰Lšó‰m ÇïYY™°g²—šæ|$ãÀ''§]9û‡ÔúW÷åÀÐ ‡T=ÿv€M<†Ó‚ B%½æà ýGÙ=¸¯LŠÿB’<&ïVþN*Êz†CžÖpš'¯¥ ¦…>­±‰ \X“‡Æ²°AföÏÞÎŹô)¹1Ëx¦Á²G=œð[\`Ñ"š"äl 5YóDÙ\÷ÈÑ~ç)ÇmÂÄÕÿTÁ=¤…}dQœÏÂÙ-a_b³ÜJ|¯º´âO]…F2Ôÿ’u›?µælq4Ž/ Õ.^æÒqФÄmÞø¥Á”m{^9‡ƒ\Û+n“_×O oi ÂXËì`ÞÏÈÉq½î´½éò¿é¼:%¯ *ÆÂPûý9n´™(È~”]üb8[;æ cãÀ½ìËuÈx`s›aµ`×ç}Æ,‡D•>H)3ͼ |¨ bÓ‚Eç×Z&Ã@Õ>,E¢«ÃÞ,ilú˜°ºô ¯q 93òŠaô3mëß=/ñu¾.?Œµqıž£ú1ÞD²Ô·VÄ¿M"~Ì(ùœuã4QcUX&õ:DÆ‹´)!L±÷Ÿ°¢$ðÿci¶pÓÜ2⬮ÍcÙ’»rɉã²x¦\’2“¢á'­€¼æ;-´¦öå0„tQŠ)0}r_mØò%'ŸàóáDeFþÀþXåõ7ÝÑ:ùšåØ@§/× Œ;¹5 :uõ*~¹³L7Ç9?©ßbη,«ôÚf:S|a¡]Ç£¬S§Üís‰ýœ„ 3§Oo† "à0;»'ã­Çù.š¯3÷Î[À!$¾SÐÙÓ»0mÜà 'a޾H47:?ŠW·’x& ¡Lë†Ïµ/MÎC û}¼X6jü°k[æk ƒ³„aGMpiäH–©•"„>¨qÑ—Ï6ÐîüêòqGå²à¢n-AÖw+¶p‚-ÖFwbV50pV„¦¥r¶—º±s¼À^nM”@WJªœ+xŽEìzœØŸŸ¥›3¸¯qÍ6ï1–O;ÈVñ]–î¨ðd™ý²K&fø׳@'á!³C '©+ìN’¯b:ÿ\Ö.0eC*=&Ôì©ñ2W݉|va…\mÔŠ™’˜œu½®Gºk`aîÄ×â…ÏfÙÕ¯AÛõÔë¤îE¾P“ŸäûÚ¨pX²û KûhôR5kÿ X߃Ý9Ÿq40¯F½Î}šGR¬V6>OðqÚËWòŸ[%Dw‡åT ;d/âEdÄ‚©40­·ls—Ü#üqfD"Zù”x¸ØÔX«{Ua‹Æ<üÛr"¿ññáAúj/·ÌgÈçŸî™ èÇÝ  ‘)6ë¶¥ûÂa«j]Ö+¯éņE¦uëZá΂®h÷Â,_ê:ˆð„„A2VORpâtq'†<϶(S$Ùùu¢â³H§*ƒ13üaxŸ¹‰=µ™‰ww 04n¹C<ƒ)§`Š'RîNƒRg…Öª¬lýjaü§¤jý«l°cúNƒsÙ@ qf1õpüK¹CôOÊ;ÇRÛÒ‹®à=(Œy+ŸüЫ ëÛÃ…X!-C÷ëkåo¬oqPQ#eæéDŸ¬p"Ó‰Q•Všg¹ZÇçpæ‚Lª@"—„ä_ O‰¼rJ^ÁXüŽƒ@=®ª÷ËeHJîaB1ÀÙ€”¦°È|Åà+ñ‘г²aqˆxÞ·ÓR 5åÒhÚ s¯¯ùçƒäOSïÖµ±âf¦p{†`/—ÍÐôÛ4œzG•¬ß@ØQIãÁ'nèZïæˆáÞ# ·"Á k IhÁî1B/³¯@&Š¥!ÊÓJÜDC×Cø¹ŒdøxË€ÃúÍø¥Â%ÌŠÞ_‚5¥'öwGÂh¾4¬Î¢¸ùƺãR &ÛŠqVý´r„ €dM©¡áÔ˜[K1¨¼‡ÌßM ¦¬áNæÇsULÑ|·´69R{…9VÌìÓÄÞ‚ÛT®ç“`D£Žqá¡´°¥—ŒLA)éáùf³$Õ± t¸fÔçªUJXà*§›®ƒ §·è@¸m =0˜Ð¯ÀšH¥j³b2Á@½áÎpË©É*zG¢d÷tKÏ+&‚mF&«/X&FfGôk¾;Y-Ÿ°RåHâvXôSÍÆ"ËrÕ¥IÈ׃"'ÚÓOXî9mà¦<á1Y|5\L°?‚M3Wx½i&Á[51𪜓+Â=wš"!þ[ð4†§xÈÈ ‡U”q… ePäÃQr^-~ „k³!lͳJ|æùuç!ã.¡“uxß PmO•ö½Þ~š±‘âӻˆ²Û¬™•žæ~H 3É¡4‹;4ü¢x…zÝÅN‡èïT;(úëI•®^cÄ`)2²?®@º#ý›£cv—øó]´3UÒëaAW'q-þò‰Ü *ÈF!é•;©Ç^›´€‘@cK;§SùÆïH(M"ÆMãåíÆ5g,TƉOøÈ™p+ùýƒáÚÅÞL‘ã{ÖAõDfL¿cÒré5ݺ¿FŽ ©¹¸ks(.È£ý%˜Æçß%T4„MÅ õDÀ<9Àôöë[DÎ_?ˆà”§`­Yï»píØ Lh3 ²ÌGÔŠÏ㇟ÈBù Ü8ᵑ¸Jˆ‹FQ¿Ÿ‚ä¤ÜWA©-“šTÅÑgGå’ù ò‘‚+Þ5ÌtgMå¸]Ÿ²8IrxÛ×eM^ä°¢jî2˜ùQìÉÑ¥„ÀpïNU¾Zdù„üÉíu‡Ï 7ÏÀî]SH–º@ZÅÿ”_CЙG}#€i ¼ %L‘¤sI˜˜ÏSÎSŠ3ÛÿñºÉ”,f±¡¤S®wáºÊ%˜ðO OTÒ naçÛ_Zóú¿ÄññB-e#æÉjc$Gÿ?üZpjãѽAæ<ÓíáO•{Fú¤%È—î2ÆÐÎÅoï‹áß‹S ™êÓò4Ž`ë¶öeèÍôäH_ém‚Ç ®ë`ù‹¥˜®ƒ^ÌdÞæèÇì?º†Àô“ðè'£™Ã4ÞOö^ÔE}ó@J:ò]Õ«‘#qˆ'öÖ5q»:žg–‚ù¢—å¸'}–î5¢×LX ÆF"Ú>å:uÉÉ÷ÐIþŸ€üKëųTûlv"@.øp}>‡çj@†¹Œª3ö1õ !c®‘rrs7EGpppú ¶~ò6p6ÿyôÏ =Q¼­ü¸t¿ @KF×QþTú§µ»ú-|Ìè8&¾÷1lê²Fäl) Æ¥%Óf¼ü×õ·ÁuwîÅËúæ¡ÞÂ>À’’ti|E žÝ!ë ÕΠ i£.o Á(¾ð¼pa¨ch&%(~.¡a2 ô-Šu®Ùœ"ö‘\B_¨CéÅá)@W¥‡Õ,*æ]ßéñ¼pàNçûs‡$˜‘©x»c÷ÖAõF‡írÑ?9Ç=ýŰâ¶~mωJÎ7ƒ€ÇªÓÁ¯¨[δžâŠ&òlfÃJë9åUšü,I–,5 Ö·×`6%žÌôÙÄŠÃÛžè¾ïÿj÷œ{cÎ.7¡F´z.t-õ ýAíOŽºÇéõaë±i¶- Ï[(‡‹¯L¾Â;s7n™ƒ^NÔ‚mÏ(oüµ1¢wüW¦îÜA½éƒ1!Iv¬‡z¼¸8ö»,äc®Ì7øžä›gŽÜÆ¥HÕ3Ì úøá'öà…‡K>›o,1 ­#ÀíÅÁi ìõÑb¾…_%ÿ‹}ýnÑߟYÂIlÚ„ôŠCçA—ÎÓ±ÇãióreÙÅǯ^h—¦4.œì#¦=#µå<óÚ™Ä ŠõñÀOÈýÒ‹}¬+hæVëïo%HÏq®Ä& Á®Õ ¸Üxf#&åûkÏÔÄ|$¢‘oøYä]jÕ}£ÈhÔY,ìeÕñ„¸ 7T@®o‹>¸»˜O©†UØZ¶2 Ý †(BÓAT5Vz]Û}úh%itl̨]¹ËoOn½'OéÖ¡å&¤ÿ¸ûÒ3Øp‡º‹7i:Lp¹wq¡©upþª¿.3{æ[ˆ‹Çç¡Úµßv!{“ÿæ'q°~ˆiª!Òg·ó„% jJ]… 'Ú[( «ƒ¡ïÌÈ7¤ì©³l.»³Ð·VK¦Üy7rWÿªuý‰ù<¢–ÔH+% ƒug3Øö‘›°ŽÉ:]N(¿ ›|R±ák>QjIdcR¾þÅ"øÆ®VÐsôÓ@.!ÕR+…°UÁ¾÷–½È¡B¨© õ…Àœ|‹jÿ”@,›aZúºÍù+iZ%–±þ ŽUm*aÂêÂËuÜSR#-¢Ýo¯< Él@Ý.ÌglOkž” iâ˜)öÊr-át`a‹³êì@½‘CË­Ñä¼ÀÖþh£Íø¶5/ôA’µgàsé›Ïø¼Ö,BÑ Èþ*e [’-³®Ô–¾'|Ôñ%"› D™}fÛhá©Øo: MXîÌ8ØŒˆˆgR¯¡Ñ³I0‡’ÒÁ&S[þ¾äÎëõ‰¿‹®DFS½än와”«ˆG1µ|~õ …þ8\º­@ÅdŠ‹oA@r§M!b¼zwwž©ðL[4×4Šâ*ñ›+8õøÒݹža{Ím˜?ÿÏT¼ß·'Ñ2.¥-Bî´ý¡[%¢Y,1ÐfÒ¶ÇŒââÓƒ ʼÚ0¡R·ãÍ6‹—êÓÚö_âuŸnh†£Å"3ú9´Î m¹pHL‰½ôc¸ËÍü{ýô¾ù9#—ÔB”‰ð— ÀBÃÉ\ ®=CèÞÐïEKK·$ïú@$›_÷¼*#|ÀÐõ­?ãú“^‘Ñ»«Û>·E½H„ÁEFO¶_Ýǽ`yúcØõ0†& qÓd‚w¢C¦5e:«"Â&.5°PàTû:\ÙÛ05ée\=g­@c¦°r¾ŒÒuöãJˆæo·’&,DZçîRÛf5……„Ôݱœd`¼Ê“\žA¹HH~SõÊHçÛü˜¥9>óÌi¯jæõ(©JSfÉaiFÃ4+v*L2oЂ÷Am`qÛ½‚Y>AUUä°ç‡ Û!ÝÜkß8ù`⤶FhûnÑBü}†&lR-•lâjý÷ÿÉžO¥Ð¨¥2Ë1¥eC@‡·›â¾11üÊ_’¡¤˜u fû|ôGž’ÃRxû¤CZþö½¹1qwloOë3±ªäOŒìv„B®Anf­[½SQ[ó—C^ؘPÚ§ñ‹9ÝëqŽy7¹Üî­™K ˜³.+ë㪿“°;Y ·ø1…É(^ ‰3Àí ˜Ë€ €²ºYè½@#H#÷s•ËIZ5£€¡UåW'H¹Ù»¼Žô+˜Ú{úôRUïÂ¥<)ÊÙåTÃ"ªmþ Æ)JŽˆmÿó]bwU¼B>,Œù<ò—«,wæ?öŽ<¬q•º/æ[ òf“ø‹[š¦Š5Ôø>d¯E½iAWA•ú;/ 8À£¼¸ô;$ÈÈÆ|ueš¨_Ù‚´õË£­bìg·Â óî@Ê„©‘s?ÿ - ²{ˆ.µñbR ”®ÊT‹ŒÅušæÓ=ÒéÔ5“Þ¿]G³ ‹®‡ÀGÔé`å¯;úAØRwPö;ßâ½Ö&öDøXa·:7Í5 -wºeî¾BdÏä)ÂW¤t{üÆÇ=óÔÚEyKÒiv"¤I…vó‹áˆfÙ»Ó’SÊâ(~{ø£‚™ï1š0ÿ¦¼>³¢ƒú¨«È]ˆ)FU¢:Ÿp×n#â¦`úÆ'=Ô™é¼S˜CO wb`ú5l֎yÄŠ±d š Y°nm%&™ÃðV! –ïº%£åò”3Ý ÍÕBõºá†c–†$ÂD#]P;Òfs jȆ‘ááëTWÔ,…„/ l7–êó)=õ5¼QÔmó¼*7YæWMÐYÙžÊ`Ýó[ ÄÖÚ8’KÉ ’Uoášbžf$Ö7Å!epí»/:5’Òà>Àª¥›ìˆN6÷¯éñ ?óŽ&ƒ$³­’3„Ã2è#KXÂç˜ÔZ’šØLÁ~¤Hšd3‰m„¦ž`L_l3ëÄÈÌoOUKx¹a€Î,9ò˜%"žáAøbzvõ1fg—¬©…÷4´AN„gx ¤ç»Çe¬P(ÔÊóì±ÖþÂl‹KgòÛ¥|ŒM4zx$?¾óÂTp¼ EùÃQÍ-º¬׌Âé5:“Yæg¶&‰@,S“W(>€Ft ôCL‚/Åõ¸¬+n©¾@ƒwþ¢/Ý÷Š–©f'"Ï„eqoðòƒ%3/ º-}î´•-$Ê%ÝR)ÿÕF‹#ü÷dbß\éwî -ŠaÃ`¢6‹¤In‰¡’ˆ[Ò¿Øowû&×W>Oü±QS€pM*Ñdæ wSá%ßú:(  ÇÙD±¬a€…ÍS³…õ¦ðà¾^Ç81?àu~—É[äuð ¥PëãÏd´–½Íª‚1—¹59ìÐ=¥?}½2Ø\?ú-q߃}_áñ¿ÕÊ VÀ xSY+i¦2iB"CÅ;Š'ÏL!çÕ¢öПybyˬڊó’W X<ÑpîÝß$=­RÏçœÍYS>Àæ_ì{ðO*R¢2Š“œûµ÷†3žXËð8ݯØÑË8nH–ç±s×ô lÑøàfwy“omä ¼›7Œ}ãA.4Ý»|^ÿ-ˆÏp^ÿ¸ËU¤…k?RôºÉlËGhÚ?9!D[Z·M#uµZgnmY_9žk'WÞ¢ŸF¬¹‰oÌÜ]hdŸ¥éXÄÊ`{tAªÅ?f§²ÓZB@–FâôÀøxÉîîRjóÓ5ÿž‚K«R!Fc•IPü\íD÷=häõ8Øñ"â^_Z"zÊ‹xàsOÐ6‰ ñp»«Ç[³”9?œðtíeö´ßÐÈ —Þ¿Çÿº°lR"3×[JdÊå7(ð&‡çr3â>‡º 8¡Šâe¤%˜`ˆB-ƒ[7B›Š°µ,D*ÇÅtÇ#àÉè(ÕÔ‘û[Ì5æ0ÌP1#˜D°vÖœV TƱ­Ö }½) ¦W7ö¸3ºËN9CO¸b~*uäží`kW¤‰:ÀZM¾Ùûn;E rhÿ4ÃAÁR-ò­˜¹5 sK˜·7y·O¾Ú µÁ‡L3ûî€mÚ÷4AÏjEbÛž@Ú}4(6ƒ‰[Èõ}àø""ÝvR‰©DÞùÇQX•UàÏÃÁv½4Zµo<(ìqZü)&¢a‚Æšª¸U„o½1ªš»7âpÞ–©,ƒæ¨ÂQ*óÜs1XÂ+‚Ñ–?0•3Md{[þŒLNïeÅ‚>î¬è+·ônrðÏ–·ºc£®M'­#]Jn¨æ5ÉA³.æ¥Èݬ+Ü]‡ˆØ Ò]Óv”Ù¹Ô±ۓ@~ÚSëºgBà 3 ˜†pÉøåÛ󭢫û¶Ù'ËîÔ@…q TR%8ÊïdÓŸÙ­µ+‹tTt†Å’´ˆ«¡ùyóØ¢ÕÓk™D§äÛQX;‘³íd.U7Õã¢ñÀ@ÂÌÇDµ!!êŒ(¾"§J–D©¢7{|8°ÅIôQqÐó”("P”¢ ÔW%`Yws·áˆ IMƒI¨)0¸ƒòÂj¢ÝpÍ:!ä‹è{>Ù˜¸T{šùH~Ü!ØzQYRËÀôÇ\0¶"j®O¼hwi<®Ëp– ÖBÚq÷ºQQslzI‘£šª‰…q':@úúMßS œºÈSŠý¹âAªžš6ižëÂ4²@¬3°þç‰Còëú‡Þ¹[Òå’´ôÍX¬„©Ó4‘ñyI*%©×uy¨ª5-³€Ìª\ãI˜#E@£yÉ9'$›‹öKÉï”m—±½@Ne•àEu Ð×ý¶Ù›ëúüÎ+ÈÄðq ¼7±~»&1F7 œP¯s7Õ|¿mSëTê=žÈ÷}nÔØ™Ê(à×E9jïfƒÂNžX­Eªø†×æµS'ž('kß+Ÿkš°`4Â˵[»´Å÷\S.ß©øsÕÖë9±ÄæA%AÄ:tú戒x¢M"ó,©Íxä¢<I?|2–Ç:龬MG‹Š¾ÝøÒ¿ÿ¦¼ŠéK_‚ÓnÓÈR®LìÒæÑ8Âù *¼Gúí• 7]æk‰œÆ {ãà£RHUî”ö¶®Gժ׵ֽ© YI×%ýÍ0àD]œ m6OO6WZž‹%$Æ>¢Vb¥r].æNZìF ?îº×#q‹ÉçÄf';ù}¥ßŒêÜ1ZŠmlÙvÀƒäÃU§ ×Fd!e¶þýU~#³dº›/ÎÉRõÜ¿vÖRìë-„-þq×DZqƒ,Ÿ8ïÿ×ÝM¦,„[}ìgÿ&»J•¾tXw}»šÇînÞtëÛgƒ‚¸ì„› ‘øqî´èŽ*ãg[µØ![¬ºø`QjÂlüNÞëÃøÊ©ûÎg6wwÚS¢ ìhO\.Ί­j%˜ðÀAm&~ ~ò§-ƒâ¾(›Ò€~Äp¿p¤·…ÊÂý^´Pü>>•ûKŸHo^2m0˜¨ºü:(…•ÞŠCU&¿÷u{’M‹éP÷÷ú9@‹mzv‡"æ/}eùoÉ¿¡ª’ã0eSÃ÷@Ý>eª¹8óã(ëaôØ›¹ œø7ÍЉüäl3‰}ÉãÓ³ÉTón¥ÚY4˜ tù‰¥ifìA1ò{ºä¬W7±wV!½0/Sô¡Æ°¥ypl£Í(Û˜¢!¨°•ðgþÁÙŽ„B¯3Lö–üü¬üêë@GCºD'™ˆch-榷÷½bÎÕó,®tâG¾œú`j”Dû&êUê®ÖG«•tFÍË&Äoò†³ 2c§ky–²¬žŽ|Õ5Íâ\Ì5džkŽ÷!Ä=‡î5]œé4®†‚•DýèIàÎtËÊö‚Z‚’ š.†’è¤J™°WÛ£UhÏŸTh¡PÊÿ „¢ÃŠ+ˆ/EóÖ#É‹ôÜPaå䪜)ù 9„M0OØ$UÛßxú9»äÊR+ …TÅíYäü´Gé ûÇNšþøMsÝHHpTz‰¯‹9x@žüdI¹}ßmý¥`uE›Ç|î„‘*žÃç¹xÕ›*?H#ÀÉÅÄ’Ú#e|ñX6ž¹‚¬Ä[GK?{¢Ç¤âÁ `ã­K¬é»)=¿eòÒVíb¸–Mê‚‹~Ž€-XB#¾ÝJ ÀÜÒËÔ[¶µ—o8«:ßGUgÝSJHLoŒöjÑ™?æ©–R3km!Õso±–½-'mèæ©5#وȀ* äbö«h³*”Ÿ•“­ráœÁ0³]Y¡“ßwª¬ŽM³êß^âƒÊ9¨¾¤<=û>>ºãã„ìFâ›ü—nß;f]6¡ÜXnQP8¤ýNßJâÑ PLpqèMN÷*õeбšâ}”ï=^[Æ É› ÅtÈX$›-$‚a(ªùw,³% ,/º·¿<Á8C R-$ß“î 5£äRÈh=‹ÄOñs8ˆ´A0Ò˜pɼ7ëÐàA^ï#Õ¹pý±Föµƒò%η (ù§¢øáûê¢|«Œêf®Ý7è㦈I ¥ ¥KÂÌ-’`µg×ȪęïšÂŽQ jõ­6ÓøtUùFœcÁcæ²¢z|eEálƒ¥þ Õ]kE{úŒ"S,Î{ƒh^H_Ô¹ä]M+šL¹Þ± •}¶¯µßVj‡×?ïÔ`º¤Hw÷dl0 œ’ÛÏßãßä#¨›aqf—_ÃDpòç¼ïQÖè|¦ýGš!Ç•1‚¿ÂYÓ:0þïϧ¶Âú!åB¶1ÏF(Ô,b»ëÎ\ñeû\~%8ð Ø­,¯ë`Uõ$Óø¸w-Íýþ¶—½wô u÷±ôѼÛ>ϸʲx ?³Þýw§|¯é™m_à`H#‚ j𔋲+LüÔ†S›óŠî%˜;ŠÖ„lW)`F·÷­Å–<ê‘oþbGÞÕ(ˆ&ù"HqmaýÀvÙšÅðÞWKÛYF{ž ˆUê lѧ”ŒQBul÷¼…#]á=Ç<Õ«Ö}Ò|v“ºŽÖ.ÿÒ½  ³{B“Þœ…(_Ë–i*°ó2THÙ®®)»ïœ`)uÆŸÑTv~´Ý}óæMñ6…z¤ˆi¥íüxShpqGaµª#Äý{¼ÈÐ ÷ WK2ê"…xÁu‚XRªgTXU¦äk`w/bL…‘"¬™µ¯(qžkú„ƒVNó–Rð€@Ùžãd¤Ã=p›šýëÀ}vJR”5xm¹O?º¥›XðYÚã? ««;D]Á´Zó0Ë8“Æ[ßdjøÐúøð÷Ó8œ\L9å8Í($2Ð }ey ØšŠÀYˆöÜ{.”‰Ì­þ¿ó•‚WrÔƒÛ/"÷)N\öÚøÒ,ëîÆþø—ÖÕõuZ7¡¡ÉÀ…\ØP/úKJk( ¸|Óuƒf yŠFή·¼†ht~Gˆ„ŒS #Á 𨺎~RgHš½o]Hˆ;&^ý*ämÂÃdšŸ× U„P2ƒ‰æb¥—ô)}Ä+Vd¹§_1ˆ’?#%±‘o`€¬aÏâKÜ2]vYq‰"[ÃãàËü ƒó(¼‹PˆRÔ™nž‡Wá>h4…Ü%\ º¢÷K%™ÚªJ^’›3×Jw‰7è,[z]ÌÆ\ÐUÏ-nÏIíÙ÷º²sþü„t˜ÕtMEù[êÍ*Cš4ñ´³â%q E•SUðJ¶ò2Ïõe5ðež´_‚´q›v'+^Bfç7NÿWGªJîq.ûøjvT b8ßjH0Èóœó´¤ŽL0ò®¶*éŒD“³µÅɯÓT© í”DC/õ®¤LÀ“º­¬&:D©e+ÜPö':L)1€£ö9±hådçTç´?{ësá&¸B]RÈ/»]ØKÆÕõ^ëãv`c¿à&©*9[XÅ¥˜S4+3“€×|o²Çå§V€QcǾðv9@ÒªZФcºýå3;YŒc=˜ç¥Ø„ š]¤¨æ»á>¦þèUÄóžÙ÷rNarÔ¬5·u-$ð5—–‰?§¬%7š¤Žrî[Buesxöñ±9ŠžŠü)ñõ®^ÖËÇÊÎD"v—AévOóéÏàµajY³ýÆ@†‹Þ5œâÖhó6ïúfÝ…5´¡9Ã÷C6Ì|fs¯ k?`ÁEÁ¿¹±ýÝ6Zç|³Tog­µ{žúRñNͬÖ䦟ÌÐó IóG„µ®pņ¼rÊÅÃáÐÅá°/( ,gTê%6ìk@Õ4 iÞgóqÍíVêAFj"OLR̃$ÝôƒCY c®^S¸É“'‰ì›BÈñÄnn4†ÿu|ý`ÆæÃYÜx6·y²4ÛÞ¯m¸–ù!Ÿ!.‚ì"®`ÔyžÖ3Âæm—ìDŠ‚x<’ìG0Ã'”¹ˆô ömÔâøowøfØmânÖ¾óÇÀWG}RA6]ø[<9̆9ö¨ƒçz-Ü×ùˆ:ƒq”гÃfŠÿ^ž³r€ÓÚŒZt22^/ë—×¾"¬¶ ¶µ:Aø§8Læ^²=^þ2íB|ÒÁÒ§ªI°œF„m;ØUYY›ÝÔÑZcB(²¼ê#wÄ1n󄘞ûJï·aÆëLRˆ®ˆV[-y¯w|Ná¤Iߨ֫ƒËÏ‚˜Ä_i“ƒ¼3ºtfð\Ü#4såËLòšnS•À†/. Ô§îVxò¤ 6m0/Ypdó©¢Ò棓G‹„ÛEÍ4/½2ã2”°GŠ¢Ó¥O¤2}År‚N[Ìææd@`i«]R>zƘ±Ê`…´n_ýJ·Ûƒ$è@{WÒéüYÞÿ6~ö՗̶»NèñM¼˜>/®AšL©SrêÉVÚ "µÆgOdYá8Þ Fu*§ÍË’@ëðœú)Rd÷©\Ç·Š±ÄëOyP"Èó7åÊÁ=LÜ| á_¡Å¡UÄì,¾vë_f&Ï!>¯@D ê›`ö1Ørý¾›‘Rb.ÐÀ%Á0Eº¶93Ñ£€Šåµ.ß^ÏYA¾Ág«|W˜'Ù›wÊ% -Ã)E ½@1ŒÓåÐÔñž/©îܬ†>íÆ7ÛP%Y [ç=o9‚ ~ÆË3À±§°]¬[¥Ç™Î+æß{´œ·@ ìãÇ ú­=~Py&‚ýZŒ¤-)/D‰ÎÕ^§â—7U,üÕTŒ´¼Ž«”cR~ÎMzKîE¬Ï€Ç&œ8.OËÏ€ø9 ,“:dj >êb•láÆVP˜ú² äTxµ)UmÌ…¿Y‹bÜC^¢Ð¤Î-+Æ­O¥€õÉù6äÒeéˆÆ”IB“å 9f:&F¢IÿBÑ7î„úø®J!Ùæwäh6óëw»bFxyQÊІî¢ÍVMÑœC¾G‡…¢„ø=îaou‘³'»RLXåñÞ¶fÇä;TWŸÓ2BöŸ¸Q½Æ¼ù3γe`˜H@ýub#Lwd¦iÚ#èª J3ï–Qc¨RŸY_8FI‘e#aO¢ E™±Ü^êÛò¢ÐsшvMÍ‘')CìbvÕ Üùa¬up?hëˆcãm9{v¼Î*²ú[’§l¦Œú÷Ø{!Œg8/­¥¯é¤û­øõ~¶i&i›a5«'º]‹×áÛÞñMÞG+Rä­ä¥îååÂ|n‚T`§FîÁFDÇØµ´gnßôO£\,®gõüÒMI¤hApÇÍÿxì7ÞÕ26-1ÚÕm•+ð>ŠËußÐïÔaM y‚\d„q<Wc²BW±µÓô€ßů©‰(V®ÂáC?íš}ËÌ ^œ{eHž]E½š‹‘®Eäèé|•´့¤Ñ-ÝÂ\¬|k }gÈÎ ™™ 0ëÛ#׃N°‰[««Ý-•øxCÏqÞ†UD©yš’­á«.1­)ñd},œŒá‰½;(‘Fþ(À>s–’#£ž^&½óÛ•„/º¼c<[ü>â7üâÅ`l›£²ØtŸ¿lüî.åÃÀ°Ò&ý¬Ch5:‚Ü¢Ò—K3¾—Ìû_G‡¾bƒVaát´3ßèÈ´‰àš²×Kôãû–¹±:ûES£Ó+³œµ, y,ð§‘9þKLv­(S¥•4îJ§…ãr²ê #b_ZY3Œõ'»F°Rí½ãO+Sôf/ísõT€y £a°„éc`ÎãÒ›uµX,““¨üóŸÒ,ÝH¨;1ôV³«xO3“{@°X}‡o] WV³9–ʾ3–¢!²læªâK‹— í[^CN¨ ×òé†m?bŽ~M¶HÃu¿æIwJæÄJü±œ0A7gN9èÁQàXúœ ÐÔ¨ËÐ¥¸³DЀ‹åÄòhç鶸Y˜—û‘3xÿÒ–¥þÐHÒ¹Iõe¡Ï¯oÇî8©˜¼*îÒ·bŒÅ•½ñ×ðùc‘‹êq“%¯#×H¯«a° .FS:òeœ"'ßþGD^8O%úD̘R(p¬‹åXöhtÓu¦—ÁÖÔ5œoþb…HÌ4š8À&ãjmJƒ¬­Œ'`ÃBŸ¦#0c ¤3#%­:Ô?“‹ÚË¿í‡n-~vz7ÍûÖüô\GWغ­ÜhÍ)“Ö@§ÎßpÉwÈözA¿»ò°áxñËÃ$å 80Zî‹ë-= 9xïºL߇w¦bz¢«¯K Žƒ|aº/Ûg¤¼6±ÈH‹¨õQˆŽA„XÊ^–q$9½€*õD!pvg+c)œNiÊâ*DnÖÆ ßÛûº¸kmûœ;¦°7î>ΠhyÄ=¥_+RáÞ:dZ¹=‘zw®$ü±ŸÕN^÷ Á¬&¬”ÝŽ†€-õ¨ÐÎèùS‚>aIB öÊœþSé¼8嬩œ!•c*¼ñid_Yt“qŽr–òóëL~µgn¶Óš¹Æí¼äª*EMäÍ2Ö ï’DpW+0ÿãJ¼QОoÖ0.Ø©ž l–‰ö„AÓt›@;½2!âc]uAr—f€„6Ar„c+žÐHKƪe ·ú3×°zü'ÏêÕaŽõ*Ðæ/æ•27d”Ì›nˆMÈ}ŠºZ%²)žÒ^èn'd'˪­ÜÉN˪β”!Ø€v€v'šÃé cÑB×!ã4Ô®ö8'í{ >ËGi òêN%±n™‚Cµgì˜oê§RWÖc;á¸DÞ![þ‰6õºo%tIXµÊ{êÅk/ÜÌ?ûd¸˜Må½2ÝbøKø¶­ß|B‡Ø³¢±ì~JŽp«(QÙBâ—ƒŠ< wK‹H ùSÝÑ¢,Ân¢ðN1zu¨X…?`•„ûa¸ÛP{š‹t(vİ)(€áö«v©Úbüí´Í%Í67_Ðõ¬|ã¡<©ÚÕZóË ø¯^ ½5ËÓ›«—Ñc†!ÿ€¸²Ük7iUï«Í‚Â!ªoƒlS¦y‰ë‡ üÉ›¹ÅH©7&¶ê4Ò\EbggãóâÌÅÙhÙá¹(f+Y'Ȫ’Ìiþ¾ÙS|»'Kô sxº‡-V/uh¼¦ä9Y*`¿%5Ø÷…$èÜ£æ½LD?[¸v䛵߳q–ôµ wæ.+O.?%ÅÔñAæøoAµk^ýFcãm(©çÊ]:”yg`Âp?ÂýÁ‰ycŠ«n vd•â†à¸ÁØ&%Y(¥új’ÓÎÖþ‘Ãnýÿ8‚c<àÕÓñS vCµ÷o#=Éa¦€IÌnæTÈÀ™²nÌÅѳ œžIìÓZÃHOïà¿pÚá­ÉØ÷Õ‰ e ˜Ç1ûºìÅ“Ü2PŠV]¿³îL%a“3áì „0Dœ\…©<:`ä‹×+åÈ`‘´/vÞ€h¢ýœËóG“iLU#NØÈeq0‘?Ý„$ó¿"ÃÖ¡0Ý%/²ØÒoì:·q@uÆ.êo}AÚÃWÌ!v!…MjÜh¸ö&żË_‘×17…úsI¨ßG¢úí\ì]ÀžMÛ6M‹?aÏ·û¾s}Ì¿ŠOøºÃ2©% ½Ï‹ïбûŒb=Îye¨ñõ>P)m©Ö¢œlL5=,ÈÖðíq:7§åÅæ0âò*J}$3 hôÖÚLÙÁôKåró‹­cmV 9õ½%¯B·AÛ}vM4e÷H5O8 ¦ßðñ§éf6¨=ØÑ™RóPä×Næ4ʸìj*;žqÄ=ôézÿ‡m¡Ë¾þ‰bõ[ΨFÆEÕèäâ#É&£†e"äÅvŠîŸ·õ9µôÜNA¡è¥ 8¿t%ß+ò7,y7 rŽ¥$=±,û¿o‚‘f6ï_@é5Rl ›0reZ­˜’\éÙ÷pÒÉ=p)¸ò²Ôãò6éø¿n#€Û@N@Þ&r1OtuJ3ù' ™³iØ_pâ)9o…Ú²5\j0v—=8-玲™Êµ*q§eýíù¨."¾  S±÷Gÿk µ ^2OwIM»%<&¢ä EáÃ$ ‚lòKg#AÚªÕ¸z*O¾B¦yྎv˜@(¨èþåBöÞ rL#/òáɨö‚½¼¿IDˆ£y’êÓwI‚%çÖˆˆZ¾ Œ•ኯ‘y±]ÇKïŽÚ§¡N•– ‹ ¯ÿ|¸MTü·²ïíå­¹Ûˆȴ߆2n"9ʲ«€ù1O| ìNFMùIàÆà„éŠñâøÅºÏ®j ‚ RÝ:T-­N†0DeåÑÀRFÿ­2/o~>éæ4ùgP£éAàƒ>¢6»bçJ,¹äì-—:¤+ØÇ /¯¬3%•Æ(!- o(›#O^ß§GgòkÓÛŽ Ø¿O1ØÃWí›Mðëtœz·´òÝ‹÷–s3e'Ä&ˆÔb*×Ý›mÞ½œ:ù0‡XšÄ ðóûX$pRן¨&& ²Ú¥¦›ñ‰1ÿlŒKö®…Àùù”A‹Æhõ¦-±‰)Œ£ÀÕ»!âM¡Ü˜˜€ˆ¿3%ºž¤ˆ;Ib +ê­ñGD}±Vo؉À$`Ù…þ‡(Áî½=i×TF :±¡ëÄ…föÓãÄ}=§ì¸Â<.n°wÖµé0F÷C©Ä-AfyJ¤ ›,VâŸ~èfÒ0%ê¦iÎ[§WŽ“—âÜï1û¬¸g¾Ô¿òQD‚¨É¡QU9¢Æ»š}mçMêºBÖBT(-/Oå—ŽM„êµÜÙ¢rÚWEn®ÏR©kNkG”Øt¹=Ÿí÷É¢Z‰§Ò¨øÛ)”–4zò‹è†ÍB•® þ×ëŽ U)´Ÿ öɦ´EsÔü v±­.h¡ÐÖ¢Mž³èOÆàC]'óɩ舚] µ×x–eo%5;@ÝþlºÃüªõÔ:e¾NîpîvvÒѨÍâˆyíQeø@ØØ¹iïÑ€°†d44¦ÇôkëK†4û¹~õJbÅnîW˜ñÇç¶~Ô‡0Ì-Àr¿èïÌÜ ó&—‡OÛ(¿Æï|†jjÍÞûB2ÜNà dº^;¶±zõ2Ï+ê^³Úˆ¹°Èªd¬“§¹W´ ÒPr›ö­çßË,ô€qCÀ% ¼[‚6 £Š•†:“'ðt¼•Ž"„ý} }3£\¤i+Û±þé´Rs):}ÔBðŒ³3èÿc/šÛ“H8eÞ늱d*÷´§Û¶{†„·SPO®__-~WЩ¾NÕF N¶!©s´7A ³*…ÜäžÖ ýö‹.vêf@kLK ÎQ›Äˆ=ÄÝ™TûÛ{Â]‡«záÚtÂVL>HÃ@ ˆm°öBsùЖƒüâÜÔ "±¦¶åÿóê§Hd¿·!”ýÉ«§[ÈU§i”ØFšú-42ѵ[©ñ\M>œQMÒ@6^uþn‰Xá\O8­ËZr¿5²2 âï`J9éú7î—ë0…)$˜¼rXPß&’P¾ ‚Ö>ù†(7\­>8F’ZþX°ßGeÎÓH°¨'ÞýŽð'Ðã¶AGi­ª|Üêzò÷-Zs2èæ€öª‡`ü© Ó›¢Dًر õdâ‰I»„7Âzø“þÊ›t«í©ZY¢‚qY‰€n_Ù† WÆý™r$(÷CÄ÷®2É¢B£Dê …?:Î>•p T§W”áã1 %¢_aQRJ®2v '.!áå Ðè”äz½ýäLŸ‹Æm뿟×zÍs)sg~#_2N'@Ü‚ âJA×NµRýx½_2fDt¥eFð t ð :£t]8NÀíC]ÑïB塹ñ¬à,Öªúˆn³yÈV!ÃñÁX*îùób®Uàã7?y›…9ãmiaG‰|¢=k÷ëZÂ'Û|qJà,uvÄ%¬y—6 Mc½·œåM [«I#%XfÞWCE68Û™ô‰ïEšÉPU3œVÅ_!ÃV„äÌ'q¨n²Ò–»÷% Û“ŒŠZ‰<‚…´EÅ*ifC‚~&/°û¸ÿ>Ì Û98÷c)꺒üì`‘|ºÅ粿¶Çmµ±N³ÚaS|H}š ³Ðs“* ëö2´dŠwÄõ u…Ì‹ì Ø²Í¦AŠ©¸Ò¸ü¿ÂQ˜I³þ!äx¯ôZ£|ecv ,1<½˜Ä~Οþii(ÞòN]«ûF:Ä×hü®Õ§P…¾ˆÚ3)¢fLv¢Y®„_x!åBByé(jqÓ^UÊc ÒD+K.µ¾Và8›¾LÒVÔˆÅ^¿â‚Ÿ›²ƒ_þ6^ñ6ÇZ'›¶) |÷ –ü$n˜1T ƒÀˆ¼çTíh?–N…:¢Ñó‹~€nÇٰ݄nÖ/µ|pwŸ¶©{|ËW×c yZσÍ´À[Ý ͹´¨7¼vû!zê†ûYž{,ÀŸ „@ÑÚÉqf<aG$‚‘ pÉ« X“>#×Þd«Õ þ,IÉ>>‡bÓášm©P (ÿ é¹ìV¿Nsc§m+Ø¥‹™²ó’[^éÒUûó_ ç®ø+A¯,…ýJoÓ{‹åñ <×"ŸàøþŒÙ(Bñàm•P±º6šÛ\dºÑ‡z€Ñ¸­œQwÙ\õÁZú—{ ÝÀý|’Dnu©Í*Ë2`r†rO“åd:"£ dÛ^vâsž9µ·X.oúöfï±ö1:"s_ ·3|ÑŸ)Xvi^—²zÂñ(Ä$"Dc1§î1 ”¥<Ÿç“Ÿ*ê¾C>áRqDôÜ]µ-XE»± 8`Ó¡“L¼&Á+‰pÕFŒ­hàhw®zÓ}²g>'ÛžÉe@¯ˆìæÞ[ÿ¶˜X¾ˆæ9À6›×{F«õäÍ`}ïó£ÙÊM¬È¡ªíÐpò‰îõu¨cfÄ„E¸Qç$v|®°"”OI°G8K»{i&,Ξ+éb/Œ·ÔÙEðÌ…¬i.GCµÐLÆ€±®,uÉʇ™@3ÑCt³¥l4–?ÏG×nãæV¢æª¿çöOpkI€à>ªŸ„™Ð+±T›{”äò(‡ö*Jå÷'B =†òÓ ‡.ØÏ%rö㊤‹_dþîÃn»Nsèüscû»’Éﻓ‚­$¯ã\{ÄxÙ¦mbbHÄØŠYQæÎîðངÝêlø»RžíT A9Q. Ÿ‡ôPNRhÌÌß23).F' a–ýá{Z"ÂüxŸDy4Iõ¢lí(Å®žásÆàãªî X ú{*¨÷"@jñý»—†¦ãójœÏ$à€åÑy@hçN°2¬j]¯• ¡[ŒoYLBpÐR‰²eEHä?ÄZ ¦€Óû‘#Ž…¹?]xÍàÅËÄf ˆô—ÌDÓf*]ª*=¥ÎLº„±Ä÷¼ÕAASÊ«]ù±Ÿ|jpfÊ_fɯO ýàS@vŸåt“³ aU·Û}gƒø€KêuÏ@vNU¡ü| ÚŸç¦ 0°à>¡³¿‘'º¸ßʱj:@áÌñ­½͆Â|¹ºtm•-GHJÔírFG rLÜ6vËÒ$¯^Äõˆø©¤‘&OžGtµ’p&6¥±:n¹DóŽRåãcù¼ ©äD€NT‡»\HõtÞàŽ(8ŸÔÚ9ø™\¿w:OG¡YÐISéÎý’¹É ì"ØÔÝ£épúb pD Yhé€/x\dv_é;ÎB[þe%lÔ“à5M˘Æ:¡W{2^êßÑ_q-UDËbÉ'ø±HÈÄü‰i54Û˜\ë„Øfèý‹zÕ¢Ò‰ Ë9ٔœâHdzS?c¬“õïlcù”6ZlnϨԊ6‹EóÈos˜ æ“Åw±˜¨Ý?&*±úéÿK}LÖ]þYWÖ®ÿÖ©¿6ÞªçQÌb:Óë¬Ë›€[úŸhbÉÂécö>j©hAdw?¸bÔc?LÙÚƒï#¸ó£³QGC*Ä-¨i&‹í/I„u¥R¼y5+ÿøYo“òç” qSšÅ@íäõéRþ-èÓ„«“‰Í](W)8_%wÎâ‚?–y&쌳ÿ±ˆ™étò‹ÖQî: ïç-7<àé7–˜‡|¬?¢y ©6dÕ¡nÎ:ÏWTAHKJmîŽz$l¦¥ûuî^)ÇuMfŠËmSÃ2•E BÒç à «¼GOÔß+óa“" ûl'ñÒÖÐ)Òý“  Œ+-84¿¼`è²82¸²"ãçZP%÷à- —laÀ«_,^ûUF°ÿËÖ³GçÀæ°Žc[c[ayÅKýËl ìRýËÞ"Z ¾BÁ Tšµ°ï/ØåZå’g{ø ’R.û@Àd“iè­cÚ. È…:"Y׺©àõ´Ë8øÔA…wF %‰>ø†´p%ØÈ°ül‚F±8[à¯0NDŸ¯cRŠ­úhb¡}q˪]ÙéЬåx:XŽ{Éò 9…å¨}Š`ºþ¼Õ (žèj-5qqº‘çPÁ1î˜Rˆ X/©{±¤Š¤kDt jö_Åñþ?ùú®%°C&â³%¢eÊ­t>mÞ1\ÑF„#OýþN„ÖD¹*$ü€m… aâÛÈ&¥ ù´ð 'Ãm õ©×ëqÜqÇ6†¾"ÃÇ?+›Fáø¼Æ­ü‹±zdû´Ïƒ»lõpJ»:–¯ò®¥à!µ“×¹$5}àk^ªKª¶×ßû¨LF·æÇl˜*4Nh7Ø GÅÏËp!þ´·ñ?PÚ'M‰ß6Æî欒¡ø$’¡·Ñ²©O†ïBWjæˆÑpÜ_qq¹Õ>Ø âÇñ·¥x‹œc¤<êw1ˆU Ò—¯ƒÛÞØèu@{¶;“XSl2ûOºˆ{’‡»©VÚ}´¿Úß—”×p$=.7t¿ùJP’Am®*ÁJPps1±®PänÆñQ;V Ξ´d´aŸ…PlRÁX¾xö‚©„ÏÚN³£—hŽ_¸x€i‚¬§Ð4Þ;¹GŒDè‡\g¡^œ±‹eÕGaÚ{Š¡Ælg*~HÒ4rÅ’™Ý ¨^(¯rCe`{* ÆÇõº›ækã½Û±@Ò'$T O¥ùJøŒrlalݰçþ1 sÑï*ÁZh»PÓ/‹´H…öe‰5±ãäÌè„{ŸòÌ|>–Ž{$6ïãaGežˆÈ‰mt{Ú@ Þêéç§X¿‡VÎírp³ØðìRaÖŧ!ñ; „»…}¨±v“;¦}HØNÄ%;ýáØ C~­ó÷ýU²ˆ¿!.ßÈÄÆ÷¦®@Å",Tž‰.1(Íc¼#µ|Ì ±k÷×PiÎXó#.y$¼ e§~oœÝTåØ#ôqÓ,f?ã\¸ Ÿxmè Ћl$dŸ×$ø˜Ä‡# h©–+ëâMWëK’͸h–¾,¡Œ$³”š½4ÝÈýÕLdò§<ÅzXç2øHl¶ù@+ ±yV<É]y!šM®|¥Y)NN*SÝÒØz%?/û>Ø0RÙKF¾ƒåV©c~â[Ój=\îªÆïT—K傾"¦mÖ sÂ#ŸtN[ÑŒUªËͼ¨þÎ,èO^æ£Ào›Ýß]`æ-‚c¤eå[÷Îôû;…‰a¤Œö5f˜ìJ¶‹rõoi °x#„Öæ‰ádò”òÇp«Ë¡ëã>ŸXÙx£Âß×ü¡“è–ÜéânæÀ-'D­/5œ8ÝÒ·STºï_”dz#wÈíË+™º¬0I¿$ÉS/’E—Ö†µævà ØXÓ!Y;ê3©‘dËF\Æl6´ôs˜„N[IXvŽ“ì¦à6ÙEñ0CŠ”{¿Éö3ç`ÿ ÷ qÙõkjC¬DDëI“G…÷‹Kl[ÌÝлòoו:ж–WüQ‡­>t<Šo$=Ðw+‚Íå×ÈUª™ç¸Ö«š‰·™"ñô3’~«j‘ûf!|è_x3’å Ìl6öm¨Ñ.* À&&‹ÿ(uÁX9G·=û SÙzíâ™+Î7põÜF1B`ŸÄÞï^=†”á—£¢ã7 @²•Ÿ;a¶40ù±£¿Žwx•M¤Õö5oŒÈ²Ñ ûeú×OY&@Ù\±*O`ê€g¦—÷„ΖKdŽ9%¸|@ƒ©i.Ç„SúbxwÉ–ûñP­Š¡½;‘V‹m`Z·1AØié¥~£ÃIÀá“£ ËíJþ¶áŽJv¨9ö;8E±¦Ws—Š5ÓåýeßòFCX9í[Œ 7—OÖCÖõfv|«M¿X§½ôâPØÑWÄ@D¡w¶oΑúèvø`+jW|ïãu>¬3º×xÑX3!/»x:¡Åqæõ?žªÕÎCl,eÍŠN¸™þiâÎ#$lËPÒbnêr¨0‚ãFÿ¶ÛÖ—ˆÙQõ°‹é z™Zî½´…,jÎeͰRÖ¬›hÍ"Xs<õÛ[åš·é/<*NFÏŒˆ}ýû|Q“áàp¤Â{²vÅÀ£„”W˜–‹ç`ƒîEHo}®/Þ”'ÀÑ€v¦X|Bó¨h N«¾Œç´µ,ƒ„CÕ ÷kÜGW!^;ÚýeäKÙK!ð.I„š`ÒŠt,ýjÀ¬²&ÈcIŒó}5ÿŽþ¨w 㥦Π¦ºäxëæyåTðºWn62- (W«t1r/lµë¤sŒ³­Žž•,ÃÀ¢nlìÂ&qۢܣš9%Ûøª—GE ‹J0gR峎GâüIö‡ÃÞßÍy9ÀoóŒæRýÒ&¬“¯² ¡w­ù²·î†Q,ÍÛÞ´*ˆ•ËHÖˆ9² _´qåΉ³AÍZ‰¡P§8¨¥klÊó2Mï\Y™ÚÆ«d2û¸…; h‹Ä¡ÜÒÐä,ŸJ»è;éºÍ9UüŸWŸ+†]•Xjê1$ÙH¬çã÷=XÙ뛘ö¦?PŠ“—Ñq— n¼^çøS]jþ&c&ÛýÌÆåÊ{߮̓syI-/”Hý¡ÛHŸÚÌãRøôçëe¡tw œ˜ DDÄ-‡—‚øˆo³Îq8Xò|D’Ò^6ܦ!ó —*‹+Ì'}"ÄÁjÿ·ˆSÔ5“ö©¯X7¸ú¸Ç\<+ù®E¿LÄ'çG$ §°{Ô}øoî4ù(‘¯™O~9 Sóº *Z­ï ©ó ê`ŒV²109<^¼%¯sY%Ï++7Qþ³_‚Âkö­{™ÂжÌÍUvêÂR…«2ä©é:o‘´W¦á©¿i©¾:çõ¦ .ª•½¾œ¹vYT¾Þ&A6ïª×"«žX~:lôï½&$SUCO-ÁP%÷¯Üôo(Äxzþ5Õè?Gé…ùŸÑSÑüª`C¯¦aÍÖ¾ˆ1Êǘ›œEfYTC Bÿ=‡/nàpäŠLRÇŸ¾_1¬æÚ2UƒoN;œsMôî,^øÿ'‡¾Ç¦Fω¡–?ísX0øËÒªl˜ä–GâÎ4ã+Ì‚ÑÛÖVå§•ÌD<ŽêI —öÆ D†šF ðV¡Úê={$wxC›ÃÅóŒJ ©rtå,zvp¸EÚ«1ÝΫxº, fwQ¸Ê;›¶°gÙ­©d×±Íå—Pœ$¯\•©TÓ%ð¥Ë=š&÷ -Ûȳ*XþæÙyÄ îvW²§×ÃÉMþ›5»ö‰,ò+#Ϙ®¢9 e Z"Wñaó+ɧ,åÓaµÃ0’áã_ETqn#MY.Fy¶òJÞpEuÎÍ*Òäh¾?q0 ùÁã˃óàca>[gj­FœÜåæUñ¯á±rpã„Îdoü91Çvœ€ë®mT÷·áP["¢½ÆäÿiŒ€ëU/‘“FÍã$Ͻí㜑×yùñäôbçJ³¬Ó3L^Aéš(¨”Ò þ3;Ô{¼ˆ©Ï8âynòóý0 yÞúZ¤˜Ñå&O.êýAè,µÐ‚óÂÓZª’_ê,"²+5å/RÂ2ñë*ÃÝ4mº­9”j凉sbC×WÔ'ç#ŸÂ)s4eÞ¬Ám¡ÁjÐÜŸ¦Q»Í¡bqàžWá ­;.HË3Miºw‚Úl¥¢+2ýTL¹FÌgN@ƒqTbøPÎé´èÄE6¡¹ ÿ¥Ð/䨀skê3ÿ?FÈZ‡tõøþãÉYÚ§º1eâ=‘|492*qÝW ãÕz¾m…—+xÑC*}×oÖVº(}Œd^ÌVüs±PÂgÕ\ˆH#êÙê yu½[–ü{ÝÐÃMRš–‰Ê©‰Èúx¯¦÷ûw*ý({¾àí  n7¦>ì% vÖlˆk¢WW&'hQŠOSßf›Ð3Ý ?[°Ý²F…ËpsØ)ù‰ˆS³mŠƒðƒJ”z9 ¦õBU 8£"]0…5 (–~É 0@PpeÕŠ–Õ"–gÐ6Ž õ21)‡ÒNÑA/ËàhÏó}ìÃ9™zÇvwº$ÀL™¨YXb:ÁLgÃ~åLbPm™kDÉõGn[ÜÜå¾Óú¥=´uRÒK=—Ö“9zw¡øÿ«<ÑFKÞ§Ÿð E^×ÁïÎØí.jƒ*=¸GßP`túKïÿ´­6†U ÃG R·{öðm-çoïhTJ§¹D8,š±clz£›"u:¼èÅ_ÒÆ‡8·ÅQø‹ŽâaÓ‚ƒÝŒ{“ãßx;*2;lÔ£†óH–f²0ø÷î~J½ß„¥™ÞŽéíÑ0Ÿ²©¡Ì×^ k£™†]›äBÜ_õ=öŒ8„îL1zÏrUr‹sXŸOú¹óOÏÊL`@¨ôáž›Z!½6?&:‰Ú詯§eŸÕìÞÊ´ï¶!—sjð@ü©ýñqNu©Eòðl~MTrнô–ÐÊ€ƒbÖˆ¦âY0z¥Ü/tý” ¥D»Ko„gkúÙÀ|(äòC‹)myAV=Kʰ4Þ¥‹ËÍÈcßõñ„ÿÛ<Çø7Øoù‡GQi{æ®ùÝÁ!zñ+œ ‹ð’ÓžüÖ{›‘J>Ï#€œ ·q^À$ä¢Ê¢B¶_æÓärå—X¶Dˆðþ™Žm^%ð_dkŪQÒE ëAx'ËV‚öþýÄ ò˜ÒÅ_.ðæ\¹Kß3igÀÇ›Gcû9_=#~)þ"Ì!“ä÷½¾)N¬dK+tWù¯ó`oï4&eE[ (q÷”yÑ‘@÷›¢÷ãjÄ=FìÉñ‘¶=ñ+ÐPU–½:ñ\6ТcÒ•òÐD?,dÐ&õŒ)ꮈ—?Þ;ãŽj¼éq¡ÀyÓ™áñäÄ-¬¹>l¸Xîx^/DVZs}›©‡iƒÔ*Â]êpv:Iªe‡¢¨¤qZïùb¥T]ÊéÝ z\LÀÀætÊFó-,]-£ÝöØÔI üxv/9-w‚-«+\ nlK©qž},ë¦ÓöÌlzì‹ßl9h~“Ð)?>$ÑrÖràˆzóáŒw“†É‰STºLß¿œTk”„fΉArú!©“˜W&CxÚ9… [bœ²“rÉœS«ìÊ`SÔ¼ÖÛu¨Mb#´‹ƒA>ASØP*µ¸\ÁµÜPr"ŸÒ/Ûæì3gDá½ V©m0Êðª @^78>–'½üÖ#Xç(gM}_!™Â2>v” êvWA x"¢É¥Û¤¨Åh2úÛ‡ÉÔðbú [G?¸ºäH³ŒIÂr“ñ鵫ªÚ ðêJ¿Žý4Ӊʿ¢–'{LÉaæÑ‰£ù¼n?ê>‘ßôÙˆzný¡]ÃËj¥dëõVÉÊzN Hˆf†ŸŽRí+@v]ûõ½ipø`õú¡ã”¦Ž; õXIJ~E íˆèñûžX «–Fgqÿóûúm ‚ªÆ%ßb=Ž?å¥7£ÒÈ.Z’ 0žæ¢ƒ’kc&ª@´çÆɢ²£ÅõÚ§N&Ë‚Y·}£RÖ5•ÖÚ{2GY‹dY?öÂÝýAùðݪ°†ü)p³7½Þ‘¼³ÀJfð©D8¢»cxWŽË~D÷ ÔŒ}ó‘ÈøåÐZš °WQºaZŽ)†œ¤QŒ‘}I™ÑÆç¸ôrî2tZüRµõÒ†3¤­Nøv¼G5º"óò™w¼;RKµ8{ô±Äl¿6%›bT©ÿÌ»Aw ‚Ÿ‚…ùÝ‰Ö GÑAFÞ.XÚ—Üp‹3·-Æ®b¼ÀW“êÈR‘¾j.ñŒKZçCO2gÑÁ€Cæ VöHñ#ŸI2b/Á¿žœá‚WsØ­›T^ðl &·Öᦀð=檲™ûGÐ¥IH½JŸgq`ȼÌ÷wºB1ó… 3}ÓíøŠyÖôÝœ¼è~¾Èôãæ¨úþ×fÙ*×6º}úâý¬¾Ó‡ ’6È ù¶†ê•Ž ,Åöá‰8›9ßIr ÛjÉE ñ&f(åÜAÖâm§4J&•›‘Vù0ò®oÃ[“#gUŒ«R®rSø½ÿ šqRPéÇh&¥k–mNž-•¹Úù4ŒP«ë•GѼ+þ Sd X¬Zíª>d¸ßùéFÎ$¼9ù:9˜»Oº3od{¢ŽÊ²UÏù(ÍBŒ@[nû“³»0òI2o#Fåòä8êh6çÕ"%®ðdç^³Ðb™g OÌÂöç[FßûœÇ„cúÎàJâiâÙœhW)»pc‰4m¼ÁU7Y¦'÷±tF2ø×ÅGç«ÖæýÉ–ô¢‰hûi»ýÝö-ç€kiƲ̼ƒHÂý·Kºúõf+L¤ÅÌŠñn̆NÒìUŸ•uÚÿìƒÛ߃[L{Ôµ¬¹ö¸‰b¢YtÍ W ¸,îâjx(>foí(¯׫ý Ò~µ®'.ùí"ü–¼¶‰w4óé'][ý-YÝFèÇ÷Ú4¢›ÝË£lwï[ZõX~ïü¤Ùì y¾ÜG)­Ôãîúwxö Ò³”¸½ÃÆñ¾|„h¦\ê¼B_E‡ð&öh4•’Ná°9ׯªÏ$Œé2Nâ’«ó˜‹ÿ…Þ*¢÷O:Ú!f˦ULÁwOð”&bn¨à(Æ?Gk¹ ÉPþmæÃ¨N ¶<íTõ6À8=Ò!N&ªÔc今„rhîcµ}Xl%áç¦ïIð.ÞÐéVv—ÿ¶K…?ãï>ÒÔVõÁ—BT±áâY5¦yÉ.E†¸(KÂRÝð—#î}$F`ª}Â}ž§|^î3ÁX·ì6?ärŒ6ô*C©ðˆÿœ4LXˆ-ðWé&[yæÄ GÔgcì?–\‰ *îtTòë,B.FÎ"¤ o=dÿKäºJhŒt>Úœ÷ak|û‰®hyÙ±wŸ;jñˆQ[à"Ì9!73q²Í‹Ä¸/q¾6œ3 ê¶ƒŠ}­¾N*\Ý0—"°zÓ¾è >¥ËP<¹¥ *@Q)ÐPmp¼#Ú!”|¯ÜÇ@A[“óéø\ÑÈIn8ú=œK%ƒ ¿I Ó…Ü⸨[O¸ÐÞj¤ª›$@øèëð5>8X„9ù¹ËÅ8è¾Ú´ƒ¹b­¥³a³ñ¥(ÑÙQÇk–ˆŒ¯™P˜…Á]Ë•ꫯIt! Á2¬[Õ¸ÖZ<€gAÓD½w´¿U|‡Ü©õÐiöÊ{Î@É[^·INõ÷ÅróQûÞB_n,p„´7€ž™ÚKÎË~õÕPúìó „6}+›É¬™¼ø¥_ïâÁ w‘;´H‡sîÙª0k|U7µ‹%M4éü¦ö^ò¨/±ÞeäEé|ÔúHçëÁósÛÕ? ƒ`Uu¥}Êe$“ö$u’“󀕄`ûe&!¶~ÀÉ/ç—º°˜è̈‰ã²º~zš‹è·½å(ª®@­CÞ÷¤§õ/ÓBnÁ þ2U¦Àö ØÖ§O'¢}ó¬¶<¼‹é9­w$#S¡ŒœP4þéG¡6Ïç§ùÚ{Ç ‰¶`>+íê¡XOv÷ØRþ§²ïK‡|Ü9mÞ¡SHåjüôCñËÄ®r^W'ÄDÁxôÝ?°:éÌå1|û ­øo[ÿ£BP;Èã¦_;.¦5Ù‘tΫ¨¬«0¡1ê¥å–Œ Óúñ˜jÙ~QáG¨ãÖ‰›î ^òÃÁ·û±Í#á/hVöÝ®Îw<˜Ø¼‰×ñÉXÞÀ ï³(ZŠƒ¤Â f†×``Çã±`§P)t7ðyIÅU„9îsžœ½L`U "“hL,d H? IKg÷§C¶±Â5"Q¬~Ô¹ƒîÎû–Þ)úŸ cF2)•]vúê)G5odò¯8âJO=`”R A¯U6>9¤e“`G1u´ŠõÌæ°z`øCäÓA˜™.€±!2\32-'¸¹zKÈ)KV \Ž™å¾BùZîdHã'9àØÞŒQ¯Æw+ÇÛJVA–X¯7ÂYCu*6×û„ Y±;_N[ ³|™F’ˆ¥?¸S↑««$¾é¯/­6ˆ OÕŒè!ÇS=ç|E˜¶’P(Y“Ùb°/Ò6¬QüãÖlþ@DºP‚4ì4JIpWèZ$)iìÊlÏ˦øNªÉ·bLÎà–[ܾöUužoêE]M!ýC¨ê÷,5¶Ôÿ|KuS7~zßÖ9x¦ì~­ EÝ”7ßÂz½´÷{f¡» I¢îìdeüµW6§ ž³kBCf— ÒƒÏcaªà— j#o]idÿƒw|TÙ¾øó¬ŸÓmÉöÕ\0LÇÅÖ g´ösjä€RwI5Ñg]è}Õ"«-O_Á9¨E–ú»0˜ˆ¦‹âý€q æáO´þâæï¶Èn¤ŒG?úîÏ8êdmðkÓ-yE@ŒOèXë[¼þÑues gð.VŸJµÉ÷çfãŠ,Á…Rë*üéágthPv‚'ƒŠôG [,æª$c=6(»¼—Vˆö¿‰¸)àCÒ…ÿ°¬j1=.¡ÙïVõIÔ+fª Ü2rk¸0‘dapšž³PÆÀé4#ZkŠ ˆÂHJ¦gJ{×"ò ‹—HÊy ú䮹¥ðŽÞ¤^˜óUP&‹7D,YúŽäc©'q0´a7×Òï_ëÈoaxËr²þÊ-yJWöîÚl‡§ê<Þ"tì•F xO ^ðò®í7HKËýÞœ6EŠÄ":qFY®.ûvЈþ‡Š²AL”—4äDöÕÿ¶‹¸ýøYÅ™7læÔÏÑĶ+:mYJ›Êu…ñ|ƒ«ñ L¢Þ,UÁ² ¹RN›º‰U’Fßl<®Q—Âê24ææs”?òc¯Ü¸ì¬}áu²±¤Øÿð–í’êO»f‹¼ÉôekKsC’E>ýyo’xG€ Tè ²ÕgŸ¿¡—rÉ÷”]™Qz.{šáì8vŽí`j)vÏAYâ‘K‡sÉ2Š??è1àOšAìßñ³‰£y]bóörœIF:f;£Qd~ði˜–ˆuHg]ï›Ç&ôLâèVÆn€.߆° æQâ°5Fãòþùìâ¡›-9ö ð©4QÉ1Õt'MÓ^ Óñrº¦SlÂ7…ã$6Ú‰ (c0½I¨ žHÀGn}ë¿ú<12òòã7ø“Ùº‚×ø¾XíÒ‹\±gÊP–¦1¤‚ß.-ÞI¬*^ç±@D--ža‘¤Ï´×G‹¥’ùÑŽ*à¶ëžüb°ÔT Ü ^A+èT;“¿ •±¿ß`_Ç\oÊâo×ä,„w@Pi¶Ÿ¾œ ¨^°(c(î!‡£àig,±œÞ‡!W!@Æ|XîG$sD»<)öëÌö éÝB±}ÞµĪSÖ)d¢2í ›¤¶nÝŠ» ýœÀ¬iI^a¹OáÉÝâe2¯?ÇgšªM"l‰×+ #3O#]´ýéàz>˜|mí.OáŸð%ºõå {–°&òÒ\)À ΄ Ž.KE3²jÃ|¢Ñ£vayùx6|2-èÉw׃E6( fàb³q?ÙLF4qF¨­s×”±ŠZÑ“*ŽÐþþ¾ußyxWJ9Êt´ó~òK« ã2¤¡T§J FÌá~{MªkdMXÖ–Šo.¿ƒË¨‰v&ò-2ûD÷G“d¦š4ÌaHÈËšïM/‹B—δ'’ÆÊi¿v×my°hß·{ìNưufcqdÚtB4±}'­°Î]Ü"Sƒoþ ¡4XTT¬/DQ…‡Èð_!h6NèEç’âÕ¯15#ü#ƒ\HÐ1–±·×¾Ýj¨¨ {}VÌ”mÚº¡ˆ`ôº²Mp™´4ÚO])¤bv-*š ãÁÏ&ED"zÎ]ð¨=ëìBúÿЭüqPµ9*&úý¹ù¹ ¦„ûg×=p›„XEy½¡…uÅI³ <ØáN×iì0š´Râl ɆþîH|é*çd¯yËrHÑ9Ùé?/²N¥Âp³éãd“瞥vóãr2öXÃ&Tàño‘ïË€ãhýùQ÷]' Ç@õçÝNRTçMÙ¦œµµ–¦!z±aòep›Óï–ª¤„T4˜i,úÄ’vQWͱà_7Â;ð¥Fèü—IõªH<Ã5DÎm>ù²žtP?Iý$GÛ¢ûàÌbü.]môï2ðÁÃB©{¯gî?‘D¨ª 8H*Þn¹Ñ®¥ÑdÖ@‡Ò%j•8›’œaF6Pw:ÓÃæ›$É‹7šP0a²j7’™”ÚÂ4z 2Û¬^Hc6Ÿ7Î0(œfðw€äË®øÕ7uCä·ˆYÊOS×ËI׉1ƒ7®Ú&•¡§ÄУXiÁÙ‰®ð(D|Clò|YöÃOn•[6µ ‘OœF Œü6Õ:ÍÚòŸÁÈ „„Ž¥ZˆÕ®Ñü™ìçê4[¢RòqŒ™#¬^šjù@ñ‹ßèr‡0¬Åè&P/3¾%¥Ø±Í£#ÎHÖlLñ2çbBó-Î^mfxSŽØK\B'ûÈ  ÿk¨1ç³KÌçÝÏÏð‰áßq£n†+Ú]¨õõ[•Ø5·Ó¢ÿJôáÍLqw„Åʶ‰ÍÊE5àQ,祅öàèEË#TC’ÅEp¨gÁÒƒ"÷%©ÃH$ÃY$œR¶#*Œ­Æ‚°Ú@/9P<])bBíb‹¶i¡)^k“‚¸ ‡0¯ScçiS¼qéÝŽê¤$’ó†zÓçÕb]›9þ¿‰XÄß.²=ì†8^Ì“áÔ™^ZvÛÝ@ ³Å’Ør]{¤ëôÖLçéwP“®lÃ6Ÿ@é÷ÊþaçÛ/ëð÷@ƒwϧ-óÊmšœ¨ »€\t΄Ó᳓tò÷×H÷û¡aÁ#¤ãßÔ‘­qq㌟ðž—lôÀFÌ“‡ ëýPì“Ò ÄßÊ&“Îâ'à›¤g¿µÁ½ ¨ÿgŸ0’]\’[‡’Dª6Ï ×¨,„ùÌÐxVYG—BPx` *—I«¹0hÓ ÷/ t®SùÞO“jŒúÂào‹WAðGÿëšûèG±(ô$T™QšµA÷ú‰Žçw%JqØ)éim&„Ï4NìðVwËØçg„2/QìѹZFÒA…ÐÁﱉcq´‘ÀC´Žóv)² dÎÌö¤mÚÖiÈœï^¥Ñc¥ÜÞ:ã$–ãßÓv!°Hã]b\ ®½ÔîÐì-€ªÖ2f·RD—4°oáPDsº’ƒnÃ%aüÛ‘›c:, úe?æû÷¥ tbXàî·Á¥+©óëNùå™–0ÕOÞ÷]¥=oyi×"˜ïÈ>‚O)Têt[\N”DÇ0À‹¦1›³Š&33µÅªýj½ A”²ÓN1 ³¡;`›vÑsᜣ“ŠW´Pkö¨Cq›³S„j=%D3ú‡¨§ÉæÀáP²ò–³¹º:_J»}&é; è øý²“ÇÄ 2‚ÄÍ™ «>ç÷dr4<3FN5|jÍ‘\Ñm€Þ–Y*:v6-\élÕdÁoZ!/×MVEŒ™[gÐ¥Š0øýðñ…†‡m>Æ:ä*·ZÁ3rÞ/(RAiDĈY¦ÝµÖЗ¬ÑÐK>™ª¾ï<`êÃNZ1**¢ï®ÖO_ŠhUÙì::÷ë’ ¶e“ûÖHõ/þ…jCÿ1uÿ‡$DV²'•É¡`b\‚Ë é RvqÃDξÔÖj2u×OÚš°»õ:^ë}üôn†þ´ý¼ð]ã'ÃVŒ«šÀÖ¹g7½=¶ßv‰ËyT¤4’  ñ˜ñ L<½Ù—LrTƒV3¢’,a(A›Ò)jnñ–F^ÈÙNÅ=’J%H»ƒª¸ãdl}bƒoÓMºI‰ûª4MŸã´ÙÉr-%G ¨±‡ÙœÑ¸  ÐÉ’í˜Æ°'K@v$q”#Ž7´ ªïC.ÚÀ–ò¹Œ±Ø|íŸXÞ`Äqãyqäüõ«’#–õá¨SyÎÄæeýŠ’rœcjïM¹Äå9ù«ñÿ˜aŸÀŽ¥iYªys%_ä:]ȔŋGᘄn…TØì¶™jñ×ͼåž{Ú!ïù+l2`¤ø†IþšbS¥eýŸ=§”ÂC«&ä_½“ßhm!цUå¹,qUMšfkÚ'æ¡`½½¢n—@{à‹“€~Øp"¯%{œ!Ÿ¸Œˆ!ŸÑu89¿<GÙyšrÖð) ÀE"ªCÝöƒ?ì—*ÂZl8¾@º[ž}li¹uAžò³9 ó6q¼|ƒ6Õ>ÿ:Ê«‘Ê(Já r5Úð¸Ã ÎZ°”¿Ël.£r/‡<#Ý€ û=ÉŽ'Ê­êumH~+{œè8¡ú|CÒk#y“kG1žq-nUAtÖ©ÜÈþøçb.­^@ñ£Æ¬71äs6̬ {‹á1¢’÷7jv`Ú³éõ]—ê…Ñ$õèÀÙ²èÚò+U·ÿ0<Ç®þ7ù·ƒ…~%·KÍÄo=lUøÎÛf÷~j÷—î8 ½:ÙO›2?”e‚DïÖX±Löuf’•¹}»˜¦¼d‰Ù“¸ÿèj í2fÒ WÍ ÿ.QÑ– ¬fµ6óMªe§Žuœ‘® lö±µ¨”vê>MŒ *c;Їå”퓘ÜDƥ˃*ž!Rسª'Ó2íñ·ðB¦øA€uгÉμàY›sþŠBÍ鯅úLÍÔÌ-¨ügÔNRB¢Ýo7â|KaõêÌ›¾&÷öaØl#€`ËÑÐgÑë'mí¥µ]„¾*¢‡Ç‡®Ô©Ô0-Ë®”ˆ¢t¹,OyèB“ÆE×èý›–Ä™"—œ7ŒÀæ&ZÞóRÙÁí£ ^…Å᯻óôNé¼½2xŽóέà©ç†«Ü½Q`ý ¡SG¶§_îØ80J̪>âÎÕ„ç[& -×å)‘#S4Pퟜ7†;®i©ù‹H½¿á&oåw¿rLµ¼zëSiQš„¿ Þ‡?ïå³Ý„[£‡âU.-5ŽWthšP#ÈW ÚOÁbAš:{: Áùü] 5€Ó¸±Õ&Kgü@ˆU:I¢ÌÅWÎôH§Ä+ÈÁÌ:þ>‰9õ.–°+àÌ—%^>HVµTÞ°=¤â””ôS›I“‚§8ØH+æ½§Ø•ihSÒ’®ÙŸP‹`ñ ËÂõ2–›cq´Â:öqêšÇ5å.àSFMö èšß.¯Ô™ÿ_DFc>ii©ñ©ò'Ѷ !‹d¨,WxwÏÉ 6ŒÊ â¶ l2ÞóÓ$ a7Å·¡ø ¼ ˜#æ…pQÙø3%ÔYÇ¡ŽÃ±íF\é·•‹±t\ZéºDUÊe!å©5—ÿý'¬OnâyDOÍ®þp ½=hÄ”7ð8Â#Ç*ÆmÞ„ÝB+,¸ÎôÒ…ð.b ®ÿ&t€Ö…}G8ß„ãªdsµ2Ò„Éæ¤ Qtñà;órMÆÜ À4Â@®Ù@p{]“=p#pž9°ð/†£­±Ûâ‚áãf ¶!£oGq°ø.ÁÒ ¯m3Mó×xËüíT{ *¦£Ö4Cî\É)%"&­ä] ¦Õ¢i¶gþë*M»ÀÄ!;†Ž•ò· Ã¥(îZ¤ÂWü„%€Ð ïR?ZôYÏOW,z¿îç#o%ºôØøûMÎ$R'k‰i¯ÑCMxg^e¼¾ïw©ž$ÿ…°iOz¿hï¡X]?:ÙR™XCª67 Fÿùa¯“ûwï2 ˆ}æNpÔ@a«K ­;ÎôÑ« uàø(Ù‡«(o¿%¾4¹6èy_ÀdÆtúÎïA7ÉC ¹ºÔÀ¥»ù_i¼äÌ2zþM^I@/ •H¨PÝî¥*‘™ýJÙ±‡©ãâsâÛÞCtH€:î+Kz•ÕµpôÉŸf‰ùû\´ n â€t%¹¶y fÜ»°Ð1x÷4Rþ âbÜ %î‹å"J ¼JM©OìAÙˆÉF¬&ãÍVxè(M Qd¦Ü}IWº[ÎôNóC¢¸[ñÏD¸LŸX€Ž* P½ê¤HôÙ—­’Ü\Ó&tÍÑ£±žA*ü5‡ L5OÁ"-ûCÍéh(öƒ:™áº=8Ç 2Ü¢ÃMx"q$ðUŸ¾D…Ai…mÑQêaŒqàµÂ˜Ú·ZI¹|8•¨N¤ø¿!eRjX QO ÆZ«ªHæCüd·ä4€_nã6E[¢Õì(Ãï“ù Ì ÃršçOXœŒø‚oLNfÛ¸|„C Ä¯áÁs°u¯ÁiŒo”å7H]>Ρú³¯˜@³¨íoÚaþ£4·E듃-Ü8—Q•gþVWŽ‹ ·Ÿ,~g†QN(!½——[&MøïÙhB„½b¾kç ½²»¥¸L9iÚÕŸßeÑ;Ó~¨{t>aN,§ßž1¡±!£ÿ;ŽhÃíþ‰#w&b@hã\ ¸½;€%Ú"¾û8ب]õ›û²‘áæ xã5Ï8|)¼ã?½–T8¿à :­x± š¾èÒ0Ï yÜGÜç t™A\„JœUÖèå8Ö+»y¥7wEM#ºj¥µ$ÀûPl‹¬•O[vüG› ¯ÃàÁ[ÊpGD™„ú¬rYÒÃv@Aý39²Öl•\û±‚ÁçKiÂåÖÉß3±/Okö,´`ÎpÚ“Ÿ¹IÈ…¨Š²%«Võ?|÷Âlý1ɨîµùbj|ž’y|i°*§íÇþzYUŒ¢%3ãQ ^ ÝšÌÈõ‡„Ê5âg~ûl‰8èä.Oo'ñçèJ¤½qZN+›5a+P¿Ï=â;<^d“óÞ+¯ën/ÉhÎS™o4\ °¿ý%ÁÞ±Ž!å!ŽuTâà Ÿ·ˆ(åz¥5îoíaVU_‰ß7¬' Z}r ú}ËÓfÍd Uù! Ý$CÀ}b(ÎöSì]½€õÜ”“¿ &Ö•Cuݧ8Äà±öåß½Yh5#3ˆçWrÒ`ÑÅú%2 ꟦„ žÙ²nh9qwõN*ÅÛ÷ˆ¸F¤†–‹„àñO¶ª%x—ª„¿©Z„¬­"wzïbÐ.«ñ'£^:áÝ !H"Žb¶ÃB×bôeÍ0³G- "c'C[kQe^øïÓ W›°Þ<•§x ð,± M>.]ÒËùâí?ÇMÌú3nϰë¯q‚¢%PjÃ׺»jMO™a™Üv†L(ú¢¨[wÖâU­*îúòñQu´*Û~âÅLûg¿­øºÜxàœd©2KMþ 2‘ì|¨‰Ÿ™.•2ô¨\nÓikè¡) ǪUœÁÂW`eÀì_ȱ_‡—’ÃPq‹òÿ W†²+ïs†.¦h¥PðU¨Gd’¡—°ƒá¼™å§O:‚>:Tžžf(è?ŽqO–_ª®â°¦ô»ÚÔ^*§r†kjÿÁaÄKŠÙ19:]”dühg|™ýõtÃK«Ç/ð휒\;ioãÞ7꾚+SqøO—}«1ž~;)Ýâ5yO͘dþõyòË1M€ñ®³¼%*e3l5SÜaÏŒ€(5¨ñCÓ$Ž?²JDŸª0v.¸R%<Á‹$,[ _B`%!à_*n‡#óc$Qe@Ž‚^ì)˜\x‚-(³ h]åÚ¡›Ú»V"Çó£ùU`/gþÛIdz2$eüJî·j­,ðÅm4'+û¹D¾·‹dƒóÜŠ?K·àænÒû[ÆWœ±f â‰~¤Ïù¡Ä”¬Ø6ã@½.ð;kÄŽOõž ¯eFy­ê¸ë@ïC?½¤PûÙag£Ñ0&üBl€¯°ÀÊJäJÐö¤ „'³"“G¢–sø)pNŸ 0úªo·ØVôZœ/¢ýlL&")™¾;z¾zSÓW2`¥”óŒk7Œ6>"‘ ;¬Ûp„*#ï®ó€Æ>PŠ7J‡ç÷‰ˆYô‹Ã&Í ºTˆü ‹bœ{.ßù ~Ýz’jûs2'ö†UÌ­ó5¿áÙÀUÜ*E~N·Ii:òã?—?ʵȗ~–효•{¹ø3OÛk×zás–T¿¡ä²<b­8_élèiÏ/ž×Ó¦ ŒIGÓ¿.)póWWBS‚ú³=[Hú#ÛZ²PAHJÏ Æxóó Œç\`Ê ¥ çÚ{ ›š2J-tç® FZ«g¥Ò¼ð[cÐ(=%ŽŠä€-ÜlŠšiM3·ÝºdÊÌ· •qoIˉFàôêäU–8­ŠÃ–íÊÊÈ¢ØÙÄØ¬ƒé R³v0Ï¥©ÌZàþ‰gKð¶Âhš±¶­˜î}{eõ¤xHYÔͧýD(§Rgu_H¦µ]cÁ3ãuEË‘{‹•B™^,;™ö³5à±ê÷Œ°&s °ŠÿUÓo:fãÒÎ ™gv΃ÄC¥Î(àÓb T´qÄM É­(ÁÁ#Mw‚ì‰sÀ>âËäÖpÝ ¼È¶E×ÛíòDb…•-ß4]fo`‡Ž RB4å{¤[žˆÃ¯ÏíW‡\2j•׃[Þ¼ÄáeõDݾçèïþÓ¢5ÔÞLæþÉXoéì;á€kÒ¿áW'ZT…{$“O¬ïCíb Éqoò"i5\Þ/5·ÖVïZ@ÿQcŒ_}9Eõ—Eo7ÉæÐ N‚ô(_0ë;ìƒ6hÙ+†ÔGΕÛš8¦[‰0rWÙªF ”Éá£qwEa™&÷·ÆJ›…o—î›Yv‘ .ÙÀ„´iuBìí¨¹ÄVÁ>ŸZתAñ§²–¶×²-îöjƒsm(† ¨nŠ:›3§'žX6Û2ÒéV"U±y9ÂR˜à¢õ óô!*lalM´ßýer æƒÄ ‘3Îïö'Ó•º‚©VÕËŽZª¯4(tõ¹¯£N¾ÍEÀ+î¢Ê…ßXÁ,HŽÏTÃ1&Z!‘™Ö§2 EJtSƒ*î’h_YmE+ÿÒŸ™äé ÏÓƒ·Äë°0lÎpl}äMBÌ ®ß£ñú“—xNŽ÷BüÀßšãçªfÃ-š Êx·à¢Kg»1¯”z Fvßlc_ò´:¾„Ý;EŒ-Ûžxñçè¼ HÕ‘ž¡¹TÀxcüÔî¿C µ}I QØþÄÁkÞc±Wê‘÷RmR¸£1ÀCz±5Ãu½âkúíãë÷<€ÈènŠÿhÃÐ9é7†(r„˜d±çìmågÝh“óÓôåæ›}6ο a -"Ùê@" 1%».užÖ¢(×tØvˆc{y<ð÷uèí "‰9ê ¦íÉâÓ æ)Ÿ¸7=6Dl´Ag(5È•­ÅÈ»xþí„ =kãÔÖûãÆ3àuŸÔkh(m"U¢Â8”ì˜ñ†êÜ}ãW¤4SŒÖN\.f“º¨ -¯Qp¹ˆã½D #bô\2µLÈšiyÑpœ•¯‹É u¬ÑÀ‘Ý(z¾KˆEMž¨¡4€­| }‰_üà T›zËóh©Ô‚Õøaº“Ù §÷¬½þÛ¤ïÀY°¼Ðf ¥peܦóEÃÑÉb¿Z*ÆK´ºdüš/O…ó­—‹ÜŸ]°Gá6ÁfAãœh®àò” ¿¯$Ïß-%ÿdÛ‰fâõÊàf2dÄ57MHëåö4„¢×™¯Ž©¢ $±(Ð>ºUúb²u²Ü»—7–²väøíŸp œ„m`Ý’+À÷º/B‡tJR«åANyªb*…äÞè¤&îÑÀ o«”ü„º¸ƒpœsx7…wèÃÖT‚ý±T‡kÐú’oOXé¬ÒW¤ȧu™„˜–eeaφ™0}±ŸÏ ü)9bŠƒ ÿMüߘ¼ô6ø Òkm½8/?‹‚’»9OQ*‘tdûJ6··ÆÎ)ÂÉß„F{Ü~¾´Ô1EŒ*KÒŠŒ u5Þ^ýZÚž~MÃ<ùdgs!²È“qãö÷ŒôÐöÙ—£«$ý…7ŽðÁÂY*Û©<'”D±y%=cµÚJ´Ý`ûäW°ä/•šïk¤÷߬Æç1Ãs5•,‰1Éóʵ¶ºZÄ<`4ÀÍøÃ¦ 1¼:À®ršJ¹Ú~‹|²¡ _ƒA·–|hƒ7^¯M" ì—+ÌUóWû“þy%åeyŸvL âØ:”QKàfÈ*GóËl™È~—9UÕI7<è›íî¢w¿W%¿kH«…brÜá4¢FÊÇEg¦¢ûŠ­. £bÙD®ùLkòW¨ïòUT;ùIÛ^éoè7 5Ól‚HŒ±6Çç™Æ¾-]k]!ÏmâzkÂ~ˆJï¾NjWXUdêÒUdÌ(•i‹;¿X ó¬WÕ颺N—²¨¹¯ð©l#9¬dœP{¤Mõ>ø$gƒJŽÿ›§¼4†Zb .Û`Å–†~AZ‰Íãädp~ìåÇoÝ#ÂÅÐŽ/mæD#ïd•¹µã°^­'Ÿ·"ßÎîQxEóß"ÝŽü*´Æ’›×Ä“°ÝèÝ7n+‚•Ý[Ž3¤-f2Ö~µ‡æ™‡éTÀÄ™ÑÀ¡8*žf"¼T›íù*Â\vëôEµ)œØoä[\˘&þÇ¿9Ó£g6Ü5eÔ4S@ªG8¸• ]í>_;Ôå·^*á0¾mÝ€X-s|ñXF£š\Ís“Ô·‡XfšÕ­ÍpÓ…íí#GVÅQ/ïÈàhõ3¯ Î@¶M厫°Z=Èü'~&¥RgÊß~¿¯&¬CæŽ<\ªæÏ›£‹nl=J꺂XT`|uãrB=¤Ýº$ÝaÞÐ¥[úvÇ×]ÈfÊúú­Pü²ûKÔO3Ûט…aÂPjÍ×Úä±òÄöÛ<—¸Ph¬¹& ´cïéÌÌieùâÞïçÍŒªªÜ]×Ö+2žy;¿£(>`/KÚæßÿü~¨ñ¼µ"'&¼7>[ ÜY0¬眇‡­Q˜M‰_V2œõ¢€,mw7+"çÞ–ÍÙä)õ¦—‡B½<¬kÍ4û"¢Ãeþ0ÿS…³W*Õñ%= °!IŽÒ2˜Æ>õ6Pr)só8¦ã\!p”PúT™gÕÉ ã/ºV³ÜQldÌá“È V#q}î2~¢‡)|¿¼·9M)œd܇&­f–ÕžÔvÿq>òKcë«Vvæ‹­Á³k>ýíWYCÃé;¤Å<ö&c4g_žŸ™HvÎÎn Ÿ.Ø;¬‘@+íÚlSË^#eX®§ß‚_ð&›|Ô‚R ûþ4–à26S[s q^Œmß^ÎJq›Î j¬ÿ“Ö Ç/Yt0ÞXÀ4:Šè‰>lÉáM‡X½þíÕ?¤fkÝDã,FÃá×G°‹öâú, Úç*`-|µ¶/xyÏVMWèQ·Ô>Ú#ïp¢¨¾ìÖÖWDW¤G±ÙIÍÝèwaŒÆÓÈojÜŨï)‹±k!×¼Gàïöo\€ sëýéÍ’Mëþ;) !è!}•xÃ"O}mñÒŽ°¿[s.µ§Ä¾¢âß ¯ÄÊ»¯Zf:' Är¥ ¡÷Ìs‚síâÖOOÙ¼»Ý¸²­ÛëÀ`ÕÁì÷nòe²ß¨w[ܱ‰+ÁGrâüRðlž"'èÑ\²D}M`Ò³ÐM¤{‡¥'ÐY)­=¼F¦eú¼ŠyÓ(—äï@ýŠ·A–Ÿ›úž‹Bdz„(Fb𼳊&J̪ҫ°)àËçK1ixr£•®h<%õõhxv¦È]WèNל°‹§dZÛó¹Ñ.“¼ø"qýn>ß§ô‰}á÷„R¹‹.Ù¡°2,o>ÕéÌE#øíç~Obm-²†ôç§ëNaôEŒÐr»`ªªó„œ0ÐdgÍw8IëƒÖ ÝbX¾BÁþ±é²?oEB‡£-Š ‘ Pgâ>jYü¢oiÀ kÀY*éáâúFà Ì[4J¢ZÚ¹~ 3Ö)°;·óõ—˜&È“zðÃ`è¦Xmòwq!¡…Øv=pT‰5L šå>déì‘ ÿ é|ö¶3Ý"+5gÒƒ+ªù³¦LYEDÂí–oîÀb«6X¨j)| ~RtFª$å#…BÔSßKUÚ—´x-™30Å],‰ÙÈý×Τœb,ȯê´RÏçé¡‘ÒMÀðÏ‹d܇î&^­Ð†^GW)‹í¡ÓE0‘›W*ÞšúÕ>døM;¡'Í«få÷‰¨ H—iN'fY¢pÒNİóÄí¶‘;¦s­ñ›¡y\i`ë|È7Ï‚¾²¢å3’Éü^£ñ¯. ^@Ú¶3è † ʰivBíÓ#!Ëg—ëL·¯ZiÆívÌT.Òf¹¥ŒŒ%ÛrŽ‚+5‰èöº)é‹ÃÚ¬Cò˜óïrë¤è}aM§êæçÒç=Øg}œS þñ£nu³ÏßÒôï^§VE¼Ôk¤éÙŽ‹+–Ь(`HE¥X? {ER^yHX®<ÐvÌý”嘑¹Ä%f“©–Öâeê^~ªû1×÷Åò#=ÂÉÊMÃ1— nsëü9 jb¡ä˜ùmÒ˜2¯CÕ_$@¡tIgbãtpBûð½:ù?ݲ±Hèêy3°Öõõ±ÊpQX¸°ÑÞ¦û§ét~T£'ª8ÎŒºÁ³Š˜Ðó0¶¸aÕÐôº—pnÕD[ª'@û"½Ð]ô)Â-þ¤ 2[?2ÖF׸Vh‚Êý«Å/*­SûÝ8UEª+„è$)X<‡ý¯ ³ó 6âQ°üoIµ‹ t,îqåñš…‚C·áÔ˜èð…ž±;«A^6ü’ ¹¼a9\C®>ŠÞ4çŠm¦/r—nDz I²íÙŽ¯ÒO<9fúð±‘HÚù÷Bhø‹Þ!…qÇÀ™Íq$Âz VÛÎ˧ª¶þ­µK¹—Úö&9P…ññÁ,lülnñ¨ ÷"=!‰A9´Ž¦&þ¶ç¼®Tø*káÎV ]WZ Ê_.@-ÂÿÿŠX$ö#}‡wÏÆ£ê âº)€H¥°}ˆ‰ÎIVur££ü¬÷K†ã\xïD!,šNˆ4/ëá0ÅH9¾a¿‘$Û¾8UžÎ«(kÔ-¸º˜á¾AD’ +®‰Yò.hiîÎs£KÀ Ïéæµp¿ÚqF#= U¼€Êí.Î[\ïrlùSÀ²è®!V()=Mà M†±?~Â¥…ñHpMÆ—ÂÞ ¤íÏÒuF:Ì»*†9¡XÔÇ}\hû¼D†;ŽžNy3¤‚…6sˆë\l¼õ¶”SD9;7þÑŸÄõ"˜Ë3$BC•©mÚ u+å ´Ý5ð¸÷ÙJ×ÃÆ#5[jáoòIõH ¡3':®«Bê˜EÞÆÜ'ýœ^Œóþa´ð÷4Œ­¼ôJƒ8qÈ?v)Ç8UÐY—ü!òg'FÑ,KS(inþÌ@„›×CŽXƒ ˜ÿ¢‹ÈàD˜pR:kCœApÉ,2ë@È ™ÝÝ…`ýåú½qŸxó݈5]‡0·ÌÁ̧cšŸG/Ñ ì=ã":Ð`íµ˜˜ö.¤å›©+­Ê1üG‘%¨JÞI*pJ*Ve0,†W_ßktXÈ‹?žµÉ±ˆ @c–ÀÉk^›Ó¨çöÁCØ52VþÞA½GÎ $¿]#v'¨·ªŽn«`À%f;Fs®|Ì\bÎØ.ì5œÄa¼Õ º¬ÔËVŒ ¤±–Q޶ƒ}—°ÒjNWÃêÕCž=ÐÔò£_Vˆb޲s09ª ï(òƒ.Þ•?Ó€Á­ÕyŸ…<€"⣯ߧƒ)n ˜íÈêÞÌA’îTBo<èi!匶f¼'8ëçäàèÌáeÊBOk¤¶HÛyiûÞ'0mœ‘~›Û«ÄWʯ0ƒDe}Dì?(ßÉ`ZÇÛ)©ÿ@?¨µ¯áʉ¹’2’c1.æ.øZ!!•!¢` ¹ý_ Ô´ÿúRM™¥®ê¶MÚÐ4,…—ÍQOR4Å€wMp_Ò0/ÔúË2.®\NFrf#5¶†ð²ÉåSSã­— ìgÌJGs|Ö]f¥‰ÐÎÜOº#TŒ¯[SãH¸~jGBRÂáž\_aR©ýð6G S«ô–—ï¼×Zv—®f#nA2 <Ã`§ %‘e”­Ý £6}§:ÍÓ‰–PC‰Óè%* °äßÝ%€)ç2(øºe’RG^ÏÈ6„’Í«‘÷­+vq¢…ñߣã;[Ûè&–¶5u–U#ö(â[i†¯fשz•*ñK£Ð\QÕnÓÍhhö «ûéõ¢4øbNÐã×e’ÓÅmjLŠ`á¶¿ü0$ð9øôÔ²ìRY±cØîÞ "ýwïócœ+¤G `þFó©×4QJcgh–G˜j…fFÓÏ'Ä3S‡Fó1T̳µ}Î/„³«ÖzƒK7E–£³²:¹0#`=¤’öz èÕN,yLY e&;2GGÕgœ#°ºŠÕ_¤ì@Z!:(Ÿƒ&¶}}4‰–„ù¿­ãµGq˜²sÀ¸=͵£˜ŽG/¦¡¹Ð…ge¦l"Ϋb›rx&¹ž)+ FvLl[ªH{ú3P¾É^K¤6—¹‰cŒká|× Ts Í %|Žù:Xn܉)\ù"?¯Ä·ÞûD«Eédp¼,Ê4­é°Çh‚ê¡tN€ô²£oÃybÜ;FÇðÄⓟ¦¯fÏB˜C0º¯¡k¬){6¦µç./ƒ.‰Œ…Ü2ÐG‘8‘VÄê ȓɣP”3°UôÞìß+_|["ÉÎ:\#ñ’¡;Þ6€MÎ]bu)ÆgÈÛýxæçÔ‡¾‘Ó+)ª"nR“OZŒ¾éábÜúÁ2Ö/øm„7fAUóz?ôëµQ.âS)ÝÍø™9؟İw>÷C¤¢u…BÑŸ€P+µØÐß:«5‚Ø?ê(êé eNS ЦXZ¤ÕÑÐÀ˜¾ô¨qê. ¨…Y/n6d9µʇÇÔz‚7,™wŸ ¼†e`S¬ÄèW£×˜ãô-„µ¹yˆÚ?¾úˆ Ñrr.â Ø§ºáü[ŸqÔ¨IÙ†Ò7kç<rÝÎÿqPÅV6ÛX!€2|i‡lÑG›‹îÂ5ñfoï%OúɽÇ/$¡:]û.2%Êq¬ W8¼yŒ`™±Y VÖÓæ·ïœ²­ EÂü¹ÂV>ò96Q.|k–9nõÊ“¶-j¹~èèÔRÖûLê?ßt©±rŒZÙr$h-‹Ý‰j(ÅLÅ×>†þÁç©´@Rçy±,…uDE1}W=T^vHó Ò>ã|E†_TÎ-¶I ¤/Jå¦Í~N–á¹®VvÔÅ00TdТÕ]²òÞÿéI·õ6†y’¡ôÓ&¦‚̬-¥W þôöàÀ”m¥HZ5|nÄA* ¢eÑñ[&>$©‘â÷E*}Á@ˆSÔk ˆfó}Ý”`–%fùXÍ¡©‚êvçú'óB9µgÒ#:*ŽíõhæøŸGßßF w‡´ØÕWF,±ÛŽ®µ÷"ó3Þ7ui ãléþïnLÎ",/@$zGÄm°Ó-cÏØ”éó>ýh)~¡tR\Ä j¿:ú¥¦ö °ü• þÆ¡’Ü¿W:øš¥Ï‘™‡¶ ¬!„[i%Ÿ¤6’ɹ6SXTwê]ç’–&%ãµ R̘Âuï'WE‰Ø«Úý=Ü×—ÝÍY$¡jn j; ìµúH9,•/† Òè! Q,+ ×]Y*­l›|ð›~y—N~‡»¤ «?q÷-8’½œ]äû· žç›üð4dižÎä)v(y©‹ºÛ무•¬:ŠhT³”qýè™Uð1†·Vx¶8$9׿ü[U:ᢿÛ÷ذ¹ º7I,µéÐîJ¹fW80ùn4“÷§ÅA¾AÏò&ÀH@ÙðÅ`  ÅÝHÜ}/Pâ™wÄnYO€0J“öó1År±x“ð×b䎽ڃŒç³è†4ç¥Gà°ßc[iP†ê¦näý¬M–vÅ"Ʀ¿)à.=T½©Ÿ>RR³ç’×öœ.då¶}_( z«éŒ?në¸ýôsz9út]FÛ_Û«õ™qi¤99Æ‚÷õŠbB‘Œ¹-ÅÉ­vi¬T/s qLSl¸¡—WC`£²ï íÇA†Ãw×žÙØRt¿r«¾§>|q¾kÅ$½§NÿUãñì÷WZ`Pd5Å;þ–k`Vˆ·ó5Öº"¾ÊSaž'ä4¬Ö)ûAµ›+öÃPŒ|Æ0˜c^”*µñ#¾Ĉ¼G·¯Í À†®*(bF2þîڹדçÇÂ_ÁËùÅkPËæÐG<+7Ž¿n-qj¼ãM‰™"|N÷…=œa„í}Mvìüq”)á Þ,o·€kt;Òð<.+ ‡ o˜L æ¹<‹ØÉÞ¤Ä[½ÞšÔÈž?Ìâû?}G×êÆ¼ÒŒ$ªRŒG'^iºUõ«‹›‡™1Òg®ÝÝôg8Bä üû׃0eCœì Õ_Æs,.ûÁ)Ì ׸š¾~þ"ólHÀ«;Î!Jr†ÄÓÇ l¯në4Ä"Y†ZÞ»ñ;Ä´'0sH#I³g§A൲5uyÇÊÓ¥‡¹–ú·?tFàp)çeŒì`KŨÈ"ò¬¯µY%•ùš˜=}!¼³Ó¡åwA\2¦TiÊ 1mA2}Q5éK÷õgZ,nœ>ÅÉÕ¥»…~ˆ½ó™náæ[:É‘¶ŒT¼t±Aâ½ORU%–®Shþã-ü®-˾u૎Ýù²³«m+Yʱübb1>Òâ6XgÒ”NMò‰$——#k6ͨíûkúº^y)¼ !l‡jöß\CüîýÔ Þ€}öƒW¥y£ñ=×ëd¶q Óçáë†^ a%F¶­ˆt±CióHcî:  †4k“‘udˆ¿íJ¿ûm*”Ãý¯Á±ÔœÎºƒ§Âi{|?Â0¦n‡EÁ´C@UÍñ4HŸ/YÄ-oš±øÚXÛvwKø½ŒÎçšÆ«D¶!‹»ØZž£9“÷ý&îÂU­(íæ©?c ¨öæ{D7¤fz Áh¥·>QËfPnªt9¥Q’ɾùÉkA&º’Îø)ÿHú,Â8ŒÇ–r¡ž•}kW[À ds¾±/Ú·LƒqkGO•”ðp;õÒðhŠ ÁÁHú/a­ƒG5}4Xû%ò)ká)ymó¢•6?:–4.H¬&ºÉ$»»Zsü%•Ì‘>jQÇ"@¹œ—'…ÃÄ-²«fÉuÞ*ɹG\÷æŒqõn"’†ãÕË©¥-CEíTºlqJ§ôç<¬¨@—Á¾™Ös<¦Oqàäóˆ‘'œØšc½{3ËÚ}øëèøT*à© \’µ@¡îü½ïªÊP=ÈK œ+ùwÆÍ›Rl‡ @¯XÁu|p©–mÿºÅ|üGÉ¥åg-ÈŸúN!áÆîŠ®-ò¾ÏpÇöUР1 î=v?zð€b²héí`PiàÆ ¶W]­áÜ{jû~ EËE£ºCs`’Ãø¶˜d([ ‘Êía-;=¢âºpÙQÊC \cæQWêNmëôÍ ÏM’EA>?\—d7õR2m?#Ú £ê(#]ù1Pd—ðNh U=ãZ*ÝÛÒ(§G`Pô *¬5e¨ZÕ‰,F-'µ¼õ>Œ±èÿA[õp½}QC™Œ”ÎïVƒãžD÷P ‰,XÛ§§a–nóN;zÌùûˆ 9è°ê’]áÈjñn $z™£â‚«Ñ/žx¤¯Ù¸Ar•Ÿ~Še4 $)i­xÊQ¸µ”ýõãfEµ³¡r!éá(@ο[óÏÕ#ƈ®Q§ýa;éæü7º‹Ÿ'Fœª—/4€q2Î J@?»­^%é›üà&†îLü¢KµãJîoM´ àxÏm+ƒ0bY(mïäΫhñ³Øfù´ó`}^±-©Àñš—X°tù.¦‹ià9Dh;(±¹_Þ®õœP‘—+€^€6™ß@ã@˜-¯+¤\‰¸iWÔÔmm«x˜ü‚(]”É]‡ œ¥ jœõMµÖÙ·YÃý¤2~ÕëõE~³à§âr¸3BiÐò ,9W6ÔÂ;4!™§ÁoÙGÝïù”Éä)þâ^3JÙX«b¯É¿Ú˜x+¨Åóá %ûìqþ._mÚ{t¬¨…™©gÀ.&€1¶{Xwð×–‹Û»8$•WÇÆ%JDöM9̦i±H¦ÓLj‡®]zØ\ù}ËaÅð)È·gÌ^€ÜPòG‡£©¥¦4øXdŽI¢œ êÊFiÕ}ÊQf•@hx­d7Ê0øêÛsOàŽ/þMZò0¡£Þ³´{³t›<Åû†4tdí­ÌÁOüA\Xm¡™1Ù«¿" ¦2_Ë{UtÀ±Æ‘+®Wx:®'ñÎPŒ><Õÿã÷¾“ƒÈ¨[œlþ!^EÐØÔxé4­ ¿-ª!âòÉG%NÞFJ呜afÎlÓP-JØâÌp(1‡ÀUøìuëñOÕÍ d[<;³BÁÜ‘©äÀ¯‡9˜ÃNLDÐ)Æ~º*ÃDoë¹ã‘º›P§q¨Ây E¶”ð{énÜÀœþw%í~£Oh¹V¥ý³3—HæØZ±÷"üŒÙ©åwñŒ%sÿ§zî¯IrÂb|y«ÉîW'Ç]‹¬,9Êæ—Ûù‡ýC¬Þ…„á7A¨§MÕù'­ƒhÿ$Êc,p#ûÛgVO“’ßGð«B× ðÂÂk9.çã±d­JåAìãLÜu“(Å 3zA+ ’¸”¤¨ ÑÏ4>ÿõ¹îjòá>žÝ‚©‘cý€c£¯[;°+Í‚BK¾½Ò+ý¶Uwº²mß7n.6ÏIÜßö‰s¯‚eé=ßhäT앱²©°+¶Ê=¶ùæâ«C÷Ó[´Œ@Ÿ;mIiD”‡Užp4ðpµ'ÿu¦£ÖÆW%T_hu¥†F£úÅ+.÷|òLÑ. ¹øôâéÜ96*ºcLá.¸«è k$ê ç„rŸÍ ¨¾vŠ×"(x+8Í•mxpøpn¥x.n̘#£­*^…gƒoÖ€ž+æ«v¡®{ŠiàÇÆâé6ì[ÆÐä¬ìüÁd5Vû:6«e€õ$ÓÖÏçâÞ˜x±óù¥õ~¾ˆ2äCéÓË~·O¥É¦xa !»Ã‰–EÎøû‘çiÚvQÐL¯ ™¥#f‹˜TÌIš€Ãë¸îÓóJÉâÁlz*ó t›ÿRc¬Ã:B ÷<¸cï³4ý²Ó€ Z! Ô«(;Ÿ-òF”v]^+[L.3è"=Ú……EÚl€èÁío\#«Gé;K$GÃ@Ù!/í²ü‘â=ìhžÝ»ªðîw7k}§œD¦xÆåòý7NLQõì`jT ž_B•žÙ€D„¡ìU÷…u¿RqH+wkREœÀ„íù±Õ9ƒ:säWWü;R0iš À–æ*ÂýÂ>Êc hVn¯sRðX|à"¬âÊ?;íïšù4d·a)Šº}vÀD™8¯…Pm*Ð-ÝÝjfS¢ÍiÖ]jïmE9½&‡Eڦן}ñ?÷5S¡¤š•Ò—ô“^ûH|D‹HÊ£Œ¸¿à4 ‰ÁÑêaîì©•áƒ­Ü F+®ýþ¢ƒÂ?fH°aLI4ÁϤ©¥iDÃ*ª¥üÀU u}KßL@¼?ë¼:4TýER³ÿ„ÎTÚTø7o]ûSKU©ÞÚ’­þ-ªæ\²AIý™¢ñφY<] -NZ½®K[²UëÎvõ$y ¨Ö×2ÕSÙBþø³ZBÎ_.øe<àŠ]Àýdvx“Æ,¦ä¯›ìÌoŽyLòïbxjxYäœ9[Œ Bˉv_Ø ·®ÕÏêŠÜ0 ð¡uèe€§›h }@ùgYÚÀó “g}È_9uÎV›QôÂÚ+{X¬c¡:±qfÌo&Vê¨Í',Ts¸BRV×aK¥Qʳî¸I×OqÅÂôq«Öðµ@%zü#Oš=°°b%9\$ŠsO®>3»·Â%ׂh#ë{»ør³aœ;ƒ_é–d@€ !ÕVöœ_aÀRûû£®éÐ×!­’)pZè–Æ±Š`ËÌH‚·gÙ5CPVåc>{/¹Œþ 7P¼ßˆîiµR›¦æ ýí6Ô’Ó£¹3;;~ÐßK[BõªƒÑ€©vÆ@iêR»ö+2-Î?È“«Œs)ßNm·ÿ=.rÕgÙÇ|MðCÜËPùÄÆþà.~:ðV VMqÔX\Q%ŒéÂ7FWXÿá´' Ƹà“ BÊ´¯» PȽýC‘Iˆ´ÑþÖ: Õ-b¨XÜó‰Z^žF ©¬c|šXugˆÑ¼ç!€`}ÚÝ• Púè|¿;UïòÊÄUþÏ ia´ª1ë,MˆœIåÖÚ‰—>ý‰ú†$TvUàß[`x4ξ¶Zþ¸˜üÈ`Wœ=(ѶӌÇ8HHÝçþ­e‡ ýQz½Ì‹/kOå_é,\×~a+'õÛ+â ùo÷ < ºÒâûü9o–ÔóCenämgƒ“ëí‰Ç#A_jJ“ñHúÄ}˜ø,曡H¥F)­y¤Î1Á¸’‰ ÑµxuƒÅ: kNt³oÒ2õ•%Kþ¢«ºAP€ΰVÛÈjâûkë_ƒ­Êή /‡YR‰û¤öáô¯gAó‹J½=o±PðØ×giÌÏ×tPaëö¶ :}{òäËÜæì§ÿ½ ÜçnvhG öÊYžGqU„ÑÕ¼"›‹ ¬iq@xÔÖïÀXz {~ß’‚6‚Øžc8ü_`q½ÂGi†((kòî«(–® ö¬º¨jº„[M Ï”‚>)üÿBÏcó—ûNÿL/#àúZcfƒÉ¨ØÅ‡¡­%ÿàÞšF,|šãÍRðGùW w®ëlTÏ›«mìcÏ `@/ ˦û9ay±ÕúT®ýkõ‚žô`†‡ôÈAvòB:š¢Õg¼ê¦QNO8– žÑÉï¤îÎøŽK“Vl›{ŽŠ0ìfe?²‹etÇ=‚oá¬- }"ý ™¹£É±²_*WÙ;o… Øjô?BþæÞ2ʾqc$9^¦ªzú† k—ÙÈN¤íW(µYÑäÄXˆægŠõUÁï¡%€9§xÑ÷L @ #ÆqE´q‡Í0ärh,dÑ‹Shþk‘fÇú}O¥…¾èW1L ûëTF\=q\4ÿ¡ÞÎÏ ý¼3DË[04ð#­ ûˆ÷­;’»æÄG•(°tUC­ D ºb¨s¼}F(ÿ™7ã7àhx›ïHAÌ#±ñwhaärˆzöTæ˜Zx€r½ß¹9#IÝ%=ÎôF6­dô]ž‹+t«$Xÿ×Qtï"Eàñ>¨î¤A±‹ô[žgVé ÌFá‘Ã",ê/¸sH~e¯ôëÄ?Yƒc×À‹RXžpYO»FWžƒüÀ0v·"fdºd•T’Òÿš?…Ä8•±[Ÿ®©P°ÂþÁç›]Áyaåí´×OÓŒp{—Âo²ŸØSVrUeÔÕ]ÃHÑÀvZ¾ÿnð|Ú䆆¨€¿cA5Ü3?‘ÁÔü:¯Ã,ÞDµÔ…õY cª¼#J4Ò úÏd¡èÅ¿ŽÏfV­ß³F,ð]ÿPºc¸?¶0òS»9t-ö¢Ák3üŸle» ¿Ô{j”î_4v]B ˺07a™kËØ¾ ‘Zˆµê*ÿïèJƒ¬qX§P;¨Ka»ƒ·€tj7SJ…ÉC7p» 3Ëâ9å÷(ªD»¦N‹µ5}³»ò‡;`#ÈËüÿ~üª¶`'Ö<²ñ° ±š…"†ÐĮуé ÿbÔ÷"‡9Vuð¼A”¿0¹ve´oÍ26þ%¦À½ÒŠphxPNÛ_5/GøA=1]î1eëÝ;½¹”öóS,Ux•ió%ºpÕ±béÿ½þbRa0Ó%°UH­PÛø.ÏRß #K¥ŠæùX‡©5'f•šº·rQïý³ :¦ÊµNWmÃ{Fš±Ý´?Æ1¼;ž†aš$¿‰oZH ..2Œxëh®¸Q…ž c§ZÀi=%0T÷ŒÆé†y_!Ç¿Î̇¿£ÆgAaæiaÄ~Ÿ†ªä DÄw;ÿ¶O”@d1þÍç\é”»ú•7®è*Y–åCo×uÇMM÷· Wéìa…Hj‡åí,Í‚N0 Y÷ýWp÷a Öº¼ÔÛÐWÙß!J¹‘nB*óy‘4Ýe®]I…(…X°¢~2ã*þ@·¥OMN/ü0ù¦ý£YÙ12¡©ýîÀß{§(ç Ã1Ð%X^ÃFÊb „ʃqeºQdØ€ÉÅIë[¶.ùiUY¹ë½ˆ˜®%wh]Cù  ½+(¬²¹$˜j‰vw›ò\my¥gïÅŽñ <Úð;óp[>Õˆ3ÕÖd` ¿\èãŒÐS«¸¥xd g«ïËÛ—utºËd5]=ê·!À£‚^©Ô -§P£7ëdˆ'YäùÕè7*ÇO£0^ú SQ¤éˆ}‚¼“òF!Ø (“ûÅ6ÇKA Üä—§4¢YðåÞƵ,-)”W€Jøoz!€µ6FåW †ÒÓäÕž—_åAÊü¨Ú¾É—ø Ü#ç«2¨C|¸Ã$ݳX‹ò >ŽŒ"MÚ…‰ RQ cÕDm’9Z—Q™w¦F t ¼œ—ÌÕ÷ô‚»ÞùÊzG\ Çh¸±UË𨀨a^êõ©9w¡?¯Ñ mÍÈd†XrñÌ€ÁœC6×ãÏanº"¸õä¯úi3‰PàÉ‹WV¸XÓk^¡Ø°Gövð…JÚ¤!ƒÅº,Öÿ àj- ?ñ=X¤¤ßÕAˆ ᔄè : ó£¹ùë _Û{L@”üL|‡ðغß}÷€+¯0ã‘1ØÉžÒ¼Y±2V5·Xî ¹›œ‰ã9Ká£óaZïY cXG9òA¥`µzX$× FLš9÷´ÀùÐ[A§¶3¼†hüz©¥GBRD®·ûô…Èúµ ¹ åJ­3a¥¸ÊS¨®ö{ê¢ >ZñvÉM)0òl±¨šÎvX÷Á#‹fļXöåÎ4Òd±‹ Ù‰Ÿ?2ŽÍÒ–Ù#¹,ÛëR´î»†2 Pf¡òÙâÞqxZß dHBnG§:WPP׫÷Rä X:Y[½%ZQ~¤ÆZ­ FÍ£â8´¨OÿùÏuàž3½ íå1tÂ}0&=‡¨J~iuÅmQýgì(ð4:-Yðë[Œ]=½  ”iÖcÆì‚¼… 'ŸPaºþ6>1cð6÷™S HññüºƒM¦×AYÆSçb‚úÞÀ5„Zm_æ[S ±;äß%9äµ/„«UÚ- í6 J²Û^Á$ì/ëX@½þ«R°à¶3„Ↄ09fhg¡`î3V…Œ5X½e€í ¬]ˆUFB "H·^ÂZ—¸2㪈‡·ø'™EÿÍ!6®1¡ÎÿߣXt6¥æ™˜"—j"*q—ᦇ _(6W™~iÏÙSÒ×jÆý逞Uác‹!ªµ‡ñ‘Â@c¤dæðÿ¬…˜lÒ^<Ž(é¶óFîõ|0Áˆ íÜyîM~§¿Lí d-;]†6Ž€‚7-lL?N«¡åÜAý>?2Û½\n„ÌvؤÅpŸò],5…à¨üsLÞâyÌaû@)´ö7+uG!—Söâš#’€a¤‚Ï#Ù/¡öÈ·À¥EæZ° Dã_ÉÖß ¬M×eR³ðœu:Êâ(}ÞÉf_uÝ´¾—!—Àé€bØ¢9Ý:Šd€†[P: 1i'HBy¶éì a”&Ê+ç6¾2¢qU5‰FvÊmf„Ëû¦iÄ[ºåµTn6uþ`ÙÔs LÃA9úÆJ88úfHÇ‹åtŽ)T³ñéö ›e!Õ.Ä®øõpt°ô°¬`kÒ¨õ*Poe˜Þ©‡Õi²I¸†Ù0»jj%ØÛbq½¹÷V@"þ1^¡âîfî}¹LCAñ„@9bUò^-’׉Co!l½c”kyíw’qB®";š0‘ißn¹îld"¾‡É°?D×›J|Ù†¤ôkàÅ<ÏþËìœÍRç×á´3ëdSÅÇE¶è»${ÔaœVóÀƒÝúô—ZG^J2–¤û%ëpHHþÒ¦ä˜E(³×½¯’E·Noë³´T3ž‚àÀª*¸ÞLÍLj:j™•ÝæÏ&s¸¹U•S¯êÂR:;Éã?ÿÅ;Æ1[BÎÃÙƒµª+gU ­–ð{0µO‹›vœ!²´Y_ÿØ€Y§š’¼ƒ¡®äè=C!_Åï~VÝát¡Î.˜ëJ Çp3Šx=¤x«$C#~#ö[·ßYÔ\èiÓ$gW<ù:ÝÁ»6 CIP$k,9ðàZú…ä<&èåVçYkp´³Lùpc6ê88qŒىɈB’ÿxµ&(ò~²ÒÆ2®™ºM©ÊÚÓêÌ.ëê„êέś@ë©ÉEW=Pa:ùp8õXÊW’¢F2g¨L}¾%â¤"ŸzÖÇУ˜¼QПOy{_̤eCµÕ7BÌj»xOMQŸ¯OWÊF bÕü©ññšrF48Gô¨W#Ý¢Q *ý&L'í™úæŽÀ›¿@‰At„Χ”úd’/‹‰Ê'dÖ¢•‘ …zõG*­ý¦mÆ™¼‚Až^p•4h!¸,øC‰‡öœôgeKÇ£,qõ´ønä^y@dûtY€ 85 T?Ö`ã“EVwt뀇•w%]ç1Brx› Lr‰ñ,/äD&<\þó¥öÝC !‚­ððûWZ6z_ß À_'nø;{5§få·ʽ­Ð8žÉsqxŽ» |A*]0&¸Ù6Àd²Ùh©KÆ*å#ׇóêÕêzþͦdýTVbíR5ðwȪǺÉLࢥB¼,vS˜‘©È*¡fð/Ð p,…m*ç­Ëµ˜WfÃоþÓÖh6Ò0œ˜{ê0O !!›lì BßY+&-S»4«—œ³Ëî5z»—Ãï,%3$²R¾‚,UUr¿¹ÕàÖ-H_0]fEÖW§ÀŸ…0Â8БÓx—Ò—Ç5¢P&:üwuÄ€…¢îæêÎÌ*ÐD¦z·Ææ˜ÇŸàMb2I}ý#—/*|ƒd…ÝÞ‚0$¬I(I ¿ ôðrŸðºDʤ퉡å«J<ùr¢Ÿžú"™é^f*qF›œF`z‘mì¾1ï'Áèÿ0ó£½óXDÖö›——Æ ¿,0¥\˦iã:0)Ã^ý®x’]¯’C1y‡A­D°,sS?—OßZ™ü€:­ÈÌ–¬ûxãôOú4ÄÙ­XíäfrSn,(H!xâO¯|lÀ–ÇŒâÛÒ,R%†¸Â²4uSËe1¢áHGúæÝì´ìiã­'€¦øO³0»Æ¿°wÁ 4xÛ0á€DÊ_aFô\'꘵³¸@=ÒµYñBÔr¶HE¨6)¡Íý NhŒ ”¯‚Îü˪?Gw>öH—ZŒª1®+6T.ké…ãTÔ( «mœ©+-¡;“Ë´mÖß„2gn¤Wò6:v„_Á¬88jpu°²rŠæ;›×¶Ú<-YRò+•À™{Œø\ GÒÐX‹|²Yû (J7¦öéO í^mËÔ 2B§5·ˆô"޼OðÁˆ“‘¼i×”‚®€ Ž>vhY0‡ÿ7lØ£RãäW×SlÉ&ìS¹j ‰ VH÷*#ÜÆ€º^I,ßËV[…¬ZµäÉM1åJ,è£× b,RÐ…N aïÔ²Rš3WGpÌ50ó%w›AyÌ Ôõ2)½—Œ§ÌɇØ~S¾3Oô_t©¾Ós"–ǶŸÙrÓFkWÇ›¶+M<û”$‹{óŒÉ³FŠqªVíªcËS`l ´µÁQ_ÿ8«ÛÏÄI§AÜW£&Š™7á]Ùr +×'8ðzÐmº+ÌŠªé¨zaL*u¢¡ÉZô.ÊJ»ÞtGfº„î2¥6ýéõ¼JÏãºgSšlºXìF—?cô¾€N0”úÏÚgõž³i9ÅÞ®äg&8¿×uõÓFÓwD_zÛ!ÚÔVÞD%V‹•Bß8"Ò–ìAáïäJ¿[¨ò¤¾ô}ùºÎB™8‡nSuGëÃô£d'p"—l }:k¶žM‡ße‹žÅÉ“1¤A*IËiôƒÐyË5ÿYûŠøòR;c7«rÄ”eZú˜b‚™¿3¹&ªŒÑ»¿({Ädã¾Âìž9s$x7Ò \˜ç] ¿š‚¼ãÙ¬ù9ŸˆPÐÞ„E½°dàÇPÝ8i·“Yï;¿Axý¤Ñ@L>.:)ØÕåŠâÊ Û•´Úû0|)@3‡Þñõå­ø¤°= R;[/cp ùIwjÚŠƒfÌÙnO^<ÑB`„cÎJP».³Êÿ±Ù·@“ÝIo˜ƒñ:4ñN]ĨHIöª:Œp™ç0u6ŒË·µç°©¡ÌêÝìûòÑ(€¾Õv@®VuшØÍÏÜ4¦¦ÂíÔPrÕ£ÕDZ…x‡ÙQýÊ®÷Õª$qd^œëèc°»¸ë4Ô‘©ÚpEþ [§Ü i˜ï¹©)ºb‚/äÁ—‰;Ó—¹® .N fVâ²Ëö_æh7Tßw}0«‰®jŒÄ ŠW®ÛsðžÃp"„®§ÿа5]cÚ‘égx%—åYŽÁB›7dkÁïM3VXÊàeQWPÔ˜‚@hÏl•é2ü·lÔôÀ?ÔI…:‰°2—ÉŸ ÎÂ…L½ÇRÏæ°3ÂÅh;{Œ í’FNÿcyéÎ'%TBçb×\"þاÆ7Ñ>TÁPM÷Ì0-–ªÝQûN 7†ù}Ô*Ì+4Ë)OÍJÝ©PCWß“…vÊꈨ»CûˆF/Ù¯¶ÞhQ¹³Â={Å”Îíô%ºÝ?ºÈ–´F"±}¶)«Ÿ»[uM”Uf>½9Ñwܩ޴„†—½¬ÑAý«Á[óÙKÑB²ùê_X8¦ÖÎ} C¿ü,Úõ˜{|9?ÈVK{PÞ)«Øýõ¶qïuqÎ4GôÆHxxþ÷?BÄy ÑAX'¤] ;Èu<­þœ Ýfÿ]›Ò0lK³ÁX€¶öÀ3§ó䨂TÆ%Sú0W±É´¿è„ J2¾õô€ìƒ³ü4â#X;tc®¨CFœŽ uféÖ˜ÊlÉ÷òx‹Ýy­g›#æƒÁ^ô”æ(‹2o•Œá‡ùŒ\ˆ—s‘Z«£QcÆÉ·Ž‚Ç3·Ã•S‹iÜ…(®/s§z¥4“ÓêfA1U»™Ü8 k¹iu†`@7U[½:Ø#ŽÜãmYhëÖÉmXö=Í$r<Ã¥ûHheÔðj±¼ÜQ¸ÿÜs­$®þ˜áòk©ß¾ª`â¢Ù.@ñ—øzc™Èæ7Ú÷€Œ.¯|÷Q‹ÕaÒ2q‚ÁEé%ëœÙüax Òpm_ÕX8ØWä$ÿ8òïB´¸  Š¥Ohªþe¬€X>€ÔÂ1 ʕ¼LbÀÍ’p¯Nü*·õÓèó¯N’ÜÆ –¼#8·)(!ƒ qÄ<Œƒp×8×s=ÈÜû³±G²±0o¡À÷Ÿ-u(™ð5ÊüìܘްpàÎ0¡ãcú¡Q=¹,R@‘&ÒÎá$COÍ÷RÚ¹>´ğ*á鎄´S»»ká@µ#ÉËC6 B>×@""VØã†ª„3Š÷ÉY¹O0Äô«¥'À4_1nõˆˆNë›±áA¾¹É¢ºw×~üŠô°o¯âBµíúæ‘ ±ÜÇ‹ÑqÓ)–e&‡æÕG Áá`8Pßõ'Áe~.ëdcæ`–æf›j"çmOb v4=ÇÇ,e tÐy æM#ë"ãû'Ø`pFŽ0ÙWÐ5³oÂ;´AR¼.â¾ßc¨\óý¦GššÚ HqvvËç~ö‡ë¦u1‡“Ñ÷#óA'µ"oÌ säfq¨'ob…¸êèr¡†´léo⚎֓vRï\¦ 9ãOg“\DäR×<ųoZRÒqÉî«'‚¥…±ÔJ‹ ˜)ÍnÿKi³oÐ EmeÛp®ÓŠ|m5?ÑX€ ñ5HÝYÀY'íHØÅ-¢\E L…2£’Œ•hÈvQ‚òW"ä³µÏÇ×ß2,ëÑqW§j¡+ÖÅÒ3ÐÓÇè¹_±Ë~:'9!Ì…J¦÷/=Мè&]ÿ]Äi&¾•\‘ÕÕG ­²¦IxÑ“6¸‰hú Ví¨4†šuû9{{@Ÿ|E§)TØŒ‹|„rx"ª O}wë¦@ÑKºSäÛ°(DÛÖQ¸«²ZüáÌ0ì̵þžxwKLAZަ‚µ¼y…«…ú#Lí9&¹2k «cTN°h $Ï?ÉaýGZVÐ(¬BVÀ@Ó§tÙ&›æµ5Ì îEJß„3_ü=ÏÙ:ܼȌdR2 ß1`LTa+—¿eêyãI1–+ZªXØ÷†ÇhIœõet÷÷‹c¦ØhÀÙM…rÞO“2Õ¯¯¶°#’S2 wчâ5YÇç—š”é[N²›ÍKj2xÈo†ÖmЬlÃ[€fª‰.r1¯·Ý hˆ­æJB·É§¦Á$Ï-“WÚ2zû.:Tð`…3µÃª…þŸ»ÂÇy“æç}J—ÛB¹ëSãàîí6ÃWÁ€6®T§Ÿž7Å4Ó¸Y¨c·¬`ÝÅ“3œ4·PäØGiiMÞ˜m¨,2œ ¥ëv5Šß^»8jh–æMq€4‰\ˆÄk<‘ÏÄ‹|ʆ›}ÏO¦Ík ŽÉ ˜[0Õk‰²âæÔ áøïðt På"Ga{>ᬓó€mÜhô¹.#Ü·ñ}¨¦Ô‡Â+E†Ôà€”õ_*Á­ ŽÃqR2«UoPpÇ—¼,@à´7²Þ©dž‚4¼d°ÔÆêØ¡NÿÇ.Å~⟒Œ‚þT@ˆ€rÛûrW²¬x¬—µÍbÆOÅöÏóy…zä)­ ¾â«Àìiö™¥ÅíX[íËUæ ²ø‘ “ÙZ± Ñ*1¢ví³NÀ¡ÎµN®ã8‘§”@]ŽKqnéœ }5“$,}€!3™ZÛ»ùÝ#%†*%*PTÕ'‚ Mެdò|½±fvÒeJA·¹µýùoøÞA6fálc¿?o¬èÂr¶ ¨0ëá`Mã¡‚Š))E”~`¾Y†~[«ÿ¾Ëý.Å“xs£]È(ãŸe4ÉÝ{Fàw`—=Î ©ûLæ°Evç"uè3CÂ&Ø'žÈðÜ–a¡ñ¥käD³Ô…'+8@”VîEÒY0|d°æØUâ†ì¸Ó;£ºÛu»êÇ¢RãÆµ?-æõtÛÑÕÉ7.ï̘eÆ*w9aÉ8Bp‡uçÔF)³ì¹ÌµGu7›RùªgËÌ?YŠl8~vï9¥_ò†£fË[— ‹vká0@†oçÈS»!¹Z"B”÷Þ’“òê@€!…Ë—•Êá}#q:¼~ô¬š­ ¾‹.MäÝWÃÈ5ˆRù,À˜fb4Œ‰ ·ð~‹Ÿ™×ªaË¥…ÛBË œô¿ˆÝ=ï[H­J´MKEaX-ʮ҇Ƞ‰g¸Fb)!—œÓhTº"±¾±Vk¢ÊÅΩ”îÇ$å2`¥¾¯ZÒ‚mR/Db``Zcþ?nÁ³gÁ›CF œÑì^︧§†QÇÿÚ4 ùlCŒÈÉEÕí(™ÀÓäþp>F‚-À} #¥\ìò®Nx„fAL^3F‚EH§î—y!öH•c;à»6“^‘•C.í…)/ŸµÌ«úÅÛ•_Aèc7©ÃûS–‡´aBãkR ­ Dæ3ž©{}4%ŽÂE ‚çÕ †Ij¾ø?}‰ÍTr@:lÕT²º2ØÌZz‰ââÙV.§ÚU“ÍCzÓ2ZQd8…·> ™]œËãOÉ]Þö²{%ÏÆ¸u0ƒ'¥IwüÙð½U ‹xvð«$_Ü›>§sES¯D¶AñÑÛ똩¯JhB^©’e‹?UisUèsœ[¹yËŸé9 ÝXm … :>öÑÞxå57p‚qû¯s^³ûK«²%§¹±% ΗhÏ@+ ÄmtëI®Õ:Ç8ÙÃU"âgÝåΉOòë‡ ±ª˜“ô"ö3\Ú‘Kn äGPç‘íø…ønóàœXƒÞBW9{[ñËñ0vô\ŒøQxˆ%¯c-\¯\DXÍ®ÌxÊSDçr–ra9îG¦™uZ `|,¸¬žG€uñiþÓz^Ѓ…a˜¹!;›âÓ^' 6œ"6uï'i7+pZŸÎå*üJÏ1þ‡q,t…‹¯BÄö/þHÙ*Æý€ë‡\Ù¸¶ãDéŽÈvoÀw/˜d½€É›—â¡=ž¡Ï{G.hþa‰ùyð¶&"®Ì ËÆ)£Š^XØ;Z½ÍGþ Ò×O’ã‡ÂšýyŠŸK€ò¶±#×iÁ³òß‘ƒ9`f˜ÐñQò‹6 Ú^¡3n¥ˆœèØþSNlDæ–Ûª™ž÷ÉÃv¡]µ Ów¦Ã¢ ꯈ%Â< sk /òêÉIˆZƒÎ*W|?Ëûsà CDIíkøI´á£|ão¾- hÞ)ÃÒ(„©ÿÿ˜³>eÏö·B¯ÂN¾ÚŸÁWL¯‰Ró%x ï‚3²8Ãd¬_Ë(G{Ñ›Ëföé@èÝÀÙ_pþŒõÆ…›Þ,Þ k€d+Ц Õ]eï }ê}tü¼ê>\@P„„ÌüÆ /Žq‹œ†]G ‚4HjfØbE¹ÍB0iG"åFÖfBd¤¦Ê—o êC\)‚]û`öî).€_¯J‹»,ûÙ£(1´÷ã‘–BŒ¨@UGk¦PŠÅÒœ «_Ë*ýIxÛÀ¨ƒphBƒ„ Ò0ÄúÜ$m¶>O‘Ê1sz)(‘gÚƒžk‘²*6„CSŒ´¬%I甎!Á»Šÿ“ŠûFÓ6ê<ÏŽ®¡®—ý)\ÃB¡yá ëó¤èg@÷m(M-ê…ï¸íCÚ9‡Zj-9é§V2…î?õ™ ­ì\¤ý¤‹ÉC.œIŽ4‘Z<î±ç ¦Om©hg-G¶|Zè¾&ôÖ+7þ³ÚUý{<ìRSA3&ÇŠ—}kÔrÝ¡ü)%ïK<¬±ÚXߥò×1”=wqe )ØÞº½ƒ¨x}tm¤áñÉdæ2Þö?¼çpBý¹¯| ºö4>©bîmˆ@¦Œ›³›·³ë©ÐÉÚ¡’³£¶¤ØÎÍ.õÏÍì6§,öDwBg¶yÄÕuì„À2µé-ÇÂV?߫ʅ,O—è;TРœúÌežgõRůÂjŽ¥uNÞª•¶±ÊkމӲš}'…wè‚;'òú­ÃÉB7²âù¢`B;båw¯ñ½[#LAjÊNôº(»…žÙ—¶ç{•;uë¸ÿþÀݳ’//ÜEÛ©ýVoܤxÍÖã9}8–Ïþù©\8íc/€­ÐqÓHmv`Ï¢Á¶ ¼_Ø7›U°Ò\œJm6˜ôŸðg¸Ì*#33 #ÕTâ‡Ðòh;ìp¿¡uq7{õÕߣ(Àªô¡ž‡üW¿ò¾s‘kº^V]³Ø$Añ>ÄÒ–½O[¡0®á3~ T­rŠž/}S Ôž ÉøIˆqÃ#7Zª«ÚM±Ö _ j·Ö=)6«óϼ{`ÛÓiÈ–ï>ûkBPœÊÿÄßüãjɺ·?8(­:‚B–Xïi+åësLÿµHÜÿ"üÁNFþ– ØuJ‹u)#vЀ /ZQ“pê@²!êìi 5èf€$}ÄÀ(5|Gi7ëÌû” ÇÞÈQú†”Àû¾*hPs¸hòGßë<ØÉ¥ÿr,©7c%ànŽŒÓŒIÒ¢ B¯RîÎØFqa€.G•’ÄìZ^tjö&™ºV6D×Í9ÁÝÁgg3ñgÌÿr¡<Ÿi'ÃZúØ {@|߇Wã¡1£¸÷ªû2#¢Zæ•ËN5{&ÄÔÂZÏ{#·*M`åÇT×[%»ªPE,[nÅ.i‘k63zG¬1½²²¯_nÉÌCŽy÷@¹X÷ID‡Ø bº#{ç2Ò+¥|CÞ%tW𽚢¼j'mtoé¢YÇ J« =Ø9K=” Õ|~ŽÀïò°|0ÄÞ²MuBÍ$¯g ØÇºÇdˆƒ´#ÞF6T,ëÿîÁ#ªòØ"§¾ +ASÙí–ìjî>~`A¢Ô7ÔY2)ËTåFžž‚Øg¹´…7Ëá D%Dc›“3y5C;ŸNšþ²ÈÙ6Q½/߉ϕ&&\ò)3 ð{ÔpÅ?õǼîO»Ö¿¶Ðh‘ƳxAý_•B¹#÷pØ#âa_›Ì‚ª²æZš~ÞËÑí‚}ȋř¶¿d©(õ°ÝÂsì̱eu Ýbi”ˆÚòòl6 äší˜±H%ôsãòš(V–w/¶Ý°ÂýW(RâF>!ÅX…½Û¢¿¾¤v|¥4êo’…Š¥uÓŸCˆÂ±?ÞO‘Ù0®Q«Ÿ ÝL Ì‚Ÿ5Ðjx)Ö?¡RÒé­Ùå®4þgaá*G }OÝj*{rS†TæŸÉp)ÃG¢~~âQXçdnº"÷v‰Îg»oR]fÛZŽ›_YÜ„M¤Ò¯ÆIž6„lo"óÃVößH—S€’šã]ü™Ʋ_¬Y‹Ç£×ÚOÂ} ­ À×&" †5³ue!Ô-’G«½DV²˜Lp4&›™Ñ„Òí "í¦™®:“b[÷°­Žmnî%䯡Èñì+I¾4M»} ¶M–‰þ„µ¾Òžî:µxÙ,“Â"L²'vŸ—Û“MbY˜– õ_Þ¢¼×Ìfe3v+|ývf…ADoièBô¯8=@Ò±5nß¼Tb@mŒ@Ö]©†Eê ×”Ö}ÚûÜ'N¿I˜zêôÞGòÅœ»G½šÏKs$Å|eÐ=P|):gP\é¤äμî’x+¾¹<Ñ!2ôÛ;à-­ÆáYÕ§f³AÖº2Ë{?rÏæóÔþ#F&(¿*F+ :q÷^-ÉHF t­qøÌJÑõ8Fö«›çs¦ÅòÒëî~—dÀA›÷ÖœP†%® `zÞ¸ÞelH© £{+П,‹Eþ"2“F<ϧ¦­«JàW rOÔúH‘Üb/¿‚Z&S 8 <µ7£‡\‹„«Ç¡`TŽJ§ËT&2¨#îƒEzy´Ð-Ïôâe‹TEj<ú ø¨¥ÁâAQ°¹*YÀU¯[«s_¬ÚHH‘(„h}\;vŠ‘Š0œó¥«ÅŠLÿ¨Ø]ÙvWŸÒ0¥±0KoÀ4§ PÊ=÷æÒBÅ•Âs +N7%Ö›C~nt¸ökñV›BDÊӇ5]Vu9 ·mÓº÷sÌ,¤/>·Ÿ:N£gMMt,Ö9Ó¤XÖ< _\Ĩ 6«!Sç¸/ÚÆL‰ºlÝ5ØQì¬Î`Ïm¼ú芒ÇäCO¾@9ø=ˆà<ÔÄŒýŸDø=ŠàRÍöfÒ‡%µw”þ!ï–*9)1ù!ñ-OÔ¨lq]½þâÏ}v=¤Úw‡^Ïd›ÌµüD*“táã\ëÔQÁî?ÎZ­;0ö 1 Fb5d^ªž–ú¬ó:Ç8ü—Av86ãjÁèS}DWffN¥ObòÍTœÂFåô”n":ÒOZQº9Ÿþö™‘|ª°º¤¸]l0h"=ù‡uò‚×2:ÅÒÝ"P[$A²¿W(hÝxého¤©Tìé—V̶:È匰AJ Îu ÍGZã²Â]$ö"OŽ8Œ“S¦¾èß缾;fñ7ñ×0´ôÝû¶°ˆiÌâÕVŽ9E4m>¿–™…HËñ^b R4Ñݲa)yÖl)1¿ãžmÀÎñìn¿3O(qç¼~Sý™gðWLTƒu‰-›ðF ÌÙºƒ¯ À!{-ÇdAÔNÝC޵:Üì­^åŅ̃½ŸÀ3!„mÊýÅg›Js<ˆÚï¯àÆ#X«pŽØ&‰ûÎô¿å¶Rw|ûœúkúPƱ¯ÔŒí™Ö¥6뱑EíXR9'^FÍe}"l„³Á¸‡ÙZ6á¯eà™™×Æ] ÀyowtŽùÌ¢º»MÁ‰ì&J!tT%:6ðA»Â·?'7QQM¨Îa"c—ùÝôß(n¬UÓoɧiµWR }:¯é¤ßVsÎ>'³ô/ý¶ì@+ôÿ‹;A7BFn‚ù.ä5æú„Z âËdZhªÜeÂQxöê:u£î}K2$ Õ PÌ'%ˆ%üNÃX³|QšðLX¾ÒƒG¥i6Ä…NŒ±@93rLÓþȳ{Š$@rÛVû“ }†×oz¿Š9˜ËêÜ —÷¤Àûô§|qD¯ÿü«‘ÇRiChE–‰Å—w—/iƱá‰âŸºœ3Búç‘ûÅ^uyèl%É…3$Z Ü EžÒ÷bÒ§êRÎS°$ù¥h,––#½;PC'½úÝ.ô`—2èã7@)Ó#ž2ÝÍœ1Ö½_\rÉ',߇ë?¼rÝç­iONË6ø/(ð&Ó--Ì{«SîàŒ¦ÍÚæ¹ºg×ëfì70 ¶âø[ýÑ•Ítôõ¸4+K¨P’0tÓ©->¹ùÍEàªfík:÷I¢q‰–å+rÿ÷Lµ]®É„."K;!#C—ö•§Ã¤OÕ|³³Ò³÷õ O•EAE«Dž9jO?§Zø˜ ª)XˆwË9mÖCéùL Ž…xB?§]G$e;~íAÚÿxßlœc(Á¦Îî} ÍÞ*Yeþ;”˾€‹\e'ôµ«ü‘òê ®<»Åöjæ:_°&f^ÁO(;£ÂWk^}ùË{¶Þb%Ú¼¤'YÛ”àuúge Èõ §ù ¹«u”9¡àø5‡q‡5+§&ÇÑq×mž`0¨îô|)Z¾×¹3àdõVb?õ³sË3çM{à§Òªíä°2›s+I?ñ\|ÎÚ¡è‚ÙœÛP¹¿úvæ‹mˆÞŒ›þÙ’B×Ý`j*+©‰{)q«¿ 4•}àƒùÒÄÓt9çsYšÉmX^¼ VŒ¢Òëàò’™5Á·Ý·–øˆ·/ bvXv¦š×AßxΡÖ%ý .DçY‘é½Ú ÆÑc\Ï;P8/Ùî„ GƒÛó@vvw^•ë÷éXQ†NGœœK(ÊÔóR‹€)OÏœ7 îXPŒ»Ü»Ý„€¼úÄ|U!µAr¼•°NBÓÀ;àÑùUuXÈá7ˆñ”$ÉUãºÃHÐpVõX”á·lÆéS·a2 Fr-—µàê,8ŒÁM22'ãÔebzTg{i„ß¹å©YásÈkNß̧­­ê öíÝPŠªñÖ;Ï!Ø'ñE­gj]ˆ‹R3á³öMã쳖׌ÀLË«ûJëëWÅ‘% 5ʱ©Û‰Àèÿº»‰¹`¹gà9-qá¬Î^kH!=Årõxf#P‘°»~5jä mXgs  †éþ>³Že]Žº7ø¬€K_ ‹ÛÞ5”¹2EæJ@ÞË„\¢Õè.‡fyÄÔMÖú¬Æ*ÓmôþÛêWz¤Eù›ïv¦^’žñ–—O‡C˜ISQgé×ð¨=ˆùæ>½Š®œHg¸fቢôç°÷Ý»:'Å÷J‘/jÞÛdN*Ä2PiQó‘u|v†Ì¤”lÊôóï × A~ñp® ¼ùôÄþ°1»Ö TIrçëäÞÄ5ßB¨âB8vòŒËi¶yÞüZç2ækp7¼Õ6#J" æògÚ€B²ÊæG9*{F ý’Ä5‘Ô™*DIâÞÐÃïG´ûùUaTËçßKˆO%Ê›o¨ƒÒŒ!„ÿè_ÖTöW_¾2"R•W|4ЭÆ1è!Þ¤H…·LÜÉ1•Ü‘6.ÿAì¯Ò—}\=¤ÞC@ODÜ ÀC\ÖÓM…ëoùÐ<*R€¨oWSÅ´óÃÅÍÕ·6ñõE¢Í³3C_L‡ó“!»ø‚¡Æ˜§Zä@=¯t ã«•C»{Ë ãOëcÉtXJŒÒO›ômõö„Cê4ch—~0DWÂ"Æ¿Ú «Õ?z8H³ûý*jÿ|ÆDíàt”XW0è·K:ÃãÅWÌ'Õjm5óêã—ûõoÕ䬅 x\Öv ^Bx –¢X¯Qžkì6SÚ ¤A«ü©9bà@œ.úñk|õ@]‹— È'rÄèª úÅ¥ƒCüm£:¾Ôóö(49{w·¨MJº¢r!UªŠLWéƒ2=qÅk3t1=¸•±ØP…uìugÜ%P1ðpXE­LK|Åò ënMÏÚ»·HC]51od•£Fƒ­TÙxÖx›N1Âi^l &½Çë ÜÈ IЦâçgÐO6åaJI¸Þ q éÉfE‰ÚN÷?ϦÎm¥ÈÀúèâ0ü=F¢ ηRx±¨NÞ[4¨'ŬÁM£Ä:ÎçJ²!y]¨#¿߯#“]&Hz\ïÌ+ŽÃtQÔèH“íŽ}${Jƽñ$ÜxãrcÂêi$õø_SYìrgìßê™X ?iê§)£e ¹¥±–å-Ö}B8RGîŸÿwó¦i3{‘þ÷t­ëÁJÕ ñ îºB…­Íg½m:$ÁVË?ŒÈºå$ÆvA?Æ–÷¹ƒDå¬ýÜ/k=§™TEkÈtóø×,²ÊGy0þ¸Ì”AyT:ëê3š£ipK++g^ô¬$s§̷̓d°fŠaÖXp‰žìÓIÒwX!(舶\,$ÜÁ+yŠ˜ÁpeÒÉea…ñ>¸ön5€xË⦪õ^zƒµ¨PÖ1{!è%õ‚ø³{DY&a·NŠ2ÍÚ¥_ŒmŒ«›Úzú.:Ôð8< À}TÞPœ¼~‰rXQ}`ßH ºÉ²Sk~8o¨MöóŒ¤qºWÐÇRþÄ '¹3“Âqqä…Íjfo{õîMM‰p ïN"¡1 ‚==&Ùˆ,#Oÿ$¼V¯'’‚&½µ ì½<1KKkÏ!NM1©`9Ú¼¿lWŸ>ÿ•㯳ӊ\µ€ï¡Þe8u0g‡õ^>.>¹‹°ùÓ>Fãaq0蘢.ýÉ.j"œŽƒ¦X˺jŸªÏcIT‡&Û{¸’›ñÁŒÂ9ÝŸ¹fœn5+àmôRÅlèO:ø‘$^DfTÓõ8œÂZ¥i^S U‹ÿËkvo%¿+cðônÛ8ɰŒ!%ÙF8²ÈdÎCdû $»oZ¿Zr2Î ¦g.œįÜ+z4ºž”;l€ˆÌÛÝN£”pÛª‹BMå/8úÕþ³kÎê±uç„iD<ó¦z5ãs ˆ,cùÚ¡PÃëáÙÙOz zƒOKëÒ䩯Yy¶5ÜÎÑ^ɾl}•à¡LÑÔÅFæ·-%ú;œÐ7 Üàôoöã”ôË“fÔׇE R»ˆyf-’Ë ›PNÒókÃXxˆÊ0¥@¹¿?Œ$ÿ»´XþÓžYÏçÆ{ 1²êÅ€ˆ®UÁ âä$I@ë8Ÿ!‘0Õ&ð‡Æ_—¨‹$‚Ä¿Mñ`Ëÿœ^XÉAòe¸©ú}12Jµ1ãå™òKJø5„9ÈëZTW&þuÿnw… Ÿ]ôzÓ?Õ¸¦IC›É×åÀî>iöè?L\õ8Ôoßu%r†…#¿lqŽ!â­Ë°þLXÎ|™jì&/ŸtØX‰»"|fð¬š3»„Žc$˜a¾f* N\qygúi`ÞVÌVô‹=Уq¸GSø¢}Ú÷HèMåê 9@Å…B‡ÏbGÄ rÞØÆn#È~­À¹¾x'ÀìÈ4Òˆî,Û¿Îg3ROúÎtÿ¯ÇVà^GŒ}Ò¹†ÄoŸš€{. é{•¨Uñ(ÓÂBÏ-‘°B¢MÔyÀEè,Aó‹*o÷Yسû(ì> ½Šˆ/>*JÁöÂÉpÆØTá÷éR¤orEn@‹,³KÿB¥| )_¸veLþ§y~éO©/tJeØ¿w—ú¢Æ8È? Lïò÷ú[.ˆÁ]½”'AÉÞÚQ`-jºÅ ’:'K·ð€êÜÆÝ¤»^óÍt†®'>:ø(¨¹Ó| t¾Ÿ¿ªbÑ ¯º {„²ÙORÒë^Å?¨^ÂgÓYÓ½H3P¶vžEW*çì'?RÞP]ïs9Œ¦Ž²'½;„‹[E-˜g†Ž¶plÊð¥±Ê‰)ÿìy€*ŒÔ¨g{‘¼@Rè-_rÌÝÆ‘-!-t×öØ4‚\†ù‰yJ5•tÅãe¡´AÂÅ kzsËÞø'«CD>Ä£–BvÉ05¤—O…„úvÃ<TX.®s‰ÈŠ›¯44Âè£PÏŒYüB‚d)ξüvšÅLúa£ÍàC &¡gtüô3Æ\m¹?lm…êAØPÜ'ÇÑ}Z—¿àªG{×#ÕoŒ6+pR;=.ÿ5Hûœ°jŽ6ƒ„AÁ%ïLÏš „UÓ ˆ‰  ~f}ðgHûµÏÒœæÀt$ú)TÝ2V ðäzÿÃ``lõ{E,¶~“G~å‹ðDì%EÀZ§>#RmÀ½KHBzµs}òWû«ŽKX‘ô߆o¶ˆ`¢ÒùßL\°šl6ÏÝÉI'” $%V2ÙÑŠÜ‹ûf?D–c£¡6ÀL©æbæ-;–Õ6v ­s4‡(@ùͰúo¯ã €Œ%”ÓU·Ü¿©õ7ãë!Áñ×-«R}Ìä»2wën°(œ9Å+™f:jîCôdpŸù3Ó’ƒ¯í¨üé¼Èd¢—¬>R÷ÍèÜa&K Î86•<ój‚éÛ·OTýõJÄ—áÈ€% ÍÚûoŒ>#cуügqÑkg‹nÝa]/*RÁ«‰ ÿB¢2“µiKÃ<`.’3‘V”ü<¨Jð¼âÑÜ)_o8jðn;âº{W§éLŠæ‹öMóo:”›É–YN[RýÿÄÆ×š£¡ës{=ÈuÖ˜mÕÕ+æc[ß´ L8 >{<*t—a‡·]×ß4ßóÕÏÜcóã0ô“y®¢þl »wì'™›"3™ì ºYŽ"›ES@ê³|]‰ÐNӘܪ¾¨zw;힀xvn ¬éÃöVåª)ˆØ³h bîŒ p ó.±ÁYÄ?bÈÙÉtƒ}p„ÚÿÕ–KTl·——JÆZO)“m_kЏA”Ýt4ùæ §Ak$Èšúæik —6 ‰•öÛ])µ)ºµý˜eá\A¼”vˆðõ—4û¶db„ÏÂÿKÝË0•ä¸É³iîBê}åu8€Ë-D$*èõtBÉx¶7­Ðë§]kI¿¢³M;ŸØÇû笋’®AùIÑk² 4Y2I®9ç7‰?z)BõîoStÊsöå4º`œ¿Êøtê9‹€þý—ÄãÎÙ¶Þâ»î앆Ÿ$K$”ÉœkÇp ŠÅ±|»ÛÓ¢3rÎ÷5Nç:âK†ö>ñ÷žl ŸÎ½JÛuR€Æ‡²§úŠ‘zúÃ@ʆÊáaè¯_ØE8aúôuR´%_Lšm"[ C19ܸ\ÛÚýIŸ!Òa‰óc3·Û?¾©’¶âÎaIMãÃöÐb;¯'ÁòÖ†Æ×ÜG¬Î…:7¤ÒFéËJ’ -“ZLvžâ‰•wNX ™ð½‚䇅Æ]´ý5ÐÇÎh:¡FXîpÔ»¤êi‹ý"½-nÄ/OB.Ñ*&GèOg{dA89ÖžóQçÛ_Ћ¢øÜ ±_ò™îz~¤ØKªjAÚvL÷~úŒêã‚ü‚0IZí‘9%è~R1Œ&¹ Ç·Œ?’`ù¾$bN¼–4ô)­‘?M3]²Z ëÃð§R”L5énn´ÚÜçÌ]¢pc=¿5³Äƒ<”<{p7ý¿&çWmŽ… ò´™–±Bñh`b:«W‹™e ¶ˆ)«¶—{ÕGî`ºñz\ªk½Ýõ-£2ŒŒ6Ó†¹Ñ^ŠAYè=ph"Èù¾nªÆý¹ýŠŠ‚i²<¼ø¡½El­@~I5:\1¯)}°Sry¶kìñ¹’V„¡Müe‹¹WË ‘k3 ÕlºW͇˜Õi3”»û'˹m]w.~òµ  Àù#]ökªsÃìÒ"’YpìY!”ÿiHÍ#š¾-vlx2÷á2è›~ô;¦UêPdòÔ‡ÚjaBµpbÖL©aÊÆ –L‰0·çµGƒùâ¨ìâ¤Ç¥ŒÂã`[Ç‹~úøÇXa¼Çík@8ÙŽeí˜,¦êhZbªtxÚRàÏä0>šµu]ˆH‹®¾~µ!ãQy¿|´…ƃíZÞìKýŸ 7àÿ,Ô®#Ì]TH5ŸHMÒð÷îGÓ§yì•e;ÏÇ`»òf€~>tï-œÝ*ß#];-'Š”oJ€7ÓÅ{§qƒ·¤ï÷·íãí²Hµˆ•ÿÜÛlq®‰«òiO«Õ¯yLctêB`Õ5ÇJIñüxÉ2EºìXí‚°ýiªÀyÀ R¥Öƒ³Ê ËøœŸ¢u@$hÒõòIwdÃl{a¬|… t4*»x‰Æ$÷°3p}Û‹ã¯âþÐg8FÊ^·rýŸÓ&Ôê\ëüH–Q›ÕØÌ ¢ ¾ÆÖÔßý¥Õ’EO7 qu+¿%°¡ÐVý7£vŽÿ¼GX«›Ÿ å‹ ¯…¡ "€ó¯&QÞ'úŽˆT#3ù¢TNª"~k§j®l«Î4â$}£Æ­ý»:”5|´æ†OÞ:x´eî{4¹È›Öü²n~¦ÔI»_+\?JÐÚZ-“Ž LâøxFE²­hì!玑õ¬ FX­ÆvD ²˜ú¥"íàRè†]û亞$ѯýŒ«k ‡W—ØÄzIÎÉ®˜?¾ÅîY•™–é ±{݃V×VU¡d¯ûGA{2£*)Ií;Š£vÛÑÁf9…e¯à„³׳foµšpH£—nUä¡”aÍ>ýn²d8šP²s¶Ð¬…ÓÐQ(¼aó]Ñà_¡$m WwQ¡¹?õca)lòg»Ç‘ÉÉc‚ÍÚ7 Ÿå& ö…ä‚çëŠÞÕefˠ𽘄ØtíÅï.G,TŠ>.dŒ£-¦Ò(/%®Ô1íãà­$W¹'|`Á9Éi‘³º3¦ëŽqÔÚÛœhJãþ‰lU9Á+G×(Ó4ïëN.w.ÿú"Y†ËqjûŽÓú2’#0Z®¤™í× ­½Ïéþ\B3Í͸ý” uW =vkºi8%ÇŽxfÆ^Ü}i|:¯U”’s²‰^`•Ü>ÐmR¨Î7,ß>\ÛK¶ÑN Ø1ãV×l¢Â¯ùe.Ñ!Cy¤ð‡%AôªLƒº9ó½6nd‘õAk¨ÊîJ{w{~?%1©-7^ƒ· ÚLCÝ=ÆM¯—²"dr-Æ =^>8Ÿ$Êÿªl„ DXnüþ?ÉÆ¬´|<ÀÅC“äÏ×¤Ö ÅZúnr¼~ms‘–®?ë¨TE†ÿ†Ƒ̾ ÎPÞñSD¾.æA»V¢œ— íbå%}ÉG€á÷̘+Ø4CqÆrfýhûïlþi+‘D7gy_)Ò Ih»ÿ0<~¤=Jêú“{´,æÀçf¢ÀoA¿i"q@+”êuºËF‚¨,OS-y…@œ‹ãYÜò 942y‚`SȦ)ðïfÿË8âè}ùZÚS°Aðny„ø|K5Já~¹pÙ$оÕ9”½*i–Tˆ7” Ô ~'lAXpS=ÒzQ÷¤ å B~MLµó3˜ê°S{ç»ûŒ}µÆ@†¢B\@ð£S/1;Ù0¹Kªß¾¿`öVOÚg¨zf®ÚL¿uZ "áÂu4>Ń${r'i´¸‹Fh” ,ž±÷)L »ë/”xë›jÒöôêÆþ^½§¢EìXñùWHøT‘Ùk;SQ]oìPÀc:^mbî±ÿž‘j7&m€  #¿Ò9à/¥/ÁCêw‰ø‚z~¯¼2áäÑRùÒÐRi–¯BCË)ÙY¥˜¢vËÞ[=õXûa'Ò«$ìÒ/Z3Ô¸ý”¥÷Õä1çòå™v¹Šu²™æŠô˜ ¿ö) önêEÊPqÃáü…€ $~וÓq#•bŠ¢"òž4XâSyõ´„?zÞ1icR ž³Ôuë•UÜÃĪD†B C>8Üã$?LºÞîC{¼Þ£ˆTK¿S%'& GÕ5û~ð'¨éøOK¶(eÚÝæpµvÑð_ípnÍÁa°#@<‰«- ÓšIø.{ätK»-¾x•cÆ×?B¿;–sU×¥‰ r\Ї§Ì’&¤©µò–u¼ëëdˆæŸðÆfÝíi · ËbÑEÚF¶ =\ç)Å5Ã}Õ“L¼#ÇÞ«´RQ[Ÿ„Æà>¼½b»|_P““šÀ— ‹Žth:K GP€ºT‡~,ÄYÃñ |Řö’ÓêصÛ”z5Nj'­¨gA9ì6e’"¸m)àÄ^ÒÇëÁËD¥aÕˆkz¾oOeY†vudOÈjçÕÊ$¿P‹UQ¨YÅ'ÈÍØÓu2¿#ørt9OÐ"Ïlp`’HõVô?8ûˆNªKJB¢Û^f&g¿\½ËËe§»ÖZÛb*7ƒz02ÔWYíÊïˆÕ¨0u÷L;ñrQmK½ÜªGʯÎj ¿Ýeg•¾¹œ»›¤‹©—Egcݶߥ!¸Ùª<‰vhn&2Ÿwÿ¶Òïu¾ÜÖˆÑU¥8ý!ª5„)C;0# æ¼³éîÛ?D¹cä›"ë iT£¡¾²ŠY°·å€ܺÌX6Š8>rØóbB,ßòª sõ©ÁÏ=ðºbêåIÁ>`ÞqûSÉ0Ìl¨Ÿª•´2'ß÷”JÈÂ:ÆÊß ‰g3«Ž’dŸ»s+¡\BŸ2v‚J·Ûbì=ùThÐ ©&êó.h+æv¶Üƒ1áû´v?žwÞB‘¨?ì(“&5dRo…A°¾“Jå®;{°è¥GE-݈‡§:Å«ãS ÛzâU$Á¾§µÁ€¦ƒ¸ zC=§¤qù’¾²è˜µ¥ýiÛªê G^ J+Ƕ֘ŽÞ§Ò‰›Êà‘v‹ýK!j4‘ýtë©ÃÍľi±»Ç뙦¯gÌ¡zb=Rý(Sõ×Ðb%Äm§rè9úÚ7FÓN§rMÓïìYsd·!ß>i ´¤ïðáqu÷Š sŽƒ‚.í•Alt¬Mß‚Öoýº B‰BÚ(±JûSP&¸¯u%ÐÔlÜ×S¸Ùøå¨Mvá ÏÐÄmDû ®³ÇT0(š{–q­4Gw‘똈’œK)gl}ptÐoÅퟀ§q¤ÏÊ}‚€–AñÁ¥þž6ìs–³Ã AžE”XáøÀX9»»nÛƒGRdÓIŠÓŸâÈ¡=Ü>ã’ó"Ô<¸å€ëˆ'?Ë-_„Pã9Kƒ+ÔüÂ&lChêk¯dX¿AãfŠò ¨»¯”‰‰°¿8G‡”^š:5èíWëz$7…ÁhT•Åá\Hû'f¬õTò¦8cnîEFY}àçréêy­ÉzÔµiVªw—yê]"Øò‚¾û‹9Ž Øüi%08@VTOhx4ORË UêUà4 (ß `{ÂqòÕKȵtÐgü$lã@‰ Ú-ÈgúäWú$¬Y"Få{.I°§ãÂu™”òøçzöѹÆÝcþŒ8ºýno‘ÊÆàEYuÞ¶¥Rì-1ÿõ1ëäü ‚ù… µë—ùÙ-ϼb4ïÉžOS‡ŠšîÛCå á›>¸üëqÞ‹â§E˜/…‰2Ä›+ ¦q†D5°ætZ÷L=ÑÔèšÚ  K_^¼ö`ÜŸSëŒg+#P†ßú>ŸQ•ÑÎcJþ;ô·ž{=j€ò„ÖÃö5áìªÉL”)ÂÁ(ÍrÏ16hoÕvòƒ1òcFC9˜Dˆ[ûg¢ÐûL̇*?Nšho²ìi ¬àÕÙ¸\nQ Ý'âC|µô‡)=c·r¨Ø%Þ´[È Ð²¯ Ùƒ–ZrO^:ÿbí­ph˯%ûR)v^B*4ÊÕ“tÝ2.iVÇŽ¯«€Ûè]³ët>’%›Kܵ²;2G ‘VkêálA8ÕÛ_¶@Yzè¡Ï¿ h6x1PˆÎ}×X híÍ]äqÙ‹Áç`$ŒvåÜP/'Õtä°Xq¦;j.È3·´à,NLõšƒ,!¢b¢9³÷¬è‹µ¯]™Óv·~è/þî›/§À»sá’Ì…à]êÔ€—3jNâ®EiÑÊ÷ìme]v “ 4‰QH1[$6ághiØÁVÌR¼TK%iò,›_òIÚ|‹½­ t`øiÛ.-zÂRætgÛýÁK¡Ž9WW³Õ¼¢Zòê[«×›tí–ò?æ] W¬õØ(l'ùPA/x {çŽüÅTrDY îÀÛ|”ŽøÀÓ<}ü:û˜ì3ÊFšì’tBï3b(ÛM({áù:¦çÅ(×ãuÓ  zr4Î`ÔC+Uuðé1iZõaœV¼;FÅÑë¤ö³:µŸ.²Ëó°q¨*»Á>ÓžW4}¿Xúë$WÜ3wRÓ¶‚~’Üø×=œbe„/¨çøg@ x9P¼g`å‘á.˯2º¦¨ÿž?ït“úçÄö„ÕýI·.½9!àB8¨Í‚ÝàêX×™÷䨛ìrH¿³9é©Y”0ˆ¥­zuJÁ_dbmÏýýÓ}E7–[ŸÞ—ÎJïüe@Öë U¹ú§ìbšÃ®å´ë!x½KȹÜÙçÊáÍù¥B`¡™;$ÈöتœÂFÝ×c éìénî¥?="êࣔû#ïjPò" «af“NG÷KÙŸú~™²ü8X§Álï‹E¶$q„ ê :ÁÀÜ"£f¦1ú‘ q«ùÅ•¦zÃ+/\Æ\eVVb^¸Í‡`¨IYÿÙ̽û6-)Ø}Ÿ›è¡ÝΙg#QìCÑŠÏWkrÒ=—©ÞÖKÊœW]åzI̹5ÆwãWâH\& ¹ÔòDÏ HšæÈÒYá#ñ©ªLîU^çÞm‚ƒ"µ÷Ð;ÁªÖ›ºtž{3;kbí-®D¸ŒòñëûH®iK ™¨ q&5çGXVcr>V_“ɳ#»™ÆgOZlÿ”—kBRrìugÌ‚žgÕ¿3H´<ûÒ„W=ÙŽ¢^0±Á|“ƒ;åË]¤2ƒ1Ä}ã0Vï’«Ñlí{ìkýÜÝÕB”è=ãº(‚gP™|îOªj’ƒ»|-SAñËù0$MZ…Aí~pCÿïe2kIwš„%— ¦ÝYw“—mShfmYÀ¤Í´&ª¯ÿ¡$@ƒßûiõEgJ.„fwUާ:0Fn§‚DAšM×Úª-›«|ÂDPÔõº«D+éeð11f„ãhbÃb%7ø;ñ2;;Â+/xj¡Næ_ôϪ)˜Ó¹î8lFÕëÓ6 *¼ùÉ8­éCúÙS ˜#4͈ä\¤Ë–M$ÔNtï6ü0ÒØf5ÃÉ«•e˜ÏDQ许ø}±X–½-Ÿô“õK»€=öÕTÿûÛý-G*_^àp³xÙKP4ª¶ndfa> Xüÿ„pí¢kEˆ Ôˆf²ÂM¢—ë*þ\)“uf"FðÝ «ÀÛ”ÏiNK©˜a+5.r®Ž5®³LbÝ5F0l_ï™eŒ>¬9-ˆ[×之<ɾ˜ŒÃØÐD>vc棭:| dÙƒEfÁüñYñ¥˜Há=ùõg•Ò4Íf;ñ»•ž³äŠ<ÔüÇîâ)°ì0¨˜BBlF¿0GÿgÕc>»V@š.©‹O!Nõ™±j%[‘¿Æy›Œ-›A*›Fs„tƒŠØûÜH½´ó¦b³½¨>_ÄyV ø†kˆqÈ”ß{‰â”aùj \³ÌD‹—p{±L=ØBÃM²áßèCû ¾ Âö“ªév<þ¯-6ãëÃûYÌ×–ÄʾQtzÜ‘J$ÐØ÷|i5'ç%yùg¨“Ó«”‘R4Â\·|TnÿÉ’jãÈñ0DÎÊ ¢3Ók׿äOïŸÈïÀàéâ+Q­¡mÆo‚LH 'Û•_²4ù•o]$Ø ~g|©o»¡@6î)\‚Ú!4×Åh¡ï ûÚEFvÜVÒNÒFFÌÞévŸ@ þà#o¢xš™¶î<§Í†•ÆV7Nø]7¼í€É è‡"—¹dáÞ ÚeuÚ ×7ýÞ5³8„ÑçÿŠ`ßdí§|‡ÿõXòÞ>!íšIS‚~ËYï4|ß,ÅôìÑÛ ¢;‰x7ÍvUš’Ö?ùBÓRM•úÍå½µú‹.,Y˜I@1AE+¤Ò–î›Å‚Bˆ )l>q;#ºëf1ØÍwŠßaoÀr•š‡sw)œ˜â|p §m©ø½±Žš.\òä§‹Èi϶),s ”ÕaVA°Pu÷ÎòÔê®Óa;©iš*‡æhVÓ4Ó!¹RÑ&„„7òFì·ûûqH$<äí§$øXœÆ?½ÒÖ}’hBáº& ËåÞÑ«ýa¤­&™.±™MTI3vP¢%–£@l/~…Ûå&¤{Ï_öç1A ª`9PÏJf× çO;y!>]àq9n\#~pq씞U^9 Ñ•@J`~$¶ðU”Õ+y!xívj[~E¶Ág溳W¿:»¢3âðTM¡Âm–MU1Bui¥ë WE8²Èy!ª.ìrÒ™uS¶’—Fe`sÔŒÌà‰áŸ~>Àl©UMÇñ2Eìá.¤pgˆGÁÂÌÔ ¡,¥aßœm6Ý©¦å%æ&ãÕ¡¿yzšõͳž-h.K[Rihr-Yˆ»/ â×ÉÆvT` ´ŒÓÎt›ù†ªšöBèíld÷ÀVelÖna~ØÝŠäð6kä÷tedÏVü¨æmX»ÙÖ8¥%β§lÂßHf]‰¯ê^zÔ±y¢ƒÕö O—Y„-ûå—Y”ìaî[•©{ÀÓ<ãuÍ$®øžYícr˜±êû“R­fŸE¿˜ʆûzâÉgÅ­F³šÆƒ{®dÆšñ˜Ž·è¸* Í ýÞÊãÈ e[cnehè#$Äö1¸“d& µ[pèÖö7dT^BÛ/ äç3“gw“ÒÄ{M01í¹hú¯Œ6`‡3n!A Œ×CB¡˜}&I‡‚–dÆŽI¶ Ô–D8ÙÞ ù5àÜôß)r›LæVPMé–µ7¨³$~FÇÉbóZ­¶à½E´sÓ Î.­€Ý3²lŠÝdËë DæjÑ LSÇœYý!iÎP°þŒFQ“E^†$ÞÃ='Y=ŠGÎð±lïC±$iÿU:­U^®É¸V ÄÆñ.ÕÝÖwåÈ ¾âd«`…Q7±Ž¹ŸšzÒÜ6ÉGúÄÛåeâq;îGÃÝÞa—"…qÑßLp1ÙÊöD-@å{Ë—>P‹Rˊú@]6¢®lX7 éž“ÂgÙ`›—ñÞæ&tR•v T/‚ßO „»¶“MZŽ`¬gIg´ ©¶ï?„@VüZñÉNJñ[n0É“Á›zUÈ)1c3`GHË|ävaçsB/CÄoÏ>ÙŽJºÃ!d ¢îÁº+7ü½7éòÅ“dZã4"ÉÞºhö‘`¹´:$€ZÄ9¥¬?(%Wza«|âØNÛ„]ôO¡1ü*ʿǴ~÷=ÛÑö•¬â(=À§ÕPª¤Î¦2«cÅãõê»7Q³ù`,­ciXs,îÞêH.Ò‹8 ½ÌâH'…GsjÂXUXÅ_D;g„ÿ[A„ß,ªMsÀÿ ÞW_ÍÙ½ÚîÅâ8•L9|Hè͗μ¹äø‘-è?I“G) ۳ƚ”¯&"¶Ú~(ªÂg9%ÈþE…½Ÿv0¼ð[Í.ãZýGC0ZV“åãnÑ>Ô`'%ÏDîòšŸÅ'×÷ÓŽ„““Èœþá‰hðÊ]€bÄ®aŒäö‹è`÷‰h%Ÿ»#¢»߬^F Ú0Š( Ѹa78ÙQ¹20’4Š™f}ë»MÄ@¦,Š8¢ Ýy›…¦óxŠÝÄ‹Žxš;¶ÕJ—hN» —jL¨œS¤ËdçægÛ_zâÝúˆ)•0K?ý²’Ýœ;P*y‰zmϼÕê*ÚfóðíW›°ÅÅˉ)Ÿ H§ÿË».rÍ4Ä,Vjû‘¸pŒÆwØ“ƒ©Ôäf\õr‰6KžÖ¹²¬ˆò kÀWEf=ªË‰ 7tæa¶¿uñƒÀ“&ÎÒÙ%ë/Õ§›ÔAéO¹ ר]¢½"I4DkÎSjC3½Êê0€‡&•÷‹43³ñ—7“ß<>·1‡u›·6„î Ó3oGK¹†rlît§n±#žÑUg»Ÿ[F{CJåèZü_f®%ô2„äáÀ'ò±¤˜ò“ÒPZ‰¦*Öîa‹Nv ^3 ›ËÍ› {«¤<=ÂE]í£þ ìÀ‰øñG}Æ`¥=ˆŒ×Z¦QšÆã§ë´çRMó©£Ý080÷$¯"Ëyð[&jdª'Ç%ñÆ 4ÝØÒB ˆEï¢ÜŠeKˆö*aÜ6-h°?ÂYHâ¨ér'¶ü(‹½Ó£«Y\bÑñÉ ñE¦2TåþÛúe…s—ª±¢¥,åP:(Sv0ŽP½V ,ÄðŠnÿ|iy$î>=½û°ÝRü"Ãiü¤z]JhbçâwÄÍD*‡xÒTâ9x}h… çÐA˜ÆéñI£±àw~§ƒã^‘g8WäØÀöáÕz¬E—üõߢ™þ ¼¼É=f%Ô  /¸p|ÂÔÑç{à°<¨žÁó±jAƒ{ÚÀ  ¡$]ü4f`Ê2K_23çÊP©æ;oŒ{üÖ„&maòÞ3ÐX¯ûYÛQ½&ø£pmÆÙ•|þ3q‘DNC“VJ²@niWÊ=s ÆâMÉEËgn©ófgéÄJ‰Ì=úéÁoÓ+* £‹îÞ$Q}ó:ݲùT5mŸØžûT¦¯ò?¸é0·¿Œå£Ð¨³ç#¿ÃQŽ¿ò¯%h½”#Íá…Uùƒ°òVrQ¨.¥šûæЬiyç MTÌêoa+ä pRe\/gºÑK¾’ûÀ9|ô‡hÊx«I¼Ça1ZÓdjºx0ó«Õ¡PÁO'¹ähMy¾Í{$Ã`Ê;\‰fqT¬ÚÈŠLöŸj|¨ÑëÍçgÞf‚ÁâP:ÃÓ÷ïS{Á^h»CP&d+(ŒEõ\8“8›ëÍðº0D½ßØ;Ѫbáã~ ©Ê®v¡%ÙUöº¤!Žw÷Ö›lÝ×kÓòIö-˜ ‘l3– æ7ïå|Dà—=5íã[FÓƒåÔ;±Øð©‚ )úõ‡—U™º™¥‡ŒùOI#§ˆuŸ%)àd—}3¨’¶}™K©T§T:4Såî¶ú©_ᓟ>_hƒG¡~5Â\¡q;_}à²)¤û›Ã¿WiU ’æþ0Qúú¸5õå”È Ãþ;Ïk ˜ ê @íõ<%2EÓ™»2cÒwL“±Üœ&hèãó£Pbªä™‚"-Q‡ý©Û†™Ü€YzO˜ÐÆ›¨i=“§«q%„4è”ßÒvÜw‘"{6¡‘‘´öaHjè">rµÙó`¥>×3LÞQh¸Tßò*ù[Åô²{|K¬ûд•¯–Žs¹“Î H¾´<;¾÷Åž²!C*‘ÜvþÒLŒr~ªî5Õìsên0ZÒÍl­§›+Ôíó8½>¨Ç§ýnkжQ'ƒ.QPê$SoDžTë夙êäº{ð_ârN¿fË^?ò`uÈ{ ©¶ åáb+±1QNR²?T~ï£{x•7Ö}ASÖÙî“ߦ„ièk†7ø˜½ÁÔÖWoAî§0‚R¡›O&=Nró½zP!Üv’ ,h8Æ{©ŸÉ £ÅËó›§Eujþ}RÝ[Ó蹄7aIú;¿,~ø˜NoÔÜÕõô¿‹ßHâþÀ¢²+K­œ§±ºZþ¶ã9\æ´ªCö2 ±¥8 5¯XpÔvÿ§˜úª”²Q¿ µIðwS5æäЉæx—^%»´Süh5J~¦abQ?׋ÞΤ8—ªdBÄuW{º`ˆ3é¾!=`ysΰ²¶Õ¬7/(öð/9²sLKÀ<^Œ’0wó%ÿ¹°4çÅ´þ»è{Y]s3ØÂ‚Ë í¼vßÊ7]*‘•/&úá슊󉭰XIŒgiíKÿ9F?Ò¨ª6Ü{\=`Cò»î=Ÿêú29qš¢ Çx ûm¦˜çBHûySÆ9ªÒ!÷•9]yœÌC·‡à7“-(2tHÖë_Xs3Ôk?úöÊ\©Òé+Àêå}±|ä+Â9^I»æŽízS©>Hhn`uxÐWÙÙ½c÷Èú²2ÒCÀIŠªÉi´}Wå–!SAd#4¿ÓW|.õ;"C—HJ6æ²»½7˜[ÞN‹ké+rËŒ;Èw)}ãcI-)² ª'Èp Þt5ý}[ø (ˆg‘¶y S€Hqпæ~:°s ‚2I¼®ÑçnD³ªšØÝÛÛÞ%#p` ¬òÙσþÛΨ7S¸ˆb3ÛND‰añ%æ(ò¡¥¤Ù8˜‹/Ò†_†>-&< °¾ŒÂà„l…òa¾Ú„‡ôp…8-ïÛ͘w¥[÷…§„1àybÝøf‚M{„…ÊRTª›ö}FõÕ™™Årm+îTi } [¢ÿ³5ÂöiAÏ3öŠ&·ú}ý6»váÇåApºÝPõtŠÃç)G_fWk#Í(æƒà×ò£×ðÍÖŽ\¬tH;Õôx˜èZHöŠ-ÔÆsóÅÝ\×)0A°2Ï΋ا²õÏcu£Þ¯Øô7¡)¿(å/ A›¶('ì‘:O4£Ô™X‹¬ ßõ03Cƒ¶IKn×E‡Ý51!‘ë L²EHCÎ|ÖX$SC¡‚쪠¶2a1 ü-KYNj%Òåt0S˜ éx³îV¢·È)V¹rÑ ß’Þ!çn4¹J(¶`Îû“8fo{gO#3(ýŒ«éìK&¹Æ!Oa÷£æèѼ{yÂõ›ðÒÿSÙî¿Àºpøæ¤Éµ6õ77Î\wk3á‚l€û– •üoGAFù '̃] måžÈyªÓ•NqÔäð'×å߯ M˜‹.K' p$òNãtÓÀÄßöñuˆg"OoIÄyèûPmoÆ*Ça®Cžsâ³2hNóDO{å*HR<ÈùŒ‘>‡ºþ7Càf¹ eáKµÍWmnR` Ncæ*4ã÷ÎýæDÅ}&ÂÔÐbkˆFVÒA4Ý&ФŠªç32ôia“">åÂŒ¼¸à$¯np¹ÃÂà3.yt[0U䍿Á±ôÚNÅÂ3ŠsÓ[A×ϲ0픯ü7³½¥ºOˆÔ[—²~›:ž7qjH4ò½âm|W9óŽgÈL¢gŸ ¿®ì“Rñ2P¤²°™!ÇŸˆíõI˜%•íŠ\JaÁGCrî‘Ê;©| ÈXw d‰jÖ(‡Ç·ûÑ$Ww ò{ë#¸\Qø“8êö´¨ZI!׬"Î!@’÷|õ&…&"'@ Г¯ã·’~8\hÃr>2´v¡„¾LÚ'}];äcbVB‚€_­§40ŽÇ}Ž:L „V‚¡[­ò‹çäÞèÆBYRÂzBÀ- S¥µ5AËÛ^‘ñ¡' ýÚ¹ÙgZÔ$kÔ—»nÛÊLŒoáeôCŽf4a† A’á€bÿð«då¿äœÏr²(R¢k;z–‹ÊÝÏ¢Å1V™ûmÑpÃå‡ÿ†)?¤WèÍÄ•kÔó~i ~ –”[ë ©8oÄ~ö~ ¹W9VÝû½,¼÷•üÏP|5!ÿË ¯]Àñr üè•ã_PšQùO¯’‹Ûó c7b„m/ÓYôõOð£Ïè2D³„o§Û¨Ÿ”Aï3ŽQ3‚†ÄÙÌyq@ `¥¡o¥“E°¸—L/ݵ»2 󞧉`NMË"Ñ.¤ê Íâ ,,¢¹÷ž=º„ïØoâúñò/A¿&§Šám0ÇŲ“J9Ç Úfã¦XÞ”LRï1UJs„W*{J”܃PG˺¢LAÙš¼+;ôQ/Ù )naˆ+…<‘®w$Bä'‘”5—³â¡ÄæÕvá…üÓ¾„Ûp“UµºüµŒ­ÿ}kãÊæ0 jyz‹NyxÞ9¯£¤2r˜÷ÙÖ+yÉsT=P›)AoÁпP6Ýo«,ažâeJ†ÖÙùÃÛ:õ`à&æÙéJ·5éñ¶¡þ88nõ™âMŒC$;Ò–vƒµ2“x3°uAáÇO#%dÞ&W»G,B0C1>dÏØâÔ ‘î˜Ï¨}<{Èœ"ED(¨>†"‰¶œA@ìÍMÜ‹îð:*ˆÏcuk´#¡òV¯mM/1#i?áCO/´­Q㈷ œ%‚1v¡ù½ñj¯Ý'&o¹ÎºÞú¹ JfÝÈ¢¼\;"˰±3Ÿ5iv3M"8¢¨S&±ìÚŽ}˸Nq.Ó÷L„”Ê(€ç5»øû§êÎÇÝNZSAnÆl#¢-ƒá/î¿Ö¡Wxè Àj¤/ª$*жvêÑN—D‡ð'RÚåoƦ(f°vÈ2Êd-$Ýï+æ½ò<0voæc½ª¶ÀŽS4;öë^nM35yi}U“³…EEì€üoö'z&HÅToqéN¯Ãróªð)Â<¹F˜Ü‚uã`ÀØøx¹¯ÉµKô(;•ÀUÅm+™ÐE³%\Y(žêì”ÐéY²fÎWÞ0p_8ˆø‡8ùk©xDp;§hûˆÈ¨âxþô˜ÅJ!BÒ¾.XXI-C¥þt»E¡Na³àLs…„ª«ëvpûÇÕ|”K¾~WCëÏçøIÁíðd1ߨcWÐÆÚ S¿æØc:³‘’$Œ+M·¸4¦ž¢ w_Äß¹3W¾Ýãˆæ,!Ñ쨄GÎQ¢—“¤°\=¦ЄÄôEn ²©ÊÖJx‹/º/ÑûºKÛy2ª‘ õ'gÑúëwo W†ækG×bb¬ “"¦Rfãÿ‘RR~7è.xg)ÜNFdÜ&ña«VŽ ;ÉŒKÜ[“|“Aº2Œ‹WUcWë´@¨`%Á‚xØÈ×,¾b¢¨¢| ë‹Â’Ͷ¢2³Ã9b÷v¯WyLtkã¯×°þ`Pxó0jB×ëfZ”äœÈ㌔¿LHfY„~°( ÛM?|—ßç¬NÛyÓ ‡!ž&“ÇC# V $œâqGÎyèdìÛr¶OР¢,fÌHe„ë5»ãéÖoPôÐ[ª™éûje.\©$sËq»Ô··î† „ zF‰N+ÅšÜ0囋ÎÝŽÿ«‹WyR‹ûpÊÄe}¤úF#¡¹J0ÝÂç¿Dº|2l<Ç"K+ÜîDe¬S\k}Ÿ"ˆ?Þë6ÐØ4tã˜Tw’”]ݰYÓgœŸï þÖ/ókî1iǾ mn@‘yâ°À”$Ζ•yå'KGyg‘ÂòíZ_ŠÆQÐb…{}Íð¾‹;BÜB*Mè:¥vò±®\­JQÝ €w™¼³Ýhê*¶X‡q/©¾¦5h°±<HU9k9Ȫü°r®ËÔ8ÄIæ³^Ü þ5ƒýŒi²qa0¨ÐÅ_GÕ"‘¨ÙÔè ð±Bë˜ÚùÜdFÛ¨íê¬R±¢6a¶ž†|ÙP¢s'@¢GÍÏmU鼸¾°˜IÑøŽ4`ä™Ju é Òr×ò8*›‡3*ÿ·ävb÷òÕÆ›9ÞÍT5;Oºýç’¯i–µSÔæKÏ>+0@hd)†­0ü—¬ëzNOêJž2°cÏZ8àlä¸f”ªXPà”„YäI㥲÷ކ'Ë"aû•…'¡©»…×`LEK ãŒD°™Êš[ˆÑ‚Ÿ»jUº¶!}e‘=òÊ©Á?~¼ ÎúH·”HµÒ^CœóÖÍIéW²uB‘â{Ö`¯çú4‰/ÉÒ¡ ݳµdRwO½%ÒÊ^÷êG§Žë*Þf£„rÒ%üÐò‚ý?†ëݮ冘Ðh“þÿFÇJrŒ°<†lq¤¹ËYé,Fƈ~6€ð!ý{ê5¯äZ?n`zÛˆ;Ö×IÛ]g3Üm•we¸Pb˜pCš)WW[¸»†žÌŸ»‘yØ>º­Ó&§Åþz†j=®MEˆgüFŠÏë‘e6:¿ÿt¦âM^õc ;òñ‰xϺ§$by1Ž‚*R4t¡“¯4¢€’2 'PäiTÚ°+ÐÖ_p|þ'ÈÒK뽬¼æiµ­ãtÒQ4Wsó…ݧDe ÝØ£QÆ.ìÉô¹¬­ ~ ,Å"9€³R²úàå Ôw³*ÿ†‡ÕÀÍÖ¹ÀüðÄ2gòAƒ]yàH‰ÄØsbÈÿdZâR©X7 ã1ÌÌÊäü_¹ 1ø .Bf¨ãúH«Ð/A¨üF—G@áUV šß‘ªùä=¡ÆZ6|I_2c„T Ø`%µ°™·ÆzuX[öDªÔûª@¡ç?QÛ«diÌ$oè˜Ä? D†æzœ°ƒÙ:*ÓöÛ—¹mC û ƒÀ -e*e¬Þ×W"OP-¦èv8HU©Ž¥4þ$/*¿TÇAÛ}ÒxI0‡¨ü¾5›c_œ÷sc–rÆ@-ÚÃ(/dÿ×ÁÒŸ¹d‹Œfk0û•z*¢z–ÞZ´{–´tÊ.`½4õçó½Û®ã§½ô¸k够jð=T¬9†›?â4–+û†5ŒK ²ÂFýHâë ÐÍÞËê’ݰ‚G7ßiPÕË$NŠ4ÓåõlĦ^cƃ"nm„ìùV\$ˆcÄý€j+¤¦ü ôGKû„ý-¼”ð&»/iE†÷äà]ÈQŒr#M4«C3­Úƒ+®iªßó³¨3<H@¹˜vÅiåZÞfëQLœTL¤$„çng¸£‰zX».*t𒢋ì@¾¯8`H%TMÔÄ ÙÀˆ}–Ö7‰³àч»º·h‹´ý«n©•€šyä@ûŒyλ+y{&!ÀPÁpƒ* ›;-o'§ažA¦IMíáLˆ-¡&™ÌÊ8Äÿ?sKúø¡Ø ÌŒ«K¼ïvx3jâl7õŸÄHÄ9Öt~@£l@3U.Ÿ@h¿hN"nM ®¸£[êôš³Ò¹¤íü D²Ìº) Ómt§|)düƒXŒé@Þ5`½ys1çH¦Ú*ˆêƒm†k•ÇóYPà39˜ÐpÂ'X²tÈnæ ¤îof>Ê188nyPôk/`d¹:ºÛ‰ 8OSÛÞ–69˜Y£Ø…«¤"Z³³€íb"×v¯¨W ü‘V½A@³‡Àª 6+„ã†xðò¤åòÞ{ ,0f¦×:M±…‚ÇC$µ’D9ŽÑìºÌÛ¹|´äúÀ’´<)슔$µ#¿7#£[^à r¬þõä³í0ýSEÙuÖ†E^ƒ&Äø„æïþLv¿:løíŸ˜vQ©Aò¿?\d5vz²È\]«Ùfcíƒ{ÞŸŒ‡ÕÌ}™½;”â:në%DZÚ @ÑY\\¦£?œ+Ñ˪TèZ?ožŠT~eù¿Ír_] ý>Ž«¢\^ßcÆAëFÞqØ;i£ (S6¸R“yÙXN*[ÉÖÃÂÆƒOiÿ¾ˆÎ ƒ0´ë¶žÐÜPžØ–H¸0"ÐY0‹4÷bI?{V#•ßmPŠ3°„§¦ÿ–F¤´A&à¥Áär{¡&RèõÐW vǦгa‹:ˆ _’jIqÏ\d9ªiÿb©¨å»ÚÖW·~ Ê·˜t?«liñ¢/ÕÇö)«)Ú_µU=Ý’Æ6Lcv^Œ<„ô®Vy«æÌ_$/ànA®Ÿõ€w'MMLÑ<›’Tt¶åùÂÈXsOÚ öë…¬“ÓðiŽçÖ‘ÝŸ_¢ÎÀ¿:‚\—¶) ÕO³6 «˜{„bœ‘9I€ 0ØŧÿqèG)U%(ð<6õË×/MæÐ’+ü,q¦¸Æó(ZkC_+ 18ßÒ Î¼AëØÐ• /u)¯&žc:kÁÐ+uI®‹ÏãEÀP—„ç}^óu¼dmdƱPµ#Uaä‰Hÿ¬3—f{øÔƒ“f±a}¡s¢ùù[{ÑÃ]iŠºÇ˜ñ„®õÃÃ[Ì4üH®+)–Ö¸)Ê+Ã{cÞ,Ií †“Ü÷ï*]ÞÒC ŠÞ›+S“@D¸gEË@ß2¡—¥Y(5E¨žªp pïÛijÅ]í똪 Burc\GÀ„ômˆŒ?ÄpžÿÏ™ð—ñ`Ûs,ÞzUŸ÷á­íƒ/f½É:‡¡´”Ã0GsjŸ Ö¡ñe$7¹RX€¦=ú¸!UÞHªq²=d±$BS¡36鄨Ӹ³¦e?H­[ÛBOضÄYÐÅ·y½t,~é#\œWàvJýµe’ç콿Àêž-QlÓAÏv¬lý±ePW…¼™ìfGOqÊ\ܲq]–­í:{ß(J6Ïs«ü â 8#ÖG˜ŠЖMÏcÀðTBÆ6(j%¤£t8»?aó' 8ÆÕ¼ÜœëStAr†wo.,w“),”#°`LúGM‚©ˆæOrÅB߯Ð`þ›% Ø&åªï·XZüÁ„x&“=:òúmŒD*´ Q]-¨Ò¸ÝÑÚ÷qBû€æoIÑ™'œE„Ïiö‚š›^†3BPNô‹Žöf;rÅ)cˆ[W¶ü¶8><îè÷Ýâöž¶oÚÖ/ÒW¤ dýbcÀŠÝ¡kl'F|ûq£ßaN7Ð ¨èdJ,ù|$Žž08’æÛG½•¬j~‰¯ï|Ú^_ùGCpåüßfã˹Ä<5ä¼ÌnrÐ|}‰í¦‰w“à¿c{Me¦Ë^Á1sí6¥ûÐ ÐËWZø†>ÆÑêûŽ<€wôÒF £Äí ?…ŒÎÉŒ1ÿD…Ç’P[‘¾è=: ‹êŒç^osü3~zïJ{ ó³”_-Uš>©)(¦m3tÚ£A«BZ¦/Npý0›'Ÿß^Êøóæ;?ˆ¬½êºV¹&ÌòW7Ÿ•†6ZëDØ£êÿ7u"&›ÈˆÂZŒKAïÿß»Qã-^/8>c{¾â˜QÝÓäˆQð,Ö3)_ã iÔxO[{PGiYyãPTkhÑ‹²\§à÷º&¢I=" þÚ|½›¨Ëjc³ÃYµX‡Åȱù¸¤Ô¦~òöKY¾{Y~#!Ú,Mëç7.>>øæß6A‚Žò 8Ã73S^ÄYtjèê?øàx#)–[6ªª@{º¯¬s[õj„”ƒÁÁOÍM鵘ôÖ±æ"¤¹ˆÿ­¥Öô£vÀÎN¿:ä6NüFXnÆ¢×÷Ðw~n~´8ê¾Óq 'ÑbùlË^V6®æHv°š$Í»œ%\ˆž‚Fz‰Öý2í.ÝÖÖJÁL–áãøMâÒ!±ýŠ ±3Ì3î-¾Tœ²Û,üÍØaÍp.À]L 'ðfi¥êâkMÞ9mˆé~E~ õ¿t"}ÑŽ¡!dKÊ5BãVƒ´è5T#ß·I.Äe71ôxÁ®AîbBºlº"Vª¹ïô1Eñ!^.póëAÅs™ÝUÊ{+þ¨Û½EªÃºbAµ—ì”aln€7.ÿUl˜|géóãb<—uH2íZó}âþå6àµ%ÇQ:w¿éàv¶J/Á&㾯ø°.|~-=BV¢MÙjê ¦v{•Á€‚®tôÕT%T~‡MÂ`aÙ4̵úÔÌL~è|°µnzð*(ðø9¬€;°Àhz÷æ^¢ ·LŽþß¼x:©w?k狽ô,Ê<›¶ªV·Ã\¥†ÁDå•|ÜÎñüËF;€Dvž4*þÅ1®hÏ$8†.<½á$˜λªÛ¯Y7_D™Ìqõóø©gš3ÃF·å½RÂ×~˜fš¬‡õÀ3LÔÐÅ–ú@#Üt‰„=Ö½ÝN Fêv4‘Ç¡_éJ@0ÒK­„ÍI]DfµðÑ›òQÞW¤1æ5‰X ‘”þ!+ç×!åBH|€‰ƒDè4š‘¹÷¾þxІž5Þ¯!j„e?ë¹yt~0SÃáEÒ]™b5t‰Ü·êúF•yóÕ+uÖZA¶r]£¹RyrÚ×¼¼4&™®¨QšøB´CD{½ï.g©sóÍbÈ¡ôL>Õ­ô¡û‡dñ|ïÉ-eËÚ›Á<UÄüc)n{J%C|£J¢‹9æÇäžÒ¦×E« êEû7«0œ\¦°baˆOš¨áÍ·å$žò—öÐ{)9p’KN@¢‹]^×µ¶ èÚµaþ@v÷gÜœu— ¥Þüc¹šö”:ü\çüJ³h­¡5VoÇ8›¶ø›dÍÝ/Õ½:Ö•Ç„}Кc¯êÛ‹>Ã!+7›ÕaøµD÷#÷[²¿’c*+ÃŒsþ=+%“•úá@Èί ;Ì‹e.»Å¦lê~»…™”˜Ûb?¥jÅSÑÕygn)5"Ÿ-.Õíffü¤|™º«qkžªFÃÙS?¹(uëš<ü"ÔøÓIIõÔñƒÁÀ ¤¥®„i—×q…öQá[£ˆÄG^Óî¨Å…_]Ú“¤¾o²'^O,1Øéf:šLãWƒc ´¨éÉŒËqõ7X M÷@Ç®ì‘ÏwôZ:Ф*:š&A…+ÏaÔ‘iØ×íc FIí+g€7Ib'JɤYíYÜPéÜ-ñº8qš[Ú ~{fZËÊ!ªd艤æ`ãZF&¬›™Z1S­–"ò¢öþpÞXϯI䲿+Wø… v8ƒÒ¨Öĉ¬ŽáØHÂBÁ9z>V„Ü#àÇ#3ý§Ñb¾¿>ÓxzG@¢^tº”oivÞ¡í¸ûp23{Ü#f˜ÚUxA»ŒçâÎÛÝ%ª€eàðâí•Eaö/ÍØ¯ÜÓ ª¸w?šFÁÊ1úkA’®˜â°â4{!ªš·%Çj„+Q~­Ë5¯N­.µSC6¥¹r14€ fEç•ɈÂÇUåMz k%»ôiÞgIê–išÈÏwÁÜJ¢µÙék#ØÆOŽÈ£nVáC÷ ® ó¬ØßOaófo5X3 žR|Ò4‚—tLªÓÇvüsÕ Å ¾ýœ>‘>˜µ¤6UH80 ЛW8K\ZSë Q”)«¨’ªø›—‹\º, à Jé; µÑXXqFÆ›G‚—ž4l¥û²—u%?€\킞ê»]=‡–ýíÑýfbhʨŽAq­$ÍøƒT[t$wf"¹‰›¨E™p÷¬ïþ/=Iåþ´n±E›ù>ØŸQU þw¨a·:¡N ÿè† “x… Ž= 'úÉÆS¶,ñd°­ðzÈz$pm]ºsi€UA€shå6YlƒÐ4N€2Ëë´ ¬Cµw^RMw“„9$·wˆ`tAÝVJ=–´+N-PM6ŠÞÁÀÍnmUÇM‚DÏ8Šàƒ}u™Õ;åA¹ˆ'+Ga8ßÙôÉ>æu“z¡Âa0Q•ö÷ è  )5; a”BÂýQL’zìðãºo”XÍ\Ëû‰¶R©§0:rÇ]l³òÈ‹M÷s5¿YÔáÀi÷eëë:f8¶ëâìébCØGC÷]¢~S±ŒÀ{×XQ¥9^IÙvâV\*€Ü¡Lµ‘«:Q+ГBµž(é>BÈ TúM‡¬P¡»ßõq\Ó?™Lzˆ¤²xmz˜ünq!ˆ¾¹é5Fe‹Â뜥mœ$Nª_l·Z`nFáÔ˜·B`éýìaZUÅ@G?Z¸cwô“†¹(/ÄÕtµ²À¯¶“‹•–[ÛtY}ÐÀ clƬ'M䨂ºfj×Ò¼mM%3j±&Lß2”ópM!fa!FßÖË–l vr`ôkŽ×Ê®t˜îÛî «‚;ƒ1eÌœ¢oîéF@¨š ,¡ö¤ID%ÛÏdꊨî5V‰º¥[sÛf¹2Œ®£NQÔÀÛÂ6ú¼…ð [âfâ'” | NX²cÌË­¨l7ËG»T¢Åùgc‚6ަ ’€y”…”U8ù%—%Å1²±w› [Mæz=µ!ë°¨§CÎtDÚoã¢aÔ=óœþ°’» €OU°ƒ\H jůäŽ}¡èq˜Å¾W.ß‘âÝr'P$¼ðée«ñ=>æ~ŸÃ¤ sèðÒ¯xDÆ×Ì;¡âOZKö ›Žç_J- ¼4ßeK:¦{$»μ;Ęä‘Ç <§žp·–éÖ0Jô\zå$Cš?lWé±EÙÒøÑ6I$-ávü}¸¡ |çÚYªú-„“%HÎ$­ƒàª¼5ĽixÀߦòáà²ä ˆDË/øeg w•ñp{\‚V0ˆd=`’A†$xûózí£”né0JO(„$âe»¶G–­Ð™S×»`´œ[2q[A‰¶n˺ˆî¹Í+yOhEpéwà§J¨«F°i/Ýâ†+B]¡5iur¢RC7àötÛ‹™JJòÌ ì\ŒÎÕèÙ†ùÄè}Õ,jµwëSš‚¡.ü ÌºPöôåÆkÈçæR® 9Ë=©üèµAŽÓMˆwf|nQ¼D‰ a×™³§é{YÊËÒ‰ì#ö€ ÆLtá.ÑõùŒ'ŠqnÓ /GÕæÄ{\€jýí+{õ¤xêé ö—ïæ;>r¸âI3Mb´ß¼¢ëñLÿX^ÀrÁûí¢ÐÌ×ý£7¹^>ùHE_™­«8#eïOäRç°6:nýy˜¡þäÌh<#Øuè;°1c1Ý#€¡—s(ýßÛÙ}(³vØóf·œ•[D=ÈÓØ/:¯ŸÇæz:†]lÑÁÒ+ضŒó+&AÂ^øN²þ HBUiÆå°9ÐÕ1‘“Ο_„{Ç…Ì£áõUppiʦ¨^« \'F8Y:™W©†HÒkÞ ¶»ýðà.)Ê_õ]U¿XÑ~üRVÝüaÏ`H^·=‚· Ž<ÄOA‚FÜ®¨¹úeuö› [€8¯ÇÆð“xTÜw9¶˜|3{W( ÿ>Ã+;>¸ßí¬N¯È윯-`LR1‹ùÐ_Oy€ã^+Ù§™u€;Ÿ¾‰:+¢°Ðñ›BÞlã"‹és!—ÍšUv&Qn锚NÁ½ËÖ×2Îöƒ|rdßã^ÖÂT•ì« >¾+Œ}X-GïnúïÚÒ-h†ÖJ¯œö5f¨Až9OüMM~$3l„vR#èɶ‚ß^ÌzWÉöçÊô©T².îNCÛ 6¬ÿ_“žgT\ÛÔ¶EGYºV´t&}¼=¶Ú}µâP saê1&®’ F`óƒØ™ïÝžž‹¯Z©n¤þÀFß–Ñe¢øhóK zz†¢nÁ<ûa€³rñ/öw$=ÄÊü˜;.»úÁw'מ´JÊï×eu9‹o5À@ädY«û¹AI'ÖßOˆ ˆ™éK¯züˆAN\½æ…|ô3[[ºö_/Œß°ÆáVÛ»«Ï)&pùJi«9°ˆ²n„#*OÚ$àè I²~2ö…ÆAÆ5Å’±ñz)*1Þé8¢põV¶¦y€~® ªú~Lž!¿°¯×”µ.Èâ^ AK IBû¿›Ôø– ‹ž7¯ä±ŽˆÄWAãŸK`­M?šâ€Në•~WZf‹÷%\ ñ<ìãƒÀ>„X•ŽßT¶Yibªn¯†'v°é\ð¬Cn—â 9]š›š«àìè ·öô?Êñi+17þêä\ÇXYì·=UÔù‰!âl¯üŠÃ|„uÊø÷r‘:±©"+7 BœžG餮"ôö ¾ôxfM未OÌneZsRØõxýfzµZpa V“°ç+¥™º¢íŸ1üåáÊ•e“ýgŠ ÿŠd]ý)°üïsÓ ©‚"!׬O£`s]Ù)œ>}Qö#˜Y%Kˆ{b$‹p4³»|t6Ñ÷¸†÷Ç€í°óáK¦nŸ˜JŽkœñ˧ñõFêgì‰ÆƒÔŸ °ZŠy7—çê= `ÀSQÓ 1È*?}* ;DÅâT°‘ƒrzß×ûþ¨¿_ŽåçÆe{^ÇÕN B·Kxn¹Nÿ@ m®fXíU»iX ªI"PKJjœ0s4£M=C{ùáG>îŠ\”Ñá?‹”¼üÐ't%ºx8­L;‡¬/ Ê}®Íûàßbç<ÿìýZ¥Ç›ƒ³{iÚ¥ŽŸ·h_d ibuá[8v¡uBŸéwLM¾6Uí–±¬Ÿïý‡tºZËnLÉv e¿ýpÛöp=4!ÜCŸt¨œ‚š›)LʺÁ`‰Z’=åˆ/b³$à:` sÓ´#P¬ˆKéä=B3§øî,d(€žá~ qµ×E¯óFÓú‚̳:æ4²§Qê…ʺ ]—éßæI¶‚M³ý¨jֽ͕ùRºXÏy’ø8ÕÅXÇMbÕñ5OÅc´dê`Y©5îfJ”Óò•þôÛ·µš|÷ÁɉÏËû(SÊòOïkàºZ¿‚!ƒT“tþNnþô VnO¿}¯vwIa1êÐ`…‰Ãµs :ÕÕÚ¥ži€{wÚ¦ ¥ … ” p‹¢F[Ý"’xšT=ëž]µÂ]ô§QÌæÇdÆêyÓ­æm{ú²9³Ã7ÖO®šªQ€]¹‹oZ0bÚEòTN¸ôLõ&à'=1?E˜T¡Â™JíIOŸsw6ãlðÀÁžæ®B_7uŸ.ÜÖê0Afš›¡H÷€ÿxò·sUQuAr„R&¡î¹4[?ÏÕž!ÞüNÑ£y.—=½€®üÃyýáK<=Võ`’u\5Ë)ù«ºµé‰„‡–ÑHÊbϘúgˆv^²›Û´C’á¤d LøüiZ“ûšg'_,|¡”ANfÄ6ÜuŒàÊ…È6“[åJ,¶X×êïÈòž ÃY3iÆ‹'ظø%p"ò°ÉÛOËZ ›÷€¸ÄËpMXz@ˆ¥ ~¨–ø’«­£Z+ËuŽlu~½  w±¶ËÉIÖÜ/¿Vxå´Švpýé] p+þFɦÒ+?œ¬(†Ù ÀBOdÕ/NB^F`ä|KlŒ4^~¢5© Ž0`Þ”vð[ç>Ñ ¦/&}Ú6N­Æ’¸â€:ßÕÈC5DŠ.g’¾;ÀÎ[ž¶Á«xö‡+Ô´Z†à_Nýk½ !½Úboƒ:ùolu·þLÒ¾—Z‘ð‚KG¤‘XrÀ64‹¬Ù=´n TÄ¡¾[¯/œoûä¡ý ¸{‹¿€i2ȵˆàbƒå·(@á?ë ÍØ‘bÜ–Z–=žÁoqÙ|€Æ éR °íY‡Ò£þô ÊWr(¸'´a-*O3 ¥ƒ-ú„-žu;&Ø|[’çLN£Ó—/8K¬Rk%<»© ùæZo®c ÛˆM²+#—ínNm€RIž5MZº»Ί½ûO»N€1úËÔGÞUy¬Uñɵ_í]æ…{mÆFKmõ6à–^Aæ÷¬ƒ ­B-R©—#Ñ>Ù *Ž:=öóh7û-,üÍDá=¾6&KGeEÐY`9™«²*V‚?9E®2ä¾÷Ôˆ"á&à÷0qiÿ[ÖɈ޽*–(ºÄ *‰=AÅZY˜qMª"¦ñ,¬ÇÁVˆÝ•—#¡M¢ÀE"¢ÉǼzÑj¬qŸ¤ž?c-=*«0s®‚—Ð$ë]ìmåiµôÚêVÏÈ?•¸Ž4å’ tˆiž×‡¹ÏÿêÓIÓ_H(vš@8Å- gL9j)($‘7×i”Ò~‹[Ê6ÅP|q;bQ»c­TVH§ >Ò]zctœýìVá}¤$$cz Y}ø>œ•?EJ>ge]!qotäEëð¶˜Ë›ä—˜…ŽñšlJ…ìdz*/)Õ·Áµ¬¨¸Îë_ðìÄÖ'â›Dë«Øáír£Ãç]gµç£ Lö®( úòµÔS[ˆ]Úý?ÖÁÂ;yÿ×ûеÚjKäË{Šø—Å1Óéøµ y Þ µ•ô ³b@5_7æW dâÕÎÉp¢ Õ`»sÞ.Úb |ë±4Mâè„£IíÒþUpíÿ¹·+Ù¤ÎÌ!‹«†úôB«Í"¼Œ;94#ˆp…ÌTþ±4É ö7Ɖ)üO•öà9w†'[ULÇ"ÒTÅNoÅðlÚøÍ9J¼¢Ë#ÇâH6õ¢iÈ~Içå¼:roá±Ç¨§˜ìœ’¤Úå0ç òRÂO€5II9^5eXýXŸæ÷E|iq1£ ¶’cîr¼C\n^ü-ßi_¸m]Ï–ê¹®‰S§Â¸Õ/ÑmAÛ~«‘[¼j>Öˆ'|Ê#ÄGªüQMÝ$wéå…KÚIä'=©¦BåÏ*@S«‚sB€Rç)<ó`•óÿµ¾ÑÛR¡+&Yš9}_hÈg!ò Ÿ~…çßdöAŒ8w¾ ^ËϪ?Od…S<š´Kqg*¹aªý+Ö¥þXÁ4¬Í1‚Ù+&2ôœØLÜvꯡø¢é§S2%ú84ÃzeÅWüi aóe(£Ç1ò”»³"Ú ™²x8Ð7F7ÚÆ áã·j‹ÊbÀ‹lÒØ eSo0i/ÙØ4 …>qq¿³ì꘽©§óÔ€Œó¥B¸Ì›õäu÷‹K Ö°ÜYg·fü„Îtq|â©ð.s&Î鸬¾?œdêy\4¸³?ÆÒÀx#xÏãþm©‹h[n±Sý²·\°Oç.;y‹?C«öwR> ƒ$=pJ¹%¯ìZr%„n[QƒEéoòˆ@w ž¸†>L%›˜»ÖŠ6w‹‚_É”þ£¥"°ˆÍ=Ê5^ÎÿU -Š?¿;kàæª8?Ê•¢ÝúXvýTÈÓÿÜf¯¬ç?\¾_íT4-‡åôê‚"o%c*ÞpÁ¬Ìk¶Ðªâb‚{?#ÜSâAš½Ry,Â¤Ö–Ý àΫÖLÁëé+Þì\Ž‘@e¬”Luª¹ú£z0>Öù”0MsíZÈ×Èõ‰ŠFY4ðö¸Sý²a7«o?Ž7¶û`)”|Û¡ÕQ}.»dÙ%SÛ·¦©ÞÆÑä¯iÑ„£uÃãÄãuó+#b€GñŠõ@z}©ôgügAy¹(Ú1ÛsûKÛN-¢?bÍÖ«ÈY¢‚ŽrÁ¢tÆ~¨ÈðÒ;xQ1É¡PXŽÊ±לš â3ÈÿçÀQ~¸´”¥Ä8¨=ü™·Ç¦’KW@ܺBbìDà§ì9ÑÈŪS#Þ˜¨7E°ôO9AöbÂÒ[)QHô|Yøçµh¸kwCP.€4éTèž: ~Oî{ëõ{%£Êå>£ª-{íRñïÑuÓWЦG 8VÏ?™Ä×ðÌ k•í£ú#íÙWÍ[^“ÿŒõ^0ªòƒØ^«Z•‘‹^ Ð+4!ù°‚ò§‚ÒMä~nl²>ٞѡmY/êã¯Ö· ÅCW›dYŽô”¤8l_ÿ7Q“½ì]ëàA½ª= ÷Ê[;I8u±zC2ˆçS 2% »+Nt?MéØ}|Pi?f`O ‡º õ'Ç>Ë5”W̃A£³‚ ºw^l ¥x+ËÆêá$ÞÆW·äm(⡜« ±w\uq¥¨Ë§vHOÎhQcƒ Vû'9Ø÷æ)S>§‰cëåˆu7zᜟZV›LvßR$vY´ó¸8tOZ=jsZØø2aÖ*ïëG©YßåÚÇ´)Ρi =‰lkBhÖŒ"®V&ë8Šc‰”µ¬Í1$¾ë_à|™ O‰5Æ|¸=QÕJ‹}z ”žDmµÌúÀŒCù%ß{~Ãt.él>(WW-8NØkïÒ«+Á–„ößžIÒq˜¡k~–Þqÿ§.•5Ǫ«‚FÏ_¿Uļ˜£ ›bæB&ë ‰ªHH9"ýÅFbÓîi<;8`Õ Uh%BåŠHóú=Çï åÓ® ÿ óØ ä!¦ kc²lT/P=ZÐ5õÖú8ý˜Ÿdg©¸l +ïN’èD"®Ç“œŽõ& •dœ[¼t„«êµ¥&o¥8‰^|*WèNW6J´9Ÿ'€Ê\iÖJѦy¼Ã¬ü³¢á`W¾„‰ŸTïœÌ²6´ƒ)Ï&¤²nux:ŽÏçAFÕŠxëìÇÙŸk~­˜a½×Mpýœûð­ÝÓÑt˜êòpN I @ræYÈ8g¸ÃjwÉÃòAÛd§tÿZ~ß‚o²ª«¤•ü¦ÍI#n…YFyI³Dü6û<¬·ŽÜy¼ ÜÉ ï5oìD ƒžìÓú9Š»ùblFÄøŸ÷g+Ab4²ƒ{welâgñç9kü•™ÚŸQ¢uqÝàÊ2ç¡$8­[»ãÇ›}ªù<í1‘ú¸XëQ74‚H5ñ&YÉû»ÛẠN~­ ™¿o”¶¦Pˆ¨r5ò…Å<ƒ¶–c!«ý¿î+Oщ1åÃ|nªÊ¢-mlvD7$æ}F¤}Ôy‘ìÍΤÀœ¨L _CZ„˜§Jp#°x ð Mq FXXt¤"wÆ0w‘+ ‘–âÒ ã»Ö¤~ùk6:uu>~²<W«Icu(ë/%RΡg™×ãKè=†]°Ù<ãÜYø:A¥ò\6?î#Ukvãaö9o-ö'ùØŒQ~Ÿ zÚðIÈ¡4ÿftìG¡‡œ):Ãú&Šå…c@{Û Ô@qÍ8jË#ëBM0öÀ.A0>øýI²=ù¥¯|Þ SÒl¡Ÿôëe'ExW6n dh²Éîi‰cò`>GjÏdz’<¶ØS•#IúÊ-5ÿJ·€ÛÀÖ2èÞK{•zª›­O#±“ò„õD@æð„ íph)²EÖ‘û•=Ió¢G¿šäty÷•358ðC ¢xc§á~åF’Z ˆÇóqIÂ8*®£2íÛ€BøUQþO[ýVànÞ“ˆÈ‹sßýë¯ÏìñÂàÀ…• .÷ >æVo>ǵÒNæ _¤‰/0†ðˆjÎ"4Ä ‰3^/¥åÑ\¬“d…|ü²A·ºDÞGÚI€ið©½^n…Ù•«Ëm¾sÌ/NJÇ"ÝYÆL¦á¼Äê¥ô¿èO˜ÎÿÜYOlböÅqKÒ­ š&]Š!gg+µùÄõàŸâ­'/d²¹g€ÏÈ4ƒ['ÒºqÛŽ –0µ|ÿOàwÍPAeÔ{µ'¦¤ŸeP«cnµÖQJuZJ=àÛ6w¸§ `S6†|ͬåAœ&•³NÖõ•ízú·Wj3˜{xSñO£žÒpdýºÿŒy4ú‹ÿàW×q6›GǪ‰RõM‡"TJr(˜ïÝ}£¼ˆéÛÌáÄb N‡‹¿>Ø¡Š×-°ß»ýCN7bæûùd€·ìªªÏ¸…,ÏíÍ&›ßOyB™VwýrÈÒ»yõžHè?…JçÃàJ'jýs½Ö ÁŠýרÈ%ÜÚ²½´’'xª™hë:ʶf²‹àA8/͆.ÐZ#©@ßM öÿ7<÷©³FÕ´BÁã7Oë´.Jcâ­Sòß»â~$iàI”ÈCŒÝülYÌt™O¸ù¿¨5w® Y|5i9\I‘5 y½eœ‹‹iì5¾d©ž ×L^*ÄHúBâØ]vKŽ,íZ½c\à›a¢hOBo¨ûÖæq»±gÅ+¥êfÞåtsßÞSªðì“(Ú€Q¬lô¨1fÅÌt ù8ëuhÜ‘,¬Pá< :›”Þx`£ž]?z=E½àpå»×M¬šK¡VsQ ÒÐ3Iv‰rYÉsZº|ЄRÑ”ÒiÉ…à»Ö5íìE5]0;ãªrÍ7æ¿]ËÞÉšxå2‰.Ëúû‰!옳ΒЉ…®DÒݘŒ]Ã8oÆ6EÒ’‚|}4´‡¸.ÍñÀH2Ú(ÐÁ³9âe~ìÝŠ<`—A†OæWòVk©¼¹e¢Œð×·l—… ¦X úz;!÷)@î”Lïh?Ϫoœv‘ÆyEŠ•2ù8 d(ÏVé—qyEüp¢ò}‘¢+ï>P¥Å\’˨%¤Œþ™45ýÚ2¢GŒë„·CÌu„åÐ>m¤w0€,Z»¢»ŸHâùiÁ˜2îéÿ<˜,ˆ÷^ì*4EébÕúÜLa£Àz·g®ˆv¿«ª!st1…° 9‘¨VÃF–~:xŸ<ïÈC¸f ™Žëë½EXé'žlf(<¬sîHûîŽg|ÛÎÅ&fw+CnêÈØ½1^UùÙ/\†â.^ÉÔ ¢AdäŒa” •ïš…Ã>ܱõ*KVé‘|ÔÔ ÅÈÔ €ÒüÄ·ÓÅâݰ跣ùüÁ\F£µ‘|AZwl´ÂþßtSeåëÆ%ž …+W…WiSD™ªèë ¨2®%Ø'¹›ß:˜¦Y®Å|ÂÀøqêNúbñkì´Ö§9àQNÏ\>d­áÒ-WK7©ÆØÆ4¹éfnõ´¤{‹¡´,f2­;EµÊv%䣅’¶Ux3E¥r´Í Ð†W(™¼1ê†ïÐö˜V$ †Ê¸]#ƒ2Ê!Û!:F{¢éQ¯À£öÌjê™”׫GÃd(ºÆr ôZªà…*ÒEµÆ¬twcƒh~1œ_Dƒ"/ÚQÖ¡;šYxGG_M5©¸—!Çè\$±'žE!Úªn¡"úJ!uS 8R=„ ­î¸þ¾OºÄVŸŽ’_Kó†,ÄϿź›®KÚlã“)Ú›†Ü”̨ÍçÙü«õ[Ã?î,‡ÆØo¨;)õ©\LÒ³ô×"+’’DB¾ínÞýŒ¿vS죓o®Ñ’Ìõ|Ù»’Œpè÷cŒOÖy³ðM¶²ædžé²𹹇­h~•%¯ì+bJífþŸìíØxîhÐü"”[¢hWåTØõ4ßTÁ2›Â¼³ãé3¦ÔFºŒ«¥•Ï3… Ží‰Û¶%Dí{–+¨TT¾¯·^—K1'k ˆù4|ýYæ&L~V+xÄãˆnÂPßPàqÕî¢ÛZ ù%ÊG¢Òw//¬’%áM¦æé™ Ó ÙÍ3Ela1TÛoƒ.³t¢€0u(x|Ÿš®¾×¾!8ÉÅ·¥ ¿ª“Î!Ùú>CKcÀ €Âý¾™ïü2 xcæ5y™¶EÌ¢»d=M]‘œ¨¢x3 Ÿ¦éP½6pñ‘¿4W¡šVq’FCáhº;|Uþa½Šæ‘ÜÁX ŒbŽàEXT Ì"×è[AƒŽlÂÆlYŠÆùÛ]Íâ6$ߔ֛—a‡¨IlL¢…lâ÷²ú]DK›I8ÅV¤Î«†/©öÆx †ÏMÏPìTÕŽ{÷tÝkrÒE¦7D™÷d¼cÐìpﺖì³3äZ—pÍõA¤1“n[ðÙ˜ÿ¦©Úêîx½ÅG6Œ[IXN4U¢XH»˜Î/ ò+Ò˸±»ÅÄ=*i×göÊ–¤Òº³#Ú¸‘ЇÚ> ¾¶aÝ%I̘wôŒwœJ…2ä€;yuCÙŸbÙI"‚µVGÉ‚Ð3ÿŒ€°YBÙ*û~á[˜ø7VŒÔÿ‘-Õƒ ,œ„µÍÿî^ð^rRi™¡1L·È[öca¹nܧãωCzxIЀĈ`kæ8?ìŸ/ÄSòìØIÌ4ÄÆ(Û)ù¦MÄоtzôÄvêï™DpKÓ~Ì ÕP*Xd¦Á7B4r¹þÚ32Ì7Óf655>–Œ‘¤é)¤M+ùÈÚ÷îAk–ò˜GÌ­ÝsãÂMøHGƒf3ÕËÛi~LJ°˜rLî~¸75!õœÑicYþÖy(Þ-±Ð©k ?O÷—l|{TRæ ª|IC¿}Òx÷uY(ßUýÂßS¢y|B¬gÍ­"”~÷K“ÕGƒ<$ýû´tñcœ±=´x5¨Õeîê§ð?€u¨r/;ËÝr¥Yú²¶¦ù˜;ùW8”%F„;é’nKµŽqúɆŠ8c®£x^åÒÉ¥1 {ã´~§`0µ±ÿ «/ñp)ÿÌ_jýÌÀw~ÍÚ˜^Ë%?ìÍ¢Ó'Ý“œí¤_;ÌNvßõô1Ì`;«ø£žñM¤¨Ô>ãq˜¸<ˆ²!-«†Ž¼1D >QãbûbŠƒ\Š?´4™ž“æî(]àeæÏÙé“¥3à°C™` ­¢"ùü³'N, ƒÿË¡ 5PÂÃ^¹Ê=ŸÈ^Y›½ÆºYkæß;Tìk † ËBeh[剫9­ÞÇñv±µ|™išÅ†&*°ü§MñFIïภžÃ%¼>ùõ‡a“³Â­;W|³:—ìÜ ˜³¸[€³´I™Þ;v"êz¯º_‚Èj®;*$a*YúrÏÉb?åÓ墷ï% A•#Ä3OýÌT9LnŸz›ø Ñ×ÃP®œig½„fÎ`@]Ú&¹ê<‘IQT¿‘•këq¬õlx=e †®­uÃËCëCüeäèH—4ôšƒÂ¯ÔñꃳńB²˜„>X4O%Ú稞øÎ®¨@—R¥ZB¢¼ž‹[ãjÕsÝEU’‹Áú§è:©Ô®üŽSklqH•C¼JÍÇ¿nòÈ/e•Ü×÷±•ªÃwp÷åÉ¿áX–ã&qÒ9Žh/½ò|o¹ó“s°káY’Á©jHä£s@¼m"²‰ïˆqãCÅåäÂG4~lÛMЗÖ˪{Ò„öz}¤sg WË«PÛryòÚ£8“ÕÒØÏ=kt~IqVí‰E/¡Î\„yBAÃr{þjÔ=/¢¬_Îÿêh¾¹,âK¶îYÈŽò±Í¤ àwÁöÑ·ÁÊ£ÎíïݧY¡ºkLíLY5D.YÏ?ú_"ÊÔU(Qå“…ýBcßDw‚“üxéU‚êÏLCêý$mØ7™Â_êhWtÏ‹›WVJh­ˆ@V SÙâv_çÝ£½éÌ XBÒA,o›‚9¨Ì?¦@ÅR0¢Àþ¥î%T² v‘‰bÇ—²Œ¸(¯Hô° ”¤G”f40ȨÊ< Ï&Œj6së)È„øé þ2­Åë¬z‰¬5†³6úË™ÆnsdÉ‘v¾!ó^avkØgÅç]ñû^öøG“pÍÕ£Qíu;ÂP§î—ôH-Ã_«ÃCg¬'ÞLÙ°A‹IнòzË‚ö>ºŒ³oDª"³<J`újÿséнÚAÁUJ¡Ó ©®s¦ÏVšÝ}7 Ýbò-{ÔiÕæ7‹œ1`Õu’.-ƒÉz—õKß}‰Ð¼SûîìbTfÊ=Sm¨ÂräþžCÕks ~U2o¾:Óà'W¢€ ˆÞM,Ô& ÝýSfC‘¨Ìê5u¦\i_G tbiLµîvï¯J"}“¦ªñŒà¨¨iÿ¤4=®8@ü7ðš¢F­¢ãØ›ƒœÂÛÙ&K€Ï:±7¹“tò&1¹—ÖßvÉÎÑ,ÓaõË›2^7þ`¤=.ïªEeIŠAÈOG¥)¤z¾))Ò|éà8‡‹æ>Ò‘§‡u°Ô«Æ:DXù"”2X4ãÑFPÒ!Là°²Zá”óê"¼ÛမëŸÐ½XÌ} l^ R&v6µÇ?΃ÝÓšùx³Á7QkýrŒ°QŒÜ¹Ù‚ɦ(‘œvk™.jhÖèÊzr¼t±ÈºØ–¼0”u¥¾Î"7Ó±ŽNmÁó¡½ó"韃óiÎIøK+¡ï<“¦h±óÉ¡²)'À“9ïG[›g<ßÑHJÄ‘}›‰JËfƒ"$56­ô=Ù4æ¸jGü#'À¯L‚’u~èšvÓøAkÐ…Ÿsãß|KÄ^h«¥Sn6Aa§åcp#âÒŽ·÷)– éÙ;‘ÙP{É^¥ ‚£œ7ý…ØÕ*¾Ã¤}¬ƒ %×’3Çð»t„²ºÍV’Z8Yê"t×ó“+PèUZÔ=éûCá?ƒA¥ú>g¹£Ò{T páìDB\œCˆ "›Ç_: h…¤Œ‘×+è#w¤·””Hïh.ä “ýÐ.•WK¥Ëx&2ê® %Hrú!7yi2~+Ÿ—ÓXlfÁn~‰!eP£ñH nîõ…úË;¨#e¦,O™à$ókøø×&iÍeL;¶ÅI¦ˆ]«¤)sq):Ñ^( ’ßQ^$–8s <5¤î@ð¬7SÊŽQÓJ¾uÌ}úOn¢X¢ÿ¨!=xw;d-b'm`EÙxV8úà¥ðΨ ¡Ÿ7åž}×94o#F“­Óâ«$ubm–4ÍúL“Dæ:‹G“3,À3ÿia/Û±*è„Ë—ÒL«›ô]fŸÁYºÃT …òIw(¼zžVlsPöË¥dŸ¬~òK« ÆSœÿ”ye¼²Ï('›ìncxË£ëò58¶(q¼ÛºC‘³«ž¦N|’RQ9˜ý—øÖµ6XÍ|'ˆŒ=”ú?^BŸ0‰+qÿ®jð™fÁDZ ?D²÷u³K’\Û”qŒóxS×îË*£…Í2ò¼[•nH,_—?DŸ“Bñ¸žÄqän; RœÏa÷|º!Žœ„ tÜéÈ=21^AeÒ3Ñ}~H2±fЧ,ÛUtܬ¦xÔ©ŒT†k¸$õpL Wz MA ¶o‰Nw#¸)þ~cè¡W³3bq£®wú£÷Z!VÞïû¿É3þ¸Ò´\ ßÐP"ºøÀÍZœÙ‰~îæv鿸}äÂv‘³m=„uö®Ðs¾¨wˇÂ0ó¼.øï˜Êä+Óò¸¡=¥,öeà™: F‚Õ^äž8ÿdYe™&Ÿyb¬ÀdD¾ž8ò[„Ś ÆÒÞÝþ0BüŸN{ÿøhöÍ´ŸÀ#æ“¶)ï}þ‘ÑDš_Ò‹ù‹ýÖ%V4~Øp’ïq:eµ>oSTJý(,Zwl‡Y_yú`×½¿Z>û2Ò?ÛëìA!ð³²ü+Ð:Y±ð¸¢uõ‘Š´1ÿIlZdèDçzª\bÕ<,E„ê àoì°"³œî2_ WÌàw&$­>ËÙs4G€ºè¶x}aÇ!6i y Ìj;¯Õ;4vʃÿƒ]è(ר" Nê¯hÆè•Û¬êVø2²=¿ ¢Z4äS«öÜNÆ«Us×Ìoh˜2¿DYHÎ3«ždK*$óíÈYÅ51r'4ªß©CÄYÛÏÕ<!Ô$r¥Ò£&E?د˜‰Æƒq >¨æt6ÃLÍ¿úÔ›º(Årì;O^Q{«âe‹É%W®dUÎ!ä‚ñ¤#¢ÜÆ¡DÞ7bK7pb=ÝG²? 2h4¾„ 5‘ ÌTÙ,ÞmzÏ¿Oh:6ýüÍtÒfgDÒo›;e=FíçÖŽ^³S§Øò"ì0µÄ9 ¿X)f[Õξ{B2ß 8þ+!ª9Ì…XF"8s®e¸ÎSê1 î#ÆL¶L‡µŠjÜ<þØöj¥Ùà‘=rRfL®]°:9ãtËëéÈðo¥g-’€<;!`:zÎ [Çü?\8÷ÌaKõüüŒK‰ðnް¥q\ãI„¦,­$ÀZI.°.P¤@€9ˆ“Ò®'ÅüPþLeïô'Ó‘P¨íRCçl—Æ8þ2ºx-È&öZzן*&™UE[;)‹îOÄ4æP“‡,Áð¸Ý0æ8Î+3 ¬1rð³Ý_Þ‰“î-P÷)3ËO •F˜2ø=¦œ4Ð ,V8ÚÀMµï ^ýj`i¯ï½1yãm–ãj߇^„MvŇ B¨Ðƒ,ö~öÊVBì³Õ‘®™rdmРp=8^ÄﱂG­ë­uC$ ñ‘>Þ}õ•6à*¦8!|7Cóµj’Àd%óuBŽG¬W"t‚⢠¸ó;qU‚Ä$-ìéö˜êjM8¨³ }õ¶*#rÜähDfÖuQÀõ`È~JMøÏ ²!ú¨þÛ’q —¾Po=B…«9±À'ô±òŠÒ’(wö[Àõ&ˆ´°ÒE-ï6dG1m„? <öŒ˜Ñ {-Ôùç+£?_IÊlv›~¿ÉƇ㴀’ÕT[ýnd†SÏÍO%’þ•ÔX'Ft£ã;ƒ²¿Ú±‘¾}âꇙTÈ&ÿ޹7­S+Yä=ï/ºÈÉeˤ5Œß»ÿ…†sxü—#À¶)…þsjÆ’,͹jz£%Èy4ƒÓ™:&¡eþØ6¾’9e;ïd”Ó¸_·c‡É(ï€päÓkT!Ãc; Sv DhÂQO KÀyRüXB-ŸmDhî’à ŒqÉvT1M0&ÿJ*O­têÇÚßQ[¡$ÆS9¼áêºSêlb¯µ6ƒˆÅóÑoëŒz{ÿ5îÄtظÓhâm²W¸ÌVœSojJ¹íZŠÎðëÁÓj¹­˜â6úOòuÿK+jKÖš­"_ý¥Ò€,dªÑÔP=ªÊ”«‰6ÑJJe/ªmÉÐpCÅ4/R 7…Ý?§ý ÀÃÁ x ä(:úA2åWp‘ÝŽÌigü<úëY‡"9Bc뫌¾,†5-ñø U)@Ùp…DE¹š‰_ÌdXþøMwÝ+!\L¡Þ„±u«Fõ(ù:æt…Œ}d/f/ϵ„F½¦….^ÆÿÀs ã“òο±q›¨"/”`huQ\Q/•é¢iì3¼ùûúЧ·¨bgs6 CÿjßNìô¯„ܪÌ1΢ک3ŸfOâ,?peuP@O|cƒŒ7/ïŽ~M: 2ôƒ‚±vCäæuš›‘-¦}ïáÒq²÷¡_`ŠCZ”>ƒcb<ÚPobp¹œ³“•Ú«E?# áu°êgj æÌ¯’~}j¨Ÿâ[Ë”Ö$ìñ ÅsUØ_Þ»›VÝ?dRj¬4›\6ñn‘e_ä•àÕ7ø\«©é”öÚm9­¸Ø×_ÂAsc€ØXz…¡gòŸÃxc”’_DÔÄFø†·T•%~?ÍØ¬}"‡Ïï¼Jï ÿ¦âcÈr ïnä5e‘QûëýºP‹PŠ´ ïVDJ¢Vβ†ÅáÂé›îSo¬À)4ò~y% ÈHõßÌä †cžžûý Ü?MæÚ°˜‘Q¡Ôa…‘ÏìoÁ7I¢ÿíu(Hãwx^Ìök’Ÿ“«ÞŒìÃvbm‹{}-›I9ª?ÝQzºÑäÍ+d¬R)’zþÿXîÀV¸±ys™: ûa4…í³ñ ¹.Z<=fÁh— sØ­äÌØ7ÍVmGöF:èŽ ßpó`»þnG°nóý¡Hz½Ô,ùƒ%Ný0/©¾]ÅŒÿLjœùãünX2ñ˜Ë%™öøkîD®· @®c„#ÊéQ?At1ápUlÜäéÔ;ÞÙÏqUÇ£ˆì¯ŠnZiP]sbA¸‡CÏåŒÊøzáÂŽ¶hZE°ŒñѳÞχ¤ö¸2¬èTúu察Ï+AgÁÌéãÜa“^ŸÅ}àAŸá¡o1'•µ#6|ëç«FÊϣưàE°\̃™#ØXÄ )´ëI%x[ ™‘ꤗ³ åùjlþ…â°\­•)^HìVˆG7 ú´hª/*Ù4i/:_›…˜üi¢ð”î°0ŽÛg6ÃPš0f{'C—M#Oj4bŸä•µì6E¬ïr`ð„æro`¥>³¼_qÿè4),'r.à<²m6Âj ¯Á;.y…Jå8•˜ÅèwD?ìªCR:P‹È”oÐ÷Ô–.ù-OF³~õ¤<äL¸m®&p’+Ø­äÿÙ„££ÿB»º×g•>1Øÿ”…r¡nQõú^4~ Ü£« ÏtþúXMoÀ·è§ur—ò»ÕÖ9kíˆ=Q%N¬O±?ë»×ÍçïΞ$riÛj‚D}¨k>­qæ^‰ª{é>Tw$oŒúžÎ£ú޵ÚÓ@±ŸèŸÖ¯Fe¦T¬íÐMÔÁ_3#öU{eU®Ö¥ëmº ”ÂÌúº¥º /¤¶ëù«*kDzºE9Ý”¤ëI ) yŸf†‡]`’—¿3¦Âfº~Ž–£@Èü¬‰(“žëòÚXÒãeñ}þ7ŸR ýmÊ‚)®"Ñ€É]£Œ°D?bÖN»‰¿“4!Ìú‹Ìß0Ãì¨)ÍON S '’¡T¶ 'púÄ„59¯K!&C1Ág¤ž&f ¶E)û$±šL•v&íè­—ZÄq’ÔE9‡•ŒÜúâJ„_g "Ø–Áh•LZ Á¶a§ÈjÀPŸÛX$ëxð˜Ê’nŠ¿fh +3mãd` ´±aDMÒæïe®ÞÀ’}Ó»wh ©:-q zõí5ˆÄÐ,³ðoÒtbêðZïLQ?¿÷ƒîûV$xùX—ößQoö f^ÿµ4øQCu?—iåCíÿôà.XyF¯dʵÉxéû„$¯íYC=6¢äG£6ÖËï¹”MžÚA Êcm"ë1ÀºJkýL|ÖÉEIީӓîqgÔ%b?§)S”ƒ5 úçO¼ú*’£îVÈ„ÅÓ{` ¨-Á¡N긞GÑŠ}‹/=ÜMoέL“á¨)xˆ= ÊoP‡Žˆß'-³J]ç% ;íúG&˜~0¼¶Mtò.i¥3çÞvÉúÚ]íÙö„×ó ]ÐáŸ$ú/.§<ÎÙ’Ç\)¶¤2jÝ–Ľ¦†­%¦ª<•Ž,Ni¯dã>ÚÔ¸¶IÔpH> P?g ÕÉËÖA„QÅeýyz§×[ˆ©Û’߀@¨fÞ:¬íH³O=W•¨fAi#ûâØW¡å<™Öæ#fÒF­ü×Ä-SY¹÷v3JѮȂì)¶C0æ#îÔÀõL²ã¡Š2ÒâsVsMEÅxµùH# fˆn)…o©m¦ú;#:X« ³ :S”€,ðC¬R(Ë û-QÖM¿|p‚÷ãu Sز¹æåg™Ki%a£Ô0°BªÒ›ô@xµzöï(0Ni»mÍãï±õ?«òÅ#”îjšt/[å1¢Ø3(ÁA߬ˆ"ÀŽDLÜ>KÝñl™,¦/Á­USKË…y¢þêËr§-—+Žœ¾ªn^·(àóúQÿ쓲Iß\júŸ~óJÜUÚε­Æx£wÛ-E¼”¡ü²?ê¼] Õr<(&1E¹”دêJµTH TU*OäABG¡ÖÀ?CñõaSÔ·ìK¤¿öŒ’ 7á/Óàaá½õ†[ÅàQ²Â ²C½ D}E9<œwŸ´GšôÞF8‡Ææ¶6Ž·Ž£ÔÊ–`ÔY{ê õj˜x^œ“äñF5S‘:JlæÿšÛ°ÄåxB«g)ê†Í+ši-دz¥³a4|­X‘üjZœmŠ™z>¿™T½åÈõ¯Ç£•3V„¡“›‘`n¡Ï´Õÿf¯"Mu5ÇJRDÎúÄ\‡1qó1ç‰oð­ã $Öïø5ð­æDo½ñ·§ä¿•Œv…N±L‰8ñ^÷? d\Iñˆ‚§ò}¹9ki½Tlê|š£{-uE¿Ö‹Xò `‰ñªyŠ™¿}àÀ‹ >eay8ÜšüõCPb—¶ý|ϵÄ'h¶{‰‹ÉðJŒj´ö;ü’WÓ-ìË Æ½zãr?w ×ìfªZ™­Õ#¯ ª<ø]D¯Çaäòq$Ðd¦(ý’pe®èóZŠoG¥\Ü+i•,ü…XJr‡ªnך3W80dP],4Àwìuþ åfŽxNîõð] ]ÏR&iMø¸Ú£­o¸Qeh¢'¾‰<ä×7`m³EgÎw(wÛá‚J½Ýâiq·GöÈ._©cîÃö€+–âL²1~îtfæÄÙm¬¦BZ1ïl÷ÔìKÆÒUÆ2:‰´G9…rSÿÏX!ñîGAØg¨¯76MÍÝáï¹m*ˆ-Ž;¿Q‚á’´™†„±6¨Ñ¢Fû¤%uyÎFÅÞ%d;¹1¤_¨´ÞöøÇލÂTIËM;%èO]Œ*#Ì‘²z6ª$} Ìkð+ -é½ê¬$v&МZ­ºÀ‚Vö...+7Fo–Šúd­Óσ:‡:Â4‚FÈìeú[,øU¸…~oÔm¼#hÁ²ªð~‹˜Rž´0È84_õñ7NcÒ¯¯:ÇžÿÉv2ÓKFχSá “YQ;KFõBø9C1\w]Ýìk»A[AÖ4ºª®ï§*AmšÇ¥ÞÅ 2,MâY•UüþëòÙÝ*±ÕЫ%µr×sÿ ԯ鳽r¼&j¨Òy¶"¾(lç7fFíÖØPÈ x3@WBçLD–j©ç®s»6G7Í\9qCã½– ‡}Uû‡Ï6!vÊâwQs…œô¯šc­£2QËGܧü!„n®Ñ„$ÕeöT—·µ¡´<Æoèõpevx…®ÎYõÂde£ˆÒ}µO4&»÷“RÑÖh&†ë6~ˆLOz~Ž Vì[»*­Æ"Öw©Zù1œ[ëåAw|Æc¬ Ä^Èù:êU›€>±©wK¼`†Î…áÓÝ"¡’v9u{xd'|ðƒ­MïŒwr ™Ž«‚Ì´³æâ’=@"ýÙD}êÀ!ÔyäÝ$8Äï•òâ.ÚŠ3°m´7 $}n9ƒ°ÅÔ—ìfI 0"ÆQ¾qÍ~A·é«Ç‚)XÊÆÙ@a6jl{¿h¡£GCpb(ä&Vò«áá:…™ºè’A³W§M5K™€üt$)!‹°GùæT[eï} ¨¯SõcP¾ Žû3gÂ/¶Â¬§é‘ý;ÂáÞ;ÙÞâUŸÄãÂD­Õ%ñ8îöfÛ뇓3¡dÊFpNhÃJŒN½zIÌ€.91˜–rd~lWÿ½aæ1×õŽÂ‚µF(--AX •­J"§MOΛ_ÙÚŠ¤Œ³¾‰¹E[U3ó‡]@×KÓ–~6TËìùñC°k…ÇúŠ ¼À}á¯>©ë06&‡:Jzz…ìIN×ÒìÜ£ž R+^ýý–@ÆÎ¤¾ÇXþ¨-ÈGŒÎaò³Š>‚SZã,÷(䯀PÇ8],¦ª^²Wàf6LRA¢VÀý~4ÅŸs’OqÒßy *VÎÊ~gÏvûþ5dã÷Œæt‘_$J)ÜÒø«Ð‡jg½+‘nª¹zyªb£Û3|éé>Š‘ìè‚ͧê9°4 —g˜ɵrŒrËuïX_нésæû:¶sZçh3dÈf–ãHæñ̶Áû'ÝD\Õ˜ÚSŸ ‡×e1wÿÝ‚ C‰ízP®ËVòõâ h),»Hê”gQä‰Çx'ÐN†´<Í%Ï¿{ZÔÒBZ3Œ¨(Óg·ùò/ªW3é²öuŽ Äw©–ebÍY²ˆñrSÅ¿î ]”ÒšU=™3‘Eñ¦Qò-x¦hة¡±Ö¾9Ñ9’Ú(ä>:—Y®Ž3ÙÀr"µÛQƒ.iÃà°†ƒpN¢ø_¬Ó{YR)2_ü'ÏØ*óQ̰bÊ…{ó}Ë"ŠvÜò¿:®õ é‹òõm³¢ {Ž€‘ÙJ þå*ÎÎë:ƒ‘¢ú9 2›I£¾3ÊÒ¿Y7Ö™ˆœ8.0D¿ë¹f˜òTšÔ‚íîòb²+›ân•©•[ÂÑCàýE,,W•—Ù¼¡¼³©XTéY’ ä©~„Õµôx›§Ë«8¥áÍKmƒ}ô#keS³ý¹€‘Ð’Iç“¶xôqš#kNŸ¾§ÂÔÌWM” èÝÕI`i9\Ü?¥ ÔjÎë’!ü®öHr©M^ÿg§…íƒ'Dï*æw‘ ÿT£!³BæÙíºÙ´ Ü»øDˆiÎçÒ—ü‹éGøÁYÇÇÆ Ø7 jÄ ù`ØÒçø¤=À¸ö¶ËùV÷øKhDs<5æ»È„"¯áñæE*-b<¥)Ãôa&+…’.ºÊ^†Çqq!!ì"i"4Ï_“;ÆÊ“ ¦WöNÑÂu4RrN#;é*“SíÕÔîª^AÁqHW7×06¿ ü`õí‹ ÂÉåNcƒŠ¡Vc"žµááù” #¯j$5›‘?ƒ`Ó+éܶ„\rßc$fйÈ] ZÓ„e½ð$³ó D…l}‰‡iW÷Ê´mUÜV€5sœç²Ëê®Ýâk}j>ß #Ót9 ÈAú‡€Œ'©.BŠëÞHŽÒ °ð9Ûi'ö—€¿vÓ4E|Ÿ‚ ¾œ8ã¿jCÜ,«ï½sì¬É'ÀþÈU¹:ƃ$ü„ôl‚7Y¢ãm÷+MœaqÒøYÞuþ_y‰mP2²Êá93oOdžãMMbË‘…ôìï)u Ža®Ä ™(¥…øCvµ gHÀ3âG)Pö±èmì&ËA¸)’ùS2/Fò qhøQ¡G ØH+X+7=Ôî"¸Æw‚â<ô<Œ±éXË~~['„°KBù ?,qà#aINy¾T6¼Y›^'^iý¡ŠÍŠ7™îonðBÃþd£~­±-cLJHßeAÜ"H W”µ©uÝË^\Ъ°G‹"D“ˆ•a(÷x‘§Æ«KÐÕÄüê' t¯!|hˆ˜O é;dü÷¦›B×÷ÜKo¡nl‹+—êT©F-a–K- šaK‹êBˆ3ä/% ýŠ}‹xiœ«Ä)Çì1½Hü[² m Þ]*š·]äS üâB3VJ/à…b á’I(~ªvbô‡óŸÇÕ]€,ï1I‡ôÁ"ª8Q攪áŸh[«ƒ¨{æß”¨Q¢Çqðˆ„uï6oí”Ø„™«rt8ÁšsSål&¡ê¡ÁÁô÷Ë{OdZ8*’‡Çõ·éßÔZ&«x 䀥¸[¥!«¬¾åÚ»Ov_áSTòHöŠRìÕËñ|+E_sÍϘÛV^Ù-[2Ö ÑO—ÿ®šÑ¤[?$"Þ=ÜMUGy³Ç/¬ôÐcйã4v íhŸ\t—y˜ëÔªÛΠ “á‘j ?’Î5:…ÕÀñµfÊR#™ Û»o¯lù÷°{ÝåK´¤¢B5i½Ù!Q ð–"¥yNÏfð!:"­®zC¶TÍBN}n>'´Û!vqky«.„T•¨|Jö¯ˆËàáÿ”z±Sl;•hƒBè×g’Õ-í‚2Ø£@ÕuÂ3Fþ<½[‰D1õ¶·(3Ÿ;¾»w‚6g®²æa›!¡ñŽ$Ûf\ÛÞ¸³ –btŽg‡ÎÍf%ft?§­ÕjÄÝT®¥ŒÈ‘oÃó ËéÁhxJ÷üíu4VSxÒÚ¨’Þ£@Å2úØiCrÑÇéM^ÔƒŠ¼$f ÕÕØ§a/ \óô„ž6îkÅ,!dBJ[g,þ(?[¸ô¿nµQ™3žÇ€<^ôÚaK#NÅ_!¹KZÝm}$:Å’õ]¾ãPü°Nøþ{((aÉ•6.þl2k§×¼x’m®géG¬‡=y‹Óí?Ÿ$šWxMD¢;ª’aùsÚjô±›[ÇÊ3`Åý1ØFûŒ×sºkZ‡ ^1!¤¼ªÂTë5ؤhaö‘95ÓÑ .0 NšÌŽ·€8憂6d%Z­N‹zóÅËÖ·/S,G}K—N[ö’4.â&r6•‰€ Î`IQK„ê9U¢¢‘¿§ ;3¸¬õƒe0²[X{Ðí±ðŸµÿÕÀúßE £ú/ƒ2˜Nq_$­guAÿòG–[¦'’)¿Ûh“vLö>œ[ëb¡ºíDvþc—\DëUÂQÇ/„Ûž`‰=«ÎDÚ”l¥÷ã¶ÚãØƒlؼ¢:‘«û‚úOݘý>ÊQùÖo#$ ò­üd¼›¹:u{ŸÉT˜úÜ À…è& øY iIý¹IÆ\#ÚÂKt¦JÂŒYƒ¬<Û¿²Lj9ã¥×eøxÇæ‡¨õœ¯¤#“ŠÚcÜÕÏOI“Ä"WLSÕÁ¨W¥ÓäáÝžíõ ô­õÍ—ÿd¯~ñ­3±qr¬²CË/óÍÑÓ`&Ó9hÉ€FÄRظ£ha2ÙB­1™•óóª|]¢›·´r!žµN S݆ä:5Øm¹GÁÝî2ÚÎÄ£s·?fªn¡¥nvß¹–µ‡øPX»»2ýnÏaúìYT®À†9ädÖ rWŠ‚>§'C°OaDöG2fÇ}G ™ÃzÐ- ªQGßëÄ ë@v&=Ö2G®9)|7ö¡K¶a€c3>ÕÍfÐÝÿ=[Ïâ8œ·mÅYj&VD»t2¦øeyï*ê%ûR6I!I—‡úŒÀJÌÊ5;@H‚sE”üÅIcŠkª„é–‚Ž@ï¡8HŽÐóm³¹š êÛ›’·‰žu¿p˸"… ríœs›Çå˜7ºËH«xß^v­ß§ï[gݼ™ŸŸˆ‹`ˆÑ/„;â¼=…RVP@Ý~ï;{ÿŽø4î»I§³™7å­3ðˆ±›ûPEù¯ø†Ð¬öÏççàÄ솻²|D±Ã&Ø^Íe%£ç°+°R5fã@àçýènl õeÊ\Áå[#€§” ùÊR–_={-àX¶h„‡•§ö¢Åå]zK÷IA"ÜC¥ÁƒýÐmgËØ‰—ÓžWÊ3–œ\ôîÁÁqSÌòÊÆ æÇI¥à¶ýVù<¸“ÄéÂèÈu½ßŽiŽ{ëJ@ÈÚ–Ê¡¦JãIMB”©]Tz„+}Ù‚wün+[(++:²ì5»qš°;z~c6eõƒGw?I ˸ZÝÿÓŒoZd£•76¡O&ƒß16¢ÍÉíàíè"Xºq†¦¨¯AEß«O=÷”©2Å_g!¼†¸â=Ä ÞŠ(¥éâ¯9qâÚPÊ €KùÒÞ7¦Àpzô\ ´ð Ká(À …ý€Æ×íÁ°S`@¨3@?]QÁ*rFÑÔUÂ~Ÿ_í™MM欖Ìïp ¬k#OTm.šãö%Æüàçù¤[?oŒ µ¥8\ƒï½Fšj¦ÅW°_¦UŠ}îȘÀþ‘çÉE,•ÖJ’z[Ú_f”éŽêÿûÊôÖ,ɬp¶^S„ìi7äé]!êR´åu—Źiœ¢ø4](Ê€i²«ù:‚}ÄZL³¬M˜kp†dyôXM4kCÓ¿{ÉøqDš)ë²3» P4pFÙ›ç{³™KÓv¡Í÷±J‰LGÍi¬=ˆ˜ÍÉ \ò2+ê~dî,ör«jAuÑÅõpï;‡(*¸ÎÖ™ÃÆ5 °i¹æ¡éÞy¬ O7N¢|¨?âïZRÈ»fülmKÍ*ÒøA_1ô¡Å—+$rÿ‹JnNÍéȧ¹ÖúŸz"|Ű‘›&gf‚•ÀÖhË{Û÷Õþmì¡Hz7‚dÍ”íPËPЉ 뮼íœó‡‘Áe) •$z¿ˆðí>*žsáB8ZW\K-o+ÿk-×^Ùçü7àtåã¤ð‡¡@‡q(&¦Pct\e]n·Øfáx9¿ $Û‹à"7Vñâ:,Ù>TÆtL‡ $»%ècƒÑËúÞØf"òwcSûÑ—tÝŽBSw&A¾ŠJ6+ýÈÞ8$s5—ÓD{Ãþ”™>èà ¸!ž„„¤l–4`¥ÐÄñ>Y:)–¯?ŒBpš8¡ %¨§¤|Ú+‡è0 ‘ ̺L,œtì‹SÐ8)؃Á^óÁëyO,«»á [v\n¢«ãÔǸ% mFY×?§_ÜäVÿü Qå-Çñç+ºb ò 's_3ðNÍÉQË!²S`]VãÜE´ƒ ¢¿×Þ‡´¹q/_8•m?¿¢a­–¸-%4Ú}8ÍuÈhžJŸat‚:i7ÒÀ@²"^«Ü6À[ãùŸ„¬'{¢e›Ã¦îEa;:´¸ƒ“`ݾÿh‰ñÙ:#Þs°écT “Ì3ÈÇÏnÜ.»K$ë…)ú¢u¶H0§o†ú@-t® i’T%uâý!‚ì,ÈúYÞ/ÅKkyF*)%±} Ý$ìMI1=µùWÚ–‘þÃŒ\Z;÷%ð4yŽãLj,À^ ÝÀþ•ÂçIN êòvøNù“Ï;úÉBçãvœ3$[rzMOxЧ—cû:OáÝ Ý Ã( ª½Ó£¡ÿÕ•fWÄ‹ˆttø¨ú„˜SC]ÉR—dÎËÙHŠê¤‡¥}¦Jã€ï^¸U4â±U[ùá;—¨±[YÕ[ %¶(ž BB^§^Qå» £nM×O‚;Ѓ°tÙjÓ4Lѯ©$\¥ðÝf÷¾Ó–IþÜfõÆ~f´/˜J*¼Ó^ŠgYßû@Úxs¢ádâmŠþ2³™—Kéƒt³3y˜ ûà×á ·V?òU‡¥”5}zøc @Úµ×?y(¼*)\SDj5ú,Æå( #1½2¬†1ÚÈrrdÛ1#šÓò§ f¨m&iÕ,»Ýêµ mLK×ׯÏäÍqŒ×ƒõ\¯ÂB8$ôµ|ćõ™Æba1¿>Ót~KLVP]„ýÛo¼µÈ1Þ“ýwØ×-ßÙZE'~ÖÀ"†¶÷<ÙA¯/#¯(v@\W¹‹7¾#¥ù-Îè9txl4þaïc½¿†[Y¯#é}i§’N¹%‘rFZ½Da†;XžeääÕ`÷4C:ã!zm<æxmݹº“KcmèP °}43{§¦Ô(>XˆIy¹¨¨nWŠç‹ô‘1ª‹éf48w£¸*h[È_¯ù¯ú|uâ—PVêPG†ž½EBzA*»³0¥_t1†Tãk3^"2¢KǾÝPSÖp¬ý—{#±Iè)0Ë^PSZºL}´Õis°7ö-‡ˆÖ$u‘#z®ŸŸ8ÿH1>Q㦊 ØÁ^üe8÷½¦Iæ·Å,§u£:Vr}cd¿ýË]ƒ–¦Â–‰åœß Ü(¯3ä¿Üb³(Ôq*o<Ÿ)Óñ^FM=-GÏWÊ~Z­èô“d{ à!t «Øå:Íkv6¨`(aÁÑ"4a×Ç«n©=ž² -¤ƒ¶»V}ÛHÛÝrX¢d| ÅëM°u]£,«15g(·ÈK[žµcGš)‚û¢.˜Ì ˜c¿®cR÷yÉ9¹ÿ4à2È͹,u]€ÁÌ}•´!7JŸ@Óò Žc†pºª°~g\)º :ÔÊÏõ#'O²,¬ÎáI:ˆÏº9D@y=ó‚È%ÎØxÈßrpÏ>i…«|¼W|ƒ–Ì“!cc‹ÒaÙ¯5Z(‘5pÿøÛð<]5¹øF;+“&R[aÖzXø½ðTɺdS]‡nZhãoþŒ{ü-ÂØcfŸžïÃ$ KÓNxš<‹&çLmÍpøÏŒÇ+Zåädúaüû–è9V,a½‰ƒåoxöÏe ‹eYõžikǘÂC”’UàADüCÌÑŒ(%ž·•”!lнȊÁï-_p#·M[¢k²š¡¢S¥–l–ÇÂs"®Ós8…´"Mü·‘Å"ÜßFMÿ›[I[h}µùÇ”\;– ì¬g†>ÍÒûökKÚ”)Û_Ò)€o×E¦å¿ <¢Ú‰Àp¥{É(›äíƒ+q÷Áµ¹ÎvU5Ÿ,=§Z·kÛãsnد¤#“§þÐü)‚0hÕL*ƒ@Û`™†ƒuÄÅHcÞ‘â ðIΆàµ_q³¹${5pD²Â¤Ìç´®ÊGrK"» ɵþó€wméeËÀúÀþ#Ð=¯c’s¦Å0·ù-³S;c*€3<ëÒ¢s<Ègyá!ÝY§È¦Òëç+'Ei”JLÝPÓ’j µÕ>…ä“ÎyºoônÝ%OâŒpŒ¡"Üã\Ï®á»5°¶¹;’û W üÈZƒT'« Ÿ9Ry–„ÛnI:7RÙH‡y âK¼PT“OÅM³þNòGFíù6cøînÎýAú"2þöÐÌ&UùBÜLZUŸƒ¨tR@kˆ¼“%:  &OÚ/NÝZí „.ôële<š¹šS¯8où ךšeÿÝómú¶xµ)o iCßqF\³öÔi ¦ êÒXfªªD{TJwSHçe­UZä/*F\ñÆYý¾]PiÒ˜Æ5Uît'¡Žâ·ù·Õ^ KµëM8|¡ŸÃ+'í_aFˆ¨x ÃW4"<þ‘B5¤Þ‚’JWFÕþ±cû±–Rà÷rˆÁG©°ñN’¸õíj<òLøñ©PšE ¡6«W:£ApáÿìB9Ienk91—½É˜Þ'=5¸‹ég·‚ï'U9Ë+þÔ@óÀ7À$ò.ˆSN ¦œÅ n Š« óãcãóàþ²Vi´«"¯V’HøÍ`BYE”ó6l ìçþ_eކHÒe·ÆU’Z º`t“‰Jª™=¦ŒvŽòÊÔÒþYשRv‰ ´šõNò»ˆmØáoæ ÁÊ´ 7k,Ì•Ú ŒºAÅí‹AÔD§ÄtÓ9××=Ñ>³8ÌÅ–•µy©–zB:ô£¦›ÔHaŽUêX–¤æ¥w[ÞR»Q@”Ýuðbã¹.Èk>±$ŶIØëL*( ÔÞ7þi¸rz€S|8åiìíSœ(ûŸ¸¸[ûÕ'>°óMOùŠ¥9Œë1C’j)YiCÏÇL»ý€ÃÔïêCqSê]3'Ι_¶tÓÄùè· /å¨0-í@±Ã3,â¨À8‚' |…çé‡È)ƒ…¹ÞoO Ã}d«éÁ›¥ s¦ošHr$ÈÆ”JƒBq¡§åÙIg°j.‹í<Ðùnǰ×Ä’ŠÏ·þ#W´¢yêœ>]¡Ór¯-­«Ÿå 0°(7•ŽW`ÝÚ›‰ÂÊ›ºùÃJ*÷1W_ýIÿ%@N Q9Š #6|?­´—*wŽç ’ÍlvZŒ S¥»J}eMÙ¡~} Eè§iNi(#[OMãUfÁÒüX’=¸0p|!ns˜’’ÕýÉ'Tº?¾¿ä—V(H®–~ŽÔH¾hY¡zçAÿCjr¤qùlëá’á“wQâ¼z#ë­mË^ÑjÞ~†oÑ®ž1:Ç?õó,€û¥î^T/€«ž}.ÐwÕý -ÿ]Ûv&‘À™Èmâ\Ëþ®~û¤Úç„ ëæ¯úòÒCbX©øRCöÿ–~Ãä ÐJÀE¶ùßX0@™‚ÿ"àã9ÿ ±‡iCÇvýì?ßö'é„HüHѼu‰¤1ìm °‡µ_%¥é½vë–1“Þ"³ø†ŒGØJ ²v†1Vlx×› Qe!nŸ>±8‹[U“YÙÍ"F•Sï’“5ò3fkq]j œ»ñiW9®”ÃZÉû,¤Q›M“ûÁ–à a’šE8 ë’q©ü,áýråñqÈîªÕ¶<ª|ÑO HFèTË|º‹ÔÛà÷`³IÚ©´*G‘˜ž¦Ëg†=Ò=¯6é‰43 äž›p@Cé.ç·t)wÎÓ¦µtã>=èÖÝ!GÍÀ@Ïu}9Ù¾)ŒaÖîõ]¹A¤R^T ‘¥’r—¡*iѳA ÿ*’Áœ¥ÑSQý¢Âut/3Õæž›CD¼ŽeÞWRà¸1K©5fž¦\&šžFü‚Ùl©‰ êÑ/ÇIF^ïWÊ¡YV›v&Ñéÿh™N`̲jy·!'‡DÆTÉ®ûGaü|aÃ[ÀèÕqÌö”ýä\Ô3 Û§`ýç‰Pb.($d‚\³PzÙëlü:åIÂQ«¹­TNÉ"8­Ñu ²Œ#àºß=ÃNhÆÏ x@ú1ÈFý}t~Ï }FÂ|Õ+±HYnÎyØ`LÍÒÈ-"Óòر ¨&‹É+’¿TaþÑ¿Â^¸Úg@cI˜<‚ìSÑNœ·v»ó•íÍáþŠ×_öÓ]¬jÀ~‰ÎêR_ŠrgKžÑò„!“@ÅñêvUÀƒE+Åe5þ¸öNY’¦ˆWkÕùDfZKMð7û{MÇ$¨-å¸IäЉÊ1Wó颌IiÚäw%°Û\AiϤ&.ÙN”ô¢(Ù¤ï@ «t—qHÄT)>1[1É囋 ãTâš.™¡Ï%F×.'_×Xb¹%]*€•dú»-ý@Ð'µSáq –å#:µW{~{5´8¼æLÍósD2k;¤’í-ÙNþî—!/Upgù½çˆ$‡iy1sÃ%Ñë;^èvðw â´t/JW—ÂlúTÖQ´Ž‚‹ª§›èH Þ&û÷8\ÔšÌÕÜÒY©P‘ÉŸ•.Úeêõó$î âwE<ƒüM³e¨ì+ý>¢p ’Ô¶pSÓ¢®¤ÊKžÓO^ŠÐxºŽá\ðB$Y&Žjð”—&¨(jÞ´¥I¬8¨º.>˜­Únȉ³ôê#öLkÁõ­|#hÖÆ“ E!ÃDÊêkPò§N©‹…]Aã>/Î2­ç5x¦Ü¼Õº>ù0ö.bó2hº–g–Púü9tãJ]FÙ\ðk84|ûoïTÃöFkˆJ˜È\én ¼e·ó¼³TxÍn—ëƒÅhŠ?á~ÏÕ‘ÞD†I`æ¸Õi°` ‘‘ó)¦ÈcË2¦5BD|\¹SæêžQ^èº4ÊÛõ,k@ñ ÀuI¢H'Ue,Ž)Ø%ïohËÁ¼`qL͆5µ…IjÚš¸oþ’iŸÉ‘[övS=Òò™Ñk°[^ÔB«ÏœVÊTsú(_t_õVn 7³—.ÍÉQÙ<ÖdL1E8=æ|‹6aøeÞ¨²?«›MºGÙ2áÝ’w/6‹»2RljØIäô¢®BF ©^uìÚm*›¨0wß31â RDÅ@QQxg÷­x¡x ¹"]5¤¬JÖÙ•@ƒB¬È¡Ítñ=|‹dÐX‡È.½±x´´™›vã lþ~S„òd¬6¼èŒÒ̇„e-)ö¹ûé©»|ÊМy“Sã#‘Ià0 &;öÞ0Ñ^³w=º…N¡]5é½$âa D0Èâov×÷/ÚéÎ2OM`Pšê'ëgSóöùõë¼Æm'ër„ÎëJßipnÙvéo]aÕécS¿eÓ7}­Ô"æ‰áC´Åàú&®…>‰Ô^Ä–_s‡ pF yûñœmëÓ,~¡òœ,;3ÈÉd¸vÉÅg^6{„qÇhÍT1p›_Á!€>(CøÒÖ26Éü=TÖ¨x®åœállegùêSá¥T¬^Ñÿ´ãDSÌúdgºÞÆúÌ{û5l£F¹„ËIhEŽ û¼-÷=w%ú&¸•áÐqXË©$³ÈͳŸ~HÌøÓ­3í§å ›—Ñüí$m’8óhxšÊ!ÃÇ‘*†¶–²ï©ïóÌ=mÿ¯fÀÂg§qƒ®Aßw¹¯…•ƒŽ¬";¨O¢Fp÷£³àµ’Èðœf¨-ìZp‰ ìS"Hä/H/Ûh¨Eýð™]¢s„!J»í²‘ôj˜xUWàkaÒ[ Fçæ\µÏŸ¹éH¤NȪÏuª^éŠ3wŸ×oåŒy;›ïí(AEŽz‚ƈÝîÃЄB„Þkö£%ÏÖ™&ÝbµæpòQí{Å›°óÓKØ0>¸~Ö¦úí pw!jµÂUÜ-;Ë ¤BõLKÆ Q«‘GMî‰Q×=lxmšÃÜWǹÏvŒmY àb~´C=d‚ÿBA¹|fC SCf Õg›l  m2Xÿ/eëÂí¯-×bà«ujŠÎ Ð|1ò ±¬rjþKÎKîSOÚ¸!ôÜR¶´]ùûlà¤Q†òÐŽPôWˆ,›ˆô¤°êÐn̆w¶ì\·žõIªÐš™ze›©¡Ž­Þo:`YI¶Öf”©ÂïÔ³é%==µ;îK!°È'4l͟Ђ› †¡?4‰¸1ù˜HÚ?L-X*>o§ & ‡{dˆ‡[¾•éuÕn2˜ÉÅö+“Lzb¯†âŽUÀµõ¦YÄ©ö­‚´ÂÍ8ãEøßº§…?K ´˜p2˜¡ŸÆrÝ„znc´M³}‡Ë†D;›œ3Ø1ÀõÒG€ök5ÅàPõ$Õ*Šð2äfd ÷'‚À¬íäV”ômì×-æÂ/'žcûFQ„XKy]hÅÕ|P–]òÊXà= „sÿø*„ðË8Ç=VÓ¥Mr¢k'3Œ¬°ÛSÛ[O±}êCÁ¡÷Ö<¢’Âг¥+¬*wìÊš6¯ŒåyH؉hBº"¼³pÛ&¤A›§gèË„>²ó”„Äîp|ƒV±>(˜à-ì„(A&MÖ‡JYW{©7„žjjš˜hh—[¿Ê,Pê½õ, =nÜ"X°#ŽÏ&$xª´Yد•{X-ÌÂèôߨXÜÅÁoaë=ÄÊÞ$±²s³è=v2O\'TŽ™‰v:ñ~U*Íj±¤ÅÑ9Ë>ôOðÑt­ òêh³¼O5^í%+l7D‚¦ß™‡•ñn ¬>­–e;ÄùÝ-çªÍ´5Ýa‚Çø‘< ÀXh­?ùr']²·í"Åæÿê…•g¾Ïä ¹ía³J ƒ V•´äûpdZ8h?OïLM›ò„ÀdXqŒ³õlVf~—ÎL=As0$ñ®ûÃuÆ ‘G¬ñWËׂߎçôõ1–ê³`ÚjôÙ':µÏYÄÇwò)ØÄ$¸£%M«lËÔ© å Šµ§ô±Ûà nƧk]6 šb¾ö"f?dÙÒn„ÊéàÀ·€{ÃoJ~Üi×ü¬æ¬ ÕñL0e îòEO€Ö3jüîµ”Hs¸uׯåÛjOë×ûúÕ¡J¡À «ÅÕ&Á79tSkè¼{lñðܸ›È¨NP)T{g\é¤nEå@cþü5”·.ZÁ„æ®Ú]ƒëè¿§äÍÛ_l‡²‡Çãø›¸ #ÍK!&"ÅñŸYÙÐÙP;½t`IšË¨á´*Îý™…|]$V=Ÿ»I¢‡R t šäâµÚ_úÊB 9„ï¬;åÝoWéšàE}»PÃL㜒z”S(ò}ÁrLÀð{‘D³1µÎVãÞ}6­+ ¡Ëÿ‹#$ÚÑé#À‹½2Ô™Íõ³‘W3ó[ .òKg’y„'0¶@ lzЩîð=¬JX†P8é> §Ç”7à<|á-´Ž@[st¥= j´F#ÙÒe¬Ôúa?R™Ïѧ°ÌäÉâ$‘e)¤,dúJhD ¸vF9#‘Aþ)†j%'åtŒÛÞ¤éUئñÖAy’àjŽM7YÐÅ€ŸuŒÖÔ"¿¥Œ‚! ŽxŽe†³²ëÌê‘ ÊB4îÊJ«WájaÏ,©3Gô[€Ëí—°å™s¡?ª—ž•1óag|âeFÅÉÿ|»0¸¤, Píö/LQiÚ²-“]ràç{Ävÿ§Ð3–ånD#P&îQ-Ê“™Øcø{y=Ãú¢oÞƒG#ÖT›œ§ãr: (Ÿ×ÛERz7”@¯à˜x×f]Yй)1gd~ ¬+¥LWŽŽP¥eOºJއ‘³A-ª_sAc…œ¤%&Ÿì—²n!8t¯ §üùžw‹T¹Œç/â[ìk™}ròÿп÷|°£8&Ý¥7‚¡ZMsß²·,]âU=â þœÕ`85¶^ºƒªOqÙ•Ô9>S(°lÒĹŠwAÌÌ )$j ds§ÎSeáv—®ìðA±[f¿Ve}Mp„0T ),šûË’–—ÞA™Zr!¾½¶&®6¿l@{v,†vN¶ ¨Tññžbxpg—¸Gf•—õ|Y-ˆ9ÈD¿¤3ÿútæÙÉfYn×Ò…LéiOñ0ÎÚªé©Àèo7õ™ï“ÐþZ„º˜}g9õÚrÜßq9 |¹zh–¸³'cwN¸Â8*J}¡ï£[$BJŒCBo”BU+ÔIËd•.ZDQÜÑipÓ"GœÇ£Az >ÍóD'†ÝÚAë@âuç  DVõM’I+JP|›GQýü玞SA:@©›çOn!ô°(…ž0ÇÌÁªLèÑ·Ëb¿m‚-Ð=&E ß:sNfUÔøzùݪòeWaêþëÜ¡)ûp¹fðŒ[]~*hŒÉŠ”¯*AO."×ã~~-å_·Kî Åå(Ó¢äíž«a} P ß=j•€óM›-ž«Ð2ë²1gG«@Ñ»ƒ Å³•Jr,À짺g—øÈ¼Å`p°—:z¥•ÿÀ·î«¬Ç* ølòl:Ú6Pr˜Ú0wƒ4[†"mn\þŠÒ‚W™æc!ŽgÇòâyÜ}_kòɤˆ-ûÀÐ= [¦¾så+ }¦}¤ìhtŽßãw@\ÜÉxv³™¾Ú9ñÊ}BnÏuŠ.ºR´Aº:ÀDH…—o¬@Á4£„w›™ÙÉëç奄Áü„1ÈM™«ô› *d~· Ø×åáÉÁÚ4á“u_¿Gµ|¸l^ƒj(V¿kEÉáá2øéqkÜ t~‚(‡ãÌì¸5XUÐÿhÏÙP(v¨·ö-¤ˆ…’Ê2èœÑ½3 b0&Iu4F—<Ž\Œ„yuÓƒH­Øãæóhs%¦FGeÜÀ"ILÓ¥}óH¨i‘–_N2wÁ%ü©|¬iûg´h©‰Xëd%ݰ:æÆ°\(œl×”¿ÙF‡/k××SáŒÓt†îsIÛé{Xô Ê h\Û'ûäÜÇ’LDã#ô^ÒŽ•4Šøà—ÍWa€ÐUÕ*¤J¹µ!OeND[õ˜`ÓYb†Á~)U-Ý?ŸXbq”$  Ð!RÛÛòñày*åTЄR¿à÷xO«û†zzî¬}~#Mb¢ý¿a3fGfáª}™Ê `Réu(x¨“­>³Hèîó-/~Y“Ʀ½~qþ'Ưm‰}ºnW-¢¨¥Ž'œINÒµD.Ìãð Æh‰þÞ™î;ié°e㼈©Ô¨²FÁxôÔiVÞÖZ©AÞ“öñ(X.c¡DUR Ù9Ž‘Äàr|Nñ:áŽ?ò›|Š+9µøØ§” Péô/šD4í¡hœ‚*>c¬üÈà.n\ûg€RÒö×-ïÎ>(0W€E Ï|èäHØäˆiT}ž$OÚ{Ú¢c$ùoÉÀr¦ 7¿ñ[Å`j²ì‡‘›fBñBsÔy(¢»„’à´ƒóö`ý4AØ}hNëk/òp£¼!òïÕ2‘çÕ6ð§4Æû¬ˆù´x­q耜œžý)ejóæ“(pMÿN™ðgÝPÖ³ðÆãÿ Ä+øï°AƵÕ×W7#¹“І ¶G¶ÜH}p×Ó/-Ð*Ôm{U#6KÒ.#Vꋵƒð'!ºjžèAÇÅN°t“p¡w°ƒIJk ŸQ=vvgÝ벋GgZó²Ñ\%áa…ô&ÑbÅ+¦Ì–§k.·‹"!£’ix]ÐTõÁMÐÎÖߟ]”»pxÑ7ˆéÌÖ«žK °ºVÆh£$̽Œ§{wàÉ^%SËåOì}˜ í"úeï‘öH$‘¶„ÛÙòÄ{´“§ÈÄìú£¬ðµg¾š@æÞWbÿD'Ì)¦Î_€UiE˱¹# Œ|jú„ó"£ê&°øÍޝb2ó›„0Fv‚ï)1M’‹hŽª˜=™$1í©á‚b5œ8ö†¯ò«'ÊçCè]Uvû¾™öÿÙ—Q°ñ̽ýý4"XyÅwŠ÷ik•ÊA@èÊ?„.ëñ1JƒóMº>îဨ›šÑß…\‡uxµÏ¾ 'P|eÔ`†7ŽÌ|×3øUmwêö?%¢&Y«Wõh.üê)äQóe’›káI£¯*Æ]¡ê¿ÞTŸ4ÒdP sç'£vÓUZy cR’àœ6Êd/ñ…ùˆâ%Ã.Òѵ͢»?´Lù[M÷ÀòK1 8Idrõê°fÀuÑÈŽ’¸ÏÙT©ø¡‡0Û¯ zôÝ_âÎ '–åì#‰F ˜É»Fžª]#i§FèûR/K_f«V ¿{¶r0¯Z¤ ò'èüÈäé~ñlUžFMáÉii»8œ$•¼”. òq6Ì/³›V~¥0ä Flý\è© zÑ·ùëÕLÏ®ÐLÐ ¨rXÎÏ4rÙ5šÇÏ‚ÔTçÛƒ·çL+y‡Ý ©D3®$\`¯ÕqÿÒߺÐ^™”mèÄBZo>e‚¸@ù6€& Æ5DÕ(£»¡Æß àõTÅÖ!—@æAN¨†-È1Є&Ü÷D¾Ê¿+lÄ¥^œ=-N­Z?øm¾úánÔ_J‰/œ·&,‚—™-=¿én*Ù«÷¬Í÷ÜÎÕÍÙõ®ƒÚºÊ²cŸãž! ¾‘xY»Þ× x ¸ªð†$A÷ˆìÒìi6ýÝ´¶Œi­“d}!­ÇôQ\–«¡˜Ï’7H»±zú?ªpszšÈtc4„û¾qÿ'üHRBêªrÔÈøµƒ6)+wMð7ò¯Ï´ºÜnG¸)°©GWuC‘]rö¡§Í”4¿Ó½n?¶Î™õûî©Ûî°ír[8‚DWð>Ô—²‹‡kŠdÞ0®®ØÁëaµŽx‹nàQ8tg2r°ùã°É“nñ¼1öà´«kiLqþo.˜Í/ЇƒÏêiæ,Çs^mEJ:‹¬˜ä(@š{v1!£KSg…½hªÊ$Jji¥|*2³|”ÝÚDb«mINO!™ù­*½uÃi>Tj•7Îf0/»ŸÌÃôïhZgkÀàûŸ|c}Ž©¡ &ܝɨTûõGݵ¥cé»B>-oO%å¨d÷/)3LzúÆ´'ü’@iðË`‚(3ß‘XÝóÙ>åTð'ÕN’`IÎÍ“t\l ^ˆÔvšhy-ÙlqèX‚>ëÓ T„øí\zØ3Τ|&¿g¶<‚Ê–WŒÚ¼ ÐAìÜ”#£’ú$`Ö‚8¨=äÌœ ­ÿ0z§äÖ´ROoI+•÷›d±$ÁˆÔê¸ _:ÎÑC7xTHŽ“Ú¬¡%8bš4JàËK·S›ñÛŠOhªÙM}Nù7S¬JÏÄ-85ÊxªŽRP*>Jϯ $èÔ›¾¨…*—ylJYÑKJŒš=¨Û>?çq-ç»N‡± J±Bºÿ†Ìª‹M¿ûü²H71æN¿^Ǥ+² *âbjÚGUÙ,E–u¢\ëÒî Lºóô¨µä[5;&æjÞ„UäèHF$ÌHÚ¸ŒAÔvp"Fà°»{xb²ICÓÉäµbe*Z®0Iß'Šr-4dž¡Lí€ÜÁŬµ.ªÒO]ù•¥p‹Ø Í)hqe"Ãsа”4'ø ~"NOm¸ª›}ÍgCN:;͇N”¬N–`Ðrà°| -Áz+ie“7”,<ÀµÃª.)èOCÑ…Y}•1E·‚Voz²N ^Ÿ»Nâãeù+ýìq>‚yoíÆusq‚ð¯ý§­dšù¬š“t.ÁºpÃGyXAÜÛ¼<»l¥ï‰±>B©¿¥úÒÛ ^†¾? ‰è§pßbÍú{9i+4F©úk:<±¦Â) \^`âÄcY NZÜ?¥ Z–q”ªÞ›XL«ÀØP{ZàHò¶UsMØí}TÐä3 Ÿ}²ÃDÒU°Ä o•YeJÂÕkoå“àpéÐ\,³T¢ûà—0“·5(6Ôn|€±DÄÂÚ;\Ä!Çö4Bgíƒõ˜ÿî~è K‡¨ÔéŽàÅâ¿­€œ}³TL™ïpÅO#H6½e6°f»¦N¨[Ìþ+!‰™,´dª»ßˆ2̳ڤe´u=ðua®ÆsÎ()ÿÊ1µ(ÖaóÉW6ƒþüÅFÞ’Ò)w#ŒH<6bü]örºæ[¡½ Φòâ‡}'‡×’ÆPp á¤uÀÀ!sN"hPcûÔ­ùƒŒ/‹‘“3ˆnÕÎ)È~¢0¹ý×…Î5_ÐnÁmö˜R1j«ß´F‰^8²Ý•õ@Ìa²}É7°£Ûw‰ƒæì-ƒ¢@|’ŽhÎ0‡Ä úÝ¿ÜwŠCq™¬øArv¿þîI¶Ts¥½‹,ë+Êo4 £`‰‹*ƒ7æýb ;¥Ø~eMõ±ä‡Ùï²FÞ>¢9ö a4—ýŽ)Q¾Æøó:ÒüÖâ[Ý s@rÙð:\dêò »ŽJ;Åÿm$ :|E ŽWÊ®Yµ[s›~Ͱª0"œûÙN£hÍþâA5÷IŸÌý÷³' 2w˜ì?Èadô)I{÷ º»ë q'íÍDy»6‹ÓËOHç•Ö5Úc±'ÎÖÝ@”Û(nÿb¡ƒö EÍa|³kšÐÌD…:õÁ?ù¼…Y {Ô½Ürø…©¥Rð Nɶ’½4ã6î6Î8=ÏßÅîØG–€•ŒïnCï ½e€ãÏC¤6;`gFU1¿‘½‘芘þÒ‰Q¿/úêEº—ö¯¬6€(£Dú«˜ëºn©¿1]28”ù%—5À´~_ì?H¹ é1º?ÔN)`÷-V€Žá‰Ò¡Y¢#õÒ†f ·}S1“Ñ«Ž!¦ßZ*ÏÂð`Ï’]"owŽ"Ž<%ÿÅ€x›^%j˶8Î ± †ÂÃ߀ÄÀÓª¨¦KÉ °´¶õ°9¨7øÕÍWH]É8RJŒÄk¤×6ZiÑûžÅÝÐ$ŠôR €a‹­&»àYV½ÊH\^ÑS܃¡‡ª·Ã‡Ô³_²pR†G5²¤G/ud]=员CG³þªØMLÍÅ­+ïÉZ„Ê‘ãYÁs ~¡æDü{hú·.•öxúÒô9òÞîíVšÂ-AE8ѨÃzI©6FúQh»rÕ3K¤ µ7J‡1^Uâ‘?8±†H¯ã›©ííhl~µæE]XóNŒÒÿCU¦ü?$ýrT: Q§ä„ zÞ‡”G¯t0®_oÝHʤ<û@V`†Ö˦žÉv@cö¢§›u›‚-e¦kZñ}tRˆÁ'ƒz1™Oê?#Ž»¹³üx`„Am$`íß5àØ#VÓ9Ø+l4H¿„©i>ëTÔÁÖÞÄœ>Br‰îµ.ʹú»¢hNh¹’¥²I?&Hºu?¯‰K…„ƒ”9µ]ö<² IÖr­ù>4V)ðÿÛ>©-hŠÍ¼Í÷J5sÌAiº*‹ý$ˆÀl pƒ>¬ó§¦ý/…ÈV­§`‡ê¢òg¿ïÓGMiM5ˆã ?‚6Ìü!ý¢èÃøxŸ9C²£›ýþáÒˆ‚þyzm=sŠ´ÎCß­9k¤Áë[àöS§‡æ×çX"ßÙU‘pm­Lê²±Qú4€×iášÇ-?óƒû@ïõÿ;é”-%=:AùÉ'©ÎÕÔ|’OÚâNllÓ~d8êÿ”ï¡¥ I–ad÷wygQ#±€ïŸXÊÑãÜèÉ#ÐÒq„“§EɯR£1Ö^Fì_'ñ` ¯'×A=à/ý§$".n&ØTk<õj‘ámnÏ¡8ò„¢ V[20l†€åÙ:ÌäTîGy¢¸³Ù¼4c{kÀ85ÜŒs§ä6Æ&ZJéèÀÎÞ|œ;Ø'+xZØ@œ”ãI‹†že¡*^ü2Ñٌ乾ãÐt«!…=QòRŒqgôÑçðv?F‘’÷§bQõu96W³32™“Aøó8!aÙÞàïq® ¾g*~¼½êcYû7x‡ÙLÁÕŒt¤ìÀåIŠ„ºø@ÞÄ¥®£­Ì’Ež‘€<È{xfTdAieö_sâI ðOIØIë6/ûˆMtÇâ {ƒ9î1 *J8Ã¥·Ô4c_•^¦'€ñÈV[ºðYÁÍYáç…gž‡˜©µ³2»Ó×£Þ†Ï ÍÅB|!*Í”d¦VÄd©:y»EÉÂüÒøX,×/õbä†~YtÇLñU#7Ç^dÓÌ¥w´V*°ÚÖÌ®s]Ü«¨Ï¯—ycfòƒvÚ{´÷zËÃý>ý!âîIEV¦yÚR[ÆF×O­NØ ITœCQD$ÝðÖ‡FÀ¯©Ì_yœ£é5¶ëÃñ þEÑÈ7å¨ßØ­¼ýmßXû­òžþ_"„•YvsÉ`>鼯äÎx9Ø·Îü 3Á]²Ð­k°–»$/¾(¹EFŸœ3Š-»+£CZ?ï´ &ÍÀ’$Ÿm«ÔÌXÉ¥ŸEô•# ‰fïñàIÉÃÄ¥qÖTÀ{µÃÒ ´ö z ñVaJÓòÉ[[‘Ï@4^&µveð‰äº}Ïzƒ_›`pÂèz¡ C£áBúC·4€7ùï¤êÀ©Z·ï¡;Ýl„w°Ë*’—?,ˆñ®/µ ÊÛ)(4ú þš‚ysäiêinìð ouR7‚‚`¸±?Å¥1~ÇJ-â‹m4=~6ûZO'Ïr:@nþ\étÉèÁd$‘ŸRl¨·ƒ»ðD¿ÀÀ+¾½ÚCŠTTÇݺu -X*ÙÅ­x(ÿ”£6à·õÁbÑŸÃf\Á9×G"¯JñdeHV»¤ï~^¤rH`IL¸Z Æuf!k#{Rd0ÑÏX»4ÀºPoodV„å»Ù€`¶J+ŒÃGÐðXÖ8cƒ„¢ž´s£ó’ÂbvFŽ&·÷ÚÑ|ÚKCŽ…EÊ+a~ßÔB«@ô¯"GÚ_&´ä‚¢¾«æ˜ê""“ðàQð|AÝÙ,Î7{Ì«Z$ˆ¯™ÑY‚¥mdg5wÅÕ/…a=«r.àCB<…¤f­I楦3òu©Œ¦+Àx”¬°.%j3Þ³3ü;Íš½76 ¯6¦Ywú^<€“e•Æ®cF1¼ùbÅáiì¹éš{è ò. kðŽB‡¨øf´ÒÃØÅI½fÜéN"%Š)RØò<ŒÊ fùëTîbŽ”mbXÿ›Ssf‡Ð#‰l6ºâÌY-_nG©f¯Ýí³Â,»M6Q««LÑÞà”M†ó¢ésµ®§«Í›k,&΃ïï×(¡»Ý§X÷h•Ä%äcá¿^ŽÑÌ0èÀÉ”ãÕ+›H:Qmi±³›ÄLx©úLúug²G+݃Uöª®kŽË½gvÄ·h>{«îUÈD™Ù…#ò´èly…3‡h[ñ‘=ä_°äzg\ü€œYÄâ aaF¨»”ÓƒSÞ Ëë‡}šuO»ª¡Ã~1SH³šÁZBÌWtâ²H"„·x‘dμýàâ^sÀÆüdƒ=L¼2Ñ0RÜ.„ÍÅJ¬C‚fØŠ ÊăJXDÊ%«”]O|ÌGˆy&²ÇÌŒNñ£ØJŸRÏr+âþ|СK^­Ã‹‰ínhÛëÍ­ù zšÂ pŽ¥Ë#éæ?Z^ÙQ»s¯jgöÅ¥ ¢ˆ™éyâÈ[ñþ×M¤¯i€ÌWOÃÉó;Mr­`*=ÍœMP÷öžýÿˆÞ;boéN-"þŽ»¯‰ž¬‹®ùyy•_‰Êe»=N…œ-™¹uU9;é2FÝ:í€áöÈrÿ=-Š¢DëûøµôqF)Uœ·ö.IÕÚèûLYo {Ì͵è÷u&ù±Dï“hvj‡#fhÕ`¯¯cž­?«•£àºƒìÔcê…hÒã(‹R1;朧p~ÞC÷ìÙC)ªEþÖ+,'TeX5‡¥ëxÌAË'nK¥í¼`õϪ&º¼ƒy :Ü­d¼Ù@nNª¼ÇƼe6%\w¬5Íň(¹²ß3«3Qó£|{.Ñ,¿¶ Fv°þÉ3`¼ï¾¾zF|èÓEåo•´ýI <¸+™ó–-÷¼Aµ‰V5¯thèuGcÍÈëð£RHÈ£ZȽ»r»P5õíý@tØbÙ增Q k&£î€dtDÜø3 PIÙ“Ë¥*ŒÊ­©ÿµ$¡Æ!«Ú6Pº9г·qš„/3˜›L„¸5WL䇀‚æ¥ns68l“\6±žíá. Õ^™‰ßü±×õ ³¬ý9ÞHsK‹8~S!lzd†6_anŸŸ©x×_tòS½¾3éúx¤£#ç †4|"tP¬Õp¥øÚŒ89­\”c¬6õ n{·Ž GÀéÅö‘“…Fq]¢jv>·¶*Û[Nf¤Üé²y]ˆL»!ܸ7÷€Ž5î¬ÇŒ¦PQ¡u(`2S‹à\¶VÞ/ö7 ÂR>æº'ØPø1eÇK‡K_ÆuàR+ hwÑ›y¹¼©8–”Ý}èƒ(Ú5ïË%§Mé¶Ë ¥E6šÇJq[Ñ= k¯hhû'n:l·ËrѪu=IsÝŸAö¿ÛîL¾aôon½ÄäN~MLúˆï`›@ÌúIˆ€±ãJñqü£ÇöèýÝ¡«éø¥5¥pÖ&:k¤.¡J0HIªœ`ïW%âŸÀR>ŸÆ2¯P»Žÿ!ÓÆÎ&H(çSÔ¦ää(½êz–L@·G᎗.$¡”Pkl´Y{?á…5&«_+n(/7_}•AÛÏ1˜ñk.!º'ªšaüŒ~÷ë|Ü¡ÂAQ¯‚Ù \ _2j–Ó°ðÚ)d"¸ò£.sçµü\Œù§áû>¯~möš­"¡_{á´*"·~x¬²ë–O‚wŒ‚̪$ÅÞ(#$¬Ýè–Úú ÓÓ2–)ýòç˃(!@ ±ÃX}IÜò\2¼Y(PöiQýng·$?jëQ~2Z.Ï Í@¹(ÑVº0|WÓºÎfèðtú™Wys„ {|åþö|è;iÇÿ€„?,äñ/÷¤°°ø÷¡ :ØËJuFlîÓ¼(Ë/¯ò£×%)÷³Ä«–r÷U{Žè Äæ”j÷DE”Ì{2ß~Öeêaá^~ç¾@s3CtrðªìÚONbâéõYÉ2Ï?GRuP+òõiÑx×YÈ`#Å«4FÛàì“áM|y‚,µ‰rQ{òQ€,P ­V·^M¿½ €vË#LHÄ;Fé'å„MQâŠÿ¶APý¶RŠ£#ªwþÐP(qíNÆ7Y¡«@Ès0K[ÇR\6zƒ¤Ë¥K>Á±Úˆê=¡}©nX7£{’U‚nÈô=mÔâè$7­mXÉY†Ë KŒËBîBÞÆ ~»l(·1¦z³Fçrf¿ŸŠ^÷ûlÎypûÎßW¸Ã_“Óx?ŽâЬ«¾ËëüáY,O_èù™ ›0æ|bWO ó$‰¥Äü™-ª¹é«[3ëà‹˜Bø¹<&çEÎjclu ƒ¸ƒ;zß%Âi%˶yÂÕóñ·ðùõ'9Ø `ô)Ï|å#%ÿÛL|^ÝT•ØâÉÉùìw൬µüÕ²ÙçcßÈ¿n’ aͼ©ÕÀFé<²K# Ó¥ûš¿òjò Zõ; Vï7zØk¦»K7W”kql¯¿z ‚gv®Ýå5\"úGœAŒÞšn»×Ë2‰„Ã6—¿tmX(Os Fø+9}F‡)Oï–']S~lÿÛLl5K;ôø¥WÑè>J‡ÐËøšq] Ž¦?ÔédRü.ÐÞÚWÕÒhF¶p{±N†³5¦e#€_­uU“î6ZsVŠ^hp,ïêÎÎPP‹2sT¥5w‹[µÐ{| 2úFú¢š–%ŸdøŒçÜv*ŸBkúQRKËj`Q³8®tóUˆWA*Ïâ„›'kÈÚHŸ‰Æ?BM“z#M©í óiÒòÔ{eáú]“•tZ_˜Ø—uS ÂL~ò$ «_2èåsÖž"7¶û³NîDm Œ4ë1oS¬íºh™LÚ•Àí\§ŽÎ#Æ§Æ ­}á~ mÕÚ‘ËÐÉòEŸJ¥@øO±¼çG Oò¨;ÕÕì nó…ýYðÃ"›l3hcê \áý=tGw#ïÕŒ=îCGµ`÷^ä3ÓQÆÇõ~Mí_+ÇšeC#iÿ”m‰^–$ìFè„tV |†±Ù?+,w †É>cì•äa«‰’â-Lý¤“'«RŽD3i•W%CR\˜úÀTêþßãøpŸWVJ2VhSÂñ¼· º®¡Pú›ŸLY,-}š¸c8ý/”®Aöàtµ÷Z£œ]ZÒ †3dy­Ï”`›LEL¯UÇv)k œß$dã`%oj›‚t30ÁA¡ÆfpŸv€®2ç¤/¾¶Ç¢da¶Ú ˆö˜Ü]°£·èþAßÄ´›ædp–qhvmyÌ‘0‘Šiž -üau¿J!¾›NT²wµî@«¡ÅEÖ”|tå;—ò,0˰7NæŠ\ç«vÆÐȰ“ì}ȸE›é•*£ú áiÙw\‘Ãu"í¢…&˜Ü?€NAìg5o‘pi¸ÉM®á…ðÙî“2ºŸœI]N³ &,D¯¤”-Á Ô/øÿaL ×Á šÃ)¾[£ó/¶üØ>¡[ kˆ+xŸl­ñØ7J?6Å (÷MQiq w/VýðþhBŸ§p:0P¾ø2cŠ­´»_?=ʱ¯¾C’ªI/´Ð]ðUiñ…•¼•6·'þÔåØ ›$©ÐlÜN¢È›£´ Ã¡w<Ò»‚€9k@ð3È𕃡`3ˆº8“%sùQ¦wÚv[`”f_—ÙÝ›&ôlAÖ¤kሢ>(ØZ\†RqeQàжÒ[瓌ôOðlM>Çq¯ýM-¯žVC’Uk,@…ì±2þ̬îCáŠ3[4hÒ ² emí¡+xQ¡À` —QØ¥H€;ÝÎ9å¤ IÎWè@q¤k"àæÚºk@soò›_Šuëy—Áqƒ›õžý½¶ BÒ£aAðEêE€»ô‹Â”kßp‘$B¥—¥Þ&z–íéü$øƒ$Ʀ=¸Ð±ÈÔÀ½Ê1Wo­…PBiç©U§-»´ŽÛìŽ.³æÌvLÚ ÓòˆK›WXú•ð“r«VwŸêD6jâ0¹¨ÁÚ¾|•ø£  ½ÆMõtSÛ5a "Ãbæ! „·å™÷‹p ²šŒ4ùOañ}é%'x˜Ð¡øÔþ¶':ò¿q±EWð"í9­Îœ>¡Ë—Ûƒà ÿè lþ_>ì¹L¾ß‘6 ŽÌ×êuØê ¶b­TââòWúj*âryÐÖa½û„yÆZ®þŠ<¬w±É\ùÃÊÈy–6úþÈ‹çpj 2c6ÒRžï%väB­´Æ‘\ƒf“™ô…ÁƒaVK§„†T ’ãxíAæ V<)O} à5;"Nl Ý°¸À{IEN^Ï+øÌtNOS/B—áˆ2nH¼‚»×-Ï&(ÏÄûM¤èÎê …½&¾/Â+óñòåÔëA5üT:Ø¿šž'*X±.ç<ÐjG z%W8wš°ÃÈ¥»`­¡ƒµ]Ö[Ìì kø+€Ñ¨Ãl†@yª$dúK^_ñ§‹|ËQ ×-M‹Í~¦SCÃd©ÝPv^¸0:ìžP«4â#Ì“fÂ]ˆSt¿Ï<jɾÌùÂæ„H)ÔTëdîØí¦ÒÀ‰``{û—­™`–¡CYÖ“Ð{`üL1 ¸`‚ƒoòhvÓ‘þ’ó†;ìqƒ"EïÀägi%P¡åÇ—­R¦7çÖµÒúû‘v‘SaêO•9Ñ0N]3×;{à$´B&_%Û oh­£à«J‚«j/ ®˜ÔXúŠNêi±kÀTC£âV<Ë-Ãή +É=÷¾C*BŒ¡jÅÅ_=ôeçZ­áµ÷Éß.—&Žù[ôÛº¬ÑÎo&Stgë@~Ç·(ϲ*8¤Eig:JR­¸ÓºÌ¼(® ë8*/ôˆÙV”ˆf„}?QF¾p{[Y>b ¾ÑFƒ˜ý¼Œâño´}%µ´UTÓöš¥e‡‡f$¬?åüÙxªúüµ¤‚•ýý=Tj¦Á“t¦tìL$£ÍDÇçÖ„°q&ôQ¢íäÇEæó@IT—èÀw]’e5è°Ø¬A‘WO_hM‰ LYkËuåÎu~qñ 3#ÙˆÓloœ¸Þ´hŒw°s»ŒE? ÝêœÖØ?ÍŽƒ5²„|§/T²‰‚!µÎË2Åžô7$õu½ V§'?bú¦Å/^"9tùä¿ ?çÍõ“Žçñ¯RÖN ¥€P›nû„ã˜Ëiÿì× Òd '=x+ñ^ÛDÁ…ù0áTH4È¡”Ë8]¿{Qƒ­l¬`kã‚àÙ³‹!RZ—޼Û'¶pÅEO¥—M98 PÁE&r ¥Dcœ†bNÿJ’ÄL —¼.ÏÜ'Ô`ä6…p„Eu4¡g.…ü“È‹úƉàPâé®Jµ]um 5'‘…«o]øë¯„¢A¥Â æ´5>¯û)‘Íîá—ÎÔfÞ¿û`“ªKocÛ#Z©€€Mž+™J8rH›ÇcP :rA; m[¾æZ …$H%ÒÁl ©*toÒ†c0m¢ÌÀžTð—{C ­×êË¥¸ ¥FÝBK …¢(c8 vÿsCð‘ y“–y‘m7Ø^—°éXT^_- ⩯p·’•ÅM1ÄABœ$T¯§é°ðþ®t³l#çlœw„D†¶…ó½â˜} Ó°()»Y¹WŒì¢ˆSéÇ)—3jòϰSŠ=s£×”qœ‘¯íÀSœgþãLúƒrhDj RëÝ2‡ó9xGŠd¢ÜžnSY…è&ØzpXó èF|\+a´©»>Â7rÝkX5V­b¥§’j}טvî,·â{Q‘‡®÷ᩌ_`êWÏ" «Q»WÿnËýÀ¸†|dÕb0–ã²´|£*õÜj`¿h¡úw• `%俲).ª1–å[íC¡H˜©Õ\aû~À éàm¸QbSiŠÌŠÁ8&´*ÝFDª“€B"ØU¥RðYR¿Åˆà¢`çÈ'œTP寸úv•qªsŸ—W׬D¼¿€m汄¾½á¯c( NèWÿžt7² *\ˆe÷=µ $ïLv‰Å(@µ_OgáÊGìùºÖ)Ó;K}:ºŽoZä‚h½V¦ÂðU·ê£YeôǸº")_Qrœ>Í'Ë‹¼#sµ|ÌǦ 4!R£fº¨¯JÝîäé–qÉû·ý/Q@×éÎ@:~@9‹ý=˜˜­Ãçy†92‡Ò%,zÄj [TºàøyyLŸ6?Ú†R‹S#$A$‘[d…|[Òu×j £¸Im|Ð]ù•kà%…jµ8å¡¢›´ÕS=è´=ïГìáS=Cã’Wc–dÊè¶z“Ü º]¡“%ÍvÇ,³ng-lZ•ß0‘vÉ“¶r;ÇE'Î󃮪àB)vqWÇÔjÔÙ¯šÆTLü¼A]’jÖ{¹ù"fIÆÉ÷Ù|aqæÀþ¨Hµ=Å–ßz{tÑ)_LîWÅ“Yü@Ü  rrþ‡U 3 ïù³ådêç+'ÀžX¦úil§§Á6ÛǬf&–Rîßn’ªó›#fфؖ#µá¹¹÷Æ»ö?Q ¢´³S!âÙoÖñ&°¯²fìšh V%íü“ë¯ѳ DëÍ,Î3vÓ£ÂMYwlF‚S"RÕžóðý%áÍ–T/O!ïú DѹÍSa›±k4¢$ÀÛ¥”€|.èz·n„ zjÆ*ê½a-Î)cÝHòÁï™SL†X?'óþ‰²rÈ™ ª~jò3î 6Š“bVèÆ'P"ü®ã\VÓæ!l?¤Âõ’ÉBá¼,Bj!Éy YŒÚÝÄ© @ôXûb°aa=Å´uï[Õ&ž£„ÅO’7l{-ÆHõE‚v/ü‰E4*„ŽØžú‹Ž˜•tžW']Þ©I͈,@®ÃXæEíÈ&µýCZ~ §®`<Ø–®äA’?ß`#¨úÜŽ·:‚g˜Ýd~]Ç~Ë^ØiåP)åÁ2«¡eí%J2öf„|`ß|ÍŸeovŽKÜNkoÊÜkG{“Y~>v5›¡CÊϰ ÙŠ‘¨ ˜xTz ¥“„Ž®ÒÁGŠ>ËòGIg»×lŠ- nlž®kUˆéL±BŽ z2P„x þ½ˆ".#iÔ0»d. 1/˜b*F>¤ôQçȶ é"²ÐÆ+ÿ‡²”ÔB°ßj—³di·ù!½lÍdª#1/îÆ¼.Я„ùW€_Ó]nbNˆÂ­ã'oòZ>{ɹæ§]áìb¤<\õÊO¼çJõ^™ÔT¶ý«ì{ke;S\SKŒJí¼Á»Y Aax~E\󀌌œ™ ™ÙXLÙͽ‰HY-#‚ºR¤„Ž… i•Õˆ23Ô–ÚLþ­OP¾Jy‚ñÿž¹€þf—àáæ«‹ùPHlzm(ê'Aá[HJ‡ã}Ú•éŒʱpp2ÒT"*‰—xµ1Uo4‘³&4ÕâUV…u Ì‘K5F êÛÕ#?¹8…n¬GÍ4I[ÆÙeßÓØ×Xch–#Pb½¢y É!&â}ë|0µD¦ÞyÌ¥ÉONÃäBJq1UkÒ âz¯.^Í E:LË»N±ÐêmlRI ¬ô|ý|¦ø|IkjÝù«ÐYèVuƆG5 Œ¥Õ€û:1(Å‹^<4§ùuh=‚ÌÈ8u¹ f©tòPˆO ˆëÿ2b9Ð Ãȸ_ýø‰ŸÈÝë²ÎííµÚK#ØæNÆâÞË”ÙäL¡GHÞú´ìÙ×^+ zè"Ø¿›UÍÒj•Rrÿ-mç"9 Ã÷FÛè@M´Òn¨K¦NóìÌ„^ªé€Æt@Cɉƒ‘§t÷è—¥M;“Í^‡DÜ50³Î(·7VI³,ÑD¬•qáx°iÇÃöòx3–þG—-Tê,Bú9ó¤<œ¦\—Ÿ÷E Ž1*ô'„{W¡+¢žOŠ›¥¨Ugƒ öæL…qÍb¼2*9QLØ”º…D“Ðgƒñ§va'Ò  Ã!"EØk£¾Òo{¤&Ã`°´¢3©µðíDñî{ Âå3›÷|¢6Šv3v±ò’•ù[ÂÏツ9Q|7ÅX*TV›Ÿ :8ky&F=ª.P…fâ”X²Ùf)‘…iÍVÖǽî‚ù©3wUQ<Ú¿ðRq< *z]á':Dt‹ÔF­9z Þ»ïàXújƒ6ÔŒ[ÀX nj´¢Fõ³RRÇ„«íˆ{Kk`»ß#ñQ÷¾ Üú^fèºh¶¿¾l’¥`5WËë†uíçk¬«_ÍMìqã¼mcÐAg^ë¾\‚¦™íÓÒ+Ê¥Xt›ÇàY…Ï|“î"Â9¿¶ñHkÈ]rxƒèÝÌýíq*&»Æê÷ÿà¬'î—ô„ÝÕøÚåI£ ¸ZF'ö<ánND +I¥8ŒØÎ6<ÉÛWøÄxJb„ÓŸ§ÈuDQ›1:)×ötůµc ÀO¡–$ÐXÀbôÛÏä¯åÃʨÍm\ˆ¸Á‘àó/”p”<÷uññ¯ÍK7ò‰Õr*|Ž;Sؘ¯HwÉÝ ãr´CîƸH$8Hõè† áU±Óü÷IëGñÛG='†IÍA`x8Fé°®ƒ>©ì‹@a9óFPAX2Ry„“ "IÎI)êó—ESÑY'ý;Y&oYfÇ!ïÿH:°ú*vDœRa¼ÈŠ~ˆ)—ÑþÐ üX| «4\±¼ˆâÿs!ÕRÑÞxcâñ¦ŽÚÊ Ô6”ÜD^$“À­ÿƒi_F?î ˆ©hÀÅêÖê—¨Ë[Âe7I'À˜Ùjí®pŸÿ¦¾¹»­cå|tV ú7a¸‰ÿXß÷w róÊÕ)IW!GÀŽÉ5h¬«áÔ¶V7:LÑöª”ñWãøõO¥üpP ê†œÕñMv«Š -t½4²V¥/ÈA,l‚‰Âà`>Æ©J§°ŸÑeB¯Yù­k-9>ãÜÊ|áeu:”nòAé ¦ü&hdÅöŠÎs÷È"‰13–„®ã…dEÒNƒbì&5’ÜYdr8¦Õ2¬™I¼™SÈF4ÃÁÙ%™Éü×¥§Ì3©‘ó(À"óD©íVÛ_äuÏ©AðÜÓ£Åï" -0\Žæ}}âï ¨Ÿ'ºúžÓïä_ÔÖ¨¼ƒ¸9S±'8x×"ѼÆR«Ó<_Þ°ñÔåæÝg®Mt4¢„½{?°ssXÅ S8ˆ¨@8“ Àvi-¿ Y£¤ÎßçÔ¡ðóZ][”)Ɉ²õ7…oïÀŒþÍxä7žœí‚ÊÄia·€z`­Ä2Ûuwa:|ýÒ.œB5ÌòV°ómÃKëA¾³üï"Ñ\èK™Ü;­ม@=µ‚ N î½E³\·¸ômf¢äN ÓºžkeJ’Ç\"–ˆŠ ñr…PòQëZ:ÌOº¶J× ƒgмwyüq¯‹ÌÀ"¸ýïÐÕëå}{×àŠCɧ9͉<=_áz{ØgËmòåþ•˜=%–¹oÍ«QròZŒk WÐX¯Üæé9oXv„©„¸G!8£wG׫¬ ©¸aõ!N”¢ik[5“»Éã{€È±ÑIˆ°Wó6àÀbDHÄ›ærê”i»YeÉL ˜]Vù¿‡·Kâ—B¦4?< ïH@§±½UBŒfZá6[6‰yF±*„8Q´æÂ±âÉ´jsÓìkˆä•¯4Lg¨¤é}-¨¢@šnØ‚)X$ωt+ (ëÙæÎ œÑ©WÍd¼˜ÂœÒ"}û¼;qòè8:gû?§é8© ²¾ jhCçr©©‡0Æç8€É*ìcÃR;Ÿ~ï鈷€^Yœ(æÉ"²œØ~sª8JOŽñšmt,ÔÍ22™>ª‹Í^W[Å]1YB&P>«Ëà)-(‘Âü1©8zaâ2~5ЬÜ ¹IIk,¿ÊTjCNµl@PÏ‚„%Ù± ÊØÑ:k•?˜wl3/û‰èÇ­uü^T²ÿß\áç½4V-ÁXeÚêSàdƒ™L{»õq·J:ùЃæêaDÛgé›þ±¦æw±ÎNVVú🞆ÁÑé.»E~f6é_í=k½–hRëO`Ó÷¦ÏÒoÜ–6<¨@ÖÿóVÞü-  Ë‘W˜Vaneõª7|SŠ\û¨ÜhšÑ:àZSÉžŠSHݯŠÎ=è´³k½3\ºM5œý/&KHãÌ!šLUð—^·ÃѤý9"{å~[Ú­ÕîA]°ªGͤǵ¬còÂõ£¶ôõÍXÑHçB~ÁQh¸ÉOÚ¨ÉË”»û‡CËÌ÷aª!`¨xW¦< •ú'“W9È\D‰÷Œ‰,ªMábÛèFjöÉT2ÈôÚ ÙÌiÔǶý_´ $Áà|ÓÀ5¶/ÉÐ~1%… ÙƒF@”i¦3W¾ ˆÈÛ»8^Ú1séÇ•¡Ð¼ʉ%°.xS¢s°éÆ$‘.“ó¢û9ºbÂb›Z+¹g ÁÄ[ÏÕ¿H%¸´’õžû+X>%çl!±{`z¿ÞÛ¦½—ᬧÍiÌ›õxfâ¾Ã§â|îàBûˆÿ“þ…ƒØ3´iá»2ErPz7™Œè,y< ^ÑsÆT„è/FMÝîoúý3²ÀkÆï“ãúb±JÁ>ËdHöÊPJh ΪáãKÛ!Š#^1ú‘ô'|õ/>¹:ÞvïÝ×+‘hº·y#˜â&M•öÏâ)ö‘þSì¦Ì½îË)úû#÷ýºJ¯èþGõµ/#R dsHªƒôµ3çÖEváõ’ìþÚ ´6ñ†í<#rfÚη¡ª[÷î¨5­Ôòz¸‡?zë ?ù_k ÖÐ…>0íq5R×m¸ù +³Xħ‡ëØ ù((Ù»Ÿ¢õö^ J#ê¡A¤nw$_&Û­>@ùi‚ü#ÔÁ¼Øø÷`÷qF  gŒÐ×35>1ÏÆwŸú²Ó:– A@âB~ù«äü“t+ÌrÉ‘e«¼ý…•†OÈn­ª“L‡‰‰Y¿-Ç7{èé ʤ+§ºã~y¸¸˜›þ\§\ĆѡüL²ü tžš•o“¤§Œ-V>˜Ï/fþ£èÄŸý`p6]W©(â;]±p3jS{¿ï¢.ø†#7€‡6ï&SªîèåXLxKÉ„(ªóM(”•ïÑEß`ÄU¾iò8«þšiX¨„7«§/²4yñÏ#Pk†¶E¼Òªue]b¶7ÕGÓ=bϰ²NÔå)Z&RÜN/…a$Î-¾4vÔÔÇd¥]2*Kœ÷øÊ¿L%d‡n§J‰d‰»)ˆXx‡ûv²Ñ– WúÓXvŒ¹âuqÇ ÁP›w¿4ë(F\AÞu@hAµRxÉéN€GrÁÌèk²Æ]ôä»Â ò¼xˆp¦¡{mçf4””EÍG\ý "àôK¥·3dÀ3ô .rÊÆAÜt¸V0"Œø\©Y”¯8vÕù&5 Q>{U-â0ªvéÊ›'&äÒJC i¨º¥á€@Óé¹bË^ÌV¦S|êÿà &wÍâœ=î7Wº36äRŸ òO¸G)=d©Yã¶G.μҊ ¦…’ Lùk‹ .@ý%ïxälùíŸÕ´i SºØ>Ôùò¡°CIE­§ òQëPí.‘·Ý%Ù]>àýwf%½Èwþ?æsU¨ÍNÊîd>ßÞ8ÄðbÕ±i'L™zÑè6~‚Ä—;;°C{Ê©têÎ㟤ZTÀ:×ÛP 9+¹ZÈÄ5õÎÜØé»°r¨mVÛý²œi ¶²-î†C6&^*V%¨Òi©Ý:Gs%/Ÿ ýíHٔͺÝþËÊ»ÄFU ØÍÊK_Œ@WÁáòÏxƱ)17éâäwê¾TYÓ‡çZÝHu,70ÄÕž¾:~ûG‹¸´€Z15$"vš‹Ÿå€86ó R+b—’'ªÌ\rÍŽôCÄœn6ŽØþ¸+¶„zÿ+*' ãñÀ7ÙÄMg¸ÖwÚÏùádŒTÊ'/£ÚRøÞjöN‘¢Vä¿‘ ÿ`ßgêí/xY ªÆl;Ó_.ŽK¬û°«L®~0B)ÌIá0*x²•å¾o5Wž³L+¨R&qˆðy°L]žŠvA[æ1hjå Ÿ@"D5Ïè•; y¡4•Î!ØþóÕà>a—3-oõ3©®Œ •šÀ{X Ø GL rîf Üý*ûŽ…híøÞÉÛ&š5ѽTßeÿ°9ò %%|zl©DËv5¦§½ðüÁCíÎêåc¸¢O#{è4pS zH›}1ÈUk¬>ž!ù€§,k·Ñb{}øþÞH'øúJÝd͉µ ;*’aJžÛH¼_ýÎ'a’"µyA׊À\ɋׄÄF´«Ü™IDùÞP‘>¹wÞÑSþê^KT´=øŠ0ãr÷¼¼šf øñsätöëC^>×r¹¸±³¤Ÿ¡Æß~€¢§|‡¥ñ;pT7­ ƒJS㱜 ÷Õª—v() ™âoβqŽ2rKPÌúÚW㢒KÃzACª_Ie6T`ç—z}g¬t,‚£¸©p§êÆ‚Ÿ—o¡"<ŒRåQ­ýdPÓUÚ¦¯Vü¾ÂÑ ÌШh:׆ ‚’„ƒ•OŠD¢Uû7Ö†›ñ½Ó»â‘"š¦m A˜S­Ì<ŠóJ{Os\äp„éÒ–LàJG&"T¯Dùàsø×î2Ð}‡sw¦™>:70·%^Ƥ! eœ@þ†¯>,WŒ9Ÿ0£Êü¸Oƒô™š,¤šWs|e*P•þ£¹EžD«Ü ê3§qjê5ñf­!‰€>@£êXŽC}(®'XÍ–?ÄPžu<@ !€›d¬£‰Ï·¬ &ú³Xšè Üu+e–­þpè •&]<ÔèskÉAŒ'¢®bxð.¿#ìó6cø“› ì‚o×U"Ûd@ÿ†à±gã·ÊWŽ4—;É·W2nõbQÏA¤CG?öÁ‰ší<õfÛnVFiþ(²×'uÐ+ë… gÛ–ì¡ÌÃU÷Ý9è-ô¬ó‹tº`ˆ€Ž’ÔÊ‹ñhQ¡m?å“q%k5–IG¦…ýô„·éÛx²ú é¯)*‹f/ñÉ¡)Ë-lW¥[)rIˆêgÊÂ>ö¶¨h4¤c".,³?ªÚô%}øÃËâc:ð¾Í ZÇ MôRõ?@³Öîý$LnV ÛóŠ[Â9…”®¹Ê 3² ¦±ÔØäfj: w"–‚ËnÆòÒCoÄ…òWƒw0=ãz+¡Js‚E˜y¯î«$KÒ¥? ±Ùÿùèúƒï±8}÷2?C\ܱQy¨5ÒPh9=ò¡ú¢´È*ÓËEfz\t„áå &.p/PV©ÓÜ,? â}·ž5ÿ‘Ž}wз,kP‹Å¾S|$èÓØý²i´ÛÑ&b÷î!¹Æ&^®§¦Îén|kœ@Ò};‹‚ÝnöEß;·* MO¦_€CˆØ@Ù©i¼ Ǥ¬¥€ÿD€·Œh"=nôô ×.†n{b´sÕÉ‚í›0ÚZomÕìîlœ‰á+õ(4•TÇJóù·ÅQOËR‰½ÃÆÉ*-0“‚UÊy‘}ÚhNQ÷qÅù—k§,ƒóÅônÒ;¨‚ÿ¤ÏÉï,'“½* Onºâ˨}{æQ|oÀèuÀŸ`Ü ¿ QùTÉ^:’´÷ ™=\«{í­êA£¹),ŸyÖ"ð5hQZþåÑÓŸ‚ÂÍ„‡m÷‹]ü¸êá;$^å`Oíö›Ð³‡ñPÌï'ÀAT0þI^ÁåU› ¿cÓä±<ÉaYQ µ·¸L3—Ù«ÌÚXÈNÅßî¢ M+ÜN.®È* ;ÊGç³6Ýs^…Öíqöóƒ«0õZ‡™'Ôüc¿94|äS¡š8œ¹q3Š$,Á¥(|á e5Í€Ô±0€ìè6 ‚\CGU-žZÍKx0\û"†êö%u…ñ!yG’šÂ¦•Źq—º‰0› ”"èù}ñ¢åâ¯ÞÛ_;! BXŽÀød‘+ Âo±¾ß„Ó4Tlv§ôk‹Y ÒQGГג 4lŽ8\8øGùæ¤ÆPÙIº×ÅŒì“UUeÚÚo 'ƒŒèg6óškÝÅc,2ò£í{uÔcdoÈ šV²l¡‰M[NjL$µ„]޵åpóQkÊ\ÙÈ–ìîå7ØëûC[Fé›pê2XÆN–Îm‰¤ 6„ìHô”ßf'ãGWë ;Ì¢¿ßÊ–Œ.ô¤ï ù–_Š;p2óqýl_uœÎ¼ÌÉÐ Â#Ûçå}s¨¾~´÷MS·0æŽkgiœòß G){ÝÎ;w´òèóì(Øp—°L¨“-#žÃj¾ þáá D1‚òÃÜ&~œÚ±Š«‡/7ÈùÝA mlUŒЕ‘Õ€›Ý‡F]0ìÎaE9a4ÿuÅŒ‰n@ÂîÕ–T©îh—/öÑš_I2F(ÖªŒó®NW»°úv+B{(›ÕðEï»Ïd:ÏHV¸5 o‚^ t P íž“s&ÍrPç @ŸW\J!Sߪì þ\n¬òÀ,CëWJˆ¯ª”+"ć„Üs‡SÅãžhó‘iê»ôñî¬üéœïS­úE!XKîÓèŒ4å×»ÐlàÁÌbæÚè¸>.6µ˜G´874ÈIv¬Yb”ÁDïÂÒe¦& ‚<ÃóÙ4Mê¦*ÀñÒé±DÐ(ØnÓÞ;Â6Lmõ%SÔÐG›šãì´­G Hà#Å>µ []Șô›1"ý̃t‘e ÎfHm Û``dÔèð²å®®JVXG¥#H.ªõC,1®†ûû>£ÓÞÿÝÆ¶¶R |Z5ï þî⊠»Ö  Jʉ!)qr«ˆ&Ì6?CQ<„2RìÚ7†záòSÅýÏ_x+H4¢.é¨^aŸj.È’*+>Ì*7ìvÀpˆBy,Ìšª×¿Që¸ñŠ©ù¸kOÈú¢°Ä>%…*–„u”û”d]]z¤§,SBlb-á!—P?¶ûXs6Xã\yBÁ]˜U­S,¸êè¦HX—É`+2 KŽtqZá"•œÍp¼7U{cª‰¾|,Á'•Úõ×âØ´VP7¯7Š{g@EÆÅnÀX”f '-(÷o€˜S2t‚Ò/~Ë•ñ,Þ=N˜(Ëð²¼ñ¿?ð4<³’•VË‚VaÓ èç°»¹BTƒ’öó“S·ˆ'½#Õ×Mj/¯ÇM)¦x´I¨d™£–Ù‘{‡N¯5%B¢ÂOF]ñd©úQä{KäÜ]Û»€×nŽ{~\_ŠØc{öøj0a RN5TÇÙËôÔ>“`!·"Ü!"ÙÄÍÚ™Wƪ^8éðµômoÞÜÜÕÞ퀭'¯ÊødZv_¡¬—ÿ5s5ÝyÁ “a·¡1D[3e)3äæÂíU$lä/â*µ8^Œj5äÙvÍ×kHÌhvÂ5îÅ÷‹l ñsp‚Y9Ö²n°ZBÌöTÍ[är ZÎK>»ØRMq},Õ•²..šÎipZôNfÀ»FÙp¬ÔuúijQ·Ë@—׬Ý× ÷pÓžŠ›Žø˜hÇ?ñ¢<…è¿]yƒ}¸½¡¢Íû¤¾¢Œ+˨CÌF“Ð~+'“dÝew Cßrzþg§%45­ʼÿ›³Ør,Ü¥áÞ{¨³9ßÍn\çGT;>p Ì„¾à8ˆYx福Þ-×äÔþƒh€ôºÈç øÞ!b&Ë~+Ûõ…Ö…é=;k£Ñ¹ÿ`Uûó.Üœr ž}m"“ɘö`eeÐ<’4È"TµÃ•ïì[w­Æ„ŒµXfM¶jK…=fÚÖ«¤jŒö29öðÄ Þ­‰™¾ø[uÌY$ ³Á²·ì‚º¸çÐ=9=å–] v?¼s¨×§ÎÁ§ÆÏÞ&j+Œ-÷8n%PÓA õ›k+-ôòecˆêsRÕ묯|ò„lšIÉ4d9çŠäDîû³€µŽÀ­gÅÊI5ÅéOŽåyÜ~šÃTû8¢ë2Ú‹—¯0±A³i„¼¡©a=ï1yI.½uÌW3¥(SJÞ]±‹ÝÊ8òÑ>ozËd4Z}b.'Óœ-=ƒ SÃ]9û‡Ò„£„R1 J]×k©Í1Í–yÄÃVGàj¦VˆçUä ¿ÑíÆÐ 9–ÀléôzÒ/É2êæ‘t8ÊOáoq­û^"eMÿÑîöjÇ1FdZ* úç>Ç­`(œ 5yÛpH•¯›ôÐ?Óó-%WÏã6,—_¸¢­·Ø|[íFxB«+¤=Šáòµ§A9k”HM_ À¤tEÆtÙv0ÍÛj]œØ­ËR5«Ž?kÆ€¸8°¼ù¥5i9oиãR½„¤†·ž»u cŸ±@µH½©ã{\íf‰Ó­±þ*ÖBs(Å\–ŒIsÐQ ÂQ ™LÞۑ؉ǞÿÍ_pÀAþLî¢è.W5«;PIÈäsQ`Wó„br°_mG T ˜ÿ åÀÄ^¾ÔÕ„·=§ KIØ~óÍÝÓQÜ;Uo6@Ô±n"}Þd«$G.@JÏ8ÃjúúÜ'?šÃä5²ð™—mâ—›f8߬awy_?1åà—ç\n›^œÈQ¶–ºª”Ïä_ï‘ µkç…Ù[çK‰ŒQàg×ÕχI¢wJ…úK¦zvÀõ¾5"0·X£ >4Bà¬tÜkÒ‡úúÝ Ëù àqØÙé£vÁÊYÄGºF2O7í$´UråÑ`¤: ÝCßUTÊxšٗ»Ü¹¡íÊí4é@kppÈ[o„¶×â1²Œ¢oô«bâ×3rïïZ"´å; ¦$SwŸ2kðÿŤoß(~4\×{¹m$6ù˜Ž„çeyþ©Èž~>ø0v .5—½Öò]®µHÍî—4ˆÎs3‡wKA"£µ­[Ðõ‘ ´#§ž§?™ç¿hi’ËgÏÿé⃪¡( Y}W¹½Õ‡vL#q½¸ß#Àbü25öÛ¿ÅJJ?2),;ÅMx’Ëæûí_¹VŸ/€®lãBZ'Œê Õöírië}‹5 ¢ÿ Ú“¬ò<‡ˆúœ]ßÿå¡ð5óönSªw0(%Ú›“èô·QÇ(WÐâ÷øfBOàVJƒ9¤îêSzËX¶ÁË…¶…ê7«cTYeÅyÒÒ>©¢²ÈNpPkޱŸX6k–BEàv¥ˆÔy2Ú§€z•Yš§?UeÅA7ụ¡zºI–Kj“ÇÙ=­„ß– 7 ò×’µôöšˆÐ‚}ÉýaNYS2RØŠ‘Cž)Ê(0ñ_US£:êàü‰°nDª î©ùkb$K3”’â‰4Ž›ïÖ¸áªà‹  ßßc]\ô%ª¥’Þ j©'ÙfÜhbŒ;8ö×B?}¸µ6)nbTZä²­ðÖ®3øYßäÒ4Û¥Â2ƒÁJÅ Lïã41“DP{ 4ŠclÕq p¹çõð$ÛÎ4Ý8ÌÆµõ´ú M¹yªc g†Ð*¬Y`Vj}ÁâN‡:îÙ]qR-ð`7–Îse——]œL×®³ q«?*÷Þ‚9èBVÑ,“Ï-}kä¢ÿÌ=Á7'W"EsØ÷–¨A1E“t:S­iòÒ8”Ò.¸~ ¬îk±‹¿ ón]8Çкã…\”®ãûtAèo¶ª®Ì„*Ì+i»ž=wcÁj¶ öïJ@éâ~HÜtoGöòTd/½‡ÆÓO5¶ÛsµÂîh¯ešÄ#w/AÀšü˜$ç#Á|Ó€UÌÇx“ÿÿyËá×f‰ ±üʈЮ˜vilÚ³ÒY¶+:§“@%î…ÖÖxcŸßèªãî*ÑóbÔª@Ýb }ÔRVë· îÕ™¸Éf™‰ívÚlYHïEY9§Ä‰=q®y[sh;"VNÐZk­ô’p%0·†O†‹üÅÑšåH>¥Õ¼éÑ#7¤øj§P ÿú/RAY°ýwhšÁ;* \eHò%êÖòÃûõCåö ÆóW{:íÛÜ:;Êg‘ÿ^$)´´-/¼«¡?ãꊗ Ú•pjÉž§(Óx¤…{k·´%“?iÒôNþ@=#WL¤X$× L±ìñþI-²ë<“Ëè'Ýs~]Yž7ydÌÞCU{ö,°´‘YUenfÌÞä'RY1\˵‡ø‘K;^˜ ÛÝ€5õètÅÈ+¬ÙæMsÝÑŽ(؃ӱwDïäô ‘t4ÞÏ'çã­Ò¼êLHñêþàþ- kL¼ƒˆøÈ_Ü%ßu^4sÇôÎX¨w€|nvĬå mÂà”Æ5行NXåÆÌB·,;ÁþšdvlëöÆ6ÉN6•€|äþô¢\ÂR N8ÚÿYe³áD×kü_Q!Iò@Áô°joL2}ž× Õ­è8Ï:»¥æ3†õÈ Bˆ(jK5Ù¨otyT;P.šÊ­A ¤‹@ù²#(™a'ÒÀàƒ¦:‡òBék7(š„WÉH¯ Œ¤;i2n1£ôÊ5:Çèùå¾* ‡¡5¿»úh‚'Àøå– Ò3už0&mÍ%qgû‰ Ý8=Sl8ŒŠ7‚½r[KÒ²%„s6n$äƒï¬Ú8æâ‘Uaä:A)kÕ5kKl‘ýÃˬÿW¹6.5O/'ÿårf6M[+éHD`Á`vÓŽŠ8ßFÚúv*S]÷Ãsª#©Ì”êž_t=®&ÕŠqE‚SÊ€8Ü¢»º|èwˆMâ)K‘üºvÖõ×´‡ t‡žåŠ€ÙT³Ä£:3mñ>Œª¨n·Ø•–}P6´ˆv·†rCc—¡Ùe–óŽ9m%¡+ª)£AZžÄÁŒÎÍH÷fs€c¹;H8¸V,b7gÈñ×øɘB+¯¬vÙa¯À­´5"Àv‡¡×£ ÓVå3ª]“ö² ºÎû)'^RÕ1Ø^–ö*ÉOЖ¼àD ðÞK°¯ùýÀ«Yž°M‹cŦx1+½ <ü6µ(N©E~DÔÊÔ"î¿çì+$å¬|¼/„Kê¢Æ*&›À>3TÛÎÑ!††­ÈR¥£nqÜ#p“¼Á•Úhe9¹¤ B`jÒF°`¬¶Ý’=Ó{*] ‘Ö¾œ™mdâ&ë`§´ ›çuÖêd‘*I”ÿœ~Љ]jaÎU$CN, ÿÎ= Àõ‡ú>@% JKî“a%»hpùS&Ȩ[<‘oê^›²÷bÆ·æå{A\$6"R„h¬à±V±wÂÌŠ¡ük¹„¥S÷ãÿ\¼-Çô{NÖúƒÊ„ÓåæîIàü÷U¡çœð$4â°)·ÚÞÐ9jlÉXv×”ß÷II KŒ¹ƒM—„ð`Äùc7R2’²á^ùÊœX»ìF­CdòÃW…bã;È^ˆ^†Šz”¤X»9Ô¼än yâ&´wUäwžŸ1—1qQt_W‹P>}÷P$¦BÒ}˜AÛL÷¯,}aŒj §XÙ Gì|Š#zˆñ Ö 3!^vµQ*^ƒÂ|0¯<(ìö‰<=_‡—>Á†IG¦:ÂÈ *Ì ûôÞ´¨§L²[`@ϯóÁ9¸I¬?Û[ÅÖô¤R/q·x±hO„AZÊ£ Ý Fö´-Ca:Ï:(þ<™´“'Ÿ¹>ð¿ür’žV«”< NXóû÷>¤5¾=U­G³BÅ•VÓ>àsÒÁ·=Þ*B¶ˆû^W$6Ç3[^ŠpY>×êe'f†¢Ï,ˆtæ6.ïQ[÷AZR?© Xöëò ·$¥û}¬ÛÖpÂðé ]™ß¿ÛróÐZ&O´›/‡ï2&Tù6Ã|íÀÍ{Ø‘åØ—F4œ¿s†³ÕtãVï·j™”rìÆOO0Pé¯Vg¤vmOO˜ùX¾po|”VU0؃u/ª»à²ÉÒï´Õž%p¥Å»òóÁž§µâ–2¬“·¨‹SB»?•[GP-Hþ›iÉ]–̈,º.œ&$XzõëûáËnlx9Ô:r Ëme¬T±ûÚ0z jœ‹C‹ {QFºñ¡#ó«#{ñ3woð†º½w–…g1Г‰nY¬m$˜»-ljVÇíV%r³èx£Ý{nëô :Ìÿž‘vì?Ì @.˜› ƪUcTÔb ]LO;ÆùâR ¦/ÇR¢ä˜Wª-»é—QµÄ¢;Öýð;3´å$/”ØÕ?$½Rƒz:Ê“–ÅWéu‘Ç<Ø@»¤m´ÓGs¿zœÀåçJ…iù_^ÔK:™;åÜÐ/K1ÓMº zÞt½šŸ¥HZ㱜}IƒæêFŸd2ºæDRðgÈ"é‡Ò åªö :Р´¹Ev{ÎØ«ûJ€”«—e*fýrMJ©¶%&i)ë©Ü/çûU^øè­ˆçBRƒêÈŠD+ß§ TÜŒàL'ûèl#Å ô@ûÒ1¾:‚ò÷¨¾cB‰ ¿ræ6Dllì1[—G¿#cb`„èÞ¥% ÒkÛ¨’Ìóz£ø»»e6p+Й*LÙ ¤ðTjb),òðÄÓ—üïÏzȳGcÜ‹L¬p"X½Âý vÖN&ÎG kX½¿ŠËûù{`œ^;›X68®R–fZcF‘Æ¢ÜÝœ‚Ÿœ %äë€@ÄIÖÛpÅi ˜6ðžIbÞ„¯;hÁØxñwhHyÙØ Èãlªíãl†ÏãndA1Ÿ*Å‘ÂÎìˆÕ8\²d2þ€É|äisÇ}—ƒÕJ›cn{™ ÷ÒIlûH>€uŸ,@Êçf™M‘óŠ¯ø´é(/‘cV|æú‘ð½éQÿ–è;öjO_8É)êÛ§ŽG…9.® ½-u\oXóÿ½)“áä]ÜXOPïIü É#DÙz*ŠÍÊÕ†~§y!fO¥Œë6a¿¯¹Æìi£RµæT‘·SöXÍAif5ˆÅ<‹C¨ôáŸ_ù¬§e»ŒqmM‡é}<–æøÒWÑÍ´ä‰dyjw[¤ä•—¡r“↷SºZ7´C)]¡‰m¢}Ã6õy&]F|kþS ñÈM-¦?Ž5J±Æ+bZŠ?"ð±wt BdGÆ*¤È佨®Ærùó&pBÖoÉ»Ãù©^A]Ã-µ«½LpuàHãwþ³æ¶22sû~}[,ðÐg[ˆz–ç]“`E6ð'Ò¦@=Juƒ:Þ(hìgFf÷UMd<2´xì0£˜ï¡ˆ!Í9˜WÀÈ“ºyoÌ‘ó®DLÏ–5öå‰b‰•™Ç6zmœùܑLjmùÓã(0ûvC7õ5 g ˜ )à ûý 8ã4Þ(0É=]u.À¼.)a͉çÙX™™ jDUC0ÈàôN£³ÛÙSÄA²z1?ÎèŽèc0öúzÿY žN’®¡ 3¨9÷\ŧ•ÏÝW%7 Ø 9ßÏ9¦f¾Rù_¹ˆ¾ÚÑ7xˆ‹êè:z)@ˆs³>F?ÂkÉç±¼|~7˜üy%kÌD¦i|<ÍTÁ$Íã l0¾¥ÐJ²¬Vµ.,?|Ùò@ñN¿¹¿¨×?¶ÃLJéŽUj9ÕÿOŽj;‚èà©,×LÚª¤ªŸ®¿aÜ^ñ¨Êr†¸4Á:+ÝEE…zä5ïËá¨9çŠtÎíaB³iDk•æÅ ¡’”ˆ­¾õ )„N6a†n–‹qùN¾“¨¤N¤¯³"· KÕôé`gà0“1Ë€jCÞa½3„Ͳ æVAÍ£x!©¬¿·»ˆAtm(q70S{^ZènbÏå.ÿKp£òKDðäx¦áE™úWBy¿bú˜Âîƒï–~¡dúÆçuåR7­ñI뿎1Çᕽ°>`>Á˜~XCã.¥p"ñ’8JÀ©»ÿHF‹ÎȪ{Inb¹~½¹LaÎ9 ¨Šr½{‡Z‹*Ú ‘˜½”Yn·G^H¨ g¨y'ÙöcôJ®êÎ篼‡Þã+‹eþ,ÒFát GÈÍû6;qm*¿„¥aö±gŸÅüÑá Pòw(Ê‘²lš¬0cÅb¢ö4 ?Q8BàS¯×vìqR…òøQr£ï‹ÖÖý'ö;rÚ_gûViùË¡Ù@ŸóeE>ÍÌËÐßï°ö¤4 ¶&ÉÆ|äÆ}:QŽív3,üç0‡›ŽâÊ“H9É hƒîŸ3DÒ[T¨ óؾ3•ŸñXë>ñ£mžÉ»«{çÅ;…„¬òêí;~¢tc¨…Ýo `h”ÿ!Þ [lº'Þö1jê Áž¼ð·‰Y¾y*!9y*)O»lhVþ û›‰àäãÚÄj¥h¹yØ/ÑM¦@¸ßÓóÄ¿¡¡ \§nLâë^äN;ÛUÑ©†ÚoìÊó@Wðæ´¬Ù=J•—š1NEš#³Òh¬ÂÎM7BÆ‘–×[¦ÙvÛÈ·ÓF·ªðÝ€Yî=wí}m›Ì'‹˜M¬_5ü›ÇlxIEzÑtøv§®;`Ð~*|±ºTrTT,ÏÜî•?5·£ ï¦¥»+J¡qÏ™ªb&û‘[G èÌm²ØšrhýÆšÂÞ ·ÂÂÌMÑù­uŽ„ &MòÌggÕh5ä© ¹s.¼`b&zïÁ&vÀP (Î`Ms]Xw˜/š536ºLêß8µ{3»§$Í­©PB×xƒVš+WèuS]Âõi%¹ƒk~¦þa^²zˆW(4Éæ¡Táçyy-åÉ…6%O#éªÆÆö+#UŒr$ÿ'ë"kŸ=y·ƒøY/¯iÃ4Ã;ž²Q:µ°œ®èïštåŽ`ö»Â:Ü©?Ñɨ¯„I! BŸg˜½ ÃÖ&Ä ÌzMµ ¸ÚTLàSq6¼ý±DÅ#%ÕV°C¾ªf›\ÐÁØ*6FŒ¡Ka@"ÁO f!é?ªÀ8ë{ÐØÖ„¦aÒxüA-%A “SƾdI|å©— blBO5OL”AžM¾$†‡ÁFÜú,1ìÍxBã²½þ­ê·êCl¬ËÝn„F¾wÁhÝÛ”·øN¤=ŠðKfyDÞoÚä2ÕVx~¶ªèJ@ÍX†ì~B{:r„߈õ*¤û6“,GÝm‰‚¾ÿùöª0$ï†Çtsd»qÀ~•U,òç†Û¡_°ëX€r]Ë™ö¨+`q@†´G«õ„¦|nxI¾Ñ›'?éÈË¥ ùoÓÌ‹%ÊÓA%68ŒÑGÇ?¦mU"::˜ôäï]¢‘ÎÍÔÕÀ¶M$ .]™ä íÀÈ\@xˆoüëÑøà©æו2wmæˆÕ³‰jæú/:øœÚ°üáÆŸˆµÁ#-ž}¥7 'a=Ñ» Oôh? ÂI—‡‹µ‰yÜIÀ’C9‰@bW ŠfçBŸ›"G‹háÓf¢+Ï€?ÚÇ·óCÍNå»uSò€º(Ãî%N¨ö@r›\{-£¥È4ø°Šo…bù#[{¢k+=™¤à:¹¶ŽÉõ‘™S;X2o äI 1Âp=Ôx JÿRêýW鉧ÌÁI¥yù+ÖµI¼ …4‡ØÿøÌžf~ ‹‹9†Þ¯Ž.6'VØ&p¤VcË{À(T|##Y&¤gÌs‰OXðÅwSç·Â\C˱›s&|I  W\•BåQ«M‰±äÎØþ§=>æ°Jì/é&Ç bÇ,3õ˜.¤êü³û~R™ÂýÑoßßàn´–F_ÒˆÁš¸ï|!«û¯÷êvK…•I(¥¤™ç|¯´Ä•n•áë¨ï~ÐèÃãb®ÛÛº&E*“%Ÿû°ºÇàÃÓðM@,ƒÀötÚDI&~]˜¥}²K¢êR‡×ÃLèTYð9š(}‚ˆ+Ùk„ïÕ¨óïo µ¡aÉÝÁ•Å H˜ùõa}ó•Ó§… —.Š-ØB_Ih¶÷~Õ}OJa5Î,CÐJìüF:1k8[SÑáéã»ñrV C ×Q-XX4ÒÏŠ÷ýÉ®XnITê߆ÿN‡Ò‚)ÅwšÅÿQÁ*«“üÕ§uEÅ83u7±`‚2Ê‘Þ\eófjmß:9š´ô†Mi]_ëãä±–1™Û—˜¯7ç¸fn[”DÕ•Ìã™áØA¨~k…×õ[:£Y?Y«y'›¹¥ÔꪦÓ'¿…°4Õ|mXK÷¼ ¨3‡É1˜KQ™ŽX"ÀæüT€#k ¥õ/¡¿(#¾™¾t½umƒk…µÅÏ‚Aïþ8n|t!’³³ãSí‹÷Êã%šø9UYñåeõ¸‘×á"“#ØEð¯,3¥ñØÓ4w7ô8{uBÌ>4ô/Vç£3ï›¶ñÞò(ŒQà{æÆd’—\<ÆIÕA¡cÇDíÒ)K)œâÓâ ŸíšÜµÌè}ZÄà®äqš_ãÚçÌ pp‘´ëIGr*ä§î‰R4!·Ð<„:R6µSx‘…9.²xã*-ÄÍd φ å³*³4ѧOÇLEzÛP*Iâ)ý¥ù²þ˜;Z|úͪ‡²hJ‹˜&2ÏYÎÚÕv gLvhËæÇwò±ÐÄ~x=Ÿ€*ØÙÔK-rjApp¬¡Ð;ÖKìšhÙ­±GÕY€Q휮ĉB«%dûHTílYäh§dÁX²Iw@é©ÿÔË}Ø)JF>K£ÏnÕÇæ­0ÄUõ¨R„ñ¯x°ÌEÓ`Ù·AÂæ¬ß0A,0(#.³cHVê…NÝ'ˆ?â¯ïVǧ¹±þ=ª;6™„']É”@wëH"ÊÏíî b&¥[maI$X4¶ÅU[ídÛtÑU®>bùq¼Âýz{L®’ÀM£"µ°Òd•xÄ’¬0þ7ÕíWÒ•<¾ì>(pÙF²‘DߛϖòuÜ$JÛ¼‘Úñ=gÁ´…PÕQvaÿâ¯ãþÑZYÄz.Q+$xS . €yžrÉÿÈ!’å;/¬©Åºf×?¯V>N’PzL~$ÓÅ1[ž^ VÂ÷ÂL(¸ð, ]ﴖầ`uŠL6vî¶vš›ÇW5€ñaºS‡ö‚£îlö»’/¾~Ë”1ÿÑtúg“¾I3Pˆ<Œ娲x¤û´oÒŽ¡›ùôlSÏŒ(ÞZO\Õ ¢§i‰ÀM= E‘úoOÄ á-{ÔòÚnÊ™…$¶o6ª<8˜z©Xk¿î´G9xòëŽZ‹=HucÕg¦d’Í›cJ´®q<Íø2MÙÄ;ºÉG$å‚Á}¿d`Ùð×»Û³Œ‘†|ÄvÝÁCA$®³Ó°Ô¶Œâ úå¶j¦Ê·# –aÌ€÷ ê>(¹zš®Î4¥#(Yÿl¿ñÌ~.tbпj%Üù¹pÓËhÓ“šþ^•~vÞ@aêÄ·_J$)khµÖ¶£žqØ ²HˆGWÇÜükàn¨¸ ÉŽ– ![gIÄÞcá:ŸŸ˜;Bu-!Š1¾ðuü éݨÙ/%±a&CÞÄÍíÃö1“¹v"‰²˜²ôÖ4¢G}{k?B©Qž­æEG©ç6X-Ö)q®øÈnŒÊSæòÊõu!él47bZà«Óˆ!±;<Â÷2ùKe©±»M«–z¡ÿ¾—!uOLe©¦UbÂl¶þÆ™ÔÖ±~0Æ®ËûCr‘ŠvNEà´Ž¬ûjŸñ˜—i°{ä.H½›|9pQ<¥À1Õ㦥9;^Í;f}²ßôµ&¹{MÜ©—G”Uµª6põÈÁ&6&™˜ÈýzÖ£§Fo¨cÌ ¶;b÷¯ˆ¦3ùœÖ€uæ‡Ãéº}•î}Zkw²eCÓ0ñ̽10–©Ø†øä|·¿§~»cJ,Ëükêy#ˆ`Ï×8ÀÐïñц º4¡ixåj C•p?F¼ƒ¸­.!ÚÂÇ{|oF¼ås^8FüP*½ÛíŸ'WcL®œ!qÙ…yÆtS‰øžF³Î2ìo¯ÐR,¹-mh—ÚJ’Ðò̆Šåèl r3üðÄ“SõÇ0Å?=Pžúl‰ÿ÷n¸¸Ó¡© A|ÃÏJ ™s «Î¬¦šŠÊãPöëúd<~î½ã·¿³ÒJÚ”†¥ÏWE ª3*ô…r#eOÚbzæÏì((‘Ðú•Í7vMç§z ƒ¥;õŽtù#R»_íS–¢ú×9Äü¯Iþ7Ï®žb(tYPÍ=×L¼ü¡ûv£È2©3ö=`ͶetŒ.E§oüÐÆò@ûÁƒ$K4—ß UË^M¡öFþ½—7ßjR¨t!p 5ª?Z¦œOÈ8œ’6]±;‡éŸÆœ‘L~èõSŠ:²N=¹õÏêR–R,é¶‘•ËhP÷Ñ(À2®Î&2%¸“ç…IÑÑ[D9Àùbå<ÎÏé»vÀÅQµm¦Ê+é…~ˆMêöèY¨½lÑÖ<¥¿Ê™:C»J9îP„¢ HšB6åÒ³U¤>µ#þ ’˜&¬.ÆŸ;ˆÅ’V+‡B§òD•R+­íYH”Þ&ìTS¾þtR,®óÜAƒ›ðšfºl`T)|+@ó¬¥Î¬þò—S-´ðê~J‰Ò64CãWQÁ.XÌî ¿ï9-XÍBçˆÂ¢èª0÷K$ˆ±™O˜çrVBvZÚ ÁURäËM}ÆÖ†Y&õÚÞTÐ\¢HøUáÞªR&©‰ ÷@ £Z¦æà’³Epa¨½d¾ÝjÔ€DÎå#—‘Ìø“¸¥/Öl—3·¹ŠN&>_ÏÞ 0å€XÉ­ÜvÇŠ3Æ8üLn×çÿ$È8,ƒbÄ¿ž¦³ƒ¹ÿ´Ä¿_µ2*š–•jƒŸrÖæF§,7aÀxî'£ŸÖpâ#Ê:!ÊsHPQDás¦wö™›Ìˆ‰Øñ Ã9_ñA?"b_VކÍs«çtâ›É™CóÐü÷SeÈzz?þøD ×»¤¾ ¼Õ<äÓ_6´{™ßŨô:ÄpD©%eØæy´ äì‡J„P™fngÓžp.×ÚÌgk¹„Ìã %?\wsÞ>Ÿty \+) [å‡9c2SmÙæ´ê›™„}T_!—¢ÑÍר6ÕýK'+VbóÌg=bN:mÛvËz›Ñ › 3ˆnˆ21æÑZ[õù$>nDû#ÜûŸ@) ‰‹|Û î¸d‚ifÓÙÞežñwsCËø"TU\c ¶SË×î@_ÌY]ŠÞDœL±¥;õos‡MþÂÍÌškƒ)œÔ×SÊÒc°Æˆ·=š¼å_¦WÐäˆ$j™FþÚ%ðì- ¢…Úïxèϵ†BÖÇÌTçLŸî£9F—°§­Ôž<‡+õrc"œîSîmhsOð‹Uø²¶äoUŽ-¸Ó‡s10Æx^nœ“à¿¿Qª×¯æÛÁ2b4t,á;ÂË´5½6ó-âЛ¯rˆÊñ3©E1 s€}µ‡M°T£Ñ‹PXç6ìQ÷Àâó/·q·Ð§_ÔÏX©Yü°ÒÒ½z?»°…ÊJtVaÌ”8>ß8 ÿ:¤Þ{ž±‹ª‘ÁÒVû(9UÒw'}¤ÍïkYþÿp„¨ï^•tíåz¥C¦¸f™qt‹¦ò¦vù»üă¾–S•¸8Ï–ÕX$“éÝ‘¦ô!†w5çOÓ€ípûh™úÒ“Ì}Ít¹Ûû7G³Â9 -¾ì‡TÉJ pø>›~;2W4òp‚(EÏŽ-=:Žˆ,Ú3Àoþd·ã½ÂÚiÿ{ض#ßZSÌä]þ>Ó¹<,6_:?ü:VÏËc ” èæFC nñ%7§x³D«ök3TÚåݧîxƒPhÎTjiUþש .k|ïAüçÅ!CÐu—Ô™?(Ñû=¼ÌÞ Qv±8ÁKôŒ¯üdQs'œ·$±T‚Ÿ`äèŽÙ˜wï³ûÉŒgÝé2P2±’èe…Tæ¸_ÀÄýõ”€…%wBžXiB“¹ë Œf€–Ä}Ò“]Á Mú“Û u)7?Þ¿Æ™ç r>P†Ê5Þ ì¹Ã1—ú®…¼èÛ<¯~®âh³¾C²D´;$ 匷3 r*Ž­w$Nš6VæA‚?Þp\Ów©péò™­hÅ„¤´ñ1<„W_‡Bý´uÉšÓDÄÕoa-À(ËW÷‰Œ,ÝdYÜÈš®˜¶Õ ͳÐ+mq{…ýšô½ÖA0ƒßŸÎ¬Ž—–¸ÖWŠà0"66J¤AnÊ ç^fì‰[»gJ•Sð™ËùýT ý¸fü{í% @&ÉÙï¥OR].»ä‡€5K\L ýžveß´Ú+µÖÔwy¿J)NsÕÛk 4ÙÅÐb‰)p©À¤R³gø’²d[Y-JB<&åÊ.vðÁ¸O*~v'4ÑXœo3¾2l®õÝ|äü2!Y{L8¿ª¡,ù§dÏu–Y ÷ƒ4)6ŠíoÙÀ€)VϲìV—IÖ=çfžN™úq|­……ØÂj쟜žpÜ–`jÑŸEœ–6‰Ükÿ³—:ž´Ø©3àgÅäÓ^žg÷P¹å¾$†Z ÿqÙrR<0ádü.^[`è sMÌS§¢{“œ‘?o|c‰tëApÇûÝ7p‡…ç'ŸZS0ÚÓ*µŽ>»4évóóZ¢K¼l³»vJ»SÊÂð^¶§8|¨ŒºM”ÛeY·²¾‹*>æi zë ²@uɯp-¾­@0)³à ù„;S…ý ›ô7ʤlûjT.ÿÕèñ"L4o@î—–,¦­³r÷û6êôO[&’ɲ’õe):òŽG{WÝ„Å'³hdxm‹»4‚¶û‚~î°ugAÖcdþÖ¢'úe6ëæ†óÜߍЋº˜T¹/÷ä7›TÜ•ÇÌå F™JZ«¼¾òpdúa|ëÖ¹Ýׂ³EåÊ÷„°Î.0†žb‚cô´äñ)»'(¥V¼Ð÷°ÄÞíñ¥’ĵ²n“FëKÂo,„â䑜iºÂî›ç°UaV°¼ÚK[Qp£â{ŠX³ÚO‰©°iæÛŽ!\ÕÂåÙM³m‰j+÷ómñH™€Ñx•sãÏŒQ";l"Ó+”œŸ¹µrN/,ýs„ÔÝŸëq# Ì&zúGsož\Šœ|n¸ªáê”¶d_}g¿š?—¡®j¾0Ibï Ám¥ä5$ýž¼ñN}ßuBÛ®MyÐXbt7`qNs[©A×iöÇ{e"ްF!ø„ÅSñå4lvÁÃÛKfÙÇv¡¯Àæsë¾ùÑY;´êéAç§¹>ø=Úb^ŠðsmûT¾˜l!GWÌ>—¹ÎkU‘¶C ²UÑŒª]uó®9n} O4„t dxHÞã0ñQ»´ÁY «³éë.Š“ÉO \|?ñNtó&:Ó'g€FÅ,€{_Â>)§êÀ‚Ì-/‡^UÔ7dX/Ô{$™wñ®%ƒJ÷¥ÌaÅÃoOˆÝ¿Ÿü¨îüƧé{ÉÎО⠽Ýð:7±/4Á ÊJghù0]÷·¨©ð2®I9¨GŽz½òûS3ËbB*¢*¤«ËŸ >¼7Óº×vj>ä7œýcÊä)ZÞã×ø¶ ‚[[ùLÕ‚!Õ°ç–PŽÏšx‘/Bêyž^ìÍÄÒ ô`"X—Ò`áªÁÁaÆhß§¢Ñi‡õg6<ØÇsä!¢¢¡©21cȾÕ|#¾Ò†6¥Eß ¶L^œÀs@1?Ð-Cö¤ k3ay›³¸æÎ[õ£0ÀùHÑb£šÞR¼ÚÎ¥e˜?æSø’ùš̺òÙ©·œ,æNGŒ!Ù­@IÜ €rÐTÈ¡¾o좿€%¡ÙÂÀ†}¦¹&ÿ^EBÑވȫBºsÝØ\æ§ôcè~d|B-ûX.ï»ÆJñÓUŽgÊ™<¿DQ©…r+-r‡ IóÚ$È>Ý÷,mH?; µF€N-N5«K”\£ã>³Äª(îÐõŠùGÄcÞûLÚa(dnë s@Al˜É—ÅNpLÑ·›k³,Ëš”¼ŒÃ0YdNqŸÚv즡SñÃö² H]é ÇÏT¢£ÿ«v·š¡ÌÅx6ÂäÎòÓíÅSáZ>á^[¤¸ DfyK¹€‚¤úk4ðÅ&v a˜ìÌ^Øl“ó\øD©àÂ(önX¬:޹ªý­1 ÓTZè’=»çúCÛÝdüfÌ‘õޤàðv[$ÇqX½eµXFM |SA)²RõÇóŽ­!’m¿[-^¬qQ¥7_^³K†V!ê߯boïÅw¸ïb”<¼Ã*ÝÕnüZR „j.ãÿîom/ “À2hâË•ÀokÇ‚a6œ¬“k¤c™ëèZŠöÒë*Ž ­›…\&¹•p…£•¨×Ö´ðÑÕöu’é"L ]B6yVj€ËkÓÂôýÿf¶•àÚž;ª j[šbO\ &°síÆF¸X²¼Þ¬”, ãï¸Ô/{ãÐC=2HsjÜ*X èc‡í¨0IàÌQˆ™4ì‡È€~ À u¬^ N‡-ÆviI²ñÐ]9g°¤ ¹Î~Û$4+øªÓŽÁW½/Ж,ámÄ5apOœÜïÚ›ŒmïSÀïìPóÚ)îz?>Nô±]õ ÌMå¬R¨C ¾ºJ5(0 Èý³—ZÁþ-ÏTû<Á:¼Ÿ~C„pˆåìùI[E]­„Ï-Ð'œ_ wZ5þ=Ö# W™ ÊŽÀˆw…;„X”TûÛ7®¬{¾´½vöêŽÐBÚ°þÉT|l ƒqPüV” Êíø€Ã4=èx-ÕË‘±2upSÇZùf¢¢87Ì⃞ñ4âlâpðfk,?;gv›ï꾈bÍA)…J.o_´¹¥‹Ñ0ƒ@qNÕ¥’wýF_¯EñØâ\Z/ BÀÝâOEÒîP]EÝ ¾_oÛjPÓ}v¤t úûd4Ý.®óÐt¦Z ŸþaK;ÄùÀKl£³"Þ€á1`\Ë·c– --·ÎQ“žp²óÖ+¸Œ­­NPA&÷—û@Cž),¶Ê!°´jÆ ö­®V[Ä^`0éÿq–h³ýÿ®n +‰ÿÕZ5Ö`âå-Ü~êÕõYn¦BÿUµ<Ÿpƒ¶üf„Ðªå¯ «h—ôÞñ©xåÓ:LÃŽŽ+> ɾT_¿W»M]ƒÈY\ÉšÁèÓå¢~à àïëúsm ÚÎHÁ™Ê M‰öÀˆÀƒ7ÞÚiˆY<›:V|Ê%Ö§‰§™?ûw¤Èd»æßœ ÙS­8Á‹‚ûD»`_ö¯"øR#ØzpIÐÐ;ÿLò?ƒÝå:Ò±Ÿ?UC»Ù"k··’J-ÿøY¿O1 Èà*3ª&¾îÎBÐ`đןÄåEiœ,éS[}ãXðdUF 2³9#z÷²Î—W'•m4ŒÐ k(×M’=¶ÙÄÖŒ ŒõyBÿNž~g7SÚPšÓh[ͪ²R0Ò®Ôiv‡ÒïmÞ—Ýã}ç"DAÒ_=+>ÓRгÈL?%íèáẈ.€§|s©ÜuÎ v·4Yç—¹Â&çñþ"ל‡Ô%¶ ßƒ›tNæCÛ3f¸*ì‰ó®»;ß|×Ä7”ÈM&ý÷ääk’MBn–¸þþkÞ”îŸz§#É +‡6äj€cs7[ ¬[t‘t$tšc¤ùÎþ÷ÌÏ «V ºN.øúc,ÈÐà /âX–‚ öjÁ¬¦ú/uµ  ™pÁ£H%šˆ|8!ößc6±¹öà˰W«Û†’áüàûÝ^=¢bÀŽÆÇ简:ó©‘ÉO•·”£pjo¥²jH±@´œ3Q#ºLàõÌeò²Öq=– óõ^¼ÊFîÏt)IîpxÞëØIÙÇé4D˜ kßð 7Œ÷ÿƒÃ×øÏÚ-±ƒQÂÀÇ[”Ö[²«Áh5 UÖ¥‘Vq *=l?™¿“­WÃý„aÄ7)‹èOY2€ü¼éUƨ¢Rå…œŽÏ¤˜_Ô]²KúýÍò&â;Ì–á4J¢`€ýL߯çGgXÌy|Ɇ&ß³9®à;§Ñ,F©LÏì%SßüiL;åwdò3…mnâgñ$!ýš³ïÏ•AcmÀjt¥ <Ÿ05î­]øý³¤¬¼¬–!"®þHÔ—‡ –]R9Ïûw¼n˜Þih»÷õ«cÁÑÏ颚â,e™H…/{]Q¾3·Rˆzm—,q&µûµQD‚õ‡lg©ŸÛP¹0 U³ú¡É–ŽIîøböAÔ^Ï `ù}u`5Q0…þÔX.-•ÀYE=hýïdõßwÃý’–Ryå{9F¨ß³D.ýŽilî©"È<ìÜ"´'ÛR«õ.&‰.šñš56¤$ºìy^¶\91¥ âù¹ïB€ˆ’½Ãý 6êh·¬oéUeüh»hZ7'¼²hàºÑ$‡x4v'n…y‚ÇïFQû¸X±ûit4nêB”/Ùôá¢%è̤E`Bý?BOeR+¢PXHðNþ;Éz’r„Ù,V *ß´7´œš'Æ&=ª ÍFf[cÊoʳaÑÌ!ä;$[þÕE6@¦7ù\}ü_VºË ÒF4¤¡í„wC,ºAr/}tÜÈ-‚Ÿ+äýÀÞǹ°7ãWNfA± &ÀÄö{—ýò‹;öCìù͹*ŒéõµËE­2S«-#} AÐ,z7ìWB+ð\ TXrŠFˆ&ˆ"ë¼ó‹Óí…Z-ùAš4Óœpå1mˆ Ðr…úÉU`•îî—’Û‰”à°Jä'Æ`Öøèš˜F¯BäQš^STQVÝú®f¢¤+‡ˆ¤&'aLJüYÇ2ü„^r™óÅ|êèÖhMšV‘†Gü07ñ²¸dšy¸ |cñ‘»†ÌÏäªp÷²pÇ‹F5ÕIr3£ó.(—~×O;W4‘žWÔßwwÊ™•P_ªÁÎi²¦-ÚG<~®Ñ-mëÜ|éô„ɈV¬V+oƒMyÒuã†äò%ïi1025çãW¦5šF4%1q|<ýÚD=º Y²k²‰ç£'´ßœqS¦iËêž<òì„úf>8<íþD{ ÷!yÝHþº‚-ÇÛø5ý\S¹7¾íSÈð¿ï½=KTüçÓkͤÄ“™ ‹[õQij®Ý©N‰ Þé-¨ƒô>„Èü$kSમœ˜Tî.Ü Í²4 €U}°]HŦ—ZÌfŒ»ôË¿“U…OŒeBþ=™bÈ<1Ç -Ñ¢¾qTâ©a®SÏb'jŠ=”„RÜ¡÷¦]nS,ÂòBó¿Š7æ‰ÇÝbP‹Bµ¯¸G±˜„!!ÆåÛ-Q9ßkˆV1¦ÝšÈå'nè0n³ôžÏ³7ÐÅM«)à «6u®À¤¡6DÁHÒF@x­DY³: ˆV‰e”gèAÑ1¥Ì¶œ(ÇEç + ‰pÝÆÐ¬!ànÞ¼ÓrÁ­¾9Z<àÏ;éº ß}Øîí+ =ÑÒÚJo3ìçRŸ¥¢ñ$I}x+Ì\Øáq„‰LŠëõÛrq_m6dð0'¨õ|H¼ÏŠkvM@¾ž®é¹Pm4²v¯ÚÑm¼|(íeƒ)MçyóÔR˜‹¡Hz„Çl@qIÉ_é*ÍòÃ4æV´ m>¹~ Ôo'vé‡ÓL|‚oTëC$Gè”RVñ{N×;°šÈý\®ã›ÍSÛ½¿X« 9–Õy!¹k؆æ¼U8Œªu }„ežT—‰%ªT˜Ze㾿¢G°l©£[’Yn練ow|›ã£š³5Æz¶$üFÌ]™i‘ôðØß#plt…ã-†¾?È“œ»ÇöiÃf…£FWOB;|¦iö«_¥*XF8`ºr;¹{Žcè¹¥¥ÅÄyØàìN%P}¡Ì&Hžuö:^ŸöåK˜]¦O@è™@²ùOzHUÊÓML=(j™ÿžKe©i}Z¹q¬d¯“16À¨o¬ÛÏ—Ï"·:5 <Þø0:¶¼@C¯•zk†ë_¦O'ð£Ù9=œBº'm‘ºšTŒóM©¤}–œÚ[²#oKl)½¬Å!Ød &/$dzm»¨°´à*¹VDt™ê㲊éøÊúÀBb«I$‰ ¶$totj´ʇ{£~¯€¨’…ßØÑ½ÿø©‚F–¹—*À¼S(öb O'°7”U¤–ÝåÇ©Q‹mÉÙ}x<þ“ ꜃µyTmû‚z5ohFP*‰I¬GçJHHµû“sgÿT¼‰óέK̶{{ Ú^‚¸û%nðOºeZT¬jô7H›±ÄBˆ ÇVç&«c}˜FK÷ƒEË)êªÃñïZ¡ëkÕ ’Ø*ˆ‘Ï@‹®ÆGå/A(Ñ$ŽeÍnSÅõÀº¿Ô{Y·ne£½ìN ¢ÿ°PŹxôz[\Âþ4(!\Ž]”0§}6gO5¦ëÿÜ“þÓeÑ=4®F`7ç÷9 qí_þ±Õm`SG°ö‰Àí¼U{W«”Ƴ/àòðS hÒgXV™j…å¬ [%f„JÊ;KT›/¹ "–‡¤^©ô t¨6÷°.z4NÛ1í j –™[ËŸ×^ét- åÈuQÔub[‹†Áÿ©V˜«Ô’ÂÁÀ^D ƒÂ'¿Æ‡ÅµóL];JeÆUMb‹l•Ÿ¦ÞKc{,¬ž.€§™ð¢Ø%󰿀H²wKzÙõ²—šõ•ò×ÜŽ#E(>F6æ {† œ²qÏ>°ÎŒU‰EOï6]„Æ+¡Dô#;þ”~Z‡Ÿõ^Ú¶gÒÎ{é,vâ4+#-©w”Jì‹É2ÝÍÞ5ÞsÚ*µØ5¼c@´·|úk½1r·§'rß1A+dQÕµÔä0£ÚÞØ NÕJ¸m€ÇwÛØø nè4¸î·³¾ëo=‘Ýèqu»?®†[ž¿CÔ  ûKÖ6m†±‡5l||4ÅîîÇ`8³œ×Œ¿ÄÑJcmÇöWǼ‚†!¤@íû3ìÖ¬î×!%º'é4SL?†J `u DYˆ‚\m‹i°ÀPÏdàõ¼9e P¯s>>I¿/@­·"+†ýßЃZhÆì¥ì|wÛ©nþϲ”í]Ïk?iû-,ném±0³EGô´·9®¦ìiFbÑYôçrƒšVGÐEt%ª¾s*cªKé­»‘äíôú¿†ÁØ“ uÿ¼£ªœù曥-¯ŠÉ;,vÈL*Ö_ì%@À./ Ü”µ2è6¡ [l)xÀÆ~ým}(¯ô\Òkã>xŽ ×ˆ*M„ÚJý-^PÛ@"®ˆ¦˜Šk6ÙÎ}ð|;þ«÷Q~Ü%ýy‘~ö ß‘¡1>°¼ÊÖî)¨ï . ¯déz°J/;AvÌ4 ûÅĪÑÞÈݾ›Å°qË++¼V$(÷ ˜ËÑ(0Rp fOùµ%qN9›¨…(‘µÖ6 –³ãÎq ÚîD{*&ïu¸t,,)GW^À ¤Ù"Ç«ná£`õ²ªô%*% ãÆp_ &Ïø¾µN2Ý~ÍoT@¡˜ßZÜ<‡÷Ÿ)/|•býãi.`Io~ð&ÓÐÌz[͵[¹}Ï\¨ìàb¥c¨¾OÂD¬¡¹Ü7>¦²åï¥>öh i: :oÁ¦ ˜&U>…WÂJÀ}=jîJË5b*}\·ÚÆÀ`ÌÐ ëŠP?ªœ+EßøDZ·˜Ÿ² ,ƒ ߟáþõ‰'æ€þº/‡bßZq@w‰;fÏ s<}À“z æËî¡jva_ÔQÚ´¼‹®¤‹ïS[n²_A¦L…‡3ÀÅé'ÞrûqAS²Osj@ά‰Â¦õ§ÃfVþ¡±Ï¹=ób]>î‘@Ýijõð«à¼KoòÍ®ÇP~X 8ÒivNéfçÚêsÞ+ªkOðºá4Φ|Ðôîó.(âkñ´Z’o=ÖNY7"®‘j™†èÞÖXÜMSý‰<-Õ]b’JH%UK“É‹åÓ×îgZTpwâYù±‰’±ÿ+¸×@²ì5ÓÎÔçÀ¬HQ³ô*ß’Ù…ÊÄ-ë’ÄÖ7ûƒdëà3ÞŒ¹šÑÜgÿ<ãÎ g,7’q½Þî"Ò!|Õ¿2 Ae/4Ënó=º rmœ-à_]©ÛË©Õ.¡ÂÓlÿÌîÆ®f&é~BÑþh>«íþíg!²o@MäÕCQ渄ü‘Ò5è †™dxއn³Ž.\É£ dî m?Mù*wßL¾6 b@Ó§ú0=ÙeP\‚æz¦Ã1ÚÂÁv¾JêŹšö>e;KOðº ÃdGÌwäöÒK^šÙ<äÖ€ JVÁ§$‹Si¸bè(q|qâ_«ٵ=¨÷ÎïðÑK·½m÷i‰ex%¦å†2ÔîïK*%7ùô¡/yþ‡úÖkÔ94£ CABÆ÷BmQñ«ˆTðä•dò€Ó5½86LxÁÀ ?‡±#u ð?]Äc¤RP½ <'×Ôó¬4•’Æß‚¦©( 1wôí¥>õ-÷!÷ü½nÙ`dß™a$:Wm·+®î<è¿P&œwàê«+ÝUN@º!í§Õõ€º6­±ÇÃ?r:÷ºý.D!ž­ÊøWn“´[õ%†¢e.óÉO+ݩٺŠC±²“âš‘ÍQg7…J9“ÐD¯·]!WÌC¬²´° Îf ÜûíµôrßÁ195xñ”GýÑ#ª¼YôF/¾DRC3`Wê¹JZ¥@ê5‚±éÔÆ#¶šïl2G9›þŒæÞ¡°ÁWT3ìšžôN‘1à!’ýÒ@þ‡äÕ6â<-ˆ`Ö‹î˜dc º)¤ ¦¬ý´‹S§Õ+y‰ƱpŒäÇ­¢Ï˼[!ßvï%! ÞÑJ¥šã9Dj£*uùÿ1ž åmªäQÖ@—ÖS‚L§7T3xƒÉ÷hòAJÚg{wa›gšföoR…æ»;2ŸŽ‚´ÙJý’5‘Ý© 2­¥[ö“DE³C¨Þœ\žáÙ¸e½)€ÃúÝ÷KËTþ‚ëï:£ßÁÚ©Cq8¸AE)™Ï VÀùÐB.€m̺6 7‹ùµ¢8 ª®3z‘É»žíÓYu6 ¹ä?ЧÕÇ­Ì sdB¨¿]qO}3/‹Y–e?½dŒü2f%ü|ÀÔ¶q.ýùªÚZÌ"êôbù2ÁÖ¿§ü¸WÐ=¿6 ±þ8Q!Ú„zÇïEjïMH„³Ûë›Nþ=Á€'€àõí±‰Wè^Â`«® 6@R6®Š#¡ï;˜/âó *ÅåŒpåŸJð¨T£É¾Coüß)¶ÿõÕXÞFÌŸd¤ üeÊv•“OºdéVíZà´Ø¢¾eKòª-önÞÁ €„é9z2wà }è5ÆmÔ¹ƒ7¡@k”Ái1“ô¥ƒ¶½³c¼ng[¹â§DÙŠ~ ×4…Ýà"…ûzˆwy¬\T'¹Ðf.vyÄ7BVÍ–Ãk“Å…™ÚÔNpòÝ„xÌ|6»Šé’(jqÞGÃ?ùô½„Ï2€²Ù`ã%uÿ7óéjíÉÌ6 Ÿ¨ ÊâFYE ‘@Ð/ïéa¹ÙfSîM^J¹t"U ½ãÂ>ã຋— Ã% Ÿaë“x@î#• ÏË\«74ßy††«=>ÔïohDyäüÚlŒ6et+t´Ù‹'Ôƒ a>Û„Á¼'vŸÎKÆ€‡TúNáK´ñléyS›¿›Ù×t]ñÉÙ*»¢8ZéåÀxpoýâE(£"PÇžé S­öœ²Ú\|¹€AÓÍ–¨­F‹®Ž¶æ3†È"<„&JÐJD]kN£l‰^$ºgÔß …£öDå#m‰Œ¯‡®É·¡l„/Y¤¼à™˜ÍmU®¶¾:¯íñº‚+*@Ù’œ€áÌ·‹ðbÈíYÃÊÒq{âx½#­Ñ|¤AeâŽò.f¤Î= ¯ò©üpîe -x˜²TÍÁ 7Da×coU.TéÖ4÷C×­—1NH_6p¾23Ùrb¥ÑâB“ðêb3û Ô¼êõqaÌ%‰&qùÁ3 ¨»·nF±¹ìgŸ7Þkí÷âjp¶fU~}ÿ…§èô ygÉMð/ âHÄŽMjZã9{Ÿ¨!)’J1!ÊN=/€À (ùÊj÷úÄ‹MÈ LÉTšf*ÊíhÓƒºPÏr h»Ðüi>Á!kä ÃâUƒLMª ¤^ä×w8áÖœìjmj%£Û°ŒŽ$Q7¦“ ÑI4-jÏõàG14 ¶£M7&õÇÚ)™å±ô\éëlˆèˆ:IÓÕì·~³iòÒ_ì'1”ß‚ÀÿC+§nr°L–øÃh €KíÇb%…@Z@`tÁÀ”Ïu>«±¸ú”ÛÏ‚Ã\žTÙéù×è³Õ8vÐÈ9Ö›íG€€¶ýq…äÔ2ßA¬Ž%I€µ0·x~ò* Äßëq?œoâ:M" Pçõ°Â!¬äÁ»<áî¶mƹQTs|N×þj'!s71œ5î´ìÎBã!߿̞Q3ä¹BŠvÌ"Ŧ~ñ×¥TÂ(óÑXùéë®-öqª’ÐÏSÇÂͲàÍcuzCgâ‰nI´ X¦HÒ˜"åеÒJb;yN@¿èŽìO{À«j|Ãîüã¹ÆáMÃåƒât(bÀ÷/ny?‡Aœ(4“l‘۪ȶn»|2QÇÎó·üìë$äV?åñ¢o<Ãôã®'L®Áʸl8ìjwU!`{ûHìÕϰ~ºI±àw:›Ó’Ô8x°·m."JÇ iV·Ë.醿-…h+»£ÎŸçLWzž‘/<ÿe¯3Ìpö\ ËÇ…’¨näÛ 8)³œ˜Ï«§ßd zÍå…C³2Nár€;¸×Fjÿ\lÒÿÊÅ‹}ã”Ë+Ø9‰ÊjÁœ·ºí&õhþÌj,õ•0,…F:çšlxsmù‹qMmÔaxÏÐéEjCóÚY¦ºnkÁ{L¦ž_‹a«uÎW$¯3Ûœ¨k‹ y `I⎠ð¸ZZv¹n£œòÝOX†!1l*&IÐ2µ¯`"ù ϳ -]Aˆ­^©¡¨VZdIpÀOÄ[2sëH—ö³¦réoÙÊ#EÖ÷±Zk/f8‘R=‘/°Ë£áà™k~œ‹ò·&Îç&ûi=K¾¶cÈS"†_wM„¤w^ Ö7<‚—ÅûÿÙ¢HÁ”Ç:wa¯Æ‚3¢€‡;föµz³`1ø•äGà¾DÒÆÒ òú Ž’ŠÑHLjˆÏûniST·!_e°¿çÅ(Ö‹>3ƒgCvCtÓ‹!ë«¡œ¥Lãdœ ²žc9á Ÿý9®|šˆa!wáá‰Bä1€|Ó\p©ö߰ɰÃäй3~,Ì* ÷r_‹Þ…I°^D¨ÂHòį  lf“@iìEºÚìsè|$¯¶qÖf݉fnošÃ‰Î$Ü'ïß­ÌÃ⃣’‡YεPðSöØÞ–q¾êÒ;-µkîqsUÐwBÇM!}pãûûU$¨A ɽù'PØEÀ'¶M3žäãdv j û¨<8\î W-)gú ÏšÒëã"Ö]Ï{ÊJ« }U¿æ¸·bþ-!æŽÞ+ú §Oê¢_± )`¤#ÙB†iKLd«5*ZOªv,b›®¥…ÿ,â{}в9Ó‰CUÎ\È)žFVö¯E‡¥¦3å,FN=ƒVÖd#”œ›=‚°köIé!td8:0 ˆmœªò zJ©I94‹gËØÔ³ær¡5C°_wª…~+´Ý#„™) ^>4ôŽkP“A–ÊÃå·p>…p 5ÿ·ux •éåŽež1ŸBli.Ø!’ž¼e°6ýó®nþœc †#™(ÂdS5¶ãÏŠkrØ™^ <Î!—2ë(Úò{9DÙ”ëÿùÙöWô)ì©\M¦ÁKqŠO¢ƒ|—­rŸ‡qÇf” Ë*@·~ㅦª1 ¨€0 óÙ%¥F:BüŠî÷©º¯@K°ü+@í:¼ç€XÁ>U`LÏ"ªãÅ#ØmêR@¢!ßKN9ÂãB.bÓýí©½ÊP“ÈA{ €!”À¾ÎFEÆ8Î èw¥™ ¥ë \,k3h]ÝÔï_åçzs5I=¼ÑêÓÚ…‹8Íñó)e¦ñ…”0Ș¯ÃN8À³ß¿hítE$“e+“ˆev@G§n82Þ…Å—úbt–Zª¡(‚ÙÊ9m§+‰ëGeš¼ÃÑ:Ly&"¥cæy^&ÙüîšhT_Í‘p!Ñ‘ä~rÈ5Õ#]|Š,Ř=ÊØCž•¯ø+‡uz©@囎è—7^QÍÔÚ¯¥¶(@bDwJŸ+×ÓcczÖÑe5P{µe°uqû©èQD‘/)¤jŠýKŵ7nŒü6õ®døCÂÍgCÁAPÀæ÷—?³nÉÙ¨‘Ipá—4S4±dˆ9Äþ­Äóf»ÆUfo[¼ ×°ÉÀF%Õwˆc˜Ò€¶ûYò˜Â|UóET/©{-§Mu|®AΦ?$ _ÇFS÷aròD¹"¹§…í*Ÿ1©Vçl÷ŸÂ9ýJl3ú×ðStºõ%Æ 8:*àF÷ñcóïP¼ÿfcå>/sí‚ÀÓ¹éä“.I•ºú ƒYûÞÉêXôÙ™GÆ>j-fzµ°¢}3‰rd¤å‹Ñ&î½Q¯ ŠM_ÍÅ¥&I¶„wª`Ef3@ÌÊ›sJRžª±öhKÞÙyiQ—yM-èiM„_¯1‘ikšùšhvóÆT’ÚÊó1çË\lë6[Ì€½¢ó Žm9XÝë5( àaþy2nbÿ›É­üôµ|á^×í÷“"º.«9Eüºg~]––̆_åõðÀp7݈ˆD«³ÄgY8X°w`ŒŸôGéÚ'™þæ¿•¾‹ÂÈeSTÂŒr®}á@ydçúë<$÷©Ïò9Aæ™b3"ÜÛˆe»‘á•·•,­½<£_Ûi<òwïàüÜ.¸F«£”Ž{Š};-¥A÷ÀØ ®gÄî8-šÚÁr9Äß!ºOÔ—çéÒdš9¬¼¿ˆ‰<;C eÑõ2~À“©h^Rä5ö ÛÓ畨ª¶ c mwøiMÁˆËU*)T.€Ejׯúò}<º¸uL°¥5®‰gséµ$F•E+ÓX‰ÚO缓íPNÞda*™[|->/ÿ`Ú?¦ûˆÚ‡ÿã= Ù­J1÷7Â9õåV&eñ©ŽüPQÈ{s| n -'°üׯ=íٔЧŸ¢jb*T›Òå/æY'Ë!ˆÁÏ/wS™Â­äÁA ¼¡Æ5ú¬uZ¸%~ò¿ƒ7‡k)2vå”äõñd¯-¦ç¯à™yµÍj>†UI6'ÀˆËÌØØüv†m?i] 5V-ÿ±,¡§®¨ÃÞÌiuýS²/|$i$Ê”Õ6=juçÿŶx¶~Oá°ŽÐ[éù#ÕKåÒš“±*â4ØÜó•Pªc¶Ã¯|E*6}< r%*ЖÜ$¦âÝŸ;èn’?Ÿ7˜Ÿ™¿ÍžV#{]Œ4Xm!¾"Œ ³(£@æò#`ëoÒ²0w¦ÿß$ä\9õɵ† Y† Gt´ǾXôܹء.‰öè§y!ÁÖK'Lî|FT¼¦·ì˜!8 AÈ«Ú)s*VÅJÄ5—n°a´ž2µõRiÑvÍ«mƒÇÊ!x©&'ë ùÿn÷ò˜ ¬®b@HTÝì^êÓÜ‘õy:Úê<9Aª29ù‡,è2LhÀ­K ‰ë€vhÃ,@{Ã飯˜ÇáÁÓáw<„r3Kî<áv#”§*!Ø*L0‰ˆ›OY‹œØÿ;P­‚Rç‹^9³+¦Ì½¥z#$(¸àŒoÙ«:â´ƒ Ošc’( âÊèG’p¬+vêm}Ô%ò1µ{Züg†(²á[ Ç{O _£½L~ÕfQ4sÙøª&qáKanÛ¦­î ¶©m’º]’ˆ™È‹½Î,ë¶”ùF½²Gßâš?€Ó¼^Qbªl·mvWôjø÷'CIà´§b.\`øÚ•}ѵr}’fa¬¿b"aûÎ ¶ZFýà‡˜YR¾JÃ*ù`Ù†, tͬà1¶ÜòBäg\“_ J™“¨°µLš/jp•ÿîĸqq­_ÚÓÍÆ¡G\Ër³érGEDJT£Eà#@šv ÀãúÕàEÕ !c(ý0 -ޱ ¬»±ÈŸˆ·þJ›¬æßq8\àé[÷*ÝíB]¥xZ¥”›šPÍÜç_²¥DheL|¨8lÝ—ß°qb±£—"?I³ŽþÝꩺD‰ C ¹¡/ð_$ ÿÙܲÂߟß#IþŸ4 Ã؉í'Oi8¿ŽPp«úuÁ¸'¡„Aè;"æ6¾‡ºî¾î3üÐ|ÇÛò¿ÓQx ¡+¢7Ú¹Á\ç2§x¿ ÓÛ9w=>¥^¥¶ÈÅ‚=îã ú)«c•aÑɧÝõƒEjòŸšL•€¥ù‰¥:IÜ©3¦zƸÝÍ÷̼Çl‘ó¢¿À1pŒPÏäx€Uv7Ôî1-UF·ÈœѰÄÑ‚â9Eÿ©°Ö â,+W¬¸<ÚÄÏçš—qJb©ûAûÇ?:Mt‰“¸ŽŒ§‡$|Us²¯‹…ËTøE[â:9ˆvÊt<`z »Ã åØ|BÔ÷to0‡x×ÒOAwtÉÇñ£™ sG–3/Š‹–`ƒ^ÁLKÊ4<ç*û™F^ä2„–ä#yzç!/%6ý’a]`Çq8=>èVÖ)ÔâúÄê£hÖÏnÐ:Ý\ǸrèîÂR™ ¸ØrK[I¡ ËûɰütÙ¦{pƳü –p÷>NA΢þwF“˜eÌçà >Ó²+ÛÚECR[ÓçÃìgPl‚L¼ðRebï<‡¦Ó[Ûrb^ZŠÀ¾÷R„è_$P]‚¦õœ¹½G“êÃB••žO»‹bÙ^(ð[…a¥€>¿àiÅÁmìh<¾EºR”¡Ñ>ó(môj8ÝÉ«øã„Û·'¤2åÝ«/á*à÷QפÒqV·‡fvèµcA“CÍb rNʹè}7è$‚ƒ‚Hˆä"ÆžÌ$¥v½b,Š‘}”ûÝø×„2nžG“ì|Ùé°Å$¡"ǃ(àÔ˜¼\LÙ·.מ_ÕaÌ-í¨þ;H†ÈÊïmèO5f¶SÞÁ7Õǒص(Ï-¹†kθÔM’è>Iêù PeØRZæ©[ºäÉ6ÂM—‘Tsy0¶IÇÖ<„…ù·pÉSìA³§*;X¼X[ÀZo®̸èŠìÞQPâ Í\yÍÿ èâºöÎaÈÊtN0bhBC;UKÒJ­¶8 )ƒ.[íüÔD±@!±¾°–Zã]F]Ó ù’êÏ¿§ÎØ.ž8ŸŒ»+,òÂ]OmïÊ=ƒâ¥a[£•iÝ2–´ -.ܬ$NôŽ!?¯yc°ºŒÂß—ƒ_Í®m>6(Ì7Õ:E­ Eú~XíVå—õR¼„ªËÇžñŸÿòb¸:ׯ³3âŠhT ”½¯‡ª¥¸Sªð=à“k¼vý9yz ŒÌšÑQÔå!bôÑ”ÖrÀͽ¹l•)¡Sp*ÁgNâR!®£äY[ÜSbÉVéSR4ÝËZÖú<.›V…â¯.ÙšL™ÿ¡t޹zè—EÔJHM;9–ö´“PaR¸ÍÖ¥xAY!10nr_b¾Ž2石'(Rp`Þ¾¥<ÓÓÏGCªÀ™Ö…o¼<† 27¯…c"* É;*x<Ö0¼‹û/¬ ÊNToÉÈÃ:A˜¤82SR‡(Ëq¬]§w‰¦‰C)k/-dzÆË…õ3öÁ òĹî×…j3òÊ€´u+–1ù–0.LÅþV4¿è{5i=²)í›gæ=‚+=Rà8N§Ç°*h¾}$wŽ{ªÓw%qëƒm67Ô ~¢ýZÖdŸÙLêkô2+{-òµrWAG÷ŽìMD ö˜}€‰\µãÐAÕXÿ1RÖ"y©C{Níøi-¼šßñöp…»äæ¾ðuMóQ¹ñQ¿’1Ûn¤/hPâ¬V=ä9ÃCŒQ˜ÅéãÔߪZ"-·Tïi<ˆjÖá¾|¬vÜÐ¥û`3‰>âôñ×pNÞŒ¬à~[ÏSOý¥ ½ ;y¼,ì2)Õ‰ÓPQ7:Ó8Ñ¥s‡vÛ½ŸÜ¥é«I•ok<¦Zj/ ¸åƒ(¸Ÿ1bf ÿ`ë{.þÝMî g†à"öx*˜SËvP\é/“d|ž­ø)× ½þnÿÐ)-º£È¢+–«+ó•1µžå軪·¬…Çë8s-©Û4P³gB'nåý˜IãÄÍIÁ—#¸£/Ë2ËNë·r)é¬Í?Ž$×k{åíÃcU™ÅGeo¿Öi,ðë±FðóXš°51'@[1—iz™Cæl›Cl¿»@Ô4êj”öΨ6;ÍËÂHøF“ý»à^僻K1)U¢°ìé yÿ º}ÆñÙ\œŽ(–è4#}Ô›Bv3¨Øç’ÄÌœÖsÑñéÝ.á[K÷y°ñË4­˜tžtŒ8k¡¤+v:+IpÕ{½Ã*¨î½X%qü'sseéø‘‹ËuöôQÑZ9o—š[¨U-­³ÐmÔÊ,ByÊbb"¨¯tÛ§“tnx¿ôíì­ÿˆ{pœÔœž‹*FI>¹BÍÑ,”h$ƒ]Y>Õ’|2]ÏEÝšÞškÎ&ˆX?x0¡ <‰¨/sÄ.¿áoUCüF×øÖŽkÊp·=¡ ¤å|SC¿€Fß߇*Ž æèþÍÓû0jÈãÚ1°Êo"•0ù=Î^Žû©èëú—ÜMÄ~·»OÕ èS.¬ËZ<ªÝ1)ï—4ÛÉö‚C›&Å`oZ«Nè€ëOjl/Ç9BL”lOº2¸{vë‰í(ˢܧ¾'²:•[R²øUX!ËܤöHµ0+²:$’ä{ZsûjTMÜ0ªzŠä_Ð]  Ryåæ zd r>³pùãˆÜCV£PHD‘vNGÆñK‚ÂSKì=«câ djyaöÜõôÊZ«§:ÅAI”Éõr„¦jª©'šñ'øëiÐì',ß“;µgËFÚV4:‹®ÎØ@=½òGƒ!ú6¼†H=ïˆ]^]Ñ´—Ð%vq̲O`võ4nç· t÷ˈMv«ÄTï‚Á%¼9&yQ‹ÁîŽdy +ß}{aƒ Ža/…}Þ-˜ ñaG—:' e•žØtª~n©Ç]*‚x®âCyŒ† O; ûÅF84Ï"‹á¶âÐçU®š²Œi¶]7´|~€cŽ¥–ø²™‚.c‘€ùÑL©¼§p:¼Hh‹rè±Rv¹BÜMAg_O£mØ/R ×fñùpv pY§%T¹¥wŒ©? ½H–jòÛ¦«$ µ‰z‘g‡Ç‰s+"üêM%޼€-`Ÿ“€öš¦k?˘.“ë2 ÷Ì俳!Ô°µ3}ó#áý( Šò·2Ðð>¤ Bãv6ôap)gøƒö¸’Ý÷2üs#<Œ‘¤P¹ƒ KFC÷ƒr?«í¹AÖ&™HV⻦“'[SªÚÌÊñš^("$û¦ÊÒ’K‡m˜ê8£©¢M!ͳ†¤kµ¹RÓ'81©—ûU‹<¥%Ÿ¼Miê®à/»uÀæõ†»ÐôؘôGÁÌɤpTzé‘©úòמ×x5ƒo+~ä£Ýxæ‘åïå-ü‚®¡IÛA—à°Ö ý»sq Lêž®}—ÀR¡ÈÉ[¨ˆ>œp 'Ê‚hš³Œà2iƒ½°Žëý¥!—ÜEœª«#¾P±¸{“!©ëTý€Þ½àlDÊŸË‹¬Ù¦ô¡ÚþIͨKO ç‹•WÞùozc¬ÇŠå¨ŽA÷{U~BÔ•X$î.J®=ŽéDýÁÒ¢D½ó¾rA÷ÃWO¦Y,¨¦¶°ÚâÂçºÄ&` zA,âžÌâq$Ä’Züã„BùítáÚ…Ø´WŠ»šíÒcì|3t±ük.šñɆ.ékÖ¬ÿXd"z¿ò[Þ'ºCg%éÏ?@¡[üâ#iÏÊ“žô -¦y¬¹‹8Ç{ §ÖrÛpA#÷r80çÚ“"à$â×[ Ú é„ì¢j½(ô.M®[{69ó—í¨›: 4ÍEpÔcªŸD„©nÔØ «ã%_; ïW' QJ½›2 ˆݪÎ9¦tÊûy…»½Z=Ž´¼ú%‘HçÚ‚!½MüO'5\ \·ÆÞDÂåûuДTúËÆ+âÅ1ÿ@ÛÑÌÔZùzJ³`bTõLÞ}^W8êTy´U´ºa®tÑeµ77 ¬VÚ‘ª¡­g¨£qb ®e™µJ†Å|‹åitjr©ú¿Ñxã›-S=Pðî7w}Ñ >B›p§[Šfæ÷)/|ç\Æ•­“ºŽ\Rã^­Ò®Î#XtàW×ùÂK!ªVã†QÇïbp“v"ÌÒl¶ø…q^ÏÚ³ê Ö´¨:3]ù„-12~AO& lýÝOÇšÆ)=æxëBØÇôLUÊCjh“ˆ¨ÃM­}Á†™÷Îx¶µ¥´k½%Ê€÷jÝAh¨oœ”=wN÷ßmy8~hFÔ”öYE¿2=+écb BèÌv/Qj}­(¡!;S\ëû™)©PÏ»ñËd˜f³0ó_9­ÈS«‡ïØ=˜¼ÒV«‰ÊÒÎnåv]óJ…ÌàÝ×Ò©ÅðÞ·œ¼d÷쬃zbÏ¡Éáà³|&§®z‚ J0dÿ¸,ý‘#£,ËOïÑÇy°¬&eÉZfìˆú\ëÇú•u«ðé׿Ã{Í6,$Æy/¥á’íÉ®K(w@~ÍŠ ”#9þxf‰ÊÉé\Y½^5íä°UTóŸIÜÊÁÏQvòeý%sKö“"«ª€eMа'.øw@Ù›­#z9?á˜ZàpÝ|~ÛÇ’ `0¨ÊÌ|¨VÚâ×D æ++Xv2cªá¨öÌ•ôÔìëßLMß.m[€ÇtïÛ`;(²p®÷ÂGgë2HÆáaãIwj6ÀzåÆ@zEŬXnÔ)TUl¸À.¦=5j¸]º3°Y¼ÚÃsK¦Û(ýºxXşߨY9Ó9 Ùw•gÕF­’3’ ³!š/§#€»eÍuù²“å¬G`x·AÔî!Å aB½´Vè f—NI³+‰JÆýmGÖ ,±]߫̔àóvíiÆë=]5hÒiì6·ôöVâ3»(4‰7š7½CLÈ–¼uù‡¥Gÿ¢c·t+§IíÜì[¿C±6pS®ÄdLuK!‚”7ÚÄNÚLw‹4DÑ%uÆ {4aG&*™¢£.ÉÒ›c7}j¿E‡Úë,]¡¢´…ZíɨÑ^.˜V©5œþ"ú  šLkâÛO©õU¶èG#6‡×¹ÂÖF¶ríyõH³;)g†×œ‰ô6Y~—†ýñç?Àã¥s’krä%.AÜÚdš3Žlf×IÙMQÙª/QkÙxHß$Qof8ej°°šÓ½_#µŠå‡üɥѡŸ7Ë_…$É ‡§åW: Ð)rI¿ZúŽ¢…óVÎJäîXYà`® U_pÒ¯Ýgã÷žÖÇaNùË 8][¥ã#Ë$ØŽFÒÿ䘢|‚OìZL)ö x©¹š,õúÿßv\\k[.‡‹í¯I¾ô¬I5­IÇiuø7Kç0Ó3‚K@Œ\IÕ$t÷µ3¤ˆíº( LâFngõ†yÉíøüÒëóbŸ¢™`‡ÇÀ•êµb=;[­/Šs9–ZÙ[¡ŽqÃçäQœFï:lëýB}l«Ç;Ÿv¶11ÎÛÝeŸ´á-¯Y Û :ã¶•ÚVˆ¨ Þ²åEŸ&°²#`7èÒ;Ò]¼¼|ÿ^Ÿ1‘„ÀÊY’CÙwóD¡Ad#*Ç ¾ÀÖ.–ç}Zù›*ž‡ Úôs2íÐËû+aƒÝjÏàì\ZÈZ!”6 )QÒ¶”„ˆ(’H…­­ëƒc·‚?…Þ×^ÔÓ•*c1¿„û\f”ÛP&´—µ8æ|ÖäbàŒ´@{æâù'«¢>lBÔä@^^Þ‡HTK!ʆ|úàÉ[v1C” >Ôàѹ œ¢`[x×§Ê|ºùwXÞð,¼ø1`Š&Kã<• ÿÙõW)ÂÖóW^}™£ê¬gC{U{Fµ?ËÒ8éŽbHëD¶0üEKÇd‹%]`$r’¼µŽžö‡‰MÚLL‚5šoRnòi¦ëg:Ϫխ×0úT9r ½¹ãä g÷æ¼_i‚ôØ@ÎïÏ(cB!I´>à[fjÐQ8±O/[ šædàѱË?ÆTc9‰xy¡'ÌÌof¤0íÏ„ÆìÄ–ãýø¢¸ýVš¸µ·V@Òœ¶ØEÁÎñS³òm!‰„N{¸,^»íÈ„²TqE¾O;á:sð`chµ!ÂþÒF¥b=y¹m|ß\´[ç´ºqÙÓr"¬éß`Ô㘌:ƒV“y?“ë" ÚÙ|ÍóO\21Rf˜ þ3ïÇO­µ4UݳE¥§êØŠÔe}†[z'<ìËY:è“Tò¢£zòd§žŽM}1 ÙsÎÝçmò•.1î¶žuôAî5fÄi• ÿ@5¦¶ã­ýÂy`=¾µýay…6Âð\Y»~Œ„Ówý‘4…÷¹Üë®zÏ…™¯FYm»z 4ö—Ùýujô›¯¥¯éH‚ó²J}í 6Ys|þ(hí¸âP«%ü\¸FðR{·ù¡ìcŠAˆœŠÓm¶zXÍ­úvňÝ?£uÃå7û¯^àw[Žæ‰1óDZ-™píâdkηPÞ-sщ¼Ãxêqàö7—úÄh]å~´ßqêc¯r>üÉÖý=?µBI³úÞwæ„N!tñ±ÎPâM5E¦Rn&·Ôvu0”jPÎj¥½|éíèd¼µ·éf]F†^“®™_; 8­DzÈ.ü%m~cqó ÈX& ØiùX$42xàÄCŠ1Ã,§)ˆe³–¶KsùG $š‹ÈE8,„@úEÕ¹¾x:ŒÅq %å´ÖÇ«‚û7@ü°²Õ¸»½Õ¼àËËÂ`·ã¢ üRg=vµ.q'ñøUªtÝþÛ:ßyLWsdhqÿetÙvÀ_WÜ®‹œÅù!Q?Ü©&qv}ÁQfÍèm!œˆ_ ÙÍóeÚã­V‰ß†®ãÀêë\&–NR’ ï²ÜIøS|ÑÃï… Æ–‡I2xÂL <´§ÕІ¿î†Y¶› õà2AA£p¢õYÍN¬ÇúúæµlôÔŒæ™"bØÖ}ÿ© œu?`6t&¥a"Þ W2«PÌ Sý1i]ÉÁa]~9ˆï&W>Çø%‚¯[›y‡‚ ­7ôFP»0¬æŠh³Ï4%^JcÏE×3C+ôå—mÝA­Ã®|ÙxX¤[í©½'M7óƒr¿Ð]] m–$5üì£-‹gÎIÃ~ódÈÌGÆŠ>ο³aë™™ý2(¯ÁqC@“sª“l†=“T]mi«ÀŠ­±S='V>[jÿíÿè¾FS’eô+Âìîw÷“BËì1,M¾óC4„?1¢ã.Ø€1Í ÑÚþJš &º¦›.î.J4¥Âî$HàÁe°|±a=ÅuÈHŒB#0ì/Ÿ½nw™ Ÿ¶Uš·[âs/OÄ “2û˜¿ùo9öÉîºßš<þ¶lIÅÓo?sV 2Ûü°f¶H=ó¢þ§í…á¸A¹v£¾£Â¿/çzÚ@ÞÒ€r(.XW»#g@6„@#ý÷¯\ñ ™1ÈÆRêÀ‘þLƒV °Œ°¯Ò:¦IB <æÏðÈ«Óyö1ëÔ ( X¾’z<ËãTjºL—ÊÃ%Þ·˜òóð#MÎòm4w“´stwP[óòÜ7–¶ëဇ˜v*0e#TÃc†›"ÌæPþ•ëb$¯;}u!sàâ„WÈã˜c¹Û¦\Ô‹ç[}_@ä@z§1{¤Ž‰':_Á›u°V½oC wñ¬ejõÁ»—¸×§uŒž šÜŒŽ£½|é-ô?£Ø€¡ËÆ.^ìÈŽ9BV7Ê¥:I¨F#R n#¿³/Þu¾Ë›ìuTÜj¯uj$B‚µª|M0ÏqðÅŒÊÝŒ’þvXÓ¸Ó…¼ÍàOSs7~º‚^_¼›JL|bˆõ\.wºÛ¸‹E„¡™¬iûÈHN%9¢“Ǿ_Õ’Ì×Yªr°Ê…Ö“ge‡(à,«Yé{'“ëã¡záx¶ jÕÃÊ–ãŠôåÅte ¯ O œ-KXCCÙŒÑ+â0ìŽBÄ›è¿I˜)ìR«Òœ^®?—åÖzïi-Ÿ„Ò¸>-^é-”m®å:ãO4tª1‚Ñ .”õCï %-¼–FFÁS37¥HÌÈ2×ÈÐò¢M]ÿ¨©ÂèQ:LŒÃúL»€ù®7°uá]¹Â.³4x C1l·(¢BapT–4b•™&ÑÒfòn÷”u@;Ÿô–Û¦Ð*1º"#È€‡¬OÀ5Aõ¦*c°r=;ü (™!^ZcMüVW]$ñ8±O÷Ôõi.áÔ‡²ÙU_¹ºn¼§%ŒªdŒ»+Qû¶=O`J¡cÊÍÔžAÈŠ¼9½Ac¯Šøë‡Wwte$pì8è1ëwx”iµï›äuõ+¦€ ÒkÍÃg“¼ ?•4;žB"’ô% ¸ÞC‘Xï˜øØÚ`¹GÛ$@ïÌÂc€àz±Ð,L?ÌšØô xš. ä¦,ÁÆÕ>‡¸Ž@ Õ`›» ý¼"iý1nUP¢pàŠÂw¤¤Ï¸Æ˜F˜Ð$D(E¬Bd¿3({v¶0žJVŽW_ßã<-’šN ½4_,‡±F ö¨D©8›…Q¤™~þB€ Ìté‹o ›ò»m¸fí©`£ÈnŸ¡h¤>§ßE닯ÊÑ*MQÞì±!Q |DdŽ‹3 ‚Ó %6j\ÙA¯<8×ÎJÎëϨz_’n=$Mêo£óáÆ (›½§dh\5&y?¤ì:«¹¸Ç}"Eåq/šÞ,Ü—Çq$ dáÚ[_Ú…z²éíþåo¤³þÜÄefN{™€ë¨e”®”Õ–²Q+:ÿ©F×^Xÿ !-N¹ |ž}&<…„-ôPžÜhŒ ½÷¹¢¼¦ÐT‚œW»)cLÇî½1±=» ÅhÁ$~vÃÜxÇñ¼ˆÐ]ÅScÑvvdÝÕÍÀ¯A*ÞåA“wr‡¯¤Yá>‰Æ#­/qš¡Ç(Üžq¥,àõ/Þ¨´l#/#1®GÔÈhR}£NuÁHâ®”gì¿×8ªM» ŒŠÿ“ż†8Üzúæü]¸‰œIµоŽÈríá3×çûcÂ\˜X§œôº!*-ºª&œ ç4¥?›QßËœþŒÅe€X/M|Ó~ è¶žb#æI`ê€ÒËŸ ËÛÈ{ùŠV mé±ÝBC‰G4V×?A¢C0…Á“y,ç?A¯ƒ­2Ü*ËW5ãÓàîA2$CØXÒÞã ¦ ›Äê….~æ¿?5,3r¨ƒ†ÄVo]'D6‚“b Y‘{PCÒ£Ò•Ú—6ê•ä¿îeÖ³¬x‡<‘VÕCeƼšv|£a?“=mŒo•ô­vÄó¼ü©ƒi•³åwi&+|Ó¬ÉI¥ Jd|õ¿3v!JѾ„+!Ñ̓¨:AGªÊPçC)]‰z6Úsa*1Œ0¶ÁKö“$òÙÈý(¿¦M«ñ,92_'_a•{)úÓ4é_‚ªo ±¶î¼¢ƒ~¸^cü½)UÓ)Ö阡Sr$÷º'Uï_”?¡-Ë–‡zÝÈ®yL>f£U@ñ 9Ò®ðÛá ÿÂÇ}ðP…¨O~ge¾µnÁa5Á¬eó»£:JµÀ€¨ %ë“´åÇ>wßhI¹£¹ÌU…øV2¡²ùä>¤0ß\0‡Úëb÷ Õíâ›ÌÞ¹³”ˆï^]ÉO´+ÌXó0ÆŸ'ðTÄU¬óy£›ŸRö{ÄäD¦É™˜¯BQлCöúÃè<¥QB–šm»—)¹ƒÔõC‚üG5 6e¤…ýe5ìÆ¾·¬ @€ÑEÍÀvØÃ>È”ùÒ}ßD_é‹slëí1Ø„¶¬ß‹âkxHÖ. ç½ý¦<-éÎo°27 MÖ-"Õ© qØ‚&ú®äp²d¡ø²åºK·a8ê/v£-ŒEÏÖÍ* Ç®|PÓ/»:ÞN(™Ÿcb0ðÔœ[Ýøvñ¹rR0¾séj° 9“åQÕŸrÝ(¢ö ¦ç¹ó‚Ý4$Kb _Ü µEÌ~…*†»ZRfu/ig4—m"– Tϧ ö%M³™¦î»ƒmWâ§a‡õ(w¬Äßýlˆ¶îX—ÇZ.â˧d )qÖ‹!H±ÃâDz kÉžX·±ó„l·¦ ìA6#P ÇEFLy»´2A}pqÛy6èü;ßÕ°iÌš÷7†Ûõ—¥gañI¯mÆ"ö¢c½ŽÒЉ2‘ü;ô'B>Ö«<ç>¾ÔÞÂej°"çµC/\P1ÑÏí– %¾3jºÁ5^ GúßHLgªßΓsqi±²;R&mætrùÍ.ÕL'ªÌO$Ðyêð@÷šÆù÷„t¬Ë¿¦äC‚ôe™÷ºÓT@ùUHaÖôeHäÿäM ˆ*Ð&¹räÊRuc¶&ý"wLÈaiU}”f‚ðK¡ìûŒ/pÎ=z©‰ÑoZ]×u«Ÿ…¬%˜à´~ ¦å.¿ãÛ¬àÝĹê_òMæè4ô¨/DVa ÁÎÈ çಛ³×;<Ö™fëý·+XG¾e¬Daðà¶&7–Þs’ÉŽŽn•(ά-î€À©R}¯Qÿ¨S, =ík—r"ä­ó —PÑA¯rG¬=½éÆb·I¢—d‰ûí°•|T´æMI~8áô¤ÆõöN—ù±~yHÑù}äjp‰4†<‰ù>ìÀ¯Ó_À {ypž0½ŽPŒèæ è§  2Íij‚óÀ0Óšœvû‘ÜŽ)™u ¸…¾Ü ïåzÖmÊõ6P’ï Oõô!Á¾Naöpé,¦d•ž¥øKÛšaD añýŽ;ÕôxAwù0䋪1ÖôEfάwuBW6ºr¥ŽÈ!>A¦é @ÿì\¥¼ƒù½\2ÑÅ ¨^!ü2E­+¤Çc«ôXªnê5¾ìø[o×.0/¿j3C­?%£¡å×LéQUÏ'nÚ/RÍÇF¨HåG6æ+«YKüî¦æ—ÜòiÈ*f ùúMª<$âW+ðµåcÕ\oÕð‚IžÛ-ôB—+7Gþ:ŽŽ|kùÈ)‘iñ²¥ãër*ÏR7ùfÓì²Û×Dâ³ã€=šÔ’rúÓ°9—¦•·ÒœÒ¡7@Nm­_cµÀP‚t×b+ò\ÃH>ð1YbG"±6bgiÍA)$°ÍèüUÅàdܛʿm³þñÊe¯ÌÉgÍ[£bWÂ0¨p33FÞ£Ì ©)ø!“QDyéæk.@#tL²GN}Ré¼>ë›Øå›ïœ.wŒë¨RfA u'¨± ð ~)ÓÚklUNÝN¤Ï+ë;ÇÙWíX~‹¡MÐRÝÓëÎXϤÃŃGÅ{õãšcÙ‘E®r^w¢ÌhŠvá)Sx<¨Â2šÑ…}&S2f)<]?¼Ÿ×LÒZ£½RMÔÿ¥ë!Фì óÓn-ü»z’éÞ7²Q”¬PÙ:´fÈF¥ëƒOAqT:™¾p¯ÿrœœ~^A0!Bçgrˆ0fw£‰‚êDÁÂ:òSz$“ôSá(:œä’¨Ç}WPÆÉ´<À0ãh* ŸÈþ¶ÈcKè3(+8¼réÕdן䢈,š+©¯xÚ,ÆÚwÙ—–™•è7ß[Ì9©x€>HÆE{ªÛˆ¤3w?¹O5çÒl}šÅ¤ƾQX­ËEfÑÝu;ð†©åÔÙæ‚vŽ”—Eõ»Œ€WT ¡'g‰«%V~oÄȾþ¶_cØ>qã´ <7&kοö»Ib`ЇߨOqë\|Q1®Oä_Ÿ>ŒIz@V¢áƒtBÛM=/ÞZ[ø}„2„ßëWeºâ_+V9¨õضÄt‘¦¼ò8mLw#EE_xVÄlJUú[G+n»õ¶Í@ÝÐðô·µ*’½b^ÌF††dê©2%u¬ê‡¸¸c9±"&q°/‡M7C¢¾ƒâ˾ÃFÇ `’ÓBoÅ„É.-­.‘Êù{KZ²ÿØ}'ú«ß¦Ðÿ9c^:®7Õ-Êo™ÕÎ9Ûen +Ѽ'Ò êÚ( †ð¹Ÿ<Ð’Y„Åœ,¼€yÎ"๳5nj;u…fku$áàõ7V¬)´>ØZ ËPâ'˺ «Vqç*.úž/Nê–¥”Žt]“X&TdjT:ÊdÁ…©Ìø®ï —D!ÍÇ&d. :Ü©áh±S;*°µ“©F£ÊNŽËÈuç‡W©AíÌ*bP`<ËÊ •É–~Ç3Ôí$FÿÞ€˜FI%þX{ÏIL^Ÿü|Û´ÖVCn‡øgi#Œ(ñ°Îƒu¯¯|u‡xÜBÚ4è"5ÞÀè”·±D@zñÍD¯Ë}i2S(ö…i}æî9•$0BcAÉ´>ÐÏDZþ"ó©]=üš sGæÓÔ }"õ2­¾l…ì*µ²™|å›òU±Hýµp2²SrÓítP|KýÍÒÏ~ªªóè:»Âë?û£ªXÇ’yÒA3(0Ñ<Ư°f BlRfúÒDî¨³Òø×Ä&R¹ÕŨ©ªv²A5ã®|ïmÂö®£Ïî7äÜ+øÈ…¦ùg‡\Ö,§S‡QÇk6æ~I¶²NY‚OÇE·×iºSnö W~=pzW¬%ED) `²U¬Ê¬°ÚžœºÒ†`¨b™‡úž-Gj¬J‡i[€ªÞSçYO ‰úÙ“´Ÿì 4a§2úþÀ7F×ò¯WÈ^»ô(/Wù}‚ˆ2ª’äq˜d{MFVô˜ ‚èPOÄvÛÖÜõ3~Ó}cxIOâI0–ú›w¯–k}ñ‚.Köû.dvªkJœn²ÒÄ*é GcÌdÉ' ìThš6oŒixZÉ„-JX9[§É-ò(á¢å‰òö”x6½Hðjq’p½ºÃíÒ*Ð3” IøöæpÇxpù¹;ïÚÐTgsÂi8ÛúÅxiCÜ/ *Ê%ç…©w¦‹i×ì¹âõ×Ä»¾+·  ¶Hzª"꟫‘¢çÛÂi«ìågÕ ¶´kð”ýTVI‹ÚО0&aÉ[J¤Qm~5àNrÏïó¯Õñçù,*LµEµ;µÊ.–8‘YXhX)þÀÒýdTxÒ$ݯ¤Ÿô×B&ïÕ@Äÿ¶é_òíªÏ%À¼]€:ûâG©Ëý¥¦Y$@c”̼-úv(4<™ÆDÔ"—hœIÍ$xÃ#BrE>·Íè¹0ÕR&ÐêZ’'ú¼“ј¢É}‡ùè¤Ù ̵£°œŽóš2ÒF ̀ʨcT´ÞâÞ*˜]™k¹wµí)È ­ÙÅn½w²¢¿6A‚J¬%#¯#pÿ8ë L†"×:…Ú´[»¾#sªúÿ¨ö$ëòóüË@4Üp[É”Y%žÔQÑ/j?¯¨ÆyºvÒ·{#RìxVuYkºx]Fò€8úU$FN8{à™ØáwR Ú¯•ìzQêØ_ÊÓÍL^š%¥Û,55ž—³Ô'RIp‰ŽÃ’iÎ\¼†oTµjó +g_×õ]Pƒ[Pø9cñÑQ2ÏÒ¶ŠãqŠ-7ߌ|uPxHÞÿ¯CPýü°«š|ô%‘j¿Ú2ýyŠuxƒ‘E³ ŽÙÈ^(× ø¯lF.~Ì ¬nVçJdÜÎ[`º¯µÐQì&f+ÝÀ‘6 p…Aô­û7iOíVõf¦q,ê9ÄÔù”¢$Öé çns³öj ۀ̩8¨(Ü/=÷v™š5g§„†ÞÆÉ¤ëÄtúácÀÙÀ8{ÆU¡I0»€ŠJò=½ÉIÊ›€tÀ]ßõƒ°%>”7êMi±3#"-è1×Íý¼¢Û¶ÿVLýú_òÁÞŠþjð¨LúQ2 -q«ð€ùÂjôÜ™×™Jbæûñ>½ˆP@t‹ò¢ Ð-²øD{‰r‡üGÞêve!þ`°Î"á´¾‘!Û«ÐA¢ÆÚ –oeÎ@Õ‰²k´ãö ˜K³õ¹¶H4v|„pÉjzµšÈ&8U¤Åölø`RЛwıˆ2KkV¹é_¼péðí­A1 ‚¡§…*ækø°d­•ÆAŸ~\¿Pc:",”¥ÿ½Åo½¥‰$™ù±~`¢Q dþ þ ÷b{¤OÚêýØç¸šn‰QZaF[ÕM­rMÖÈs•hî­Ð9_°ŽûÓ9î"-uù\îDêÊ[验ùŸÎ“ðâ|úUg^XàÌk‚y³9ðiø<ÁÓ2 ²¨Æå—†rÓQİ žLß8l…LT¹c¤S× ΟasÊ|·RÄx7Ìø»¿(¼"_¨àIÈ^‡¥G­SViPð5ßùku*m¨ú°ú}ü³øie Øù¿§ón>;³~ðqmÛ¾sˆ³ -aL¿OáýQ² ÙœW\©‡ñÎνÙxùcw}ù*ä~.ŽÐÖOª j»¡tQ¹Õ,hŸÝ‘â<^OÒË[æË[ œ0&ì­¼ûpZ•²gù[dö€!É)ô°ä=ÆÌ§ËÕq·–î>ËÀu·ÇßTO£&¾3'Ywµ†à°ÀŒÂUÈKòì³ÝTÊûžÇ8Ö ì£­¡t·†ç­ Åâ邯òÈÓ*9¾Vþeùý´ÉMº\ù¡ð@î]Ö{©]B ü—´¼Ùj1ú`E½©âMq3Ï¦Øæ‹Óö§ÔëdôRo@$23‹uÄv÷‚ÏÂVN“êdUÿúÃ3 ù×SÛ¦Y;H3cÇ…x†ÆW!“÷>.™°SÀAƒá´Ôíà˜Ù¥Ï¨-¯BwÃ.ƒBÊü±üGpÑ»dSùJ¯ï£8IßQ¿mm5´Kóù,ò”¸å7é³ô( i| p¢õ¶—Ù˜UðXQ²ÒHq'©m,¡©UvÀ­†G#¬¾¨HdyhíÏ(_z¢$—Ò Zø•Æiš%ÄÎwÓxîºV†2l©|è_þETÔ’ë)Z¯L—Œ5×X[o“zB¼Øiÿ=¯»™,0•ù§à~Nzžûëôé+¢b"·ÏMèÀÙÚ¾Gmb±<3Zº;›+k&$‘öȤ% ÅÄüÛÖ6š=fÇ*ŸÏðbj‡ÝÑnbkQ:®y Íh‰¿•3?|ŠNŽXƒ˜‘Ÿ ™ƒcÍ8õ$^`†=m»Ù-ò?ÉA¹ô›}ë€(˜Nª âA,JQí†V€›¼Äƒáb X<~ÆÖt9Î2HæÑ PÖå‰Â“ÂQá +FÖ+‰Jͧ3p›WEíÿ^B’vq7ŸÔÜF ¶Ý± ’xÀrl òIg½ˆ ¡ÖöÐk53žœ¥e" ¦ût"[œ,Äóü[›3 Š˜Ä¦ .6‹™Æ(´Ý^+GôÓsºV¸gÆæÜôZ»Èî£üF[œ†Éâû˜ÕvK%‹¹‘”V!€eÔ•…Þ³îËÏj&ùˆ¥u ûirHT{¿)€ ÷¹E=|› s ÌqZ,EåcÄ”o…«~tm£ôÉë¡5F'Û?WÂ…<±|pMo'cÃÃ%`Ï™mTl4z÷Lk™Ø7Ïë>dE,É0?(P(¼$§ŸÉ%èîG8e€Øâ¬eÐæ$ªVUɪ÷è£ÖÖö Ô³%ކqv8̤+FáSÂñ#¼ÒkŽî´óŽjÚ·à͇Š1=š¿‰N´¦ÂL¸³qŠâ&”r•€ÃÌHö³Ø¤a¼; t;¼©ÀEŠ8¡Sî"Lztƒ•?d\‹÷´4{ä£YK×П–“óAÀíhîiÃ$>K×È$ë_ì0¦w½‹;ü µ¨^ÙuÀ§šÁÿd+ä‰cä€7¨)QÐ>ï·Èd x‹l.> Œjü ,B‰ˆ»d6ñ ÇwÑ€Ÿf ŸLW¤!ÀfóЈž4]²ü†Ç W}Õ=v.²*QxzMÍÇÑÓ”úüûîü +©ØxU•H‡ø@Ê#³1³ßdW;Òg3˜÷C‰ÏÒ‰WeðÝ© Ãõét™ÌºaO"årë›ØƒGÚ&è|¤윢Èì°²¾f¸Š¿­G>*•6cÀRÒï#¼­8B—>A~¯HõÁ2OU]çô f²zŰæsªøö¤Ø†`ý£sÚ ó!–=IEè¢ànü81©—)È›ûÁõ>”ðYG–~OŸ/î[æ¶Èòˆ>¸°Ð¨˜ÍùS ´úC Z¼l‚ cAM½®êÂW!Z;‡b"À°ô%èÿr³ 0Š¥v7ÀåaÕ]=wïkœEombØ/)È$‡Èª=y&cã¹€r 6‚ñq4Ñd,IQƒñ ·Ïn2BÛðˆ<]ÉÑDØṎÿiüžæN&³ˆ=¿ª !{™à+n³g€ ž+Thå Ü «?¬³Þ%UA`¡äÌö‡4¦¹Êsœº»äƒ1ø¼‘ÀŦéÞKjR†¾Þ 8*Ÿ Ÿkš¬1 GçDiL_|©7Ä;cOX/!:=‹7ûI*¯Ù®8Âý=^[åÉæ@Eßøö¨ê„«[²'Úãpâ4™ìŒTdxó\ªÀr£¨‰×ǼÂV‚¬Ñ„EÎ ¦ŠÄcNì:!5û…ì`ÿ÷JmÁ3¹²SûmÃ3~¿íÜd/X®â®øAÀ+dC,oÁõ©ÚsØÕğϹ¶XZ·ƒ®8«~ôœ¿;Õzià¸ÔökËçk®^+ýÃ*gœv¾dKÂ_,©–, ʼrsn—ýj”=[öKEfqe9D»eʸ%×ûT¶’K½ˆ^â`ÈmxyÍŽ:uôÞ“(„~+˜9”œØÀRk\ ž&þÿX¬JªÇqX  )ã;óûH¼1/¤ ½0¹ûîâ­ºŸÔa OöT³d8“7ò ºŠV¼t}‘ng†õ˜cÃQÎt· e$)9ÐSÔN ¬»$?ÍWOT,RZ˜C(y¶oP~í‰JT¶Íi®V ƒÕˆ™³Â‘VÇ€…{z‹Y?¢Én¬j¥ ~‹¢NDIÕqŠV»R%œÊro­ÿgæ‘ušñ*ºð~™Iü dbc~Ç!±ðØvòŒáì ÏEkm~zCs×D²p[ƒœ±U XäkóÞ†5þ½§sŠð RÐóÌ´P.UFÂл¼<09¸'6¢/M¨5ÑÔ0dCO`@ÞÚúÜÈè…nW{V”M¦=xïÐ^j²¡Y:#Ÿ%{W¸z¬ø¸]ä÷:Ök±*éçBˆY“ýœÁRjõÈÕ0˜Ú>ßža, 퉮[·±' 7™µ´ŸGy˜º¥ˆV>żO9Ú Q™Wk£ÍÄóþ˜q½îKTƒÉêRÎÙÉW ó§ÀØ£_É&mø…^çÄŸ6úÐüL³go”ë×,¯ØöBfAÂÖm´2Ì- –ª1”Ý“—â;A‡é“§ozâ+›&é–Âr¬Ý ¡§Vºç´/´'_ör7¢÷te«l¶ãû»ŠBR!qQ‡äÈ:CžÉÇu½êØÇˆØõÕHå›ýÑó‘TNo¬ýz‚ÇÛzmu‡y’ ’ˆÊÊW”FÙ9ñ+>Qµ ûŠGê pUÚoæ^œ>xb©À?jÙü6žü§ ‚WdÈÉ‹qaí«žcV¬N}N¶eX'½ZŸueöòçãoSʵ)QD KqªNlaÆ -èM÷óñ5}ÅM,%Ím9¢‘Än?gÁî'ì^}ŸTÎfÔ˜k@åiE]ï8,„ìˆg…ý$׸„&A8xÿ7›‚ß t(#|(Y”¼µƒ5¯àÀ‹¾0í€û„5ª‡P¢ˆYþ˜/²E½{·©lrK݇MïÌÀi™ŠPOÐpâ8™‹ÃŸQ™ õ&1¨”?  £üW·ÕÓÈÂú¶³\g‹³ç ùI Ô”¯krœ‡Å‡7HåR&ìÖv¥ÁÙ˜‹¡DÁÌž;lé‰. ¼ÌY,—•‚ý¨Êÿiå9*Mj18XÜz†Ý·Í±`÷a_ÚK)ð¥¯Ó3€Á_¡ucFÆ²Ž©’ÁT¼_]yØ]²·2â«Á8ØÓLÆ%j¶º'ÀŽ&ñ:•P]„^ìßö¨ Ï€°ÆÆ-ÚÍü€áábÉø¿"\'<¬_RT=J™÷ßýaìTÁƒ`‹]“Åþ}òÞÇ'M=ß* }o |ÝYBeõãf‹—~òö¿’<œÊ& ô^)è:¦÷'ò;A³èÚꨘ.[„rä ǯr¥ú“ŽœüäR$Q?Š˜n(ZclveÚ샴äTíMb@¬PÈžRpÂÉ ôè½ÜãÛã篽Ÿ€–e« d¡¨ž‰$ù€ ¿Ÿü­TlQƒÜ¬5|þ÷Dv1÷/IÍÌ妽Q ^˜b[dH9“(ÝÊ;T8¬50q–ØŸ%Þˆ÷Wílè_…báÜþž–¡Éck¯0Ì{Ñ(qÒ¾NW 1zÍõ*´jÜ÷€QlÖž‡¡ïÙQ}ÓÅ=%Ø ÞM _k÷3ª8,óßYãÖ’X£W/íºç!A ¬œ™ßŸVžÙO¦z~RKˆÅ;6´zÓYN ÕèÍ©¡…X ¦—±»$!® 2DUuOÝ=ákú2òA†®•ê/Œhhy„­¾·,Òd¨¦˜D¯´™Ä¿  £R2ÔÇŠÓçÒ×ÞL~yK÷Ãã»tåÒ*{`Ý8Áõ€Gà<…Ù&;Ã5 §Yý¢ádÔýj»Ôåt¢`/ü‡<×è­ð 6Ø|é©¢›êžþ,·£HÃå[€~6ûðud¿ëàv i©V`–Ï“º$R« !‚‘`)t¦¶®Ú©@åÐPÛ.îF͸šrèæs›0‚Bç{¥Uæ;ÇA0«HÝ콌eL©u~ú&Xáé †C¸Ïo V.nµ]¤>0>þQýÞÝ)9u{ÿ’ ƒZı q»Û{W–%ÈxcvæiÅBΔK?O~ÇAb®Î*úÞ_ãý¥BÕ¤C¥VTc?jЋ˜ë=vdýÅ Ç~ÿ=¤Ü˜†™ëb¨çº@d|R|Nx×Á³¨Q+IÍ÷Ì)EÒ/œ|Â…–‘®šìc­.»- …ÒKJë¬p.PÔßCÒb3@y†ê £¯,’+Æ Ï^Äâ´G×LóÙ"y¬þ:Ð¥'1ÿC˜—$ >”øør˜wa¯s2¥ JS¶€ïxÛ)¢ ¶ª²ÍóWn±%û¶ŸžkC1›—Ç·Ls”Ý˳Oo¸·”‹ø|BG䢯ÀR›tßÿ‘otËB4ý3£QÙüéןzÀÅ5Åo9ëÝ)¬7¯Mit°Âà  û& ´rAFéˆØŠî®J!&¼Éœ•4(V©]W6þxÓ‰õg2ÛÙóÝRˆ<ë@™wMƒ/þF¿¿¯ŠVç-Œ~N‘kž=4€Hg;Ó€ð´ýÌí½‘éÔ*¡x,>»ÒzW¶‚ …vPóŸšP6±_-b…¸Ÿ¦°5ëBwïϧ†àÚIâ .~õ°¶ü`\é–Ñ2”Y`ÐÓG;ÉIh`~{ŒÜÅ#¢EË-•Øù†œ : ªÏ ¿7@W´""¶P§Á;UMÔò¸ûÑs– ôJ?Ç`­¤<ô–'ÝëÐð|%üMˆZVbà8Úq«'éÚ˜ÿ6-VØqÓKL†æs*sr†%cC6ÏðFÅš¤–c\¤¿Ç³˜õª_‡óÞž",sWÈ`¦ùf^ •X²â ¿\ˆ•>%•Žá¶ØŽE»ÒÞ¾eÃOýòG Å$ÍÆ[özóé ÐaЙ,¦ rK§ñŠIïiîÈ÷·„*Ÿ1芴7ªà‰i—­f>•uÔn•ØFdÚª321Ÿn œÑ";šp–¿iœVk]M”G·iž0U-žLq-·¨S~žÔ(À¶4¼V. † á~ÛV‰cر7hº_q¢vZ$þml•…¢˜Öö,æÛIÞ‡“àßß”F¡2¸‘n_«pâ ì½–šƧÈAˆÆÛBÜ ðÖÓ„x/'MÚôŽdåëÛ›dvFÃq/8ð3 ê0еO'øPD±K*aü¸,Ê­ž óÔ:ªË[*ÓÒ±½Ž½ÎCJÊQšùôhÝKèµÂ†ˆpfý÷CÑôNiˆüWL8µ³c#8ÇgpÅÝôGyž47–oªN4¶/Ùì“5¬çed”;Lk 7á3ñ©t¼tOtˆ}Z÷‰u‹PÍ­XÞ1fýž"-ú W¹,W€UAÉÞ^2®ò³ÆG7-:#ÈH<¶´Æ]ê x<¨zQ·œ¼“Þ HÒþvr˃sð °6Ö,uæ0lA*¼¥4Ž;³%ðÐëZ b— ñ_2sÛB Û|ÒÔ]©Ê·CÝéŽçޏ‚¹à[Ö‡ÍJ.Ú”i¶Ò‡ÚéÖÇ„.Ð8–ó%{á[MªR`Ò‘ñÙ^—cöú„WC€¶ lGÜÿ¾Ÿ¨äÖ†\æ>̹a£øBuŸÔ_T^ôÝa˜†ò•r¬̔֠(Ý¡I´ùô e©¯‹škü´sЄ˜÷#þL Z ÓÏš/êQõª'Sk9rÇAÁëy\;™9`˜wÕ̓ó\ŽmøT¨¢×«ÁVxàÚî–]Õí*2ðo•Özcö¡7Ic)B¸‚m1rŠK"ïZHÚÝøýbguzAØ&NöŠÉE%Þ¿1(ÔŒ!#–ßyf ´àúVðZ_ü¤gꑽÁ‹iîö=áã¸~Bošô›#OÏÕ Ó¬à&¬Ê`ênXìú**:¾BÓ(_1XJºh$׋’QŒnq;Gúÿ•Â`|_ÂUP!_ª!jÚ¿sýåŽ~a¯§5òEÆšýŽÙ!°©³±fWš’Öy÷þ®ý–‚uÿÖÅyŒôUuNäÂZê *›gOW>“ò±¢ŽiöýŽÕΖï"|Ä€#Ó?íÿŠÃðßÜN7 LÍðjÈÑ9³zMš@ÔwÔä{d‹Üd$]ž¸iµXØßÝ`T%úãöÍ’s¢;Ö÷sÝÂëÿ†klèg±+²%úTͰ]&(VÔïuGо!ÇÈS6†§|r­j[Üu©¶eŒôc¦¿Ù¤ñªRÎß¿ž÷“:hHÃÙé7vÂö!vÕ€YV¶¤„xI¢oåRe4ÂýVI”â~`XÊȸ À_"/”| ×@6à` s»l;=Øv\Ç:/Gøu 'HLG·îL“ÆõªQÓïNÆh9„ºHKTŸ»Ø†¶—ß8³öqŒ¦„±!Š ˆÒ9ž«ä”/à§qy£ô[}.4æž¹Ôœ¤WTuº”¹Ø$O‚[°nšn"˜’b`ÄZÒ³ëÙõóâÞÞªOÙH¿,]_hƒ»!†gùyèáZïj•¬ßCþF§æîˆòÙ JÜÑÈ8Ì“é;ÛZ\– ¾Ä¬—Å~g T¼‘Æî§Ô?¨¡µ Ýu¢&ºëÛ€wXìº>…±ÎröçŽ/'þs#»o5ŽÀF¨^/0qOéxùå…Ä‚cà™vµ#Y§Hýjª(úUètå»ÿýÎÆÇ‘¼òwÏê[‹HªkQ˜€YÚYø4&š’QÒ2Àù/íE“¼î¾®Ÿ¯Ùçuìµ†£ƒýÛ±ãbÖ^{`yŸ× º®GånTL"з疡"›Ebã”ØïáP/M iëËàƒ¦a–ÙL^!θée«úTßì›XìÜ:¼µzµÊ _R²~XX¼¨^ †ß€oš2ˆbJÔf!ðË w©Sô«!k¡ö*â–D›ÖàÐfKx`lH©x AÖ²ñzÕ\Ì6Âj&î\¼I~ÿé(€oІ¨oÈ^Ë;>8÷[³Ö[DqçÎ{~„ç@6ÈA=×¾âm”’MG£™ª.[‰<+£šØ¼´ºïÉûÿ̺Ykº¦,tw°…c ‹Äöç¶ÄþtwTn÷®Q¨~Þ1zë\QÞ†ê ä²á<÷“-JøKÅ´¾^óÈhÔÏØOÝxÈäK@ÊÈN@Aºø7;/VËVœ5DW˜øïÜ}ß©zþ=¨áMÏeD$®JýxøÒ0”yôZ!\àfý gý¶UÐ]N»ß-8ß}µ’`ô$Bs× ö!keï¨ÊýN¦¨«bÛ2¸Mߊ0‘t2% ;|tuZüeÃý• ,3PÍs,iö1×öü‰Å5оža)ÃçY>]mîÐLˆ,¾çrh™Ã}Ÿ¦ÒÆã+3°ð»Ä«d݃ê‚Ïü 2‰¸¾½ü9íÁlcœÿiÕ°Ñ`Ùy]²eŠnoV¾g› ZÉý×@mY 1e<Ä X0—ÛÚ§û …ù]¯T$ Ó;9:Æ8‘ÿîÐ?À2 §­U»?§¯YÖƒ÷—Ê¿r[•þ,ÝÔrUfæuûòñŸÅJ½ïõ‰ø.y.祥’$¦[#:µ°$þ_Îb/ïô<—šŒ>A‹Ù¤O®ŸúÚÍn7WàïÊ•Cµ(%[HN0ÁƒÓãdÐÚu‘Þ²†.F$ÿŽ‰Ç‡¸ßïéßú`±·´GÏðª&¼¹Àvšp%àËO¸Æ¤ºÌÚ›ƒÍþ®€¤ònø¥3À²=´´^ÆèÝòŒSž iVÌÎbj—¹5ÜQåItîãø˜&Q/öùòÚÄ^‰¸TrIÙc×Ó¨­ã4žÝG?ù‚ ŒíÞùwmòRåµAM÷F|œÈôA$ ÈÀórƒBH Œr5™¡­ÌƒX!kÚ~ˆ1ÜåŽ&¬.–2j"¾Û³Qà>n-·¿Éœ¹ƒ ÷#ÖYŒÅ´AàV§õ?&¢ðÎØœŽ“yV‘ÀÔï ôÅù%²qaÐØUõ¥XA;á{…›Ú‚áJ üã)Ñ V®ÖõÕ­bÃýVóèžr…¦ÕDW1H››P"‘*@±>]óÉQd¶Ecy’²ÃDßË8 MÏ8)‚°BèÃÙ5nb÷b<Á,ÄÓá²°)x‰èã‘}q“%Z«ð±Ñ;^.Þ O)Œºn«½Ì›´òÊ)“è•ù9[š v&éÐ#Ì#¹‹cÅ Ff·h^!r«ƒ·­ l7rUšj'kçj -þw=xµ•}3èCÉzÈÞPΩfÖ¨Ô=Ô·‘` ÿçsl«3±k -JšŸ,•.œ µ©æ³z#¢ˆïöe_Ž£èv›çÂåÙ,LÙS°T™9 ªZhWÔ u9¸:ÜÈ?qéÆÌË)ÆQÙ‚þêËB¡K*°%tÇŠ[kuþa[• åŒÁå«IŒ ^±Q%üh2aåýg£&w\ ó` Ëó™*cj… K¸ø5õ¸Ú Kz3vÙì)áy¶¢¥í Øæò €¯Ô!uè©ùãþáÆ-¯šÊ0°S]`™%{ýÊà…-H¯¦†ŸUSûê"É)îìê½D¦Ûm‚!ÿ°”ÑmûkŸ×µØh@—ýRkåg2ô-ÛÖnõöÒüUètöè0\3ž¨¦ŽwË2Ÿƒë”S– Ïoná ú”|€ráMt°"òm© ;‘eCU©3 ZïÇ YdD'¹×“ G"/c$ôæÐ$¥¼1r¨S~ {…ŒÅ}TS8¤.Z|›¦)üaë³f'=P,mz:Ç“Ea¯ôMUòÚî‘«t¾ Qúß"rµ•UìL1Ç5 Eš7‡eÍDMp3k¬C`§¢?ßø½:ÐìwÄÎ= ·™.ÍtÍ¡m"Ûª (æ£3«›A©ÝAlÅÇï/ä ®Â9%š§yE›NÉÝÉ[ØÔ¬ømD´:>ÆÅ6Dã붇ÒMì_ÅÐb+ŠÎw$uÁÝ#Ï/Z®ª_89¬Ú´Œ)íñ€¨Ò¤Q¬Žµ<¾a¬cî˦a+¯¦!1í&w)I¤Î¶ñ… „†‰w®¨R•°Ìž¹xÕÆ¸ä†éëB$.³±óGð[}[Âû"´)ûÉ|“y…3,sÖ5AëÞ£¦[Úí'†^ÊD`µÛ?[$÷œTó¦ %DÂSòX“ñrå‚mÆ×ž:»R‡?ö<›_× *U}„RÁî^Q7P±Ú§Œ2w5¥®Aµ˸ˆSÕ"…c/Ïk[ªÉ©©ûõØÌ >¯¡–bô[ÔËDYã /=ÌOÔ^.õ8ýéA·äÝÊbQîøO1döZv›ÑçHÉÎÎ {aéW%]ÉÚ&åG ÃÔŸ]]8#9º/–Ûø©çeu®9µŠýyRúËs-GK!o#«Õ¯æk€üQqSäөΛ‚ ž¿£É' 5òµì¶m§ªý–Hñ÷¡ ùñÃïa‰!d àY 'ɬª˜¦åŽJßKŸ|x¿_;|¢ìZÕƒ{|. ßVÿÖ«ùtåj ODÖ´D÷Íñ­\{^¥² k3¢¸ƒ5ä[q{Ôº¬¢AŽöã€<ÇY¥Ý±@þ|φ[ãâ€ý(29†oÜÕ½!%2Ùv„^äFêâ•ÝÚThαñ/ òEˆI_^nì÷¿² ^¹Í¸G:iJöolçÒ§rrƒwÿ ‚]4”Úä…Ÿp– 1 pˆ›&íöåXú ÌHIñƒ9€wôaáþ±ÿt(T Q‡/¹â/Œ¦µéMk¶ý¹zzÖ¶FfãÐĸ£ñ¼Gy*Wj$Å óA÷Cæ(*] ¶óQÝÕ1Gæ(ØÈfÍîà£+Î÷ÌüvÇì%ßúrŒÐ h6UÓPŸpI1sb›îw1AÓê$,§¨tŒÀ(ùi&GQA®4Ü%;õ­VI¿ÆÀ[Òb®•tÉê¬ïÜüµ_+jó8RfŒŸKÏ&'M·`;ãćAÃd¢£5ÇcóæSC阣Ւ–8ü0í¾òó0sfù¡˜Ü™-ÈÀ§:"Øž)^ÁÜœ^*ƒ|qÄQ#ûG2ϯÐs9tq<ÌžÆIru~…µ¦çr9FÄÃãô¸×Íiú&ú³Në‘ =ýn8]nŠ3óNÐ|X›Bß–æ‹9«° àŒyK– — ‚Kç¶ûsl·¬Ò†ÜÄÑ–ŽŠ74ú´R¾Ë÷­G¼âRÓÄúî9(ý¯·±Ç9tCim»&òëìRS“rAÊnáê o*Í6 ¨"ùÿ#¶2ûAVJlRúçAêí^sÁƒ6¿ú@KÁ€nƒØ çI ?˜ /V®á«ï¯õÆ,pÆ¥ƒ_òÿ¢W±\Ji6|3žßD!6ánC÷J²F÷•² GRõ¸¯é•1FN TR¨¼¦rßžÐ|äìæÚÚŸKeÔQ8ú*›Ê½d‰¨ƒó˜Ž†6¬êR m2úGa…!+I´öܘê6¢jñÏ›Ä_)è¼o­"k”Xí@WçÔ«Úâeý½É4f‘ò /B}¥'ÂÖڙޗ˜ßþر¯ž94îêÚTh¸".LÃL°9ýèyþ÷Cy¾$˽çÈÐLWÆÖJ¦{F8eJ7 .#xŒ¯í*ü¼î:ÔʈusRÛ¾”Á8 æ …6©Ü[h.*ü«Gž<ͰQ˜!&fÑ5˨šçT‚S”Þ_xļÏÌâ¯'´ %Q ÷·¨4¨T—dÛ3¨§¨Ý©û„¯»f5Yb†£uéÙeòy1ŠÄ6}ø¤…C5%Эe- "3]”9•3èÕç°yN(§Ì|\ÑùñBˆ|ƒ„†EǦBv+‰èÅêO¼€S[PÙ9 U¾§_õ€ôõÎuk‰=úô½ÂÃуÏUTrÇœ¤h›<§›ƒS™:Ñ75[y±Ú%fÕÇ; GŠ/Xw¦ÚŽ–ë]"ZôC€D|®Èãc¼ÚÔ„!›RKòkΡXÙDñŽ„€×//¦ T.¦XÔ…´§ûù‹'O1½øeBôØõtäÛfÏOÔvø÷ÑPïBØÎyqŠÎ˜z–Ìëõ!!¦:Ï·¨¾` T²®Aäžmñ>Âè=K` ³-ëœðJ åOÛwâö:}âÛ:nQŒ‰¼+ÈHÀ"I!„ÌÄ}ÁYÖ䎗ÑâP÷'â‘Û,J!£jò䣽èÚ&–ÛVÉ]zÄn»W¸œÞU­RA›ó!$ú}8ÅÞq•×Z5—ã]j¦ÔäBñ<Ŀī1—ˆ*–ˆ›xõR‘.ñ~£–Ö“f°íþÉSÿßÃùŽPÉÑêñ®^;·Eû¹àÁMcQ˜ÊXpa¨Ii¾Ecf3Ò:â ¸‰$•ø 'k3IÍ1W÷j‘ëÿ~næµ8›ã $lQXYEVzb‘¡ Üóv̧|w‹mý–ûc0'!6þ'ÊÓîgTi"„R¢(q¹c;—Û­A+psó.$$¯7Q¢‘Þ˜@é‹R$é:ÈІ:š³zœ j<ñÜ‘ÔBÖC¤æœlúáSˆçNFy¢y”U üàÒÉž &ÏTȵàP*ÐgÝ>Xžž–ŒÔ“ù°â‚ê˜%eÒÈha¯ìÿãØ^‹ºðWWrËSŸX™º[ÞrSP¡;– MOƒÍ`¢@‚–‰«j—?Q`›3KyH€_ä@ƒšf@Á—2ßYõÜËXÕ¾b¢¡}ƒ¼å±¼ÇìîΣ_V'ÑO0Ã÷OÿgøåYê«kk'cq–»÷›Îy)И–ë‚¿GÚt˜“RnÍáa îiÎõZ|kŒ«K´v×: Q¥¹ì'¼aÓ(•4NoŸà[¢­jŒŒ…¶$‘Nqq ‘È5Ÿ<űV飼êþ ã*îË¿±õùå”.¿º…Þ8Ûe€ŠSã·þÍœQ5rÝoTüÈ\°çaP­`‘‡E; plÛ°úƒ“ ¼A7%~ÝR¬M·&÷¡|DaîT˜GTb_Ù¿™×N_|ˆWfè½A˜ñ¤ÒÅ/@÷m›48ÅxÜ[‘‘µïë¯&ùfç2ì0ó`Ø3$°‰ô°±ƒ*YqÇ¿¹u¾* ‹¡(5™i¡Ã‹À”¦­¥Êvð®Î]EKOïOKŒ O –|{è¨úkž!\í{,ëY–À‰›Ô’çY[†ˆ4 Ò%­ÏÚsÿÛ½c Ò¹üÙÙm®z|/¦q†ÖQ_s¥÷twt|þ[Œ˜Ï ïÆúuøøÍCÇq<[Ñmíð¾†èÂËQýÐ5‚©ß–zò©å©g{H¬>‰¤ =€Ëàµ^rlùAü°r•×xo »ï󚺯ܹ .ø¢/ â†xÒ•_x¼T‰j\§7¿ÁK¦/9ÕæÑ,Hê­XiZ¹8½fÞÜSnD­²àýnÚË@k«dhó'îju‚1OóeîÛèË _pê”-Pv§¤žèAõl:°«:=ÁlN¢ž©Òþ>“Þ‡„NúÊüå`‚¡á(2¥M[§ÊR²ÌwÁm8Tà|PùÞ½¬XðW1ÐÛùÚU<½–»o6à˜p(Fÿø[¤#ÖŸhñ>a@۠ŸA8á"@q&ïA‚À_­dEÿÐ{ShÃ#L8â¼mžÀáÑj¿¯Æ¬Á(*a¢¡úcÏ»“ý·åÄÂ\tN_érÐ| —²ï ¥ºnös¢hÅ< Ç="Xãx&~ˆ#%HýÝuŸÃägæÈ•l*_ï©­Óv'ãÀŽG¦Ÿü^|¦úV¿”O[€yr»ÚÜݰLøØWj• Ò¤WΠC$53z!EHg ä•h—»­X&Æ‹"I¿C„'#‘ÛM)Ä Òm;u¤þì29=2îîh’!¹¯ áž$•æÌgûS'BßI=$ŒÚü©ƒé¬‡ÕW—§0{cw·…¬ '<Ùd‡œŸ·]Æ|††¦Úô”më ™[Ôôê¨È2ãØ©7«lŸå<è »Siÿ)2s ì½·èýZç¯D³oê~‡®xœTåZ¦pz Ä.‚·ÀµkO}߯IÃÊ©òNß»ÔFMê2oúÕÀòà3›@œ†§‘I~ ªx»äQªÛ£0s›&\+q ?âué™}¨)¡UzçÕ1º3Ä ŒO»|> O~Ü=UUyíð”u£qLßgÐza Q»;bq¿ŠüÀã©Qó>wvû> î™O?ÈÏzðÁç„_„|Õ`(E±¨µp" u àÆ½²/u¤YÉT·Þë1Oï[‚b<'Ì *î¹ÈNÒÞv c,BK"jOÎÂ…3§íð>ްûP êý†…g…ñDfÿTõ㌢º …+öå?ˆÛ£o‘a¡)\/gyb ²ÕT…¡‡ ÌJÔÜÿßÇ¥v‚} 8¥/;ùöNXšð¸ñÒqOÖê“Ò®IÑx‰á]…M¡ð¹MtôÜðv#z|$JÖ·-€~<”³bÀFÂ×óœþÁn;@;ÒPì((‰䃔òFZâc05w\\ÃêÒü>+$Ž5Øù¢ )ØYUvR¸ ·2Ï84«=¸Ü{>àªß =»ðÇ{&š<5¨^Ðæ¯úNàv¬ò óîšœslgŸÈAAä+¡½BÙ€A³IaÃa&~¬ž#"cªÆ7CT«Aõ‹œ)@Zq´è)ØHEÙj™Šm ‚y”rQ«uŠ®…>ƒ¿fÐû"_iƒOŠ*„™qM Æ8³ *ƒ1®àù²j°ô<\3ˆƒ!†D0À³X—Wš¶™7 } ˜Khq™Ò~ o|*Ö#¤D,îÎ~™´ç§Û'¥¤%0R Yðì6é˜e›‡°çñxà–ÿã¾dƒÆ®®j^¢#Us{ÓªêGÚäˆsÿS]/;˜£L£]8sBã® e#Á KBóý[ XŠ^ ²Æ!%jt¡ÄK¥ý_ô;ˆ“¸¥fAßÿ9ätÙQj¯¦m£6›Ça,½-’ÇK”—C8›¨×iÑXû½ý…Çþ,QÇ+±"Ïf$Çã;V ø{þr¨\(h懗M)7“¶Ük‰+,þ¡?jXš³FÛE?á’ºF|‹ª<]‹!¶O>Ü(‘³SèMKæLù• Ü i_¤âlæ¡[[¡¦A°ƒ0YOãµ—ûWA&«vùüýÂʉC'Z5–A¶¬Ú‘òÉ}¢¥Ô÷¶oÆ•aõJ¢²ŠûÍ[êHq)Ò–Èæ>Í&è«Ö?ÿ)ÓVÁíVÙœ1–«éÔ±Ö§!lØ ´v³WQ^œxæ¿ý,Å5 ò2/²X8¥ØnUàb*\)·#u<;œK‰ËlþãDi¼·Ãï[:<›]+CÑβT¥Uh“3@«—šŠ^ ríí®qyÁü=úË­ƒ"H[ãºÁ¦©§Rw&jéÌ€®èã§Ÿ\¢=h>üƒ)æ,ŒÙyt#€l3cÉý£~„ÿ#Y8;4àUü¾nyÆ´îÖ\ïúSൄ‚=ÌìÏžN<ì[Nh;ž5ÇÆÔIÞÓç2ŒÇªøž‡ùv5ó›‹f†{¢ØHÀŠüu˜ü¼F&°ÿÞ÷ëÄþc ÌüìIÒh;ôŧ런í’]K¼)VùqÐJ™ØßA Â¸.+„‘33øÕµÄµùþmŠãõ?:èþªø" Š‘ht( IÙºÝú 饵ãyvãkBUA]³[e®> qsyÊÆ·UÞ0˜×¹çÑÄ›AWvƒþêZ™:›êß·§ ½s¸›W(gß.ë¬HRö‡x‹ø¸d ƒÂBêÿ yɧz›è8Áö*³ÄG•€îãUwH$+ù¢&u¤¸—¬×0Ò 9:+‰˜Ð(|Ö¬•lɨï­m _¬ ;¾º+,?hô×jŠ,?C:Á[_W îÄ>±/ÛD܉¸¿¯ÿ¢¥bKfŸ) $?ë#Jº™›Óvƒ´!‰*†ã 6]^ÏÄ¿ús¿ØDºÌ«ÑæGc\,O)·®Ñó™i?D‡±ª-O¡Dç ‰~m]MÀÂøSB‡Å¿*¶±x>u¢©E.P>»c¯‹déŠíì´ lõËþ¹j‹sˆ w Üh½ÛŒâñR$Çw¿ÌB¢°œ‚Ðv %cËÃG:Œm|n?4‹|1ÙNɾû@GHã¤>åi@s-~ÄC©vÎ6o hÝ­w~y_ׯgàÏò­þÑ?*ðØûu†xh1{ÿM’& ìM{ê—û‹Ú_zy•;âFþSØ72±°ª/f8ðBÌ8ܨ·Ê.;{D=Ó®Åùnä=žØ…1}uåâ\H´Êê®Í–£ÿИ„B%–ÐrëÙje†»†ÎËù.ÓÐHí•+JEXä<(t%É0PpGŸÇ5Ê ©°% ›oòâ¿g±Î6ØÄŠ¡Ä5ÛÊæ\F„Ú¡•ÈÍ?1ú‚LÝ-^ÃöåªqN0ßiŸ9ùR«[m–­eªLrW¿©†.ʼRö:+žM³¼hºu¾IÔæ”5U–þÛ%xà+˜j׊éõÞ…Kú8Ï!Œ\g2Ö‹|lø«÷ òKîœ æX|[ØË¾‰›Ö E|ä,&WÐüŒ}…wpÛ#«{œ³2  þBÛ®[˜æÉ…³¸ôñ&Æ+vÒûf>ˆ…ÖSnóÎÈí¦Ké1°BŸ2„Pó¥é)þоÈÝRkB¸ç=¿ªö\µ¿á¨±j$\A˜“#YRAi2 ³¨_BM‡ -8ÆØ{(@¼ƒ4ü™–ÕlŽÊz³KQƒˆž\t 9ÇÃ2œµ"ÜÀhu-WdM_à<‚±aʵ8™bqG7voQO·Àn‘Iìê2$HpcÿÍ›ú]j!VÞ OŸµ³_QË% ¢&ÍJ*ùÁ3¿ NÚ”ÑL~ñDƒ­s["F\¾Ñ\‚rl€îtÝ´¾¨¯3²ãLÆñóÐímV)Æ9$ÖÁ+ø~ßtþ8yݦ³ì&Ô¸¥ê”·n7¥|rI½3¾×á ” ƒ“ò€Ýj|õÏæ‚÷ŒiC Ô(eàUÿfQ6ÅÓÚ•Í-ðèþ€æ þBƒ™ÈìýK¨1å¡A€áê\KA…f1g)…;æûÇþ¹‹ƒ03:Ô#Ñd•–(½ß“Hõ°sùò±)ê©DÌ97uDÂH IQÖ—Ü€¿¢…Íýÿ­=-î9å4“úèüëzû?O)‡F®.õJO³ÿGúþýù´§o°Z)æ½w»/í` Àƾ´'ãz‡¾Óõ^šC×?“?¹~Q1&$”T2=¸v€À$žmÐÞä¿Bã!Þc-xÁ¬‰äå§÷ûyϬ“e^-+'l×Ð??¦?]eÌBÿ( ùÆrÚù )&~×fE¡ÿDX8 ´ê ®ìÀc y&F*öîËĬ‰cÕÍès¯¤IU£|¦k‚è{Íëg˜²"#Ý<$±ÿcÉhGM§)Z5ÓjÏQR“alö9ÚsÜ%£‹+ú¥ÛÃ/œ÷ñ­¶'¯E?a lò’€º87Ë­5wÜ/\Sè½­_¡&{gç‰`2MŒB7.ÒQhŽ4\Ÿ~G@hæÈC1ß «Ñ7¾! #ÐR©Ý”BxN¼2 g1%JáYd=QΦ&Õ€›(g„NÖ\ú˜m„ÃëÛr'ñrûÿ½~gNp¿d4«s²òË02b¥ÑÐ ÑÍ£ú×!wJú¦m1Åã£([‹¿óOÁ©ÛQbË_G¥t.;5m†YV•K&3fÈT’é U7mg¤¢ñ­o5£°;zyÀ®x¥"«^uE4#)ŠŠ©â»n‚¹óþ ¨ä·–A€è„_5¹|2KÞÄI$Z(±W¬*ŸÚU †ÔLáCP9ZæJvC¯ ej~§µNßkMh–3ˆ‰zyÞõcsêuÀ‡\,?-|EÂJaÂv‡dþèÿÚ‘_3­»* ý{¯Ìü‡Î{DZØ?é(®h2ØßØÉšGû¸”X6·!—Í!ĵYˆc=ü¤Œ{ê]¨ó•¶ªË…åûˆ¸ýÆ|.^•‡TX›`ŽUQ´ãé2 &}2æud+HÙÓ6ãÈ”®F)4̘fÚm4´þ7–›Röql‹(x]Èçb! ,¹ ±¨À0ã[‚Ñ_#å FtV4ϵ™»„‚Çþ±¬33z‘ •ŸäÒðóN@·€DXóÎIia¸–fBýVÖM¦Ïö£¿Å"Æ×¢Ôùµ`e";i)¯)h(p5 xHó¢¶#àn’0²ßm}É`4Å æ•Îù7o°”ÛBk+îWU­è [´<åu¦Ä|,°ì^g6Ùs­k¤ýVq½Ø-Y¸‚SZŒ¹… ”ç¶kë ZïýÖEéƒÉ¹ ÿk¯EÈT‘Ó j¾L ìÕ–s’–°”Œ½ ûÅœ•ëƒÚ…Í‹âRõ$·ÿDŸ˜Að: FÅãVÝŒ¤Ë-?‚brÁ•a´df~|Ò§Í#EˆjÙ“ƒt¡®ìÝÀß¡7óß2£ðI(ž¤»‘JÜ®nFô/ }AUqøÿ[ÞmˆT/ÔEID«#ÑÙOÒü«wŽmpyÝk@T”•3ñZ*xNž>™“ÑsF¦)7^¦½q–ýìs O¨Åü–¦4’~Sk+Znñ™eÚ'âFàÁC2.]ÈD,â­¬çÝcZ?ïø§®Ñ¼Á‘•(úòÈa§@Fé³²›-ë(ÉŸky,g¥ä†70ÊÆÙ!’2}Ä|4 ‰õ3Ñú*u¬è°Ójz?säüUm†…I\w·ª$³}¹p„H5$!üÝH>ÎÛ €Fq,´gœVåÃÿŸûÀ¿^t ~߯ÅʯÝAR»jRdZ<×yŒüwBwd9¶“rwd Bpñ{rv›Ó[ä’Ÿ G·]txª$ë‘”[Šû±‹e2oyµ2ã»æËu#dÚ{¼*=cW­X†V7JȾ´hU{ŠÑ Ît,íÐW;ë»Âº—èÚ2»áÞâ×Ák«“ |µR’RmTs.w"Ó’)’k¤ß/ôuØw<Ôvbñ×UÖö‹ØÚĤù¢«uÃ#ê ¥dÕ"IAD-RÖzYô9úÔOʆŽÂšž5'×KíõÔxÜØ êôz$÷iA­ùD´é,ñ‰\ŽƒuvΈUÁ..Å{¶í}¡ÞÉãbíx,Ë'¨­Æ¨Dª˜¸ØÏ/d%l·ùïcØþ Kf‡ÿ=`OAbJ ƒ'Á{[¯z"j+:¾Á>§bmïü”ËûXù- ‰|£P[®>(‚¿ïþFÊNs¢òlëeN£†_„}Ç>µIݧµv¤ÕY}yµZ t–@ƒl”ïÃǘ—_Ôe²œô«V†Ö >‰úrŸþÑ*”«?õNbrî'×~†éÞžñû‡$¾Àô+/Á€Î‚ÖÁþíg«²ç^s5!nyD‡ZØ·©pÄ¡NþrøJΤ±ëügjfê—>tm{™i‘̽íZ)s^pƼGî7ĺ§F_0|Q7Ö{LŸ¸LOÃIƒž-4Ô\_¤¯šÙqÉU¼0÷õÅ%0à’£Á²ÿdí!ºñkoý–‹¼Zm ™º‹ÿÆ!ü«S¢ëhÿÕÂiÏ%a-Ñó‹i‡%Ýã1\vèÍ‚V¯™mÚCúí±õºõ£åÏAÑŒ¦3ÌýlØnŠ.ŒùÓð¤R]æŠß>«fô;]Gë|e«ÀÓ"€:ˆ'½íÈ ÛÚ8q—ÜÂLu› ßG¿¼„ì(yx‹9.* ún„òß±2¦$f x’w ²Þ³ÃF4°CBA7ëqLPhއ׼“¥ãàŽ†‘´»òèTœDR“1ËG»/û’ í #R¨§9c™ö˜?ÿ»‘‡û6ãiÏнý =+ÍÌkÀ} wÕdèù C\úø­)/†]ìã)š¬q—0`A?x›¿qÍ1ð„~ØtºØnñ-gkÈ$ý61@ôMö¡ ¼W¡S»ž?ÚŸ]F´j““âh°—´&¡âGðY®¡«VÖí× Ïó¹œ Ø:Òy«pnQû €—ù~H´àÃÈRŒD¸D;£g&aSCb°Þ’»ÿLíN§ÝY©ïlz‰éö¢f¿#”ŸhCŠz+Ç|±AŒ}m Ì>}ŠTÀ‘’ðïåxuÇúëÕ«ÃbZ·ð‚^@N_P‹s<Š4°¥$–­¼Ì=Û)€ÚßÓsðXÁ³èN·TÕ½£@%‘VKÑäï…t3ÈÁüh%¦mRS7 †xX±!ÛN&ÝóÁïS5ÚŽžòºf¾L–€ 6‡b3m¢ëò™……êÌÍ»OÂ8:³°£¦¹­Îéðãµ#árrúGŽE¤­#ţ¤ZÇÃTTÓ#ÛNšN›ß† ;óHe=Ó 6&ž‹L`ê‘Cµü‚˜UÀ³ 'í›ÑK}æéywá™ã [X-t*s ò ÑSwåF:¾á7B;Ò k&ýDšíg¨ß¨0{SõâDHô †ý'¸ÔM‰ØÝë.T z½@èj)Ö¿?ñ6%éÕzXzHß}½î|ˆÚ7@ž«+ö‡fëF̺¨„Z:_óý²?;„ôêÁêá÷rQ?†cÛÛ+Ë«Ä4ÅDœãïÉs7¶¼gkÞ^ÎÚUM+Ûù)ž+7¥ÅC}€úa¸4tDh‹‰!:ñiƒI¿:ç FðÚˆ9Ñs;aã pª×Ú騉~mºj‚àÖŸå@,±u;kt{,RG¿?p¾bùÿ?Ü£”©…iø˜&±»(ÿwᮼóçp4ƒFÔD:ç[&¥aƒ\•(Ëò0'5Ï‚·¸ŸT~;nõ;ø|"yyÜ) Eü¿Q0mâóµ ú/7`¤ªèÑFtŽ™ŒÚQ§Šz¦;ÉÁò ýà¤1@˜~tžHHzq&ÀO¾ýH¿ÀÒÑ¢ÀðØDP´È™¼Ž/û[¸°þ¾~¸…Aë‰[|Éjª > þ„5x²°Õö¥óê/¹Ðýá¹þ?!w„²¹£™ÿB–ÍÇxÌ1.5ܽ:²5šg¶Dø9ýé«|õº NShßÁõ$P‡Iÿ«L÷Õp@Ý_ 7½Tõ+v¼Û h¸Wí~ããjnéEò½‡’å=ÄQHGÜ2Üš‰"¶“ÚkšåÇŸ¶ ‰œ=˜[T¨§,±ñÖ£bu~õ[d t­ÄÿezäKr9õåX « š 0ù¯=+:b_7ÍHÀºG4Üh‹ÃVž¨iˆe/„°áÿ¾¼Z¸àù¦Sc ýémY!v¶u#†4ËgÉsíê.?sFQ¦>²<Ü6q54¶œ™åó]$M&Æ‹ùŠ0B.à &aØ£7ê’D#‡ëzÏ!ïË_Ú?Ϊ“©/W绤&wµÕD4 ¶‰\ÅxWm*ÿNRþ–ÊQ§zÐ[gˆæà?cF¥KaÔ’9ªƒvéêbIΕd:“ŽŠñŸ|E#“+ŸÖ1¢~ÜgýäZà2ØEÛoKVš^?9c–¨ÙïšGYoUÍk Ó9§{ÛÙž!öc›õéÄúøÁnª~ÓˆûoÆê·æ}Àgd#®¨ûsP4öÄ빆"AŒÒC tU½ùóËè½n:W¹â8üG,uêPgpÃo¿¢o q`ëOÖ“R¤¯³ V»wx°ëBƒƒÈ{3b »;y-yŒBÉm±Hwlzq!ðø=&ªÈmåuvN=¾ 8t®ènͽçR{o5UZA›3 }§Rês„FD—é Y†£ íƒçìB9¥/!Hô=À üÄ´h#`_ÄYO”ÊÝÎJ¯øú‹ÁÀ?ȨB%&Ä“-ü²¡IÖœnÝØbM³9w¸V¡Ï•¿«¢ЊN_ Tˆ»~wâ])®EŒoC§ÀgÕÿÖ†gЦy‚E© ûÎÅ5&íì¹!®­àÅ*(ahƒÒûrtû0YÐÑ…!ÁL7öì)ȨL» v‡¹$MC ]jjO,Fj›†‘éå︈ÍGyv( êY;[ËnS§ŽAòŽ5Šá´¾B—¶Še¸J*‘„ —z/yTå¸Nå´!ÉHãû­ ª¹ZÌÞN7¿¦\˜:rF±¢’ÝóêjàœBUŒ\!T›ôt¥M ç §Øª©‚ÝíOƒ÷¢p_"&bB¶òVˆÊGl]ÝîÅã‘Ço9lSå to ŠVÚ „tc¶aõA1x”ï:ýð¶ìÓÒîègÁ¤®,̺F"¦ÜéeX¹?v5/MPÞÒéºnOÑwåB}“‰’p䦸y­”Hyù°[ŽîÄú«E±{· (þ"7€úvItEV–‚®) [÷Í¢‘ŽåœRØÊ´Vdß…"UxÚÌÌLNÇøëM¤ÐÚpC;7c-´ý¨*+G(%8˜”°¦» ”KÌÅ®÷«h¼&Ò÷ÕÆT»K¡?j±R£Þù]*À10,Û¨§5zsžy,zÚK2ò, Þ!9ᘃîc†hÀòè·ŠLj)¿3ÃR¸zhq¤_&ZqÏ(šWÝwŒÙÏå¦Dì´~îÚ#iöý†CEO~Ô4œ®žžgAôXV4‚ê?{½!‹=‹bC¨+v,/ò„s7½£{³KÑ-›€+ÒPýÁÙðI0ø=õhp“£Ú2œ‹w‚†›ãòî—¹÷ôãÝÎ!]`ÔK„¢ÏÆÜкt*cÆÆô“J¯ÿµ®9…O¡ÂN©æk”°Yõ»½Ž§¨ÎvJ ìÖ<š]Am1˜gç sÇ¥Äl¶›ê‹el|Ôä)| Bï¶eÿ3ÞoˆÖë  ÐIÅm>¦EsÜÁ…gÝF ásHc©††€p„UæÐ¶0ß3q]ó= +vQ8hÿ&×ßÀk mï-RÇ  2¼ºµ˜òË Kœüžú8ÿãb"f-°Ãbë&E.å*Q™ •r7&A}àÉéÎß&tÈäç¸Ù¿—K3…ï1ÂãiGn#ÛyÒa,Cf{÷*#vÍg_¿@K¬ÇÚü¢)Tòàî˜ì #𤌾è!};Ýúwiž<†0€*lèù«?^]:¸ Ý¹R^I¶GÞÀŒq¶I¥?·5,N0à,\ûÒÕÐú{é¸ò}QQýg²ebnÙkT!³$܆¡"I]¦òD¨Þ„ɱ]™.uÙ7¬}It¦DÔìp²âÖ~ùá{úôc’S¨O;¹~}®-Ð<µoÔYߘ˜ºLÿµMÍU­ôA¼ÉN—Z–+Çò®žÅç%º/ 4ol¹áRAá«¶š €œ?¶F¥ÓâÿœnÎýò]DÉN½ãåjö:J ,B›P9@jdpòE£ÛæúL<¿ÑÑXqy`£rcLJ.¸jU+¸§·£imOa¸'ü=ë3ï­ÊöÀâ†)6WpÜÌ“ƒ»xn:sܺê¼vô-7ðäÕ’/kF5]ÕGÇoSwb8JßÁqéz/¢{dÙâs ß]îýBø é ©‘™‰IÉ“ Ñphg Ï›ÏöªWì)ñ_¤&¥Úòj€ƒÚ±WÛz|k•óv ¸íÖR¯–™ ìÒ¹œÎÆL`Pù %p@]†+ täÏÓ?ŽO{%;ù“ÐG£¾i˜éãîñNÇhVÏ®» ^½Ž«~HÅ,M&̽E²ölõÜSô$…꣓Ö{ñáÞòØ:>‹jKZZù|á™Ã¬hÁ­0ÄÝÏNR^[ J)’Hò·VÚã‹aËîu îo_…OZ°Á”Χ׌Ì!£:ãbËSbØëCpÕP&Óm¨šh6§o: Ïæ3ÿ=m¡¢§+‚¼ñ½^V[Ö×ãî/jûƒ¬i§˜S`8zÕÖ!wbYª!‡É/{|çòøMú˜K7Ui­²í{ú'%ÿ˜£#fœ$ù ™aŸ- é]Ë `ìŠ;ÎøL˜ÏnnÈÀׇ.>”^Mh¥•NaÅ×­R‘±1'ÕŽÉV+WÒÙS%|w*dëh/»ÞõÐáÖKr陕$•½“È)©Ð5û™¦5µIs~øúŠßÎêäûüE²EQŒÅyßµ$™ÚçlKþp˜ò8%J–Qdƒ©/Ïé_¶ûµd¬”¢üý¯O‡.Ï,o«Àš|Ò©ÓfŽ~ÑÁ }OþTDߨ¡T#䉜9*ð±B/¯¥ÍK­(hn¢y$SRVÃæÕÉçýj<ŠÄpw·?!oêƒbë¿Y*6‘â}¥âœá˜z³lL‘#™*GÌ·¥Û0V³Ã¢§…Ïâ–Z>c6‡ âá#ËÂîÈIYY>~×è8ûæ¹eÌ•O7[޾;.;+(¼ŠÛo©•hŠyäõ3.AAs15R‘—JÍ-!`ÑgóA¹ þýz6Š£Úx|ìV¤ÂWÙY!*DÃNVï4H¿"‡ÇÝŽ³Á4‚îg`œ²ý•,õòÙä2Ñšü"ԥΣWÙUö\ùÊܲըÈÒþèD¢h!Älà:ûòìÔ·|ä£ ÃŸö¼Šº:ÄOlÀ¤>’0¨Yö$G ¤mÖÄŒ´AF¥—6[”شٯsŽ8^ˆ ‘8X÷22ñmÌ 'Þ*¼Q|…¡RD5~ Ãññ˜‡ö£™ì¨n#Îxhë£`dLæHÇ<ø€7ñÍç½)—×-:b½NÏuÚ 6œ¯´e¾uê^¢)†®iÓ÷¤šQŒÍ¸¼Ù“8oÕÑt³"Aš©3´ ²µöl•ü˜Ä )óæ­1¨íÃòœ/?‡MXm¸c‘WÃS!ï'W´RßYýCÝddvXTœŠ{ükîqÅ(“µ*ô•™O1•…Ê3KÒnÙ¡Z®ê€5^­pòZùŠ™§¶P%Róç1EÜÝ‘TÜ#B-Õ1½©÷r£8Ú,Jsmµ b„’N‚ŽE†u”BB‰×Ðñóþ°Ñüî’û­–‚„fÛdþªOp{-ò®AFQëe‚^½þ,w÷¥€ÍÔ|ÚÊ hIó4U¥šÍ'‹j—ºjHso7z*4†Zí(ùÛȈýÊsGoê9^ÚiÕI3*Q‹œ³?:{‡KD1%35Y~kK<ÛyÃÒ'ö>L–ol÷ÂÚþr}m5ÄœW›L°ô¢ù—ÍA¦¯Gš¬Ü’´£üYTj@b¯J Ý^$˜ù<#e•Z‹±dÂÙ«÷Ž4Ú0Žž*eÝŽÔFç F„-âîöö{+í6—²ATÝè<@aª4f¢æ*âB€¯c/ ÑäÍD.<~ÅÔ­§Ïføè”ÂYçƒK·öí¡C„©“{’1Ù衉Œ%£h7Êððl1Ķñù+xé4×)¤y–j5 £§ß³û¶²PþÅtì…oÄÅ3ÖÚ;CÚÍ9o•-r7sl (M¤|¥Ødu×nôØŸdFÒf6æcc^pø6Ý!k×–(»Ìâëq:E¶|Ë'ÂÕË(hjD@‰KÍwÿåP"¤áþOÆ“+\2‰ ƒM¦…rÄtŸÓ|YÝåæ¡“d&Q”˜Gûù¨¥ðì­ve%}Te~®zk( xËä%±«Y‹¸Û —þøgža ×ûx²§¿DÈ­äg¿¨.¤tÊaø$Í0BFýüžFœ…Ò­¥gíþW½ù†â)üy0Ž<°)I+~þã¡¥Ë;O¬jÒóÜÞò ÿO&D=!´mdé(ê’“„øìC©.ͱž¼|òr_#,`ÞmÓ£wú`ê袤Ÿröwn•NΘHòú§ PãóG²‘;Ü¿þðÞ_7˲1‡A#i9XfPBRv8H~î³iæl±qJbœxúŸÌOQÜw^5–‘¿ ŠzÐÚ0îÇê-ý™Ù¿ÀäËÿ€ ×Ö7Êm¨â4"Ì{ÉÎX÷g‰·ná¼µC ô{»Uú‘ÎO+ÜŒÎÀâ}T೓Ñß±"Š\#Û#>Þ¹µ-«ÀÙW5erÄ3¸ãÉÇ·vD:äüiü:ÝC‡ø½Öá;½×öâ Lˆ‡j;È>$öZüš…¿¦@`’[ Ešt1ȠɈ²!î”YÆé÷QXYmx †ÔOe¾TÈX‹°?|aˆKdèÒ`º­ÕU»Ã´n2ûòDNÛƒ©tS_ù˦"9µu£ÑÁ‚N7ܨ­Å c^ûn ‚Á¿ŒjÍ’°éZ·þÝ?°¤ˆ¯‡ISÚîý\þ†Æ1dzQî^ô Œ€“Æi.ö{;íD±ÙuX40‹ö`©‡·JÍñ5ÈÈWl$šµùÅZž•Øê²öÂû⮑;êeMMÕòb;ç~á¹ë|ø?&yä%G!³NJH7˪²WÁéq‰’ .0$–I‚ÚçíɽF™‡k¦×¾ é7~ÂdìcJuw(®¬ÅŸ–ÿJz‘<¸9l™²n²Öç\ ‰è~¢Ž€Ó›‰ Ú~À°¼ÍµÍvAæw wÜ@‘SÉHèÕ,ñÔá ÈêÄ“Á´|i7ë­m LJðj®± ¡ nWÒ&yú¡¼rÜ#»¼ã¢÷àЇ°-£C³¾m8º´Ä\«ú\Ôæ*ªu1±S¨$ø-Â=¸M½BœÕ€6 /ø¥ gbý¿Wå±ÛsÖhKei µfYºCÑPÎa?ØÎ¼OÑÿ[‘X©eAX[OšdÿW¢+8‡ 9|ý&êæ×Ú/”ówìP3yЮÌG×Tνþ"c;_˜–QPJMÚÔ—m`ÞàßÀ’^Ü…ŽòŠÂç½P¢¢ÂeiX(5 TP*%pæ­t M‚#áÏ%Èý0—0 ¥äI[2š áQ”¿åüÐmܶê*¨‹q€ªeZ¢'‡%ºÞ8›òÁ_ÄJžuê9µ‹œ¯™99HW$ð‚4ZØäÎ9^C€ßÓqúe– Û`ùêëg37Iâón‡Ÿó-zž ’ÃV²˜ôéojrÞZ³NÈ}”«]?^Ôè9ž(8TŒ`Ú ?´YÆ3AÔÿ“Œ%¡r†ˆIãƒÀŒ.Ú¿Ý"ûÇUAу d­²6E ·~ð¾èY`¬·j ²¹©Í¡ø*èÛp/ïÓsDºt´:*Û•ÛüÝŸ”>ªf}¨¢×©`eV]ŒÆ?HU" »„òvßX¸ºËU:ÐCEy„W ¿‹Õ»©zfžnOØÐ_VS»¤èa)—ÃÉñXœ"smª[pˆº\?¨Ï{™]ýp‡-ð§Õ2ªXü¸ÌñVôœÚ1ÔîFrF ­$dÀ”O·£j˜£.º41…MêÙ”†]L†ô$í¹q6~«2ˆâ<ÓˆPÏmÕ¥aüMñaMPª«Ÿ ¿î†0‡±Õx(8£ÿú¶=ªÉ3tÅê+G³WÞ³æ&APÈ—ûð»õc…#5×EDË=SÉ0»ÏÒÙ·R>§¯ûvP›+Â7êi‰^ËÔ!â>pÙmã% r›n„Gs7ª¬}I²çk„¹hŸ>8…PHé’GfÞ‡¨Ô¡ÛKo¡ø'ÿû–ÃÑ&)|áŽËñÒ‚ýþ@Ê}| ÎŒ<º"ºg‘†4¬LkFÉ!É‚KÁ‚†¬CUeøº9<ƒ÷æ6¶±/ÔéH}ü¡5\[Äý??’àiWác)ˆÔ;Riò=vÞÎ[?ôÃî[?[¢ÎÎ:¡–¡¾k+íÁ™N À$YÕ1î{-Û¹ÔZ³÷YåQêp¶gœÁ °ÛÂ; E·ðŽè\ã^d=}ïÆÒuÚF¦É³†¼Ôl_™ûÝÁá1 %Ó¬®åS—¶uîx’`*@åØÑ¬È¥­qÇô¨P1@¨¿³Û†š¬îL›—ï`ÝoŽ©P«yÓsÏa |}oÝ'Ǿ¢ƒ 1uù g` üšn¥Æ}j×4EÊ3haüæËQµÁûi…‘b’ÆX7úµ]À& yÜ$ ð%²zÄÓ˜Ò ¤‹À²uHRÕ?üX‡A2]aæ§Ï'ýF™¾ˆÝ M[?wþ/·¹v-œîE©òÙ‡A«ãý’S$–fÚïnè^}$1ÏÓê(ý÷î A…BH¹HŠ)ö^ý'^ `À6ßLCÏE®ó¬n8]2è>Ý7PY ôƒêoŽJcgŸ¥²¢–ë_—µ4‚ 8y!¸=ÁÄ‘÷º3Öã8 ÇDÁsQ¦CEæÞŒ—ýió¸.Ћ2ÈÜÇÜÊYäMbZ4>ŽÞ£Ð…žl³µ:B@J4ÛH;X2ÿŠ]ŸýÉïdŠ¥Êó¶6Žmä_„oõÍÊ¥iÚd/cÚ1¢«’ékXÓ¾öºçN æšÔÅŠ ±„<¼:KÊ‚ÜÓ /ý®^†w€öññ1¿½¨Võa™6ØhãvíK?(=m Øé‘_A†þ⊠ÛLÎ<ÍdßgQTÚ²ªÜAnב?„g`kS£ô~êcÜ ]Óð@>*À.A˜óoWVVô¬ ©¼! "JpA ›&Í ò½LвÆaëÂ¥O‡^»Uuk@sÞáðÖ9%ÛüG[u»ò7´£¨®f¥2mqƒ”8j¡?Z÷¸‘m¨ÌD¬1Äd“7GO‰Q᜷×ZIq¥àƒ›ÃíΈêÒpïz¼_£‘(j …aS?ÀV×-Й±Ÿ·‚§Ÿļ~¡®eô¯ ì!\_íçÃøY›ÄYׯչºÞ†ø¡æmãpé˜àyŒö ÷D;p‘K€Ý?ÓÞ5Ñw@Å—0Ñöd/ŽGÜ(1ˆà’-_´§û·^‹ ¸"]eŽ`~ò¢5½cÜ[hÓi0#¶d,ôÞôÌ„*A×CY{±«wd©e0B=^¹ØE™6ò†M‘¹Zp¿(‚/—ûñ³ðGWÚ;¶¨ËúXW &r×Ok™]UNøÀ5Õ} ØÒ½ XÒZ¹Õ Êù¦Ø)¶ ô}Y´Fµ°þ·ŽÚi Ùiy z¹°·åc’Uo(j,ªŽï‚2ÛK+ú¦ ŽA›¹ìdÇ«I$bœTC¿korFJæZèµîòJ}`¢Ë¥0 üŸMú,È x@ïʹnú½^Þ¬ÙV‡¨ã?e§c ›ý _–ÄF¡Qt%¾ž ¸iñ& µgF"n:IíSÐÂè§µ‰šqZvÿ¾qW%1Cúú¶0ʬ¬¼Í :¿µáá^¯¡-ÝÇ:ÎéMǘ(!Ü«]£’ú°«ê ¯à(¶ºŸÛèqï)Ç«ºuø&I1–«šNÿ¼„Ѿ‡bESñÀD&£øÝ®æ½3vUI÷ȯzb „ÁH)’a™ Ì£_ÃhÜå„V$Ò¨z°XuÝèrئ¬§zEƒBˆNÇgèÝ ð™ÞT}îðÃÄ:C¡Ú§R©|ò^Òõ:Ûè:tìcìÎMu„;"±}‰ÆN~³îÁV5PÈŸ4%¾Ò¾"¡ º‡±*—D«ß[Ckrp™~À2Ù òõCÈðÕ­*¹¼ugATÜL•¼ó‹QýÓ–— ”¥î¢Õ;u^¶\ËzdÈ ¹¹€Ôºú ã´“!1> ¿i#Nkëo˜«Raåî¾ ÿé<·~JC†/À×:øÔfYw{űw¸Ü‡°ž9¾r–.¶ñœóö8ìñ¶Û·ær¤¶7¢ê œódÿîD£?  Qá)d›K”%™BI5hÞ0Õ¨ŠJ±Ý”_]rÃG¢ë"vq!ò/À¸tuÊÔiÒï;¤ñ>& :¦Ñw¶ýûU$F]þ}WiâEäÿ-¦}uÎC¾p«=•/ÿW©ˆÀÉè[Ñ åFè­»¹çÙªµ†“á`{>9Ä;½ÉÃÄ1,>.˜#Ì/%Y‹ŒŸ¹#òÌ–€«t,37q®§ðDZ¬ˆÛ&úX±Ô°b˜%:ëÑV­?Ëch3Ñ"8@_ÝÉ(y¬Ê<Ϫ\µ=-“|(Èâq8/˰] ¶Ëªå—\Î_I®¤~“ì2)d‹³ÑÛ¯"©W~vÎÉdI›gKw÷—d†ÈtPãÓ¥ˆóuæ m@h éXÛ%ÈdWg´#°t9^±·>„¸;|U-¸QW9ˆ–¿b­z{œ–Ú]¼vžéÜÅêo”ˆ÷5‚óéáÚc­·y˜£]ªÑW–…NŸÌñsMÌ“k„rT&ó÷ x²œa<ÈJý¦ùègSªdwO¨" ¥ šýœXÁUè:ï×aÆ[S¡57b)x» ¯^FébøõJ¡>Þu3„yá׫$˜¯C—_S²Ü}OŸÿ)‚RI•ünÿ…ƒ5ô,9¹O룠å\ç’œ:0“¨ˆÒ¶‘± 'Ù2Í¡v‚ k‰|Â…/y Á|Þ4z庋ÿª~¤K”ilPBIÈýÔÉUK“H!MSn-¹§˜Vp óì¼ãŽªŸx8–ðx¤-%©çväGïσëH墴>‹Ã–F­l’Õš‹Ú»e p/¤–ÔsÇ®‰ŠxóJJ9¢'ÿµH 7½V-زӢ¿ßäë“È{îpåhý¢Èú;\`Ø4ïþš¦õຶd&#¢µe¾âh6¾‰ôTZ•‘˜„ÁWw57æ&Mµ4._»Fþ—! oÇ™Ù@ZŒjRárϰ¦-Ö7d÷Hßüà¿]i9‡›uÌ ÅÁ¤Õ´°¦”¿Á 2°MBZœÔ€—ph´ºë·ªP® 0ÌÈYo»/c7j!6aªz9+®‘–”¹IÜÚê»Rhã¿'\΄ÉDj²} û·Iµ Cº8qðdsÍÑúˆØÚ’ŠÇAŸ¨nýŸ` ÓÉýÛéÇQçk<.Q“Wë†ùÀmnI…Œ@Á×ÙÍL¯Gâ¯Aø‡ŸMæ$d½œÚ“5AÛ ø" Ô†š6é™Ê–qxBZ8e*ÇRó5¾;–}aàí /̾½ZMÏ•B§©‘ãUø†ùL±%;JšJœñ— ¦ØñåôËÓ¦H/Lö 7Fj‚»ðôÛÑ5”áPéó–Ï!èÙ'-Ïwlä\_¬ñŽvÂ4©¤†f;Zeß%šÛp»ƒO}Kç¹Æ–bQ~“†3©°Á9b\,§l|ý—`“,¡Œœ}8û|^GÛYê·ZÏâT¶UóÏ@ìKó‘û?íÏ¡¥]±dÇ‹»Uï²RÀÁQ­Æ Qíö› ]jƆâõvÅæÃ]Pº®ö¨Ç€=è{‡uëH«jd¯\sLz,¦(ÛÞÌ Öä4¿5!ÀtÏí~L”t†î¬Þ ¬Ôd Qp#ÑtÓßÃâÿ¦ çßA y$Ì?ÄKû´ÖB2¶´Ò^®˜ï†3ÐÎOÅ·RovÞ”iޱР†ä¡#=Žfª)SV)èÅ—=w)€ßK‡p Ù#0eÖ±ñˆÚ{ÙoÊX}Z‰/†Ò©Ì,†^ž€þ­2@KÞØT‰¬ˆˆiEF[>jÁÉ VZë7O/Â×.ÍÆ|À"г+E°K¤1¿qrX(G›•ú®ùR~ÄìMˆÏLcb’äÜ©–¶àKž¸„¥½(LÀª ‘Òi]Çô $re>¾%_‡œSwx>Q³e3§qÂã‰sjèÛ1À&;ûX@4Ü[³®Ugo(§Ðûd]V†"Gt/šÔö ßàûiGGÖG^ÍØ{…ýi}‘®oÁÝBòs·4™ˆá =Bï+¿¥Ÿ„B9p¥ÿ)C<•@ùûøF†T5‚òÇÑwÂ% ß¾t¤D1¾Ü¨|Í»ßOÀÕEf3À]Š]¥Éȸƒ”­#_çë[%ä7ªàìfòÕ°?ryÌfÖP2<ódD‡´·Ê •ê)Eq·9„O7 ùª¿Ã)6 -€}7‚Ö YÔIë™’)òWN{Ç¡´Ñ3W6‹,è¨xïÎH¾F)îPUá¬ÐãÆfšæ—ý"Ù©Y³©ì’EÔØ\Ÿ]p’fÈâÚ>.ì°¯Êߣ ÷%sÇ@;D‹qHw¹Pã eÁù˜51Q°)·R)¨ÈØ_¿þJ2G4Û3È>×[<¤„-ùÚ™õȉ©¹É™^Wÿg¿Më2®Y¦£úÏ{þ[xdâöÏšž·RVŠÉø ù¼¼ o‘ÈUt§m h Mކÿ.ÜÌp>+G”ˆDÊr¼ÕAc¾½­±ê4}Ìum^D¦ìt3Ðr%…máî ké´ˆ:…•´h3‚5°m|Si®Èî8ÂN@ØéÄoLlÏycÑú ?>… eÞT:þS¿+ûˆ`¬ïC ¸‚PôUã˜j-er/‡OÕd­ƒ^4fýq™8‰:9.ÃGA¾ÅÁZ¢\aΓƒ.¾ ÉÑ“Êô̰8ž\\úbÕ¯`Z`Z@)#ÁÀf ~ùŸ fª@W².ß‚>¶*´$ÅÌA,¯A…9 зœÊvŽååÔnõ ø°òÄhèE)SÓ @¤³8_EéYh3¾v­CªÐ&Õ÷Z•6ÄçéÚ>vÚïÞ¬¹…ø!ñm­I¬€î·V+¶ÿ®²eÐÛÛ@}kR|3b$ç-« ð4±˜°ò¥IͰJàî/ñ¸uÁúù!Z£; ^†§ ¸Ýì`îôp¨ûÞcZ©w°N*ÉÙñsö•S6çM|U.h£ü_ÁFxð?•ïX ý†V½ï‘mo¶â0NN÷°ï=OÁ@¹2uý$€pf,Ä–ŠM!}mG=²ŸOr¦T‰+V·üüHK¤œ0Qbõhw ß÷X…y,³p<ØOþeÅ̇|¹;B½o“Ï©+Ù‘·ý]Xüm5¿ÞæÞ”XT+*Mò"BG­¯Îeêù±ƒ…a Eœ“ÚÞf”ϹF 8_ÜIõôµv+ éw›xž1ïži%ìȆ¾É"9#7{±î¹`  µv8$ªîÁ¯B³ºÝ1ça|%½ÅWÁ«z_ñÒ7”¦¤ŠñŠ^­¤üUx¿t³¸AÉûteþ÷xÌÌžÂùJ× > „˜|âïXâÇl7þÅYð,ßÎOô»}§`‹jzëB(œˆó_2‚Šaqî"ÇhÆX z³Ÿ¤Àë‚òÈ{[­2{ÃGIx°C-t†þ¬sRÄ€‚Vñ¶Ç "EB‡× HU@zA<çþ?øO­vëòœ`š|³7fçòµ&µ½,SeZ_ñÏê;};· š™"0‹1_˜>6’éä3ŸŽ+h@í~ÓmcÈõ@X‘Ö×y•D©£«„ÎìâK¯ûJÓ¡Ø¢YFN–ôÌRtÒ¾ KÜß9f*[B~‘ ²¥”}¶–ð\£¢ãÊ¥YWQ6äÜFP¾LÌß®ˆv- £mtaKYJ:(ÅØ9Ö†R¼€–üÚŒãO§}rU8L0µÏïÎ…€@V7†zpdcñ«„½ÜŸÛÜ)øWèKªæ< ­ÚåbبXË8$ßÍ^ÏÉÒ¤[rŒí²amïÀáÎc õùB$ˆU5 }Vnîå‰<¦*ÔûN¬¯Dâe¤~|‚ª_ú/ZÐí’ è37’oq¸þvIòD÷“ µyPŠ[g‡Óæ-q©&RÈ¿†|<¾U:ÁAîÁƈ±,ˆ#¾k”y‰"„b3d€¿ʲ‹Á$˜=K!ffu­c›-ýqÿëÑúÓÅ´“À¥xáÓ²iZßÀÔÿ‚«&ó9’®çA›‹Õþ$Æ£Ùvøo™R›M½&8EÙŠ‹"Ûp/`µvÛ.Í>Ðýü@ΞâºÛ"|‚ÃmÌ:±„gå_lU®Y†DµÃr ðöÊ(@ä(t+ùzTOX&ð$\(ï,˜RQiöba&W`ÕI.÷pÈýv—êÓ>‰ä3hV$ôkybˆ¤¶!6ž5IÑÀÇ¡ÿ·¨ƒÖ¬è¨ÚòÁVÍßµ¸[¸@üš_ôS÷§9ï°½%§ßÕšªLg²hp… Ûæºk¸‰ #Pê4Õ—ÀÉ2‡Ïé?L gHG7O7›ë‰žr ïB*X7Kn4Ô¹óqO—ö¯Êßù=zKjw¾…á¤àmÀÁÉÔ©òƒÇâ“S9^å€e&1*Ù¬¬ìC\ˆiIyÆM¤z¼Nü_ #Fu{ù¤‹ ñ™1>wp+ÛœžÓ=pÛZu:Uf €Î‹˜­6²jÈ*7ù ÿÒ;¾Îá’ÕX¿gþCâ#ùsÐ*ž˜Yf:1gä&º= (ÆetèšøSpÄŒz<çzÆz˜©7ôfÕi1û¡‰èßï&@뀤›$1LócÛÑRçÖÄÛIAvl%æi Î}£ßªJ¶¢f%ÓÐýøÛœ·SÔ-V¹L€}e=~Ëá·üeš¤ ǃòŒÃËvJB–âÒ„š ˜¡Ÿá¥Éoòåk«¦ ŒmÖkLæcí? ßï<¥¦H›ï£þå–ŽñöbïÒ-n¹q¶ -…ï¤èîÿvpµõñm3¦·³œÐá+“0ÛH’/7r.¥éÐ*K)JÁ%ÛS©4­qŸn­z Wº×Qâºþ¿N„´Ûy*~u1I\"Á~¡¢0j.sË;ÉÁy ¥`â`œ%E‹FfèQâºæwM¾B&£uÜ ¥›ÀÜC¨Uù˜ )¼ÊœÜ“Ul9ž’w/ë—ŒýMûJTNjç`¯ŽÒ©Ä‡·VÍüG~€ÈÓ«ÉBmð­‘d+}­ÃT: ïùI† TZ=.‘m:5+\™\AFí/mNl=pS+o*¬&J¬˜÷P\]Ã\t?c™G›è~•jUµeñ—sUVÒþ 882çý\×GÕNp¨”Üž‰+iKÓv£‰)eâkÀnì\ÚûÖ §Ü:¢”{ßlF³ðß=âôÞŸ°–Ö†'…ËH„”³(¿?ÌÈmü–öwh£8™‹‚£¬¤Ébç™6­µIoÕT°z“]¡×À ¹] X_ hm÷÷) Ç™·?ûtkøÁòÏ‚ãÔ*É0[Rª Â"»eá¡C¸7iÀÁ7ªD·AõúÖ–µ GÉd÷Јÿøf´äÞÍO²DÏSºT³+¶4ühOŽŸ)e¬]QÊ8ÏÇ\wÚ૸+íl d“–|á5‡k¼tìS¸Ó¶*ÐgŽÌ~ZI9Šf‚_¬æ=¦¥' %µÑÍpl¥³§£ :ÕºÌöˆ?!âàKd ú‹8d‹:gÃÆkc iâ­.ì²BˆÊp£T2)ïbÚ— ¥7œuûÙPiÛË Þc¨'­àíZX²æuþ'SF"ï`_]¼»0òCä¤ÉXà0_ÿgk¾Ùd8ï\òÕ÷ÀZ K¶®6‚Â'­…ÐènãËjÇ8»tš%@v¤CÖ7óEãnlaòÚ ŒáöÚ©õ|¥T±“\ÙWIÓ–ЄL£v“Dâ@$’ñúѸ9Ãñ=h ð[A0ó¿:â7Ý?8@„,OL ú³sŠ ©ÈŒna«$xØcéú¡–*ó’ç&|½Æ­æÆ>y39mBEk0”XçÞQhFhàòž¨ÖàüSì!î®r_±J†5GÃþe›NYƒß]Œñ Yàíšd«kí¾›B¢Eñí WJ' M\áÇjÕ–zT—öAûêÂÊ€ÈO2{"dp«Õ_X!c9š‘Ä*Í‚¤„:²v"Eyµ@LŸóf~"ö/»t´‹?GYªY2‹ß½löw\ ÿžkÉ× /jTˑʑYüô$˜,ôæY¨ sˆ›BȺ÷¾˜'wKý&E)ÿÁJX4â‚ ‰ÝR¦ˆ‹¤°”%–¡–z樫>Ö«j¢©:aÀìa_R[V:[Ødq‹˜™zEû¥l}&‹&˜‡!é‡PZá… ´Ø5† .Ó6F˜‚¬],[&¾·Öè!ßòBãS‹M2×úÊÿ®ƒ]CÆ&˜×<4ù’ÙlO_&üñs¹÷ÿ¥Â–´¬·Öq5RªØM|,“7úÅ>4„a€o÷™‰`øã=ŸÊ¤nTá!SÿÞü·Šâ¯µ•T+£_ú.ø^xH®Âœ{qt;bf ^¬¶å>&s¥r•úíŠ×f5ß ¤Îu´Ñ²iŒ-˜z ºÀfQx¾Ï˜½®˜ñ‹o]âÆi'EùÉ€œ¹k¼ÌýñsàCôë¤*a¶Û—=t ÒxÛ}¢I~$}ùq±k±¥æ¨z PMw†fZ•“×ø¥÷R’ *.a ‰‘–g¨TÌÁCbe\K $õ˜–oÿ8‘i–Òʹ"%IÆÓUrq—õ§{:λW<\TЃ¸}õèN™lá»kÊ Q® •›Ž®[ºJ¬áÕì6Àš©¨ËB76(!°é“ÑBnƬÚ1‡“frèV“”g§)=¶b”¾)p¼ŒRL<3úÌù Ö^ö›ú¨{uÀµ ç’Õ–Æ+ZÑ¿Ø5´=y„òM´qjºx.Ь™_HƵÇM,r§·7ïãO»ÕÝW ™’´Grc¶ahÒ"è º+óMìßñp0Òi;¯s`Rdªì­÷vn\wÉ’Í`az:¥JD0[ŠOl݃•zµY0B룚R¢MàÇé-¤qdVÖ6[êŠyqÃdFÓÀG`àÑ‹'hs; ífÆ€Z´ô¶‰æ¥m:TU’Õ*R°{ óUñeí2½ÓÆÖƒýy8:Ч*G7|º;}$œêi[ï_°‡ò*WO‘ª;š—Ñi6pqÄz𠹩èèqYõ'HüÔfËmãF;G’©*:!ÊÙÆ­]½ýÍÀ¨SL©­ÎuVÚþm4l“ÐB‹ØF÷Ý£Z©K{€[sZØAPl·>Ì•œK¿6Wv§ã²dXÈÄKbH¦ëà"˜a¥ì„8Š;¶«ŒCɸÃ+µ@Œ7+XÑ`¢I`,f0;G†®‘öµËÜf]s áR˜CDšC\Éš>à.Nk¦tžÄC™Fj 3V£Î aÍ^›\ÊÖDª}Ñ¡­Õ¼˜6p%œšeb$“¯8àÅT3œ–lª›õѳ(¡ &xЇÍ?aP‡c'y/ˆŽr:²Ä$]f»ä‹¢',Þ¾ÿ3L/è…ÈW*~b”ÂŒ’jGoN÷Wöe’/¼íü×Ä{KÍ\`™MÜvôþAr¡dA®…ÌóFD²ùäß¿¿HU¼bH¤h þWHåá¾*Ž'‹pÆù jFRˆx}=²ÚB»ýô$-›•xš`Dp»';¨9 v4>ó6ÈɯÅ2´Í´Å½1ƒ$gß\NtÉ©iܵ-ÔÃnòçF-¹¿·Dq/è¿Þ ¤Køm•¶w€îsÖ«ðLÝ@1ˆcÈ hâBR×Mñ(ÏÕçÝС¿RO"Y›5ü»*–x˜ž}Â, 7Bô=¿±„Õ³/ˆ+Ñ©ÓÐßDO…£ÅÀÐÿË2wQ¨Œ 4ßó”ÀÈ?‹'‰¹ÊŸŸÈCZÑÝ·†ÝºT¤â/‡ÛN¢¶ÓÉ®‹FD"7`Ù0!±)Á-…ùÌF|V-ŒpVó{-dL±ÈÄœ WM&ãµRRÊŽÚEž¤BšØàðsWH7z¨Ù PvZO€ºæ.[0Â[RÓg]Š‹øE‚ñ‚z±ˆƒÞ7ý\¸Ýò„û‚Y¸Z¤:ê!eW}Ѱh8Õ­©2âgsô˜^$%·jðK1R‹Ÿ"ó8F!ƒèx’ýüXžRÉÃ~P&ø-³_)6îå<‹Äµqj£¡ïA/wF—t“®³\ˆÐùÛ âÚÙ­‹Xøþóµ—öx .jïuŒœeK¾ûö¸†Í72.õÃŽš8ÿ= ¶Tn¡»ùLú@«ÓöWIvR÷|;G‘¢é%§*Æó‡>g>4ìtÈúæoßNVfš0"¸!° »Q·h1PÖUµŸûj|Aa¨6c¿tÏO¶˜²QÏÀ¥¤!^‰%V‰Œ”d |Ž7t«³B=ïÕb•_3%q@b˯Ï#?9|ŸIiÍ7IÝ—Q^ÉæÚ4ý:¦ïLK"ÑM’ZÐ9“ã›Øcv¼ž+6´“®ª0p¹¡Ç,Äe‰DzD8Û+.ŸIÄy˜Òw7Œ s>vÔ8Åq¾6sÉÔâÆ?±vŸƒC¶k4rВ™bxnœ)@±9–íMë=(ŸÜí”V²ˆQ5}©GN‰“F£­(àÜ"x\7PóTA††qr­$2œF'H{ð`~„_h_ã E„„Nò)yá*ÃÀfÿ$”Y=9-Ú‚þŠã¿å¹É˜‹bO;×Â’ ð9KÁiéCܹ™ ¢‰b”g ΂wÞí¡îËÛ;Ò'Œ·™³V Ø¥MÇÓ5˜LÕÏqÃhíl?èTp‚Àh#€œ£Ê¢±Ái½Û¢ôkȨö‘ýG1Ö:oQ¢¼·Ÿ° N¯dùœõ“t†9ëkð9‚ÝÕyGú=_&šDÚï¾JMÀAáÑY[¦ÔV~XNýv<¹/Fò›¼ˆueZ'NÁÐ\EU{- !¥¥±êàq[¬y| un$­]±¹å™BÇÅ +б»6^~¹W•u`ÿÞ±å›cçr}§êtÖHkgx\’Åú¥pàæU¯ú›3)U_”*’=¸×-i;Ú²'¾’“÷‹´°Šéh³ÑÌCR:‚¨|q?¥˜ !3=å Æ:Φ—61ͨ¥Qg0=ôðá>c­v=+þA®®Ó/Lž ¾—ü¿5§ÒÇÖ†KcØ|³ÙºÞõaëP’~tK2@¨ 7f•ôsqƒY²íëéhâWÒŸ,þZ5Z&¢L+Faˆ ‚[Ú¤F)f¿ËŽ“˜$A~b>å™U¿À–ˆø`ò –…­AP¬(˜S“%ao–I¡•™ üëùÙ‡e {ªA ’%ëèüo§×ÁhªÇSá~ª§jÉü{?×]s¢&¼Ñ˾a%ù Ž!@¥ÛIÅ|¾Ã'ülªðBŽ˜%u0P&;íR°5ä AÇ¡ ûJÆÜkà¦ki5 !í—Üv‘,wŸp„Wù½äJ¼ÌÇ¥ë éZÇ¢ÔN·Ìãvd¢Î3ºàñ=ÕeÉ‹Ä-‚ÏÎ(…I¯~,¿†TÓ.«£›FZ5Év#ÞX‚¾#Þ¸+8Óg"›¯îp.èžšúõþH‹Š5›lܯB7à•¶ibÜæàÒ ͑߫Ï-15ÝøJ5]žŒü¿2Õä šûE"yžÈÔ¸ ÔÚ"‰?ÿ¤z£êNBv]ý^– xñw‘1ì»›MÆØ+2 tãd& á®óWvþÈBa–5ü:>!+Ò·­PCbÌtY˜OD‹Y¶àPãÆ¾cÁØÌê?øHAëA›aJJ? >½H’ƒÀ§…˜=/mÐ̹û„¡µ«ÜÄNƒ9òæÖ¨‰c3•Ë·®ëì:ï áçô N³š¦‹œñÕãD…r}À €ÀÈõÞô<誣E 6{‘o`à³Ö„!—]¡¶v)0A ˤDT/Öcö¨ Ü«°Xaˆu auŸ†‘€~V¡ÂÜ6ˆ]¡AS•ñOÅ©ìyÌI þl” ?|bŠrHñfS s–9细`æpk2œ©NÔ¿ìñóŸÛ¦dØ‘ Ä#ÄQÓ‘Ì[‡!a ‰“|~€æ#&d\ž2„jDµ·— ÛßÜl£„„ÆÍùD¹u|•Qœê) ]¡üw²ée&â-a¡£|ãöc® Kšåq.rõÊ$ÿ.ØÕIoYý´¼}0Q¾hè³'ÂZÞ³¨`&ÚBŸcæÄÙ6ÂU†[ó ŒòãÈ™° -…k w«¢ôbÃ;øŒG¬†Í8r64­õlÒâ&æ-—–ýçûOýîØ9ÔR‡#tu…XdY§˜_銆³Ÿ°.ÃŒ¨ֶ׃žM ýOz, c@@+%h鈪°mœä¬¡Ã0ÀŒ÷ŠÒ k³ÓÝxÆÖÿ'D“9Ê`ÎEßÍÌ;Üž´Ž·¾#¸¥A üªÇð7Ø~!ÞŒRðσ›ºQ¡=•Q|dHÙXõyÀ ²ÉýÑe])‹|.c»I­vÅÛ¬Èû¬ÂÓ•aWáÕ¬ÓºÏSMðü ËÛ…ð)ý‰ñöðv¾ÙI`M‚Õ Ï×µã­q¥ú …y|® ÌPvõ2¨sˆÊRòeà »™u}† bN²ãÓµ.š½ÕV=„¸3~8ûÄi†ÌËñ?Œ†ˆ—8h>÷ÕjjbaeëÏÊ+JgZÛcj«»ÉlXÎlæØð­9—6½pnkÖË—ºcK3éµaKÚKJÆ£x2¾ÖͦɄ6o0üðmS;Ê"®ïÒ˜ðÕ} ÌõÊýÇ˨§zÐr$à:tó¦a¤`‘A-jçÍ\>‡ï¹¦1@r¾©ôˆ–_hórÛŒ„y„˜ö|"2Ï!Ý1—§Xéo徨s‘€Â%FxœÓìx%¥F.@’5{ˆ÷wˆ«W«%å—JÛ‡=[~zÅh”½îießûH¾p•bá¹’늾‰o¼ÃìñÇ¡ãr²ûù¿yíé©xÉÈ_/k1¢F~´šÓ9ÛòÅJŠ8D7íM³zÝ®äåÌØÆVFZõg“ =)Èu#õ?‰‹9!‚y »ÊD5(÷ì>ww‰ÐAñn,?/ÅÌõ3Œ³ŽËm8Fö.å…^Ï¢ä%[ Aíd'¿\”ßh þ^ø-ƒ6iM‹u/\U5ª¢Hß`‚s ËâÞZ–öi}ËóŽîäq#X^M•&†'ÅúGŠgŽvõ@8ÅlЖú9«UϯR-†ÙÏ:zzêœò¡ëÓç;jº}Lƒþ?û~Ë&XÎé“Mv]®ˆ5vÐíxÃýšÜVõ3©Ê·‡ŽKjU´~"½ÉEAèͬÞ}ûcãâØ"Äݬ ÓåPúVq›7&;²µÝòWÇíß̉Axz!µ²àváüîî Gž0WID 9¶±½w Çè^3!POcE‰]Ö»„G‹1£ÚÅÙýyïU§øí`‰ßËÄŸÛUÿ÷=ˆÛ¹Ÿ„ƒŸn‚0Ö«I¾Š4À¨ÁB€o¿`®¬úÇ@‘Y,…n-ý#fÊ À+·gˆé¥“Ñœa´Áf)³¦Ï Â[½š(#s‰Á‚\Ü}ÍýÉôwQ ‰µ-îϼæFõë #¨NÚLÜñn×éŠÀXiþ8è”6¤ô#“ÒX]¬~\@˜fSõ*­ÖCªÚFÜátÒrb•ppRÖ˜9[°4~ÕèÏQk¬øòFS’¹:Ÿ˜Ÿ¶¤”6˜œ)Þ—àÿ.|!lˆH!À¥¦×uë&BçaobŠ1g©¥£‚Ñ”«K3ÈùpJÁÑ NœRrZŸ·d…ºXDº‡Ye£JçŒ]ÿÏV>°²m Öˆ…5献JZkD‡’ûqŸÝ³ü$SP)¯7>F¸}Pl¿â+Õ9~˜wLï{g¢-£ø‚R›x@Ö<Ö ·¶WÕ¬/Ä` ©%›s3Õè7°ä5Ì"iÈe_PÅi×DkâéËbS†ù,ÿ3¥’À³=Ö]XvG¿Wü×"ÎlEÂÎ`ÔÈÀ†aàyž•>G„s3µ™¾&2¯W‰(í£ÉXƒ÷†­I¯ƒ33ë ¼K«JÖª“[Q*¤†vgþ‡ ÝYˆc žæ[â:›8è^¬~h+0™$ïÏÌéμHê½ ÜègéßÊY^«8‰:}3©…:X§pï,ªÿ‚pô@Ýg+JÜvÀ¹˜Ê¬l*/ÿĽ-7Ò­%Š;®Fò%î*Ã…(êL%£¾è’?¨l£]¨ 8Hýû²çÅî ñ=åTƒü¶5Êÿå%\ t È·Ûäÿº{N:מôx¡ž!1ŠKÁ®Å}½ äˆþhÍ'1¬=“)Ñç<¦æÌ€—Iù`h—ݘ)¸™Žß0¨mx ‰ü­D¢Ãϰ4+?ö{ 4ò×Ë)"¢ý7ô‹àÑ+D“à ¼êí £MyvIz7žã»›±vëÚ3‘ƒ^“‚O䙃ÂÇ_•‚Á¡Ÿ,nëPÀ’œšæTO^2ï©á!>Ì eTõ@B3ö{zð²xDO*r¿¥³žÝ>àm§ dÔ”ÏMðX¾Ñùkü“sÐoc}È«âRç œ9­,Ä~‡ÏÒ°{¿Í*½ÈÓ,×û×­q3éÂ÷MìÉú;ö1Ÿ³ÖRrÑn[^¥JfænƒÓÙ,äÑ3ïÚ_=0I´RqµÔv`êob`É­Y4]¯“•˜/„ºaÝŠ¾FµªD5íˆa CL¬Ê’Α®`&Ó‘^ ûQíª&$ïi‹œÛÕ¸ëöu…tÊßA‘‹Ì™ß÷(FvDc'Æß£Õ žÑRfAÕ 6[ÍÖv®'~c.¼©á‡xH:#:{ß˶£Î#t\郘ÔõèøC~=²(ïh($Ä\4î–0åC´f)³Ï'£¥°–ÈÝK„5ñ||]©Ãœj·ÝàËÿ„µöô~ž!ž…E2˜¤bUªÏ3* ,^ ‹zµ-ž«ËTb-ÏŽÁ“Àþ;RËâYþi"n¥?îz^âZªŠ‚“¢ÐÏ5dÆP5í0ôù‡~}´Ð®BÙ†7>˜æÍßïíöƒ{•=Ò!ZuDªå— FÿVëš4º”; ˆ9[lâfÇQÌ=gjAÌDñ)o+µqÒ<мc·¢Eï\tÆçß÷Šƒ’ P¿Ÿél¯@ÔÅj-鈩a%³ðŠ/®&¢Ôú$k"ªØ/йWN)°“žåÕ!¬ ;ü¦ Yz`¡ƒó˜4Í:΄¢ü¢} ÙÅPpso—'–FÖ¤ @?§{†¨Mù9±¥mæãé–Oq*5‘>ðͦ“ÑøÄvÌ[½9Œ»©´=ƒøUöYi:mKLÑáEH¶MÞNcB$r$ކ1ÞsJdý¯~#ÛÁx›$ÓÔÿg.à?d%ß»øªÊø4¨PiMÄU6Ù·0ÝÔùò¤œ7g—… :—þ •ÃccXRƒ7&ߦŒÚÒN7× \A¯)‚"›>]ÇÈÆ¤psФOµ¡B†6©ÁëÔ¦î·IjÄ Œ*%“nÒZëø¼„zŽÁR°’í¤óµSÝ'Îٗٵ¢›FBO ðXÛÏ âŠ &­¢¡ÿæ¶ÊXõžƒ 1—¯8Y]%4(ŠlÈ ª•„¹VÓY€¥j„» }o¹^œn?C,BaÅÓÝÙý}2ýfÌv)9çÈ·ÖôIâÎ}\ßJþ©ñŸrùÏ€½œ+Áó,@ž™KGbSYÿãÁZ®ŸBõ ö(E`M¯ï:Çxo«¤hõ·nc'x÷娮‹ùü¼_)Éé]GTùt„qÝØõ4Ç[ê= êД˜†öB¦*µþ¶”pàÖ·nÁ<èné'kHȦBT‹` ’¶†œ}É!‰ŒH¯\éÚ¨Eë…nZ^Ü‹$º@D¼Då®t‚Œó‰‚ËP!y®¦º@F+.õª¶†¦^¼¹˜ü¸‹Ÿ‡±Ø°vBPb4ô¾Ûy¹ÜTúë†ëâ¨T¥“…Er*!vÀ -Ñ©dñG»2™v›Ë:”»ºÃž‘â …ÇÀY€R}+‹CFΖUtcöC"J7J±Ø1^CÆ-×m¿0LxÿÙ %C;ƒ•Â|q•O×ÇÒpÏ`­ä'+Ñ7÷°H¸;æÔª m¹ïŸA¡C%?Á‹nÐÀõZ{jCÔ²- f°ªåéÈò=šZ]€‡Än;xTK¡Š¸Ûþl6Í9”œ<-PèZ$8Aãáf¼a!’d#€ÎiþD(j7³„Gskê«+î×s0ÑȧKã-õ§ä¢;áŽ}é04hˆÐ«òDÚ ýÄýŒµ› ~8bê((íe3ev3$ª~‘@óO†ûºÝD›ÍßÜE“ÐVüwXÌþû  ‹…ðõü…¿Xí¢„· ~Ø&L6åYÃ2­Q¬’%yEÕc©öÉ`Zزbiª8wÂL+  ĦÒ?2©s %5ŸG专lÍÄUö[+4g^ìz”ט5í”jl2ýYÙñÔ|ãÞð·­ÞÊeá¹Ò¬~ROÎRB¤6£Jj«U¯laöÃö+›¶Ì$„1ÐŒÉ0LNHo¶•×OuHõ\ã!¹è²´•˜§?oª ¨”Â~×pß#µ!›EŸ&i.ž9y4—M@éÍSŒ”‡˜'†åïO8r£FÚËÆt8èèåüpò Ž…M‘¨:êÉ­ü2xšE%cê*©,97ôG––Þ9ÔÈæ(Ñ@¾ÿÿ® `¯}®x:änè•=ßÛès¦ МO¯ylZúÒ©&,Nå,ã:ÎoïyŸÖ÷mL(ƒ+_9ŒÝúwßJr2þ„™Ìãª3ΰvûEì•WP5Gz7í¹°”òºDEç1ƒú»-¡"÷¶ƒO,·tºpsö¨€"Áñ9}b\¢™Eã4Ì5þB~ ¦Ì/kiCÅ_ëTÄÚ¤ýþppˆ÷æ78˜ËE"ޱQÀHò† `·Ã\0å0D¡µãdC*‚sFÏ¿™7M‡!X,éÜÏÿÅ‚_£Ò«£ƒÆÅz¹¸MbýŒ£ 57ì"dFA¨:y»’¨\+i缨ö{*E»ö­)ÈW¾I˜մä¾*û¯ˆßÕÓ­è‡#r˜ûâÇû8–Þs}áLù 6-|(¹<Œ ÜçëÅÙP Û ho]kOù¾:6Œ¹ÃyÃ0Ú]Að{tßaî’\=tŸyŠK5hÍîu©ê¯F_L®•½­„CÀ4}Ee×ç>rÀÔÇ1|¿ )¿TXj @ð¢Z«¶bn¶ŒØþµkóÓfíÆ>EÁŸ¬ù᥵Üâ~(†t[äOlÕvŽƒáp4 ¼‘N´5®ApA˜vÒ23ç0ûd?–s˜dᎨ5Ç#?,Fó‚<çOzÖ`phßeˆ\ÃËÊšŸüö€ “pÔNýJÉ=¢é‹(¸øG…ÆNªÃoWD9öš½í²‹L݆òaõíæ@ÙêÁæ/ 4‘>¨—µBº©¦äñÏZBä,~9«|¯Â›çžu »î0€çóÖ¥ñ¦}Òõ«#¼V»L¸hñ[6/¨A°2ÿ;¹Æëßž‚~›zϰ§ÌêŒmª•·Ä¬(+ESª²h*}uš€Cúýù¤®PÄ7ø_qÇlÐüŠb«%ƒ’¢1¬Y”ª½¦Ô;ÐÅ…dL¥‚¡b`½2*u—ÂY©¯ÕËž|§[+ PºNœŽü–|žÆøF9 «ßª€ƒþ•â¶Î«}’$m˜ê/”‹HõÃPpa }6óQu£Âïp¼€ãaY¼Z%\dŒ·S7…÷!ÇœiÓy†Õƒ ÙQ¯#FÄ«È;Þaª*Ó_ ™®ÛŸ1ˆñúð)mÌc?Dÿª;nǂ刻)ù\¯ҹ„MÆ3—ausÖkë#UNÈ}2ëy6¨á ÊÀûÃ(ùÉ©Saöe¯O‹/7@O.“öj÷†uôßà ³¦ Ëù2Òjî¹;_Ÿó9VUðu"«ÖdU840Pp–´qTŸqžp ­É˜! i‡úž iÆÿI(šlC¹YB8›U€¸{×X5Áíª#YX46¸è↷JD=˜‰÷yoÆ`P3ùEº!ïŒé-½Ãé–Eþe´' —˜õy‚!4¾‘ìPÊQ ½-°é]= /µ$6;ö 3—/¶™+Š7jŽÚP•©pÒ†ƒ¶§žsc&ëî< 3°@À> dÀlU¡&‹fú?/ŸŸã¿q»ÿ%•ço©Æ9+O÷×ûHAkµ«|Ó½›QüÈHë}¼NsJµ™ æ¤[íHQÐI&h‰ùÂNyÜÀ"¦fGÅX[ò8ZYÙ¨­cÓ•bEû¿&”È—x`Ë{Ya¦sÝj ÷“¡ÀqáÍžôƒmêz¬8#µ²YÕr ª÷ nö¬qÀºT|‘wŠç{žú¾?x÷ó’ÚŠì¶üÌšK4|ª;äù´H¿:eNô~!J3vnêªÙ UR£,ú¡‹Ãê?“îît‹¹Ú\KòJ Yµ ÔKX ÷x]odÇô·œÔ5­$¦&¼w‡#ÕÝ4,þÇòôy;©9'ÃélYÇ{wìÝ/ƒž|–)¤z¥Óÿ{'ÉGþû<ÈN+qάëIí¨ñPÌ í&ümÝ[CõÁš‰Âº+<ó‰!±¤ßõšC³GŒ¾‘×ýÕ>Šÿ¤ß*;Cñ›ýÉ‹³ºÎOæ#ÀÈ‘)ÖlV´ÿ›•e𠃀óAw´í„î:ñßûú8lë<žÂÏy "¤Ô‚øúãqòõžÙÕŘ–¨Ð–B£†~T¢ÛêнH)°óí@ b*úD¤<¿Ä¾rÏÍž†Q¶hØA2 £"þxMxSƒÔ}RB;"†ÎñÍíQzEõŸË`œ¦T;û2µï£p|Ò X½”¬žã´é}™÷{Ì t¡ù˰¬ãN[^ ¬à÷Ii×…@Ž£6§6® à5r„")„iÏôXS€Sz­Iòëv Eá±Àõ… (©ð‡‘mRKÊÒ+ÿFkÀÚ´ÿªáUŸ´´6î r›¦d– NÜ¡^-8Ÿ5´k“o—eÔ“Z@zs+™(̵ï¡~Ž”Ú†€K3ä§<Ô×?ø7ê>ÊMç»c¤‹[ˆêóË>—Zʳ* 4û…:÷8ÀGâ£\Õ9\ŒÇÃgµÇ½÷ ê`l·ÌÐh2¢'¡ð@]±ÞLåÖ yÚÝ Vžƒ7xåK¨ÞDó¨¸ч»wbIS<èšt¬Lkó]B :­Q†½@@PBEÑ.¼í9höæ±*bÝyk¤?]Á:ÃÅJM÷ºáœÒö2B;pò‚s¿Ð®ÞФîü¼.\4¯ Iq¯Ã ÍKò]c‰Œ<€Ü ¤v“:Xë<øôöyCE±Wé™ÅÜL'ͨ´¸µ·ÏYÛlX®Õï8ÝbÈÈ:N¿‹†VÙïyÓ!›íc«°’‡W_[× Ô í8Á¨1rÁŒŽP½ôO¸²w@ ê·G ¤aÇaU+. 2í[ÞÿŠÕÏ)·õ„oè5#2ßÒ±¸GŸK]ùMͳ:€ßB# ùѬê=Ôfô¡õ¼ç.Ý0‹)BôGiXˆƒVw`´úÛñrXFGŸ¼N‚j Ö„06‚Ç!“KIý åÂ(ÓƒOÊ‚\||D½‹g—s‰v)Óã›dqBŠ™€Y¸OþFâÈ%“±¾Úé Ï@ôõ)¼ÖŽvP,°‚ÜÅëPÕ•‰`¿Ò£*LSðâÝíÏŽ¯‚ aÛPi‡ÔîsécÖûæ¯ù†¾<‰úyüÖ8¼o[ü†o2©½Mr¤d‰=S‘vQ¬î•ÊL÷”Rý5€gc0ÐÁw¥†Úݶ°ÒGÄ!.ñÜ'õ¶¯ÿ¾\®‘¾yºRplªÿÍô3 p¨¶N]b=€ÛÖç¢T1Þ< iûZ¨.¡ ‘‹ µÔ! *³†DÜô܆ZyÔJgEÀèuù”‚wêxÞ$±–e“‡fàÁÌws> JÔáÊu'Aá)ˆºoÏQu-öš ðâµQ¹×µå´ý#дc›Ô«6}§kCU÷žoI¿ËC¥ÝW'mL…Dõ¤îã‡.Oœ†¹eû°Ò|ï-—±X=›XÝÌà>/Ú©§!§&,Ÿ¶y˜©bE„aÅ¿3e_*›ûëÛ‚—% ÐtŸ>‹¸_y:ØÉ<œsdFÞ8Ñȶ¹Ém¶M€½l$óóŸæäîû;-¿Ï ò)ú—kK{˜»—ya(§ˆ?üaE(Jd„ ‹^aãÍ ÍFOÛá‰[¯ð*¼Ùï0šÆ èA´ƒ Vˆýo¦sµcðz@+ëóÅì#gÒ-q«²/O™6~à ¸„µÓDRV–O­¥”ÉÛ¯š¾í•7+Ÿ‘T 92:—It^ÀøÖDêÉ«ïoýGUùP ýGŒ§õ90ñ©ò× «0Ÿ tvGp­GB”÷ü8¤ /›°½¡$Û@w]¨J»åw\Øïš0EÚõÍFZ>OY,^ÜCé$§x ±ùBDß(T÷’ב¶â›Å™º>Iðe‹¥›ø‘Ø]©/åkŸ™#‘%ç@|lWüÚY­ðŸÙËñ‰ BG }©«Cà‘¿‚ä“r®ïv×]è|8éõc烥Ð5£J{?õ/|¶#$¸‹=÷vÛ‚¸Îw`_·‘G1ÙÿbL6lß<¹ òË2G—èã©.{¨§Ó“4ÂÍ" nÌO—6ÏE#ùß6gÔJFbRˆŒ9í9¥H«X~›Q§³¾[káGÜPÊ$ZP ¤ßô"çÛ,Eš¶Ñ™›€šóöMè¥#X\8¤)yŸ M;3¤z帳û®æX‡’Æ}×Uoó$UÒ+M½æƒ¼nsü® •Ü}fõõ.¿1g+çù/ëH6rÔ¯eXàŠ•ÉäI#ÕÆ‹!µ%.o‰˸ﵤöè´ØÚ¦¨ ì3•#+æ¹ëknD––7Õ_ƒ1b9†ê,NúVpY©HûKŸƒ-Hk¦0|Ǫwê„‚¶&FÙͨ `§b-Xd7#à$g,íácPÚ ëäÂ~ÂTdãß鋸14?@‰ÑîH ¦„QŒ KñÏ€øô$qÆâäP¼ž!„Ïq0óõõ&¦œ_Ú=‹Ð‰wla*æÈß° ¯0β-˜'w‹ØoWëºë)IËòQ/Ð šØÏ8S5îÌS@¤oLq$ÐɈ«eáìÁ@€L$ÿO*ôÝDZ³”ã?©,å3üiZˆEæ<¢…â¶]°³#üÐ Õ±ó'”AåÆú½ˆÆ#Ðé [¹¬!²2B¢Y18ìžz7èmÈ]§˜i5_+µ*ZqGÇê;Õ|éo~Û"»UÚR~ ˆ¹´KŠç7ë^/×WëB0‹ìMòƵ ;Åyz‘¸ÊdŸgߎèvéýtW~»UÄåïäßÂZ·7]Û.…|8Z“°ê3l §:IF‘ Œ¢#ÄEºNw‰²ÞÊŽ!ÄÁD¿Œ}PŠ»ìËbëþ™ü-xË#Á£§rC5ö„¾}yP)s(D“þ ä×%PÉÈ;wÔ8~t¬½»€-õDz - 'tKc”Á5p/?4>ÖpWL‰.ƒ0Ŧ£¸@¦:Þ Î˜„gN[†D*è_5nÿÿ¯åñÜN Æ&‘;¤n…Ò¡ÑøWáàaãÅ63 žýÎOãéä·Ñ$Í´ºÇÿÄ Çœ ³ßډ߄åÃÁä3:\ʈ»_áf?¿Ùé9ÖÍW$Yž ž9¢äê™–q\2¡âG⪿@‘JØ3þ‚ÍðppeÉj8pˆÁWñëŠ\\†43D.E[˜Ë˜‹ °•)uÚýV½„ƒÎšøÑ~é ç3“D±û ¤q|£…ÎñÞ€2‘gé²:„Û?+6äaEþ¸=}¢‰¨äçT¦Û5CqŒÎRµy'¿ô„¯¡Pan–?J0 ¦Ùé¦ î‡=²æ2X`Á$¡Æ5èV¥$ç•+<±EúÀaÆÀ¹2Ö-ˆ#nhg*VG„&áâóªËŒüÚûSÕ^€æ›ç:ŒI’·4®ísS¶­Í:+?~¢ï,ôzÖkÈwý¡úok'Id[ž‰q¾W~|+”/÷k®;Ð'1.:ܤê÷T"˜ü×ñ.ƒå+Í>®m­Š)Ì0~ßþ6ê)6eò(Âyì6uÈJœP%ŒÓ¬á“AJë–_ž¬ÊwÑ ³ry½}_a³Õ•ܺÝúcâñ7ZM”a£ý Á à*!Nxåù§Æ…Ë(Õ<É>tkÏ לHÑÓÏ…¼ózê¢Y K) Ùò´F‹ú3RÕÐ<æî¡ «ã5Øp €ûÃíøžtéwɱt®@Öô—×–àêa¥G¦_¨ûÈ ˆù]šEaY“<´É›‹ª´GNš)ÍÜwçÉÄ|ÉàyœE{ ¡±« g™|Tbc–¼PFâÇ6—ùl‡£Q°¥ƒ.À‘ôz9…†j°ÙQEÐÓØ¶rCHU5Ã=5u¦nqW~ùÙz`±×x÷ŠÑl%=ê€&~ kO)zUp1ˆ»ïÚ÷k Àd*,ñáŠ@Òƒ‰dÀ³DÁ­ÅÅÚMKÞðÞ¼&¾{¹R;†zëX¡x6?:wBrS3~t±Þ9Ã0GQ2êæ"2¹)ƒ·÷1±pÂõÿnähÌûôøDz}jË÷DŒ¢MÝŠè~€¾D}¯FÑe;ÉÕ þ7f»¥«ïnx7 >¨ÙBsd&$PP)KœâYT%è%ü9€)%\7r¹«çm@ MÇÊGý’º$~Û[©=w¸z”ý€gÀ<š¬s™Q–œÂLÚ­¡y4g µþk B*ûßÙ.é×^î*] ÐH-&{ÎÈèGÖƒì IJê7¯qŽ’pnþ®ÜW$oO2ƒÀ?:“!åãwaÞÍ-?ºè&|jjÕN†ÃÛ¯¹Ðë(º“M2 ž½½®Ó¯ùZ–%€¼E¼:ÌþÊ™€nDª&“Ùiaz#É„ÖGªÈÏE™Lö¹çYÓ¼7PP‹÷M€ÇFõSÛÏÁáQ1ñc蟜e<• ‰ó|.«A€-©=NÃ2ÆÎ/Qy¢Öì¥Ršˆ #3É}±ì ’>RMãŽùÑç©¢7Ú*ûy†Ü›Ïë6SàÌÝkt‰EÍŒ’xyë·(ð[*:Bgn¦· ëYn{:¨”&ÐÓL÷Æ5ðð¥­ÈÝ…_aj}¯%§K3ƒ7mµ†ù†XHG߆×sü_ñ›edoû#OÒ`¦$+düNØÐÀÈÎHyÖ¹ÈÌâ}Ç¥[ Ù{»²ÎÇ„›ã1G(yÿß‹ZÎØ§Àí:7G1$wR5xžh^±Òaß6Ü#—žK÷É¡!cŽšÌ§á:$%~À9Ç®”5<‚¼¿ŸÈ÷öhÇ2=+§!Ê8œoa¯  Œëìj:hw3¹´™D1-Ä¿hÀÌ2=ì‡VfmÛßhøßd°Hèß°ºoßéˆ<É ©ÔVXš˜ðjH:)åÓ¿¼“}H´-|¯ITnfÐ=ÎMÄʳ¸²,`{ìç.s攺~-`ͬՉjµxsNs[$õ{¡‡ØÖqsW»Ù“ã|`gDîRÓÜd«KkÍ©I|B°ýbz7&pį3÷·1O’ö¥ÕtÍ:ÓžÊ ¥y`åru°ÚqE36®NQ=4N'¸']¾Öÿup>ùþ70ªï)ܼƒ^„ \Ûð‘¢ÕJªÈé’‡žöóß6ßj/z¶ð¶¤Z‘’3d”^¢D-3°–¾Í¢Ø{)Tç\÷!ºV“wÈZª…†bÖÜ«¢_ãÂ(«åØC q¶‡ŽŠø8Œê})WQ?*ÉI%úõ~a€ÁÙªiÈΠ“\¤ Ã|H"¶AfUÝD6Ô†kl £/;C]¶WRv‡fŲ́r^BÑÀ´ÓêÛâq+é‰`ˆl³Q±DK]®áþn±öt]”/:iËí(ˆ³“´s\tHOžT»dÓw±"KÂkÝëN”Y‹VVñ“òsjž'ÙU¨‹¸FàûSD] ¸ÜA!,s°ñ¹d>—ýrû¹¾öIÕƒ]\rN˜uî‡ Oín9MrîÉq7ªµp£¢¹—¾"³‰×©ä¯¬›¼”`»áè–… 2~àî¥^ûô8$f9± <!‰*OÐË8¡KŒä4îBd\¿þ™èlÂÿ¡67–—:• µGhi,¿f ?ެ×y‚4`ÂnRSbØiÇæt'îÒÄLœø+Rh)Rʵ3c±V¶¶l¦„-ö?Á&SÓ©r[3ð+ÈÛªòþ´O–îŠAÛÝ fNíìɘQ†‰Fè]îkÿ#-]’ õÿÝ;5ñhbËþhÈ—±­²ž³iä׃{zíí–žtA–Ol£†>óJ®1CŸ{O²ÕÏä‰,áóß;’ ¼m©µ:œ^ŸJ…,ãF¹@àXB”«bÆW­ÒÇ{¨ù;Tgè6ÖÜ.¢Í0ùéFß¡cTB3MBÊó2ÄÈé'¤NÞšE´«&÷yYeO ÉÀñhÐ?'ìÀ¿œñ><õÏœ°è{Ž‹…270xD±Qm(g32/3ƒZ×QÁVâëh™¾ùÎ ÇŒÌ@xdÓy.ù¦Àö dÄg¬³ÆÍoùÛÅ©¦‰X½_—š¡ž^'þØ.=C®!G•8=,+¦Qæ'jÖÆÂÄtÿ #¹¬ >0î‚FqE+)‘˜¤9‰žl×3^ ÔF†Wþâ6–,ˆX µIqµÛN׿k: ྲťXdå¹ýðî5°@7†qüŠ:cñ÷¡k]G Š+ÏEÜp~ C÷ðC§\«ûgeÄZgP–j¤MøHuP츊âƒF›:£}ä·EZã§ŽH xj•yŽ_„;`(¹÷ç±8 þI¥lž`¯! ‰¡Ãà?ÊH]×^‹»…«kja~B:öß x´3©*Å%½qsãs»å¤^¯“iz–L³Å5,OFËüØŽûÀh0ÅGà³í«Ž$ƒó½_¥*7TåšíLð”¬S+±qái<Õ8bUr+ËÉÝG…G„Ÿæ¯Ø`—ýôI¦ú²„SU"iÞ%Á*èÍ¢ ŸŽuþ}$!O‡J“nòTK<-?_ˆÄÈKúCâ“ig¬Ù?/Äÿ@×xøD`4ˆûÛ@;tß´ÈgîävU¿’ÅÍw† dU[ÂSòÝÃ66ÕœR¸¤$6–‘GÑz­H"˜©Ü™Ï> .ù]5{Íø.…Q¥[Kr‘¿§À6pô³°4ƒD®*§ë)) ¸ 0 ,ýMpø®um”­ì¹uwQ$<îÍ÷ù%'úƒn¢Þs”î­þDEî_F&Z}[]̳&Dèécãu HCZ/ó,»íœc—ÉŽ%l¨¼Ó]%_ ËçžS†å½´çñR¸ÆsˆLzlq«/œý9!“c%Y¥I¼[–³Ñ­Ì&­X\[+¸’Mõ°¬œ­ÈËÎ ëöêÄëw&Íó6´PNäx¶OžNþh5LŒõ–ÇÍ>û]žt¤ÙÞÑñ꨷/ T›ºf™Ð„­ ±3Øï¡;<.[•ª K4QY…²ÝOE…•ÉDÿÁ”ô«ƒ0áGå¾a¥ avõWC˜®Dœ@>éäâî:eIdwOR¬©ë!¿<Æà\´î©ªùÚ^èSšJÐ ÆÐ¸I¶ÄKÌ>ghë@â­¨ò—Â_ŸÆ·ð+X0Ò™{³DÖ&>lm‹èãK&X'Z‰yöŸô'®êç\x@ˆfTçÃkÌBTÙncýDÞôÂýÁT•”µo…d#›`uÕ(©oã(X+þpsqrA»¬Í¬†ž zBr 4Ô·wÕœáL=C2U£~l£âßþ ÈŸÇÜŒÒÀ<ÆC“ø±$Ö„pߘ\aïZ’ÀUª±¿Ìß0?':A]ªå õŠt .yø²Ýp'«Ç†ôy»†GU4lJéÏMùÝyß1ôЬ:"`>ëÜ!±÷i°1EG{ºV5Ùý/â,Ä`þÿ€ˆÏõÖÔ;ÍŠïNÖ¤ñÑ‚Sf¦Î uüèuå….ý`ö Bsا9™f(ÒÆdÏY׌IŽ»åEq9ûýä7wý†Ž¥ÿätz^ªëîÓ¬Z±³n¹›Ä½«±_6e/0ÛÑù™Ê·2{»ætÈÍãªÆš¢Ý$¬#øò/Šeò–lc¯5+Åô¶»”öBX˜ß§ü¹áñðZ¯ çïGp}žÔd ˜²€GW†!>AÉ:Î%9­2„6U¤Ìèf|&|¦‘l&Eàç“Je†NF 7¨ØCXäd¶Þ‰îû«½Äî¼úbDôždŒ&⢈:.r“Ò‹ï˜âÀ‚ti¶. 0çάµˆ˜·ç­\\xÈ«†ß!oYuG3ëË­eó¥êÄv =R°4´%lÕ# ¥¢i³®>63.m—œj'·>yB懑Jø(¡:Áà»õícäÈá®s ¿ÑxéˆVÐzeú|¼5É÷ž€I–Dç>›6:¬mè³W „í}¯à²lámeZY€â,·½P¦lòa ‹RVË¥­Ü° £yVqGЦh¡×í†]ׯº>h°ÓOV´Õ¡NÖ)Æ Ì!p`뙢1˜•¢Öw>Øë¶ÍR3?0S|À¨qR}Ué8`˳;%|Š{¶a®Hzبi:k¯ÇÝVŠ’]%Юk‹–Ð\מéí® ZÊ/Ð3R¸a_<ªÞ±@¸T¾£ÍtMªRñPFxa)òw>ëñQÈÓ?Um±"­Ch¤¼öÕ-Ü’-ö]Xu%dR "ý0BN³ß«CȘxÒI²]ÿŸr¶¼»­e%í³åÜ@Òp²$$vk¤”/tElI 騺Ü@'Çüv9wŽ:Ä„7áH€“uêö*,¢Õ}¥Û[CæÝ8ݮÜT¿P|WÇz|¿ZS#ìHî%ä#a4*9ÑI*þ^kiâJDkÅáfð`”ðÈýi°xëÐeœ ÿùdÂUxÜxiRFY?8D -l\ËÜÅ›…túÌ%¹$“* {Ìã>Ïj ¡ã¢ŽH!­ Jjæ% 6iécñš¬‰y݇ÒjR‹Ã‚T–ëˆDÙ¦–&¦h‡äªážçB~SøÜÝêËv;ñÍ?W6ƒa¿Á|I‘ÐI&{æJ)©°¢ÙãjåSAVGÓ<› S4ӯ߳˜Ë;PRí²Œñf§kr‰µWm¦ælüJ-:Ì0Œuš!øŸz”úÜ”­BêÈ.ï-bOsY?„VÙ^¿2FW Õ.JêRXª1Ò¢ç.ЈÔKe¡õªÉ°ÇÌñï"r/‡ª–¶"ĉˆTêé0|ƒF‘Ó# ÏIçÐÖ÷ùn™z+ýuëü=•ƒ¹Æ)÷žÎ¶œÁ™ýdª-³hk‚+$sQ1V6û×LÁ$€ô¢*iôrì­°çS=KºW¥æñ%lš¶ÅÛ¿™—À—¾SÔ¯g‹a¡OȺHâ“@GH òS'~ÍCêßfʳEù“Ñ “Œ~Š c˜·ÍË´¶#†Û-!’ËVù?E6ö(}•U,×ß­uÒ£0 d){,§lTfÉ bzOï½T®@¹Z¨›Gú¤Îw9¤Ùé@»ª qH4ÍÉ[å,¨™ën{¡¹’ËX_¡5h}å&ÀJ9•¸ÏΧƒ—6ÿìd7Œ}ËÉõ‰›EŒŽ2£«Zv“WL¯iüÍðž²ò.ì·žˆ¨é@T&ÚL›íMÊPOûÈx[yõ~%!²»‘Ü<×-݇5nøeq9,6aÚ-µ!Àzè‹Òf¯Ôa7Êå«ÚˆïK4|x oBê ŸÃ˜¸%¯¹öœ7'6•£ èY·¥¢þB´— 8üW^ÿc‡†êq¯‘iE ¸\¼aÉ>*pî»b s!ìjÖ!rÕQSO^sŸ§t$üˆw`ßøPwÞ•n­£fëK7M³ýÖ:à‡RPY\UUw>Ø—3È»Ÿ£äEbfŠ7ð]­ÌqÌg7)³ÁlÒš`Y¶}†ô¸A°ýà€Êã2lÿ€ùüæ”G͈Xtáf?P?sgQšÎš4Y1F¹køžK F–”>Ro—<ônm]¿rå„®àø¯{Ál„GÚkåÝN}I,ºH`Hêdçb|\ -üáˆ6²¦P¸´8êÜkAálÌ3G{a4¯"m^W,•ƒKíjñ-Ãg yÑw7ÜI°I± mäµnº-æl§~±,t-~‚žx1d[4\†Í=ßù^χ«Æƒ#­—ÔªíX!ùð(7jÙÎt¥V꺾ڄ0øÂ¨(Ýq|°2¥x£­ç#¸Ó€¥ÞAÚ p]b”èãâõ_|5¢Ï¸7’sKÀ0ü£â{9þƒŽÂY ˆ àÌöFÝ’Ú‚²xi÷›“6AŽÀÿ€a¶·K&nRJlj§û°ú÷Ò§¶Ï—%£®"œÑÁ:ìJ-ÚÚoÛ33:*ª€âFo–Öy¡SÃﱇæDÒˆLsûX±"ÄTÙß»nê âalýxΙjnQÖ&×ãSÁ›gŠ¡)°ŸaÌÌý±Jb '¯[»ÕL€hÑŒÑU½ ½â†‚¶½dó~6´õ†Dç­Øž¶ƒø©Ãa1ýYU±ó+h?=bËÌTÔê'H‡Í¾#‰oHvXµv9b ì}w]Sš¡cõŒÖws€‡öwy5æ€ßSЖԙ]u-–¢Ø¹ÔPêÜ7 |\LzZ@ëþª¡qf’ˆtá1¿¨º1,8Oµe‘Dèñù³ÅkurN—3Am¿0Þpð7ÈWŒý<–§4¶‹%fë–V°|¡d]äé„LoÝèä#°ªòùáýRÙýص\ÐÆ>êõßtÆG§­{T’B±Ï•šÄàïcG²Ü圸^k[Ÿ¼dâä|ß77¹ç,Ú&.¸:N:WgÚlcê¶7Yaïç±õï…~#¾Yi’Àª'§0-½ÎY›­ײÇÎ;¯^sXQˆ_+žÃ./P¨„„C¤¯;©- tA¨LÇŠ ý¼nøŒéòø”SB® Ñï˜ï¿ÉFÚ+$Ï2G<òk $Z@Ji{™š+²üQ -Ò)²ß·0ôAynPÀ» òE‰ð½°ˆ¶wBvp^ñï7 3UÜŠFi}.t‰gBT¹•ÞEýõ™.Bpâ9²$ó ‰ˆÈÿ'"/T/M™L§Núû9&Ërþ¿D8#5褪Âú?>ó9!Øj@¬NØ,‘ ðUú_Ï%$ä¼:n%$¥¾î«h•™ù¥·h»úX~|ê²(QŒ°´ÇŸ›Î+(ãß]61d÷JFþ­ž8ÌMàì…F»çKfJ8üEÒ5sBÚ°J\¬ÜËCW"àcåH®×ÙvÐIA$¾QÒ/‡bï ¨X²Éò åòU‰êC—ÞgNàÊTýêŽï©ìkTP·tÊJÕéaÆÙâXo¡‹……‘³ÞæŸ{0+ lü¨9k: pŠ{‚„›5õà˜cEPÒ,MÞœ¸ÔÆ#À&nßɽÒâ,{Ôh cq–fÈKžZ˜î19Ýáˆ+ØC2A5<ÅûŒË¶Œ­®=i—ò ^”Â$Õ‹Ø$ñ»7å4¦Jl+*sõb8ôÁn±ÕÉ §°Õä”rw'ñ~=#ñ•³‹—teá¡H£z í¨Åˆgx®¾ÕוÀFWÓ:«µ¯¤’€Ëò(1⢧&Þ=øÎVîÒâ¼[N­Hì½qz`öÚ ûPÏú9£«? /–?I¼ÈCmì©>\‘|/8wbóFê-Bq‡¥¸95b4ºc@ñ׈ü[l+ò zâ}†_÷7ûÜ›Y[  *žÁ1§G9”W¡Ò¤£c–]Û‡í„ÒçÍ¿?œˆˆùîú @fFfKNóAï¯põb¹I”Ü/_ƒVh ¾,O깬¾,6`…¥OÈÌ3“ÅÓ” 6qBÆÅ•!ÖL¯Lf)† Fhæ²s×qŒå’có½º:€'Úû°C˜ Û|w áá¼ý_iÖ8æ€qzFº—j0&À‰—=é/þòí‚-<£á©"hm˱V?œ‰¢,;ª—aæ£_þ~¹ÁÂI1;ÖW­ÃçøúV¦zV?Ø&.´¾¤Ö*†,=ó¹çáIÒÙÐÖ6ÏXdÅ9"ŠñCs$½ZÝrÿ€§+ËM»%ñÔÉ4ϸÅ*z…ýlÃ'}‡Ïo¿9‰Œ†­­Ã£ö7¬ôœãÐuTeh~u‚/ÿÚ׃Ãïƒ Ïê Z ®ƒ§* <(@l\ðìö÷B Ë@ÊLà~’î WTÎ{ö°êÓ¼¦žÖ† ØœêÓM¯²aÍ!5Vƒ2ÐÂ>zŽÖÄu!Ä•ìgbÜ\]O`Q‹]ùÛ¾g™‡a ˆU}‡I‡ ‰eßÀH)'‹¯mœ¥Ej=!¤9 Wé Éñêáœè溪Ò÷«·Ôx0l‡¸`áš4ÄêlÜy0½ w(ù—™’W¨ÝÎŽ{K¼?pžØÇ>ÎYåÖcD®Â¦§ºJ~JŽ£å” ¾9)þÚc}zûźÜÑ3·d¦Â#o×mòOÝU´\°ÇéfóMNsÒ9¨—d„Ñ¿CÿP5&¹¯}SSJºìÑW_©3#æ,nW”çpÝç¸P?Ñź2ˆ!ýˆÅ³ŽU"Hš†¥ãå×Ò‚ËÅpbx„á7NžÕ1½o6ýÓÑcŽäR–À`]¹%ÙÈÎ_‹6ä£f™_È`&qø¶{Içõ 6„:½‚ÃP—d=%<¹‡|rMŽÛ¼ÒïN¬÷ýÁ¦±‡Á%FHþ«ñ6r5ƒUf¡ä)üX™ ‰ ….®öW[Ò~‘›éd °’Ñ€fÑ+ô…¼WÓ”iZ=½Ž¢-‘r³0×aú-8Ãß«x¯º®âDai¥âÌqDÑP\Å[Ò¥N‰´J¤ ¯Õ‚ Ô⟖×#rwo©¯Í*ŽŽõÉ?ðïúœñp¼¢-›—ö½^¹³„^7²‰Ùã³ð¶]#§Ú-¥¼T+mÌ*oÏ_YI×µr§ ¶¬½9RŽzÞG¶ô˜îKð—Ã^‘òëœA&ÁÁBªsan‰Æ$yä[J<ÀF戋•ðó:ô€ÿ¼P×fu—’ÞŒ$§6®OÐ ߢ—äY:Q¿âFˆ}e.¼ üF—Žýòæ†Lo:¯ =jÛãÙ¹äµÙ+w ÁYx&×ú”&±Ô´âÓö “>£zŒF‹œ€I8¼%XưŻuPƪÁ]Ý!dâì5t¸¬]r$íV.@3Ç䟀Яû•r9î Ÿðßk`»²#˜ëás‚ ¨ý–‹"ãšÝôý£¬…L=_E­]ÊûïžótÊÆƒS7#ðí›·šÑú‹xàšaŒYòÆ5!õrQ£ÒçUô+ݘo×[–nòÇ; ܤ¡iòõr5§N\ Õÿö}¢žÄEðöù(ÏyËó(“u»Æ57Z¢™Ê¬—ûéç.Ø*þEľêéÒ‡ tÐd)‚¤e# ÛìÀÔkó¡‰EŸ²âúõä½ g0n™ø¢æb‰€fqT0M»ÙÛ©"œåv¸ókM—üâ¼å»Ñ¤7|C‘??ñvù±‹*€Ã^×MÞ³áö¹³`½Zð¾zûÞ†»AËSˆ `M|…U¯ZýDÿž07u?κZçõl^dÅ~ÍžßX>¶„i<`¿.¶†0̃÷]÷㳤QØS«Í|ÁKÎ?c|h*LŸ]úx&t@IJÒmËë¸òç«aÕ ~CkVK§Zû“½Çìÿ"I¥LÓ§àÑ™‘ÊÐP€_¼ÕŽ¡ùž9©ßþoŒƒŸð-KàZ$X¦X{x<£P"E-ëýG¾µGâV-A«üä„gInjÍðZå˜T•y¤E‚ìÀ{Șq^bW»©ë!öBÂLòGªžulˆ(^5’sÇ" U¤xQÿµXÂêj± ÂrE‰.ç¿||Ýñ ³kX~@Y…¢ÝéÂAž­ÐbÐO,€ÁÊÂ\â³8o„×íß`¼Ñм¹Ã(Ÿ/ˆ’_ë£h:Û—cà‘ç.kæp«ý³Cd‡QˆËÄDÂöÞ™3B“GЈWØ[Íb~.3,ÞÎ>ó«Ø÷Ä«H¢Åá-—/H÷-ösõÀ‰C>Áäj·r Éáƒ-DŽÉv”ã©K¯‚ZA-á쌖"˜ÿ¡ÝWˆ )\jT1(~Öœ^7{úÙ6I¶jUÖ ¹vš1­AØÁH§y{â•.QE|V@(.Œºëb7¬±eÅÞ¯Çë¶|7è©å–wÓ~ér‘/o›úA‚›ƒZ¶ƒ I(é{Ü$üÜ`š:à¨ÿûMXÂ`cPÛ½B íiÈnç“\M ¸i¡\ìò¥<<÷6À:Óª·6>è·šŠ3xÊÜÓkÏ]N_¡±rYù·—íóuÉOA†ì/C«cp½– ~FªÁà›Øó]œA'—ê¯TKëéO~p˜.à6¾P5ÕE¼k'°Jk´–iK±›q*M\8ûCä÷­N'ZÏaI\û[+¯4ÁÝñ\ç¾óý*R§KwÿÈïÀ ã´¡™žöKŠusÁCJ‡Z©8‹ÆœàÄþÙ>v¼›V1Zá·4¡‰?æLñmütãÊk;× ú`µBÒÍ›¦æ–hÀ¾ÚBÓÀ”§Y"cOC<16Ñ¡1Mü´í*-Ù­á³¥÷°‹ô!¿zþ_u{€ÎsöJ…EïéŒTòǜݼ̹ýBäÐg*;mù3“È]ä¦~¢µ69ÇJ¯éAH C ¾¬—œaöìUï{R^}ãüÂÙ}QU¿ò£Þ ûžßÛPÀÜ+€¥H^þ°R±ƒÌ‹Dù’m /§ùo57 Ô¦ó;]¶¢ÌeD÷&µlX›nTu9Ïð)ºkå™JMfïß¹ñ¯ÇU¿Ê²>YˆmÉ”v9® ß<¸¡y”‰byQØx§è? ·ÓÛS ÷Xn³ïF³3ÇŸçV‹Uþ§Ò•_þfU¤^>ÿ’Lœ«šÃ”ô8ýÎÂ-¶U9µ,@ Í8§­áûÙêmº2ÚböÊ©Lõ‚XAcG ¦–uQ^Ø®ò™äs¢çFÉÛíö %–k'xÐ12=µÏGAÄ9RiC,¿&JÖýz¡vöת˺hóô¯º/›|K0óQôf¾…²O '®·É úwg§È/·ÃÓM' 5@º¢½ô÷',‰Ãw-ò¸ÕÝŸ£yði—o0Rü?¸jó}<cv,½ò:1V!µ²ÿ5¥§4—m$iuŽi¶÷Y•»¸ßA¥D—L¡{O)Sm_3^CC6¯›%Öë”&RÆo»"f–¥ÕÜ1Èû¾· LéC~túUÿksàn®päˆâ…oÃ.K=ˆà-YþJe’/ÐÖ©T’›sòø¿‚§nŽnD”ͧNûÆ|%Ó—¦Ÿíá1®[åKA¶šÆŠv­ÐbÑÏXÑëûбT}6#1à°,=¬¡ ÛýÉúåÈâ:ΕbŸ,Ö>n|ƒm= ‚ÙB2EOëW ®[7Cä¾y!äËð@Àûh'ž¡ß§éî<œb¿TQëB><;™ƒù4¾GC-Ð6xó¡$ùz¹jŸË?/ÑôŽá]†*ÜDû~tìFØhÏéGâ|]回É‰ÌæX\Êë!ó7À¸ã6&SRˆw³ þ“쥣LÓâ  »ï’œ€&j0ô•™€ *[~ô‰’þÉäú½¯ÃE¸˜^³Ç Ó¬e|¡Øª2™ªË©ØÃ!í¹\[ã!i¬‹Ÿ•x†kNÄRcˆOz¤¤¾cŸáwL*Œl¥q8ÂIŒÎL"Y… -¸Í Çœñš<Àõ1Mˆ¾k™'47Æ Ã¿¢ÿì˳ Ù”Ò ÌÙ_ €œÐÞ²á¥IÓF>û!4Ë%ëó95J²°C h›w¦ÖZ†~Wn:t,\PÞ³Š]Lv~¡¥Ò.‰U{… ez5œ ½²k‚¹Æäƒ0z&\ÔcwìÁJŸf›ì½Só^¾È‡¬L¸Öñ&UH‚Ìxˆ»½ô\ý³µ5îÝʨšC\P¦é6aÖ:Ý Ú ÉH¿¼vò]{\ñÖÊ]½ÿ ‹8ªwÛuè|É_ý¿lÏ6Õª—gŠƒ–/h…€•tRÑ+FcÈG\S6 Óu~Í7zíŸȼ2e„`E‡%mZ4—dÇþ2ñàïu¨Š^Ö ŒtŒþ(Zµí0¯‘˜Fž†k$a¼G6ÿÑŽœ±¤wDC«ù5v¦Î__/M³òñ’vÈ6}Ì屡×ïÞ¶ÊÃa,à"s‚3M³§]¥‰Z–$¯eMUFkiåt]¥½„=èc9öeãÈy¸T:Xx¼+0x†þ8­Ï÷]͇ÛímDRcB}¿ „Øh”‘7fx,BÖ¸¤‰‘KØÌI|Tž+èÝíÿ„cÞý7Ÿ`˜` ÐȪ¤‘HOT^]uɃ–'àÜ&”$˜¯ðŠ(q0îÞ®ùK¯5Öv\ÁÕö3ƒW¿ZQ•ý„¥1Ap×_§ûYð®˜|Y~ï¸h?ÛÕ?rj@à1dßµa!ù¹²ÅkÑYŒ5€ŠJ(Œ@¥EÀöZÔ`ðIBeÇ8m™Xp„M€cçý¯ö±~QJFÙŸ}³£Ócê k(]ªAœu’øœ ÔÜ]n!WÐÏ«áTç,oËqß‘;Gö'$${S&IÉúd!„€\`œÑËØÙTÇ{µ]aìÝ|3€žÝÀú).·)ÊÈ›ïtJSØÀD-ó@zïò˜ï‹q/.¢ÙÅIvå@ÒÕ¨º-°ˆêÙÉmî5XHØ_R꤅]+jç[ÃÐfùA6«lIõµÐ®ƒ±d/»›Vë¶gܬ OóV£ÀfƒÜN¼iŠé¤2™×Ë™ôù8S‰ 9=«[mñ-Î1šº®\w©*$UHSDz/1âx0ièç/¡…(…qÛü‡Ô‚h¨QÙµXh‰#BxxÝ©|_Û#-q°!)ÙO)¸Q§ŽyÚל^ë_xlmÔ¥^E–²æÚ®¨rõ-’˜£FÐ} d)Åç²ì³>ZôEÈ¥ rËpRû/Ì{Õ0#Â÷ŒÝ£ðèÙÔ>Oב&DÁ°-;Bˆ­þG(}R*wQnp‹^µîÄ?`À)QãÍ“ü ~)°*Îd­­¢ymnD½’›.ë‹+¢F£ÐÕ{ÿ¢.>©>9sŹÉ\~,5ч³„ѽ  o0Ê}îÉS¬ŠëµNv€ÁÁ5š_›7ºj·&ëÀ˜iòÅOŒíR*é÷( +Ì©šçÒcôÌ”`ö¬ƒ¤Ó’¼ûÍ= n©×jïæ“Ø4‚©Ñ3 ÑÈTæ<¯ù$«’L&ÁådR$‚6| pG΀õ¿'x˜ü€ü˜_h­Ú Þ?ÜŽŠû_—§ëL ”Z›«z9°Ýˆ¨l¿¯Jbp {¸;e#‡D%Ç_F‡ÐÉD{ãzUý±¢Qõ݇ö<™©,BîT|êt+˜W#~\Æ=® H ·`8æ/ky>f-öÞ&'% —ª »b;Ý÷>³HÀÜ@›aÍùJÌ–ª8xò'<*ôoâ΋‡ˆ½ŸÖþ»Ó¼ö–jô¨Îb¬97Ô麯¯”}Ù“)ܳ4¯!ruÙ`)öáKÓè K¥‘ïý™6„û®ŠnŸPñªÁ§­Çã!VŸÏâAîiµQ0s›t£ÞUùåw†­|­ñ'¹³/ixa|›t‰PûŽV¸gÚúxe¼±™¥ÜøçµèîVC [4{P¤s°ø8T/¿†—ѱ*3Mã@ج€¾¹J`@3>öÿŒÑD£ƒ‡Ä¶ô*¤^ªkÓ5X廑w„.»ÛKu[É#€Š÷“TºÊÄv¯Ï‘ aÐtÓÞ·+oú/åOÕˆpeÝd°éfšúòÙ. [þàbïV»P©LÐVÿróºX²QÎp 3p0>ªû­þ;hZ96úN;R0›R,$&¼w쨕Å3eBâÛ¢Pë™D¬ñãl¯´æò—`ö0+V6±‹Mœï㹪“äüoÞ÷mþ³É‰uȯjV¹ UDžÌ%îë± Î»£yY€4ö=~ò¦§v!QTHtÍ‹±â‰"µ¢Ug˱ØÇÇæÇÐ씞}·¾NsŽ hâî²€[ ,±O‘z‚Ô¡Q±j+{SäÒ9pÞà}çÇ+üS%³Ú5"O+c´[Lðó´b5%CÀc-.!8ô®x¦q8&›kÂMzÉ ÕÇ%6Û y@ÕÐôÀaˆíý¸Üí¸ÝÄ9{*Éø´zêÈ?}˜“Òµ ,¾Ý÷uetá€k31’·i/:´Éàòû |ª´Oz”¿. Võ '1D­tç1 #¸ÀøDˆþGç¨D‘ø®÷Ä1Ç!XŠm>Ö7Á'F:õùÚ0ƒ7Üž¼è\¯,Ì‚_–„·« ‰tÛ?&ןI%„ðsÀu9ÑO›¼Í} ÂVyi/MðýŠ™ !iPŸ‘´çÉ×Ï™µ~»ye½ÃˆÞ&}kŒr€û§ÖÆ$Õî€La¥K¦5ê–BØŽTÿ%¢‡yø3<¦ªG–ÿ}øÑ³C1mP“£2%Ö¢èž\ª¶—ýN_dÐé·µŒKŽy›´i=ò«ä‹*mMæ'gpÇl¸–Œü4Ž£+y“2&ÝqûÏ8×NXY‹<çnÌ{˰jÂêô+Ù]÷îñ)FÞ‚€ ½äŒÕ€1óï·íЊÇ+¯>ŸÂôj_8"ü¸¼æÙò,ɳç«7õk½ÿɈëµF`ÌÚ+|ƒ¦qŠE‚©Óƒ µžºùñn¤õ«²"³¥#2vÁo¹¡K-ðÙ¢tèzA-úácË4êë1XÃhk:uµÒ4‹–¨é–´‹£Ÿž­W楖}>ŒD°å‰NI\¥º)+êñ#]ûÀàŽ›Ý?[›€‰ç;§ûë¯0õ—®Ö øØâ­¤îu–aЛ²Á_P<ýënê_½îÕ? ƒ([1’€4ah‘ÿ§k„¯w¯Ý¶Ñz S2¤7\‡L"X™{z,K·Æ;cæ]Y‡êIž[¸ŒÚ F4nv„®€c~y!^S—@g‰]P`;AgôØÏQ0®} Iìx<àžž VŸÍÅãOàïówáRÓ׿+°ïäW6P ‚Â…Nºð‰è^O)¨}"ín´Nh¤²i+65ÑçÉíHe«ÕŒÄ?å‘‹…Àm3£êR@°+dÁãU5¶½TN¸äy ™9èXÙ_¥Kq_õÍVwàðE?ZgçPd¿Tsö4Ì$¡ôtÓ(U}ÀûIÊi™›DúÇK)ÜšÈ Ä:ÕƒcO¯½Ÿ¤ªX–~H ;ð¿sÒT/qC¯hDŒ°óJ+6.É”Æ.èYª—¯ËÏKÐ<™Kƒ ù>–ÎŽa!»Ïä¿ëœÌ ½ƒ´\såÇÖV¨'•|–©aVÆ?!¹º£Ÿo2íRæ˜àqÍ÷Ýtï•o*qš;[Ó„YaÃWQõ5Áz%0 ò4væ¨UE¬ïAÎ=]§âoøë I¨ }[¼RI'ÈÎá6©¢1kN*«uýΰ L#%L?å~¦>¬)€‘|­¹w:O'«QØ‚ˆÃY°G‘í<—0(½µÚÔü ¹Ö¯wÇÑ”A(÷È%hyûÈDÑîTªWçaOp‹{²˜kÕN³4»rœ¢YP—U¦½è:‚ Ãù§þvu ››¤éËõð~PËí¶½+z„Ö‘J_ˆ,IÝ…ß猡o"îË*O›`Ú×úí¬Ÿ!ƒJ2‹:ò;ÞBºÇG¡æÀ /æÇ[¸KÇä ™ÀK$°¨ˆO­È¶jé]åªÁ0™ë4†+=mƒ9ƒG Y×@àe¼Åö:®Þ²t™©)îV½ß{£É´ýN^LEIûé­Á/M#à=ã¤7a 7Öe¹”ŽÚ_êÑk¢`ÎŒªO"§l²oJ²zœc·‰ ¿+ÅáUÿ7P›” ÊWRó¬ôôìÒ z—;Dתж„äÓ¤æÁLI”éÀ Ú§ ÇXça0;òt?¿åYáa§2ÕÛÅñTßVp‹4E‘ai³ˆ´¦,Isv º1UŽ]A<‡Ts å„§ü„U‘6DIm_žpªÅùÇZ{¢.*o1äpâT¯"Ú@üP⻄UÐçCm3Tßf6VtøìwY‡3á²ê/ ¢U=A6ºD§Yâ0¸…J)'ÒyQ¼:ì=© Ä ãt¹«žA |‘ËßI=.øYßË_ùšþÙJ¡Ù­Úéö•=æA—­ÞÍ_³´ŒÕW‘!Û¾„úœŸÂËR`/St£ê¦„$k­+ äwNy¸iF6b·8òƒÆq™ÉѤÃ,{Pp@ÆoÞ–b4û²×X¡´cÞàR¹jw˜öBt‹—Ïä1¼·ØÝ+bx­­ÄgI 7:sÒ,äÕE}Õeš×:TÚ¯ªýý7ÉpƒñúMFä ì¤æîÄŽ#z ³Ñ—ŠS|P´«üžÀf“ðîä¢=Ò¢}nJBE‰&Bú§Ê×ⲫˬÃC‡|XŸŸñ'Fm Á‹‘’´>@OWŽ8qzh¦ô?ÞÙæ ptN@÷”®»Ã_Ù¼|аB0,‘ÞSíFä:úiZ­o]ò YÚ-æw2þ‹]¢}–~ÒÎØpš·ûËÖ÷u 3ü-®x£~±\³˜ï´T^€ùgÓÆðT¡r¦»y˰òûewµj3Ë­‰­fÝ•¼íºÞ­ŠivÿŒy‡Yb7¨^oÓì¥c( w9wk;€° !š]ÏVÁ¡b·ã¶òæQÑ |2:áZ¹”£9tùÚ)D©(b¥=èMæ#oV=ícXÚŸHdä$ís­ì^牄êm€‹Úß΋ñ¡—ŸäcÐÞ1JfHvù óÙú0 -Í“ ’{:\¼þ^²Ž*0ÒÎ?~ži„rÏ££ ´fÞ—º²§×òﯞÜWÓ~®‚J‡ t|Ë"÷Eeüçää~xѸ=ÕxŽùU´ ÙøŠ÷0ĬiÍ›”›„ä;õc`@ݪÜäAµf”ëÁ(Õpî“°$á_‹°{‚©l²…@h6Y$ ÷ç^ XîC«b1`|× òK–>$%FäòuhMulصö& H(Y+}Ò·#`R3hbåiõ^!D‡fýJ4Ð5{ÝCÝÝ(4áKpµJŒj­ñ¾ëbLºÄPEl¼„¡Ý>=V²··J[›aøÏݸžIv<|è™!J‡ÑøFŸ°x/ÌÕ\ÊOˆ 7H…O_Ò}p8¾\Z½&ëNÔãß9«Rgtˆ*¡Ì…Ç%¿Á¼¿´/s˜ÍT© dQE—Z;Ëi =©! Ò6ä•Fá¦ÂŸÒzݺXÝg‘r·ó?ÀšÎZæ<=ÒÍÉÚœ9%öœFüTl´:Ÿ>_Ëë{·*¶«m3xõÏÙ…'s€»¦‘ãe¡˜2Ò¾äxþg^­4£$Tƒª2´­Pi¿ÙÞãL×PãônXt¼©ÇRh øè @àµf¹"?Åù°äZ݇¿ƒ»nêjΔ¯ÔÙ s…ã¡Þv¾vÑ è.j#QHY͇Êã ÈÝê*h"ÌÑÓÖ›ääÛNj™ähdݼk†›úDû—cìfB¼?°cá¯L/óÌDµ{줅”Ue·ÿCMTÉïë,z_ýü7¬öž#¡¼Ìam{sŽU'´íÎýàhͼƒˆ¡[l©Àð›€ã= ×ú©‹¸î‡G„+ÿŸ†lÈ%i¯ç!JŽâOl`zŒöÄ’R£”opýú}ÑÏfõbLMž„`¼º»£ž‘À`l>Õ"~¥©×ôSU­(N·Ò¿ ™,NøÞÄ„×d‹ÄùšN0ÄÐZ¿E¼o>7DZs*¤r]ñ)ÔŸIߡ 4­õºÆóÚñTÅöwá£ØK­@Uj2¿2=5´ß4wk áÏv¸)ÁÏ.ä znfŸ²à”wpÓ—Ì ÿýsœbKZŠx)óäÞL^žPóÑö»zý’ѽëTA¿ºùo|â$´G–þý{]üI‡°CöÚ?Ÿ-{­A¼µbó¦Óé=][L;‰êÉ7Iãƒrº‚½v¸þ¬U)ñ’ ·¯f1V®¡M¤ÓÁð´³êè‹=Ô^¦q XµQ²?¬N‘ zCIìX+9g6aî„Y•Å#î}a_{õ tz®mRI½ãìfØÅhGqŽ8'Ȇb=x‰õê9— $À4þ¹ÿÕ%dÎü(½úØOÝ1¹èFfªi䣜IÕ*FÌöšvq¸d®˜o– Á] àUa%œ@¥4 XDd-?4öÚeþ~8S¤¸ €Gü›‹YcdèÝž¬ê>ùÞˆë3)¬å|ñgœžA–sl¥Õ8v‘›öÑ:2Z‡_Nûï1¾q˜ŸÏ-"ƒE6<¥Ëp6ÿvc I”}¾…}Ð}ÎKL‘t™íXéz¦ƒ«'+z3‹8hPÝöÆeód6y#Ë) HÛ¶_œše=ìCø—³šÌÊëH'gΉ-ˆ'*þ JÙDmÝÚ<ƒÚÿ"(wŠÑ{/È)à]/ýÍaÿŒ<:}½ÐT?Ý'Œvàª8} uøêòXñõE©ªø;‡X_€3/rzÒ·-ÖM5y½(iÈLTÊy"Bì½tËåCEbÒr±˜Î<ÒNVúºÃì!Ù½|.xê Òc#k«Ël˘ô_ó÷ê( u²0))µÔä<¬¹âÇé»Kô¬!1N0¾PÓ”Hj§+Q³ß!—ÿJnz*Eà[¿Ö DžR‹®}.bÙÙ”GDŽÛ]uÊ8AÆ /:1)`¶¤ÝŸ,sÙ·$Øç)ÒÒÍÌY Îgêààø·Rª@²d¥éÒ(y{™T\©ë¹ÎvSüQu<â<ãX“oˆçö½>ÜÚÜ•‘æÈø\è>¡ðŽ2nüg‰¯e:c]ã vó¯ØQ ÒäHe²iìÈ28 Á/Ölªm×$TpfîCVIUPh#£Ôb ›¨ÑÈ3J¿9 ã‡Ò÷zJ•!ùåø Ú W*!].Áƒãµìpˆ‚º0PfDt#¨Ý/ìµ+7cZ`´q“ˆ|–ùûhªàÚÓU¨“(Ôš`v—i*…”} V2®e˜Hܨ6¢Ђé%°pºÎu\ENÿÜ;éÌhá2”ö1®¬íæ*½ê–íÈö:wM‹¶íØÎ¸@p‘‰u+î׫æˆ7G*š=ŠYe>ÝQgâ\–Ðrï*JÑŽ…¯…8’Ç mÛ”yÇvJyã¼Ã e©K[Y¢2ÎÃN¯ÿmg¬ø= ~%F6”æ”˜Þ –Ë"û78ÔÝë[wšümÐlQRYÝö´M…¿Å hÅ-”ÁÕºQ“iÁSoÈ'ìòA”H0|§W ÑÊuSç7î3o–fê•À¤'»µ‹¬F‹fÎiµß\9í1¨óéÏØ9ƒÓš=Nd+\="ú1â&K¹¸LBAM­O ¦# žº€&‘¢ö ÔÐí‘K®åH%õªú•gCšR°BB2™¢l$çQ5Ïé;=Nc\±ôj ‰gÕ©neÅäò#2º.á›ZÚâb(l>AtÇ&’7{EÍ›VÊñ%JŠœq§‰þ[q²?ëd]Î8ò|‹Ô]:pÜÑ¥©)f1GȈãŽïu.˜ÌõµÔZÁ0ýrL{÷ð2^w#Äþ}‹×ñ0™k‡èºÃ?_ŒÛ±Å€‚¾›™Ndè–Û‡Ð0Ä2÷ƒt ø« –¸i¹‡ð‰nŠßÕ:ÆÄ†r@HÝʦtY{^,C˜ÂQ¤,<1ˆAeZh;L%{  .<9GŠ­°²p#†J¢íR%<>FöäÉI¢,­„E4T¾A`*ÊP™ä ”ìêªÌ¿ €¬!ªÆÄ?ù®ÂI w,g¸”SÒ;T£‘ÁAçeÇÉjô­6É£qâIó•H^Åäx‡NQÒ«M2o“0—wÈêâIû.ŠÝ¡¬ p¸§Ucw}\âð<׳¤‘€Sÿͳ¸­uÅ+z§Õ§±pò"öÑE‘™ñÓ:J¹)!ô¤¤€qQ¶î¾Õ†Û×ÞÉÇ+º1^c0CG‰_nÌÆZ°~8“´3B؃ñòñv€µ>7SW— ˆ BàÛ©¥R·¼G=n™ØCr†“ÓÐ3c%.kÇÝá<–Zî5vú@ÅÊB&uWB½ÓxÖ¦…-™äïHÚö³ú} xžç2táeÎæJuäøp ìÅ7(ÉÁ⫾äô±ÆÀx=y)3ïÚ»à[u§ê»ÖæÜB9‹€jpSúø7­šŠN! za]âçirýÛNèR<ásl€ÈÅ{,IÅ/%T«Û”âc½vɽ\.ÅQÕz5uC•"Šh…' @Øvî/?{?”—4wQÈØ©®¯€a'¸'û5¦Bðï3¬e¨ ÆÍ—ý¯_ÛƒY…f¦ªÚÿQµˆBBnê»ífˆ‡¿Ÿ¹õø#°v®±€Í?©£† ÁT—t`}°fš 鱪–Ç]I\îÒµú0öEÍ® §ïìã P•n°d aC9J‡Ï:°‡gœHIñÉ'µ1vAßuíÍõöÇŒŸïjÊökÌV9fS›šžK›þÚ_e­'eSrö;™ˆÍ Ú[n Ð öô]ÙúÄaÆÌt9˜ˆÜ65R€Ê™1ìªm/D˜É a!"èA€¸y*uEÞêXKŤ?4 8Õt!’+æ…A·½7Üêæ÷ŸMÀ\t‹‡¨ˆ`.‘ó]¬Ëÿá¸Àx"•Ù+¡æÚ×ÂLÌ&äs•¼[/8/i4ZéÒô‰;{`Š.Záê–¡¿‹é¡é*E“ן‡«OªpzlvdžúOg.%¥Q5w{í6ϵÿæb*ºZóGõƒÑ·)ügQÃâ·ÿ ;Þ˜´TÇ$÷Ó{¶]U¤ ­Z¨“˜‚^ùtª¬>"§ÖÀ|SªVXÀFC"Z6¸% 07!?o&Òƒ=2È®E2’óˆ/².Ôa]’‚q%²¨ølj{ä)Š!ă}‹sxŽ> …Û‚ÓG{_`4è·òB g`2Ì:3“ÝâY² 4q#²o3­Áyë3$jóo÷ûÇ;ü0v¸µ6ƒÚÔ=†£Ê¥Î FÝÊd;nå]aô¡—c´0w ¶wîÍ]”Øi`u'‚®†5&¬ÒÏr8ÃØ~VÁCÏÂu@è<¡–£pù^|¹vD¯sþgÆc´€MêÅä(ø´š‡²œÓmÀ5ÙÐ.ê Ðüž@2Ah*Êk3EÁ3¥ ½$9×âÎ7bq;WÒÒÙ©¤7¶ÀJ·(¯â,eÓS»Vµ;ØOÞbÍ L³ëÖ-† 5ÂÞšU_rñD'Nýü Ä)î é\ ‰9á'GP˃6£‘’YŒfÊ%ŒÒíô~Ož9\ÆQÝÚ>w*üHÞÓéØÄß-þ¯¹¦£:nvý°oÖJøQ±œ(ü¢ºÊN°,ªtëæÜdªU;YT¤-'<òŒ*ö­';ÌÿsFwÒʰ†9aÇVû&}î$IŸUÐþØhÙ›§Ëêš—~ÌML&®43b¶‘."¨`o1;pK?´ØÏžŸ²4!Œ\Ýü!Ôg5;ôØ[$gRvrýÊz—ÝREˆà(ˆf!íϙ߽zqÙžœ÷y¸.N{:×`ûž•™;ªìqˆsÕyÖ›ƒàû8,tQ롈cöú¬.»óôÿù¾(%T²(Ý[`ñIRt ø÷S.¼t„nÊ$=(À¸ÏÓ5ääü…ZÀ;"¼óR¾´!¹ÜTÈÅ´¯MOG¥‰ü²2âÂ6‚Fç<{4©>“4{4ÄkA©ŸúQqX9I-ý]àN'"¨e ½½6t›&(]CIV ޗȬrŸ¹)ìtå׆Ín Ž¾ >_$|RòÅïûBB_Mvpowפ•ÞÚM’o¤fé¾tQi³}^"×É}ýYêóD…n çÿ¯Zó턨֬Ðk˜š«ýu¿‡ÕÈÚûØ”éëµ…á!¦îS†åžà›†gä  ô»H¹íǺt ]Éê³@×þµL\_¿b,oÎ -³žÌ‚Èw:Þú'7yÎ%Aˆš¡×#ñ²–Õaäl˜:ïoÖ%ÿ‡ÆD³3¬4i ÚÑÂ@ݺ;«V–aŠÃìÓ–°…êS‘³K ¿“HÔÎRºÕ›/Šj":™ô„ dºµÀË.¡ë2›¸˜òº³ò3¤ÿY4Ž_W¸º_>rÅÁj·†öŸÅÚw¾ûŽg˜ Š5Ö¾ã NG;ß!BêjÉCϾeZô{Â9P0Sd‰fåB0Œ¢¤¬ ZšPÓÄè/ÅÝxá¡C!­‡' ·h?ãŽõUÁ© 0?e…#äÿ(Ò‘õÎUËOAÁŒ1©vçµ[õÌ/+Æ€UÅý§'èó$Ù‚6 /¼5ú Œy ž=PcÅáë«v áä}¾Iý5¬9÷z…¹á°Ý=ª—R^—ëßÇ »IéÄÜ pò7” ꣸¦æ-Ôn͉ÆëD××h«ÌÐòúH š•R…B*1ZÆtH“ƾë/ÍD1vÞ§ìòsh–[‘ðŒˆF†éàœ(&éŽÄQ»æq$òSžÄÓ‰˜&ÊsßË€GàÖFË-‡¡%X@¶Ž}ä¯cèÂ!ú˜ùæù{g>_=dIñßêè³¼'o?É#B•Š]¦j\Áž›¬Oïv¬°P¸öÎåEè]ƒ¯ps‹†5&ò†¾Ÿâ<$@î#yi—££2{ó°©°Y…YjâF» äìär"4|]èmí1P£5kA7É.gCÞÀájÈ¿^2²_þäZé¶@ã¶‹ÜíîÏ^H0$ÁŽEfjÝ ¤ì ¼#‰ì ` mýVˆ:òèŸê-¿ák‚Û&@:V€´à˜?Œ˜|®¥Äމ#¯¶ Òÿ² Õ++bu·~Ô¶Ÿºª|CëüäÅ#^Gvè;Wz§Ï­È™¤J¸mÏ<³Ž‰~®³æôþ$W‰³ëå.MÛð+±Ñ ¤^VªrÚkƒwúÇ™©Y¾íŠ'JV³Zðžt±'yÍ<šS9p™Àî[Âú¯1{Q>ù±]¨çƒÈe_jž³3øñšââO™Û&hð+ušf)6‘)õTžŠzª™ÔÐÑJ>¹ÌÂðœ·Ê¦§Áé:bú¾é·:1¡ô¯âÚþÀõgj°f†|BY§špê/Ýkõ{“3fÞý:4ê>@„PlÑÉi ¸‘E»öJj2,o2m÷%ÍÀ²–ÛÄ\¾,H&ªtiiãÐ_Bhíf1!Ázbf¨©cN)‘›jl,þõ¯‘¤À,N»ñ&¸3ò_™Á³ÏÍBì 0ÕÆìï8ÛG;ù2Èߣ-7iRÒqç Þ©±(n»~êC;ØŽ¿M{èxÀ ¼B6¬?$°pUUÎ"v-ç7ów `«_mGŽ29ëŒïï+úáSI)!ë“5ä8Fý–ÞNmfÈþšQßçáêëâÕŽ<` ,¢y~ N ÙáÑ‘Õ8K|Ü+5ò—dé†ÿÂ7â KF¼ ösëªÖqͳ9WÖüKÐ$GÉfà%Y® žë©†‰»±˜t¨En¶Z)_<ª0‰kP"H‰÷Ù ¤å¦S* ¨P-§îß`WšŠáVØ'nàò¬Ø¶”~)ðˆR?ÚQH—#VÙT\£‰™¬ó¡‡ëÞØcgrÙùúooUÀ#>™% 4}Ë+üý9AÓ.È-¼‡ÐÍ`xJ½ðÚ/sˆ*R€ïW8}bЏ2.òãADý3ȯœ²úâÜö}÷Ås5Û{üÅ:ôã ¾ÂÒ#½œÔ‘Ä8+\‚‘¼hŸ·¿rm'¥)31”…›šBƒÏºQä ôP‰LÿÚ·P•î¢Æï£=ÒJÇ,ãÀ™»ðnzíìäÊoÒÚêĬ6vºj¤;Â͇ҿ´…NU¤¹&°Õ¨¼ÿÉ“ãs@ûl6é3b·7{J–ÐyU^ rãqWjZ-B7Ç zú†ƒŠ äuJ£§ ? íUcµùùG–dzeZÌ–º‡—oU²‰¬ Çõײ¢ŽT(;—xš ÅA²èÔ|ÄÒ]"9á:_ÒýE¾Ë¸kœ8)-¡©ö¦eª¤ýu1€ÒÛËmN|ÓwßBøÀú¤ùÿ†|ûþÉõ>Ð7ª9Þðà¯Çƒ“g§dá8òÝée(ö6ñ€M$%NH7kÓR~ëâ»'#iLRÄV-ãêü 11ÞF*ZÞ]×› –ó(QLêñ¶9Qä÷„ËÒù±é1ˆ–+'Èžgo)“šh3 Ý–\õT|‚ ©Ñƒ¤7YÀõÚK͹’¨'|\ßËD¡We|ЯèÞyïj³ŠlËë%Zö?¯µx÷ªVζˆ$Ëp˹‡·Ý@»Ãá]Ôtø•- £ZÿÐ1µ÷°»¤»|•v ¹‹q–±‚Í~•Þ4^Î˸£ª‡$ñ5Ͼ„¢Ëž~å5K%;«¤î™¸;ûa@TÁF©º6}!¯?D!4Ù÷o»i§5ÉãïMœñÆ’+ª¡*:. $ñ¼“û¸ZÂ{xå„FjÊÔ|椇;¿Y¦©Á‹CSÏÚ½øèÓª£à^›hñæ¿ ôì¯g?D/¼:1Q•a*×pÜ4…*[^ ¬Â@ÿú]øteɼ9׈§s¦*ªÑ?³k{HëŸ&¯7÷Ë`šp‡Âì!'ê  “ÍWB° Ht€ñv’Þ qùh8åùlb€t!pú:uR…[†w;Ÿ)y»WBõäU„aØ›N%¤býôŠt1 éÜ1eŽÿ'²I-èV•Ã9«&×À5>æ'ëvæ€&òÔQÇþöƒcÉ‚àô%®Š—´Ÿ: I£"(sMLy+AFþÝ{7Bv“0o9en«Æ*3“r↺¾’¼t¥@qblPê” ¾KHR'Ômò‹+53Õ&{ЇC-L(ÔÇÛúBZI"œ5N¹!Õä:÷ Û©™ƒ…TàÏÅY !ÛãCAwý.EVþRÌÑŒöBV70“Þb¸G3QªdOH¼Šñ‰ÄZr\ ‹u7íªRR—UÄ}GDzNœL˜xWÚ´ XR]E0ý@ %:‚¿^Ð̈@™â$| bÚ{Ì*PÝ…ZXlyZXá¸4]¥Û“²áheŸ¹ÆÊn¬Â³u féýqKØ´Çxr9ÕegœNt öà»È;ÛEºÚ‹fž„ê1ö•Hç'ô¢{ó¹„:ªéã·F°“aXùü-*¤ˆ£/5}ÇlRÕÒï)bƒjÅ©ÎÞ6qê!üÁÛM`Œêã/È2êt‰GòQ¢!æÄSœÌb^|¦m—/)†]¹ƒÒœ„ÐljÀ(€Cu Ð«%=/3©ÎoU==“âf¸“IÝÈÛö‘¸DñgÝÖi>îtzvj¾?–³XÍ4¡y§;ù{[a>µ5æL=σ¾×Øj§ÎÿG7¹¤¢û¶lÙå¬ãˆOgˆk*l06mFÉÊ3®¶.RטOàÑÆØ†JÝú¦èÒ㕊.ýþ@èjsÁ–øÆEx$Þ¬1ÍÈàü½À<˜Ž1k‹˜R=RÃ+w°ÈµæVwqKþžòý»hŒ¥yšóÝB3tNWˆTÇ2g?Ízü1[H±gÉ–7<ùTt-¸[üڥÿqn¹r—Vt[—ËŒêü:~*ŽvYhæËË$̹ÙÂÜa+DR¾ª3ùs¹â) Ðl½È˜Ö4‹¢n¾_3.œK=C…/ ô×€mö6Kmã¥ø)ܹ5¶ï½¯ÃÃ] º‹‰´þ©eî/Žøÿ TþÞŽa­V tÃöëÚ·1‡ ˜ù[Gt%5 5™[Ô¤SÄ€dþ7{ìÒ9ç‰f Óu2€ËÚ 1ù~øTj¾Ý·`&¸Þ`iþû´^³´ñÑåµÕ]`wÛ%ž£° v¥PI?ÞnrºŒH£]‘6†Ïhw2æ–jAð¸ääœÄ^$‰Â¥‚Å£=ä…÷ ¬÷xÖ¥^¥ó騆úþå)¶½ú¥sÄR2!ž\@}çbM_W¡å^JDsÒªÎ$«Z^uú¬ƒzôоe¦Â ¨AóEŽ:Wµþÿ,S Æ>hIô}ÁæÝš˜i`w[³èêÓPzpüÃÏU¢³#JIÖÐîI¹ú0WÐÜ¡ a¡y‹’l?ìo€ÝVá*{ð¸+î þ Úª¼äRˆ3†;ªo(Íwû—ûeã-øMK…­L <Ü‘AµJk4ÕX7>»iï7¡x,8º0?qšc·‚ ŸŠuêâ¼JD`Idi3ò×— â]½–´»‹Æ;±?0*û#.KìØ.€©bHŽNƒ_‘iO\i ’=ðŠQ°\£íÈÈñÓ&}7Ò%x“Ôn-Ŧ3òNmÂï¼zxÕTÉIÒãó0L^+$ $n^¯FµÛÌ-Øy»êóS·€œb½žÆÆL¼.#Ù ¥3G±6}LUOõÚúõO‚‰‡©þÔñÓúàªC8 W³¹ÖÒ#M¹ÏE4 ¥|`óbšq¡[~ŠÏîÕv¢õ[ø2^$Èž<ʤý¤ ¨zèfï%ìá´ÇPÓÃ"ávB°)%¡ÂõgžÁÀá%‰A8år3´¥´6ݧ¶×Õý4‰±Íc4‡§›^WFu¤¢6>kYusöƒ•6=÷F¶oyX1~X%OÙTšëy $jœ/ÊÒf¤Åúœƒ›*8´fÀyZÎ|Þ(“†^žnµÕ஥ivا\× âaZD}ßf®»v5ÚF¯¤ßºûäz¤ÁUø•Â[Š*„·¶$ïB0”îÕ| Ž˜h¿úlÚu¿ËpãrÅ\×´bgÈhId:*·m¸’>Uy>>¥G šRWëx­Ëd¶Š®0ž³I“0R »n¥lül3”ÍÑüU5šë&*„Å© r6Ö…±é¥(µPßðÆX„ïóì®7aéðÝy†‰™bŸgŠWJ‘jÙˆ¡o*¨TÇzÄv€žÑ륉¿Š'TCÏjI#[f&8vÂ6·D²:ç¥;ªUDÂDØd¢âó˜JÙþó¥SVÚ}¬Qìµ^3ìĶìfÝ´hØ/X–sï‡Ý'öpÓ>sÓ¡{ÃÿìS—5:toäõ„§ÜªãjM’ë”ÙX•Žª[øÖ­ç"ž{}åö¸iղ˅ä©à¤ÛðAšÝaævÕ“€›UÌé™ä~¾Ê¾z>é±JÚ³?ÄÅf% Csø@g>>Ea¶yx„¬T¸% YëD˜è´¶Øùpí’ ™nBÝišÚ¸ú†jÇ*àQ ÙóLÉÛñÓߟíclÐC=-U?ô©‰Á±¢\4œ £îQÎ 7·‘BÚá6=“ØXY‹#Èš¤‡ß©ÔO‰“N]†ZG—cÛàÑ¡¥èЀvAÎéµ7>«: ËÙì]%ͧq¹·XWú¨n—ÙƒA/™75¨þ\ïCïµÅ®„ÛÁlk, ïcóó§v‚¨^þ™ðKtghZýÇÀMŒd¢Ö&uI‰*çÇY3…ü“§<sd%Ç±Ò ôÊwàžC^Yl˜ÆÚü)c^¨V-p6å*OœðèVÐÐÛÞYO±;©z=!ƒŸ™á<ãøI•¢bµc°²gF …Y’ìÒ}{yŽ ŽýP·qÙà´Éˆå„º·ùÌÃ~¡T8÷U'¢ÊLí ŽcšvNš]~ÖTôs5T4JòöÍP¾ì§+K‘ ®‡¾Ï]èÝh½QrÍ¥ƒ¸«z.*ï7=uiðn Ljh­Ãi  ±¿?²m r˜TW#h?s˜s| æ³\»ád–ê¯R•>Yú9;fÈ€ãɆ û­ïôN'ýâ5âd’™fƒí6‰š×w­®²8hpÕl-µþg §ÉÖÙ9cÁ¿ÓZ 901v±ÐÅD™…Œdš «ßDZn~ž;*üµó Øÿ÷2.=³jcX‹Û‚²mMëL缕Ur¿pv}vë]èІM\ åna÷¸¬–{3”IXBˆ”Ì[Ñ䬉Ü5ùi¬úÉïA“½ ]¡òNè?“ĘäôûFZ Kðbl]™Ã…ËWØ'•C¾³XŸsçP•_Rè©*sŠŽ(},\ÌM}+ @l­|È‚r”»æ4¯ÞÃKV¹Ï+µë’Átr-ú:k¨þo6RÊòÍ36:·œRùvüÒ™†ì?E„{ƒáDŒÄ}ÒöÄÁï{PÐe`ùt¸k<ZÑþ‹MaðηõÔ5FíÍX|‰û=ë_"‚ż ²ÝD©Òç›uÁ“†È±ynꫳ(ã*Kíç`QS íÇ¿ù¢HJÑ<ú˜‹·7Z+ñ<ÇRB®5¯­öeÝìêœçA>^èâÂæ°Ó?A FѱæŽCÄmÅüZ¾)•AlX=˜ =‡ Œ>±\:Œ¼ëcçÌä¬pNzœWx‚ÊÇHR ŒäšÛ« 7žç:_ì¯ÂÔýÊ׬œ¸ÇYóÌ\@¥úp¹Qf×¢$5ðU#û/¢s1ÒÁÉ—íðÏçs1#Ð} Ü¥d¶fKå³w¾Èu’å÷¤¯K‡±«InÈøñ*»^ð\>&•_™Iø)á‰GNDÖ›Oøv¼/{×ä3ôä”kË“¸ åe{º‹vÁ(N„4ÊgƒŠÞƒZ@lL›ÁÓ`G…oæœ ñú÷[ôa¯¯ŽI޶*k4Ëu—wœÔf‹þ™ý1颅¹*u™Eø¶Ä˜C:‹lºU0Êõ÷¿8ó4ûóû'\§‚fI†™ »¿jÌK°X›·mÉ%£°µôj~W•Ÿ»©X×#Ö“¦$¤•BØ4J× -T*×ðàù,…¦qµ—Å×ÂU©šóJªÕÍLCwbwn$œ”Œ-Þ\ÀÃf1ï²±!Õû¿€ÙT3¥€Ÿ•Fe͸I‡TK"—qðrN/­,ÅÎÝYœºÕ Û¼¡eŸ õNݳ%ÁDÔ¢Ëű´¡—Œ„"¨¤ÊÊMßc7ÎsT.…™ÑìeŽæ‘hœH*\–Z°á7“« b—í ŠñÜÓÙ8¶BHÌsÆ€³FÒÖï z—¦¹ö2·púW´—a ª-å\h††›ö ÿ‹Í°ö5aýŒ)˜õÈzn’,(ˆï8h“Ô,õ[™–G‹¶^ ~÷šd¥*¾$Å€A<ލr£¦ˆ²d|ׯnN7½r÷[úã6} äGÁ4ñGº÷T5žâñõÛi=‚–t°Æ>é•¿§³Xö’¥ ‹.áY "ÐTé2yò³”§­VRòŒ¨o¤&}2n‚5uD0K°Œµ¸!gXbÑ×-k/Q»ñáå* €ãÉÏÿJ3|Á|àšçLõå&zÖwàÑR .Fb‘Iñ à6©¢Þ¬ÏÚâý‡ÇW÷NÄJ¸†øÖ˜Wúl?œå¿ òov>¤ç:¨4ƒ~…ÅFqì_£²f…Äx¿Þå¾%nU>0«&lIuú¦gG}µFë Y("ˆ]ó1竵=Ãñ^ôÂX¬»°'îÎEñI0DÐj°^œ+_¶§òVù¨eŠ@£0X»}ˆjcÛôù 7|€\“ögÛ¹”ê øhóüÿ×’Ä៕FOz8ºCðD˜)Ç>ë2³QÃ1@~T£ÊÄE¨Ï¿âoa†#£ýí›C ÚKyÞµQ6‡)3zél=÷ãýù›*^'dƒgÅåà‰’/ÑôtéR˜¦$FÆÆ]Ê<$é½læ¼<»’g’' §àLÄ›·¼G>Ávé «Îýl ´¦€Å~“hW,7Kþ&‰É­©1-†d ˜¦ÌHΕ§Z3£)PŽŠËÁ ½s¶—èí1Üô¹ûÙuçxMŸP+ŠR¹iÙq…ÈÑ«F#<—ýË“틽LôjSÐ$&pv "·g)%7 Šæ ›5Z#b$ÝÛ2rMΆŸ›F©ŽA¥r#œz¯ðžÀ¹“¡ƒü„ñfw ÿè&AŒÿ_©±‹MßÊÊ1B×@5ûë¡Á»8SÒ”fƒ­úÉ™MrGlú 8l<&_xUÁ()ÃÈï⎼àÕ‹»0ÄÙä¿é†0(_bsQÏ@›ßGÁvy¤ëT<Û&h @Í+èÄïP5‡°’p› €IÒo«e´ÊÑvÆ©=Qûƒ‘ÎSô„;õ~ie‹ª.ºŸÊtâ*`ï x{© MÝuC€¯âøá¸j¤Kf˯™*ÉqGLa-åÌ»UHv]‡UÌdò’¬Ô*¸Öõ©]°¤6‘v°ò7úx#ídú*c ?ôÙ´shiÎ0f¦‘AÉ(𥒩8æßÚ2§šJ=þ]‰õ/×:¢ djTòc(¯{do¾!âh4$CÜâÃ9(6ן|[“t {Šù03e]&܈ÅQGPiÏeºØiž'©Ÿ6C5©ESÚí ¥Ð"®X~p[Ì‘Q(e®7ˆ¿"(ÍT€æ„›­„‡z³ÎUn}em"û|ôˆÒÌJ6”yÚrniFT‰÷@ò4¨ÎymH i7¯Ü^â¬'Æna€‰u9jæv? Õã‘{Y…ñ(úÐP¯SŽ>¶z2‚šÏÓ† »²n€ôJu¨ìW6;Ûd¤fä¯2ÁXói²^»j9¸âtOÆj|“3[Yþ¨®¯"­§¼ˆ“š/¾nUÈà/†{ŸÁÎîú¸.rf¡OŠÓ!ÈJ^”OZÕÅZJÐTð°ÄðF¯ohýKàg|7Á^Ø ý_o¨ÿ[]éèÈÅ ì;uÔ î²Fnz D«ÊŽ[/, v›RÏ€Õ>ðRÈ´°$Ä9¢æ%YôÑÈ©FH¶õëôqqÝ×WþðJ‘ïè2†Zåì+ÿ‡ßÁ”P#*oì"þiëh@õ¸nÀ©èØl:*%ñúÒI`..ô™“jüð6;0þï9“®ªŸ­ï³Ìä>‚—{ŠL¯cœž5&ÃÔ_j+z…/;×?¯ÕS¢DgW¤ÓŠ,(Ί\é.vf O$ ¡ Bá'ùŸ~=ÕFnfI³|u¾2øS¨¤w« DâI¶G”{å'#‹¹@Ÿ’ëÈúÏ2Dò";| 6›+\JKßî?½¡'¦¹÷¦àûSvŽ·ïÈ –$NórÚþ+µÖó—¶öFJ‹&2È)&tW(íDWªÄâ˽”ŠhëQóT•µ ¯bÙ¸D|ÊKëYG7¦™­,}@©ë®^6ßè6ór{pÍ!ººcóø/ù¡¤‹jS Û¡É|áÒr†È€±§6cQº7 ÎF_fUÀ6’ó÷žò~fV¼lc%½$®Zôà×–Óʾ=Íøg`´êT³Ã$«kº ¬ZUvEºOE8l[žº`1®g %Ù¥)gYCêK[v ­Uëü‰ä§2òÑ ^Òì è6‹0³%q;˜öMÄÛ>­Æ§%ŽyÑœLŽ „~~þv‡áPëB [|>3£“†ŽP A[ŽM‚†kJ%\W9fBÅ2®Ðò»å%#Û¯xÝàAj>ÃPå h•Tý“û’¡;%Oæz¬ªo/çî¢k \üVì*Ì.#b \îC©tŒêÖ9çH"'ëòOûŠNêçÖJ]MèD\Ú:ÇÅ'EÂÆz¬äªX‘h={êÎ…Û †JîŒ@¹1g%‰C–²\jX¯£BH©œitFA–ØÒ÷õÖX m'ƒ¶×m†õטMˆ^àQZÖ¢6^€Ô#øåíùÀ… © Ì„±È‡“ðÈÍìDÌ6oe•X7¨vAòPifßg  °°x¯^̨˜Ìˆ¡ª_öh3ÛÔþ1çœQ™çÇó²}×4™nÙy\2Pz6‡I9Aw‡2Ÿ†÷eœšÆ *´ò2˜ª—K…‚7G "½½\ºÙr™¤ˆvM žhËuµã†~ÏHÑË»š.Y—Øç%Ò±Ü;Y¡7ªs·Á.ª«mà¹lM¡ã……N œK P.þdTzëˆt¡‚Ô}”¹Œ™•¾!Œ(§ª¡êïé—D GN#°WI{U¼¥jVŽÆ! bqP‡±ß´–§Õ9üœ¬1Vxf”<„i9\É2L*¾…¦¶ñ­ ÎzǤ®v6‹„žk(ÄÉê ”°¢Š³¥ÔÍìjñmïFKT[‰í™ƒE/ëÉä.¯žâ± ŠÐÂ19h?H”€MÉà3á^•ô°ûþ"*µˆ 1-±¯õ£uÃ9L’··Ï˜Eê3÷Š\5ü‚)6ª;¶¸¯Ê{Aš× ‰Û£¡ê–á£Àdž »zGBœç Æ¥™üÈÎe6ÑJ hŒysŸ×®­oE¨|¥Å5Pïüí†ì× êñ’<¸záŠ5R®q¿m½nësÙáXÛ„?EqÆ’]ï—^-O|ŠF&‡ŒÀ%Ê\c•áñ•Š‘$Y´rx‰ŠHîªâÄ ¿ß) Aì=”D2«ŒîQ3·µÚ£ž&ÃYÐë4ðþR‚pðÓôéWôœ„]æ:(áó]Ô ßÖÑØÖ÷éŸôdÉB[ic‡äžŠÒ{ÂW籃B×!­‹²úú+Í[cþ…b…g¼Î%&ýšÔ|ÕEéñgÜäÝ«ÿ f§¹Šú_F`­Ñ@*y:2öMa²Æu³xHÞ9¬µJ‡Ä¥º`ˆ§ÜžsøhPe²”µÃ€¯›y‡´è‡@Ç“B TNAñµ ãÓÓó±(]è×¥ŽWH±L¢‹µ¼>ÔßOéK±èŽçR»·yÙ+c…¿Ï›^l¯4dí 1v'¡ªD ^3±m3 œÌމ“w¸ûEÅI-•cp´öZ"<Ó©Z:E¥é ”ºüì\Ý\'C?èüòÖh›óÿøY#a —²Þ[Bù%Y3Tn÷à¨tj²p®x°ƒèÎÛ#o¥äöWÆ×as…ªÿ±Ð¶‚¾élª×g&Î%8âF0g|zÔôí>3'Á<‰k:ÿgÄ6e4ìE>] ®Ð 0J+¶€ïXÐö^®ók£ˆ®Bzâ´×8ʰÎä+µ àgDI[Ù¾ ´;è4*;”h5Îæ¦}k%Bkç¬6áa=4!gë€àÌwR·ù©{(~1”ðÇ3Æ+…8¤W÷pßrx@êYº´Y\ÌüU»%í4]t¶â¶t™ÚÖnßTÁ;øñ{oîÌ;Dƒ›ît–’ôCu´Ö¾j׸FRsÙ­3¸ÏÛž<ëJ›0ÕèaŸz$n{£¦ [,JðßÊ’€T¿Qv ‘ÎV,¹šÝ[Ö_ah̺«¼¹kÒ±ßÅHH÷5y\e`8¾”Sm{CÕŽ¸S—(Î'íF)ÛÒFÄTL(*ºµF%dåÝI8VΡå! Ç/ œÝ|ì±ITA Oƒdr=ÁFÏÞŽýüa8öãs‰Ùë€Î©ÊÙyúœL¥Cå±ú¹§Ù{:•B¯t¶`ÅåQˆÌîcnÃv4ïÜJ0H®&éË8’éfw­èJ6± â’ÊËú¦y¡:éô ¶¡ôUõFH¶é¨õ¢`K¶Õ/?ÿ¥p6ô€Ã3˜äD‹ ‰?ø{Ï÷ØàbGWÊÇô°H5à˜{ñÂåyºb:/ºðç§qí~žž²^ÓÞ^À¢Š_Ž{„Ð~/ñj£ÜN +èBÁâw²õ'þ¿M­ÛF',|Q¾=|†P_+4êuÎvØÆ¨¢££}؉œ×¤uQ[9† èý;x[­f‹a4b¶(?~¢zÜ*Wyjˆ3²,ŸN¤¼6‘ õÛ;Ú/î£1A—µè2HzHkxÊrrœüJpΩÆó<s &¸T°×˜’MgÛø(ÙFñ3ä¾ÛØ:Ì)!C‚*ž"Å^b ÇàÚ:€Ö‹-½`‚ö#â³§Îa V§©í NK¸üXžÕlƒÁ· Ú1tØë¼¯UuÌy}é84f®8›-zÕLÉ“°C·fr¹öM‚1¤ÃÒë{­„‘âm\í™à+öÖ=9²&gÌÖ@œ˜Ô…ømÛî·k[³!œŠÊ¹ãÀcXÀǤÕà <ŸÊ»¿Ð•?©lþh]ÔºEj›,Ó¦£ÎiÒ°Íw„yí¥&Lû.AÔØ½Ùq±é æ|]T©õS\-GKÙ|ο¹Z-úƒCsѶŒØ–‹ÆO*"[©Tî$Aä§C»~Ç_Iq–J~>t×Ìà5yÌÉ_ß½žî™)0¹8Že ä '¾7œut _ b.-‡ BF´ñÇÖ¨ðÇfŒßœŸ«-‘SŸOýÅéj§ÌùÍa//¼r#zÙƒ½NRØ”ÉÒT¾V÷íþò‘Göжãñà†[ø¤ù.Âá_;8.åð£ÚÎC€ K‚Š—±PF:{ZƒÃ7•|±ÌûAÄ$Kþ)0ôa‡ Á:¿¤Å¥ÏQ+lÌéMð|ÝæÈÏ@ûØÍû/åkD—ã¯oãñùªä§az£IQT,@°Ü I›|/M$2—rk*e®¡{g\'ìþ².˜(Fßüù6^4š¤i€ÄòÜÜ™ö‚+ãæã‘¹„¯¯ärÌÏp° Õµ­ýX¿ÌêtB)’§Ñ“Zœú¨xŽþ`¼n9ïPhµrØØ…6ôGì ı‡u#²•|ôïEˆBüô©Žü‘0>ÆÚûí]N:ï7˜clï/­'é-6Z9?8çýÀÚÊ^Å”Evg$\û jR&|y§—9rgZxÁÒùžqÒ '(Ëy]†A+©ëf¦£ƒÕ;ÜC3m)©ÅnåæÛ˸4'†³Ì.q8,økétl M-‡»Gíø…6qÞ¸MÃ*ºL­)'eZvœ É”;ÖõQÉwÇ]7ŪÜZGó=%°†¨(½\ Ç7n#µW„IØSyïÄYøY㸗Oèß¶WÖOïÇ5ö?üˆDP°á¨ŽÂ†(ìÇLs%”.CÈ]‰¹%mLÜØ­Á \Þ; Òò7¤ì¨F!‹k+ÿg^Rý¸nÏÚ²i‚R*ǘPóý’$dú§ú¦¿¹²ÜÄ”-F6P©m%h™îuí `?ª÷Žˆ§ø¹œì$ôÕ ¾['ó%†Eá´F‹ø˜ÇH€B#·öb«R†M…ÅÞÜBÿP»!ãÙ–Âæù!59ÖD*æE͵ٕŠÏÜ™ÌÅcu8Sw´Ñëë=/j|5X»U!O­‘Ѿz{uoÍ”_‚NSN-˜+ŒS±ßjvnì¾/œ¾Cíeþ¤êX‰æ$øJXZPD&H‚7?;þ¬'ÜT~UeñTæFÖÑ뀥£:´ê¸Èû†ªOCîëÀ< é†&}ÔÖ¡xêÖÅÞ³…³9ÔmrÒTǰg@¬e"‰ßsîIf¡#‹D:´wµé•­6a‹îD>ktHë\QE˜¹®oÇW9ŸS$áœVäf&cdvr½f²Ò¥„ÙÁQM+%:ÒeN1½¦”€^]éÍ\SV„„*¯wÿze5C€6+-ý=„ï–ó¥·³ØóÅMRk0 í¬ú7ñ%Ñ&>©4F~N|xKHtî\tO­õלäE«^гQk|ý;äŸ÷É£!™±éy*ã›y*»B™n¹NðÃ]¦=šÂ»OªtrtþæþÆ$v`¸u|“N;«ÛÈM%J«¶}´¦iߨ-û€er~ÎÛDÞhÛWk•¶–‹Ú£O.:8¢Äȹ‡CJûÅ ¢ÈZµ{Rãó ¾ï§ŸÒ×¶¹œ'n]¿¬=Jäp¶—ÓCJQ€xW„¾ßZ¾>ë;BF¸!áFÁàŸVBá„sëžÒ?¶’-¬Ÿ•w÷µ 6ô+˜>†¾"[w]›GGDìc—Xw.€â†Roß í éo¹#Íaæþ¶ØÄñ¡B¸3²jt®âÙ§×óGB)'1b¢ŒžI&w¼-ÙüûRœ>RÌ<ñyõ½:!"‡‡ ®9ˆªy°z=@'uÐnÆú“úýXr\‘†‰¹ÛiZnjë|…ÄìWqÖ–¾°¬Ëw5ƒÉ‰vjÏó ù²á⺅!ê¾:€áí¿KÉ™Ñói_< ˜L#[eÊ'Q]C­?²¾±6’éÅfr—•ßýPYÓ,­ð4Ä&]|vQæÐ I…Wë2!™“/:jUø#òhž”YS,!"÷^U:àÍ…Û:¸CŒÛ7oƒ´Ô"­Þ|æ‚p9õÛo9ê·Œ#écnÖ¥ö nHÚL‰ÀbìÎã]eZ'Îl‡þìÙ;(D‚ýŠÝë ¨Oâl¸uù88„àÏÑ¡Ûö M-øõw(ø´þ)èÍ7½l/ ‚ÂOL,(ÌŽv4÷†C»%þÉ•Ol¿«þ{g :®è“ä9±iûú•ã¦(ÈÜåñmG•i–!íë©0p¤ýVj¡Î¦Qãú½”¦à0}òÌ©ÚPà\Ö3ewkbR[Êc¹êþÇ–¯ÅÆ_oÍ5v]ç䑃hýÖÔΆ »Æò^Å÷ ÿÆÌ‘¯;ÄÕ?øØÐŒVfã™?zà¼LHdRÂô—ÐZ \:ÄÃvx¿.($¸3ÔM›l]ã!ŠÅ§,} ýz> k)3ü'»b>‹È'™}Ñ„dwQÑì¬iñQA¢éjÏ\†8?²ÎS-ÌKOªV®µˆ/§Jí«Z¬Ió­_Õh¤äeÆÿO=k‰Äá-2Õó틽 »Î==Ã1I`äÌéÍn2VG°°!ÀÌÖ•}}˜m¼¤æ3uP%{Aå,èa·(ìåSuÍû¾$e2xF¯ý-d49T6síj EíëŒMªzR¸Œ‹"œ,áøÿ]µi¸°ónÊë³=u¡3Ñs|Ò.Ï"µGÂu–`þ êV‘"Nû€ ¿pGð‹ƒ˜±—Oi®ÏÂöY‰xÄ‹Cãm;ÆÛ…Û²-$Šc=ååǯž #b\—QT.& &?9µÒ܉hÛVm“œÓ¡Õ¢Ž ŽK>ëæH€$Y§GŒ¤vŒb“ñàÿêNüUªYŠk¦kã5ûì.Ž7÷4N×vþ:MØßÿ3Jâ4TÛ¸Z€¨!E,0%n¹‚ÒÂi‘'w¤ãe(?á9çyŸÂ ,¥šº:~g}loc)‚÷þÖü}ˆºÙR3WП¹0%ÙÓÿ(–75W?«Ï“ŠÎ¥|FsÀI¯÷ƒ“ÇVmVnÔQ@÷ÛڳCé™ñ­e°BÑšÒ:½?ºäϸ3Å&ñ8<ñ®õ„íÃ,&—u Ya‡óQ[á×t<°(æ'ùÉ„UãÃgçº8 sÈ kË^3ѦU€5GwùÛè£èZÁÍY·ÙÓVìGë…Øü?áSɾѹoÑ3a¸ž _kÕ’j>Ï´P;4P¶ö÷IÖ(]®Ñ²XxÅè»­éD$4À“0ï%!á¿-a”«¼DöWc C½.®t ×6¸$ÿË›§þKØò00ʲbzØSØ5n R3òÉUáÄ^²¾H²tø¸VÌ%HÆ…Ç™š“º o‚ÂïÓF+$aÿïd#Ó3ÌCCì21FÃ&,/_j@ûDÜm;ãÚ|÷;ŒöD!ÖëR"£‚­K7Ω‘(n¶ÕNyÙÕÅùk_Bçx´ÃÂÝrÛø^¤ëS%Ù}ï ±o¾ôcƒ¿‹’Ô®èa|0…zÚ{=àü[sœÁξ_E%ÞSãíη„:B‘Sã(«Ûª-UcàÏDý ¾f–zö Kv¬¬¼Ó"}x»„<J¾2ÒÛ¢sAYª,½Å{l0ë9B&Ԁ黕~+u3 (“°ÿ?_‚`µâ}†sñAšñAˆMÜ®Û*üóìUÆ)8Ô[ÄÔ¥ÚtIÎ’QŸ‘Þ3ÀîôþGNeVý§Na™î‡¥›ÂäƒZ°£Ò/àW 1)ÒÇ~%Ô~­òÑcUÁ2êbh"³7©J†mÂû/6:ŒîŠz¶Ú•å¤ê«æIJÏå½ûô®ÙXõºž¤ 1Oe^­[FeZ¾«,s|V \ÙeÝÞàÕªk8Y[e{3)&&\{_[ŽH¿)×¢»#Wrì±™ßõk¤W¶8]|G0´TÞlSn*<ÞÅ^EdÁÿzy^nouò¾ås3ßõ—†g©©6ø òZ”"ÔÎokD…k>í* ¯.;Z7US^œâ ¸[b™Õ2= .ÿº!:ž³ˆvƒjX"šp]ÊpŸù”Õ›¬oà‘#_¸·»?2k§aë2­‘©æ¤¹Œ®ˆüÞð "<œçü¯šN~ݼÑâtÓׯÆD³rF|(úh‡wvÝïñ(ž&ŠÈãú x­ ý¼›¯@ YŒÍLŠßÓ4:—GuÛ¹Ë)ïxÍÌ} i…å9¥øb†rq¼ò†¢‹ÌÎBñI§£fÓõÙ€÷^†É'ëh™L¯-“ìÔa¤ SRª’ÏZߺ½DÛÁ…P)Ê’o@ÅS)e t›wbžfïˆt³ï `þšç¯AwÌÅŸ¢a¹ÇŠt'ò‚Ãà „öÒ+âBgyŸË7»‘‹©…ûn”®˜•uÁ¡õñ#N_“ú¹jÝy.ÇŸ4ñ|ëÚˆÞù¦L.+pr òÙL/>ÑðažÂ0Oðœ¸É aĸQ,+ ?=£fƒWæbð™Ö²óÉïâ®ÕáÆ-Öû^*¡4c’Ã$V úMT™‚CçÜ›ÈNΘån»Ù5ÙCõCɪCÓÕ¯ˆÄ{¯”UÃ{¹NëƒÍö…*9Ú^rt0o\P°„M¬8+'K#Î/Þ|:1 &²^’tÈ¡J9 PJ®ÝšqM•õ8Àâ2NÅðÇ<|zI)鍊÷UP—?ÖoǹF‡&)¥Z‹*ÿ_JÜLʬèÃö<|hn¶…†;Õ Ÿ$ BÉ•`Œ¿]úxµ3î‹ÅY¸ÚŽÂ»7¤ðDä6’âsŠÂÅ"Ø“Xb‹vC° ¼¤N9¥‰F5¶m‹»¯RY³«ÉC.‘~ðWùWa£ÙÆÃ%»Ñ°ÍF¤ðý[v—Òu¾0íÆãCë–ÒŽ@MLÄ ”a­ÔÐ’¨ˆï\—Ž|A¨y{øvZ“©9 í£.íæ"P—d~»áXF N æ²jL=’F¼/,EàyêO“wO_j‚¨DþÙ4ó>qEˆ³|hÙ8?>Iëv^K•VVZÎoK;)æ¶Æàg¬z¾Ý‡E|•lìS޶faÅ1Á£ÞØÔa.ÐÜSÎÖºUߦNW”þç¿ØP·¾®Â„EŒÃJºÂàh üê¾·“[ÎÕb¯Ò\Y{s‡LÈÂѼ¶Y„ê§þ<€/øá©F2U´ù 2´Ÿüg¶9pe1^ãµ¥X¶–$ë5”-Sºø u;^¹`#ÛY'YÕ 4…MzâøGZ£N)e•.°ÌaMä ä®ÿŽF@Œ‰–äÅî>ðòùq‡èñxªo™óòÑaÌuúxÎJ)Ä•Æè¨ÀÃ|^âg¦¶K&uG›þìòÄ“#„9>²MÕe¯oîR!}±(KÑ]Pàtå‡kjˆÔ¶XBVšü8½j>æVþôÿÂÀ$ùž nEw‰.¡ýS0Ãp(X VÖÕ•¤°„‚˜Az[átã*ÈÑÿ âG5êV°E1ürÆÔ¯TÓpÔ|<˜¡Æw^•BÝ-r;¤ïÚM+M× 1gøôÓ¾N $"? Èš}΋îbÐnniqYPÊ¢ £¿txÚƒí»ˆ)aoL<ÌÈQW:醭Ñwá^ž‰‘,»èœkè–pb»¹Ìüqµ€ÑºNSˆ1¤ ø\6&³|'V¸s!šV#ä]‹SMÅwø«ö”\ày[ÈàAý=Jðž%ޏJ•©TÇQÜ4ïQF\C¼Ú3¡äŒ3ùó’/ÚCR-‚!“¥`öf ü#yÓÛÇ”ÁÌ´ ÏîKÌ´Gf+¤dôË p9~°l0§,³ åÉÃtõ×i{6w§©Ã2IlÁ5±Îž¥0ÞkI;tö|QP#âAséúÑ,ì|ýG+kœ";DI‹·](pÑ+Íå¨iŸDƒ;#—-5ãüjóSÀ.¨$¼PTþ·9çRŽŸc8sÏ•à3OnfªFÓ™¤¯Gd&¶.–öêUM6óYAïqø²Â ®%N]IEeÑÛK6òßüàñïMXWîäâg?¬¼RMÌ\6¼èi!>E^|MKÁ†×“ c•‚ׯÐG"Ûø7îçá{×5UÂ;NݦìcxæXâ\cï|nlÊF.*¯R½ëJ+†y}çjÑ®.TôÓ§”‹uÝØ]™œ£M%ü : -?ÞâB\ŠÙ²ìs±ˆ-­xoÛx—·V京A¼lEŸZ¡!L|M~9?†ˆCD®L¬Å¬€šh$ %;„ì$hÿ !ýÈÍrí~Ž]ŒÅè˜ Ù;€2ÆÄú4„I¬›qRaüYí’51ñ«j¤ß|í8@ˆ1!µ\]#6Ñ!í›™Mø:M¾›9›vzU&?8¥}qRÈ <„ßs¶îà V^¥|œÅ"A\1‹ô¼1<¾¨ÓGklc6Y",¥°­{6q£ô<®3Í!ÕS¡q\Ó&ËJ°‚Äå~r•Ùæš©Žˆr‘v~’|œ„Ì%YüxòtTH¤Š]µM?Rì¡e0ü±X÷šÏ7eïNò[ô` Ú#¶é™ [ቅÐ÷Tåíñ]Èæpó·Oñ’± ç,-cødk\gâ&…Cô¸&eYÈÑ-[†\õ%jT;=mE m<Ùh¾Ç õ½÷zÌδõ ±C]ð i~±Âh}Þ†¯þõQ,<>’P¥«±!hTζñpÆ‘k;k#9Í)Q-]‚åæº~z¼=Í•›Läô‰íê0b´£øÛ+ïzûìÌõ:Ãw˜ÈóÕöŽ¿œ7›¬¸¸¬Ñã ±cá3‚«|DŸKÄ>—¶_WªRc,ñç­4ǯŽ|„4ØÀ!;M¸çÑùwÞá ¾B‰@\ÀRl‡ÑKõmÑqHÔ²p]|x2H~“o]Rê™ ŒëÈ|€.²ßÞ‰%ûÏW1br~Î`†Í@Íô¢]v ,éûß}žW½ ¸‹AÞv›oÚâÒâmî‡>g­HVb¬g§‰Mbnï1F˜û—¸®&߯Ž?‡‚Ig ¡äc U4ç\l¿Á9šeeëôxºÿ¶R K²Â3ÄÌ?ÜS›ÉZ”ÿx2cœâ=Ç”³ÕŠñ͸õj ¨!£8Ó©häd|'!–9wÊKù¤_Íir´á,™,áíÈÑv£ÉrjÇØ"ß}êðìã·‹t%eFÐz‡Uˆ‹Î‡œêÉaÞÌ‘ ÑAšý»ì°…ô¬ÁŠÄíª(bšË{Š]€\7²G±ã5h)É‚ªGÏÓ莊ÚuŸÀKh³ÙUê#TÃjj`(C„M:ŸÂduùïp¡ùà• 6¹„êl 8‚‰fô6Bm:–×8éžY§U5Ž V°aun²Bðüü“ësÞÀiGIsg,špgI2ñ:¨´^¬Ñ*Zê* µ.Zlñ|£ÙD+•±¢ÇÞ0¹ì€6.vAþ!E>Ö Ñ «8ì­cÖ÷ŽôÙýŒáâ¾Ú¦Ù b1&¹÷=¨öÞx«”WX›[<«ª‚Qåwl~£Ðb˜þè+60x|©SÀ‘ÿ<ùø””èQô=¡`1Á¯Yw}oF§èÊRdKé'\Z!’Îð¡k–—½!1ð3†™7­ûÕÞüiÞsÈúC¥Ö‰P8ܶ‹:d ç.âò¨«¬ ï‹íÆPb¨C´Uþtë³vmd 947~Fz„GtÜðÉãIžÐj”zæ2¨¡øŒ¦© ß;rË N<†@îjuð^¹v] «oƒ¸~‰;ß]/oÖµñ† b5Å ÏO†_{ Zo¾Rv b3¦$¼) C¬`aii¦”úv6™èà&ÄëÌ“DÜî ) F¹NÀ\©Oa`n^±†ùÚöQ.— Ìù¼¾îªQ]<îâýï…%9€Ö¶Àubr"\•Ñé„¶ Ókš*­³ŽÀ6Ž”ß=|IÉÂ.t…——nAž™{ðir¥£Œí€¾òDäç JØDÃdµˆPDÌÂxçQ˜ª¯jE—iÈtÊ.ô>`¢g‰QxÐã¶PÛHø7ÃU×H¶¢{E|7·‰É^pK€÷²R1X]ˆ„âj?<\f®Æ´O‚›v¯©¹Ag¯>t&–Ò¾³Æ­]xdPG‚›0Œ§|e¦æ8~Æ>; „’.}7àNÄw·2’舎ÒJ:§"v`W[gÕs&8I«kzèȵ9Ï‘†ª 1ÿ¹Ýæ©|*ù6hZ§ôl3M Ú¬²¼ê»iß­òseé?Âã±}½älÈŒš\;-Ì£sÃX7giÈÿø ~âþÍÈ|ún‘Ü=ù4ôåðeº„’üO*^Ƴ&fþØu»ö… ª²eòõ8ú8õpÅžWuz4ðgu¿¨és[k‚LÞB¥Õ‘%czh"x—-ÜDBP: §AúGÃõQô”¤¦×Á­±šÑ©üÉq%ïZ–×狎§›o7S`ÂMK5y&µËêÒ•ShˆÁPLQØù®¬+fï܆,”s±ýežÈ<ÿÖL/× 'B|÷øŒE_”|éƒ:b¦úߥµv+îLÐ1ƦlÅB1߉Çé¥Ö&FÃ&Åû¿fÅn/–1I;…F3,Ü„Œ·jþèG— üökÀ 9tVI^§ Ç!Ö‰ïIHëÞ¤ýŒÛNz†}{ ¶ n÷½l›šÌiQƒÐ&`æ92 §ü-Ð0w’lù/ËÇÛÀŽÑø®ò.^<Ãi}DBàÒ0º?:ÓyäX´#¸¡6Ôˆœ?%šW g”ÌH°rßÜÞ‚š’É…ˆjfÐfCã›’Ôi :‹ŠW.øªáb´¢Øøç<*cðW¬FHëÚ¯ö£±‹„kOH¡nÜÏŸû¸ñLŒ…Ð>lû""g"éÚ—ÀõÈäØÚµûÖ7èž:Ñ+Gÿº¦§·¿ b˜9‰Dæ­ñ¡ ußÑíl^&øʱÁ@寗ƒß´$ Þ• ƒŠt†Šú4~ófHàZp8 Ô]*Jv6†GÊêôŠÊ'Šó Â>¡ C+æ´Yæ®Kr·:šR~Y]tt'QãæÂý°Já?½/¾s‰Q¡^ ?¤¦–óh¨Ê®ßS>‰¨í–ÂãIŸœ3ù_sHp`Ãv2A|(ÚÏ„WçM(„# 9„cwåCWÜL§¢äûØxyƒÌ» 2M¥%Gã#S(ƈ†Jh¶ÛbaˆÉz3Ã8/׆#O€ŠªðZ¶ü‰9¦ñõ }41)üqkˆüò«¶¾?§ûÎÓžõÖ0pòy½¨¦.iô¯ áý !óɛ׿€ŸF¿e!zÑgq‡QÀéN«!sÕ°«$ã)ìD¾cíV Â µ-±UÑ“µx-ÎÔ~£k³N(ùhC¢9rÍxKCÄ=ù§Á;w§ƒÞë$V·w¼wˆ´€œö8ðæ~70@aÄCé_¥ºÄûÒLÓ{£gh¹°¢˜s`Y«Ý ¾g’ºÇ"—þ©ŽÄâwÒe8šž«áœÿ¢iܤÑOgÜ2V FCr«nQ ·¦Fµ ™zECÒÔk Iš q3xx‡”¯l4 ßß'\ ‰B‡Ì*4îu±DÇÙÎé˜íMM@)È©“Bˆ©Ô©¢õ÷pŽŒmœ ^튩£Tk²¦ÄDZ‘©c–C4q›ôš û<á¬ZËU]˜ˆØšsvòøS¸ˆÞéJ2¼–þ¯iþ* HRÄŸÌà9M°–ÒCÜ·6çœÙ`K“ˬÁàÊËš6—»( P ݲ‡¶é¼àa??<Û ¬qqoÌ…x=Ó‘¨Ñ|ÙœÀÍÌ6JÞ(~„ÅðßU:oü'p-ÝÌYõ²³oë·HŠÁSVŽâxÔz`:žœxaÈzPxºÆ'“C„fÃRškK›`QMAe’žRL/ßIAõ&b$ù;ëb0ŸY@/Ñhã#5f€"ªÖ`Äç^Ïa]¼U‡ûiXŽñµ$ ŽS¬žŠN#Èì ô×Z¯ü°Î»‹¨Ìb q‘ÍÅC¯ñŒânÀ^M1|&Ý! h\²ŠªÚ2·™:Dž…µH¿ÛÄ3QÇ^=ÍJÏ,x¸—À€7 op¬÷ÀlÖjï¾ Cf¸ÆYé†Eå>#ÕûQUdå¹ú òröð1|••g !Õ£±2ªôû%{#£#ZyYÔ†ëJaÒÉ04FþnÎY —.Ea_ÊS9«9X-::Þ)E·~µÚˆD׈ˆ•ê¢={åx“Kâ¹Ó'gÈÐ;áõW͆áqz<üp–°Z–p7+ð´ó~à=Ö‡Mp}å¤um0îö²¤("¬“ÒùX…ÿ€½ˆ˜T¡~ÊÓ³/*‚çº×¶½l~§ßM‘}5œµØ_Žç(²’Ьî+ôöc8b„‚‰(Œ]®ùdpƶ‚LK½Â?*\˜;­gÂDd?02Q°’0 w¢„ß¹SîY]³áÓ1OÕ•§!ª 7ïCš&h~çoÝD“ƒ6JmßW%׺“ÇõtȆ?ѲP}a´Âm~…¤·.wÁ]}»!Uîo=…T "°¥EžŠ]ñÓ ÷6ê|ì¹Ä¡–Uä4Ô SºŽoÿo1nc+œÂ)‹Þóß>m‚ISAi¸›É#”°Žqá©™Û×#ÙÇ?ýøÅ/Ó-ÛØ¹ ׿’|í³Ø:°=ƒÎïÔ–2X£(3ßÔœÉçÚx€×8d›"÷šˆ¸¬ÐÞ¿c( R»µ2I]ÖË1“0Ù¹kÅG²%/ ÉNN Íae¹:y3¨wÅsë=m.R_Á$†´vgÔ<+&ØOšÐ‰þÛ.ê÷FaC0o}¶RÍÈN…ÍÚpG:Ö®Þ BR9ˆ )Íè"D€†À67,öZ/óPל|¬ÖÃ4—@àÖ…l±ü2Ó,ª…=õ[5yÃìÑÈ<–HԭΉÿ–c—´‡,=×d•+jrÎ ´)¿iÍBTv¯ J[05ôeóRÚœÐÛl˜²¡~™$k 8Ò”5ûh–Ž¿]§2w i ê¿5<‹•êY}•ƒçµ™T.Û¤ñíÅ¢:J <°FØÌ;Ý£¢?ô´®OÂõ4vÜÄÊ…ªSŸ‹!y“•Øa\ y“Šä’”ÈÛ¹ *ÏÑZ7K™W,DàûŒ|2]gΠ…>øøAEи>±€8:‡WÏÀx,¼¬ ¶ØŽøDünþ,ÂûÛQÀÝžSéÕ K ¦¯×IÁ¿¯õ%©Éÿ¡žR'S†Ù @RXx‹(­y¦Ê-É‹? vñS€+Âj0"“âDÚÈÞD£ÓS˜«I²ÃFMÖ jüý•ß:Va†›í`¥µ¸P¦œ@îVvNmædµ‚«äwœÇÔÖ,¾¬UñJ‘vñ¿|W-i’B›´''<vi¤×&ÿ’ùU T…„ ªÌ‡ÂJxgË„`Ÿÿ ÙL R:m:$B"‡|,âlÈû,c— ™¨‡+ªo=PD‰ý'-ÛsSci÷GÆyäÃÒo|ï²Ñ#øoº"E£¾šàúü<ê—E‹Œ~C(k‡~Y‚ú)J{ ²Ì„ÎÉPú˜ÂÐe·c?üŸŽ`þHmÊÎa24J%tü s%êLýÏŸ³û#†á VÄ•Ôߦ3Œ!däµÖÅ—ÍòþéÇ ßïUû [V…Œtd‰ö°‚̇=±ZwèÞŒÆûƒ¥àõ¡öo\˜ï¡tÌwc®åO£îd´MH+Â8ÏB« µ[Ô¥x,ÒdîzÂj¢a¼dzýÏ?ïÜÄ $nc÷ÀçÎzêºg1ý _ÊŠœ/Ì‚ÍËãÿó•w‰¼ØÔÜÔÚeRJÁÁRгö¸ÈKGÓ¸Öêk‰ŒN~ ¬#ùqQÖ ŒÎç. š¯Nh4T÷§nEB9BKƒN扦ö}Êð´ßŒ!ùòõ^!‹æ-q)‹»äOΓ¥Òwv§’š¸Ì[…Fm'УÄÕ­×ßtŠL/„ð.ÈQJæ÷½Qs0¯éÆÖ!áþÝ)ÑtÿÔ…²ÄŸÙÜíôHØ.4#òvÀŽ\Ì?0Ú ¾áp;=w³ì6x!ù˜ñÌ{æ¼íÂ_žëTû7GðX†¹Twz ÷ȱw惸iþFèÀã@ ’ÏÒ« øêBÀ}¥“,?˜º´£ñ÷6j…ÿ\ÿõlqxx9,øS2®/a×"¢r¦'5vá ^¤;š t2ÞŒWˆè}C„å©TTG"¼æpŒÁ| ¿fðŸô4m)ï ɳ”uñ¹’x¾"y[å0»«CнťUÔÏ­GÜÀ¹³Œò’û"C'ÊsûH¯(͵¯3ZÛ73n½qãúíFÝ™[¶/Š)èUq¹¦‹ìºZNÔÖþ{’s\SŒg›+=ð/åF/Ųè´Á8^Zeí¢M×"G-F³Y-f‡’«œLF­-Ôù?¼ê=­‰ãÇ„~œMDh°Jlu›4½™ÝiÖÎ]Üô¼æ…ÈñmåH³l_,sÓ÷Ê"•r¬w»¸x²9cmtâS´Ù©1øD|½Z–!ØÇ¦$í¯M z¾ÞÿþO`äÆ˜´¹×0>~ÆÐzè"ýGÂ)ÈRDßå*{Šþ"ëQƒaþcdYtEó_!1®àdñä–ôìcH¾ž³–“`ãDü‚w£Ì-·ƒ„ø'¯ÖƧOpC¼rÜäfà€Ã–Õ¹ä|Å.xɈ;jS¬Q™ŸMZ½™nšÈqKáÎF81èµý:üç/‰õ—çȆ{â\*Gz‡‚Žòº½˜sFÖS–±ç³zìy†úp'e±³#Î]¼ßƒµKù{|ÝæÕ‰K_²3Gc6Ö7ID?´LçP©ébe„„p•[7WN£ÐÜâ9ÑåÔ¸{Õ•¶Ìs”éy4ˆ`vwCe l ·o2ÚíÊf•~[ÁèÖɲ<±oˆHUïnפ[˜ w¹7vè"`ι N ‹¡Â¡ÕM@§ëåuCñ!eu׉dß¿^-¼ü'!<Òyð»Ÿ×P¾§!4p“]|ðìÔ½‡m¸§1ÿ…(Èy Xý(¤&ŽF²Ó¼Î =TŸ‚|ÏRÛ’´t­Ç…„wmçÛ>Q¸ž’Ø% -’Ñ\|C×îýFÌ'ÄZ¦A™‡²„5ŸÂ@¿þ/Þx„nÀÁ<Ìâ—Ž…~Æ÷Ü9O Çv)ªQhà­è;eô÷7 ßÊÍ;Wb²ÿÉ-†y—›:Q„¿½Y–ò¸š*Îá4™.úK?v¹¸:â4dCѯ¯#^ æñ·ªûo›bɬڿ½Ã~'¨Á¹ò!í”,ûª§Q¦.( pÝ™CÜUëCÏéBKʰåÔmF ©ìÂ?8³¸“±ñÀT ‚<¹*2Ø…ÁSrŸ™(óщßmø¢Á­o–ȯÓz+—+]쉞ÊiØ:ƒ4¼x&]îcw|{šœNT] É‹…ÂGŽ¿»nœÀ´OæŸQê&€DøUF=iSàqÓ¯ml¨9Ut>h¬Ê³HÒƒÅå!ñâͨ˜˜;»¼ø“Ù<Év‚•A/+Û8'ßï$R’bï위O!g1Øú–Ne­¢‚Ÿ'…”V•8Úãów»®@ÑË[xnySÈ“~{ë~A0R³µÌ]¾+Ü/A*Ëѽøçâ=ªðÜDx¬vÍL–È[΄³žep|XY%R6Ü›¹VÐ<•Y4PÝ—öãjÌŠÖõ©¢ZIÚ€ÃEûÑœøÍo-âläÖ¿&¢jà‡~F ý:8%¼(5ìeÒNZd”¼ç60 h¯ZÒYÂ_N2äƒøHu¿Æhc©¢‰ØÑµÑžóy¶ëyt²Ó;GK-:I7µp¸øž*›Cwƒ`ÊH¶‚.bô½í ž²îà Éº?åáÈS¬êœÐéîQÜ –ºõ×^ö6çHô_•pV…)¢¿dÅÙÊö`18UrÄûÓk³í)7#%è°ÅPæ¦ôvÿЫ§×›ÜÕ*r 8Ã Ü ò&2Ý»ó³AKÁÈ»€“³ÜÅCÕï!ãøÅ9HžWcJÙç2ÒŽLÙ¹®˜–HµŠ8É;ççâã„/zY'£È²²äú€„l´[Í`Ž—8¡Ö"ËH½Ä¯¥p8Qiiƒåfsº@ïÄíu©Ãb¥ìØiÃ)S Ñ’íº\ï{’´*ûÀßþ°“>Å™jâü¾{ñƒC.âûq—O¹é!øéø°13â« t¾æT–M¹ò¶ݵŽK' 'R~³^Üâ1>}ZYt´¯ªh”u!f"!‘W¥N6`ú6LáV¸˜/èDõ?nó }Åð–¤–œ— ¿sàÛÈGÔÄTá8ºSÇ ;È)óßúó«MÞ_”'®S;íÆ„†R{i4†n¨º³ÙX*Ë<R§½å D*¿|Þ‘ « š1Û«ŽÇëôÍ“äÎge/TŸÕS~j†'Ñ!Ÿqx|Ô]ë®3 [s#S@²W1͸ûÚë§òÃ#÷ΨűZ=ŽºrSeC)ç F»ù™ÜÆÐµ)¥Fç¯V6lä3Ö'sŠ N»/þ]9üJ؆Fò?6J=2Èîum2‘F0¬“ÇÆTuÐXn&týX>w¸ôÛEžë­w .Reÿ‘+~È_Y¯ðŸ}ëÊg^74Ò^ÆÝ?^A5êe€B¹´É@Öa¿µ»~æóõ hð"ã€]F´Ò,§×zºù¾Ë¬ÏÈ%¤…+Ô·ÏS÷ÎkðîRÍ«Õüe±žÇÑÑ8Aዃ•Ñ5;¼Êf-,Sl.‚Ù Ènýôn²,Dè§²òôÍ‘¢Ç¯=4©È)AìÇñ¡Ãe †Û´:0Í]ÄÂ'+Þµ¢—‡W£`ç ªr4YüÝJ,ô ‚ÑŸq—׺9ÔèiÇÒÕo¶éR¿ò›7ߣñ«›‡üñêÞÿø.¾¨Ç5ˆåuã1A>¿šwr–0Uš¾ñ‰ëd !AHÇEø¾ðèÙ$ûø¾`3ÄÆ!æèÿ° ˜Qt7sò óíbÁ ÇÃu™G;bÕV+¹7ßÞ±¢¢³Ø÷éÎh†âDBFþ4o)ȯËÊ–£UËgÙ­Äg6véšBGêÑ=àzÓ1ÊY`oŠùep홋A®ÆynÝ?Sa«©<ÇBÔFë_sÜo>{ô%È“L³r~ê©’zÒ»{ÊVRVÈHÕp­|ƒrAGxƒ+› ]Üœ…3<ôt`é)„޹WˆOÅUá<¸ý¶÷ êõ)šNwhí¶Ì Ë݃(Dˆ˜Ý%eTàë&[c!¶¯ƒÕ‘Jåþ’Vºy×>—£ç½Ò#øœÔÀˆæ÷ÿ9“þ”( ¬š `°|Ó𔤚$¶Aˆ·ÝC¥%L?D[¤GVÅó©[ïÇêl€3޼kK•?31zizÚó¾—,oùzf°‡S^%X çåýñþ¦Éø¨îKÿRûÇÞAµ×yÛ„ô[Ý–yÞ’¼ ÚCø ®Lx;§R"rz:×:ëô(èìã\£³mDqýó2ëжBFQåqJxÌڨćp»¢)þ¥mûL‚Véw†3C¼R¼öa€20þ±í_™ˆF>¢öjÁýþ7ñ]´wËÜã\0×O|Ô¶áÍœ¾‰ÙTû3AÖ U0¤÷oÁ]fæú´±£=©g‚Äñ0ag¤„5j6ßÓfàäôdd"’,`µ…ñ$Ø;Eœ’ëEZm=ãÒ[ù¼á]YèÞ–•'åP©÷n›Œt» ÓÄ2fô8¼Ù) „\Óx}ðl)Äàr‡ûq;W¬YÆç¾zZ`(Lœð‡_^/©¾bævTã^¢ §‘üÁ>0­%¸©ª÷AæN>ˆLQ0⮟_¡Í0+<_)Ó,9‘vž¿x­ãœÒæ߆nñÖÓ· GJ0ßï2ŽeÿßF¹÷%êAdæD]T3úÚzµv„t ÃäÛE‡ì6)‰9dè‡7„h0È=DJ3Îd¨W÷éÞ´ïJF÷½!+‘eß„ê&7Îei-ôø¿”ËévÊ5”‚Á ÇËÏã-ÐâÉÛuÃ2ö%5ß¼Ý7<2“í·Ï&üÈŒ:é({h¶y“Ï’:0ügýÎ{š´ßû³3.4á!cX’#ŸZ1Û§ ò7å"¹¦VšU×6 ´@ææËòSÙrõèx{ÅQ€ÌA©©7Êë}ê6ÍŸÞyÙ2c™·ÔÃQI¼ðoF9‰6¯kšà®‘°Ù#$£U-„6Wzä&»ptËïm‹÷i@ý|ä³L?ªWïõÚe2ºé4ÂbQM¡²„Ââ[ (¤*1µ‚²¹QŒYüuM=—<™×¯Ŷ£½CÁ±§¯nÖŽïÏëâl‰ŸÅ–Ê­<ÓJ—6-• Î"š7F{ƒ9®ù€ +Ÿ6Ùl‹×ð0¬°”£›uüìÝÝtïÒú`è+²­†Åñ;/‡Äcyc%ÑÉŒ/ò˜Œ€€êjÁâø‡¥päB+*79íü⑊¼jR†— ëE9¸Œ/Ü‹ó®Êê,®~¥ úF¤UòSÿõíÛ°¢_Ò:`ˆ4¥O;*SÈMîè¸Ær!…xl I}õèK~EèÚ‘¸ª°^¨Hk ¾†™yIw“t¾ÅtçOea¾lª¹à™«9@ì¬×PŠÑà·¾ú…êK9ރ暤GÜì€Øˆ–Àí˜Ë'zë­”23¡”|¬råÛÁ.oyšœ3J½*‚1 ÑØ#&èØ†,ýv]kú [ƒÆÃYÎ?v?jñU‚ýòasuHþ#S,É f Я§eäË//Ä#Z¹C ±\éšu¢š2QîÍ)/?~ )XaSÈÃ3 DN J§(lýÁ•¦©0õ ™\B++lø‡{N†¨¨ÎTàM‹–aG¡Øeíq?+€x2+Ê BÜ©t $ÄÜÎá4a2„n›0(8Fnbìî9§q}Ak¼LØA½(ñ®œìx¬€äÙ©øP¸@Ðã2øïÂéË@· µñF‚Š é°6|—ƒu‡®zäW &êü…bȧ[ÄÇÙM,•Í*èéÇ¢f|füœ¶+Íhx›µAÒ—6}“–B)9Ýw§ÚK&ÀÿÇØÏkwfª§x—¯1‚ .7Õu0ò›AIÅkÄØÉBýO=º×9Á«g¹²Zãž?âa"ýQMlïT¢ܧ„E•áIÞ»cå¢È§8ʯxÔƒó&Ànuÿ2v/- v›h‘$LµS„^®õKü™Är*¦’Ó-¬â¨B¿nšØc65ÙÆí*±à¦{kCÖH6øo`Y¸ü䳸„öÆÿ«“;À&gÖeòò¸.¿5‡V¯³ˆ«z›Ö/#aYÚöû ˆ2xÓ%X‰¹Q/w1$íjÛž”t ©Z·ÃÈ?+͈Qfl­½µ–ä­ú„]]‚Sù5X`/ÚÊ+4ßÔÍÕg"D”—µŒDM©Hí¯FÇŽ§¾Ÿ€iñ(8…râ¢èÛi˜cOVîp‹p’‡¨†õ:œŸ‹ñ@Ä›4‹ÙhË…ô;Ùþ±1" Ð{ÙJËF¯Êt?®ñk— oŸ…‰Þ‹ð4A£$à&[–#qNùœ23è×TzZ†0döîiÙš9tÆ—³`–—芀z™.¤þýÿÖ==Æ=­’²JGÛ¢BºÏvØQÏËde <.éÖç¡·Sÿ«Ó¯| R!U5ÖÅ”Jú‡’—‘âÆ–ZðCzÅ·gîÈŽ=0©9á÷ˆýƾOë¡màƒKo¼l e?ÍÑï‹`N*ÜÞו“ßTib¶î6±×¨Çw‚ôv vÐ^»üm8Ú”gØæÛô¤ Š‚3qâ>f`,¾Ô"ŒŽã ÖöAÌUTëRTY u¨ðøš_1Óï·µV|’¨­øÈê«Ë©¿.wcà…GvD"H­B¢ _ÂÝ€ˆ¼Ä\"ú )œ(ÐöÜãÜQó'ìK9Y¾pXrN»\Ë$õu°p¡rW±‡¦R€ã¸ü Pºž±A2Ã+`ö¿Âé›A}OM/‚ºK¦J<ù\“çTØK‚Y`h%º•Û ‡p]zlHPÀ’Þ{ê¥vÂNAàŽ£l#±{8ðëÅ€‹°ECßlGd{3ÕrÐ$¶©æ»ÅÓ:ŽÙIœöŠßRB¨Ã-aÉ—‡‘úg"DkZ°¢?×s0K§„/kDÉšBçG6¤f(Ö£üeŒ²Í%vÍÉaÃfpù™–2¯{Át—ƒ §tÌ@dûÇò›q=ª÷’Œ 9Ïö”7V¥-¢? ®ÀØK[úåM±£†oÒNV 4äÎìh^sÆÍ‡»üÊpƒ"Ñb#—\?v¤ªD%ô¾1 opcèˆà”d.bô"MÜÃ÷Ãw-:YšÀ"Ñü‰0¥Þ¹K]Æ îf×v–´Aì7Ää)Œ¹%²TR X2Ì‚´ý/ƒQ}KÑ’Æ*2gQ)í^E¤h:ÊÆÄ$±¼Ÿ'¸•½T\àÀÀ[l\¤lÚÕkm‹·ØûžBh+Ð?0˜ b’ÕrÀ^½'N¬N‰Á™c=Xü5rp F™m#¾ØªÃ–åá¿–CÚ/íD+ȇ úk̲žô‹‡Ô?áˈ»ÄÓBÜÍ ü[ûoGñP£GX›îrÛÌüŒ r>_š 1ž/䘗·,6&)=JDm/ÏÎ_{‘v) ßR­^…ìû4a'óx®ýÜdùåw×»¢åWáÛB°ê AþÚà€’Þ,ø8”#RqЩÜd¼ã¶ÿ=Ã*§¾áÓÅ5÷mvNFRT*ô®Á<ÚóòA5ƒ0¡Ø½|Æ]jùÕsj@\q;\ºn’ ý ,ñYÝçOn…$7Üç3—É\JôÒ¥ñRâ‘÷¦C-Z“‚°ècl¨Ú2¯ï6'œÑAIE Ï?~ó¯û*Ǩf•y•?-¢ì!þü–f?Kò{ €ÜT’¸¬V­)®ó‚øµ“x'lJeº[×½ÃÐÓêMÒþéù.+lÜòÉ_¾ÊÇåa…ø½F÷¦LædÈû­R d„¾Ä,ç|ZwC‘ uu^£]tq-Êò?À¥UÈs ¯/%SV‰àz³^©@¬GͰÚ{Y—{‚Ô¥cA' rЉO¾ë}íâl>9†9ײنð^Bl*2ÍJØ.naáÆ·´£©+/“'ÃŽ´[·|›T^žÎå¡&Viëâ©!ê¾ÿ$]gJ/u6UŽ_ņ¶¥jÐdÅËg»8߆t¹Äñv)°QÎQlcŠ~ÐÈÏŸ¯;UJÛG/v–úçŠ¬Ø m€³ÀÔ^ÑóU½µý¯­ê¦Ø9š°†0ÄåàŠŠKÑX¢LTîÊû›·ûtFÊ;ˆö=QJm‡)Áx5V$HÞBæÃßá‘ЯO("×378eÄÒ;M‚6‘Óß(]LÄ ¶á£C&úàý.t<#¥ÈGIŒG ]h÷@q¦°ZÇäý ¢gr4Ñ{ž°EãêÎÊÛêJkü*¬þýö+áqPƒÛfMÕíçú„½¾q„» JîL‘"Ú9ã~·4»†Ozn e÷_`ÿx0vOÈneÛ{ñÂïŒk½ŽW3„ÇHZæ‰ÎS&†#Žñìá^y$A˜.fˆÜ´}ËÀ»ÆU´ê¯B²ÉLfõý“£Woï äÌÂ-Jt@,Ï`Êí”ÌW£„Gàk`’‡Ñ@ÈßÚ(»[ø1±äM‡±jç× ItÑH˜É‚ÉØ17(ÀSÛEáQ@_ÃI›jë* 6²À4eÿ $Ûš‰‘žŒ™B#̧kÞ‰/‡Iƒç»Ò¯-ħüsÊ=²<šßÎÓgËJßñ;Bp™Oq\ ‰™égsÙ‚Ò`X | ¢ÇŽà¡ÂŸìïdú‡Ûƒ6E¨i‹J!Ñ©\‚ü6?w'Þ6ÏŸTUì‡ùb]z‰[ò¨Ûeªdµý+³gÛPîS`M¢êàbûKÍè|“‰¶&,ƒ“CÉ`M;jöÕ»‰)°WìfzŽøÜ pH.ºiêŠ?8F£Îö°”5n”ù·ñQ°†¢¹IÑC™‰ØL2O™j¤ahÈþÛ‚I:ZÂwáÓ¨òXJXt‡rÞï*5a™†Sª¯a/vò?–éú¶²§×ߎUŠeÇhFCòב½Ÿ2ëÒóçø–™Yîæ»;kíJIt‘ýî@§28§Ó·…‡$oˆŸ¨9P ؽñ½«„ž¦NÓ f¥3Ò¤æÑr‹x7qD}*²Z¶5²+A MÙ¾õŠ–ýÉŽÉá…0Q™ivY—öîAƒ:DÐé7rMGƒùòÖh“(ú!‡íÖ˸( Óé°iRëà–—d¢Ãë²¼½ì_¸Œj5¡Î654êaò =82T\Ðçk7¾)‚UÄz»þ @\só‚' U¹mÞá1y¹j`m°ºþà!€üYCš¨‚yÒ¦¯ÓeñÓ ¦ÌÕ&ÖbÀZ²œ‰zK’1]L[kj(iæ\N àùÕÔiî·Á#£ªïÌò%ñí7aÃ’ä3ï•…ÞØÕïqõtÒÉ_]W“«¶ä¯•#£›÷A b³jN›RžßJW,ìõmøëÀN´G-±ob±Ý _—PNoãÔÅi “~µ4 xBÚŠBæ"V_Õ$ëû6¸:ôÏ%¥Y§„fÁ¾› ªj%?›2£”%Nê¡ Ö: †Y6ÅN ¦¡É J™Ð~Ve…QhÊ6tø¢ðnCX+–,<– âìë—óHJ¹Bg*‹:ÄÞˆS¥L‚ÑÉE5lUòH:À~øù>T•¡¾À®×ô# Ù¥—á˜1e§«TfÒpÚœ„ÐÇÀ. YSIwE8¾òiâeò$ƒöÆ ÜT[?…,OÚ>H_ƒžnr^|\Eñ½r«`âðØ¾ŠÎÝ)ïŒý ’дÔÂÕÛ$›fø¤èÁT‹ÜãqmæªûGrCˆzØpeÐÊY•"ÿo§"Ãmý÷ K×Vù¾–YæËÑ‚©ù½nÄPUȪI`'ç§[ŠOsµœg‘¤ÅI54-gûÀœ»Zß{º¨›H® ö*EJæjTwìl^˜ŽŸ!’û,Âê¼|;ldýyƒ»‰ˆ Õa¢ýæÌ*´ÎŠljë«Sà)Ì2q ;jÚd¥ÌºÉþ€¶cÚ6lbÂó÷qx˜|è Á•qßHŸ]¹¥‘ÃpUø¨#Ò#†DÇgçð›«8‹]¢öÙãÛzg²ib©RËfÉŠ¢Õ ¾uà (×9¢€˜´˜ ë^n§xsU‹ٚK¯Úk­fé÷?¶+¨3Û`6ú"/Óƒä,EÞGE{†Ê_ÿ¡‹!Íç['‰+ *ôV,ée`g:ü¿Ý™ Å߸tÚ~®` øF¶/t\VÊ{@‚-Õ.—rƒæåµÏ°éh5ýzI]3û†fV„çäÐ9ÄrR $Vçþ?:Gòü¸X`¨™×̦J,õ&Ë“×óU«¬”PıÇôªŽÛW)“-½8VdÇÛGà0< ŽŠÚ|øf‘4TMa^äÞ®Ó?XóÙu\–B“±Ô/ /ðÍúÔ§ÙËh¿õCKF 5þùʲÃûh·ÅIF•úxztúƒ:Ü\$ú“ŽšÂ]h…ºï‡Q/µS‡JÌyȶ‹dÞ¦ÖæÙÆžô?Áxã6ºêÉàFDßr²¥˜áËdÐá–5;;çõŸŒS¡’Ä¿ƒ*z0*bJ ÃúûÒtÎy³¥Æbè ø‘ÒT&¨ÁîÖxüpÓ§½_•åó¤3‚‰|p`LÐÞ÷"î‰M|«:GpEÑœïíóRyYn©ÁóóiÑÔJ"2Áê.o&ðzÈuÿK:ŽG8L ïm Ôâ‰>@qúœð ¢ž“÷HùÈAƒaUÀf½àÀÒ¿Ù•”¢ ÈÚ€¹œ¿¥ÂOw]•&Fn"¯TYL€õÃÏÚ£ªb ¶À®Ε•G‘ä•~=¦,®,gÑŸ&nNsºÑò·^6-ôÏÓHÓ±\Ÿ×°4ñ/J’ϱó'áÚó†?6=CrÚßÂåÞyÂ~ßv,þ‡'%!×fýD wÝ0’û>‚hôôê­¯r®8Á’‚°PyN1¼ª:•aê@Û¢RA`ˆ{£iiŸg2S³„rE~aŸ|#5¢äŸß;އ8›éý¼õ"BRµ E¥)S0òP)‡êkhOk¯ùI­*«+yØÙPçX}®øËYÃdŒ¹ˆ|ñ¿*Qà‰dË—ô¸oð›rìœÎ®5 06A"{…eý°Ö˜¿'[—…`qù–;²lÙK„ ïûZý»Ê‘^ Ws›oÚÅL , †bº§„€ë7j} ÷EˆÿÁÏô ãMÓÔÃT£·¤ªm)YûdåôYÕÞƒh÷ "c !ïŸÆ2øK¤*;R”§ùúáªúÂtúühÂ$1o8ψ]@šªž|]ý_ŽÉ55¾Œ’ì‹“’Ò$š·{€÷É?Ë™ÖÉ2#3ºž/<æW¥Ø‚¥Âíâ=#„C›¶z•q?Ì”'^Xý ÔÕòþÑ= ±HЉ¬ÞÕaG4óœûª4uþÜÅáÕ;ÙÜ éÌ-ˆe‹<ñd­™ÈïkƒÉüV“ÄHìz·»VoýóÏbjÊÉ[4ó‹æ'¢lÄxùŽã^•[e:uå. ÷ÓQô­„k⯮Gκ¢™ð#ð™“Ù¢·Žkfp®ó1Þåh:”Œè@âëÓlTxמ؈3[÷Ú'?ÙõˆŸpǯûN}¶zT^óûU öŠÆÑ·Låõ1Ùš§S£È[`aq ¾¾×š‹$Ù`ǺqJJ¾ó[.ÕdÁPAºm…ZUŸQÍü7Ôí‰YV¦g‹oG2!ù£½ 9t¤¨ßæ‡ëÿ¢!š\½l×Ja´ƒIëtd¹ì‹—ì¯Ö—M¿Z¾“H‰øúà÷OG)r ÔˆiTòoŸ]/í—õ¯Õxâ+ù½¤ ˆ³VȳÓë·èTC]\y!Kœ'·åŠ ç´@DyÑR_D´¤)mÓ™Ê;)¤ù›bF]Eéˆsâ¡àËú~ÝÌ a¥1ÔÖ²ÆÙH»÷éw9™\ ãçˆvfï²<ÅH=ýãdñ‡˜¾ñ4N0S°@êšR.*KSB]CͲej¦2°A›¾¶´Ñv†¯÷;ôõßò#ð‹í6¡ n߉ ïA9/ °*3èÄS<èÅÁÛÏôàÉO9,Ø;ÊÜHW?pxåûœžø¯3)"öRœ[•Oe«]üq-êΡ5ZÃIïÝêá§G.Ô]=H3ÖÇUK7·ÞûÉ”el¬T9`rÁ_l^!Ò¦Z# ±ƒuk¿–Ê·ò +(Ä{ #&Y ƒ:µå‰]Â8³Á'ÒíÞÏaÑHÌ{›34üJ<²ü3§G8·ë<•7&S£0Pá:Ę ÌÃzæ·b0r/çù[êÌ•ž¹åé¿PÉ={ZÇ/ß·º€Âƒ?#ÉþüBàÏc¢ÆÛ/tÒ/ó<½ë:Ï«b_]@¨A—ôäÿÂÞÝ£¼È™ÌbTº@‚ñ™ cŽCØcT[þܾ#ÌôKàú3´àv㮠þL7mÇÔ˜„ÇA”9ÇWzè‹Mü:Bk—¶‡ØAüã:æUl¯_ؤÏP ¬îØÑ(Dsú“.r0Š$lks»6*Ò´7tŸ‰<þÉðÏb¾.ë?qO7]¾8êÖIÉ|e;ªàyÚç͇2W¬ $®¯‹vT’Œ¢ÜGáÄÕ[/Û´5¢þáCàÀšš®m† uœI?惜üh¯µ†_i±|`œ’|q£ vø‹ÊU¶œ –ÍBï-‡Ùu$ãùàé ¹›ëÓ¤¨?ŒØÀ»!·òIä„u!R„ŒÒä”\ˆ¨õ˜ü“×/€ˆìÐT¨ñ¤’»“ãtlK÷Ú]©ÁR"$o=peÞòqxº¥ÛÍÅúfº8=‡3·ÌsJÚUòg0P ö*ý¾d8–psED®W:Hu~éHÕè,Vñ‹v‘!„uØÜGºa#†ò Æ[§mT뢥9XhÜÇ®ebÜæïìèS¶ôðUs)=|‹·ÝøUÿþ¡(± „ç#(ÐçôD±Ã(бq¨d\òÉ»¹Ü Ïnrf^3tñÒU;2ؾ5¶B…ÈýóUEJS'v—!0#‡¶³”áì¬ô©xé’§‰yt$„üÊŸ^#s m½ýpê]ÆÞ¢ Ø…1¡~=¦›¤Ô"ÓõŸ¬?tD$®T¾µH%eúß`xn|8ëÈ0$[{«dÍéÃz І èâÙÿ`‹ W's/V/¾Œ»TåßЯ”sÓjŸƒW;ÕQ—§ìðW\&̟ĆïÞ,}°XÆÔÎ+šþ+.{¶©²2Ù.aòû—¢`ÆÆy>ªï*’Q6–ö6žS7WdnGíaòN+‡½:D>5’¿YðG2µ4¸¶%÷PŠq©7@¢žOÅ´XÉŒt`è k‚¿ôV|¼Ñ Ç$^¥µƒ:úf¦ÐDV˜ó€Í]~ô±¾ÏêFF´ ³C/JÜ}Ëz{Xô ­óŠ=.j¸ëzTÅâ*ÿã TtH†I {@vÉlM+#£U ”ºÔn¼¼Û‘1ghšã›ÿÒ »*KFVT5dü•c½ü*ÁÃJbß‚dø‘Ä\bn¬ÝO·š.ü Ä·A%ZÂ.ŽJU–+· ™#p€•8Ý5tÛÐÁ ¨g =»fÈÛΪ."[D\;½ï*]–ØA‹³²ÛPüÌ¢mü­H—#æ{8ãËàªä‚Ê]É!KdX à ôwl‡»ð5σ°ú‹)VH-…Á¨z›å5™“ôSñÏc6 YÝàFaŒ[ó×h½X a é °fu:‹}×MMnOEèk˜–ú“¸‹aø—Å\kІ‘2J\sJU˺å·T0’E¯P9Ðxi$lãóU÷ >A¢pØÀ³«É² 4IÊÁPúý {^©Lz ãÕ¦Á¿7ýÕNIV¡Ð»Èö¤ó/ç¥ECÁcóõªõ_6þœIûŸÝ £QžßÌo*K¦Õë¾×µn„i 5¿w´é¼\.mµN‰¾ñ¢âÈЮ ›ßkÎB"P'@†±±TÌ•VIì¼ý{¿ÖvY¡cÑVaKbïÕÆFä%ÅδɼšŒÂÄc…Ûíýij§Ø† S­¤P°šÑ{ ØMb#=Õò;ãܘïD™¦äŸ0jA4ÎŽ ¸§UíœTÏL”‰¦0Uó¸>X!¥L{°ø E°©yt+ßDöÀæ“¢Ux» \.G@«Ÿæµö¡ÊľÕ9÷@ŽŠ‚äâí¦9±è™¢ú0ƒUÈd=$ÿ×M†ÏYp¡ô´×žÿ`-³  $bbŠu…tÂkÐŬÑ$_H4Û^æ_à_[ûû<Èây[IÞo5H>Í¿­ŽOn¹åoxMáÞ‡ìØaËùZÅ6Ý^âèçµZššMrA|€*£½± CÂE&GÚ£Øòn'É 5»¿øÞª´\q†)Fêvyfú'‰,x9ØåwûQѱüÖ,Ê#°R‚®J€•ÖÁÏÔRÀÏjª.ÈÉ&¯EÍãvÚÆvÔ’ý~Ž.Ý0ÆÀm•iƒ‹AgR£–æ ªÀl|l ‚ §Ñ')kìn¹p°×{ÖâÈü%°Æ'U _1i=æ(f«Ù$džcE× p÷mªª˜—&‚L(,³‘j>QwL2ÑŠÊ›W(¢rºnˆÝ ßçV%ß·Y¤µhçŽOÏö}ÌFٺ뺃ݽwŸ ñ¸5ž^Ÿ‡jFŸ Ç?r~üÿmöâ°k÷_u4L9 [S;$5ƒê[zöZ؆&JÐWõO ˜Ä¸â9OôèÅ6´T…pý‹auJ«-*¤kü„“Ê0‚‹ï™ÿµµ@møˆŠÒDÜyL¿KQ¢.Zèõ=5á~;†…ùXÅW@JOeñEL§UÄ¢c–´o+ØÎˆD$‚õ%L_3‡q0ytýMöɰ¢²¥‹58²,7l×ʹò5£e8P’L zPD+¿ÈÚnBÐJþÑòª,{`ÇnÉŽìí¾­Å²iZºk`wÇœè9mI“ÂŒK¸6£«~©-h×”Ebzp_ê?1ñ° "¯d-ll9&­‹çïÂïHЂ¶ä*7Cu]‚ê‚9¼ €Ä5t•9«ÿ’ @€ -E ”èÁ>Gß IûŠ;H·—9ö«¬Wîc5C5ÌNœÏIµg(UDô¶äÜ—_d_'îíØx<ËÞ¨*‡¿È8výBñYU†ÊÙƒ.No“~ØQäaüjkN ²«žÞ¢¼¶_ýdÿEhÅLȘ˜2s5ým…Œ‰7¼ZPŽäK°×ÐÇŸ¦ÑùéúŸÅzž ÑúÍJåå›H¡ÀW…)äÄéNýe&~¶\p î‘ÞDþÔübE8ê>‰ ÈÕ²úÞü{í¬¹§-õî»Å’€‡ƒ>Kì±ìð@âµk³{BõSh²bl8_šÍNW=…ÈåsS‡ÝþõLÍZŸäºdgR!“Ή±šÆ¦„ÿ“ ä>ŒèŠ`ähÿ< d´]‰0Æ P飠nLÞ×·ïç9Di•Úî$뽑OF2­"OëxŒWcHÛóiÇF¶kg¹½;Ÿ^`Ó^§áN$ÿC;°>ñÜëªÎL®Š è2z·HJkd¾»Þ®Dh›¡©E¯=8J¿^x¾ø-fܹ€™þHÍ5ßÿ1Bà"'<£™M?•˼u5ö[½Ï˪w¶çhÞE® ³~\J£=®Úì¥8 jLI§}¶åMvñ´u›ì§TaêsÇKIzËã¡m«ÊçÃæ1cÏsì7n†«$®›,ó×`Àûéä~ݧV‘%¬Õ¢¹œKWÆ_¢+Üÿq†ÁFÌ¥"P¸/bvüÎ*9úƒÓf‚©O’ʤBŠ˜y, 3v!Lx+,։ޖ¯¹¨Õ‰6ºkµWkPL\Êwšð|9•¯¡Nqçu*P>õ(ת _±©¦`Šàm›Xà|NÊÀ¿dþ+ch÷†Šûm÷.è:™;;¿íÑNžª$Ñß×ìy ž²§iUŸ­Óì½Ù‰Ï4ç6˜T]Â_ž¨Ë«iv3¤ÂZ„E’Òºýñÿf"è+ÌTEgÙŒíQ66¤’fñF° n…{j[”ùâ€Ðω¯  C<’‹ìÙïeíÆ®|À¦:&,{?â(óî Ÿœs^ß„*°¢˜Tv‡ ¶ðë±ÝÓ"5'¹º‹hÞ¦ÄíHÌÚùn®Ý[R»ƒó9×àÀ) ]^QΙ'n¹˜Žkeþ¾€!~Ñ¢ R4°«E+:û¶™Œf+ç¢Èx~ˆ½&_ž¯GñêcûrÅ*D¶™jØ aOéZ»*`Î\³X†‚×6wø‰<é°uB…MÁ9ùvhdLœSI]³ÑUJ]=KO«)N7Fu¯`¶Vq™Q ©RŸóIâBàîôuaJ`âÞªrý÷(Jœ¥3PæVÃ$\6»ºÊâ‚bŠZNÏRóûžl^¸ZJ£( ½Æ¬HÅ:Õ%—uVLøi÷5¦‚¬3ÉÓ¥eÞºð'òƲÙ=¿0' ½çõ$LØú ŽæYÍ2¨«MMjí$E¬¯íNºY¢ÈÂ]™ÿ¥)èˆÔN÷÷ÝQñQŽ`JBÂ~Œ8ož à¨‘hª…{ŒýH@}#m[¬Ç­'&i38áèã –ù‚æé„X}g‘ÃàÜ…xlnçlµN¹²óY ]*=7X¶fì;K 4EŒ?ÓÚE‹tüp††wñg€¶»çýüâÈôVLmÃf:Ѱ6 Ö¬¹UW³R°JÒ2ïöKDP’ó”ÇWkð þf"XçǾ$™À/Ú&®ÅqÑšúMÑ7†H˜­_q[Ôìë'é²õi=GÑÖ ì+Aw2,`8Ç"«JØü)l€„ Oî]G„› ðÍMašh|xMÖ.#èŸ ªUÔ!‡ «.Ø?2¹×Á¶ŠEM2’#7߆CfFCÖÔG(±›X cî> ‘ûdL¦¸€Õ!ÿ‚ +• ƒ¼P%>£Ë |"Ü L6‹Vä,ïéFuÛóp?eMÀ4 kœ­–ðxé‡uoÈÔ©ŠQqÐÆ-F¦ÜËQ&%Üœ"·ö^ßEàÌwzÑŸlðO‚c àwÅ™ŽX8‚»€> ·F»}‘ †ÛC5Ä×9Ì ŠÚ’ýE:]/¤'—ŽÀÆ® *òè0ØÊfeW–çj(ëÿp§,¬·¨º¡/õAûréÖÔ*þçÞ<þ‹åø¹Àøõ)Á¼"š€@ôR8þ—î†sGB•î £×jÛkòuH’3…ëGG9°²HYoGž«Ú¹µ &zâ%ÙÇ%–£n¾íçë7½0®Ñ[«»Ð‡¼êÈåé¢Lf‰x·îë5+érEþ«­e;ãjçb]hƒ6$ YÖÐXˆßôÊ aäÎØÎ1„4™=q”ŠS~î5çB`æsjôØjÕ¶0;š/¾Øÿ +ÍçÎÌ»Éu¥²”òø2|[T9G°õçÛÂàÒ4Ûp×[Ý´ Å‡Ò³n¬äAšs÷öKøMH‚à0' `€?-X½¨З}²M¯ê< §ºÒ©”f§?Ì™g!2¤*ÍD²4ÖˆÅ{«Ð›ÇÀiØŠ-S²È•{€éPÐ)o Ü>ŒºÂNRs”JQ’¸.ÄrÊ,|y˜b‚{!¾Z[YóÓ¿Oœt¶“ÜÁ0=lË›žš×W-KõþÓÌSÌN¯ü B´¼Ê1®œ<.}å_h7 uì‡}«øwSküá¬xz ÎeÆ“EÎOàn¾—¢\‘-_Mœ®xˆv}:H;MµÒ±g¼øÄ72`Ÿ6žë….$Çá» únâßt:µѼýô²O“ ó¹¨4ÇÊeœ¢˜h¯õµsgÂÇAxI%p• 묦pÓÊ—[¦¨´VÚµDäVQPùÿŠÁë˜í‡¹c€ƒ aýïÆ1Š>Ù² TB¸aͲJèŒA‡cå—Õ;4bàfÇVk˜wKµþm±e~†pÆ3Lý“àD]¡¬ ö„øZúœÆá+Ôó6§‡nQ}"¿åh¢"éïSpWⱑÎUüÕ<\âvæCI©w÷ç ±¯`åÏJ×wI•ÕQº0¬Œ}ÑWvr>ŸŽ䈙‰¸BŠþåÿßÅ(/4Úñ—+†Õž(Ó¥˜ª!«¯·m{øCF²q³üx!Ç/NPpG=}RäÆD̽ìïqvœ›»—P WÑqèßðÕªªpçu\äPœX´‘5-:±TcòæAŠ´œV‹ÝB²m R~5‡Ëv"š“µ"☱S†ùR¡:îpâêž  Õm²âïnxÔE«|±0XI™T†›®?5V}3,ùNdèOM2¼ƒï ‰íj’> É“É4Å>VüÂòzhض3'h‰4? SpPMjžŒw¥éz€A?˜fN‚N Õ¸ôÃ6•ZÒN-x/_³#a7ÏJŸ%¿ "—`òHÉYP¯Ñ?¿îÁÁžÁ–ãèh‡dX²ñÍíh>ì$Rý´¾b„e›®n~УQ¿‹'µn.zQäÃÌ™Çt$‡ c]ÖŒÝZB‡ 'ÍÀ¢Kqðh0B+˜zc:c¼S4ï dºÀ“ŠWÁ¦ƒ)Ñ“7fÎë KòFýƒ½aúJŽê€ ”VÖ9ôÆõp£Mw­/ZoKh«åpAªë¦V" ›éR2­Ç-àܬeK»„ß¡s?„î•«.À࿬‡¢”Y `šw¾ô¯WêЈ>þYni™H É'C%çâÉaó@Lnéà 7°mPDôæl9Î`Ñ RÜÆè.ïø±)¥™=XœŽ€DUöŠ©<ð4ï‹/iy1χDk&R&‘²j¸ùQñZo·$Û˳~&–'¥4ØΕ¼ÎZlü_jîO8KmP.ø°ˆ!E@AÑÿÃ_ZÑ›;ƒÏÚ±<¹À–n/Âìx5ö9QÌ"ÀSb·£ÿYÿl*$L+-Mñ¤d¬ë<ú0ÝÝX§T)@§mR3Wà%6O‹ºÂ«Âå:ÁÁ1÷Ët§ëªí=”¨MhÞã÷ô_j1ß]Û³Ç$ì&ûa 9À{ÿ úÝè¼ñXâêLÑeoZe jÙ·X¡¿ÞÃ}—_™ší0±ˆÚk ·|#Î˶²ÿ¹ë¼,{1­˜–[¯VРsݚũ#<Ôb´Âl´±£V0«ã,W¯9LÝ ~½jT›§´7àóîó$môìlÛ×úÀIš-§‹¡œ­;Ä{ ì¸ÜáÑÛr½™Ý•¥Ø)“¿ Ý(kgÝj ßþà`º¸îö3æzÊû4´.xÍZP^àÔCóŒ“!= Ü ð;)Ǥr>[2aéŽÚ¡Öt­ç“JÖ¿Íkžnß¶N/jçY{l&è0oby¼Igu4¿R_šm¹â‚4ÍV² r…2ŽºE‹Tô܇’ÁyñV}VyÍŸÔrùF–â.çû~òT„¼|ëE*UXÉMÛ¯ƒíÒ8'ów_oöòb_ †ž/K.Û#¿Wf€Y æbÃ~^î@Jß¡™™DF—yT×÷—ÛVV©ˆVg+¤K‹3O^Y’´{¡8­ á³y÷‡'r°b !&©Âgc:„Ô+Hjtß÷.m&ȼ­# VÏ&|r´¦j*&MÝê W=ü¶\n{¢}eÇ;<ƒ¦‚N#€‘(uXèoÞ´o›Š{à·ŒÙ+E×¼¤9KçáBfæ„רFç|°ØiA®ëÍdwKðžáü9s€s[BA­ŽÎpu”Ʋ%Ø!#°XÅá9úUå 2˜sYFYD¬ý-Jl☭5QÞ¹¬f¾S%Ð ?ŸŒjÂ[=˜:›èÂ4 ôoòʾ\ãÄs'Fýó$%a½2'²†ébŽqþÍéE=AyŽý&Ôán“zpóO±NË”8÷ŒÂjlvÁX—5õ“m~¨%›P€¤·}~IγàËÕÖw²H”^„&jno Ga:ÐÐÑ2âø´ŠXÊäŒîæ¥GBK´5Ç{¡Nƒtg Ú jêžDv-ÅÏê×Ù´!â‘ õ9S[ÏT(ùVØÏÉãò¶p ^õ˜¨Ø½:È^ÿKxºt~oô\ĬT@l},Ì6vŒàB§nÀ"8,p_Ïfm¿O«åj[þêÚßGUjã©kPôªª!.Çê¥v€-´ d1‡äîx8ü–‡_®Õ“Gjw–õýŠTa‘ƒî°)×霈xCÅ#ºöO½zéM+0½½ò“ïNüß˃¨ŒûLiI·xˆRzG*ËõÕ(ë¯R¦ídy·Â€¬sA~N½-v’ðôMñnÏ®:ý5‡=ªÂ§M¿ªo/î QK°–·µìš?}jSœã€DÔ.k$ú‡_,Êi³¦SS J»ÓáÂŒÝõÚp¬0C`&ú‰GÉô´‡>Ää-°@ìõrOô À°ú5ÛX±³'½©ðk̵;èñ:´o*Ë€GѲúJ§(¿—ârˆ~Ø®½b xÛiÒŸ~€m—ÁHÆ:¢y`iÄÿè©“릭/vÄ× Y˜ å2L—ð¶3”à zÏÓÑ’ÔèÍ5ä” ˜ŸIU‹ÁÕ4€‚1+.¨2ÁÛ‚›×ço`§vìÛŒ ò›]¬ðUz¼,›z…"Xî•4Rã±âõ&dÉy:™Ó>ÉÒKÐ!oÑ '$ë^¤ ¸;lrmŠ8ÚH…y]²þg±Ù È“ìƒyP«FDÊ>½`†»âó»½³ëZñDä¤ÿeKçûŠÐ÷05£ÌØËfq\”¿¯*ÉDˆõöCÇjx~pP8Lm¬,fR“¤Y¬9ηÍTS¦ë’ §ÈΨÉÛªäÖ)/µ9£·ÿ®öœ€ìºI¢£:<Ðf†0 ­"Žé¬ìÕ³Tù¯H¦îP•ÆÇï%u ‹Ç´oÙ8xK‡ô¨Mi$æë:áíÁ\²‰êº ]Í ç8¼×ÊpÂè#¤,¾÷|ÍÛ{ ä[`O.Ø;KÈ1ýyÝ3O7Ò=5“¾q±"¿æîy›‚“ß5›„ˆ1©ôú (îK¿³MÒîD°ÀÂHkAwUbBf×}Ô!*ÜC5êH¨Qz¸ƒ½v1®MVÑËÖ™“) °åm:à¥Q¼Mb·Ø¸: ŸÔß~‰[Ñó©ò…/› ²x†iïÒ£¯W'½qc„j¶3MÇ"‹l ü’óSl•ŠO‹µ"®¼}–{ÒTNpÃÔ$CwŽr&¿Þöí%ÛINw§Ef-B ‚…<#7íÈl¢JÄ]„¾¡ouÎZ 3;écƒö²ÉÊg¾›×ìvY…†”ô}Ød™šz¼¬•LªúQÒžG Dö‘âñ¾ÈÄŠY€/j]ïq3ä-ð‘iÌ7¸]Ò­á8Á.4ýH‘ÙÎv×—,7äÐôzâÏ2­ÚXÖª=5vï›Eˆ¦Zß A–¨€H§©Šç‚IóÿCê­•( | Ö(~D⎾kPDdEc—ˆxÈ”·’’LèO¸K.ºÿù>~÷Ó5§³µ|ÔN>J˜€ˆ]j4¥œåJÁ9œ{÷u––¸mù‡rƒàÝu Gl{]ß’»jkbmçßz{ÜóÿpÎmžîx ÙxJï ™eö0‰:L›?*í}}˜ÙÁ„.èbtQX!lôré¿aQãìA÷Qæ¯õexõâôP0‡7—žþ@ÖÍþÍÐŽ£t)¶õ¿Ÿï „ISûÙY3ŽïVfhDvU$¼¯aA¥ÈãZ!U@_öÿÄÜ+P az°ÑH—oÙÞï+„˜¬oÆee˜¿ñsjèNfÐv6‚×À¼WrO÷ÐNóiϘ~ã1†.7¢Oy4þý8ž([¼’ö¹K×ùE^ëÖ:s“íÛ S:M ‹Âßé&±‚·äáÙ_îtœ*pa‡©»ýÍXjâ~Üš¯ü…àü;RyXEæÍžµrdŠyd]¨+\Ÿ°o}e(ô»ˆ‡Ñõ­‚ÝfÂÚÿִùAOšåQ û–½€¥« ,ÿôõ©÷+™w8KÏáÔ†zùÏÛ/)ÃÑìÿÙÐ~nO<ÈÚ$¼`8Wn¹šçX ·^:µËG8°ôÒ±ñ–:l—!úJS]¦–ìΟ Ø“tã‘¡¤šñ=SݤÜž6¾Ç»rêü‹´'­Ù¿[ü^'ËcÃ÷õÔØeJãyt’uÏj\CÖË䈚߸¨½# á#ýJÿú{õa‘ž&ÏÔ3^ 8Ýuÿzíž<„šv”nb¾?Yæ5.Û¦ô¹…y…JÔD1*ÒÃOÏjypá*?d‡ˆða¬žá*ΠfûZNBæ•°Ül»HòYWVm½:9W? ¸~Íd²  Xñ‹aÂÇÆ/ƒÿ&H@ ¦{Ì`$óÔ Å©­Åk6BgÌ̲"Z[äÒ0 ³"!!õFú¼È*1²{nÄ£$\¸ˆŒ›S‹dû^c¾\ƒyt×/Oÿã2GNêªqñ8óãG1Óþ+®UÅœˆ’^Z±#*œµô ¦mœ-ayÜoöõØn'€Qn¨Öçi‰K7÷^"yjUÂå)ÙÇ.ßÖ;u)ö#%¬ÅÂwøXDöÉ ø@žöÛLŽiƒd?MªG|Û„«Ëf1ŠÉ« žÁ\'Ѻ(\ŸÕÝ;mÍõ*V­ÀßH›0N¢pib;FE+ŸÎ޶*ø¤é*}!ÈQ/22ïñ?‹ sˆ4Úg—:•'J£ýHnìAðÖ£±ˆôë“b,(~¡ž1ÉKãXw¢u Uz¯Y4¢’‹è·–À&*fc¯{÷³‚¡%æ¹c}L(Ôÿ½‚wLÊLù¡,Xät‡ïGZ©'#fÁç“e¦û`}äü7h.F\æìˆü `âqZ5?Ó%\þͱĬÙÀ0\èáâFž4õi÷+zYB«8Mås'»£B© Ưû§c<[›êE€ïýšÝZ 'šÜsóA¦†—Ýg;0L2ž×:¬ÓÑO£³uÄ.¶h°£–<’'㑚.Z+5WÏ „9gŒkah1RÜ$0–B°^Œ˜ÆÏÀJP*Ià %¯ZLßáû +‚Xpxê_ðK? u\¯¬ÑK8†£¦òàeÊ@¿åägµáÞu55bðmo÷ nnÈ‚æ{½TÇÏïÛdø+Ædzˆs½;á>Z¬LYƈÉ\Å·\¡ Óß‘vPã‹Öf0ÀŒhä9´fU¢öi­aÊäl_Ž1ÀñRò‹ö[›ù¦€ú‰óÇÿ> õf*Ú9»QA|ñª“VÇ,MNfC¼…ó‰) ž%ýø ÀÁ‹á÷•´3ðŠZ• '¨”l@ÙîJšÞy´Lqwg†%ÕV”[}æ­~陇Q¯þÖëò!òIØ G䇳Fǵ`ç­ô/ý‹stTù­‘9Xéõ o¾«\qJÏ †( òˆÕ;}–nø æ¢ ’XãÒaÖg)«/DŸ¼.8sSÂ# SÀÅ‹Z¦‘ärõ«æ)òžIê::ÄUº™šð«,d.Ê»(¸JnRÞÆdþò¹‰ 1pPŒÈ0䦄aPlåš$#pØ»v x@¹i@Þ{‹èd´âª´$,—µ}F:Šg·ÀÁºw6Éð¨Ú4Ù19n…޾|e\ûî^¡Ë(Q ›ZÞßô>#W܇j’Ô–Ìtç ×øn‡Ë ¬˜!õäU`àÉþßj z\t-þÒ-c™ÍCvä®§‘]K»ßXc^/Q#F|/,•… qôüp©±½¹Ï‘=¤ ó(w ËÛ±ÂéÄúöá&57C}“ÖDWŸcñTYÄ/FÑ…”üJq\g[ð…Ÿé<ÁoÈɃ瑼\CØÌºê݇9Üͪ‘g 8Dìä&Öv-çèÇÁãÄn#®ñÅë;kÇ€€²|7)p,‰…¡?§#(ª1·nÕ*’§]~¦ud¡§z"~s%\KˆÎk-‘˜zK&Xbî¤ö¾¾6åBÉsúÙ|uÆúYðýuŽŸ³ÙqõoXû¿îe†ç¦›p±‘ÚÓX$çâRHõ-€66Zaœ²åP\ÿCÃzxùø4™Þïs§eá.FF`˜ˆ²Æz’³ª šóÇ„‘ØCR‚Ùƒ#Jv“ÌÃGÔôÞWì°RÖm,(ö˜ 1dáj´J >ÙÞÏÏ^ôÐuÅçöL`5Gç¸OÊ?#V¨ã»¸Â©:¨˜VÞ(–›_[P’i†¿š‘°A2ò¨5£ŠQ½ŒÇè‰ð…s«ñ]¡„\ΆÀÖ/9^¼VsÜß7dʮł\†+ {-~­Ë>úqpIÏ鼿¥ZÐ&ðÌáÔ^Žà_·UÎv“‹È|/—Ü×QÛzßt›ù~y$ZØJÊÞ§{Ó¢Øds*±<º/[„›¾àAd¹íDÜlWâåÊ‹âï Ð*øq  ‰úÅb½56õËĦ8gH‹ÂÑOž€ uŒÈÃq ®ŸIoLÐØ°°úšûêú¶ªeß‘Ž AÌfòí’ÖQÊš£3ûx¼¡ÙFœ¡\ŒŽ§uÇp@²åÚÉÁ§4}‡4ú8t•¸Ç /[^ãœuÂ,-‰±1úÀÄ\š }eö½Ez1£gÀ­˜ÕõðJ·êŒÃzì)Žû 3ÍAã”t}|í6%,;tð²kÞ{Ç ²¸ƒ}|•‡AôÇã¯ÍÑØb5‘WbrGi®sÅ Oaøùˆ›¿˜¤)ÐiAP2®E;x¤ïD‘@—d²€NZ^ïwÔ^Ýš*|‹íEw *ºÎ†°@Âp$ξ¬;h6r~˜ïz':G-Õ/–žú·(”tw€P:ë `^ ¡xózI‡”NÞ Q¬N‰A¢Ñ¨ç~Å€ƒîØ>Õ4]]ý½ëðÀÃÀ¹Øóèò„œåšƒãÑ„Ôö ‡—BCd­\¥‚¤’o¿k4{4ÚnåmØ ¹>«cùs2“ƒíJÎ2v`ˆõ–O+H´¥TI ´$2'¶ .µ^ÊFhéÈÙÆlnç¿‹oÖ›7p¥4jÀÀÑ蚔܂š|SgÄé cí?]E9Ü(&‹hW؇ÖEöQ‘@ñô¶å'ØÖ™ÝÁ;™i|§éÅ@i¥“‰ø„œ$›ù?ðåO8Þ‡ÿˆ˜ÃsðŸ?À÷¾›ÇãÏx”M®ò6oÔMÏ<üC64¤vóo”µ©åUiè=ÀfUí=yæJž|—lãým¬HF‡o.ˆ@œ³Õ_ÉU†¡3&K®«è9&F}kmšÒ>ñ8müM¦lãìÛÌe™ªúŠUÌ~ƒîŒBË~!0ñ§q„¡ŠJ1ƒ+~NÝjË%>3›+…Öü?6WÀ~TÀO6ØÆzìIíó[•,Ã}ž áGZxlèÖuêÓ¼¸¹ÎÍøØwê ÛûiôZ˜ªF£}ÀoxNFÔ ô#…^ôk•¶flô dé®±–‰ÎãgÊìÃx!ã'Ÿ˜1´2§.Ƹ×=K›êD}&¡tômêêÊ,–8Ó9Úgš+×Ìr¹ ×]ͱ8“Âóâ›s}©ª'»Þ[S³˜F€ß2´GDøÎÉ ï ï`í†{"ØÓ‘loЇ awù²‘ð€/Œ+ûý h=ÒàÁ /Crµyϼñ ;þ ãBq¦sIw9å žÇ/Æm!ŒïÁg×èX#g2ײyսǞœ¨Çu’ÒŽïNd=4ÿ¤ÄÛl‹( Ta@ Ï/äh*<8¥š?šh¤»e½ µÓ¹DXvU”t}ØÕã4r†¿³ Š Á]ža°J0n‰”¦ ذÌ#-_À^c˜K"²Ÿ£ÈuŸqà¥zû9Rt—…q­¬­Ûñí2þpЮªØËùÒóó˜@ø¨¦ÕJ@yãM"A»s;„>Ùƒ¸~½ SÝ#ã¾!øšy5Sˆ’MJ…/E©o#;8E;±¶€D~÷Ǩ}üFôT WhP ‰ã¡&(bSÆüWiŒ üº ,ª]Ü!J–!N.ŸÃô•¦Ât`Dêó§KÓ A2Üw[Mrg¶gqDšÔL°þÖ»ÿûxåûRñS羞ð}—¢ì›ŠÇ„̤cW,çZO¿ª«™ÌÍ£’7Yé¢_KF/2ŽÇrìÙí`šymEbIl€üòK½·ÒxYá[MT ¯ëe²çö'f“ê.±14§áîÄCZª â-bÆ:‹êÛë&Ýæ©ê2—ÜÜ|”™ZÞJ[§ 4"ð`bÌq—Àìµ¼¯žœ Œ£X쨜El‘w(¨ÊG©#]ûs›ÑXÔ¨e¸*È’úœG©ÏdõªˆÛþ`IA*€ ]ú+•¤ˆÑfX˜òß‚ Ž tV%7ºÊV3®Xl¤>%ì$þTïÓe†ÍŠ™$ µDh ê•K0…ïeøÔÃbP«W'ù]Ð4áëç'è92DUê1u’Á¢X¨­8 qZa;!¾+îü?4ðûëVt-(ù¯ ‰m†£Ú.úö0úÞžSiV³>½áË:  ¸ÞD Û{];<ãLHÔõT~U Ÿâ:óë,ʯiÀ'yX3#µ9n!.ÎÒèK<¾õÈyu…™õß7pŸ×Ii˜îÀj¼|9¬n5!°³;Bý¢déà}UÇφ±þHÅÌe¶ Æs:qÂ¥¥Dxæ«4áÂZ¥‡ö¨kßew{˜3×ÑûÓµ=~{ÊžéšÉzâ‹*%.çCü`ö6HàÇÆI±:eÂÖoôH`²–¤TiĬÌü<ò¢˜ûÍÙï–Ì­èN,rÉêh‡ööV´-B¨=ƒ™2¡®‰ü¡BfµBeö¢âÜœ}nÏ~ÜR¾&c­(-ï›â/¤nòÐÝ>—·òÊ!H³òû™ÊÔé^ìëÊÄórÉñŸê«~, a.E[â+soƉ²“ý²|Gš‡.ÎmÉ›cÑTÕn87#ÏTÞc \×þØ®÷%ÞËÉ–H!.‰¬J‹|Q¼hõ¿ÔœÅ÷… ðÿ…Ô%äî(´; ,™¥/…ú,d-ÖPB²¾½Bd9E±p§ÚñÌEGƒ,¨Ã_ÿÊ䯝úëâ‡`ïhJÃ5ú¤Ð8l„úü?÷Þ²«€Jô`-^ù‚ ÕÀN¸ÌG¡ˆ!âZ[44ë,›;®1\$—îemÁ•®ê¼FtHeBh—ðP%1‘(ÉÏ=ÀÏáÚÉwŠƒu1êA:ðEÉÃÜ$ú#©`¹Àq£ËY85 &Û§X‚¢g÷ëx&©½O˜91Ç$ F @!×Ïd»s§Û@hÞe Ï™C0G‹ÍD¥*³Ávwo) ͵~üÈâi\À&¸±è¨Óæí1‰xOßûð\w`™òN)µa™y¸é2­`Z¥cÝ`|Ù>¨ù†±ÄBbKµÎ!óú-GëÏòl\ÊÆQbÉá1!ïÜE2dÌ­¬·Â–b«¦°bŽ’ O)¶PÙØ¸©ò Äô®zzÓVÖ9K>S–?Í2Ç…ž}§šEª]N÷®YSÄËaiMÖ;Ž‘vvsÅ"ýì½ÖCFRßL–çö¤—/xE‘Äîålà …¥2^”ô€£±È¦zí»º[€°©«Ó1~ÜÄ®ßÖö,!Ëx"©¯†Ç\?XÖì¥äœ+¬•7¿üÅ‚OZ;‹û[×hHÌQÇTÒ#ö Jíìdâ?[ÖŒCŽLDzô»lßžo/;;¶‰]Y^›å˜ˆl? \ þô@:o9­±TÜ‘¯Ž_Ü}±¢?AX2ë‹ùEÅLËc³`/¼s vg‚~G’ oÈè*Ñ¿Qh*|V}$ SðoÞs³è6gk1«—UìŠÀVUö­O?8­Î#?‹ v0«OÚ&TïuÑzA]9†"ßÕáwçÄ|Zgƒú0…òÝAp½É& ð}ž;ÅÁÐÜØ#K&ÊüÕxBjDûÈtÄ)`â´£Z\cø!ìW¹B ÑnØ @tç ~.а6CÊb^`r4á«“+>²^²—WG^&>3aOlLÿfÏ™D–àH‚<ë4ÌB½Ã¾9ˆ\³eÆ!U†tÑášÃÎ0ž\K>®8dKÿ¹²›-{½ ݬ47ÆÐLè"ÈöäÄ%CKôIJ6k-%+ó½ý‹ E<š_EH¡›ÉAͤïœëL QÞË¥Ã2LaÓûQë}übèÓ¬¢œv8•×[ç: †Qt7þÙ°™NF¤ÑÄ~éd~sÒg4Hþ”Ð@vÕMíç¢Zð<;p+X¢wð »OdasJÙY)›ëß—µ¨åÞÚ 1ȺÍ[Â)úâÓÍpSþÔ-WO™©`”‰. d\Âú«†{æ£ ÕŽ¨¥“1¬~Oõ~Cw-ójçÇ ÊS&`¶Øþqrˆ~Xj`I/HæéúæJÒôæ“êáÖD«³c‚Ýw‰ —b„0Äÿ‹¼ùÙùSUI¬W~昨n·˜£ƒ¿­¢qNçœ" î†g~––ŒZ‰pì(µ›F\ršJ»@ÖÆ˜¹7‹©…µ³Ê}¨QÂ&]ÿfdƒûªÝ3]Ãýðqn²dëŠ%Lÿ…Ý¥)§ý½‚«uëº4—­áâ4çCPà÷h5ÞRcó˜­SªSf¬bõ÷tªrÆ)¡‹§ŒÕm´*sz'Ñà?lL®£áÚ&sæu¬IÅKj²“é‡tkèEMO –„cq·àú–ÇÞÚ^d‰Ç­ó› ™AÝ-„o’?ªES£‹-¶y] >Ty~íB¤0`":D;¨ç'ÁÝ«ÊÓÒáÂ<6 !¡k<ôÕÒªßÁܽ¦ÀÏ ˜D<‚6ˆh„ˆNªI>É]ÍrEä3Fgv¸­fù/]ä qÐ?p±–NwTŽ.ÌðZB©3Ê+”B¡™ ò+ž¿Óôè)*·Ÿr-œº‹f*ÝïÕ±ù${ZY¢@u!!\)¬á¹™ ‚·,5v5À[¢„^V¾äu5 ,̹^wj{Æ´Óª}“ÏQTàŒ¢—û\¯£ÔAk‚qÑòkc¯©’bšg>55&Ëbyí[Žõÿe „ÏÍùCD‡ÇF,#&š*:¼}/üŸŸµ¥q2ü'΂õ à };{XE ¨ Š÷ê.IËyAçX˜Xæ<ˆÂBh6ø`µy=ÒSubéŒuØ‚1ÇB¬>Î(ù£¬ Q˜yÛ¨ŒJ­4°KÖ2t릓ËíUmÀ·ugÏh)'´UNY#3¶ïüFªÌ£¹ca;”)']Ü›²SÃÍÉqb÷ “¦ùðtôvÇ F@px[6G=f¦¸Ž|` ŽÙ/\’€º‹ ^úéúW¥9É• ùW‰3îS1%G>ÈÛèÌ;G8ÕÔ/jŒ:$ÃvÇ$ÝäigàSfélB›ÙjÊ^æ³g“ß^¯Ca^üY’È-î@ö)ìhIEM¬^KAeªp1TO’EÊÍøŸw'Є4Ε÷ ¦ÖSo¢nlÖI€ù§%ì‘fíÇÎE9å®JTâiB‡aü!ΰG“~ªâÓÏx†°iÛæV=£ 2É®k…‹)l£çg|×è#9'âÔˆãʼn:,Tmá}‚€VG„s«GGÒŸÑ.u)r†€íß5€·tÌD |/†õ÷=)³¬Yi×"ÎàÒb¸|_Ÿå€6“|¶ÁÌ^†uŠø_ì4t….[` «û¾A{i§ß©N°á8òo;VÊ{û4 –¶Pcv 1Çðƒð¬ø¼?óT˜¾*J3…®[û ¸¸Ì“`’Fuvl#0O€_ü‰9P%mGÆøà²¾¦.G\}Ç׸žü(tŽÀz³26? ‘¿Š ¦a Àî…ZS|Œ~Æ>ëA*öª©èØ GÀsͶs6ÂñÉjâG˜éE7]»`K–å›Ng\ØSºÁÞ‡ìî‚;ñ&š Ö¢³ ¸’¸Æ›" }©\ü5¥ÿ‚"¯Œ¬à-* HÌVQk݆Yç7ÿ~Ùu^ w†W'E:2»,™ãi?¦·îÓüÞÍÉ'LQûe¡0¸h Ǽ,˜âZý§Œü@$èt"˜J‹z1]?ÁðÚ×K,PMš´Ðh¢Ì¢Ur×.̪Gs]¹fÒÝÜÖÀö5«ôé„zÔx í.ê¡¶]žò±ÌTüpÓûY}Ia"ñ}á<š†Q ë÷Éæ›•Å”%à®QT´&®`ÉÅ׬‡€ŒD¿a/Ѝm®ÅÖTÕ·Ùý²¯H*ž´Ý¸)ÛIY¤ó~kUÚâóY à?ÛÈïúµßáÞ™gÇ`›àª1 ðj¢(žó˜ò|R/Ea¾(*cFXË ?ƒá¶úGñ ^”Ówš„…ðpÁxËpÅ«?ýXÖkº›,7¨ûjÍ|ØŸûÊÔž·=#bRjRø8½-l¢ŠPi¯BVÐÈBŠRk@õÑëhP‹2ö¢É g|–‚¶ò«ômE#£,¯¸ '’(æµ5Ú*8†Ý"sH–ôèh3w—ôßì²æ½1j÷AŸ»Â©·9æ#ë‘EÆZ¾¡&äg,ùþ…[¶¾#¿1 Ò4ò&|ÓwÅ–—ÿÅm§wú³b¼É‹IÄ·«Ñ@ivWƒü ge: íw“ÖÏÇømVB/}ò`w¸÷=~Ó0#½/ô"2âˆÁ†±®UþŒx}ld’öú´ò¦z$ƒÎ´§DÕê0—Cò:¢ü½x…WƒÐî¶Ã‘9éjZ‹Ð±{D;âcí€ T‘Ei*gººå¨‰¦ÖgÖ•MŠÜà ž­;óY­ ³>²ÞD‘ËJüáv&)†ã(+ –Œ½…ÜH¨?®$…à…ûû2½•¬s–*¤`ÌSuB|¥vZw»n8Ífüãƒ4÷Ëx‹üOPÇrT³,!ºÀÙGGTâÍé7.1`ÏØvÈŸ'f<@ÔAirZç,½Dz§Þ£sã–f ©¯8)6þŸjôäºlZ3\Ÿ¾å åGHÖü~‘7/s¤íÐ|ßcCÕ€Ïú¨]}ÀÄC¢t«¾Öp£†S¡þäÞRoÈþÒ¬¬¦†*Q="'Id¯ƒ¯Rä=pUöŽ£b'45¼KPè壿àÀÆTU€EXÆË2'ã\!æÇ6'L‡Ì'Ø”ù;µÁýB×öÛÞJäM»/ì1®ôõ_¯µž]Å£{çg~yb¡.¦goÐ)'€M°• ›9!‡í^.B ªÝ’;©µ†úœ|x2Åì²¹‹ Õ|o8(àÞ}†…UD½¯cIŠ€¥C¿q»{~ÓoïÿÕ $“éºÈË&F%K\&yHMOlÍÝMT=‘§˜W¼‡[QÖÖäÎ’ž¡cŠû'úEi#ØàŽÏRÒºà×*û®Ù¹Œ3v{\‘;k %ÏDšz`¶ÎÛ×Ôñ”Gh\ïÉ×Ýð¤DQzYª?1?>:Ü»z{IMkà¾{•Àœ¨l Ñ7ïCM_qö~nþNúåZž†éêï7ÓÉ+r¯ÎÊ™{é,dÖ9k sÄ¿/ÓŽ èɹ`ŽB_#ŠÄç* K<‡#LLù­^¡Óa¸£›Ó§dÞ,Vù[wÑîžvŽZJpÍà9U½^Û7Û÷59u%öëøIòwP9!‚4åUJèÉ…w†ÍÁ¨d§H.Œ<®JÊIâÿœ%5A”~1Vª ´–ù%ÙʼnûWÊVäX<Ž,¿å“rèë,7TTú]“lq(W|ÏþÝ/°¸<ó×ÿë±R5atb¥qlÁߙޱH)~Qô1[‚ÆsMÇØphn’°¾¡jeP}„Ý4ó Í‹&‡Aa>ºgг:Õnz.ýÍÝ÷X6hŠI)н·{#"üpý¹¿în4ª(ã«4¯cÖ6©Ã]×”4§¡Kb#P~ŠÌ\Êò¤¾R¡+/x¦µ)9sýu¦4"%P?XléFUûø$ýËG÷þëOÜÈvdæâ´íÚ„_ƒ%ìñ}1hÄç«ÀS`ú׬›N¶5Ž0zK” ¿iBÌÂv–²ôwµ<†ásãŠRˆ»GØŒ ‚mœGÑ¥ñ\i½‚§~?¢P'?&•ï¬NDw޵í´Ö¬Ýk+àµÿ¡aò3‹tYæZ‰¬ —š³„tG÷þ au_«Æ ô0õÜÿC‘Œ¨ÿÍC=¬t±¾ÂÏlý¾` š§JØãîä|Ì5^ÑàW¦†~d0c´‚6¿ˆówðM‘}ó@µÊˆ»˜ÁËë œQ7°ä“¶0©Ó‡më÷Ó^XçÌoÁ @¾é-–ÇY“'¼6›Õc¸lvòë,m{;’Édôfà˜pHAáÖÛBrfél*8Ÿ¶ÌÏè8÷Ý£ùNf‹­MVÍäŠCÊ»ACùÃþùsB#ù8û½ÞUu9ŸÕ&M›ÆºÔð.~¢öÌô¬”Öü Žð®ñÁeÕ‚ù+Q>üò]=±àøå×>ÿ‰îbcÀ;£‹xªÎ7·ÙÞ|ÐÒVöÏYÕ‡ú¯îR‡_xüLÄËD(ÞÖħÒë§³Ëf70ƒFe^.q5¤ƒur:»rœ޼74ÜO–wO(bjÈÇr4ᢃùïñ:ÍA¥¨44&Ã7i´´s³ÅhŠ(<6™!wO<Œ®goO„öMv%š®è_&5s«ýé‹Ó/9Ï/£Ð82@(o‰§ù•=àª;Ãþ›Ç:Cô÷yÂþ” š˜€q–WëbƼðS„ˆ=]3CÏ`ˆÿ«mG‘†…‘™ª?žå¤1ËD# +<äÛ¾JÆ)3‘XQE ­aM¡n}/ü.ÎÐàæ½Í¬ZR5޼ï}º-œÍE)†dfþ¶—˜£=ÿyÃ+il¢E–Y÷Ÿ½eÆÏs¨Œaÿh'_["ßÊdLci˜ˆ0þ§ Z§#14Æ•r³Ô¢äQ"/¨sËòÁþ‡ÒÒ³À(n™UìÊsúmÒ8oUÛçu®ù ~k£^) HÛgƒ¶¤|<;uÎZZ1ɦ*sØøÍÁLˆE+ð7:džÙ9ÆŒ[Ršeƒ]|ނײïßRçWÔ˜‹ hêej{³&sbÂ9ÍñôÎLl£ÔDR,jzœ]gã%ƒ-óap5¤0!©×·h$z_4·V~dqöt¥hC²w|iv]>Ñvš®9W\M0b¿·w€66w}> À" ÂŽHvF|,˜1ÿ–ÿ$„MvžÚ¶IòªÇÁ1˜¶àÚZ4t$v7â“^bIÂs—¾/®p°½.J—åò5¦ÀÆ9qЫ.ôt²V8ÍÖRaDüeÓœ@–›þ'‹Lá!\=Î|hY¿ÚòŲh³³’v&jºf4ìUë)D[Œ|‰ö»?ãÂZ4½@7÷K0‡Ì.Œ«f…0“žl’$áUD®l-PÃÙ|6€æŒ2ÐM®ÚËÏg¦æðêQºñNÂV:b“Óó0:ÄX0Zc‘×LÙì”Þ::ÄÜz·ª$cQÌոȢ©€ˆ{†IŠš¢l#ÞKc'ÎÉšZýás©bä ÈvO¸0l3j×èDj7È9Ù£yj"Úì´C+#%:ª”ŠF,q`Šö–†EÝ1«} †®ÈrÚæ½mù©ô3ÓæÈ¹è¾âÒ@¹Š&-r2GÞn¸N0Ãu[Œ¬æä’¿O!/,@îHÅ(D3œû‡ òùç†ke«@t­KKÓü}«!+7%ûV;‰ïGëàó‰<œ"é½ 'ÝÒfàjì °šfu™ïA¦t_¶sÊàùò" [ÛÀ޲±(Àp b1ó”Q=ŽpÎ!É’h³­ÂpXŠE½ÒOMm°zîÜ®þ[-r›(ß~m¦¯þS›î¸¨S«P£ÓÆWaˆ{5.Q²4æ®þºCüÈäÑM¥]÷.ÄýO*+\Š’JQÃÓ€â£v$é«ê‰-K(âÊp’™gÕéÚ|¥$WüÖ\÷£N¡·ÕÈÊÙ €Q÷ö`N†f‡ã JŽ/pÑæq®#„ÅB‹MŸù.3OŒùÕÕkþ4@d'Ú;!™<³/“¥;Ó¿7Eéöúä“KûdÖâ˱zp;"?Í@„Sg¶R\’úþÔà îIóà_Kmc 6'¶•öªÍÇHš’+æ/½àÒ?uÁϰ‘Qîuwâ—v/ séÊ Ò•W•PoÏ8ò¦’Õõ¶#7‡!ý¶3'´0Tr7 ÚôB„…Àw¬)V+ýUrÆÌÿ\Èж7_f¨C'ÑIç„ûÐBV]/N²)6åBT¢“»½%$èZAÈèðýqŠàrwwНã*6Vf¾¢YU¹ÜɦÀ,ȃ«OP°®8 $‘.¢Ø{‰šNMRç·°œ€Z†Å«¼ÒöS¨ ¢Ô>÷NÇ?´éÛŽ lÐûÅ:ðgŸ™­®® Í¾P°“ñÇDA?Ì'gp?÷Æo^ïË„Š’ô—›š¬ËA¹=B#áî¢ôQã®¶váù<Ü¥bÂ,mi-£ÑЦž2›½ÃfM‡qHñü„‰Þ¹ÅõVã(0põqÀ·àÝ£>²á¦ÍáŽ^ê[=FÆ*VÿAK~[V3¡‰=zZÈùûNŽÀð”#ly.Ô}+·g3ºl”{µ š}r’"4ñ,95F$ÿÕ¥õ|×Ìÿ.Ì¥/EnØÄ­=|ÿÖàœåDÙ¸Áy¬…aجÇÜ7€NØ sÞø£ `;`ž]ÛrI(Q!‘<å¶}{sÆ`/ãb²0–„ÊÙée³„îbÏZ·4fšÂtÛ\¦jçb=OÛõé[HjÀìf¤ 2"—¤Œ@8üÂ(4Àñ)Ìů6Ø>NYj›þ4Cv^mÑ*"@¬fZ¿äÃÆÄW}¶•y:þ‰~¡ÔJeäθß½Å+,ÙËòÛÕRéé­öÎu )s2j \qð -`s•)ÉbùïŽè/F‘…¦F_ëÓ‚€\Ç95ôd¸ÖZX®DÇ#ø,à^ׯ=ý3Ø.=¥kù)sÍÅ+Ä1¿ç„)äÈEûì 0\iÚÐ2T}¿å~¨ÄDeHqòÎ2ê?ÑÓØƒÅQ-€üS=F”žèGTÇŠ"–°ÿØÕ ¯e§¦-S }S‚ÊD›-¬Žÿvl!Üóœ\Á"°SFPMÀp!ဧ••Ýèè›—T)¨€ãåèJD”ij»*mÂpçc¡U¶FD ždm,™Q¹+ÚúK ŸwvI°©¥Bv b´­ §g·W+Î:Š4sä¼° ô¡‹¤Å^¶‘»÷ijsWhC¡œyNþÚKDJ¬á|”ùÃÐ#ÿ¸›ÕC™¯¼Ý³K<š´ì:hômBLõÉJb ÖL¦‰Cí6Õ-Ø×Å…—BБBÊ•€íÃÐã\søûO/+Éz³¶"ËþÅ!l)/ɬ°ý‘žç-3Àr1ËXe¨Q!gIlèË1k­µ*‰_÷ ˆSsrƒôˆÕ‘Âv@ÊZqªbã`^“EâØ‘—E&,â6†`ÄsùéûƒÀ¸™õ㈧)‹R*WÈÂøzÛ9)*&‰zL¹+*ä™=Á¥Iñ}-uœ^*ÒEÅœc L§ìs£g`æ‡ ÿÞÙÞôjÖâq†4r%`œ!O¹} ~ŒŠå¼þSMûZ8 ãgäK3†€p–:2œb:h¬o¹ZúW9ÁXð„*Ë<ã,LˆKý­ø)ËJJ3d¹¿ÈVq¢ûèBôaÉ0Žƒl6m¾ÜÌÍZpFž›Y@‡ÄîÕ²¹Šò»Û…ŽâÞ~­zÛfºÜh ýHôœûäݹxWó bȰQ½çÙ¯Ÿ:0Ы1¡|?Æ™œ-;‘áGÖŸ‹Gvc¹ldj´¹îÄE–ÖìTÓ¬· ŽOd¯Y¯ÈÜ›{£ÂˆÀä ¨Å¯ýƒø¨ˆðlô©®¢Ÿ!èñiÜ:ÕV ¿‚d+°ÿ²§¼ú·å8^7H‘‚s©a*w uI!¼ºÔÙæ &áãÕþ{ÝfŠùÛ@bõŒÃõàYaˆ¬2ümÑ’òw“ló]—›¬”àÖK¾më$$ä)jèMì~òóÖ):Sj‹Ä3m–gš^Tu§°LÇUY~y.Dt‰ã¸ó5a Àÿ03ùZ ¿F,?l2»9ñÓ莨¡’}@<ˆh”:D§…¦Õ…¤ ¤ô²éå–>1ެ:#×ð÷­G§µ›Ðín”Ð(öϯ÷ϽZ]*èOn·À,4 ­é$ÿ]òöì3ö­£§cûº´[ ÊL@XiP´ñ²G¾¾Üg.Xž›0F_ŸÏ¦Ó³ÿ´ÎVÓ*Ï}ÇFŒº¢÷ì ‘,’†K)ŸÎÿéqçŒ4âPõ%vóYÔd ÚM´l4„‚Daé—™ÒX×ÞÄŸ#C‘%þ–·{ï Ѥï6•Aø\ ßeÅ)ñEÈÀ$"ýçþqŸz~žÛ(›^.H/RIøóCyìÐq¢]Ðæ®ö‡ïc3EÿÚÆW©uú{©Ì]ËOØŒ¾›m­þ­%N1Üô ;B’ƒÈïú ÏL6ÖšòÏóÝ©38Qøv1æ@©Bæ˜s½®ð•`߶𮔮ƣ#Ýx‡Ââ|‘âé6ÏÚ†õ×oMÞ¾!gÒ: ×-•ž„ܧ?̱h¦õlÿöVz¸°-æÉÆ’R¢W„éh¯ÞTfiÝ;O“\©\€4¯PÒ·³…ÊqÞ@¹9XÅ÷€élž',o¨rÐ8SÑiý˜#½v\S£È$]ÃMQN’TŽy. µP}ôØáÀ9º/¾qŒ<ËI"øLQ²?êoa¼ÑöŒ+3ùž¹!Кe%\^¼ÝÂaÁ–BøÏ$¸"3á`ö;¿)¢ïò‚†-ä@{}F=åñ7X¢×îá›Ç©5¨ûËUp!•¦Iþ{ªoÇ’F"ºéX‹ç½ò× ùÌL]ŒCtÞ TqïŸ ?Ÿ¸3û»(¾Cós*l„EÎcù.ÒåÙyíkw™D³„äÐAfKÓ;À‰Þ"ú¾½&âcêí+8 hËǼ˜ÉÔ­b`T½©±‡èûÏ $–¡ãöçBŽXA¦0Ç­‘‰WßLM%„-ú1e/¨«šéBÔ¸ã!ÊË|0“Ni¢/&ƒÙR îJa‹3WÁÃ3ªÛ_u¬Ó^<¯ØlåË}kM(:2%ZHÅeì6sÉÄw4Fº(²úOÆnü ÓcÕ¢`?”u^>sþ5.ÀÁöÎeµwaò1y’àä®­5ƃy%Ð;–ÏD!9Ds÷ë&UÌ·ˆ<ÞÝ.ùM÷2—þD¥:bz}U áÝ×j49úC%ñªk‚v¸=Çzj<Ï~'Fn|«>ZƒÒ°VÎ> TÑn„µ¡È3N9ÊÜ¢Ó k·að“Z±,‘[g"»WÝ!zØúùÈwG^<¿HZÜM#½ ZlåkÇ?1ßíÜö Àp¹a»W¢° ÝuO\yó›Áb‚ýßlŽtÌ] SìÅ'pŸ?€íöeEr¶7¿ââ?*‘:E‡ÇÒÉv <)ŒÚ°¯­  HnÚ„R‡å‰Ý丑” žå:«%–DðI2ß¶¬äÎÆb8dvÈ þkÔ¤GIOp`©è­% ä5¨Ë24‹ÌŒú\½ËûÒ‰xÕöm›•ë¾}‹ZÅ¡ÿ2ÖâcﲇÈ@|*ó«s5ÊC6IþFP:šzMf,“}‚"¥>:öÞï¨wûÓ­Ûð/‡õÔΰ<ØA×e>Ód‡¬1÷yÀ6¥†œJ÷f̦‚ÝQ‹ ù„—ÍHSƒ@5@9¯¾Ñ‘~¦N»©¡yæz<½’'œNÉë‡*ìþHr`a® â9V·Ò2©k809 ®\d»™0—òãkÍ}Ý`ù•ÞqXÀøÇ ~_kñưt~×5;8˜9ýr_¯ >1WmÍF ×t‰úOKD¿îŽÏ˜Ï²}@u!›ÌüÐÓÕÈ ŠŒVócô¯E9"Yb.Èk ³1I„ã0Ïa´p²¥ïâ÷~Ò¢é×)ž; S‹jgÜíoÈ´Qg­€Â`üý¬1NÅ'æåbâñÏ'àuƒ8‡‚@@­aÐÝ’·¬Õ€ŸyÓ!–‰dbo²^±ªçvÕ‘ê)Ô¤¦ÿj8‹ªüht·žmÍÄó‰”ÓÀŸK¿Òãû ö -Ø rcãÚTV3(š§ "ãku[’Úg–ÈýgC²Q࢒Ôïæ®³æWý-<½ ñ3(:ëª6çÏP3ÛGtÁ¥î1úAŒìË-Œ1ñ¿¯g2Ì ä4¦8m^NÛÀ%/£{ðŠfž<‰£Ìzµ#_I~ò(å³ÇÍ»)Þ¼~^2¶1¨·¼F!0õøEƒnQ%œk\Ù^z/VϪÈXû¹ñ± ¤×Í~¨éäôšþ’è¨ÃþBxk&V¹$û^“*¹kz­§É›µñõèÚj¦’})µ<ÔñøÈµ#% .ðy/ò@"±3 ¨8§@h>ÐÞhv¶hÓ«‡ “ˆÍO*e~83P5/! }ÍÙÉ?G`×.g#°e."éõËãuÌ8Nô‰N/Eöãn²=î‹hOÁÒ2×Ã/{¨$ÉðÚʡޱÓö¢-+‘ 5±€NBè7Ÿ`“ÎÒyHJ¦âW×§v“:ÿip–ç¶r€ñ¿õ@Á¨QúêßÕ#Ã%’V@¹EÿÿòðóUÃO£{Ä…yà𵨩^³nscNÁ à %sÏn2veÚËf,<™´[ôµ|aWY2y&uo]SNÀÑ8È ¨w¸ÔÙ‡ŠŽ>»ÉÂíK‰8V¸|K9Ьâïö%MW2ê}qeZ*ZVÊ„`í Ja®ñsHÌÀÍR·ð›8”9¬èè†m}Ü0½—d]Ñt©v–§eÕW5€¢»¥9*‰sœZ}Àÿ@9U_RjtBߢ2‹ ó^Ì4ðYŠOmxö›£Qö˜Ý¦éÑ“E¿°ŸÅ]¸’~è­K5F_ôéýq¯ ‚;“5€0Rr¿Ýh‚ý7ñ¯*§&0”{Aƒƒüf„ÅQL~\û'×&` °v„Ç{u†ŒeC‰gµêB?—º|‰h3FdU–6x…ším:¼¶‰×õ7¢Énß’°Œ'´Œ™œ»a}œ¹‘Ø¾ÊØ}”ù+ ¸m]Aü}ý™ vâ ä!ÆsŽj+W¸. %åùS„¬È°‹!†ßÎrxG-Ì”BO+c¿ìö;­MSû7»rÔ_º˜~qÞpéo÷<ûã“ç×ð§ÈÙªæ ï'Ê2 ¾’óÏzÒeƒu NxUC0ÒåNµƒxïݤFÀ 3k(í=Ä6™ynlÙ Ç` |«m-ñHF’9êƒ|< E ‚¹‡Ù XK/õÙ-¬a×c×Ìqušû– CÚB-,îpÑÕš§3ǶöE¨ Æ´@7þ<'s“É+Ã]8zêÆ«dû} 0Ê»ˆðgÿ.Ôè×ÔT»˜-£òÁŠ8“³;äMY¿#Ò–2¼Ä=¯ü&«Xhë<Ôæë?aeiÙÝP±î<äxl7Äl ͹?†eu1RÚÀwuÃÝÖ7;Õ¥‚ ÙÓQ®ÇÐk> ÐŽ·Ë´þj©xŸä“²³Žs’v¤‘Ý™Ùp{ðPE—ϯEfU©­7Ödˆ¹A;¿…ÏÌÂu¨ÛÈãñÙp÷×ÙE‰ ä UÚ Ë½þ?¬AÙµ((w߯„2Ò>Füqx ´üv6ž|•©?ˆ’äû†-"äņ³*~ÖCßÜ ×r¤Ó£*éøÀб,«Ó¼ª'Ná@i$À#Çí^¯†î D xŸ2AªØ1ü.øßcb£*dƒ¬ÉµÕTmkYÔ²­¡(mËîä=ÆšL°¦Ï]h.k$I'¢>· ;˜þm½{íàTªÒêzÁloÛÙ€MóÖì¤-2÷ÊgnÁ/KWÁ=ø+ˆlcûwñç6§”.CžêïúK¾E7ŒY$}-![g“ÅZeÞ/`ØÐ‡MÍkšMÐÝà ¥/Žš%žgHI*ÙðîÖFsÖ&jºŒ¥~?¸ž$Î øO€¥«$¾4`¹’•ŽxFt Å’îUÅXurÛÓ÷M g4m±äà‹ÒaÇ€^Ñ-w€,ÇãM,•"§<Í<òš|8%)Fiò)³|:+ëÆÁ¦SÀ\æC‹Çœ…$œi²PÄü¦Ö¦=uÇ«ýìè#S„WÒÍãA'ͦLÂf»Æ#¼' §Üò›Ó¤J!ïÁ#—¬‹¤µ€Q¶9ò¸æ YkGºMë.]ÓA1ÂmàÎùFy_¡Ô¡:Àv>AEÝâoë´T¿‚¬ÑKBkYFO|ÎòN­W¶õz"%?é¢Ë'ß΀ ü§èƒÑ> ~Í_ÐढãZhÙ~gšzw‚7ÕŠ=‚êª&©ÛB<Fí¿OÁ_ò`G±ez׎VZÆß/5Î4<+lvª€ßgòö\±ò”×¹Õ0mq‚@ôì¼®qǽ§lÈã#^Ê|£‰Z"ÿ2dt''cJݶ]8¦Š=C#Šø¨ú-ðrl×Å­ë_%”¿_|Axö·ø N‹èI!DVZ(ð4r“Ÿ4Z>5•3T%yäTÓ#0ZnÝ´à««àP-¤2XÛ›E³†)»ïzz\>…û°<Ü—¥lÂòÓ-k¶ }|»t{¥r‰_8 ¬¡BFõ€Ú3öÔ—òÉO wSYÄÒ¼¨¨ƒ…ÐMÎÀÖäyxZ\yz]d–×=¦‹Ëèè ƒáY‰Ù§K¶3Bœˆ…ÉVO X—>;ÕÍxöþ¡¦ŒÄUmWüùލ26Â0To´Ÿ¤rbCØ„‚r3Çz>kõgÏ£­ÓÔ‹½–¾Åõ_YF5VÃ/¬­Ë 57 à$P´=>¡FªáÓIˆ9¡VÙî?™ÝãÊ ¤ÌÁŽÏ_þå³?¿‡¼$“Šv/Âç«üzç?'1h¢z´‡¤?ã 9™šŸ¯,Û“ÖÓãó´Ë†®õßóÓ„ÂåØ¿ ¸ÊÊ ½¥Ü RP80×Ìè«%ËA-xk¢@Ü2›ïC•q>ö`*Ø Û–³ÂG[ 13Æ}èî_^I³+eRe¾àñj2FÖ”S&ì ™ƒN…Â2* 9˜4æD3æaÀ]¿¼ÞQÆ<¾Ä¦Æá¡*XôÎØR‰3åÃk%ö’žüο²ûŽBÏažT¨U#5ÄØÐ!nA¡{qÊ~$8Z?V€¨jÓ—È€ ÔòEB÷Iq¢€#ÇâªQ‰3¶.„^ÂÁÑJ)ÿ®c$¢Æ&}O ÔÓf0g{“€7™ù?ñ̈-/…tQû±ˆœN©v~"gvbƒyáIÈ·!>gw< G~ƒkwÐX`àékÃ_>ãF•WÅ6U¥íƒÌF×LF­úY¾è˜‘}Þª¦žå¨çjY{ÐÃé>ýùæü ÆÌY¤COIâˈ¤dnJç7_óHu# ïBšREoE{˜¼ée8¯ñ—PÂD¥)ÕàˆªŠ‹|óœ‘3iµ¥yFF 9éÃ%¨@Àño]OŸb@’N:²CXßMÕGS©^%e'^FîªÉ‹Ö<®C¡ÉÎq½ùd’Oâ¡f›õ+:ïûÔÛX]Ùû<,?+í +ª›¯rýtYå*/P…Šæ$ì0Ú 2§E*Ni‘I×ÁÔ܇žkŽ]›«Êå2KhfDt'Á#¯ÁúA?ù,­Ö †´.UÅ8lx½‡±_JXŸsjÛèD#8Â[gÀ뎖™°áYR¼Dp©ŽºèøÀý; ú×ÖçÆ_éO‹¼—ßH*þ5õÈž»…°ö~º:Ø@dûÂÌÁfI”'ì\‚!]¹”ÈM3Á= >di“žã<ª™ÌÃT( ÿJñã®ß¦#=Ήv ÛàçVN’/m»¢f-ɬÀ'1ü3È\‚‚s¯Upp­z™TU5‘éã%¹óQB– ž«gex»e¶¨|BY͸³>cª*Ïžp{‚HÊöëè ¢ÂE‡x"6f'GliV‰T˜‹ m¾¨;l fOa×åàÒ¼­–§7-ÎÆyN‘á¦üá¿Uœ­~›¼d¥û©ááÂQJ¬Þ SwO*Þ’Àz_{š<¬•i_V^ëéº ÝmõÀFÿ6ê†Ï !“#:*d ;?¥õ0±V«½yŠØ"VÊ®éYob.2š„³f°Âøu2üs›àQRªÑ™ì²ëBH#bØá*Q$"‘øgœËfTêVeñ!1SŸˆ¡G©‡Ä»Éø "ë.§Ù ú/ʼn×#iR$}1y\ŸÙ‰«ÁÞ¥Ù#ð‰ºÌ½–›gFúôžÉY¡Pæ{<ÒTN÷Vnr4\øwWx Æ:«ßÔöTÌc¢K”Itÿ7Á§¯Ä*Yi€÷qQ'Cð ¹µP¯Ä?¦Ï\×®À)"y2 y>Ü©|œf¸KÎazâ8&PXÂvËH©2ÄiSªuóxA°FLË X• «Ä¤ÅÝjËÔ«ó»òxl3¿…@wèj…è­½w¨Ó‚±î¬ïª ›~óÆ|¾–ŠŸªiL8î0(žãR}¤šs7ƒºÓ˜@ŸlóÆeÜè`bùŸI 3؉dqéÀET.­‚Á~YäZJ¢Q»Ü¯%YÁ4@bØ»±¢dÀzê¯|ïŠ*Žóè©÷¦ÑVš;Í÷’ÒZòoP›¾Ë¾y†I¹“ô0V}~ü¤¶ÙìyxÐ;Bu›Ñðªœq\±_MÕ‘ª¿O€Ú„qöJ¹ŒÇãT}¾f7ôgSɰímÒ~›ÎºIhU¶w=÷'V5¢7‚ås0HF>ôlfÀäV¾3Î1z¨Ö3¬ø«î¤ð«Ø‘JžëçÑ9ZPÿé6ú.áC}¢zê%êr¶—Ö wt5ò7sëf+ž®#]HÎéÁ]ú@*™qµXГ=PÓ¾ýfºÆ§ùa¼F6VŽ÷TæOG{2¥ƒÿÑAPL„A鋜YéÀò›$>tˆnPŠ/– í›<÷êÜ8€÷‚a‹ùx䥗þgŒÓóé:2 g »ê“:²B¦ÜQ1; o‚4ŸÍÌÕ[R}3+íûô#B~jx>gn/Ö–!‘ÔrCCZPøœ9‹âES‰$6¡Úéé´˜‘ÂÏÜ̇Nf>°¯ð×þoø&f5’èC\+Øù1IÑO½ d:ïE£:ˆh4¥ç?J2§IÙ²$Ý]GFyF·/T²oô ¦ª»Ì9¿6¯žú÷èn]'ÓÁ똚«­!î+LžØÉ:;î-ɨ…×Ä…ƒI‡ˆÉ^³«z èPÞ!{e1Àœú‡ ZvaªÑ“ô‘M5;œ›Xœ°Fcj†0þ_šUDŽê fþÖmá±ðbµÁÀ¶š¿aîøg]zj‡kLVÙP9÷ë!t½ðF¬¬‚ƒz i{x´@óðм3?:"ÛˆR”ì‡DGhR½ ÐÙ3®xIýaŽ:bOÕ>“!õ>’U×"Ú¥‘¸Ç@NÔvxÓ2Ï[4ÂF¼$VË߯Èg‹Ãfúq¡ë·ûj˜[áÀú$Dêvk·ç OÍóÌü'U?>0º'úTµ–ŸØWX$Q5aàcÕv;ô) r„öØï9 z‡Ö¨ñwñìhOWsÏOíÑ”'ìÙò®Y—.dÂU¶½/q0_I¬ÿUõÆUÑþµI¾>MqµàÂõŸ“ S™ÊD³†z¨+LæßAæ<°T½s¼]q%´eáqRFåÍoq{ÃÜ­~oú<å‡D'õ*|Žs9(R`wïéMuÞ®‹9 [¨©/®3p£¸ýûkveyÁ¾Z£ 'FìUe-‰²ÛlŽª(¤u Z4ìðyØv˜‹ÏK¸¢ã©ÑјÊ…8XÔv®½a R9“—Ÿ¢û—jXS˹ ê¥-Ô }Ù†K.Ï‹íŽ%ÞzæSTÓæe eÊBŠ¥k¸Æå\üf‚µ>lK™#ÊÚx¦çB-ò¨ž>wêqIãv}PBÇxÄ—°ÊŠy*îSŠ©Q£’€¿Šù£5ežwmjìuÚëPq¢ð5ã:“óX)Y'x<„©¾“!àÓK°gá·}D²FhøVåÁåuAVš^A•K"$à HM›°¿(Ïét+«çÄ6“gØÄ \^ AAéws5îMÿ¤(ûoÍ ŽÏ’~vý¤C-£CΙ*ïÏÒÙvX¤fäLOÆÈ.Ø=¸µ›û=ò''w©«/.as0û–¹S`h×ÞH0E`óïέ•®ðGIüã÷˜•\\ZÚ¬¼ÿ¶1EóY`¶ÑÁ&Ãë§ Zö²”Ç€g§r&Ž{g¹Ô<ŸWNu…7jÅE›}— ù×£w§ö5ëü<´%4Y ð ?T)÷3;.ç™Íaxÿî '#`a=0«çP ,"²‰t±Ú¤‡þÁ½C)ƒrAkÛ>A„¦mW¸B?˜je€¤­¶Sy£¬éРijÒ]ËB­ÿ\o¸kmLÃ|$ß:¶³”Û D4©±sÀÄ8íb(b½’RF"­Ss‹®×ùZógTªòÇ}¸WÿõÒR¤´dV!ñ½“k€+N í Ⱦ;O+½ìI÷R â ÷ý²[RQ£&°…tb&õT˜¢é}ú´øQYY™ä–¤ìô ìÅ>f”;d°Û¼²Ý·%@°áÿ*O%Æ3ªœÂXblW¡õÉ€ Äy4’’:†/Ιó“7 1²èûϵ$I6¦d–tIJVšP×NN‚ .xƒœÖ€d|@ìá£WëgÆàq³–ãqÏ<µ¿Õ›°ÚÅÏ€DïøÂíѵaq^éûÑÄŽ ½E•èªD¦†.ôZEãÙýchñ¹œ¾¸üM…›êOC* &ž4Ž'WAgE|” ÙÎp:‡­žñ§yüImFôgÐ̪dÈK8%5V.R°¦ ¼[4ߢA˜Áº¢]™œ¡œl´¶G~!·éP?{ì×¹8¿:$mÜß­Õ}’ëÁµ{ü,<í’Ú ÍuK°QLªÃ胤¶—Þ2½nawÆU²¤Óo L…éyÀF-,-ð.ðWxãúO-b£¸4ŽJλ÷SË]Z)ýÓ|’ȈšñyVèúc[žÚ ¬«õÕ¹O‘¹®‰Jæd ‡ß…;ÍÞãè¥9-ûÙŒZ¶q AH‚ÃÉÿî Ê›@[’ Q¡(îÅܦõ·•x¿ ~$ëYwÆXbÌ Xé8Ï=‰È]²Ì”·q+ÿHM•[’Ž)¬,›¤AÊfº¥ít9zC<ÕÊèk?ä’$L(_>ä¢ÅçÈþ¡±ë1¦qÒ´­g?Ö° ¤™°_“yég¯ÅÉÁÛ¾¾:5eýÏ…IÚšëÁ,tØ%ácÏÛó=ÄË;ˆš:6w°ƒ•ƒ9,è¤ V^.¨NTXžŒéÚdà í0.YÛ´´¹ÓÝ;JÚ9ù8þ𖇺¦-Ì)=eÄÄœVñì""<±vgªÌ×µäÁÚ'†ü“Ä ‡J›Ä1Ò1¤ÈŸP`Ñí¹îzñW¼/já›EÞìvû=y "»&äÍkõš‘,¹²ÝŒ Îê…Å  u=¸ƒäJŽïCŽ‹$¥ ;†ø#ª“ Rjzs•ؼ=»;.@Ú¤¤8„…Oœ¦° irû߉N¤”Ÿëcä–‚ù“ËáaÑ`YΕœ¿%¼ž·+A{¬mœW!çÖ tƒøü<ÄÚˆãKJÝÉ8YæÚ¯OÉùCî69ä˜yäž3DU¯b=Q'Ý÷¿†Q» ¹Õ¨•¾öý’Û5D®â¨ÍùÒ#lcÿ|ë‹pºß{¦iòäN¤=<žDÿnÀK+…Àøœ@õB…ñ”ì©hdÏ Ñä%´ʲV|çßs£á…lê{ÁȈ†˜>]Èߊ 5Ùþ^;/Œi¹ÀQ“âÇÖðø¿Vay6ÓLù×QòNO„®(Rz–äc§¢š]‹OõL[+ˆ#\Í€(B°}úUöaBmT0\±ÝEw#—mø‡#%•AšX`r—÷_Ä„;”B4³yÆ£™¢ŽÿVqïž¶vÖönì{iéõ†GbcÖròNbõÜç…¹¼4d"u0<©±%y+÷õ]ÆE¥k}Ö™Å$åbX[ÃHŽ«:ß uφ!ê„o2‰Û´|ó¶(X4T¬=è|Ä™ ‹J"­zÿ©Æi-‚¢ŸÔ˜Ý2.=WF«K(êrRœ £UÔ ©I€‚”Ïb5‘Ø}qyÊÀÁVåÒ‡ Ö•þ#´שÐ>6)ã:_,Zqï6|“@àsD‚JVÿ…ì&¿–ñq”hÔ¯+y¨4M*¿B58XzÉkbgƒ×OG3Ø-Œ­€ ý1@µÿJ ”•0šY÷ZròÒ¾µ lK‘ÛëW¸vS2‡òT¸–Ò£Çȧ8?B#XðÀtM…€­¤-–{Ÿù‰ ùhVerCdRtŠÆtZG}˜bóqÄÌOsîw5ÃëB¾qÀÃæ ‹ps¥©ŠôNt”ˆ‘Œ.ðزÁ›J`“ñ8cif’FæW8ÃL‘h äíˆS™z¤VŸäD‹&v¡é²¬!û Pˆµ=:ÛNE@ë‘ÛŽã¦ö©á |CP½xpè !u[*`¾r7B´•Õ_|_kèµæø^ÇiÓ {#iMhiDoSË.…Sç̤}÷î²~|£ð¬S"½ì/NýÔ”ØDîi)ÀÛ¦=G•-FÿæsÿÜs±ܵQ]Éc.>‡9õÂú†ÇÑ­×.&9aïM†ù$ô G24‡³Ã­«ß"¢nŽÅ.-bŠ˜‡¸¤„‰à¦ ñ´.™n³z8±aÐNÜáfªÍ„ãa³ÊÑH¸¹lkæ6Í&& v¼´˜VÏ«*ÑpûÜã-Çà¿9‚ˆïl¶ÖÒ´ð“uD\Ûïà:L)Õ/›Óå“e€òзÀ3“qxåöÒTd—KêÄŒ ÞïܪÔ–Eäµ$ieàåj¡äQ÷=Jœ‹ èRƒ‚»îbÒx|FðãK1¦Yµÿ4ªH=¸2TqÍrBÐý;¹Kò±Êëy_…Yò¯ÕÖ9Kµ½Ãg…óÒ—Ï#ÿ)O¾K·±biÂÓÝ’|žeМ[ÂIØ‘£zþ®µ•2H]HKï‚|+„Êàý*q#…ç²;b‘æè†ž ¥ûk‰_ß0åÅj[8úmŠ©¡“ù¨«:% ÞFqƒà›ˆÌ“‰!1åô—þ§¹]¹Ôº¾1wRmB$±±¼ùõ8X|-&fzÔ`qPƒr¤ã‹ ss£ûˆ2CÁØÉí÷šÖÛ2s ˜ø”Ï,Iå à)¤,5ñ´ÅwqŸŠ¸sûs☠ˆxŽkj6½›#Þ|WV€ÉéÞ¹Ã×m료×臃“Ö¾U– X…u'(Ø"þVŒà©ó,}Ì\OóõëÔáèP Âg¦:ÒI¾/¸5DeÓRà‚\?ã~®:Oóí@@ ÿñm=U;+¦ô4 ÞGní¾KAPz¡Ë×Dr‚A1°'m×íTà¼lèü“ŒÜáÉóÀ>4@¸ŽÅTÓA_– ‹×¥²Æ¡n?‘Kq,çä”#±Æ´·œ g³Â®–Ü‘8üHF‚˜ÿô8’yj–$œúòJíÌã¹Ò¦EÐŽ+q»û;¯*JA¬v½Z!ž‚k×Eؗ꬘ü¬i>”Å­Žvàüô£ë{FSí½¡Ê/l¤±œ‰4:+Iµæ @íH0ã´ÁZ‰„вIÔ,SYó~꫎½òwÖÑb_¨ù_L\ånßNY9^Œ–‹»ÞÇ…CüÌlËÄl_(ÄTMijÐ=Ç&;ïñ?Øç¶™…Q»ÉÁ×ôHš¿<È@5§èâ÷LÏ„mGc0NöL ÙCW£M¦ùüŠjÂUä0‹Xà'jýÒÖ¯‹ Ë[Âàè²ç¹£Üùú·ö¤»ÛuT§d hä]\ãU ?ßí%1Fú—ñÉ…ÉNßÇÛÛ5’ö]oÑcØ5™‹‘B+´ i²´3 â-¦˜s4€uƒêE¹KˆŸ„|¼›õW!rÑZ9’ç´ÎÊ#àSˆüĸÚ^ªŸÚ)?ÞïL —à̳a1Å0«™ö!‹‹÷ ­È À:²¯k,O×èÐhé çIÌõ9lß–¡Ï8M°gø.æ›F±ŸPúŠaé Æf•L z®æSWgçm«`›±d›Õ RLl¦ªÊ/‚{S’Mà=?Q¤OàH²-EìÑÏkÐé-`Î篔+Ñsw$\ÁÛhƒhSn„A߬êaH^6ÿK)‹ŒçÙ5€èà °¸Ö·t30=æ¦òñMIégÝv¦Û4¨¦5ttƒ+3eYùàÀ©]\§ipàgRì2V…¢l„b.µH¬¼Ÿ$øñ[Y­¡DŸ2Ófgˆ/ò*÷²³êíúï.ås®¡-¨„w4Gí£Ø™ ºx1ħȗ™ò˜×\½Öα÷¼pÆjPg#€]|gßÿR·#ë2_-¿÷îä«•€§¶º ‘ÕGÁR VcöjÐ^+na’T~€‹-¾-#qŽfp_ Ä¥¼WG6—óI@áÆÐ’2º•FÙLÈÉêfÔï“a#%EŽËç·`J ºà9GLpÁ¾Ø\’ûùöñ]U/¥=뉊D¤–Ÿ»R´^=êµóe×yî·>KÔsÄÅ€qJŠÀ¹Ú5®Æ×ü8¹Î;¸ÙJÖfæ»N´ÖA Þ-¦¼¸ï~ÞÃ1} æXÄf,dÛšYw쨟@FhO­F¨ HéË??ÃJƼ­ÛÉ oìnÕ²lQ9Þqi}¨¦Øõ[о?Ú—†-¯Ð-Ä(—I¤V9¾2œý\ðÅšì ņ®j¢¡¶8³J"Ÿ‡Ng÷®jÆ€E61{áfñþ°!“<*ð½Gý üÁÝjñº³-0 mE‰û¯õËÉJø7‡âý~QÓø×9…™g«Ã'…Ÿ{VKt¹™®ºx£àÏcs« Ó†)S¦[i{e–õ£?6Zg/¬iÖµqRãBÐïh$­—M$¨º¼×<Î@Þ„œÀä xÊÒ$Úp…JW~ÿ– _¢¡Ê,\?O¾AgèPª ZÏë-‘ü-IE\8E$ çCÍò_w‡,Sf毖\<‚j0ƒÄéß0ü¬ãN¿ì#-;ÍvQó†º*Grã­O4Íþ¼$iö»ÿ‘²¯™¥&ï$¨·ì#Î(z·XS+€äì(°>se¤/¬㬒\ûªk3¡¬öûL¤×›Œz@!2¨Fç¦Ç®}Á¡ùdÿuŽTÎ81|j†’åI>=!ƒÍépWÂ`Vˆ§k¢òìûý8ç§&ÍûPº¿A|RðS´Ë8>èf²JOF¶!Í符ª ñkI x¼žrcœrT :æê¸„Lèåv¿Y³O¡cxAñWeÚñt Xò­O%¯ÞÜ⯣L;\™Èx™B ç.ϲ÷¹>Å•ï;º¦oÁ±Œän¹Gg,Òf÷ð‰¡ ¿€¢ÞÖ¬ ¿×*J¹ê'aƒîÖSÀíS°-ì=®õ̯ˆO¡&Éây¢×ø~ikW—ø˜“\:ù0¤÷ŠvŽ}LõÈ/—Ú-­à¿Cˆ+ÕŸI¡©;f×T0ñ¢†MÈ¥~…xAå=ÈÅu™xyOìa2mP¿^Õ}ÂþœôÑôÚ YuÌ—`µIóäBЏPH³¥[sÔNlŸ4}ÈÀ“În'ù…áʼnG-Wà6ó¬v͹,¸ÕM(«påZUÝ—ÿ¬WíÔ°¶·YÀM¹‚J'/ZðÞM>³ÖXsøXÊm …ù_¥{Êi9øêFh¶ö׫2ôÙCÄZ{A4ªÀWÁ“×r]åÝÓÝ5W™Ýc¸œ¦|ÄSòJd&W gúT6Fà ù;è£ÖJœ]ôEO³b:FÖH›¡Š*^AþÂB˜ŸÜXpƒ ö‘ÊG¬©@›=TÇøÂ²;ä@o“%Ä•C·Nðìî{/Ü´9ÞNJ¦*p˜À±#MÊœŒ´­Ö´"ö.¨¼Úû~ª…T¼BbšViùìÃÆ^)ᜫœí_·:ÁX÷™èoÃ¥÷W µAé ɪCçö¿uرžår"ΩTÕAÞ¨žªXx#HÉcœP9H2ûý dU âþ¨ZK:}-ŒÏÈ“’/ ?ÂtÕ j­×¦ŠèŸvš²™Àé S)¦*p¹,7s©(›ÍbÃñ2 )}g[÷`¼ˆ£ˆNn 2<ü¨Uç³,…UX¥AGš"=dôŸ«>ÕáøÀøÕá)\™{¸'HU§Ã´OýÅiήß*ϱ‹é3;ôºÿ S”¬Å\Øè]ZËš½¨±µ¥~ƒTµ*·a2÷çDnxý¬å[è™EùÀgüx!߃²ËÒ= >»Qf’yw!ôYT ‚Âè<0 64 ‘ï·¹ˆÄÎznõeèýD t@MáŽ÷r é+×vh_¬ÐŒT€yk„Þ†{µG÷´Å죷ÙN#q šH¦¡u§ãÖ`‰òu¿ì}Û•·yp®ªÓze2± ©Ò³e9hƒFÙ5¡XÁ>} 'åGCœt±u Ïo¡¦<«G>ëCw3‘K¶¤FÚaËBPä…{ž ¹{[Ô¤ywËã‡"ÍHÕ½w´ÔLùñX„Ëlaˆšï|«ú¸¿v¡³™<æ.€­†³Pì” È&ôLSüLC*K}öÖ¨•jB^ÜØ×%ãFBDë•ýVæ2PÇŽ(÷·,t’…-L:Ýê áMÛý‰'Äàal.Žå·ní-Àã€PAµÈ[™›2ÉU¥ò_5g§ìU2´“KtU²Î#ù8€»ŒbÕ-ÚéRR›^b,’ÿ7()t¢c#E“­êUm©ì•b_$qݾÒ,žj:w‘|qŖϰuk^J¸S&> Y w›Bð¹’#] 7̘`/Xã³KãÓuˆ~L|ˆ¢æ ÍMZ#±)6bÞ•‰%}NËe:U%oáál2Bè@”Â6TNœºšQÍœ‹‹M€Bêå˜Sx?¢FK1½Z¡U ÒßÐ&#JˆUZš¯‚ˆv“Ö¾ÈçDB|å]+•Ý7œ£E[vÉå>sËxýû@L#Š :ëüQ`æêêŸ'ó(°¤| j8}“½^\„ ܽ¬ûÙ“ðC›@T¬rnÛÓ Á}kA'7 þ·º°è9Ú`xN÷½Ðƒ¢õ(€¢š·ºEJé×Y¡~ÁÒ ¯3Woãc´bÄ \"ºgPU}ݦõ¬1ã}¶¥¾7f…3!é{`o†¿è«¸xÌX(áa3­²z?i¿`_I)KÜ0˜˜t€ä~ñu8Y”Šd3¾õ'µg×·O¨’×¹IþÐô÷OXÞÊ«øÁTäøhŽú#G ¿óÂUßtÚ§0}µƒ àœPò­¸Brk<´õ³f­¾µ›ƒ;¢ xK_,hGž‰ß“fý (Õ‡øyLGáäˆf Ð:óuTÝZCdAö ȯó½±,ç‹«~#³žR%€ 7•Ô‰bìtLŒNìm~µSM§ÞgûQѸ±ŸQ×|ý?ç«lž’mŠ€·ÜJ3bãg8Õ…Øõ$,žI¢i¹àǶv,è’GÞ[@ ))žA0ø–ïH•¥…®¼š¼¸°ÌSý‰°XÞ=^±Œ¬ÃÛ9ä—cáQ®!ª]~ÚK-Ft¥šú¾@GCÆ}ÞC°k[jI:,ò„,#€êî[Ê©K|a”ɽ؆@(Õôœõ8´<ö°GçÎèžz"M„`ÑǬÏhe½8¨eÆDlà“NMÞŠ›û¶¬ª7ý¸]þMëšwdÞbøZk7³‹›&­o’WDŸ)è=Eýž=p¶Ò Tá¦r¶o|n‚‰Ÿv)üû°±d°©-DBœž{QÇ?¬‚×Ξ€Ï 1…r0‹'á:gLQúŽ‚Mê}î÷CbΈÕJÜÿuÖðJÌ£w¨¤[É\ ÷òæìú˜-7<Ý cÒzM‚9œ »…éàþ§ \ÿÎŒ‰7#Y,C‚nlÚ ÕÆ®6/ÓëöòfyˆÑc_/ÛÜæR(&˜ûP¶w¹ðjúŽ+ér öæ=Y?ˆä \Ým•øÏÓF&¬,?0BgŸe‚.wp+·Æ½E3åY >ÀæcûágÁ{LÇ –¼[y*¦ï¼KÉ~B›RÂæ:/;3ß+ŠG/\5ÄYxQ"÷Ø^}0Ôò¸E™¥1´o o‘PìƒÞ{eÆè|g$Ää»ú+Ÿ˜LÂcëùʰ§P^Æ']‰î¶Ý°+»^ èa{Ç+ƒÔOBi céØ.†J7\¤;Å{OÆ_ëa Í+æO°lr·j=Û½'¡–«ûõW˜àª÷orуz%F T¢_Æh¼{Š»…ËAëî Y§˜î8kÄL¸Ó­¼¢Ú[ü™&)lȹPß‚2Gïø£³³˜>=_N´ œ!{S³KÛËÏvêX ç¬G=‰ài潑ش#¬k‡kScM‚îªTyñO„ì¢àR§]󥀚TZño1àñU]‚¢dDññfà÷°Þë‹ÃýQ/cê×ÏV X{Èw9®.è~s%R;ì_Žlä¾á¼Éj<³¿(ÔÜEÿ‡rPJ~˜Y3°’øX³ÝžX½[³¶¢vFÜîáŸß—¢p#Œ„²C¼9s(ùí.@µ.q*h M±ŠŸKý$„©'éʤÂs¤ý þã–ñuþÛ€ƒ-ˆ»÷f_EêUöú†‚<yÿ½Ý¢ûÂtá{¯!ªp.Ë\+±qÄá vÅï+pý^!öyHzPƒ“ðÉÛƒVÈV@§:þò‚¶¼H3Rü`~ ÏëÞ¡ o,-þÿ~**)W€‘´À~ùRÖŒrfì§êˆÅ~:S#6!òAÇíO©Ê1Ê$еB5·*üe‚„9Ã>9ÊY?E-ùµøa´O—ש{»3N²i=´&„ƒY·"¦6ø‘.p¾'Ó.,ØSOÍÖeþ qˆ@Ë?-„dÉfËJý D¦™ np„H¥®íw¬(ÊÔf¶ï[‹"ŒEXÿs"œ¯ ß "·§4À÷“+²ÐgËñMüYA¬Ë¯Z%\cîË¢ÚY€Øõ‡å^-ÛH:¸ÝD,Wíéw’ö;ˆœ%¨väOpšÞM °QîØ “Ð@‘á{ÖµHˆ¶Q»œ¬3Ì3?ädžü4:¥ž‡I[1.š¢Zá·öjô QÓCŽôR «,ô¤"‘À•¿Ô£°øË¼‡›u^ìOˆá@ÑâDV``/Ñõ7X'¦;à åäCV·¡ %R@ÁíX¡NÁ5 4Žb%¦ Û× SU±¦5@‘" WL ª ÔìÞ`¶¹Eo Wl\í>ªû¡ ºçîtHö£„F•dúQÈm—f«Í[ìF>&<Ñ#V#1È¿¥çp+@,àM0+  4S•`g~±È~ól졵®n†ò¦èF«ˆ!ª€‚Î’Á„`!Ý….ìëŠÛ1A:`ë&xöpKÄ+ÐÚ»<éa±{´OÊ”J€hF² î„1ÀNm8ì<.Ê&ïâÏõE÷)aø1£S!Õ ! ¯ BŠx^kî¿§–„ ,¶äk/­O—[A^XøÙ¨«Ôc§“nÀ» 6Nûë͘ø¾`©ß·þ1# ïÆ[Ò» ŠâïoœŠ,½‰_èÚÚ*†û¾`Cn:9>È þu.脊€…ÆJÃw‚ÓtêåãÐLó¢û¬ôö‘ôüãQ%~‘{wÒÓ,#«tøµ¼bìtÃxÎÜ7 p2ÂdæeŸ`hD& ]Ovh†=¯w{Â`!‰HAkù½¬ü2ÙÚ?×3w{’hÃlö(ï°ÎÃbæðÿÕ↳2Yû1r={ îk½>C‰¦NÊF³Àa¬ÊˆDëӗGKé3“kÕ!qhKÏœ°Øå#ˆƒ @Ï¥g øËwE¤úYÕ{Bî®[Ârl—#I4CCÉãf¯_|ƒCô<íˆÌ¸+\KPòS¸¿üq+ºî–…Ͻ3á=Èÿ~þävÊœhMÚ m` 4=O\|n¸ÉüÒ¾tØÈºÍ¸E™Zx2‡\i¾Õ¸fňU¡ÔZ(K –mÁiÝ®QO£³¥Õ³®^žAn‡,gæû`D†/1¯?]§©¤ç)V<Ë)ìˆ>$]ˆtßr¯³ï=ª˜D±9Ï"ÛÂÑЃÊÙ@º…Áↆ"Þ„g€ùúëŒUºÕS!…?É¢æý)þ,ßû¥ÐlËuU Ø |§=m:,Ùú=ŠÎ^àTÌÇÈ{&œâÎ; Nú÷õ@}`@èÕu™—F]1Áyé·óˆêóÒKNÑØÿâs­ yB@º?Xæwá1ˆuÁó¼ðÈ©–ØFCëÜ¥«fžØ”5Äv›v©äé Œ2”A~Õ&uÞʉÙ@§ÇÊÂr¼èLŒ¤6´‘ÕÉ»áäB“Ÿ-MêïÕØ»(åHZeV…Âb¸”!þ+\º7 d‘‚¼Ç¾WŸ%r×/oC{3€3Ø#P-Ÿ·_…i6úЬ¨DðJU w%îx ª}ˆò¼&#Ïñ¡Ô[ŤŠEHÂsÆsj~šqå`-[þÊN¼Ä)w^Óì)¡(ÿ ¾\"›Ø»(•ÜA“mEû'“³`“ˆ>ÊîÆ%™šZ^fè¸ñ/;1©¬™ä—ŸÝ#|Ц»³Ùü&°ýëµ´n—Ï…ö `I1oê—~]ƒ{Ùƒ%z-MÍËF§,âÅJ\ Ns, ºÌìÖ0ŸÃÁÊÔ¹¢…‚‘žQCr÷D~‘M­}ù °ò=À@‹H¼°·™Á|K`(öJô¤Æ½g”Ä)EÞ‚)\#oQGÕ2ÀŨX»%»=Æe…+M¯é½mâA¼&hYùüu~__ ÷]Æ¡‘q¥DýÛI}îµ|Dý¤mÙ¨7cäö†ªžP+$d’‹^Nx‹´F[EP4x@×q¹f MšÔ³c/p¡øÜ®ùwð/0“‹N2_ r•SœÚ9>f{òµ˜G-V2¨ÇGÕJì ˆ¶«~“¥3ðÞ@tz}Ýhlªüb>¨R;¯6¡I§–èRYI¥ÿs/ä` /bb‹n¾Ç6‡Vµ¼m8#±-’HY|% Ò4òJ —0C•a£ýØn\´¸ca¶õòj Ïð-^ñ²ë|(V–¸û WKÿÇJ>á¬8†TF-ùšðZÏϺIØÄ4b-èy§ÿ×}Øæ®›ü­º{ðÎ#ÈÓš–„ ©ØÃ˜ü}jÔBÕ³¿rUs7¶§§/:„«,óâVÙnøÂ3ÅÄ ÃfCb¿,Ï;™pñ‘Ÿ²PU¶,UˆôxèÎ#6éxЮ˜TOœ½ŽŸñ’å¾ZŸK(~× ³›fv#]á8éTKrpÔM~jHUôäXãjîFƒÿð,‘iGÜG„ÿÉðÉ‚Hé_Ó×^híd°fÛÄåÎX¸µ¿²îv»@™Ô÷<†õÚ‰~F%‰´kÉã¢qx…Qªˆ8!¶ó&¯ºU\u¼/(ZwxÿA΋z2ƒ,®Ómí?­Oµ¹ Æ¨DBpý.K̉üž\x¤Gd6´øA4l”<‚ÄÍ™÷Â{G&þßÙæGܾ5mYš{«-`!.*knæT3›å$ZÞÓ4`(´çÖâÏž4‰QU›[sq¸ž~³ðS Ú+GWƒÅjgÛõÚ“Aç2R©píNµG^þšŽE°nj³³³OED° 4@Œß¦‚‹ªÇî¶Ö W² %6˽¡ƒS¸«Txúwx†M:Q\Ì ßÅÇ4Ô‹äï56·éº5lŠ 5„˜îþÁ0–½îwùCk²ÖòwïÀï…*EþÁÔuNž!P¥ šØqÐýøùÈŒ€ò &›ð«2œNnÓV^Z%ÙåJJü{\e@·úF† ¼].æ5w¶¯`ÛÞ½NoIâÇÌlœÝÀD‡-¥ÊØtD*w- ˜z;>úɉºi*S™´>¡ãÝÏPÂP“":?ÌÀä¤a?+?fgý‚a–œ5ûr|Tzó€tx+ÿ ÄR²âòGcãàõ‘}”œ#îó¨×Ædx$c 7ñR'ÒÊ:"L]D"v·³)­x®üšµTéXyT‚5Þ„¨A¡î~°c,5ŽpÕø™mü…‰¡ Ð Žú¶`¢L%¥ûÓllÚ¬6µð”Õ NZ?±MìÝà ÞP»þ6¥»Jò’‡G²î4µ"qhõKi{q,Ï’<”ÒúZ‘bF¼È'^H ™…TA¦ÓqðQýL8zôPÛ Ê4UpR‘ÑèUѹ¥MïXò²q`6Ø‘Ã#±6ÏÕÂÞeÉ<îlKÞÌœµPµ—O¼¤%ÍX²-[ûB©b IòÊO];ÚJˆÖÑ"Œñ~8–$è¸å' M”ÉÛT*ÐÒ«”À¤þÖÙŠ¸ðpKM¾×¬¨o°}ìײÎÊoÓM·Ú9<º•{o5ŒñHø=›uæ”ò& é1ÇJ™…Å~Añ'½QãD/4ãßF(} 6#VÊî©ÉÉe ñÇ ÔG1ZÐLjgÓò4Ë•H|s#ðãùí`ì¬`ÈC— „ˆFßV|Æ+2e§µ8}Òc={D®a/ÓŽö<{ðë¹*¼íÜ—v»ñƒ{s•áAQi´õ©]€à¦^ŸòÞc]ݾ¢’hÒL0Òã,ù;ÞqSmzöw z xäw3 =iNhôÃÆêÑ MÚͪ楴Ðì4?%i ö¡K›¦‡Õ¡ {Œ/7ò¯¿­ô‡*fòÀR‹ÆÓ~†ñ¬fê~’m2qÈüt.Ï*„±r1Œ 1å[„ú鎂ì*‡Ëvž8Ê`¨rlo§ýŒ¾Óf0ú78MøÑÏެĢ{ºŸ)´{‹%º <§æ¼9ï˜8è}˜èiÀŽYµøÆÚχªÑ>ÞŒ¿€¬|•ç£E°á5Z–"ÛË7#ãÿÝ¥_ÆXˆ„x€x-ÁgZ)É~F%´Øz× C¾ÁkÞÀÐø#-„¶÷I Â#ê®§œy«ˆkÃâ«›ÐzÚÂFE$:ÃûM¢÷$a¹: ŒL»‡ûÔO…ºÙ´ÚáJņÀh]k%!–°O Ù2òVîOÝr–tæþj­”t‹wê]4‰‘jCÔûZØ5õ«,!(v ó›øçœ {ÄB¡ˆÎOŒ ×e"mܱ®3æÚ,ËZ….àšFÂÄ^›‚+bEõºšøÓÎju@ªþj~i0ÛÊ{ØEi¼-LŠéä—s,ö…}÷—™Å°"ÿGU™Háì2r·4ðEò“¢u¯'>6Ý,AH[“ÿo «­Þ.€·Ê‚ÀžÍjÃÂßà#FðBÕ_À¹Û„ ")L%ÃA="ãU†q/H‰CžšØŠ Eë¶Ñ{;4šú"o¨×Ĕ΅q#<Щ' ˆëñúîÄf}f±:—áìç\>ëñU“Ç/^”v £ZŽ޼¸Öß!К1!P•;;w޻̧Ó35øë¾ßåYãhw凞O1Ÿ<‰ÎmшJ¥Ò•,£Þ3ǃ›ú]›>EYjqFÕ*Ë6ÒÚL9Š_ŸÛÑ·sæùî·H÷öùîOéež›KÈu±„ä$ïûœ DVªÁåžâéÝ(ö¡€Àæ fvÊñ,mà²Á5¥Ýó¹¼d,úº¨°g xz¾jä¤1Àã‚ñ¯£ïªH^ác꞉î612²~¦ë3<…¬uG"“¹ý®<æ]¥Ðíëw7hãî;mœ®T.Q¤·…å|ð n·ªØƒoáF2eÉžfsGsØR¿×,énŸjÙ ]é.a¥SåPÆà’_(Päÿ’õj-B)¬.4j&*É?ßÿ]0 «9>b¥i—Êämf÷Ê_ù[ÏÏ€¥[›Ì¡DD©ã±íçP©w¦ÐÁ[Q_ ÿ︼v ?7aÍ¥›äýIÐUdšˆpMÝ×Áx&Î UiÒd±‡¶VÒ÷”À'ß w€.Õë¿1àì…/ ÁðsºW9øÊÿéê(€áèö¢MrŽm7±åCFuÍj®‘0½4tвýƉ)õL2£IÜ!&Ðé é EuV¡K œÂušDøy&B3¤E3[äùõ  `*óïTp!³†øÃ¨¶©ˆ94­bÑ¥#9ŸÒÿ§ÅZDÝßU™?Þ°û©5c1ðÄ*NL ±Ž‰ääÙ@Z^ŸKê¹^±<›$ %aó8ÁàÃ!€“„¯¹NùÛ¿ªd¹,¯O¾•$o—JqÁT–ŽæÓf‰(¬¾E²ü³™)"±Œ²Wcô(Ä7VgA6=ç`C92":Ð4ÖÄ'P:š„„7½A~G@GDO°l‚ÉþÚ‘!ŠJÍNhC…Ú KªØ½D@OŒ>ÖÂýá#ÖMÈc=U†.âêz‚/”˜”ß(Úucƒq°µAìvÒ>ÜÔY:c>Ž í·àŸ›”]^¿âÁIr»#´QK+ÞcsrÒÒ“`­[ø.gÕÅ:íÊŽ>„=`dׂ„ÌÀ>,)šèu@(âÂðyn®rüM·îŽ×c¾s=eõ“LZêt“¿)ù÷)‘nG°V—‹­3¥‰$Ùâýyav“ÑŽÌ€±_ðx8˜=—õ؆"e—¶ @v~Æao8?jä%O 1üt§°&Áʳ{ÑVÓ³¤ìù{yž!úY¸¤·$Sò—™~{Oc1ÅaÑ%¤òœo÷omdEñb¶ÒŒ¾QuOWò=8C} uôdbÀ‹+ÍYâ)Ét(Ï®um¯|K‹0SdL'V™wãL‰~²Ù•õ&‘íU £°Bb­>’ìWÛö„‰9Síf™â}îäSæ|báû0êV…Zö®9Ô­6š»Ò£,‚«†¿7QÐø RGC=µÀö'’Êx34´ðnÛ¥U#›õ¶æ+™ ½Œ 9>¼â)y²=¨eÒ­òÖ‰ÿ‘Á°Òº[¦V]ìWZ=¤®7žqN= [#Æôårí­c8“º_EiTIäìÔ_¡ÛŠ2TÿUÞJÁ‹‡¢ˆëÌ‘WÜ}…ˆ·ÍÉÙ‹ã×ðÝ›~¥¤Ç]58ÂYÆ£Y6>Z)%¬`‰Ã¢¢ 0ºïl×VĤ98Á1)ß^œip [pØ9æJI9Ho¹2À eÉ¢ ð²h懒nùI|ð³1 ¨yã¶m@2ß¼ÛU¤X'Ûj&Ñxáúö4X”ÉÌ`éå~tgCÁ¬=j¡t…l¨‡ÿ°aQöç´ éúú¶–ux‹ œ­­’>-ÿ0³ÌRC©9 J—ؘnXM1rÊP‰ 3â;U×åžù¬ùj}Ä¢Iÿ·’C<¿(ô¨4EfV?@ƒ‰£E“#5½¸L8½6çŽü !K íQlâa‡®!*U)½žö ýe*þ(KeÇš€û††cg¼“`ë(A ?Z~w–M¾lü–P•‚{¿·ÞC6@}HÕÃ'5{K3ê³Æ.5úÀaäI¦ÛNjvÐø¢^hjggj¥>ÊŒ ƾS…¶‡s“¥ëÌ]ú†à¡Ð‡Ú‡õŽÜ‰×ŒIo.ºÓ=S]#þ½˜áÇQ¨:æ9‰ ŠNsï3Þ0äûE5+CÏ» B è¨@ bÓ0ÿ{(—_Æ@”®Ü2 ´ýÈòªíNT·^À&…‘[ÝÒ¤¸Œô ÉQz¸ar‹h0ÜQkXÀÌ¡´VÝ' 0ÕR^Œ¡  ŸÎ :z5NÉ(“6Ú*2/n“²2r8álÿÞ²Šˆc.žT3±6ºüðúƒqQìÉWˆ4tɵ5--¯yêó4!èæªx"üaC³è=?ÜxO:¹‚$·]ÛÕÃ|e®ls{ÀÎrQ¼‚ާ‹,‰š8A£GI­jvd}¦l Zo<|ë™bÎZ?)F_7Ì-awޝ_ŸÉ§Ï0¶×2Þ ‹Œ¼žekÄxÆTô Á_.ÑØ)–Dc¹Ûb]e/=¡°-ŸÓš£‡O1[ïê†ÃÊ=7JÛ^¦6ž¸*¹Þghcãv{—ÔÏ:OÒí× ¬:ÿÓ%ôÜ&Ej¾\@®Ðë:> 1ï;`!ƒ»Þ]·K`ð@@`lÇDJw5û8Q½†µÖJg¢ {¹pã½äh…ó¶´øbp;#¦“‹¬¿àèwµß–ì4î*'™zÖˆ+~@lbº²Í¸têV%˯A0Ÿ¨wƒì¡©áI"Ní9 ’ò—œ3(l2¬m A:˜«H îW§³Ÿ’4t…’¿ûößwG×£öÃþ+Ž_2GÜæ&’<ëwœn!jLT/,§‘g=aqºb„¹qYKzØ'¤M¼4(¯Š“KR4°X©Àvá  D’F¥íyͳš8¿t_Ol¸È¼4If`¬hÕŠæj¨¦IÞI\“Z*„Bg$¼Šz€zÃEå´ É Ôî½õCt`!‚U—>%EÓóKÀÐåðÔ}Œx+@]4MÜîf‰Ãæ=žtîm‰L’úírÞžxèÝK&ÒÊɺvgyhG tEÞX_‘¤ÒŽÞEEÇÃèÈqñ/ Á8­—”ØÆK5Qâ(ÞW=“þ `z °±¦ÏãåMCH‹#˜X“AP^{¼ïæ·"Zß;׳JyqÙû ú¹XòrI;y6+hÄ•.·ô×E¼¬‡·r6Õ ¼‡(f¸Áï]RaÙèKxC;P2€n ¹aˆjŒVˆ‡C0NNוK)ƒ³æßˆání4¤,E)Q:L<•“1ðïRg[ÎÆ–¢Ÿ…u¸×´b0MÏÓ1,­:À»Ô$¦l Ù±Í;V;˜>Ž{!làîö01 “ß½Aä“w Wô¦æíç:¡ðgìgêLIá—†°Û½a-Ì3]7N`ˆŒ’ô\o¶;³@G¾.i&\å‘Uš~¬T¹PÀX%â?PÛaödBKpŋꚮµ ç–tlÏ ´lÒÄŒSQ7E"ò Ú.qõr .(·Ï>Ÿ7ÓÕù¾ì4xJÍ |º¶±?(Š_êúô2üʰy*†„ ©ç:HAV^ªÚ%î2û‰ã:UáÚ|šŸ •r.³“{´euá½è¦X?iìd@#\Fû1ƒV±bò¶Îs_÷6oÚ§…\ÁLË3ÍpaDFŠ^œT>×ôТق÷aÑ¥Ÿ›XÈɫѥ¤æŸxeFð4.\-Q|2ÌX·¼¯þsVyî° ˆ¡†Ÿê^ãö[ ÖPÌNN²¡g„¤ŠæfÉìh…‰ Výõq%­v~qg`졇'GšÂIú<÷1Ãc±dÅd¸Ç쌓oÊzQÄOC[«)È€à£:I,ÓBË;¿½6ċޖcѧ À]†Ø§˜jÎS¿…º"-¶ ÞΦøH— Œìñ)eðàe+²æÈ›àGŠå_" a#hdgÚëBMW²Gº ÂÍáëŒØ—PÊ´)µ |ÿ=g¡¤£] ¢½G`f¥TëõÊô^,?Â2‚[$Û½t婵wÚµlÚ¸p—†'C=ÚÞ°›1„ˆ.pûrBÍ^d E ©ÃQL°¦w~%LlAMmPx–ÝyÌ*N–½ñcý’­†Ð#ncg͆t!èrdi÷ß³å¡;j²OóÙÐ^{dâUŒòVZØ¥rÔ¦3X²U{ø Ü1-¯ôú¨°¬¶H‚Ï©p'Zº¨ü°J‡ͽ¤B‡ÈPtuþ³ÏZ8ºduÒ§æÄèãïjvš³®¼7ïçì~¿ñW¤¡SUò®\Ý4aªíØU#‹™Aï¾$ïèØÍ­9Á“¶LW;ÇëŒÖuOVðlßx 4UGiûô‚껆 «|B £ŸÔSËDú°µT®S—£æpªÀHE+ñ»|<*k®)}z]-ÁÎð¢., #í< r%þ{‹œ-°ðU­@ætÓÇï„]QSs×ÀIÅ{BX¨¯“CJë¹Óó²SÙl7…Å-³7Àˆcã:¸±Å«ôµ¥‡ëHtSOø=\w¯¨\îÊ*•A–°=¼VÞ¦ÇȸŽâô«bŽ8y ï6yK2‹˜ù}vñÃÒVÈIØbØÄAµß«7„\}mbMÿ¡Wž]ñÓìôÂjêO퉬PÚÚ \Â}¯¬G4»ÚYœB*ŽZ|¹-ïºÎkdž•âX=“ø³êËóÎIœF½¢ŽèÌÆÀôÚˆfî`r»lßMÖ¥û´-–Ç#ªAÏ€&¡¿Í €ÅÏrl×õ¯¼ZØ—MŒöi-ƒ¯”yî‰)¡Fñom¾ÃŠ‹€HP)¼DSËË¿³È]*KÜÿüöæ+t·gv”㙼cJù.Î^ºlËL'ëo LRß«iÏ'áÿܽgèLo¯Çcó÷ öV*Ò IJK}(Tå‰iO³dB¬M™äÐÝ’GMÍëÌaóĽFeƒÒNj¥~—ó_R•Ö™eeúÑ`CìÖ ý1…×è"Y=ÙeŠÜ&Ø“m¾¼ÿó|9>NC“j‹¦^køY‹ƒU…¹Õ­18GoŠù·7—hÑÚ¶VæÕ÷૘c#Áj–8rB>‚ÿ5ƒê]ž&‡ÎfîG†þüªÍx -•°¸¬Ê‹È¾¡ ÁÁˆïG„Ñ ñzeì‹q9Ì]aãáë‹3¹mvœ VÀI)ÛÎv„€´Ñ!ˆ–[… ‚ÿ¾ \Å…¦…Ç/ƶÒÛÔ8ª€öÝbÇ!8Œõ(ã÷Ï„ ¹¦ÚÑ8© XÖpÛ)º‘·s¼UÑÿ×3ïÊÓ›°¨éÄ1žl}/—Ð}0(D†•,r³VËèÀ±¼s—ìoFa;´0¥-ðÖ–ÒyâTÛi§ù`íôÕ·ÐúBey×ó“‚ \­)Õ8V¼›OÕv"'œ÷‹{ñœ-A9ñ8  –ÜÓCQq^PÜý% Š\N†tSé|ÉíœNF5gpòp®Û°wNÑûZg|)ÚT.xí®p×àáI6'ô}µ³jò*ùª=bŒ+¢áóÿczyøñ¿#ýdéêÃ;·2Å2ÕKT&q 9ˆ­9?>G0J³m,?R"à¢V¬¼?jM,ÝTzF]Hö,E‡­`ëÚÉbèÍZOU‡æ÷óOJ´YMáf±›Óõœ”ÎEç„“ÿÏß6õƒ\fšô–Úo½’×"/n‹Ì¼3{ô~¨c3ï¢ÎÝê°ÎÙ C5§Ì£Ø›¥nú›t¹Íšc!ÅÄd®6ß¹»š([iÿ­)ìhz eÙhˆñÚ¥Õ®F5â±Ç%ì]½Πæö×Ò焬=W-ÄG×r¢§l4ZIfδ™Õ46ÁÀ éiéÕmZïwÀO˜:ÌûÃIÆÔÝC¶* 2 diÛ0•CnܨmgÉh!§aö©ÏØ®^×j½¯‘óg?LÍçe%nØfE!<(],zø¼¼üÂd†_õ@9Á`éIýxU:áÍ<Ùè2¯º$˜a#J©\ëŒÚEV-»L¸åø/ó³O¥IõÏÙÆ‰¢­„™yÜ’Àñ*'ß0D1%1Wö@Õÿ:+\v —~åSMb©d,@l¾í¤ûÿéÙ~$HfûŽì]”·ŠTöƒEÞr¯ò ¦ª¨ f ÞqŠ­Ž^F7ÄD½«Ô¥ý¡È®¦¬K„žáܯ¼‹á4RL/#£ÛÓçSÆU°Tø¨Åt'Yph—¥”­_\ëõT¡­ÃcöÆ`@2ó&¸%³Ï€äø;€~ÀZCBîw»k%ªãÁbZSRIÍ •©sHkõÚÙi)Õa¶¸”+Ócl8”Ʊ¨Å‹ø:MEù WB uÈñ„MášñGj5i]Ôç[ØîpFÐI‰4‚Š#¬El‰ΘNÆEø˜½ÕáZ.ùO†€sÈ鑸 m|É€i ñ>ºÔªSk­m~db舼Ç=á8¹Ùš°P2Ðø#¾Ñ5a[Y±oèÿ©…Üe᪗uãrCg)­§Z8nTôÂnŽÊ Êžçܵ%!J›ÕØ! Q n÷-Öõ)»ü}™n@N‰rÀôt;à28 c± H XFO§ÀL%Ž]¹ŒT®âHÖnmÿðjô·êœLÌñ#= êVY®íˆ-M¨È2\ØSè\?^8(Õb·> Ѕ‡¿¡s†RN¿|ôèïìÉ›ÿ%yI‚<¥Ì¸W%èd·Æ^”EÕÍôêÄäSl4]›®¦Úf§âÏ<;0þ"Íy¶n©VïLžíNZÜ7áÞrTÁª‘~Þ(­ìÿ¬]F4©«Å§¢¯lkÐ[ú(¡WÂs¥2y"ÐzF–Œ¿ø ¼CüŸ5W3»X=¶»Æ,ƒ„•8GÓuŸ5OžXyùŽÑ,Öe„³*CíV<»èUãÃIRpV˜„ŽòYÎ_ª#‚æú<’:•<&Õò×Ïåd#æÃóËrø@®=jßuúh¾ôòáÜDCõN¤gøDPø©é6|7Îa>Ï„‹Ñ-›6ëÈ\(Ïüè÷¬ÊíAÝóõŒbë‰áY¹ØPx"L¬ûVÄ&ög^¦ƒœñ¥1²ø{GÉ+šTGú ¥,/ÏÐ3µSêõI„Áÿ:âäÐg°Þa0xÙÖ¨êÈâ|8Üâe(Ï-ê–ŽGlÕÄ:ú§h‰(l”û›hÞý»¯™¼9SìïÖÒJ°Þ’8¼ts!¼ogKiµ#~75úÏeHE9¼ÿ¥|-¡Ÿsܳ™ÃÙ‰vÅàYp„õ©MgDÕ\´6จ¿°ßL³%wá5‚ÕŒ¿ ïøüµˆ(k16xü“O† k‹ë#QtÏ€åÖÑ«eýReåš6’¨Êe]l½ŒoÆ‘Fœ6.È¥?ê$“»ð%ém~7¦º­Í»°.Ó³õA†xžb›nÈIœ2h»éÈFúÄ?‘°|¾ÉRcÕÜg]nÈm¨ÌÇ/”K ï»gÛ.àcœ¼Ã÷eçn—G–·LK<ŒXì%M¶Éyãˆ2‚ÏØŒTfÉòýGP\ÁT¡D«6â´ ÓîýIpA!eÍ< ŒjwëÓR=³ì³QË™Z€Ò3Õ%wŽòÀؾ¯D¸Ò‚äJ{â=‡åÜÑ´aKï9~Û¦1¸2«UÅôwêoæx¯²Y÷_ªŠžº+jË'º@Æ'd }ˆ¶Ê¸«{¾Hµý‹ÈV5ÒöõNmÁv ÄärGûc®°e†yÜ€b£‘ÞÏËŠ¶½ì·)ÌMâ‘£ ïüM[<¾ù«d¶€¾ÿ):]}t¹x@>žuCò¡ª¤¢mÑÊi O¦ÈïÿÛìá¶üî=ËŽæ¾YœrúY6׎ÜJ°â"G!¢."–[†ýDì°ùEÚ7 yS°t°ôúå e“#Ø\¢–½ÀÝNÁ»ö×ΠÇ眻Pº#! ú‹f÷Ùw•tÐˇ*Ì‚‚{¶Š©oÏ»~nÉk ;g^mÃÜ0÷6Æ «4ª [ÁZaÕµµIýÃ"E[´«m¹‘Àш²V¨ˆ=GhÓñ¹èº÷ÿñ¾Y›¨õü,QzˆœOΰGüÂ{> ÛŒN5ã7¿Ž›*\–{öþÂ9\Z—`ä¹ ^š'?é.›=ɲŽêeo…Šúä»›ø@ŠHÊÓ¬† ŒØšéM£ñø¨³T £<6å@ˆ{'xŒu¤=›‰\ûò7i3sI¡Œº€ågH® }ƉüpÙ9þ`YÓhV îòß4‘š`=êÏLk؃A§×Õë8Ü¿˜ÜâJY±\*ÖÀóÁLs'O )-,–»‚B˜òcÜj;2š˜‚°êÄÄ%sÔZÍÇ ˆñG˜ØŽÜœöœ–FsÖÅ m¢ï½'‘@‹Ö¬w_[ߨ ›E|V·ÖÁ±Ú0@/¶ãdZè [§¡RÂÕ›=m@°E²øÖ«e>/îùþ=Ï‹›´!¾Í&Ë€A¾˜v\2Ö¬|J Áeº¦ã.º³=£Òst¦1/¦tðÑ´êêÚóãÁ˜L†ñ °œX_„I‚tÅÞ T×Lmlœ¢0\Ó±bPù6¡.`ï—LrxÁ™Æµ¢Ujw.5rµ/“RƹL2c­Œ¼j ¿@¡t5Fjü=ÁÍbã¼èoâæXÎÄ0ð@’²(¦*òŽÒxbŠ€)Ê‹ ½é%PáƒJŠR ¶^©qˆOíŸ èö8l¡7²-þ¸–yZdSþU¸û)Oέ÷=|ѵ¤ýr–Æ ÝÆ·Ü"š+ªjYe=jƒY°@DÈÓ?Š/-¢éÍmÂÀ“ò2(EðDÑRà1ƼŠ(&â1YcÆ¥7朶C¡ÒP­7üÚÉÊ4rd9iåžclEqVo¨/J_à‹NÓ¼Î×i8}x"eÂ]ÍÇ乿2fd©jÜ¿à4gHk½°æ9{ü¥‰-¯0a™˜ wÖÏWXq“.ÚF3LÿæÆÚÍíŽñÂe“€Új"3}üï»K¹žÀƘº‰ñDû¿åîÿUtßæƒ%t:Ø{†ö5ì,<òS»Úî#ÆC¹ Ñ´ËGð–¬WÇËgH !lZä<¿ô%ðÛ‡‘®nr_£›dgÜàø PõàhÙd`}òÏÆÈÞ®-¯W~„#©f‰·}f+ôîÜ)¹€ßäu„ÒÁlOšu’³rW1“—÷ÐôUÀÔѼä;kög ôÆ£3ÎE£•t“vÝMOþ—Hé4ÓCZ0-j  šwx¬Ê¼Ž«Ì*€ÿÓ°î:Sü´ôý¬Jœ ……É’h©QËJr zÊü¶ÂÑwðí飨1(=§'>ñlipW ð\ÙÊüp°.(ùPVbþk¾±æÿœm¾ÐŽW¨®Bª Wißw¡§þŒ£0ÆÛŽ£oWõžk¼1 ÔÏIúB¡ÛœQi€<ôeigd÷ß3ìAtÚ™¼X¯iÑ&k1ôQ¢¸—¨Aô-üI%jÁÆî¸ÂŒß &z¸-• ~FZb Ѧ¬ù$Æ‹«éc„\“jÏ?àë\×ß0þ<´ú¢¦3ÚÖnæÑ­Ž×4i!M-Ás«žAÎfYD]@ÎÆSÀþÚçH&©7Ì0Z’ÆïëÚMm›˜Êo®³Ñƒ™×ëKnÍ‘@fHþ•6¡ÏÿD`ÊÈGñj1½îŒXF†c‡¬ðÖ#Óc(â¹³Ï:»öSÇwë¢É'b¡gÀÏóõ$3\T¿"ÃEn%n0FÐ &P0£1¹°ë>u`ö€7¹Ú&ÐŽíEU”–ª)Ltˆo¬&xÓ 1Že=)̯xRRûÑc8™ŽÖú8]yJöË­¡ÙДiq](`Ñ!úê(p=ôN}êþnxÁ„jÆ öé—ÒëÊ”ÇÃƾÚ«Æd=¢a0÷<ƒÛV¼9Ž@P`µîïTd« fô²’qÕø’ºÕ¼‡Ö¢Ó ±á†:òù*áþ¼¢EG3Yàq³¬Ýwå•LÑÇÂí*Ùf¸x1´?˜3Aî&-S'‹w´UKœ¡C4¸|ú)¦äF§´F$2i¦•L\0£ß—c:§NèÀûfÚ~+0ÔøÃoóô[eÌ ˆÈ‘‡ÉÊžà–ð¥Ÿ,&°öÖ|¥× º{! ~b¼¡ëh©6Çè]° æû aηÁ¬YÆŠ¹*+ï¸WfÁ¬DlŒ³Èö«mç÷”qû/Ù߃l rŒw$óÇæµ¦, „ЧmS=ë¬8©~î IøÂ@¾2Ùö7ªv‘ãÌ`b+ëÔKOŸTû.Ð#iÐáªìöÑ_l*l˜û Šy²;ÁÃ7¹sƒ#ÔI H9•>wåhë·¾µhIÎåÐc⌳dß×ê¼ÿ=ã« (¯Û®ª%îÞý ·Àæûðeø3ü®¡*5º~mT—av’µy°_2>`:¢Â°Ï'am00Ðêé,Ðó[B›ÂžÁºH-|õ·Dsɽ9•ã“ÑñÖ!RŽô—°ýÒ«µ‡ÀC\í4=õx åÑ;cÅÁÒþ<È+úcôÓ!®ŽTùtÒ¼6ÅS5±4hQ|ípÀÍžs™·ÇMŸúÂæÍmƒîƒß¨‰týötÆë…;ÂÑŽvöÔ i°ÎîïÉ…”‚ðOñ§êàFÙ9qK‚®ˆïæç rnÎýŽ6ÃÞ nŽja1ÍBñÉØ·ðÜ#|+“ëu¿UˆÑ¤ùvöJFMifµÈj­ÅˆnÈMùÄЫ>ü®">Ô*}q:ñ 8˜Ö#=Gv‰ä€"^…”E’à‡ÂA ªÞ»ñŒbKÊ»zÊr•HÇÙf Ž¿bO§ƒÂFÖCe„rõº|ßÌ«¾´¹:{ ~Œ,Á‹‹ LÝЦ­ø,$&Ò Pñ F-(»Ìy áCdŠ”uÆîÂ)u/ü¿ç1×—h+ïo”0‹¬*"GÓõ‚³ÙÄàRãš÷Þî¨Äà Úc•0ú–^ƒTÞ‚¬¾Ó•5éjꜢ®|G*æ)œsˆé)ÃjW ƒ”e²ý-ÆùB8»ž T‰dû”ùBØPáÌŠÔdx¼Aøµßw‚B¾þͽå­6óðõs%Ú³ˆ[!:Üôr‚ûú cTáÂRÁˤ8V ßìt8 ÝM\l@È7|-{ þö9V3`ÃIŒ’à…l!çVÙ;èÆHóE+ú—ÂQÒšX b`€íðk8‘,­Kä¤Ì®ttW˜*#®ðïzãcìÂ[»y°=vÌ«ú=ŸúÚÁ™^v¦##¢qëãŸl’,`ð ¢WRWE·ü¦õ9¤[€¹)¦°ºs“‘ âcŸ‡yÙóþIÎD0¡/Ÿ~Î=(œÙt‘BtkÁñx‹‚§D–Pxÿyµµ‚ã¤äYåIâìeß&¸])„§bãýÕåŸð~Þ1xJ•u?«W@hýùçR]c•6{©N—ÃÊx#?ûVõ¼%ˆ!Œ,›’þëÔξ’ ¨åo6ÔM…læOQTû\ˆ­¼<Ë—9QÃÿ,YÉ•G%ô(µ'Ô¦‚û¼Wå§MçïrS¡dF…ýoj dÊgZéÂäFËZáEK1Kºc76[ý d0Ú°Í,$Ez‰ìÇ2§4³u‰d‚$&PÍx×Ôs†5N¶{«‡)§Fþ­‘‘G­¿OzËXŸ§ 0¿%}€ÀˆšcÈÿCW¹pÂ÷5Å8PNX‰¶¥¾ûŽ9æe“HÏĬëøzå9$ÈO5q‡¤|O%ÞîCû$W£^âwØFd°ú…u¡|#Î'Ð[ÖÈ9Ø*B¾àѪ4’žðl“~1e¸Ñnd@kIñˆ‡‘• ÿ2O†ÌÃn–Ï"ë/@­Ðߨ`¯Š<£n‘·nˆõ)Ù6#µU>¸wŇà#è|÷N®…WàJl{Íj…N{Âq·ÆQoe TÀBÈfŽ"Àxp’jCm=»&HžÝv©< Óá¤/XºÉ…›¨;_Ÿ” 6<3¤…àùÄè?wÇ^´Öš'ŸòFy$b% ×5³‚+¯@¥ÿЖ¥ha¾t2ÈJ¼6u aBÚcÉòÍ[ ‡>ö^eŠ–,¦×Ƚd¬*œƒRZ7¾ƒÑ Ø ¯Œl¦Ht?,CO*»9ròýi$Šçgœs1l!Sb~°kV…éV¿Ø[|NŸí_Þ*2Çè[ ¹cˆè•îâgi8Ðòl'BE+I)IÝk`•ÿÏ¥îUà2¾až®[âñV£”䇗¥PicAÓNH‚‡¨ t\Á±ÄóŽ-;ŠÙÛf SK3\:õhûóæ+8ñrŸ×i‰?ÍÄÛ2¼‹srS5×{)ë¿8­›ü囹^š@¬`¿éN8ÜèM±rýµ£qÝBú• )iHpÕù¬š´™z?þrXõG…¤úÃh,4+êpí½³Ÿ‚’'YPëSß^-{:ÄE’G@nu›Å›xP˜úÞ.$„>Påºq^6m'†óID<"‹j‡6Ù}Î_BºGx×g\Œš®ÔI×FËÀÊrb#™‹„.ý©ÖÜ•Í u/ºw{cóvCÒ®7V›AƒÌrÎg<‰=r¼f¥ȉ~‹/’œ9˜¼ø¼ƒu¡boIÆ7såÖ9a§‰³¸¯¼Ò…‚Ó€Ò }¨¿1"Y<ãæ5Î÷!ME\øFäùê‹’é× VòÇ_èD“*Fm¤wC{üŠS@m¯^‰E ¡Œyeó†ÿMìÈ0zuéÞ®_“,Þß¾IàÞY6“žýH}*{ÞU ?>â)ø[åÚ1ÄaðgGG9ÂxÜ($G F ?Œ´Šñõ¾ÔÞw«!ßt±Äï;AA3Â݉þEÄfa#2@ßÔmÆk{`·5*^>æ)™èþ´³“Üv®v¢}ëósÍ€gQûÿYRTHÓ07ÊÒÃXp«Ê)~øM_¨l„ø.ø¶šBÚÌZq¶Oñ\Ûš=j6ìÏÌŒ‘l†ÒfËrKƒ§ì¹r´ÏC ”:ðÓ>A^çi â§xx‚(~ÖÆ»ˆ’hä˜[j‰vY“ö?o£F‚iñÜì@e±;ü%rŒ^Ÿ=£ãALj**Õ ƒipÿÔR•W›S(zrÍ¥'Vÿv ²!{¡PªŽ¾%Iq»*†ÒŒœŠèÃôvÄ¢Wçoeá0y¤÷?Í’ùp qïâTRé'qÞÿÃ"$EGÑ1ö§‹Òoç¡ÒÇ]¦ÃŽ ºåIù3ÄPxØ?^ÑWfî ¹.G• , Ýn)ˆ"HÍðUã=xŸh'Ie'¤7ñú Ãò“§§¨«Õ,s®´µÃ>ì쎖‘n$ÁafÔtÐ&Kòªu¡ÄØ‘nq‘–¬ä½ãFnv¥@g…Õë{ãø.YÒ«¸7º«æ_hðlÛ'ˆÚá`רëßÚJþyxÒê-ìÔÁÁx©=THîeËÒÍÆáô•ƒëu¬UºSuå’›%1"{ÿ§wž&;ºøb>Ü›!—”#ßÄICï‡Fh5÷`·À w„p¡Û±?:±´b$oôÌTˆ²L!ÇMÅvÆ©=C¹·ìEO¨…­]AElbÂÕ©Þ® ﹚½å•rÕjí…M+§GñHܧ< 6wàöWïX_S÷ ½|krI…É’—sÇWJýHºE㌚Ò5cisÇ@IF2B‰àUÔ[ñfÏL_{ÐÛŠ²³-HÁ: a‹°d¼óÁc÷Q.D”Ù Œ÷3A QYüEíô +a,ù5 †9FßC·bhÎ]ÍLœ;?êAÖz[(?û,î/\Ñ2OéT´Úcod¼IèÎáüi-ß¼?þ±,òøeRÔà†Û‚É—F~Mf,õi­Ü… 8±@ºŽ?oP.ÑÓOñÔ ñç{J¾³p ?Ú­Ëu/‡&ÎW@Q[ä¯^ð!è{•šRuwB ‘¶åd\Ñg#ñK:’—”œ‘§0i ´Jø'Ë–ht lý=&\¿¶Ò@è&h'´[÷â5% çUQoUà-´³©N¿¢¦: Ë6fˆ í“´Ø?Û£(¦Å¸¾~D¼›U³t6bÈ9„LÈÄÆçÍÈ[‡£¬)ù=4寄~´Px0pç@+èLÀ«&KY&¨)*)-û!`JWjcžªTõq™/Žìê°Öt‰Ÿâ™×„>"c¤æèÙ_¬ÁU/f´óãš J uj˜mëK8ªÉùñ96xÇÊT—HYÙ]øYV„ˆÝè_ýþôÁN{' ~:®ŒhëáX ±qž‰ãÚ³MÒ7!y*Ë»®æ‹Èg"´ v–¶-ã­Y–UyøP˦֞áPR†&Ôáâk}¡"ËñÇ äÉŽ Ut0ÆêT ×7oÞ%zG”Âm›6/ ÂÜ“P'Œ(æÎ1YÀ†G4·åÕÙaŸü4à6ɉ†µùó3%NQ/Z‡UC{áÝpÖVÉ«vW½™ãO!À „Ó¿˜ßèE·:Kd¬1Viçí^ú莱I¬9ÞRG(\‘€¬âeé½ÃE¹çî/ø›¹ƒÄ9`H p™KåýDx puÏÉ‹õætÄÈ´Ñ2ûˆŒŽ FɰU΃ӕ¯Š¥áîš`hobÓóõg£k¸oK"p»áà»M=GÆOKG=pÏ/4»iNâ¾°Ó}n Ïi‚ê:Í!žRK‘»‘cKö±*]ý<¤Hay;ó¾ûÓ&d-ãB®FñôTŸýÓ#Çò+ö¤–g‘õ/ù›‘ ª»Š9ÇßÀw¬€9õv‰n{?¾£]†qµk¤NÐÓ ò/˜YgrWu,¶(iZðhË¿ÍïcàL¥9Dî?½”'ù,pÊìñÈ]°@`2‰Çç‘rý¨i~ËY¼ÆÅ±êÜΤ¡ÁÀ4Ÿ Í9Þ—ô1XùÜ]9¸ÐsêZjD´¤/%|mKçÈöØF`¢ sŠ*f‘{sÈžXJh5§Í»ò¶¾M­)uw$þÕõRþ›e]bÙ7a£¡¿]% òå{þè©ÕI¢X|ì?9A7šÈõØYõå•x©ÿ9j… ¤ë²0†ûXÛ¬¥¼¼_ˆRÌ:û;‹\ÁRµ%'“Ïnä¾)´­ Vñ¬‘<Ýp¯½Ñ'o8\žHèF¿~«ØÎWÉøÒMy3G€WK9ÈÐ]ÏgQì’vÉ úø€„ ˆþºC³ ga)˜ñHeíè"‹/kLÅ":’KW80‘$L”—ÐV¤ú÷yA¯qøå>ÛúПzhf÷écØÝ«Y#–óº‰úÜ¡oܾØc:Ó˜3×ßÖæH’…órM¡)E¢¼SÙo³Ìh¯…|‘ntøA×Z1X­Hƒ/‰‰ævIƒGªr“kìœGÚµézáæ×VøžÚ‹£ —Yh%yWÄéK ò±­W²OÍpŠý^q…‡1½Š;L‡¶0†¿ÚÔ^¾uRŒz@Ø8éæ‚Y ÂŽ[Rå3 yÃo`Ö-©!xRâ& 뮺bD7Ð)…î<|¿y̺«L‘“ }É }bÇõä7¥wJAí0bÉðJ[ÞìÃQì÷0‡ö•dø¿Ñ©uœð­|àÚ*© HÄ?±Þñî-ÆÞ¬÷h Ìã¥ô—Λ$.W m>²ËóhudEƒID¿PþQ°®ú3\F‡Íqµ<äUN#¨ù5÷xzu&*TGîh»õÜNž°[KýÒA·–Ò¥|Î ‡Ñ岯u}¯ßÎ2 Y×Fõ3稳?_²Õ„G˜0¼áž?šKvÈÉ u¬ ^EË7…@Œ#kX!…fÖŠjˆºÍŒ§Õ²¢ ±Zy¸ Y4<‡‡.#ð'ÐRÉboíWÄž{ Öµè~q¥Ð¯¿Åã«ÐÒüÑNUp¥Öíë‘F×Ò„Ÿ DðI_8§\>£–xK G˜þ[6^6iMR½@nÿÓˆ¢vvnÜfµåƒM•™† ÌÞØDÜ ü ªZödç÷=£áàJ‹Ø¸9éwÿêj°ðþ*ç9 qóÐNúàkF\ÅàטoãyOK”ÇT"aØyÈÀ×öx¹àDšb£Ð…¼Ew55S´Í ^iŽ¡iœÑ•»®úØçbð<Ö­´è˜’âûz°óh‰èÁÒ+Ä'’}©v¦ú6:çU·õ€=”ì«ìjËÌqff&6êõö»Kà$-î×»ÿ‡¬}D÷ÍX•é18½³Û:¦\À¯[¯È¡Cè‚r¶`ä QÖ˜J+©ð2Ä詬4^‘¯³-t ¹%wbù¤+d·²%f’šÃ®»û±¯³/¾¥á’!1DÌ”KÛcW¡”íõó"9t?0-ÄbPEPîîH4üîHPÒîñ4w|\åé tùc€“ÝžF”gEW´ÒÈØRp6ðJ{ô§Nî€2a €+q.Æ6 ж3œµR˜¢å.LøÚŽ8v—[—õþ×¼ð*9Ñn@PZ¿$ºþÈÃüåkêðÉDŒ\y]Î^ËpæÁ_| 'ñˆƒÆ×ד0Os!ÙåU”Šhy´î=öÑárÐa Ióùoн­Ü«×šm[~W ‘!up)¾'°¦‹Ë!‡ö‰A;¿kpu#Œñ}Lœ¢C~]µˆMÍ¿TÑX ÈÐÓ‚Øí‘ïJuž"§OxýÿEyë¸ ”^ ¦—€F焃&¬?TMz¢ÿeoºŽØá˜G*‹ºÄÞ‚’i¦¬ÔïVäÝÄ–•"^<‰;Mć–E¡pæM-^3>‰´yàdŽÞEÊtµ4ë¶Ùƒ Þ.S‘û}Pª møm8’Z~ äԞɉ„YbRÿ >#¥wÛ™ËõAe·Ú³|Ǥ ªUIɰ„6⢛­a CÙÎq–ò®BcWfÎs$íǾ¹Ÿ@•¾M{1¿4²ßŃ"á6œ‚ès|eàWÃ&ã| DA¹Ä)ÏŒƒä›èíeÌf].å÷º(úÀqÉ©Q¹QOÅ?ᇜª ß=@=E6^õý`¬uÄM[j„rs5¿~~F7U(Ò1+à Zvv õØèä€4íí±à¥8ïÏŠ›Ï÷À.6jtrpqø€ä« ôà…0( bqëÚ}Ô ?\Åw;ï‘ÊÔxׇþ`0¢ºWïy©Qœs]F9H0ç'åþÁµü¾U™Îö\Œhƒ:›ñh×Òo¦±UŠ¡b’ËÌætuM–u%ü'sÑ­àÌBü!6鯺OÐtÌ¥ÅF¾gï ;œØÀO¼Æ•% gäö‰1–ó€mý3aÀÚiÉ{tƒoÂ5Fne‚m´r_O„ßû¬ÏÂ-©•Íçv°H(±êG·}¦!ÙKoñ§]‚#ÃûõͧÒćޣþŽín¯k sõ°-®®°ž.b©Ñ87í¢ùK}ûÙ&02ÎÊ<ÅÂFÿ¤ýdûMnJ$Ü ×}Ígו û9¿=Ç ŸÕô/‚môªçùåÚ:Ù^>°èûÇ$½ T+ [ð¡oî<½ùs•±óðÃÎhcÅcª¿¡ Èì\á¦_†dPWKÞ,ÿLÅ2¦•®éJ¹Ð¹çn!6Ø ÎûæO¹`óª¸øìîÒ æÖ•`¾ô°ÌÕIq Ÿ^õªéW+^ñlX„§ûÖ¦ïÃïˆÑˆÒÕÚ±Xžñqó#À ÅÀÆÑðˆòdFtúÖ{ý„iñŲÓÝ&„5ñ¼*"¶ƒô¸£GON-†ëq›(±è—÷ìÈ3 Ôƒë¤YÈ©±d¨®(™¡-ÿ?å ,z4;ñ+ˆJBhy5ú¿[æúûóW6±ðŒ‰·ÊÑ™ò^¤>ŠÔq €l ›G;èƒj æP›om€ßͼŠÖÇð7_ÿÒBÖDÇ3ì0<Ž<ÕÇÄ㌅ìëŽØ“Ç_ .θ¬Œ¹ïAÛÆAª? Û&áV>lž×Ái‚P4ôÂõ.täê³È¯€Æ¨Íl”ÝK3¶„“$"¿G†Þ¤Q. ÄÔ/^EW±CÚxf‘½l »Þ§ô&ú”C²§iJk«(ýYw¨ tæø«\¦‚©³®hZ²;ëÆèRRØŠW©k~f\ lB$B‹½w˜ÂQƒ-7g«Rbl;äó <‡Bò/ ,kh$ܱ:§²N׈Tñ"L¥OïßÍ´›ìǪHæáçpW›‹—A£2ízU05ÜŸB}œ€½¾?4£~Ì\ =9¡'4€¡ázM S§`C‰ÁªùÖ™²çÝékݸ«OƒieÍRÞÁÎÎõ9øN²Pž7vj! Já[8¡[5òÈšÊØýä¼'9Ë®o pOTèæ“:®‰¦ùÆ©à‹pVJV">ÚV8¼6 Á#f¾ŽW’–£”¨')òE •LÚoeÞb='íMQÝ–sé?­“30Tâ&äPùT:׆|qÞÁY¶¿Þ—‰œdHXN^‚j˜êVø‰ª°ÒnxÔŠ1ŠŠh5{¡|çr~Åwr@ÎÒÇbt¡æî¦^Kù.ý&Dó&¢­áã¸øBwðÓsÁÕÄÌÇƒÖ Ëø/±5œÆê_šø|¾<ÓÁ0}OñÅò¸/Dr ê”Â~7KY1ú»0'Þ³·?ÍÁdÕÊbý?bP11¤EÃþ²;Ho2}’ˆŽ› ªk 7AÆšo$°/J”œh<¹Ç%¾f¯étÚsKú†Œãé‡0HÖžD)¹N2hãðËAr™ ¥ðš2v'å+ú›K¬¡[>¨­lœ²g•Û®÷t g€uÝÚ6¯•‰}žø *Ê{n~VdË…ƒ¤>F:O–_­üÌÉvT„œÚb+=3î³Û4"VuŽlÈ4å™*Š8jˆÀ§ÿÚ ¼ ÏaNú"Íc —áÙÆø¶‰ÑÃaf¾ì^!âݶ‰`µõy,`µþŠ´ôÅ´øÅ- Yh!L ˆÞ)×®¯»/V}æõÝÞ¹‚=õ¢•_~ŒXžb‡ïüfÝà “—]Æœ«ÜÁ5{"išWº©“EæÿŒÿX@T ÚÇeÏ‚À–(›K]Ž–ýuÉþZXüùϱcSÊÀ‡û±ø3#õTѨÌ8KÈBÛ!lXÀ·lB¯J8z»czi-ÜA$£Mòc豩)M“¡ôtïì›ù0þY’ƒŒZþÒ÷A´FÆGêŒð(ê(W ŸÞ’.6‘kÙ«‹o|àQ“LüûÊÉaÒXÀ •Ô¥"ú¯]z¬„÷s3&Á ÒÕ\âíÝ»%Ü=Áø^yY›¼pÇ0¿¸Ìܶn¯9T€¾Sýn€öÐó•Á—›g•q«s—ï=zMÊ!e=®’/ºZ•H•ü.Fq˜MP·—HDIÛ´M—®¢ÄÞ»’YôÒu/øßf|;œC—¥Ÿ|þ¹Û¤ÝT*68 ba ÝyøòDgª†Û ™~MFt‡nê«T*­—fö•òú=")'÷W‡à=Mí­· Ð0Àb¦xÞ“{)ÝÍùÕDœ·-àôž]¹&VY_ÌKyEG×{ᛯêËô˜5ì6”ã†k˨­V&HÔæ2Þ˲åm^jZ=@¾ï©»_UÌšúªeS¥ƒ¹03PYˆ ›3¶.’EZem{õŽA@®RæþŽ ¡¯{þºx‚‹ÉM&×-_ŸE$%ÅûL;W½ªTòñA}ÏuæÂ≮[»žP=2“óëÅ R8kCJz{ÚÓ7n4=Z.>µ²ñQ¥¢‡ÞñÇG!ü°£BÊL5^ òb}Â~¼Æîo ìÕ¯y*^—Þ*iŠÜ)¥oe] úd÷àqøcûý—ÿÆ©«ü¡Üð¡LþHt&½ s£™ »N(ƒïïâ0üû¥*Zè“3¯š ,.’ÝÜÀâÓ8"ÎÿÙÉ¡_(…Å7,; ´9Ó’ØQs—Ó3µx‡Þ‰Bµ‘v§B3•—Yi<¶€f‡»,s[Ï¡Œ> «d½Kjæ:Ø£/å3`ÁJ /d¸/~Ô§"9º6QTuºå‘¶zrש{+ª´÷mœÂ¿®¥'{²aô ¬SŽ_éâG#éQAÀ½ŽŽ¯½BÖQ0¿ÜCb¼j ÷_þí¬üasºš½ÑÈПªƒ‡XåÕ;eº!¯uÏcþ«‰À5nWò¦ ö¿Kí§A6ýPÕB€%?õ/÷¼\>çÏûÏÂúH¾œZU¯Z>ˆÿ†é¡ÇüRJMFvõÊ V9Çi¨äçQG¤6ß«4?ÚÊeµÙ×àqc°ÿB’^Ž&™a×q—)ka‹)žTZn…°Ö‰“kAªV:ˆ‡0U*Ÿ¹½tžE?)—§ügm8hƒ õZiå¹K»Y2[`·m­ýKoJÞžÆËÙr*$²ÊIvM°ÌÀ7ˆ.ÊøZÐ!ø${rF#/öä©O/³%žj °Úv¹Mñ:¿Ü»yàÞsÄ€ý}Çšâí|j8ô“5F½¢³nçy˜„F:I„µ‚oÖãgóìï?Ã"[ºíNÏCŠEÐqî•[jðÆóÎï±yXf´Ó]{e:l úˆ²á ‹R¼µã :Pg¢oW²´Ð1ÍÃkðnGu§Y‡/èÒŸ‰K2 xnó‰èg †Ã0ç…ËçË¢Ö©„‹GOêJ¨Øùòð§ÙTó*¸I7l=Üù}jÒæ1öËÿi€©`È©…‹|Ú¿­Öß äü9%:YÎþŒzƒq¤§€âm#DrǪ|éi¨6÷(jê¬OCèƒURœ7bÉÂ-vû…ª‡JGyâ,qD1ì21LÝôŠ<¯¹rô¾;`—֌̒¯øgÚ ú㺾æö¢ÐIå_'!ÎÉœ¼”Vô@4ÞKï±VÉ4$·£Ì·š¬5ž±ÃMögwò‹ÆÐ±aòg­ÁrC˜¹æã*¥Ñ1ÞŽS„ì[aPmãnœýü—+‘ÙŽûëgÕÆ0ÚIWÔfªó2¤@<«|‹Ù©{À‡ÓîzÀZ^à•±ð–\"ø,‚¬ÙÂ4P)-/SÄ{˜…VÄ?IÅ-00¾M4‹­¶ã;Úðu“VR©8 óQõsGTgÓ ×› º`PŠËò¹Â^uš›ûƒƒ/òS¿þOyWhuB¦µ|yzä. •#Öö‘Ɉ‘‰ MñT ,5nöbôMLl‡3‰nÝÖæŸC=ÂÊeÛ2œƒÊ “Í¡\rš >°æÊÁÛT16ý4a‹jðøÚ+`bpÍÅM¤ïŽoˆ ŒX¡ï•Þ;w´=dé|æD‰¥ ´¼øÆåö“ô›bðõß;ΗFrZüÙ–ô(Ï:ÿaÏ»·bPˆŠ„¢Â}ël”\tQóôŠlª–«Å· &7î"wðaÐÚ…1×#FÖýG‘!çv¨¸|Söõuu[y²eaqÇ쿜“é-_&¿æEFá+ÎJÆüïKà徬ùg–¤Ú7¡š&Ï\'wET´=‰à°븃ô5¿¡ÇÕ_ùqPmèj®}{Ármg.Òø=t-Xä:ÎŽÛF/ÀwS›G Õ{7—"ÝòW‡¤»€)5f‡ä+È:J¨Ømi$âVá7QøÒ1|±ÌéxqæÊ‰/ í³Wo„¤%%9±= ‡öjE d+¿sðHîX]‡·7W»ÅhäÐ"•ÿâãX>(ìng,—È÷Ý-óÙ¢É ´@/‚<¢<\ýW;×ø%…WKüâÞ­ ·˜2hšDâ3(]&‰ÓˆC6`2â`Õñ´ rM.bTiZŽÝ@Å­¤ë«¢­k\¨À!¢cG %ØYüƵRÉȆéoUv_yz^Œ¨vðÄ’Fu©¡`Až;Z> © ÅjüçW¢ˆË¾º­B¼­ä= :~o©ÐCUõ ‚ð¬Ûa„ÏýË«d8bܹÐîÏ`® »ÿÏ¿ÅDŸÖßöÈæòó?ÕQ .vÃʘ!æ°ªÛ²øÍž©›Tر’òxß yÛh9kK>}ÃGSj—Ë~K@LŽñ"§idñ1¼…6¹+D?Vf$°ª“h$ÖÔ-Ûf´üd¼Ÿ³gû±Bºªò§›$®A{-Ú¥ÿ®$àAž íþ«ñãŠüõÈ?2TfW]—,]Ù KõAd®'G Wœ¬Ÿ¤(š½ß`šÍŽÝ‘ÄòL²Åñ·öËÑX1SôóŽØý¬óâÌ.‹9>P¤µ&ôò‡NS1Ï{ø@ð:„xU’"¯CÃA}ú®@gÂÚ°”‡^:â- ©XgÞÉ 0Gç€ÎQˆH·M(í=ड़.sZ›—Äl;öÌóò£ža+ß‘3Ê>MLôóü±¶3a`RØgœ–Ûd"ò=ó*ȈHè~bW ´ŽÒ³N /Å€Q²¹ÙjJÉ¿.¼!0«3ÌIš[Oð©†Nâ‚ÎÜŠô=ñ¾ÀÉt“ÔÝO½{†€·QlrL.Ù«5™P›Fm¶øûiv ˆ *¯!XÅCí™NaeŒ)¨8tÚ~ ¦Ö9N» 1´§Cœs•o_ÿ±ï)-²"T8ˆF‰¤~Løq²ÁV‚¿òªÇ©É\zïnb MÏtìƒiМ¥‚D>ô°ðB+¹[`–ävÉ  ,ì*Z²apún[:·‰“C…[ùÁIÏ‘ &l«8žè4ÓÔô°d"xÚ¥ÔNëÔ£Þ"’™9Ë>]þSv'É[¦.›¶uË<)ÿØôÅŠ3qˆmó•liº†ŸÖ¨„Ù|qŒRƒÈ’“ìò µ“‡{ôÝÆÝô&Õ„&™¶Âj[¶)çs¬Ïœ¬j÷|r$€bÆ·<äŒ=ìM…‹I…à®íØÛ  °Ð½êJšçŸýßÀ&Òo.ó€€Z}*¶Àc. z™ŠØÚÉž)í’i׈›ôÙ¸}˜îÌ™­O)*Ñe…Ïž½”I–_à%9ô+n‹UGÛ Z5åP»ÚÌí 7…ÄeÉÛû[æÔsÑËYOõ"ós9·ë šýgSl¬y¼HÕšïò{Å›¥c«€ð[;’`ÈÄZˆ–?‘Á#¶r-$qk/XÂð¸°æ‘³Íåt椭%ú ‹ ÐÉÄ2SØe£ä²Â+ónNïü:ÿF­¿!eÁ! ºú ÝM/j…ÑÊR''™Ê'‹˜ê@¹ßk]úš“m…ÚÓŽ]jh]¤!NDP* Þž|K9üü}a•Ç @¯L÷ [:¼LÜ×Y}œ#ߤojÉ—P:©rõ¢ŽZ#Eþ²‹Rênþ–oâB°†hVé_[}ºi&±îî³{Už(•y©êΗè~=$°{²V ^žÞè©ê¦©?òBÌ˺þ)§öÈÛXƒ®ä /1Æ)=³äîbj‚å2h3Ž@˜u#­2±ÃØfMD·ªØ2»4ôð æ.Ù±»kâöOŠáµNf“ŽSˆ3ù„Žè¯æ9)n9þÒ &Kã¶KK¶ªH‘ÆiÝãÓ\×; >²8˜¢NGŒPAPRÑDô­È¢%˪ø'ÿ&¾ q“¥z7ž£³Äíy#âXƒ.cýPãì™ÇÄ sÐGÀ`$iÿᶤ×Iƒ]>|•ÞZ+ÄnR!Üîj›®=ÿ_Zâè!kdM6.”fèzk° Ó¥—}Eüp°‚ÖæçXJ‡H>~¿ß\¦HN¬¾”À/;5ó©óÛæb]/q%™?ÑE£Z}tÈ–/Ú¾Øþ®Î¯ÿã^”écÿ¾ ®.Ô±—?SÜrCñ&º‰˜ëLªx•¶eNÄKÐÖULhÔô ¨ˆ¡‹µ[È\=ÖÙag¥6X»Çdõ)0&¶,-öS<ëaB4ëÀ€à­Vã,cJdºwD‰ó&{ñ¬ƒü5Ã<‘?u…ä3-¹­Ço_h „Ì©gk ›®ûg©A_ëÜ a BÁ¼û Ì“j6';e35mR¶vv#Å#9rÒu¸Äv3ëk³jÚj‹Ø’o\ï²I® ßîLRÐøD¡Ý•˜²ù$Á‚ ·*®ûŠ ä_óîvØîª`0ãã"ûëÊy"úx ÉL5üíîYë·\›¨E‘ë‘7vÓ‘f#³á-/½wQNu¡9è~Ãa}mö -Šþ¯I/› ;r·€‚°ë‰q&¤7$M9YÚ%àß9€Ëߢ’Ð%UÉß…sÎm©(üø»~õnb•’³õœÞ;K]UâIkzéd'¥àÔd…:V¡w/+;dµ¢ù“kt< ¿@"ÿëhÙŸèúaÂ&­HÙž£‚=Îý<§lôI2ÃxyïDd€ä.Ä3€º8ªg'išrï¢(4Ø‹ÚèŠÚ:]l€†êE7~¸ŽßôK‹WcðtÀÇÓbžìo†Îu£‰K8FAðK •]Öà\–€8 {ý|In–R°ñ?Ê9ßâz ¼¢-¬c‚®M"7l8úÊ*²,4ÊÓ±æR¡ŽÍc¸´RNòéËß̳äC|á]Žfh¥ìÓq(†Ÿä¯ ‰|'°.wLø¹Õ%‰vÞ‚»¬[bпت·^ŸJ ¤¥°‚ƒƒ#5nØ¡ÒÞOϦW‚A¿&ô+û$Â`ÿ“;¿4VÒí Xécy°0¤Ç•zrîEF #Ûl`¸ ‹™±˜Ö€0Çã2ï ½×£ˆ¿·Oã\éξƒ ‰TZ‹‡oa=Ñ'i03îÃ,…¾t·2åæ²G~ç6œ¦åMws°ö´³ƒ¼3uk‘y´µñØã³¨å˜Yë|ÙqQôØ´AÌc±úàš€¡°Ô†”jc Šén1x˜òmÜvŸ‚rÔ·÷VLAT—v5i1Í‚ÛRô=&jR2º¤ÃîÖ uÝÄ™ .ènùFqŸ¶îA »óŠZ´ç«ÏSÖÅgUàãê·cWÜŽø™½â0éúR˜R”¿º²j‡~Gã 0b/û´béòÁˆÝ³A½ ¶ÓYà¨l`É^3qŸ„m„¶JÈΤW@œæ ë¿@(£çw¨aÄê?è…ÀT{.Sñ­ò“:WxNÙT%õÜwXg01@û7P0¨9pÝ"]Z?~¢Fé‰òšºt©£ïÜý‰þ}“m§¶` Wt2Á©q$’MÉ"-åñÑ‘ô#€, åÕSJ9 7Á)l’€…VÅwú#°¿Úß´÷.Aa@ï(è&nýÝä•ùÐGßž°KŠÈ8~0[}<|mcò¹ïJqÞBeÕ¢*Ö"´qSMµê8¿i>i£Äɇñ¾VëjðåʘšµþÚ ë‰š” ÃÀ2:¤4aÓZÄk–r‡.õ° Id‡ÑžVüG>ëíÑýÒJP¼ÅOëà@3”v™›¦Ð¿åp§Ÿ¹Ó†iVÈß¾hMÈŽ’œ> RæßXÐc¡"šê”Î6 <Ž<"²P˜Ý£{ç(›žÁ©\¶š‡¸TIºEJ(Za}XHsÕ3{²·fp­Y@a0Ѝ%Ó×íÃ8ä)÷M°ZœÂšÒ ›g·Û»ÖýcÃã®&Ïlc}\ïþî选‚ɳw_ršF¢»íáEàϵ«LBR‚X¢ ݵöò;Žw ©JcªÀTP<öùÁ@SøÌÂÁ®­p›Pçr4'XAb€Ú]Œúl®fÇ‚ËÏ<¤Dª0—ió¾d͸+¡¼t@òÖãÙ笞HáQblžq ŽõáÑôèå°`Ö"•û\$…çY&¦ñÐ<“ÝNš—ØŠ[ô<0›Õ1oæ!¹E~\c—µI£»›0ù$–D²8'ª8¹aUVJ§õ5ñý^)–° ¾…{79kó0© •Ó£@÷nŽŒ+·lÎÄbM@\ÒrzZ¨´UžßŠ>à~8–˜‰å`ƒ¢¤TÈúE ùdÃί_ŒC~m™¤8¹‚÷T†nâ?pP]ÒJNåYBì\i–v :‡™ê,(sê22³!}í„Å>L‹^ˆMm¥ÉÊyZSõwNq, =2 qï¬R…ü`[=kë´ˆ7î ä·€“€,¥¬™T& ßžz?¢!%æ¼0oÅÓ6É8Úì =¼o›ûk›8´û2Yƈ ×ñ>~°ò@ð×6ç~²ÍÌtÉÔÉIÇåŸ Pc Uïufùä­ÏÐM¶€R4Ðïß3¨Ô¹1't=?'ìPÖïkj½ÒÙœS}Î9FÄ_ƒI8¦/[9ñ|ëH! ’[y°%*ÔEà^Úúéukï²XÝ—™œ¦Â-ViC­¸ç5•ªèÂå³išÖ¼ƒ£³¨Ht‹y Åeº’ß ê\™Öïû~5 MZ‡/@,7þˆM&^ÒÙÎXz!R^Ù– ûÿÏ\)PK;PÔ¬¶Õ”g}d~rRp”½m†Ë.ÂôæK5–›D4,®ŽÆöœ^'çx%î¶1ZŽõªO¶‰ÏçÖš~+£ÿ¤¿û2ˆE¢m lèía·Z ¹‰s€±²§ò„'PÓ¢¾)ÌôU¤Ö³%5ìèÙl¯m”:t$X¹tH2š@_3è%HÑû«+›⬻Àañ3Ÿ4Ù ÈÛ¡™éM“ Á,7_úa°1oë‘mê9›@t6^SŒŽ‘õû˜"Å@BÙ£eKO F­t-Ÿäh–‹¢ŽÃ÷:šJw†dõW4AÛiÙôÆ!îl©²‹ç³`Ÿ?!Þ4_ôµGN«3m®g×0åÌúº»6taõ  ,ò%e@#ÔDæ’‘ؽÔÛLL÷ë Å¸V®BsÁ³¯½BÓÄÈ7h­- $GðB±æ?áâ+÷Œ{>·W" ŒÞ‚.¶à×ß›]ÂÃAèø— ù¼å,í=xxσ½oƒ#ãªàBRJ@׋ú¨tAMòrtž DÅ瓃—Ícr:,Uÿ{Ïóþrã_ÐŽAÎS'qÂ|h}r2¢Îb„ID·ËΜ±§ÕZÊd”]¥ÄB@= 0ä\ÙÞÄÖ ·­õVímpn3÷wQú#‰ØVðçÊCT¸`WHɸ6xž­\ÃÆ%õ«¨`mŽZF¡Nr¥‚n6Ïã53v87©AWµKN_9÷—|^MîßOvÂ%°û^›“' öH î‚>jò'D…DB½$ËÑÙäµ^ç rqZÌ_€›ÀãUø%=åÕ‰WùA1üÕôJä%75¢#Û|ƒ3P_—\¶Þ‰¾ðQÑåXoŠL/*S°VÝ ¼^£Úrí &qYé7ÃÎöF⬽}7`ó*  ©ªâh«þÀ6vco9 #(:pR=Ì»pÀËë•<4Î “ø„SꦚB0ÅŠ öcê|™%BBh¤Çôÿ¹ßôè î–Ñ*€ñż";\NÐGÃLþÌõ1Ùö EŒê²*?±:õ‘í«h¿mX?û¦ 2«ËžÉâÊ„+eãÎv…{«{d¡ù¯KlG-ÛB:tuGêÔ|4°¾;β;ý+„mõÞ2<™Kø\‚·à‘Þ0)`ÔçÕI[Ž×534 Æi Zs³ÇDRÃÓ34|9ì|µöwòz(ê~Ä$“»½EfÛ€øêcE ðä}®÷j â°fõ¼ •x±¦mÑMèœÌÃSÖKAòZ†1«ûôúASZÍíîéÒݤºeÜÛå2µñ\Æžpœññ,j”£^¥:G6‰¶ëÄr©_Û"Od:ÄF²¾µ%,òob»‡‰›ûŽ",—ÃÑ{È4Æ—_uÁáw¼ÖD!¼ÕF¹d"¥NÆûñ%yæØò^h)HDÓ'⚺„)ã´°ò L¼D…ÖâäâÛMl¼¾·8cÍ>%"Êtå–‰2‰`ê½xÕ°ñ5ù~Ïy^UñM¶gC¢·×¹uÑy÷Fúùó¥çÚãØÕ‚¹=Ü|è0‚Þã‘%Õ`Âpß¾ÄR—×½’ÖYôÓ—F×BV)¸ŠÀcáM~G-á¾ ”êS»‹6´B± ŸÄL½ƒ£•Uk½/ ëÆrÅM0öxHŸoâ$ÎS¼äkêêQÅ« `p`…º]®èa•šƒfõ¿Õg†r`˪·‚ ¾/Òö6xŽB#ósgÎ{´oÏxÌ&¥šV)v…˜¦/ES€Hµ‰Ý 7XÓJ&¢¯-.•õØGs°ÇG}³«>¸ñ‚C„ÎXm|z:—·Pa{’XG’ø|h8l&ÿÁ®îœ_Éhêµ»aYxžƒÀXb¿£»ŒëlwÅb¸#Ù˜8µú8Ï¡¤Rʸüÿ"d$…²¦0¼ª·ÝY…W‚ hE›¶ó·TB(•£ôþðd‚Œ_½|ˆûïºÛ6D´m0JÓ/i4¿<þîoó:< ßf"ÓV˹ïyè<ßÃ…Tâœ%ãSåtùQ ¥+”34vå¨^̇ãFa?íù—Ïã ÉP‹¸©HfA‹Ä•Ö„ÏûØ“h‚WðcôÏ Žý¢K‚×H˜‘sUÅÀA°yWøËõôü¯s9ÁpøÄ­2§Ž†\‹ÖlX’V3‚ûàciö´RÚw•¦ÿô`*ÿË­Š¦‰Ì¢^.¶[µ.ªHœ°Ø|s%¦ƒßÏ.•´ÈØkmÓõ7ÛæX>ËÓÑÀmITYwu!&é-ÞÚ?”ucž¸¬~ \"*AÅp4 Ñ>x«hs¢ë!78ÊAÏ&—`dÏÂ=ø$ ¶È~2Õ+“ÖÓ]0R~ÖŸny¿]œJ\Ì7–$%vA´nÇvû U”g®¾Œ,”ØÜ >+ßé(´㩵Úð΄Š{ o \·O¦’®¾µé¢NX Çq#'sç ÈÿFGC¨ƒ“ =fW‚ÛŠm‚×öuÅÞ“€0õìí [θ9„hN‹]ÍÝÍÕXG:ÈÚKö:ž©ÅÀ@Ë^ß0N–üDßÊ*ì¯w ýµ¥+a»Í[1·(½I ˆŒyªðDÍ>œÏ_‹žm79eÀ¹éþz¦Z} NîÂü}Lz©»@5 îüú¹_¦º gî´•í~O¿W´„öEŸ(Š?ßþ¾ÄIò²H/å;DúŠÖÏ#o \ÄÒõú»˜®ˆäøÕu[(ÅÇ<ˆ„ù!î2êàýW€Ë9a"4bw#­„Òž^ï£D>íËÍV„BÅzƒü×c0 8޽#¤J4èvì@à" hMpäв¤("Úæÿ̱&›ÎôØÏ/¨°ËÁÆ"·“üÞJ—I[C§ÎmþHª@Ä¥8.MˆšÐú£“g ÉXÔR¦\ @Þ‰ûHn9Þ˜ÿÒ„kBøõOô²:ÑëéÙÇï-õ/ccˆJѵ´rf=ñBQŠúË5!áÌ.â%T~»kú-<¯(ˆØÇ OÇïeHòÆ~SLÕ*X«"çÍ·³wMÅÙ,®»š”Zl·Á9IÒ  œÿfýæ_Ôÿ®•1·‘Ò@„¸¨è6lêÉ/àðKã”Ìû$´OìÛ|VyÛ‚€÷¹Ïd²w”m ÆMª­f­= ñ#D:â¸\4•éÙYÉ)làzß6SLãóÒ´XZNºÐÔJ+¼¶º´]‘Ù¸âb¿ˆu ^gé~›BªÑ–cäæþ4Ÿ Ép؈‰m.”,„vI6–¶Ã:ºŠW–“Oý¯1–KwBˆKåŠê똳¾¥¦ãÙp<éÌé"Ê6Fè bf\/³Û'_+ãqé¿NƒýLH·çFj[_-=q[ ¨ídÍ‘¬³ùV©óü“IïÄ ¥*Cè*ü O9ư¥±º>×+œ¯ óÐÓR:Uñü>ÂAÝ}ðª­X ú€t3î­?b9Wڵä$\^fyúЏ 9nÒP!ç8‹7à*_Ê˃d'qOÐß“ÊM~øþj^ÿGíD€ñ”šSü„sJ¢ãvˆŸ°áq‡ºÇ9’<æqÕ³M|Œƒò¤j^Ácƒ}ùšbOõ¿óº«0£5#ƒ)Ÿ#m¶Vö0Ñ‚ÜW°S#ý_¢Gï΢ÁͰ”»m½¨Ï[sÊ0J‹Oñ!×U‚4 ³Êí±‰÷.—2‚IoÙ+~€ý*]%@;ù6F7u};Þ/Ñ˨¬)GH±ôiìÓeT‹8T &ÐIN‰÷y®ð—Û·œýVi&ÅX*tµ´f’hç†èì'-ª©:ÀÌwe rŘ8wZï‚K¸B/‘ÚÜüuuÍ‰î §´Àû)ú ×JY ·¢­²v ¨y¤—×Q›è3’íÿo¯1ÝÃ_–Â=­-ö£%Þˆ°!Öâ!-lχٕ–µBË€²ŒÎ üÚ'°DDÀWƒ^¯ ðLJTÀ {ÈRÿGOiÌG_ð§s«7Z9¯þÇÃÞ¡÷ ’¸›NÉ'+ˆjÈæŽuÙ¸†°xqÅÙó”Ä¢çåo#à“æ°Áê:êW-‹ê ëIåùNŒ ’Ž‚‘¾F ¯E•¶…¾ÔA` üHÙ4›ÜfMŸËUÜ— ·O˜©¾8(¶»¦Æ„±Mø´qµ¨0!ͨ l6§ì‰Z1 ˜Ù_VvmúGNrRz="žkDz…0S#.µSkM¶èV£G³ VÒ[—¶Q’2—xÁÀRµ•“ƒËúí ` 8ž_?g…™KÁq°²Ò‚1(VL æ<˜å´roí¹#¯ÕøÍôÛ²@œæA‘¼~à"µw+2¬+KHˆ$Iõ^àÝè^/d9¥´K_ûôþ‚{fÉ=‹Mæ}߉ ÓËç–R„â¯oÆO¨Å+Eµ{`éû³ýgP\ª± ô¯íŠð ‘ZdµXaû¦!ì:x&©]DebŒÞ”²¡UßÖ¦]m&LÑÞYnýKvBÓIN\`w>æXR€»9딋‚ý[~+’—n:ööªœp6w홚 eI«/} ":©Ï¾)UoŸˆúØAA`?n/º¿oþ©3#_™íYõ†Ž>^'“o´’KS"üD={u;à º=(‘õf&wÄY\8LpS©WJ9’º…žrfz—Q>ÜWÞ­í¬+ð‹ú”öŽ@RUCL±À¬Ï©³,†%Û¦Yõψ]ƒ¤‚^„a«J ÐÊIÿ,'ïÕÐeý=Ýå?X¨zªq…@WAm‡#ѽ—C³ï™ ੈ×o<=NÙÜAãã¥É’9?önߟÕe·-@—¾ …•Kÿ™¿êçvÀ¨Í'­·÷ÄÜ9”t~X¯5¤¶®‹ X+BÁ|V‹5qÀ>¬:ÉñŠòo*¡«,MÛµÜSGu˜öÌzPäXVÚzèÝO†Èÿü‡¹Æ'ö²©£ËWï*Þ—Óãò.˜ðÍÀ⑸F?\Ç6?}¦yAy7yN–'Ï7¤ÛÀ³øèèø‘!„¼F}ˆÉ1"qwa¥·ó…CÕêèìk¢oHÎ ÿd F)>'ÊÇÜCÖ·¿Û™b\º¿dÓG?Qá¹±)¶äØëáŠë.ûy|ßVÄ<ù7<Rlÿc±ý!‹½÷eúlÐþ3»tª,wŽÅ5ó‹ ç7ý ›>hCr~’L`Þ{ž#Jíswbh2O˜ÆŒiðÎÁJžc×Çw#"N°ø|~]I[oÛSà  åÐ8â z°%}â+ˆnÆ¥K¯¤åÛ¥sWÝæJ-ßb1èfôÔñTJ’’ÑÓ¬÷ŸxÇ…z>¿·CC˜å…}æ˜p°Ž=^#^…GýhÏÜ;¡fÙQM"D2µøÜ©]¯Ä–”Æä¡“¬@×mx@|ðO{Ñ h{t¼I¿U!°…"tã’›Ÿüpš*CÐÒ¤§žç®k³ Y7Ɉ vºãºŽMR‹ Ðñ¥Ù’fÓ­pW5¾d¬?Óâ6mÑ{y51cµæŠS‡ÝÉ‹Çñ›G߆|M1'îÅIP¿=IyÒ6f•X…ï³fÒC8²ìbô&J»MΔyÉ;Oƒr)™œŒÒpµ0ñÐ<ž¨Ýë&!ìì† ž#/±ž©fÊQPi$uRWÖQçáÞW©C[„L˜?(­ØMóM,Mõè‘@\ÆZÿž8ÅõbWe#ä©{˜ÓóÏšC·ÕOä f*|úh’c{"램OC^×H+´5|ÜuöÆÉpPƒçÆuqX…å>aÙ;Äv¢‘,`†ÂSÿŸðË—%7dˆF—¾ð«êßzP?ÒÕ{Vá#á.ÙÞšùfªocs­í¬dþÈjc…˜®˜áŸb.­s{ÝE -¬aŠåÿÎ@xFBÃÐTE…]uAC&â|êÃ`´u3IaØ; 6ŒëF†P=ܼÜ`ø^®@Ô[oPRí4‰ê\f>*9¤‚uª%èøBWÌÊB݇;‚¯ Û)È×!¨Ó"i h©:¿fŠz³×óRüOÄc°¸¦SgUß©ÕÀ1‰Ò;B‰ãû¯ô\é"µvŠž¾wuƒœ(ä.Ðf扲9£æ‡P>eÆ?6èRØ ònâ%2w¾¾ ‰“Ç×GÀ}4–¬`Ói±eµgØÆß©'ˆ×¿R—aß~ÒV[GNMŸÚ¨n<üÔ^ÅÈà®DÞÄ~·Heþ=_þ¼÷1¶‰ÞÄuÈbh{%qܧ›z{&"ËHµâZhaÿnƶ ÓªÄëœê]WQÙÓívóµ‡~ Ó¬-ì*˜ûžn¸8ûíÑm|î´Ru˜ªá'Š(¬–'ž€iYSùÞ¸Œß émê6HÚ6*2¢ç~,C¿*Mÿ+!Ê‘uÃxCè5SÅg—‘†ß*’†Ÿ`þEE3¬mý$UK]¥¼]%Yœ‚ì¶\›ò ~Õ’Y\>±,ißa‹pCAw(}‘AYõ¦ uÅáÍšò<‘]b$zYP·Loéõ«DïÈŸíýG)Ùjþ,t¦a+È8_q¤¶MÐO(Æ Q£‚¹¸y·2·ÿB¼#Ô£Ídõ5ÇÈ[ýÅ$¹±N473nTØVADgVY°»“ÊÿûõîeºV›Ì˜™ÕÐÿqn•8 r#ve£l {¼˜,X¬ J9î—Û&ƒb‹8Íáº!{LÓ]þŠÁxf §Xaâ¿•¹Ìøú翵HÍSøHÅr!bÞh²àw÷]ü ~eçpŒOÝp»Æ­0ìÎ íóšò|Ùý„̧pùÕÐ+NqGÉõÊ Ý¸ìa'!…Q¹/ÁfÚ“³KFÇÒ'C¦WãF¿¤D±ŠÂCu‘댵ä ê&j wUþ”1Ý*àÁá°n· ½<¶dw4g¤%Þ ÿ—j€˜€&v˜Ãývi'nWbˆøu“Q.k© …Üüu^BM©ÎÔK×sÅœCDE;:6†¸0¶Î=°£Šš6µÖ!QU>ŠöœŸ†HôJHê;²®^ŸÖòšdHíXèq6ÞðzOeQÖJ!Ó‹qù}¡X@ z­"UZWÁß}J9YÛÙlþÝ>ðKo&ÖSµ) 'b €Å˜~éÀTCsqYá©}DE¶> †x Ø—ç>X‚Afý0võUPÝV›«* z¥ÅR\ÁòMög8â“òÎ(ÃøE +dÕ·£n…»—ê‚Õ•-[}BSc²2U%œTW`)Èÿ=ü“ÁÏ|åjâ̺¨ÂLh¤Ö Jä"IªF‹fA·,æ/sl®«B"“ÑÃf6Ö0 ¬<0}öPóï™L¯)"¼“àf⇘­x‘¯ ¢!—x\Qö KäQ†¬¤¯yõ™ée¡þi”v¸æ@þˆ¶B“ пj€T84%&œ6t:¹‹ßð-µœcƒ+]&¹?¹œ1££#û±qWØÃs=-©îÛv+úD† æ²±¬Š§Uª]Rž±û™tºŸS®µPÍj>Ù&gÖ†¤|C›º–©B;#óИ˜ÈÉ\ æPÌGaeé±Ü£ESnÃT¸o`nŸ U°23%Š_ÙÆ¹V»!¦·0ZÈÜzèL^ÄBF”AÏ“æ…$1þvÆ“t¼ï}nK/Ñs©ÄLMEÙAØ×ñàòPÞš]êxªù9:…TȾŦô+¼e/´‚àÛÍ µo•MUÌ ØM¢Ôö¡Ø„Œ( zaVˆcök—“e~ýÔ¤F Ó½RÄ’…•›7TD{óª»`·7R-ÓBÛ¶(äè¢Sá‡ÌI¢;¢u÷µa땱cÉ` ®Ýšâ—¸Õ:19•)ÚÜÕLC Ü* +ãÖœW«K1:^@ЂK› â2û¬h¥óX­îÈÒø‘ïHó F‹è¶±‰|àç{­À'Tåx…ŠóÁ>„…²§ZÄ–2^s¨±9! ›ÄAÐÛ§\kPôîÑ<Ó½>ÁÔÒž<GÉ<óGš4(<.o;¼£Ï%˜Tb䯍W©ªUy,/V6A4vOƒ°ö²¤¹Ÿþ[Oß:3çŒq^$=%¸#v]ãÆëö5h%<(lA¤ÀÝù;ý¦ :NÈ­?Ä:{Ò*Ú*ÊæRm&àïïp>Û™!ÅÁº´²EeškKöœNÛnø;üýE"ïeƒSû󵥦ùò©=p”³«JØYWájï”&žU+Àg~üî,Ê2ÄtaÞÈ`DwË“M{XE<~Ât4Iä©‚óxä¿Vªý)1ùêê5p¨ÝÛÓa•SGþ×§ì~Ìw‘4(íTXgùT{óЈM?‡’Fhå“(ÞÂP¹ OàË%‰J“#2¥ë“™´ª[s€„™|&RêFhÙoqæÙ‰kÎÇùè0@ùá©Vr±?½ª0\rúXfâÁÐc)‹Ãòf¨çÊÌΑÏ‹ôŠ.àƒ$…Ú:X.8ÃÚÁûn†¯RmàU˜c6o<¸ùÖÈœýPÃøü€a€7˜½äGUý¹ÍN„d4eAÏJÓƒ8d$Vø5 ‚e°ß+= ÍšË÷ë'ÅvËrwÌϿ톭_kÏÉ}.£*®åƶ٧)I£û¼Ä²O€£8¢c`Ï­ª‘Eek&2«Gy·*“ø–*âYÐÉP‹š!Çud2µ®žUÖ@ayÝ\—°¹¾õnJ—àâ³üB'Ì.Èl¡Çâ/´8)#«˜ «Ÿš5Ïû=Ñw®ƒà—°*³¢àô«Âé]Á£Ã&åv@ Ú@5î鶈’NdnƘ~Èqz±ªs²Ž~ž§Eh‡*µ€Üžì0`º,µÕ¬Ô·ê&XŠk+ ‚|Ý@±ÇÝð"ìÄqwKÀájž “+¦Kl¾qÈ/ [Ô<„yHŽ–Þ£Å|}Î5†[Ñ£˜p'¿ŽaÙÚ—PTx(`ðuùnk]ñ^©R¥»¯Ð!ÞCÚït€šÂ!ïW£³ÂCJÚÀgJ BHä•K»?§Ë\*3ªÙksY<êµÔò—òx7Ѭ*¡ LCp»cL;F›† ^cßZøüŸà†Ÿørô>ûÒµ.½@)Û–(§2GI<>R®°÷쥷 ZšŸ(*ÝÓÁ“fÛªÉùö'KVDÁËú7é wˆ|H“d÷8G Æi¤DN˜ŒUóZÂxÈ ü ¥+¨¨}o«œÐdv–(Yœ1´Y©Qíâå0aoÓ„ä)‘J¡™í|TrÞ.7+= ꃷbð$‡_à¼ú¿bÔæê$ìÆ8~§öIsØÕù8Ëts†¨V,LáÙ„µs=ò_ÉßúXòH(‘©“~¥«ŸÚ µØÎ§ö¦UQ¯™é´#4‹í@eÆ!vš˜ V`rM Ü /¾Y…Ài¯M"¨²l“Y¼Ñ虳’×ÇÊÂÙµS‹û¾­`¨x![7*¿a+«¿æ›´Ú:ôJVš"ëÇœt½ÙàÄ^ðÓ%êÌqvü·WýÇ’G*ˆŒ!Þzr'-!ªP&Q=^YÈ’k–}¯ù:Èþ÷£P?%”Œ²Øœ•TÙG(&(1²!Wê—a)^…EÒä3aR+2¨¸•BøU??Ê·>ßx¹?à«…ÍeŽÌ-†ýµ•~Y/…˜ B×bLaЇHøë®m’yNp¼ROe3ÀÈþ*'½æÄaÎL¦4õQ2 ÷Zµ,Ð倿ƒyâWõc‰”<\ƒ”ÖËP´×l¸ŠÑÑíQî=βÒÅ>ˆÌ´æìN€?ZaÙÌv[Š•Þ"~¤ð|(^«:By½Œ8Ü:­°éÏ.ˆ®J-zYUHVG–ö®vm€:zè£6o›¤vùï)qÍ%‰>%n©ç¹KöãHU99:íÌÍC²z/¥"ª¼‰“‘$Wt™FÞÉý0I‹wn)_ͦÉvöwµEœWŠÖé'y7ù±ˆ|à\ä=éÄZƒe7G1¥zÚ¶”5vý81àÎî©(€%ŒŽ7‰^O}ê|[ÀR%¬OK10‚jKLâjºT3£KcL‹ã8'a+ðt˜‚ÖîZØ”ç—ÒO^®šQS `a”4K,cá £Ø°©¸¯|‰O!‰‰Z[ ‘…^â=šßϧgn¾w+Ik¤õ*äÍGÕJ´Fž,Ðf¹ý‡Åç´9*ÙéÐÆKlâÀ«Ð ‘©ŸJ¹xö—N¶ñOH&º‰= ìwd‡¶ƒF‡È„6ƒÀò#UN(æ¦Õ QEÁ¤¶í­›!b}¦„—t9—ôϲn\Á%—¶<ý³1ÕëÆ½“õ%/0> iJÕ/t¶s‹ó½—ä½T|8ŽL¢c¨b¶žÞÄ’`Ó¦†FÚ—dÂÎs"d²K@™7é¸vTZ4]%´mS'º‰…mj/Ãóß~hÞ«Àiå o@ÌŒêàÜCv[ þ×ú.mò"ü"èV°†ÈáøÙ…¥Iˆµ- 2Ùýru.—£?¤Å41¡ð8Êà§ +ùÉF{ç»DêwE£>aê*>K9\yÃüöݬ˜&d2Ô˜Uþ78Àí`&šf+îRŒÄ1Åîâû 6µ¿'©Eè æ/šOŸê ø£ בS¨¤aÙk c€;OŠáãK»Lô]¬<Ç/ôUo8ójA²ßç¿‘ÐïÏ‹ø"gõñ“²öë‚)²µvªÏÙy7ÐiMþ’×,™²f~LY˜¹¬¿NîSü)"´-Óö™Cu–;ĵ^òKLµ¬ò¿ Ð¯Yu/‘÷ÙÿÏš$„ôsã…Îýßýö §oè(¯Q,Ä|(]õfƒ[÷Ö ½ƒ©¥“ôú"‰ïÝâæ £•ê3‚µÜ´´8/H•íÀ&å’­û ¹î«Å™í7ø·µy¤Á!>TÕœÅc¡KD»TY©g»¦4 ìί}žº8§¦w´ªÜC·÷áäñÕÑà(Ùâá˜$ÆìÏ?ÎáÆ¿ï›ÚagÈü‹NÛkJVûZ—ã{ƒ?}w Žá6ì0í¿'ê¥NÇæ0§§ /šã4›æ'9¹x›Ý)¿²+õPÌÝVkÈkñǬ’Œ ¥°wöAp€£P¢ ýtèÎŽvkþ§ñBèN†Ñ’Åzܵ䚥¨ ¡½b…‹Ïpã¾ôxä§?^‘g™¥8÷-þÇVvùó[QùÝ«Ò9,%wG’[Ÿü {øk_“[lì:¿!l,5E|7Î*뽩ĥ“å{’ŽÃ}†AóTLÏrc.baêN= ?ýíŠV>oB,á÷Ai 7 R¸ÏÍëûø°æG ˆ—=t–˜= ¢óO;ÌÈdž£æqÞ‚€6i•ò@qB¥;¦ÍMÔèaG@„cA›§v@(îí­yP¹É6kÝÓ0gž»o2` U97áð×qíøÏ„És5.Ÿ3Š„ Ñ»òpc-ÇéŸO²:º]M2‡~½`4íÀ¸Šû°×Ø)k ø«æOƒ¯4lÝ•v?Ú]9 Ù/RwerÖÅ¡ùи»Ÿ04Ç.ýpÙ®¿s´>‘ªÍ¶Ô@¢!•HG л†]×ë‚‹‘ýô·“èíAjd*5 *‰JÛ\.HGZXY=o óæÄ NGöö¸+—·á^‘0Òwuéü¡!Ö’>'Î?¢¨£Õ¿:>>§ï-CñŽð7ðÊRðTrr}y§†]_"©T%Øî½¶BäYñ{"2ßø4¹ÀëIo¨‰·ªÐ A„àÕŒìOeKiWÁ4Äj 9„b6™¿Qä-§âÉ0­ëGx=ÒŒ½OžJr¬x„kîа˃; *å|G¦“³s Œ Ì¥œŒáhR®HV{q*Ͱ‚RùeÛùŸ]Çf…iMÝÞqH ¤t Õó F|P „ËjzÄÜŽMe<¬Îv/·7acSŠe–-Á©|IÌ#GÅÍ4w Á0øö@þ¨KôD¸|,þíÅåSIƒ0n‘é,Äw¼Š7P`%yÍr’Û°E{µÑœ¹ÀÎå[l¹þA²¹fzž‘®¶×õ}»ëᯀ>ÝÁäí1+C¿³n‚*scq7´¡ ±÷g\v.IàüÜC ÇÜç"lõø(,בô8ÄJÓ‘L8œšÐʪCÞì=#Ž"¢éB3L–ôB>–”èLÒ@…vÇ;F¯8vËr¸š][Ñ0Äœv êEðáÚ> Bä2ÍçF㮸ƒ$ù¦¤f¥]n!^9·Ûöò;Õ<­oÏ–:o}ݲ͹šœ¤)røf_ K”è˜Aç=¶lžè]t¬ñéóøýçp€Ÿü(mƒæ™ÖUöæ˜"Îir sÕÙ› Tá¾E2X}ß Ãh¥q—üE¨Q˜ÞñПÛÜ™HkÏǶ¨™Ë}½ÕETc(|YÕâP=Çk 1ôÓߘ—ÓÈ´µ±Ã|Ú9Ž‘Uƒù7u†%8ÍæÌW²Õ¶:”°™MNЇF‡Ù­©e\­äÇ“ÙÔ®Ÿj4£œšƒtçíýfеÉIµÎ¬Cmîÿ–ÖL›kî`8Ó”ÞãŠ5ì ð}8Ï›äÙØ]Œl¾µß«ò:Çô¨k"t*I¤Yƒ?SmµŠÒ¡s¸QÆ£ÎðÓ#]7bwØÇAßúî‰Y¶ùlöw½]C3ËÄ}ŠÉÒó?PSk§©äÒßòAAÜ]ý*æ>šÕd~ÇK@ë¤ÄÅP°ûÅ-)ίLé.:?»3l©‰ö(Š{LÄ©V*„µ3£ õÿ8Ëôhs·ž,nH c\Åe&Ó#’€p•VPG;…&ïsŒ/Y¤\Š­§2ä¦úë‹)…­zT[wó®R2¡ßà€eªÁßfú*ôÓœø¢'A“àlξ[ L´ÈÞ#r—uؘëk(8c› ›@ú5HžS›õ}žÛÄYöT´EùK‚ ‚Úû¤ŸüäÇ-£$ ý«vš’¡)´W™·Œ§Ýsy^WéÚ:õ„¢jK‘OgÔwzãôw/ý̺ÖÕE[Rµ+NÜ›·£ÝmÃM½þ¼¡Ö0¡ädd´*½Cpè½sHt‹Š}•¦«^DF[߯Ku©Ó›K±î:.b(Y/œ”›ÜUvÒHš)$¹ÌèªËl·3µéÖSep’–6·ÍŽ*só‡ƒèAÍRŽqÅâ‹É›Ųþª« ½)v¾ŽŸ& tú¼ÒÀcúºÅ,\1âJ£*¹š;Áöy~f*[gɨV+I"v€Ë9p³ ¦[â‚õ×)ÍGoEÖ_F§Ê7¹ÛÊ#|©ðžHv[»÷6¥\ÄÛFRÃ:eŸÛßpüj].˜qùgC)Gø“}ggä?ÊB_ÎÈÚÇö'e§h>¶9¹-a<0Öi|“vzæ xbK+8 ¢5׬øP²T¥Kt–ÔjL$5kƒÂÍåæ‚›{'ÙFÂÊýEðÚÿNp\"jN˜xN&ËåF3r6ÒQ}¢Ä{«'x7õÞâHÏ–ê@áÊ~»õóíÐ_éÍ%`p½^¯O/ü.Œ$ªç¼Ñÿ9ÿ!ÑeA ‘ן÷àëÜG|m¼»þ‹'ç#Dϵ…×JŠ¿†õ¨£I] î&`ïXÙo'Ëb öêë ¬™¤ä0$çO›÷_º#UK:ž´þ ¹†U›˜IH°‡ç·këX¯ \úK¬-¾3Å饮×H  3þÀGiƒ…“ðô:÷m0ØHÞ,ÒøþuvGe,Ñ=›²=••´ØYÄýÌ0`Y]tRÜàæˆ”Ó^\¡¢—…’Î-”f»“'„,ͱå1 —”’²ÙŠ·™Ã.EÂÆñét·LݰÒÁH5øÌ ís7 Â8µlÈ»U’ÝhwjÃÈCªe ±»@Zaˆè*Zàºû!J>&áu2|®CßÀ‹7‘AÌ›š¾ÑFzI wkíMÆsT¿_¸—®’µv‚dGá›ëóòÔ…“³4v«„ä)ÆÎº‰*^}Âj÷öbféé’ŠÈí%žª¡æ¼©&cÃ)k_é'Žî)÷ Xô–ŸöË;7­>³K‘N¶þÞG¡=ú­ß§KÄz dG[Â#$ö8ã>“çeþ÷æ RfrŸ#1ÍHñ s}0ÞÐpˆDGøõuLœ½ Bí/y~~ÏÅ¿K\¡`–' ¤Ûð¥éA ô+xp””Õ4OÝ|„çç‹î!äH çyÊŒƒ?îo^™>ìõô 3@l%Q³Ùê£aÿu=(·ånç áY9yEÞgèµOá™”kØL¯¹ÚÄG‚Œ†å£ »u"΀ă–i?‹¾B/´I“b¼ù$e*k-iJH@k³þ # @ëãýÃøî*¸­|–¢(¦'Áe€>VÊo߆Ù*¡H£!Ð^âqMmÏ ¦‚5+«Ã©³šû’)È•Z%zõ_Ž¥CĦ¢¸_Ódx_ú%Â$o4Ù N1’R™ÔÇÁlÑU$@,C±¯|B`aþØbæ×£&롈ӔcûÈÑ‚7<)–zKVµ0È®ÔY x‹¥pVÌе?p“Mwjkç7Ō٣ٽEj4ÏQ &Ð2{ÍÞÄ ànf³ªù’*ÈߨÍ=†R‰Õx…uÕÍÅ;›Ä³¾$ý29è¶ðHß¤Ý e”Æã^¯#n6©=Ú „Ù²ñÞ¢Yà{ìÅ'psûÞ·ÿl[óþ’5øúÊŠšõÃÄóH0­P¼=Â0Áa§q°ïë7tÌ«ÂYw«Å,%k1ˆ $¸ßZG›¿ ¨Ò-íj0HC…´)†Yð+¼¥A:“øÒpT¸9Šûiü¢k æ>mýAS?âvywÍÍÞõƒ¶Dw‰GWéc2$Ú„7@O¼ÎÒ€I¬@+èb’IöChï†ç"›;@8œ%ã‚­°+¸B¶Ú*P߯ÐÑ3w  ¡œñ¡ÿ[! ÖFɺ¿zXÙdbµÆåše.‹¶>@~jDðßtˆ¯J#yðG¯ð d” g4ä^\ÓÐ*L |ZwüÆ–nNëï1À³${ï\s(9ÉÞ¶Ü÷µÃ‹K²E/—p)_‡ó4B”¤)ˆ­Š¤>(ÓÆ¨—^KÞÎg3Ëpï«¡A§—®Ö!{Ä)VIôÉþ*è'HšÅyœî!ÀþMqä6rh@,Ý ”B(ËH=cœ]^åŽ2³z‰:£’sÂ’ôÛL?(SCÁ÷;ý¶¼xÈZa.ZÚ& =.ÁÚ!»à½HêÕDeæ°À¡*6¾ª\¯wž¿o 2-n-1ߤ,a¦N¿í‡ïÑåKßÁãÆoùIÎÍÉÍžN‘Áƒ Ífô=%4}Õè9¹ÚDÝ"ƒ“ââk½="rÛ½B_oK 5³ôþ7JkM” JBïÒ¢i@.PÓ¹A0ÇR|g’ÝŠ) ²£³2(fÎO ç6ÿSSÆì¡À“¶öÓ²67 ÿ¢¹:>©ÊrüîSâ©!%JºÁÌQ-3/7 ØÅœ¦ë·Ñ}k5ÿû-DÅ…É—bÈ=o+Wj·ú ">¡Ø„»ÿ”¶Ó#ÌXؘ¿3ãsàŸ×wغ¼ÔuÖßÖ½Àó“ “7g:)| Hùl~ÝH•Z²I¡@¯ïù*)Tö$ž«uóôu¡•ò®ü$£sŒÅ/={u©•Ûž§vÔ1§MÚ•B®Ý’÷¯`F.Òï6¯‰ÐRŠ®,!¹–ë+!gWé Ù-³ƒ-󲑩êÊæ¥µsd‡ ¦ã«¯Ø·á¥/¬5øÚÓ‹‡ë"¶0™¥FL÷Ì¸í­¨M߬ѷ.<1Ãc¬M1]¶ J–•]˜§»3>lÏ6hâ vµ£RÈ«5cZßs ã;$~P®l+U'ðTÈÞ>¯T%œbS¦*.M±ØÍS7í5¿P‘Ù_8âFÈì£ÉsÖÿÎo`¼øÝ‚iâ¼qåê(‡&Û̶“/¶g›"kc¿¸›Ôý ™)”’óÆd¾ ³¸¬4lðÙ?; ¾ÇQ¸m9&\¦\cšnf¶ ~áÙÞXPév{dÃÇÇÌëõL%nß³¸­@G<Ç8Pþ±#0èVÃôe^¦ÇÕÚAÔ»$yf<5À,xGp£™Ü;·F…º¢g}oŸsGz/ÜÍÇSÝœÉ ­W{ñgz¹1B„–Ž7w(¸~‡§ªJoÀ™ §A¶R-•z]³{Œªº-eK$™¦PäbÄ\dÈeÚMÒ™ŠÜð1É͹’ënÊô¬|HÊñÂÇSáB´#v÷±™°'¹\úa.{h÷[r,桇®ËÚ2{îGNr3[ÿŸÓHB~:ã¨ÊnH }|… Ž2_4Â7²OìÕ±bdjhµš´Pqt9ëÕAØÝ¹ ê¡×vy¦Ö”XKY_PœÄñIÐ`58~`ÖY©‰v< ieÓwåͦTCù‘¥êrq“WËöŸNßKÜÚ>°­Ä·eäs4º`(3@ÜÕM¦ƒüÁd€œzøÇ œ²(é‘ؼgC­‚W´ó…«‡ã™0'•Ößpå¾B¨d­®Z¦h¨lüÛ#¤h?f]´@šMøèb‹ÈÎx_‡Îò·°nFzÅvQµ¢Í”*d"C}ï\‡tŒ~)†,%ëƒåǤ#|Áo²ÔêŒH/¦;@¦“_raKôEåiü·pá\}q;¾ÏÝŸžõx¦_4ÏŒ‘œ¸ÆF>þ“Õ'e •.îUíãÐÁõ¦±ˆÑʼnj í†èõ3¦2T>ó¤/Aƒå盫ÙhêT( AÉ»åX®\†~¢ê3ÜŽÅŸÐiRÆ ;Þq_ókïËÜO‹<• …Ù}(š l¤½Ù¢MÈÀ™Ü† 1Vj¾Ðdíÿó…ilGòiF3c ›r¡¤ @à (ŽŠØY'Û›Q¶‘Iq^K¤`ñó[ ÐPKù-àìå„ι:H1ƒáãF žf¬˜ë9>Y’tí§Ñ~£Ö*¶PÙq\Àº8ÎaŠ»Цè|ºhä qeÀW¨iàx®˜åTK—«QW|ºaÆNôÃÅ©_œ6Í{µwû¹9Ôm1N1¼Þ¼ˆ:hœ~ÉÍsö¦è!`5 fµfy)¨þ ›-´æÁjtR7´G“uv´çaƒ5,ÐÁ^ús+‘Æ•9 ñmníõZoëâ½ÌЕÜH°Šµ`±ý7ÅĹ¢ås¬‰éRƒ‹t9l-“j¼‰ &JEË(xRˆ»ú±8Álœ%Ëë¡ÀÜújºb/uT¬¦½! -¨G7))Š«í².l]úêôk¯×Q_Z}÷c{Õ½«¹Ñ’3)BpÞüúÛÕãó˜ÂÌT×s#|²ˆ©ìòaaŒ…™Ê9*æj…¼ÞŒ¹„©)ë ‰â‹×î€åûGŠùuQ>#Q ÞÜ„é Äž&j‡Ñ7G|L•¬Ö'IÒïŒ\˜f²Ô0ö[,Ï’'2 bàKáàFôÞpûôS•-\[jêå% Ïc¥¾«8̓¯k@ÇB«Ð“©Ô=Þè•]¦ˆ“ôçwU¯ªŽü"ÚgÓÙ>ó l"!~ ³¶¥+È™ºòê‹2…/ÚnðY#ûDVèd4²'–ÃAÏ­OÒbÈ?xŸÖÕ€oòngÈ4†gqA¿s¹99#˜±‹îíÁ#–j):•IR˜ÓñXÎq‰^  n֣Ή&1IWÙ€Zq ë <á}À[K¥ÕPÁ{˜ÔàsÈ` oF“µööñeÎŽ­XÄ È`ç‹k°²ÒFydÑ´´ô˜üU:¤!Ù'ÚšðÂÀ¼Ý½LTTŽ3D_Ó€UZÙò›?tÿ}»bÎ_7QGÝßÜ…›˜Ól¶ñÓaôçF3h De·’ÙÍOƸ»Ž ö0·…œ¢«‰fŒ`èõ 2³bœž}ù…øm¬Þ›¹a[§­þ:›"»nvŒcˆùƒ·} %†¥Ôh£ÐweèŒù´:2Жuk:‰ê-Тhðb— èÜZĸ¸*ÛNºì$Àn_[ZiKq´GÍmÿ[ŸQïãÉL”bâ3E ¯Ú†ïÔ«“Lð!…®D^y=VÜ7•ëÁ~sm·á˸î‹Õѯ|%€Ùg(¿ö«FœÌblqÚ2Ô%#Q˜+ZJA°M/ Ÿ$°íéfžtñÛ‰*×@Û¡}£ÜYUï¶ÿ›1W#=qÑy0,\…÷]•*9™Ý/ ‚P;r‚Êù“ mmïœA¸Ù‡š¹þJ&(Sñ®› 9ž9I/Ù~“†ZÏ2t)o|°³ã̸œb„}ZQb’tI\Äm²’ç ÈÎîŸÞ¥Bˈ?\`a7QDðŠÈEÝóD0Oé[¹#Ïæöº1Š0ŸWì–à›·]MÌæ?…ðw]*ýl­;nó)^  ­XvÏN 1ðsØq¼³?ºÜbŸm%6]Ç#HÊ\b_Xjøÿ®¦ÀªIaJ¤T¥ ,gjÓòŽ[´+ ìkäþîóªý¡Óû÷»úeÖ¹¬Ó5P1O¥/þÏ]ŒNðlÚÃ'e6 ËžªOV^8T<1åO†¿#œ˜=È™çÖ79+Õ‚åã« OÐð’çs>¨A‡¯v¶ùJ9á ¡îëwž1q׌AL Am…éYö0h‡Ïëf֮йÇÙ¸—mDÅD·wŽU÷ Qgm¬~¹²ÀVˆÂLã¿”+íµ©{5j:‡óM9*ó/äÿ¥EÈY½cV–3×ðì(A(Š-ÚEƒèÞ§;E3.ˆšGvmø˜šm~–´ ìíôÄ›”±ì[¡~Æ¢öNœ¯H$2eèò÷ÞDÊõ+_Iâ~z“}³±£kS›lÀ’ðÅÒñQ?^’Ñ«õ`t÷PÅIm`†¦¥l¿væÆjZÞÕµñb2t‡ 0eýV˜¡39âïÁ&n¹ó~b}\U"¢ùV'ÒÇRb,ò¾ìu‡óȨƒW4¡[}„þ¯èný^so¿Œ¿tŒðSƒ¬¬JÎ}gySÙo3Ee+ ñÁúkLZ1’—À Þ‰JØ eXÕLŸ"¹ø´›Ó^Suâ )u ,\Žj¿“Ó½î—" RítM9¤±æ(™ÚÈØ÷J Å Î]NZg KƒùF3bƒVÛFG-öw‰ó•ˆjèÑZæýÃÏmçïyªvDvn PŒÙÙù"‘øjãX;üü­óúK_ùÙˆxæ®MÁ¾šaD8T?vî¢bªHÏM´uÇvŽ;xÙ»?È ÚTÂÊÇ{ÌÈXÄßèæ«#¡TZ mó©ryŽÀ™F‘Œ£3*!æ%…‘žœÃ’‡¡½bl@S5{Çʃ­µ0 4']ÖÅkO,E Ï+Ì k÷„H{wç–þWÎ.fQâÈOä8`ôzË¢—ŽÍ°Ðƒ¸Šzê—Ov”T› mb6ŽRèÔþ/¼˜Ð%£T y[åDó]·G:t™ZÿtØšI¨‡·~œfEæƒCŒ;+‘í˜~½43tÝZ”o“àË"M°ïKʈÛt‡L  H»sçÊBÊ)’dV/ßì_ážÜ£X{êOù<µžú®%šJ®Wö[îñ0ß BÚ:AwóÇ: sÀ3MY•e¸&ùòâ[ž] ‰ lÀ}—]žë°md·ÙÞ™z¥èDgêyX›¸ot¶ŽA˜»Ô)Í~õOÿý‰á¸ƒÉ_[&ñþñWXwãi!Ë ¬Jz©ô|÷”õÎê@°AF-ÃgÔ¾{ùá«4Í\¾ÖØöBH†U8utm0 TùÜX ‚ñc~šc+\˜J²²ʯ‚úõ—¼DjM¥?Y„F¯d¯Ï¤þ¢Ç"wÝ‹Á±0¸vÐ3í(à øŠœ£ýÛèÀ™QR‘¿„Ó³IâYù0D ižxî$ÔKÍ9*ÙÿlaM}hÏÊÕ£\Ëd™öÉäß.éE1€ß5„UI°q¯ãø{ŒîŽbô½û¦¬««U£x_xs´Î”:ògýˆd­©:%×ÛÝéˆôsiù†U70Qöƒ(¡KRyéÇ›Kñ^¸º…vKìÇ×K&5õ‰¢’ÝÙF3♆&}`UÁEf…©š÷ùͨxÑc÷pè½ñœØëd|>Ç™PñŽyie£ûU¨ÁÿŠÊ ùR8 v‘(XµÓÒ‹££–!WÎyVKid  Çjsw,_2IùöÅâ-9ß,Cx™ 1Y÷ÕFaßö ŒÈH¸B;é(×ýJW‹û•?RŸA:Ìm¦\u2„bµœ“¢wm®Â(4î2?תJ—ÛíAeò‰'?$såÜá´HÍñG®Ãòñ¼ý'¯´–‰kÖo4¸ ¾5a9.¢½#×ü%~°™¿nèvqùŽ\Åœämû`gϽx‘·L;šˆWa'YXWÁ çó0ʯÌåå±”§’qÑÌUñ:úy—UÌ9s9øÇq»õRV䮓~õ¼Ï'ä„F"~ˆ¦KðùÁÆ­É YfÕx´«‘í³gFÏÜ*G_y3)U1Y‚ÆR©Êu€I4oV¼m56ë>Z@QÌ ºØ´UæKCx4Y(Îy „ØZë$ˆïö/JçÁ:rÎ}ÌݺP{`Íš hW7ŠFØ;Šå]âu@]¹}ˆÈ7p¨ã»UN™£ ”Ú æ¥÷ûÑçËÙ@n¿£ø]˜ŸçL±noq»›—0±™‚ÈÿÐnÀ–f-¤Ý‘ðüûA˜k²mq\[!i~j¹L}´ÕÙ€{TPdh|_mŸýú|þE\¯X;FV ¿ ‹/:{çIu&#‘ìÛz¯“v:äJ2<©D—D9!\Ü̈äk†’7f øYŠá •6ö4®¦sÏM!àÕ 8uàÝý¤³B¶¢ ·e‘´,¥AG&Q&|ž[eÙ ƒ[‹åƒy…®{¹yL²‹pz`&GvÊO¸™¥Þ&AvõÁ94"ˆ—6¢¨CÊ.9Q tµ8'¡¾éž°Þ8žp?Tº2@ô¸‘Ý€Em\6öGT¼Ñæ`9¡?æ{?æ/5× beÞ'µ×SËO1B¸“þàë÷ŒéX/?ûuá­ ,tʱ¤ªÇ”8÷O¸‚ÿd‚C€zýÙKpf>rþ¹œBËÑÅP§[Á”íO 2 ùñV{@ÔA‰úý!Wl©·Þ÷9gþÁ Œ„’‰{°s±Ú³–>dË/±qÝÉ`Rá!ˆ´ îÎzë©m ç‚ô¡qVçÔ Xˆpg^Rùñƒè»S¯å°Ì«E‰iE8EÀªv ÓÃ=[øÓJx»Û£i>"~ÜåoB.z´Þçc˜#r gíûs¬)»gµ\+”iþ?D¡êìÃŒT°â²OsFî%íÎU©oü}ͯîylÝYt|*Û‘ö ¨À* ÔŸ ÏIÅ8zDèŒJyk¹õ–%^£ç ÆM÷zNµê…A-…¸ñ4xʆŠ=[©¡Ù#ó;–’0–ƒ5N³c¬ÀÁ”­ÉFšìc ð€sM-VÿC¡Æ„"kD4R½úå"9™ü•t½‡%V¦ñ˜RU(ð^TÁ,/ãJ´†!™äÑÝ’’8`qÿ¬l{×ß]Dœ¹ßûQlçí 'õˆà£ŸÃ(Äúýšÿ3OûðEňj‚Ã…û¸\5¨—îÎÞg SaûG~<ž6ÀŽrLjþú'ººÈ¼*Ä‹m» RÜ%…:4™eŸx(Hû9éü–ËŠ ~Ö+ĉüÔïd›%z<‰ø¿»Ä PËÐ?] ž#eêטQлøÑÏÀ§ËY£ú…;\GÛ¹:ì/–ªì¡¤_gm%¦Ji>À®ãZljHã=&l÷–šA^:ÔÛnzè„›x?ŸËñn¨T߈·‹äè '?îªÊ±Îž¢¤ˆ“î‹Q·Ã#^þdäÏÈ,“'´Ÿ«r„v2N}:Dc¿ Õ0TÚÛ¯†uXVÞÃç׉™8¶BÒ˜Þd,/ÄT+á‡Ë 'n§'jA Ñ`¡Pê9ëD‰‚Æ2Ln%£ æc™áòÛ™ª/ïš›øÍ„àÝhœ¿³Y1ÚM†òMæxI ”ÂÝZcce»D’Vm|‰«™Ä\”ÏQ nñiËirßp·˜Y!Å!åf*„bè©^GDhB*C:WEÊç+ÉÁk' ?b‡»z~‚—sÔþu>­²¶ý…9é¬×¾®?(Ë—ÐÜè”Ê0{ËFpí‘!õZïíbŸ¾¶È5çwG<ã÷ÓÛOßâ—Çn;Þ2Ü ß>14Z–ÊÐÑVZ ¬loB¬üXˇÏ@˜z‚-² ©AòC‚þ̇üC?¶h´ ‰eÒT&»ƒ!Cà˜ºa|ÅŒ“¹&9øùêgÍcþ È‘ö]¡WÏñxDûèø(ª§˜ùÜ€²ÉBT/h‰cK‰³3á?Þ`ORªñÍ£_Ò“&Á”0«›f §Ä¬›Þ Ð…Ó>;FÒZI¸ì¥ÞÓM#j˜T•«­KLG ÜÕƒ¼ÈþJPñýzÔöÊê±Mš¬SÈ5·„ÕôFÝû+={êf³j¯¹¼[ŠT¤XžÁ–ô}­q:±€‹£Ø¹)JÊÞ')L¨àU‡î@Ñ´­Rocø»ê7‹PìCJ[ü+œæ;B„Æû4õc¡JÞ\„Q8ÅîÏrÂbT%YÛû€·tpÝ:*«–sÚa¨ßC-tyK[­‘­ä¤©÷c°žŸnû«% j$ï3‚át„³ý7î¸HG,1ñ¶)Šª·á.­—|…”™°w7ÿ^†„a¶*CùÂ7 h6‡ÛõÇ϶‰û$€YHEp¼*µ{g54;~Ͱ;p¾"¬òZa}¢ùW•ˆáœ‰ß¶ .@S‹BºrPè0¶|B„{`m…¡ºé6?êk–¡yW™ŸŸ5p¾Ì†Ý:Q `½Áæ "ðt}K|ùZ5×Ë2÷M?¢LNë«•Ä6¡x`ò~3Ë'ÈÑ/dßO ÓÂêKikÚ¯0™nÌjvìÛ [ùOÓ¾‰'ykÏæÈ›oxtsÄÏâfxM+ßýTJPû!¬/¹JØ!œmq@uË¥ü1¬FJîßÄörìEÖ ‹–&¥ælÞtÎçã•pL†8ˆg·­gM¥/þWÉËž%b¤+ ˆë©»7—#ìKõz~‰è³ —;¨Ã×ç`Bqá¾NEË÷õNÊZñ-ä†V#`Èg¯@W .S\¿†CÒeÓ΀:É_¥ZBëþ÷ÛáØJkÑjϰCs+*Ú ÷|ƒ¨¶”Ü•"?Öb»5i›³Ï<¬‰„ÞéIm¹Q!ÄoÄj%e7$N,»ŒXo$ ‘ðXl‘Ø&3@C}à»Ô4é¨áˆ6ÏäVM÷‹‹ÅĪÉ9F½—KaÍoÜHOs\÷`$î~Éó=èM/WÃë>ø ŠÇ™¼Ô¸¾ï[i²:e¥Å˜^aÕ}öè 8˦1eÿñ +e!«w? ÌÏ!Wšå‰¢‚r&"?æ –ámêÆ"U½ŒÞpÚõl×®´èŒëÄ&ô½çàt Ÿ.¾É•T> ŸÙ—7†qDÿØ©()£‚êõjjé߃ncLÑyÈûád8É<ˆ ŸÜ:eƒk#eÓj0ƒŠ3†ì©¹òOWáñ”mîâdBŠ¢„ðg9$õJÚ‘|™7ÈfL³¼R ßάA>(¤6 t´¶c.ÑÆ…tù† ¸K »š’Òö-'E 3Qó L©z KdnG»¾[CsDé˜ÝŽÞ¿3ÝC`|}#NùèRK> ai Ç".ž¼†I€ÚñÀ«‘àäLZ©VrÒ å ýt/FƒòP(GÔƒiy¹Ù‰«ä{S}sZƒªÇí7D¿¯¿°t¡÷ýjZŽÅåþ;5c1´rTbÜÊK×)ÓYÒ¬„Gqp:i}M%±® ϼv’Þ1÷à× ¬TÜÅ®§vÙ*Õ¸àNj +`Aýʇ|~ÖpqlZ/ºVzxj°ÈE&äßOG9$šŽ2m]@ †ªzEx{¤±ˆë!È4Tß>³…‘}Ó–%.­º±m?º«ÅïåCËÁ2˜m ɪߠǴI©T®•`NºÈò,Zở£©YNŠ%²|± 7 »T[•·;:x(ÒL#•0Ü«T½—ÍúlhR,büÇ(Î+N€PÂ{ª;ØÊǤÓ‚¤££–=HIóÞ2vÂE­/+:aXcûÞ@F=ÇmˆП3¯ñð½^”E®U¡.PóO''4I T’ÙÝKmÉßõÚ5ÓC3ÆTØ$-1)qÔX~ ð» b^.U³ÿ÷üëÚqá–9ï¯{Ëëñi;f³|Æðqsãh…_Â[˜ÍÍmó÷ž~*éojï;Oôƒ.BÚC¢ÑË Åéí½òQú²×ÉŒÜïî«8?ƒt&QW}åQbø/Ð\·l®0š£0É]ä/q½hâ= DõÕ7Š3ÿÅ›ê—~#™‹¾A1¸ !˜ëRç[©ÍŒmÑ‚qaLšÜ}è¯7aÏÂ×jT7‹À¥¡„@ƒg´ÎÅ+r(âr]aÕs à¶Ýn¼:Ô®g€Ô(WèwN–Ú+Z²º.€„ftĘ †gz;\ËÍe@»œÝMUÝ‹hޠݥÀÍcÞy,iöõJ£ªÃbj-£¿”LTæ×¾míðíX<Ãè}p|„K7(Àþ~x ¢oˆÚØ¿ Ú°§‹f×](•¦ë{hº“¿kçpÎ26ºMβÓÜŠ@°Yú*tá¼v*£JIÀp| T÷CÏm² ¿å@µˆ¦ºà¯NÛÞá5¥:Jöã!H¨â£R-óðÜgˆŸ þ×uÚçÁ­<ÚIt½%Wü¢9D¹ó30Nû¶úªáv¹êièñÊ•ƒgòÉÍ2›Ƀ3K)º€PêqøevDXqÇ3´r€‘(mÖ`.†ÑÇõ8™Ú´ Bœ³[ýœ$ÄîmÅw€Žbþ}Ç,Ò xVñ—û¨c_úcþ´GßíÝíW=¿ÉÉÌ*šª_»™¼sˆäû…ï9{ÊûÀ.âÓúšHâlãy”I‹ h_ë§Õ› Í>À~T8û¥LsË«÷'LÑj#Û"’’>jf4R›6—ˆ°U¥µ×lmk-r>4<‹‰nâ8Tûº“î-Œc=Ž7Âæ^±x¤5™A·àa˜E+è‚1ÞÞ³²¥*’ì§LAâò½ˆ}dHÍÆäEcÅæ¾´ÿãôåÄ-bgRQ5Rb).•W ° ÎÓºòaWJ¾®Ô]f B#vâ8Û"–Â#S˜¢Z™­ØÅƒ.Ã䑱€OP {õ¥¨º¹,Ç2­Ks7n x1ÀÍ a5kñ‹þî¾Òˆ»‹ú4C‘ˆ ÷æù«FMH?ª‰²Ë]‘KƵ+s°¥üÆy¶Ezðwfš`õ2½EöÀ½J£†mYøtïá^rR l³žIM#u7Ã6·ý»µY„ƒÑ€ˆÁP_$* ‹ÆÑ!“½ëR浉¨e=™ÏÌýãSÔRæÐ…K ëJ $ki¶oê\øŠzÞGìh5TÃóRñÛ¿1š:D϶¸wDõx¡ÞNâ%ˆ5¸Ï€/¿ÚÜ™§œ|×Ê’K¦ÏÃö¼â-e®§2JxEL*•i9^v… EUé¸{jR²röìvŠçÚSŒW(£Ñî”ÏiÉÓ‘µžžS½aBÓQÕÙeØÿšjJ6f®eC³5s³¶tŒ¨‡z0wSú»(íCkfâØÉ¥jAW¦dl{ X4qšrê;ixë˜Ú1çëùßH + «pŒü¦Û½‰½o†„œiªÉݱE"‰‘u-š7|âz³¯ýÆóOªÃŠòÀWìëh5r€bíÇ:M%57X²CܦÓD®ñ*ê†lÖ JþßD›UÜukýåyh.Œö§`ÏBIqdbÊ)n¿ÇŠú–ï蘨U‹y¥Â®}µ^{amë5žk4œ®‹XÕÜñ2ÛÑ3\³c€8ù¨¾8~Çÿ‰ç íñ€eâ”OWøeíÐE> 4²G'@»A #ÝÒùª+÷e5-)ÔŠMi_lFzWzMx†4åD  FÍt/=™Ý&Wvƒ \u«¡Ž@ݪªZ×0š ½tjlIeȪ$›«q|ì¹Å²ò+•}ây‡Tmà‰»ªbŽ”øUáÚ…g<-£§$v¹.?c¸V3®ý2°_ MÚ™ž¦â8lŽ"@2r#>IâXƒ–…e6Òý-ÝMc‚Ìp©aŸž>­TH×}ò‚vDÓ‹áÔküÆ …#Ÿìu¿‹^;ñù¦©–ÔVí‡Ñ8;MV”öp%C`È`ÚÍ£ï‚6ô‡îæ@rò’¹tÆZx÷„ OΗb¸¹mÜD 2³ÕŸu1& ˆÝ7ü÷¨~g»º9µÉÑM÷æ[Æ•kPF-ËÚæ•BFVoZÀBPh–9åïn¾Þ x8}¼Ž¬å-8Ë\ÞGæÈã€NÕÔ“Þ¯e0¼J‡õju]<û]µ°%æê›ðŽÿø$½yg5¯ôÓ®ßð*ýÇT9°|=W+àÁ}ôŠL)SP¤Ò¸ ®F½/¶(›ên®´9ÏÝî›j¢V·ÛÖôjò ЮâÓj(øcSWúƒREÞ$ R’)“w$áóýõBTè¯ADä—ÑïÌ©|U2¥ÌüM0Ôg1÷ëÄÍFc¹ÁÕõÕYÔKѸa´_­Æë¾ qÖÂÞ}Rœà ‡…-»šæ¸½•!NUä fu*ŽÜÑÿCõÆ=Ææ±Zç›{É[’Sµ”$O“†¿\î},»ÉÓ ‡€nšèÑè§õ!“„[8ˆŽân  Åbç ºÉØœ5J¬B#ØùH¯R 8~ï7"ç.Í;ç¯F±ûh}ð°qíl*tK&È‚®P+t¬d^$”‚4»f‰¾.õ‘Ünª˜Œwzi,^Ñ8Pù—ígà¡éVÇòÊ6œêpÍ|­ j¾ee·‘úWm?Ael©‡õW®æìkÞܳ:D+×?Û€ÝöNÜ÷C¢o…÷'¬ê!((Œ÷MÁv» Ô…À¤/VBTe£š*ê™J.n€ð(ë1‰„1X ›GD8¾ôYªÕ‹Ä¬¢MÈ<Ùø’-Žžs'÷À\ÉZ»B%UTyjf‰Zé3,n›céây¿Á cRÿ u8¿Øå]¬ºᬇð,ðqEåQ:‚¬5£ ]™RLÑ®GzŽ ‰ñ0ÍÜÁ+X{ &ÏhËâÎf1 ¶6µÐêÞ’&œŽ:¨Z„Žû¹Ÿd¯¥S¢s 0ß÷Z‰L'{™ª+jo_´[6•W+òƱïzwÉ{jš ÙP~%Ü®TxßêÙº!Ì®“µé‹¡'? Í™‰ãŠŸÞ½ŸTô?}­Ä°bW½ €Ù+øÖÃÊÔyuÅç‡\vÌ ”;ÂÕ-Ù’’±oå—@-©4À\‰¼Våâò&‰l’1¡ŸÌ@ÎxGeñmL }[‰ Ž· ?Âeö‹¶‘~Øó­&1rOHÚjìúª¢Çü{k`-ñ²E{yéDë/äèâΣ·å Ì¢Ò{¶ ¾ælY:’†ðýìHÑŠœ¥{¨;épËN2–M ›»3PXE¼a°>8YºŒas9E¡yb9îÀÎ{2üáÌüÑA—Ë÷醭Έ fS—vq7†K“Õ‰ c‰Y9&ú<åV_z½ó”#Ôf¸æîãÂDï­îVì \&· â—,4zUóMbšøeÇL(uE‘dùÒ­=î÷ä!+Û.ÏÚ½<¨¹Ý?ie´LMÕ.'Ð „˜ˆp£‚ƒ/™åX‡z­›sÚdîâLÿ ]°ìgKËê¾f·%$;ÔƒXŒÍ„:½Þ€óDíjøï{<è±xÖŒköÈ€µ%kB;í¡C7õÛϾ;Ýå‘V-–8ƒ—tXøQ75fx{E ·¸ë¸…Úk‹—$O€ L[Jé—[u⸋"j’&’Xê?^¾ÑTMÿpALÛeæ°GˆözÝoqל }Ž_êŠæI€ê¼)›þ @=MEI´:Šã!8‚,Ækû€Í‹›„ÏܺU’ƒìØO‰%J´è…ÑËš/b²$=Ð S¢ߪm¯Q.ÈË )¹ÒÒ;ùõf…õ‚â®Õo ÑïÇc¡\«;æ–ñ«ŸÎÀ×¾ ]n³ˆå‹Ã¡›¿5UA—ЧnÅÔu•£öXšV Œ$îŽVÛÔ•£‘ø[Ôjÿ“<áÓ¦ê78ÐNîžz¸(§¾;qS€¤g²éåp§tÀ¨ «% Ô2-±-Äà *ݾ¤EçPÐZºžl)Þ6.+Ð=|Ëðm¦ö•ˆüÖ¯H4©{Ì˳eÈÃT‡}®]ÞêÜI±Àf¸’Eõ Ä/¦–3½åsÌï3ûâ×,Ûe"8B·ë&š”g+Õî>½”>Yö¸¹Ä4»`VŠí Sé[E‹54”—ÄU%Péø$õî¡õŒMΛãQ@YZsurveillance/data/k1.RData0000644000175100001440000000051612376634041015135 0ustar hornikusers‹íVKNÃ0;NZJAEHÜ.@]±B¬º 4 ħ"ޏ×aËM8ÂÓΨÏ&í‰ ~Ò«=ÿ»mr5›Ÿæ#"²d![„­³áÃMöXÿpJT³:ð ðƒ60B‰XÁŠ/ËU]eõ- æ4’ÇBü@VŽá®ßežrÇÃÀ±øòºX 1·ÖÆžÒØ'ÚÅs§³QOL!´ cýJtôè«ûR|\RëìÓy¨G6ôè‹õõLô޵—âÆÂ#ZßC}§w‚}n›vÈzN}v³…©]{Ç9‰â3ÇïÍopHñoé_ãü3^32222þ ü<2Ó‹H¶Ó·ÙJØü/Go‡åsýÔxZ¿€9Q—×¾i_›…:ù®îÜmÛ¼€¡íÒ”7µ×”üÌeå`qï/Ûå]Ø~1¿MÊp ¸ surveillance/data/campyDE.RData0000644000175100001440000002031012376634041016136 0ustar hornikusers‹íwPYÛ·9Ý=3$ 9ƒd3n#Š9GÌYŒ˜ÁfÅœ×,¦³®bÀ„+`T èšVÝÅœPy³so}ϳõ½õ>ß_•oUŸªßÎ\ìÐÓÝç\§Ï¹Ëu[F·0oonbb"™Èˆ$ã­"áÂD11ë®gÜàø±ÑõLLd`)¼ZâÓætîZØ„Îå›_o3ßc~Àü˜ùóKæ"æ·Ì˜¿03r–0r–ÂlÊlÁlÅ\–َّمÙÙ›Ù¹Ä|„ù8s&óYæóÌ9Ì—˜¯1ç1ßf¾Ëü€ùó3æÌEÌo˜?0fþfäó&F>¯0ë˜-˜-™Ë2—cvdvfvgöböcdag®Ä\•¹:s-æºÌõ™37enÁÜš¹=s'ænÌ=˜û0÷gÌÏ<’9y<ó$æ)ÌÉÌ3™ç0§2/b^Ƽ’ù'æõÌ›™·2ïdNgÞÇ|ùó1æLæ3Ì癳™/1_eÎc¾Å|—¹ùóSæÌ2¿a~Ïü™ù«‘51ò¯2³ŽÙœÙ’¹ s9ffgf7f/f_æ@æ`æpæŠÌU™£˜k1×a®Ï܈¹)ssæÖÌí˜;1weîÁÜ›¹?ó æxæÌ Ìã˜'1OfNfžÁ<‡y>ó"æ¥Ì+™×0¯gÞļ•ys:ó^æƒÌ¿0c>É|†9‹9›ù"óUæÌ·˜ï02ÿÆü”ù9óŸÌ¯™ß3bþÊ\bä ²‘/h™Í™K3—a¶ev`Ö3»1{2û203‡1Wd®ÂÅ\“¹s=æFÌM˜›3·bnÇÜ‘¹+ssoæ~̃˜‡2`Í<Žy"ódæiÌ3˜g3Ïg^ȼ”yóæuÌ›˜Ó˜w0ïbÞË|€ùæ æ“̧™³˜/0_d¾Â|ƒù&óæûÌ¿1?a~ÎüókæwÌŸ˜‹™KŒœ-9[ËlÆ\šÙšÙ–ÙžYÏìÊìÉìÃÀÄÆ\¹ s$sMæÚÌõ˜27anÆÜй-sGæ.Ìq̽˜û1dÊ<œy4óXæ‰ÌIÌÓ˜§3ÏfžÇ¼y ó æÕÌë˜72§1ogÞż‡ùóaæ æ̧™Ï1_`Îe¾Â|ù&só}æ‡ÌO˜gþƒùó;æÌÅÌßœ#9GÃlÆ\ŠÙšÙ†ÙžÙ‰Ù•كهٟ9ˆ9”¹seæHæ̵™£™2Ç07cnÉÜ–¹sæî̽˜û2dÂ<œyóXæ ÌIÌS™§3ÏbžÇ¼€y óræÕÌk™72oaÞÎü3óæý̇™2Ÿ`>Å|ŽùWæ\æËÌ×™ó™ ˜ï1?d~Ìü;óKæWÌo™?2aþnä\aä\ ³)s)f+ff;f'fffofæòÌ¡ÌÌ•™«1×`&æhæÌ1̱Ì-™Û0w`îÌܹ's_æÌC˜‡1bÃ<9‘y*s ó,æ¹Ì ˜3/g^ż–yóæmÌ?3ïfÞÏ|ˆù(óqæSÌg™eÎa¾ÌÌûÿ\Þÿçòþ?—÷ÿ¹¼ÿÏåý.ïÿsyÿŸËûÿ\ãþÿeMÏAq# +ëù¡7Ò°š0Œ°Ò†"‚_’q‡d<e¬DeŒ+$«j;3 W+a!aÖ•^±˜%<¥e<¹dGvã.ÊØiÉ8¾‚IÁ*Uƒ‘£Wk4¸ î†=¬Å.N‹±O-vÌZ¬*µqÆÏhqάr¬4ü\)D° R:ðϰBVÚà»pLy¦ñ; ç+°32H#á»eÌ"ff »c ÆK8 OiâŽ`–Ø™HxÚJX!Ic %ü ×%•G ÇÅNVÖ!÷D0òd¼Wð½ÊCãµh ç¼”¯3³‚cj°"Òà8ì 4°C9‰à)¤`¥©`6V ׆U£Œž—±ûT°£Q°K–ñä’ñ´“1£ÊØ…Üs݃tÆxíf }%a„K‡\¯„ï°‚—pnL‘0{K»S*gü+X«J3·Œ§‹ŒÏËØå)ØYkÀ̰ìŠ4XIiðtÔ`ŤÁSN‹™E Ûµ¸ÿZ¬âµÙZÌÖZ¬H4¯ðûø¬‚Ý +l³†Òˆ_a˜biì#Å0&0Ã)˜…d\·8m,„ipo …Ã&PÆ5ÊX%I8'«y;6 ç aå)uF0$ì ¿Žñ÷ô“lø9ŒÒ`–Öâ½}¯ÅXÖa¦C胱bÔbÌk±SÒâžjqLm>_Ï$“ǦŽ‡Ý†¦½ñ½‚û!cu à)XåÉXÉÈ ìäîHmvý¦`×£àš$Œ ÷N®IÂN[ÂêZšÈã.ÇŽ%…á^`ç-ð´‘0¦¥ß-c6”0VdÌÒ2û¢dûIÁÊVƒ§·+< v Ú²F¯´;ZÜ f v§š#H9㸓¯r¿ 6:$ã:\ƒ2fkÏŒcACR%ã3|§²Úøû2îŒ]¨làºÈzãdóW¿^1ÞeKÆ{¥‚¡lÿ˜G<}5ë|§÷Y‡¾ÔaǧÃùëpº¹î«.¯cG‹ñ«…ZÃ{|NsY†àÉ¢`¶×`¬A*è;ó‡‚>ÒøóõƇŸ7fn{! }ˆyJ1ôæ9Šï5!†ÂlˆqΓ^ 8¾äÊž /eÃxޱkVBy|`|j°‹ÐÃyc^ÕŽÆUª¡Ü‹ _´è[m_/Î[‹sÐa^ÔY!ø-~OsÌ8Æ ó†c@ƒ±ªàÞk"ŒsžÆ¯¸ïŠásd˜¾qn+ŒcFƬÁJ[Æx—0IXÅHßxŽ8gœ·dŒ1é÷›an¯6\|•ñYÅð}¸ÿ2æG%ßø^ÁîZ‹y^‡ùS‹9Fµ˜Gµ¸·Z¸®Åj_‡{¯Ã.S‡9T¯µðZ[ŠÇ%vx©LA ý…{¢l`gqn)Æï—1^%O`¼(Æ9_6ÌÅE<§-3Îåž2V52îŒß— aþ‘à†<—çÿn<¯u3^Ÿ‚óÑâ³Úu8GüL‡9P‡’óŠ˜ÂSœ“ß¡Ã=Ñá|tðD‹þÕæEÜáãù§Á˜Ö`U©¼Á+VËÊkc_ið|UÐïJs«4+ »_ ý)ã§<0Þû¿ú×.w6Ž9 Ç‘ñ >KpAúd|ÿ×¼’ÈÏŒ-ùñ§úÏXS<Ì0vL1ÿ›âÞša'j†ùÅ ó¬)î‡)ž/:ŒEȘ˜ÿLqOMãñ3C?â÷µ†1†¹VÁsCƒ9K‹9Z³ÊøL5ÌÿJ¦ñY$c$ßF°S”‡×&–ƹNmjS›ÚÔ¦6µ©MmjS›ÚÔ¦6µ©íÿ¹ÿ0dé“ëM_"Ûg…­§”ö'»S·ë­Dîk¶¾ýy¼~Öø!y¯2‰y’XŸ¼÷kÚ­pˆ.ÏýôÀl;L·(~“žFqŽ·ëwžü:}֢Ȃ‚Ûw+½3á…„œ­ÕôœE|Z·Þ:߆üßÎ^Û ‚z\‹Ž¹zˆÂ–dLØ»`&…uN[N³¾RÈn·´Œñ=)âL5iHî: _72ãØ¸›~¹¤Òá|ðW÷ùÃ{ޤzn=÷Î) îÜqgýôÞTþð…Ø¤‚‘ä_8ôìºÞÅä]vSÃî·\ÉÏǶ٘ǣÈí—·›êVN$¯uK›mêò•¼>Ωºnyº0ŵ œÌÏ<²ü yf¶¯LýÉÝêNÅÈ›éäñðLö§V·É±a^ççß+P©7ŸO™o˜L+[ëœG.D³§„“ãÕ†õLý&’éwO›ìdAŽsµþ#J"½ÝÉ+ß<ƒÈ.§úO†M r+5ij> Rù£w´ê³ƒ¬ûþ´yYq$ÙEWßpkré3V¯ª•·—œî]˜ué Ù®Ý4Ô=ã¹w©nV;y:9”´œs•Èfqƒ]^®ÏÉ9é'¯§«.’çÜÇy©QÃȧÏwß-fä¿â«Å^òÞ]ëKÆÊê𬓿õ rô TËêÖ#(|ÛÓfÂ'Rèñø¥ÛÝR©|áƒÄÈ3û(xé³ø¸3)$ÊašõñÛTîsãÊÁúpA—Ýó¿á¾OªÐ­úY oÕÃ.8r*…qíß~^[ *ö¸u2ZG¡&/7TôêEÏö®o±–üb†i΄DR &¨ê©ÉîxßF¯˜Ÿ&Ÿ‰M÷vtî@~ÚÚm{~"¯’;¿Av¤¯þù§ëçÒ0·½k1m9¹N±*:’çIîú§ü1¸ 9¨=¨í‡­äÕñù÷¶µ²ÉãNÿ¦Ò…1äÜ¡míŒÊd?õÕq}n)rRî$TkNvQýÇ›„½¡²¯ö÷°\’FNÛïZêk’¾¯—íî=¤²)ú ´'Tn½c^ß&¥ÈcWŸµ_¹‘cllí9·“íµ:ý’wzQ™œíÎ:M6W"“þ˜†~Xô¤o§òróg¡ Ù?»¸¾.¹*!1ŸÓ¯“ËÞ;µ²\Ž’{“®¥%‘—Ö$p¦Mòé½!M߬˜|~Ý?z³+ùÌü®æ§?ȻϑäI«É³Í ÁA³~¥€qîíS Íö¤?HþGL>Î+úÆŽž1åÞl Xu{ôèJTþê«×W¢wPh-÷ýï4¦»™-éÊÉÓÌ|@a%‰û_¼ØHaöÔ¹]¢°M҇àGŠžñ’‚^§þü>“{”.žÛv0ù˜ï?fOsòÓ¥ôøp‚†ývfð´×ä—a34Õ®¹Ÿ¼6 îIòݰݷj½¥ä§éñç— òœÞñæ˜A¤o•=Ð:f9gŒItÙ–œÏìçVÛŸœ šlçQž>‡¾«“hFö#–õÜ–LyUÐò)9+Y×X²#×¶šˆxÛ)¤¿°äë­¤­ä蚘ڹvYoÚí6n·%Ùí­¼5gñp²_P~FÊ;²Y¹g’ÝxK*3+¡ û2w.²ûx*×^S±j‹Rä¶Ïr’©)yÚÏ›:«F/r)åC-¦&·‚+þÑ‘SÈ«KÇe„L!×¢{Ní½I>Ní\>Ô‚|-jÞ;T÷y,Û¿öu#?ò©=wwŽç ¶N,7*>‚ü'úXÝèyù ÈM>KAm®ÜZÃŽÂÆé†ë÷~£Ð;”µåQðF½M¦{:…µµ]Öù\K Ö9î èú’"êõëØâ½?•}‘Ý©AE œôvèä>æ?þÏ–ÞÑé …u”[MŠÙNaI1}gúPàÎÊ÷ý‚—“ßùä J¿$ÿGûnuóœJ7?öŽ_G>erÎ6(KÞ{Ÿ…UZ8—üÝ;Å[¿L!Ÿ»ÃL辑çÔ®î jEúvÞï/½XEå Ÿ¿Ûd Ù뫾¯4ý19Å;•^œ,ï\s,L }â ‰c—üL69»ë,Þ?ŸÊÏM?ÚœÊd‡yW´ÙCå"»ŸþzÞ‚L«¼ý_TDeNywY³ŽÈît÷/O×,%ÇôßÞmµ•lÇ;ž´£&•íóÑ®íÌÉd;ù|i¹$…ÊÒµ·ë*¿'§™Y­¦¾Œ#¯Ì#½æÖ»GN®ß.½ù֞ܵ£F ÏÜéÒíR]ÉëÏë3Ã<ê‘—çÞŒ!É{VÿšÚ¯"ÿ'ªùï‹#ß"ëÕ^Oæ“W£uUs'<&_“Ì7“kQÈé¡1Uë6£°ƒSÒo‡í¦ÐÎëGí³›Fá ÏÌ3-_–Ââ-?l9p†ÂÒ¬s¦ê§RÄ«SJŽ>¡Ð´‚º£Fµ¤ J´sÌm ]ðKà¶Ý'(ø°éS}½0kü¹·-o éöµÆ Ijøiäº Þ?O!["œ#û\¤€¿9%xµ ×’ØŠÛ¿ï¿Ò7/¦€Ìü~&?¯%w뛯Z-&÷?‡Ä–u û“£’¼ȳʇ 3²:‘Çðø«Ç7W$ßÇ,êÞ¥"¹ZO,ÚŒù2æR‹“>“¹»­Òô ¹Ï,ŒêÕZǃ#·&/!÷Œ°9íߣ²fóf×ëN®5BïÜóŠÞÞ*& #ç‡æÏÄ]ÌW-=ß«_‹ÜÆ{ؾjz”Üêêñé-¹÷*ŠÕˆœæU±lu‰\Lzì‹ìÙŒ\º†Øå¥N&¯æÙun¯éO®ëÇ(Ÿr†|úÝp;ùñ+¹}–mÇã¹ä·¸ŠþÒZ Ì'æ™»'5§°”vkµXHQ›×Ü£ðI¡m\RØÔ•™Í;SX÷™ ûëLåmÓ3je¿¦ ÉY5ÇI¡žuî'uÉ ðA¿lŒµ¶¤ÿ–Ée*-£ÀvÊå>K(¼ejQ½{)´a»îË+_§° Çz-Ȧ€û{΄½‘Èé¼WÓo’¿.êiT^k'­Ü¹3üç/zÜʦœÑ3×Óí¨ýÁ>äQò$³Û;ÌwneY\[E^-öw¬6¹UOéæ9J%­ºëÒ/¬Ñâ|ªLú™/¶ŒzIî[‡ôþåò(r˜·5`yK*³sYêÑŒad÷(aò™ªc¨œ¾¡ÎäŠ é׉λ¼¬È½ÿ¨]' î’sâ‡Öϱn˜¼MôK §eÑŽ{מ#Û£ ÚkÍ‘ËÑÆ¹#+&‘{ãD]+O_rÌ/Ÿº5,‹Üêo)Ùðe(ÙÝ»k9°ÓMr¨7:½G`!ž—cÎÝ<7œ\ƒË´¾Nn#3Vv¼@ž}¿øm¬Ù…¼öçÌã‡õÁ„™3O_HAû‰û_’÷¦ù6SÈ­{V)N‹)xÅΨs Èïò‡!sO­ À·¶ßæ¥à”±KöPHdÐöާý(xœk祩c(è\Īmòf u¬¿õDž…¯¼U¡piW D1VS.P°UÉõ¯nk(8ê¶G¯æQHö¯}"S4êÔäGÝ6T¾‡ã°¦ŸogžÙꬮÇÈ×\™£Dm"¯í÷*ïkt‰,¾};V2Ž|‡ÅÐÜ_G^S½ªÍ‹ý@îŕζ>ô…¼ÿˆØç3Öuusö|Î&Çvýßy¥{‘ýò 3æ$$½mç¦?{f’ƒõâ€!¢59ÛUÞÞ՞ƿ®ìsÝ”¬ošçú_É&ó*ÏG:·!Û˜¬e×ã¬È!9569·?ÙDW²žž7€ì;nÍÿ8›l“œ‡<ÒgQ¹+Ag6Góž•´¿x¹4™yáÛirõH­ݼ49tûyÆü÷¤¿ÞbtQ È£rVÞ­3òn¿Ù9gÔ ò²;ݲˣqäÑ1ëÐã'æXMs/í·|šÝ¹X³o$ùöXñ,<½9\­zz‚Ù$òæ½;:î#ù˜ß·~ýö>ùw¨˜’ÐóÌÅù™¿Ç…l•Ù¾è¡Ù"²<ù¹FáÖ²™V!Rê=—ôîæ&Ô¡²‘]޹…}%åÈeç %äî¤+YâM3'¹îs,CN[ö(Éöä’7û•d÷Š\-j]=¼DKúž1G¯©J>•®ˆá·ÉÓÂ*¿ í6y>þ>ãܸ_ȷϰ IæÃÈïKÖÂÚo:P@@QÔ‹?)ÌÙÔªvØzò«ãºà@Á ØümÖÎx®Ÿ^§=ÿˆÂ*M˜ã½r3…¿}=ÇßéO ­QzÔ¥Kc(ø}ẛMz`J¿åÍ(,ów«SëÊSXLâb›Óû)dhóÂç—îß•êÉåÎê(pV•þúÉoA3¹ß²v0ªyÚô¨[äÛsj÷îË›’¿½ãä´ð,òè9ö{w™\/E_:Û™Ü7\‰¾˜@>õRßvQ|Éã±s»úxr·-\µužÙ]¹ú¾]»wdYÉþn¦„ìÍãß¿¬žD–‡ O~½ˆÊn¬oº}Ò;*ñ{^ønrÈþµ½ø1¹Wþ:ÒîèBrhóùÄÓ²ïÈÖ¤èz©=»É!ãRŸ•VËÉÉçAóá)1ÏY/ìWœJV{þHµª[D6G=ä³÷BÉþ`ÏÒǶ¹“ëjÖd“Þ±o³ÞU-È˶С笉ä¹âEÓiÅÑO¶>¶Nż=µu=ß©ä…G¯'—.¥ýŠÏ÷#Ÿ(ûèz; ˜ÕÆáÜð]ä½£ÇÌõT¾ùÐåsž ò§&í¸:'•‚*ÏÍþyà^ ‘ÙyEÖ JËjÒp²žÂ”ìQ3˜Pðí‰U|Ë ¦òïk-Z?üÍ:éòSx~Ùó<*Pp–Ë?K^aqx }x,E´ì•¶èÐ Êüý•åô1:}iDH£ƒ˜ãWsö‰Ãä?GI?\\DÁÇ|‹/cÜÜøz¾¿sy›E‹ØïÉ-«Úœê㦑wÍäR1¥ãÉ;ÙQ·¼J¹Õ˶üi=é-½÷Í_¼žœó÷o_s¹Mxš8tÕ rZÒ6åIéw™[§»Õ"çâûß|äÄW†’‚nÃßu…¿Y­/¨õµ¾ ÖÔú‚Z_Pë j}A­/¨õµ¾ ÖÔú‚Z_Pë j}á?­/ü³® ÖÔú‚Z_Pë j}A­/¨õµ¾ ÖÔú‚Z_Pë j}A­/¨õµ¾ðŸÖþ»º‚Z_Pë j}A­/¨õµ¾ ÖÔú‚Z_Pë j}A­/¨õµ¾ ÖÔúÂÿT_øŸê j}A­/¨õµ¾ ÖÔú‚Z_Pë j}A­/¨õµ¾ ÖÔú‚Z_Pë ÿ]}á?­+¨õµ¾ ÖÔú‚Z_Pë j}A­/¨õµ¾ ÖÔú‚Z_Pë j}A­/ü³¾`òÿÏd­Wÿþª¶«©ýóc7µ~ì¦öÏÝÔþù±›Ú?ÿ;šÚO?vSûçÇnjÿüØM퟾ýUWPûçÇlª??vSûçÇnjÿüØMퟻ©ý󿣩ýôc7µ~ì¦öÏÝÔþù±Ûÿ¥ÌÿõÏ+¨MmjS›ÚÔ¦¶²‰ÿ0ÿŸš"ýu|ÅÄ ¯fÇ&„ ‰Ü{ 4/$*!•‘*HU¤‰D!Õ‘HMÄð—FR©ƒÔE¢‘zH}¤Òi„4Fb&HS$i†4GZ -‘VHk¤ Òi‡´G: ‘NHg¤ Òé†tGâHO¤ÒéƒôEú!ý‘È@Äð<#C¡H<2 ŽîÁHd2I@Æ c‘qÈxd2™„$"IÈdd 2™†$#)ÈtÄðªÎDf!³‘9È\d2IE ‘EÈbd ²Y†,GV +‘UÈjd ò²Y‡¬G ÿÃñÈ&d3²IC¶"ÛíÈd'ò3² IGv#{½È>d?r9ˆB#¿ G£Hr 9Žœ@N"™È)ä4r9‹œC²óȯÈ$ÉAr‘‹È%ä2r¹Š\C®#7Ã_–ÜDn!·‘är¹‡ÜG ‘ÈCä7äòy‚âï5NÏ~Ãû98îï˜7 «ß{xÿ¡½ŒW!•ð‰ÿ}5æ8ñ¸>ÃqM<×ÿ/Ç×bvh½surveillance/data/fluBYBW.RData0000644000175100001440000007402412376634041016101 0ustar hornikusersý7zXZi"Þ6!ÏXÌüw¼w×])TW"änRÊŸ’Øásef,öž•ÛÅ¥: ñî~Ö –Š2;œÍÅru¡yhÜêq—LŠÞ!„6rö@20ƃïf‡c)¼ø„½Ø”@a娴`$wÝ óZ‚ÃäãX’Íž(QÓûÖŽá6áz"Ï’ ýMuæ·¼ù2:çHÉ|„è„ð¯9@f`¥íñÕæ'}Û/ÐÊT¤· …•(,cq™GÌi,þÁux'teɦM7ŽF•‹\%o}§Ì{P!Àµ(ËÔaoûØ~¢_åº<é!m¯R«ù¦Á^qzÅe¾4¦Ù ¾ãs8ójW!\.ý’9©¨/@¹Ö#Rˆb‡ê¨N].ä"9лoÑ¡d·ûû5߇üœ3!ak¿Ä Rúí<è•ík Y·]úçû›eA=ÕKņ„!uû×p_"—ɾO6¼}]"²ÐF&Q'ŒÉ¡¥Ž÷ÁF?h˜5"þW@TŒøúÄÆs{ʲY×â†Oè(¿7ÓO—Jì§B"ÿCa/Ħ޴ëGÃþŽï>ÿ´ñûR˜È2ïì¢?¥ È’[|0ë—>úÏ‚{ÔËvWŸÍ-$`…’Óƒ'æôò(lŠËØ·îÝ8Ôók.Ë \¾N_(ºŸífðà F£‰\¤ðr–ñŸ…ü*Ng>ßÉî3ÓâfÃŽn&?.P¿×ÏÙZQɱq4¤Š`yÁ{än+†M[‡¼B*€ c‚5Z J9lûù0„µôDEÿ¼³»ÆMRª¾8„ž”CC°¥ÓêöD€m]yåý*°¦ËÍnÞµ=Ž[Y¶èÐÈýØl\™R)]”kž!V؆˜¬Ú$ô±ª(†R*ià á$°Þ'oEJO¶.ž"Iû«¶ÌÈêœqÏC„J”ò+î#"ä—ãç|'YìN´USka›¯‹WÖ@& x®Aîú¬ÒïðñqYü’ ~ §Šp(­AKKót‘˜Î5N•‡+Á sÒ”ìí´íà˜ÄZ¹¹É-¾oÌs°·ª¯ »[ù‡È&ª[å3* ˜ \ÿ¯rrŒxF¶û½TÙòEÙ—§#f\‹è£ƒÍUÜp˜º·qêÃ4S[—´Ô¬XÓ†ƒMEÈû¿ÐÌýRËÕŒËÄ9–¤%›9F‰JÞ»Š)Ð~4HÙ´Äã¼¼7ŒˆàVÕ…5€éÙUèn[Ç2âK¥«o]á¦Øa†ë´ÀàáÈ5î7Ë9›H‚~"3Ô—'aûÌ9ÄY¿! ,æ«b€öâák  [U{Œ€´åÖçË.à› øå„Y5‘ÈÝœÂðš/ ñË’ @ð#5®’+œ‡}åú±m“Ó¾ýÔk³ÈP›¡V´ó7J¥Ÿ%RI¨^èìŸõ™½ÄGü‹à˜©Kj×2)ûÛc, B1··Õy}€•Rh´"ÿ]{’¤ßµ'ì.ï“¶,UŸÇg¢AznȈ¿<¢­vvº¾B®¬} ̶Ää3šÞ,*o[Z|iÎV-ðЛ•(e  dÛh3eî\&³àÞXŸè2¶Ëñ¤cƒAaÕÂ4€ýªY<ܸ9bìV‚Íôa[épDBˆ ®¼Ùï ­ZDè…ßÄ¥OZÙôؼ~}IŽ}î´ œ¡E_‚"wðà• ±¨2âA¹hac`+¢vs²Ð|¦ cªóöâá{P_!{5ç(˜RÄb”mJt^y¢#™Ot3§LbY¦‡aD\ˆp°A:bë-}Àÿ¢Oà(Çþ/(•«ÐrNsf—I3w%ŸÑhUžó¹.ZêͬªÃG¯æAHçð:IðÃ=-|(AáÜ÷_qõ„:“Ð0ã´1—­åb¢ÛÆ!ÄËüs³2T‘«Yh½h~ƒÐwñ*ܺTÇŠâô˜3,´m[»nø²Šîû•É»ù”“-y±·NH΋¤Eàw# Š‹¥Ãy²PœóÿºÓð— Us ȨhéÊŸRhqYq[àOOçLçtrjñÚ%UøÓäEâH¹Ž™”íy/Ë7h¬«–eC›:0R[ft*¿Q°Œýò´wÕ ç C¤‘‚*$Ò>ÿÒ:¯¤T£Bs|Ã$[WÈÌHe·@=—%‘¤pñ˜&½¤=ð5" äÇ)›´~ò}ÎO~ø›þÃ8ƒ"?ÄŽJLÍf¥Dï&mêô—©Z™Ú¥Ö 6õvíxÕ–çõSGÌ÷ry+(SôÐJ–¡q4þ̽ÀCd¹àn‰ðÏñPZµ Ó¨Icä>(Xâê¶™¹ý˜‘-ÕA11”ñ‹(ÏK¹Û-1ß„ÏUq\†Ä€ xãäà‘“üäÉòu\ÎàOyðý Qð£o ?VR$+nPè8 ›*>#XÎÙÚ÷Ý¥QéHÌ… t†/:I‘>’×ç[ëR/(0±}ˆƒº$ NU ëAê(¦;¾CyîÜñ\ @K.;oKOì)2àK…pîŽIŸøÇ ¿”ú¢MÿAÍ@ê¥ѵ :JÒUû,µË¯¾TFÔȶ{-C-O[\S=4¹ýßò!èÝ#„˜˜ƒ‘ÜQõ’ä—_õVþ‘Èôô_5IhѶL–=Lext«†¿¦)ºGÖ)¶à¨§óQ0oõ•¨4e—*!Äço»%¨=ÚhņdÑŸ”B³}ÀÔÁAyh´1´q§P˜{HTXº'Yb’ÿ¾r#o „ŸÏïáÇn:†-ÞеنÉœ|Òãz®Ÿ*µ¨ä„†_¯­~XYÜ»>µ¨ŸÕJ±‹Ò<“Q}¶·ˆ‰D„Û÷(yÞï¦Ë8^ÅÀiƒ+¦<³ù ®([Ál‰Vsñ(/Ý$ €mª1˜]BŒð¥·r¾~«ó<:ë ¦~—Öܰ͜?IÅ禂X\ŒþôæÆ‡í+Cï…žÔ+Å­÷n€±)‡w]’Ö[ZH-ÕÈùS‰Åôæ¡û8¾CÅšõà:/±cm’¢2Aw,òC «ñçCär™žÍMtû¶«ŽL1Í«X8]Qüpeã¾n$iÖ%¾K”ãYi‚Ì~0x ±Â0+—BçoäØkZÞ€h1g½g}¤” ­ÿõŒëÑ4ž³ð߉÷³+¯»ÕÏzȲ%PŠÖÕf(×™q‘½½\ÆF<¥VU\ÿG>Y³êãYze‹a÷Kjç‹ìÝnê)ô}ÄNB[ „7j©gnÒÎìž:"+t|ýt¾%Tf|3þʇAÁî¬;¿ øF`ÛCyÕ¢à¹"…á‹jýzÏè×âZ«Ý"\¿‡É·².q¤¯)“ïÉØÄf¬;lÒ=F²Qƒê_.½Õq),E”ìÄÉlÇÈEÙó8¬<¤Ô ôë¸K3eY=/ä4^UË+zS iÞ܇üáe‚À©ž†{à¯jBu›C€š¶}Š8Û|é¾gݪj§ÒÖLÇt}AXÌ4Ï‘©Á‚Έ›Á=VåïžÆ,˜þ¹¶¹SËþ"yiË£ÃV8› Y/rÈŠàÇ¡ˆ";y| ße!ÞÀDÂ{Â] ²FÆ£hÜMBÄÊ žB§”©8Z€h3š\öå­Mæô´3z?XZ1|F±Þ®GÓb$^Ó.HÈÜw‹šœäÒ.×/#¡™™î¡YG2þ¾‚ôuÀáúûYùyDjmp²ý­Ômêí–ÔûŸóHÅtç(HZ£p^šA#?Ÿ(«¾§þ²JÑÒÝ•¢ÂŸJY8m·¿ããÁ™¡7u E*ó hÑr(ùØ|¹ þôO¶¾ÏüU{û¢´!4™Iq9ù+yéä’ÍâÎÌfF?V[S[VkëR{ Ê<&V*þó_´]›xŠ¥AœáGVÔW¤ÌoK?œX-èå#mTTi oñ0¸4!’P<‘ ÉlŽP€Ã²§‰võ£>-´Ëÿ½cp”÷”7´æ5Q²¯ qª9N®ÒÓBðÂÝf$`΂j_´­²šL ‡¥È¥¿¡olc|¢®ú’‰‡ÍžÈ¹¤T™š^}ïY-båN¤TéˆÒáÎñ=‰‹ ´,òù1CûTJ EoÆzcl♹×ë»S ýˆ¤ uaDä ‘Ib€Na)HÓÛ~›+kÒnmÏ`)ž:”ÍeŠu'Ú\Èøÿ^+Î[Ç"³òž~p2×&—¡28î•–èßëe+^»•ê—s rim#¬‹shmCÁçoH·L*bÒ'È´´LTc`Q¼Æ™‡\ä'¹9¡w *a]˜Ý#ÌKèPY`3±vóvù UuAQd=6 5ŠœWB®ƒäõ†Hw!oóCyy9¨QÃU·[óòê™êvàãeƒÐ~òd§µãGíàÕ(Ì8ë™Õ¦ñv ñ\[|…Û!âtžÔ›b!U`Vì‘:¼úe`?únÀglÊÞ‘‚Î-frŒ~'†ã0Mz2û.´NJ`•ë¹w|-ñºñz`—ÚæHd7=›\ÖOΔœô}*÷iu -ÛÐ?¿A7nHÅe¡£v¿Ê´æl ËcÙ–îÿËQ<%xK’óCu“]6·1Aøãqcë[©¿ÓÚ‘Q¼$*ôtÄi•Î$À‰–ý'L—ddIÎ;A_göõÖ,oSÄ–šƒ¼«Íèž}âRÞ5[Z­iéÞ܇ÂÜúUÓ`c˜°nf©•X· g̤¾5«à¹Ì/Ï&눢µ¾&XšbЦ_Œ×ÔWºOÍ­¶[ŽÇ|æ³µDQîšQ9­òüÂÌa't—ˆÇ2ú’ØQ=‡ŠšÃ¼òÀ!  «UTv](ˆÒ 6&8ºä±Û!_úI®\.Gv"õ KéNãÐv Z ³ñ¹MàC9qOâ‚4(·¯l…LZ‚&CƒÉðz6Ȩ]Äå¨]6ëåpPá7vê9¡ñ+(cÀ¡1d¶3Ùš¯{ÌýêÔ¹˜Ú=ìá~<'ÍyãC Y¨úÔ¢M©"x{ ËçÙø1ܪŒC#L> þ ­%`é¾›@…†×çØÄ¼^6æ\ΔmÈp§Tò[¸ ¼úÝQA¿=ºY=œQeo1©4»d¡ÒÃ9{‚ ˽јÁª`]Ð ¬êæhÔ[›§EFx‚€³D›R,‘;•òt+Œ¡]…Y¯ÏÔ¯~Jmú$=¿ƒÚl¶æI"ÚÆm•BÊœ-þ’‘ÏŽ¿Âíh!^¹ýã®TÀ"ÓK'Kâ€cô¦…F/w Œ½¾¾ÇA†äʨ‰Äý^ø“ 'DaQa˜;NÐÆ)¼sØàûη)s³Â²ÅRvKÎÒú¡œþ>©<À”×Ð's­ ŽÅ÷ÞT/AjÉSx4rÏ]IT8²üoÏ…n¤ ÞhŽGº lq,ØWülMKæfÕU†âËϧÆÍu¡gq@YŽËãLÖ gýq4"ãBàe–aÌወp–¬eyŸÀ7ä<…GÔ(˜èQ̱eœªÂçºÏ÷½IéDdãÝO¸Ü€e÷|‚y]U ØósËðf™fz«¹%0_:daFbøòêÒ$¼¶Mßs&G†ªì—'Ýô wXÔ£ªP±¸Ú[ÂHHË“f4P/ÕËaöikÿÏžQqsõ1¼i;“(%qô32ÑZg”øì^Û"OãÏ»ÙcÁ\ž,˜q麴ä4Ve¤¢û5N\ëmæ³¾ÉVBk‹ý[Èš£Ž*¢tŽq†°´ºXÖoÄmß_¿ï§V*»N#WŠ€›#×ÜR`—¸UF?,}ÙúGVù—q‹Á„1°Šj¨âö<âvJö'•z?\°àñœû‹Ì~}Ïï ã!Í«U…º/Ëf¾–rZ´Jý‚”‰Û˜8¡ŘÉïþs~.!¹×•O?¸Ñ¬Æ~7§µ5¶hß3‡ÃÎæ5{-´ò(B"Á%Ñ@Þü“šû²[âݦ<òÅO\CʦmJÍN"¢v4¹ˆ6Œ7«ŒwGM\µ‘:UWoª y›F"Ƙô>$HƒM©iýˆH,ÝKhecÌŒ ÷<8Æ0±¿bŒ@+”0¥ê(»~ÇÔö´g:²`ý2“ ú6ÈXýÇÃ_¼‰ ( a+žïõpé¾Ç‘O*Õ‹B,q+[ÝµÊøÙZbš)"í¥Ñ‹Ôú%m¦¾íË¥"VÓUå ´ÛK5|u£P³P¾sNrþ b¦ZÂþ§‚û¯°š75hvð¶úü4$ò‘!Eé• (J\,åDœvÆ©SÂP±€Á¤uæ´š ¼Ñ ¢x>zÆØ•ŸŠ|üÆWì‚V¶–KÌà ±) 2ñÔ—Cc"à±éÜ%ŠÏíHD¿ÏdcHÐ8Iö9`"JIûl~ß+˜—¶\Ì:Èí#×5ÿéïiî¬ßÑÉsìR8\®žÙçÆz|yŽ¡Ï)IêñGtXÅÆ|…"ž?ÝšŸð“1EæqAà8Ö¾…jÚRJaè(ŠâÏ›¯iŽEoósÏ\™0S»ù2‡¬ýâÀ Nv| ™"ÊV™ßÖ–BzSÚñò·’\ûùs™‡J_WƒS`¢ƒ6h0ñc•Lu†¤«c¾,iéÐF.$™o²Uß ÍãËG¡`QãøñÉRËäò:èYGp˜´ò¿¯7L‚åVû9í#â%ï“$ vËÁÉHH^~h1çDåÊdà»rãp~ e#Šœ<~]©hIhZƒ³ŠVI,ö!üØäTw7ï/tWú„Âb;À`6-ê9+·F#ûÎÔ´8ÓÀt‚T3«ô€úU!ÖþLm&žê<”7QÍ®oMÔ¥¸½2XQMe;x;ÁÊè'—Ãú–UªŸÝ)ŽÕ¨ƒ°Õ˜•Rëc BXù‡j@^1 rÝãem'ªÐ+28¥+Cñ ¡G \F›þq‹‚³ÅO ®YÛÀX©J&¿ÿú¸T•&qO&jåm}DË’”8‰¥/H¬¹[.ñ¡-N !jI¨Ïäy“MªWT¨® CÅä P\{3f5¿êô!§Ôê‘?”€»e¢.çÔ±jjV\ݹaÛce´Ywm-ï› ÌÞµRô8´‘sK-±åµtåæÝs«jðÂÞZÝiŽšÛ´ê…·bE”謺ehkX}P«q óFöÃ?¾JÈÇ?Ó†.Éj,Œ‰Ì™ßUHQ`Þ—Ã=¯(!ã¿âò*Šœw‹A•y˜¼P S>mçj߿˽e†sUï&ûG3LD¯£uv%Ÿ89\ÏaË·Ø6óæG³ª<¡ÜÖ-ø N‘€¨k©ÙŽTî°Š?d;߇yóÝÀ¿·|Ķöd‹ÓH60ËÑ¢n:ŠÛOùã<âÆ×´IjÑŸ“bñÛj!ÂÀŸcÉ“`Ãcò «±H¸v h²€#0Y8.!ÊI„ÇŠuÒ¹~d"Ï<ÜW`¢ç)>ázµùMQ°/¦§Õ»0KˆlBˈ?\ÐN¯&(”q=$ápž§#_ì(Ë…Ñ•˜Š~*‘Ó.aŠaºC.i€ï #’HwšUip`?tŒM-¬Ow$G½Úª×½znÙ âDtP7 ŒŠú©–n¥¦ï7σ:Ve~HôÐtVhà6s– B˜ >¥0‘¯xGÓvJŸµWU8œäÛT“„5¨s›?íα'\Y†éfRX¾év¬YäÔØ]çŒÍŸ‹²¹JR£ââäÁË™ý}š~§ÆÊ[1Î2LéHb¼mVy-ŒZft/…¾Â¡(s…ùºØÁ°Ã«ÙÍKú&x»W$›IàÏsÎìçSµJöÙâeÇw޳"3}å»H#°6àò:HªyR©¶Ï;C‰ŽcÅ%öØÏ¹E(Ú’ªö,1—–óƒRCÈÒÍF–PI;ês‹˜4m x#›^þc4‡9 WùNÃ/Ïò‚¹ tÏ„Õáig2mz(¹™6Ï|ínÑ~Æ9Ö0Xk ¶>í×J–|PµÐÁ¥9&YWàrÒê‚ &™†i,Oú=r‚ ¿2–ª½~2lJª'Ë甼wí]-é!ÖI¬z ¶÷'Ž_$‘’UÄv]8¬¸yÎpý¯ŒIâ?u]ªÛ!uÖ Uý—qà·b.LñKé²( gP*¤?4µ•um¸Mb1¶ûÙS @;£œhxAÜõï+Ìæ½.©Á?0‡oÑb¹]Úöl´¶ßLœ)²±ã|íê¬e-öå%~w÷_—葵ê´ÞæK~Ðbt”ZŽxÕ„ÉW0!09’bÓ üÑ=j,ÍíØ¡]J×;¤íO7G!á1¨ ‚ÊV³ãüI[ “ä¼Á^TPW«¦Ó%gOXÎ(MZBH;Ik"ñk5(“ЕDkäÉî¦xÉím8ù´¡x“‚ð;}">Ô– ]:6\0õ-˜<#§ ´Ô²ÞoøTCª²fZ/Å©G®…E…T&79õËlU³w¤kuç¯:Í\_67PQ¶å)u' ûøõÛiE@›‰ž{ÐÕí¶\ ãÔ›‡ì”“œiTöbùŸB‚ÑÒâÅüU¬øÖ<×þ‘p{ö¾Eƒåu”•Òåû<±boqÚÈÌÈÍ.7Ñb¬›ó£Ò V”ÙífÐÑb#Œ-À F¤X_‘ÛMÒcÐÞ;ƒ —!;5˜ð“áøy"ƒæð}þ$Ú‹is&Så§µ&àH¼Ÿœ°(wBIî.hø?€”=µ…Ï)Hú4xÿBG§ˆRQÅóòþQc>Ø‘SOßËÒôp¡ ."Ïö,æc~{;ÆÕQÏŽ¢”娦2†\‘ÿã”KZXvMÂFâmÁN›ŽTÒmù(ó®*rP£&&Qü¸¨6¸Úæ]"wÆ!ÊU"0¦h¨3^Xåû[VEÈGÿWW_ °Ý"$SÏf [Ö9Ö2Öð:- (ƒîc!÷ËÊÆ[éºýŽèHßÂçË™‘c$Låܯ â)!­jnÌÕ™Y Q·ã¶¬LÎ*ß|„û:DòLÞx‡² ôanÛ ·WE œè“‚¸•Ac04øª¾=¥1|„hˆBS‚¾khu©1›‹cÑ`þš@™–0¨ / *¯W[|–†¸z-£°æ JWߩ΂*‡d¸Fðj.`w½”žêʽ[Aje/ð.åºÉ[.AÌsA™•õY§’ùÞÿ²ê¸¢ÊŸµÌ¬Vþê)Ãć:°aÔ!Þ¦ù“FSQâ!þæ †Þ7r$k¥j¹1쀓3R˜¥ÔV)éÐàÍ>˜+9<ŽêB,Dx\  òUÕú’¸¨W‹sQ 7 QìSzŒÒ e¿€ÏË£z~,û«p §ôÇ®ë¾M¸¿TÀ$q°]cþ.”éºFfxÖdæL5¬9•³º’Àwq¢#|ֺѤñÅ>ÿ0€¼°Î\Ño<ž‹¸MÓ(êpü|I€ž Ý=¯½/9†6P$,füvQ(ÊÆ`45FúÈ*@L‘Ípqˆ¯Oè@33©Dw D–+sOÊ8Mæ½"ñ˜Ð¼HpŽ®ºqK£+’špIÏ%î¤åŒhùÍÒ Æ*lµ_=ÎûM ôÜ­…JŸáqNóŠãu>(ã­è&M ³t!BI$‡ ±Ø±Œ–¼Ë Ø;âO‚‡éÑ·&Lž 7[Ìúåh]â_&€h^Ø!4­FŠÙìÝÀ¬HÐÚ9t^¸`µ•­ƒ¦ 3Z‹…Ç,Dò ©ýXH¨+‰+~¢ŒÙq!Ñ{¬þLÌi}Œ˜P.fÞÝõ˧ŒÄuƒ- þ¥ÇmXzÜÓÇ) =[ÂÖïu˜_Œœuè*`e-†>¬£ˆâ1¥J¨¡Ëó®9«“ØŸH+Žø= žè_S¼¢ˆÔ<1 Êt54ó¯Ÿívéä;󫚉¾@*t]µN9ƒvÖ%(Œ±TÄ”\»;к•maÉ`oŠ$‡¥Ÿ®öŒþ%ÓÑš3Á“ö>† \” €Ñ˜ëø…ÚÕæ©È67âZæ0 9Y ÑeÓ-µê¨4ùŽc·\Ð(HôpF¥‚Ëé'ñ˜á–†É»”Ê3¾y¸ ž0 –&´ˆ†·é0¾ô²u• †?dûØäÒ˜"¥¡ A¹ôˆò?ÀéèGE×ý; &ýÐÒ &tèh1¥¨óO¼3U¯¹Uá”§êùŽüÝÒo!˜Ù;ê.¯Øþh+_õ¶\ùü¦’ãÅ’thà¾DÍF97­[ÊË“ÃÇi[_’^í e#»˜B¥^®ù~òy},Ñ‚qh´àdÐ „‘~ús—p u\[VÂÉ5ÖÍ7ÖÒ×=C7]ß|¾ úßêŠÇsÜ a505¼, â1eßS&14vDDÃG¿Àòdœ›ä7¿Ð•%ÐôœNG±¯FlßleDTºxÒ€¹¡ N)™3nÁ2°Gýè ›»£Ÿ½æCÌÿÇòì’W*3í¾ëÀLuÇçÇ´æ:ýzo–ya1$ìB͹˜ ƒµ{1–R­2ޱcP•!àÿX„B-<_ï0™%Ë{ž^ª×|ì|bƵùë6¼—J¤¹þœù8{#_ÃÕ–r®èd×¾[æïXïY—_O}Ô=îh,ÖeÔò¢–o²™ûyž‚ÙX§ô$°ç$CYšOß“`ŽY¶Î¿l– -¸¬hƤeºR÷Åyab&éªÆÇ‹NÑy«ʽì†Ã8º9ÆT¹ip]ë½"ŽPYý90Z+p“[ƒøí^Eë>üz /èìÛ¸Nkêú‚ ±%ዾ~2ú0Îû™ŒÞŠ;ŒØÍ Ü ’é§gV„ìÚ"²…úe|F½ùVÐ?Êoº®+¡Ÿ Uúò†Èà2©}]2ð®×U\y‹Rë%ªxP‘SùÀs"” þ/ÊJS¥±/Ìg}ŸR§¤Î¯ª¿ˆÙïeØÙÅ¿!€¯E+¬d  ¯û[]|Ï>¤ëÁ¡‡VŠÛn4ç÷0SLY7-ñúæŸE°Qœ{}æ!l÷Ó\(DYèPB‹zsňTíÊ·l:?Öç=úâìH"²U—ÇÊÇ®ú©N6•f˜+}7f®Çì:Ë匂À±n嬟A'Ö§ð¼+fÌÚžE7ßómL¿w_‘¼9Ò…–ƒ»{Ù¤@ÕBhoù?´‡B:1³Ö¿ÕêÃP'h»Ð¥óÒg6'yÚáZ0S6ºÎîE‡-Þ“‘&™è9@Ã1þÒÅP²ÌHaØ.[$<¹™†’,  zígf²y¼rÛ.Šî¾ŽdUýΡÉ}šµÊNw¤W–âÛ«4tKZ„ºß­gŒªz¼¸,‰N.…oôS.1nêÝã)MŸ°¤|û¸Hé’ŸÒL›ÃÑcü­¡PʶuyH\YSüÀOEõ8þðé î<&Íbðe7¼Ï×›n›5Ï®q‘d¾óu€Càöfª¤KhÿêJ0¼/vÕÙÇޓѼLëwu+á#ªLâÙ`F« ưŸ)C<|_Ó®´z³Ù”»’GXLDq©ªis~Ö‘Þâ p8?l8FDSᜨñj´q!™y™IïÔ’ªñä± O#A]q»üÿ_*pTÔ6[eÚö”“5MöÏTÎeœwò³S nü¬õÜ5z°¥åj†èŽØ¢ƒ'È΄2ëK¸ÖÞM€6v‡àþÅ<ØãƒüÛ<8ßx ZÐa];ÃÙQ!Ývp\M¹Öb¼[ ƒ‡ëƒ">:c½ò9À Ý¢ ’ª(œ!üjˆû‰ÊoØ•–j¡,To0;ríÊÏd0`PìqTиýÍc¨Õ²6 .8h‘àwe|TÝÇýË2«ñÀÌÅk’2ÁãÁÿqiš#:õŒ`ÌŽëO<^­`ùC]Îg¸~¸ –òÌ.7ÓºŒäFZÍ÷ŒÖ‡ÑqìtŒ]GÄ95eeˬìöŽ:~¿)Nº>ˆý{D`„8ùÄ£ÙC:LvTvsD8p¹E›|ìdóV¬Ü¬dª9xm)ùpsB/ÄS¸Mt´+˦¦j ”ÏI€´š!ÆÓ„þ‚ ¢É$¡N¯”1…Jà¦:ð½ÐñR0îË0±5zZcœGÜÞMøh½Ùˆ’îD¤‰´7 hú è2ZPG-ÐYÑýT·i= À¤]21™ kõÜù÷ïÂ. ¼ã~€N)CÖ¢y˜H¯îfF<8› ¡ˆ¢€0‰L6àÖÙ0ð8sÞŽe¶cw)Ù€´…aʹ}æM·î_« ˜}ãÏ™í\(â¢V#Ý)­«Ô!~éȹ$·þxÊK CóÄ3± Ô. Ñ)ãÉPZöÏë<+9匕K¢P›&¨wE³ÅÏ$’e©žŽ¬’dÃê“[¼æ-—íd¡ðç‚vÖ"ò³²mK¡s"–z¸éÐi\ÔÓJ1Î%ÎvÌá]É—†Ë»œ8µ"è …t•àSTÙÔ‡p1Û"·m,£RX,¾Ö[õjÏÁ [Û-Qx!£=mÄá'~7N mж;Äb:˪+e/ƒ)ÀÉGDì߆jø‹ Oöx3TäúùÄm*3&¾ÀÃìÌPª±±áüêÌ=l”]x˜û×o Ùñ‹£D½[)tw¤6I¦í¿¼_Ôù›ÛrázCŽÈÎÃ!VI"!ËÒŸBŽJ< —z›âr´K4¬¯®ÊJ3$œ &Æab ‚xŒ¾xÖZùï$ïÈ"çŽi™Nî—D*¼â¥C8L¥ðlm¥3Ä?ò©¯• ìêšU Üx#ÈϺڮ”˜†¸+|cQr–Ô†â™2øzüT‹Â®±r‡3l%^ì {ØéÞ;ÊSRô±wß…fˆf­³cú¥Iè\ê΢VXõ¨n˗ɆüÒT.ùŒÅÂpÓHŠ®K€È0¾½žžèp“K° ~ŒÉx¼ \ŠáMW„˜-—ìð5­d×ÊNu#*ŽŽv&@aï²™ûÖØl ušµMk›µ-§5³œFÍκy—fÄžG‚* ÆÂ#núÑY65R0ü­¢—u箕É}'YK‘l€Î%2´{JÝûxS«´;Uxýèî!Ë‚8\‹ßbÕ¡—î1'µËäçN¸§GÉ\4q$å&æ)·'®ZA ’ÝM6}Ö¸s*Hì\åw´ÆPÐ'=cò‚4¨» ¥ŽzQjr— Œ¤C·­PÐô ±D„¼Ælít 6©%ï·êî—³Û1Ìb.C©S/¿SÈFu©o‹èÌ3$¯¢šf®þòúv*¸Ÿ¾Û#Qy¡%ùB×3KªÓWÜp5H!{•‰ÿ·. ÝÉ/ÔˆWÝ¿Ò3¿e}å¤~&v¨÷¬]äT©±Ü=åþ3¬¨—šR$ŠŒ€§CnõömWþvév\-65·ØØýG/X–•J*ôQõ—Lœ8Wðö@;^ÙØ)Q±Œ!›vBæÜµ Χ/MŒTòFííµ$O Œý1€É@¾¯¿ÓpE<ÁeBâÂζÔÀ_1ä#ë¹z“ëÄ5² ÏHZ=ÊÕ燡̯È*áÿ:yŽ·ÖÂÄUsÝ{‹ÕŸéé8¸køÍkëÒÎÃZÇѸ'2´¢\tÎDË_Á³å^ƒEÙ¥_…¦šz #±`R-²Î*_žfž¬[NÅŽ½.NF˜Wçg~_G•WEϦˆ¯… mEz‚÷#„Â'g*ÔP÷úVÌ”åœ@Á²f2rU`àzL»ø°GˆvÛHõr+Å}Å{4Zôó‡°ùÎ@¦¿>œc¿¯O¾ÁT¾+1µM¥ÞϪp‹ž+øW>ð1~¡"-d"[ÂÑaOúO¡]žif‘‡CMµe} Î7‘Q\\6 ‹ò–|ñËW¤˜›~Š_äøšý2½“Tïo³­ÃÙÞdèÁªÜâ'³)›ÒŒV’ ¹}vsZ _© ¥Ä àÍhå…ÞÍUgÄéJÐÂè‹ZÑOÈij¿óq´ÿ‚9q3°7ú‘„™æoëú•>;Ùhö#õz–·§¥OýÌ[›±Ï`/À—(pùŽžì«iŠ=µC_á"C-Ì:žÝÃçÛÇsë\¸€ ÛzAÍsƒ~Ÿíá¬àÝÙI݉^~מ„ÝJ}踋-'E¤Á¾ór‹Þ ï¶j 5¾}òô¾5·ôê+Ëò~ÇT`~µ´Ç”Æ|}¶PÅ#ÀU°ØÞú¹tGVAß4Ÿp8Šfï§ôYR¤ïoˆ\L›VÜtWæ³ñ{-’v­Í§¤ÝŒú!µ»¼mzÛZ È#s ó!aïÁâ{H_Hîцh?³ÑÕ¹OaIa‘ °ž…ã‹ÚÛð-„/ó[yn½-ÆŽU†Ï;<8“q$ãÙ™¢eXÞÏ”¨±±(D@Wꪮ±ÏMQ°Yç²ríR?•Û|æ:Ø8\Ÿ‰·"Ìü2cŠê½åÜ!´ÂO€\®øû¢ý€ #m‚Køó%³óÌMŸ2[eñ¨kž2NRÁÇÞÀ ÏÐ\ÙŸc˜gú±TÐ’ß3 8×b9^W¾PýnÄ¥¾ìºQÈæp’¬ËGœ!b*ªJ ½7KéF É Ol5†a¶Z¿Ú¬TÕ™ïÔí§t“¼MŽäÈ"Î ¤Ã X^É-j2IT!Úf4’…,JAh{xÂÖL p-4æF‹âP‹NRÏÉ¿™ãìDP„2+кLMb³±Dg}Öµy»ˆØô'ßüX; 8²&ã(—6%ç¹é±/÷ ÁR¿J8?€z8®¯_@Y±¸³DÀ4ù)XQ¶L€MªðÙ7vK&TH1ÃÅÃ@oÊ}zƒ_õ:÷°lÛÓÈŸ{e/„?:»\d˜7åX)—‹Ë^×vJ;zÂAw 9–h ï C£®D¤`(E¼ ù䆷Hb°…RŒÀ6*M‘3ÍjKÜ/vUqé1á-+^GãûB\@Ëí¨–j³RÓBß¶‰­…Ê5`ÿ·\kÈ<¼·5 )²f¾Ç÷üµ‰˜›Úê”ÎØÆO;b‚Vu`•8R ?}L¥IˆC°Q3ħw¤S½’!‘¿©v‚Ї$ÜŸy?€9Jà׸¥–ŠÍ8<û,ÈNÚèËwúÕ8ˆ‹=ðH?±p¡L:`›€gýóRÚçÇÊñŸuϨ¶Ð¯¶BèȾˆnm‰ôzÝ(QÛfi'‹,'-H˜ŽÂ…‘hÆ%uò)\÷š6«Ø^·® Í!›äWðä$ŠþÀï [áÙ”3b0GR‘´P¬ª[QcŠÅr<©ýàY/ÏG.†ÌÁXÜE‡­,¨Φƒ;"‚/NȈ {ÅÀ»ì™ïjÖÙØ`MŒ†Ìu…]éŘ B6^a}×ô¥‰9Õo}âíªžêþPætmÈ™ñ{«næù‡,×énE7Á@¶í™ß, äEœÀ’H5=ob%‰».ÿ@äcJc®P‹ßà§Ë“ï’‹…sÅ€a¢z Ô8¸9ž“µ°Ô5Eò´è)Ã)•kl)‘¯x­±¥§ 5Šëe´l#רÒÏ“]ÕW‚Êâ9“.Ѝe¶P®*ŠVÀ™P§=éŒöPržöøLØ…2ËßmÇ:º¦1?â°P’‰Z•'{»µÙá±'eMÏ¿y}Í”IóŽ}¦yÙA{dÔ ®‰ümç"®»èƒÂNÍ ‹0xÃe-tí0fñô¸[–KØ)HRá-·Ûˆã1gŠa¡º¹›ðb˜K¡°{÷'Oúc'³›MÞF>òûÕâÇêÅ©˜Œ"2 -¾ëÿ6}¦6zö7¾7¡tª ÜRP€Oi·rê<Œ!Žæq…>cc©¾_“Ç™¶tg/?¦8ì,Ѹþ­•“¨‘B®„¿,i&<>c@4ÙGÁz·b⎤uý}gY8Ïy½•›H‘)Ëa³¥pºÍÀŸ&?ÎiÀ¬¾¾¾\€˜SÅ~åÛ¿¦üÄhͤç¾%e©< Ⱥ®S³Hb9‘rĸ?þGW 8^üÅgïe]A¸)"”ÂjY¸E_ãìR&Ø{?ÙYlZv-êGq^ªd…š!‚£>¯[àÿ'-cG2ùÏwL@uMÊÓÊ8Dôé–[…0lÁ ‘©ÍçµÙÙðO '¬öQ ¢[¦÷(cLp žÐ|üMµlZ!¨D“,®ü$ä6/ïF¸d4ð¡ÕœñŸd,ª`±mwè¨E;Ó³…”v‹öúÿ‡d¨`C%ve<‰WNî@?ùåOVºëaæÂº_ʸÀZ~…»&YX“ zó:7 ¶¦s¯Éó<sÇä©üî$a‚§êõÙ-òÙæÒæv3œ—!/%U fªŸü QŠ×Ý`êYÐÓ)tŸõÏ‘‘Îý;âݼ9]{KÍ’Ú‰Ä1…`Y ZµE3n¾~ÆûŽ%Ý…rj_—s­•¹Jä És˜Û0=FŠ\Rÿd Ò›áBê4ØðiyÑÙÓEà íÛ‹»nOµ9?UÆb9î«ú©Åª„QÚVœ¾åÇ þûÅ µëd Dúâ‹]2˜Ê#KðÄZÀ‡9.ö¹Š·Þy6Zàç•¿¡K‚(]h -S(xI~ f¼sÑ’;âsƇ‘ÿ D3í4³ê”}ëHØ<Ž£Pß £$p¢G»8§ttåºrÄ’YsÕN•AB*÷ÛÉf…`C5‘>¼ú„I>ÅlS6¶Y÷¾ƒ™†`Vû½ ‘ÿVêØû2ŠÞö85•›UMál».±ãBéDýAGRÑ¢Î1AšH;ƒ¤À£^ÆÖÅÐl‘òݦ¾)·¬ï;Íbmá¶8¥¨c£ËBd°r7¸Æ—¸ûø[Ä#v„ª¼Ý†ºîœ?ƒêK·ƒR¯ÒŠ\ŸönË% GZ”xºCÍŽŸ<ЧN¿i×»ö@VÕÜ>Ì—‹ƒ&:Xw{ Wz•„RçzªBº®½›Æ0¾caŽfV´Ÿ^`•ô5dñÔ.ŽæN‡-ÛÁ‹ôÒÑãNÏ_f»ÑˈøÊ‰yÏY0”$’ºÀ‚7_9íd©oÇQh`ú)ãŸèi®DQd/5XÙJó—MÂø\Òué)è»dt޲vÕ68MÒaúb×Ü.’Œµ2ª½k¸&cÈQ öô©šyâ?/½lê.‰ÊÍñ0›Âºœ@À=°5lÉÓÃæ}Gÿ».9·íM‰îps $€ZºÒÄ,K@/-g‡n°t5ÚýlÅ€¼Q#j=­:}ϧ?òÐÄ$aOYMmWDÞ&MP,µ µœ7”QÃÛ±ÖZ\˶M wèÕ Ü²©Ô{âÊP/˜ËÈú1 k¡¸¥¢ê š°U&&wUx‘J·§\N¤k™«dB¹Áíi-ÍEáQ¥`=>sÃÇ5ºf®0+¦7~ÄÞµ- ×f¨ bn—ü~±8€#n µ‘ ç ™ÝˆÄöõ‹®p¯½À]@¢ã¯V\›–TÇ œ»ÖŽýÝ-*À.Kç­­<¬µl»¸S?XÒÀã×qFLÒNÞ¿IÉ;ä/_•oVV‹[´«É,Ó3]L¸aã7KXèÀËÅÈÆeÍ¥Âü¾jý˜ròˆP%³c.÷tIð_yõÎ-š kGÊ!͘ f‚óûáåÉwVß:.[ôN5Ð% ¯fÁNM€ê `QÓ:ŒBå†Bqº•üY”MËçXAæv^ßÏ‚,·ÛðÙÌ‘À'âΧd²D×aÁ«î…ºðtŒÒˆP®É°òKî5ò‡W:C²õ¦,5OºØà,&#L¬ETunYl½UGøÚ‡çÚÃìÔEcM‘в†W†M¿Í2õ7à5{y®#ZöxÇ$Ú²ãì=`}Ð5þ÷<Ç']¤ŸB‘4bÕ/š ®m`?C‰RÞGhH,Š1Âüë5²9[ÎÁk@?xæîN/®À™ ¥¡%‘ËTKa ‚Pá°ÂÏG.­¹b[Ο5¡@±¬Bfóïð—ª_€ŠŸ.m!ÑhtAæ*HEe6î-W‹MGQ"©*bÛõáI¶È’D=#ÈFuב0¿4?Ç—çÈ]Ñ“é™Ù#%N’»XÝjUì4Ø•:Ç¡ö Òà‡´ƒàí¢a»ÿäßñ6b<(_Ä£Þÿæ­ÍC`»bÂëš¾'”}[³ÊU\"ÀÙ²â;™êˆî Ç ks5ïužêfÆÇo)Ï+ 3'¸ð]ȯ0®+×fEi†Ô¦éçµMkò´ ­«ÂyZéHù-pðŸ]‰åFv¾"ÿ½ _âý…J½K»'P·f‘wŒÅŠ&¸D¥Ô9ÃÏW«A噜åû#Ÿ.ÙñûsPªÁ½6KRyD°£ç•“ ‡šH²Ñ»LZÉnºpÛL=¥[Ã!©y‰ •v¦‹8.¾ue«yká1‡òqŽâñMä±:’ÿ0æŸþ ™O² ž2Ç3èÝA}¡É¤ø×txh¸°óWNE¹rŒ ¿«v"Áµù—BµÑ‰<ß&7P-cn¯Á±]8ÚŠÙ‘Á6E[n7KÉ¥—8÷¤®•± -Mg&ˆÿé31Ú€XʼnÁÕîÆ?¹B¬xÍŸx˜‹J»ÜQÉп°h’”yS ›¸kDÁDž½æ¼‰Æùµ»-ÉœÞ%»¦ºA%àb†éþÑqýI§Ð뀢WLH’pµp’šï]·¡ gäÛn)òÛ’B‡°¸(t¯¸v Ñ%ùûåØ^v IpÀ‚-`úŠèPï’•TýʘD”ù¬z†`6Þ4¤™×©§Ä=(õ]¹hÞ)ŸY·]FOW$§G´*%£' ZMj` §±vñÙ­4¾›eÓ¥:¼’Nâí: ‘òõZ@š<ÒMù¬“9O•à3˜Umœb“yÇæÃ)Zç= «€ø¤_I¾ŸÅÑ  ôæ.ŠI²%ån8Y.‘\³9\µÜÈeÕ[–ð¹ß»‰¯íZ妧6†F©k `Ç5ßITÚ.¦A¬š ©lŰ/£á¨½->…dMz²!lÞ>€BX³—«áoøgC+«}">‘Ç~(È•MR´Kã?À‚SF ´Âû:#QŠûX®XÇí¾0rbÒÞXÚ'ŽFŒ'Ì ]n4ìRS0shäµÔ«ñOFàªTWç¹mUdMmb°(Ýè£ëoýGºV')ˆ/‡Ÿfûn4à`Àч’‚H J8MªÒ‡ Ë(·e ×v¡|s¾ÀoÎKñâ2 :D"D×EvYB.&VÿíßÇ:æP¯ØŠÉ·“LdSµSŽ45pŠfìÓZ·X"Ñ0«åÑ[ûýÕ†º:´Q侪‚c¥ˆIªE¹×Û¹Àjn$ˆ\p#Cžß1 !0¦Z™·Çui/X·Ýh›ùGXK†T*$Q>=â^¼³ápÇ,äø5•ü->«êK°ÄÜð[˜äèÈe$á^|¾£1®òí‚_Ô§LnIT èçï“Ü€©‘Ÿ=òf!”dŠ*1·‡{TµÒ9ΦԼ¼vä’áÈÈ04óåßÚ1ûêG0接^ ‰)$ý ¿CúÙ‚”Û,õí'š®øœH Є=è º©¨Íx ïõok,`ÞÑtZiˆ0!|Ú[<“%¥­ùàðèÓQ@áñ.¬6¹~ËÞ lF··ÈÇnaTLl¤^ý=‡öó‰/õ<‚\†âƒC8}â´n†…&%q] †eÐ,I¨±âk´…ÁTÄK¸ ·ä˜éCðŒç”ê.š$9¤{Õ»×Ë#ü³Æ"ë´·¹Øû±B℈\çêHäÉ=>bérÜKQÅ¡¹W°RÕÑPD]‚¢Mˆ»Ï^lÑIçìÇðuÊø(Q_8 ×ÂŒ¼ ëk:'*LoHX'˜Ñ+Iê3þƒîìÄöç†1RÌ„ ´9,–!·[Ž+0ùE£k?‘~öûè'J6 î]@ ™…^«“y$¿bKàÍ™ ÚpÐDJf©&kŽrwùÑqwY„ªÆ¶Ù›¶˜Ùçh„$Q|“vá Mñ9ä<?½ô.ú}hkõÊâ3kí>3zãš¹g1ú®# WW…‡mi­øµQÅ'É Øw½9à³ìÝýÄÕÝÈúÙ½)u§)Ú–ÐÝÁiÇdŽ„ÁZ9&~ÂkåÚ¹´AJê³€`ØÅ)¾Ë ·iLy¿qNŒUàM‚»¢Ç´ 2¤C÷õóI6#Þ“Ÿkz‡Vª°›•Hî7ó>Î$ÏjE ¥â*…«íÉLÝh=¨Óš›¹-ª,Ï\qHˆºJY¡žX[#úÑ:š}É[­)›çŽ"’6)¼Ÿ ãÀpÿýwÑe€‰¼P#³å½ý™*RVªßÖ]O`Œ1±«ß°Dò›§IÄp¬h6ãJ{¨ŽuáR sL¶NCØ Y* k5î6-û`°nj•gà#’4ßã+RU‡¹ ‘Þô qìelmHì ‘rŸØ›yAž’ÂÆ[æ—²)·f`î¥ÜÞê´ìÞ¢ÐdÌñ O9Ïào'{Êþò*çWu¢î ´þ¬¸I+}!ýË÷»Ñ˜X}­£gR¿©¬=9»Y˜Ï&6zjÍ{*jYUêBt¯¬K: )G˜Ð„aA0tŽ­<{ùx¹~O ˜õÔü@bðÇ"㉆›"À#¦©fƒÁÚµy‚ÂPyÝúSÕøš¦?it»˜ºYË`ŠG`:§ äÔ¿p tÞ*pÌjG®Qû¤ qC¶€qŠòìFúa_…°{G·iá¿^O+‰çþðÉ!eY)úòÿå„Ö8C&& ä®VKã: 'ŒWùŽßÉÙC'lÃñbŒc²/’λº=nþ)–7›™$2½Œª‹×cÌ.Xi…X|qö£'èÛ¡ŽfÆW-Ï!Ÿ–ª5Úõ?ö½Þ^'© â»åGòÄ-s4jd!—Ž?êSb*¿ nÎãõ£€"±EMzQmìç …¾ÏÞ5JH¶]†Y—\¤vV/{±B˽«Ù¥ÔÜ£Á6ûÂ^qSçá—bŠ_²ð~—²›uS¾§Ðc£¸$­ï/3z‡@¯D«#ø5ñ霅Í(&Š4Øà Àü¨÷Á 7>tzÛ­c_IÒ²xßGx€fa{Æî<J9«ò~%Ðv#î£!\ðû6ðÛö–èaîs8¤®Û¼‘Éqî½ëäzÍ‹áðš¼”þŸ¨U"7Ð7’v<ûg?/z]™[!“â9jÊÂV(F˜—wV.X+çJÂú:ÙpÐòÓ×»V¢·$Ëì*æ=ÒáCDÓ(ZvAf<óÆ®=óŒ€sT!U wýº§{m’ØÞønY7|Û%É~…‰Œ§$Èà í2Çö nƒþfÙî}L˜yYÄæcà÷ÊóNYùí9™Åí4j‚UµÎ7÷y§çõ—f ¿Îú"Q1^…°PĶº5£’ …Îö­Ø™IcŒª…†ßH22—S_DhݵñV’X[TÞú0悳§@[Èõ7)‰ŠO}ÞïàžÛ‹¼ü@À–üš†Ý´çÞÄ„7ZCì}€i·0C ôÅÆ®þB ®\hPä©„„s²èt7[ø“jÿç#GR}eÒóŸAîp½ªUàá3:}^ÏßI)l^†DÂ'ÌpË9³a™9º>àv¿ðð$OÃÆek1´‚GÈÎ ‡®Šz“y10iÖYõ[MTÑSRžÚY[Únk,û|‰éÁhÀXSXsgB4å2º¡ÐÔ¶*%ôTê†6Ù˜ÂÇ)®î¶M2Ò£%8<¸ ;|’ð“°Áa\óÑŠ8a¥i^cÜYÂnÁ.,òá:|×BÃßüþ¾àTÚÕ‰‚ióEÓä5ôsÿœ?9ç¡Ýïh®ÈuåË—Ù.Ð¸åŒø¥Q²™\‰ mõ:ûßI‹°Mkq²ÂŒàèbÈnùpz±D¹øOWÖÕ{ JM…ž‚ï5ú± »s8§cLn7¹¶¾xßf7~7à7BbSN×0Yð bã‰Þ~ÓcAÏA0 Ÿî!§àÜÔ½V–Ë*9àÿ$÷·ŠoÍeO1ÌÈ·wU fÄ`wtåÏh\>/~¾n½ÍÓ÷iø¨ºrGW ¹dÔÒÞHª‘<›ªˆѦ—¹ìIª”6Çôdo(á)ÕÌÙBÀ:’;rÞð÷õµ©£öYŽôp±V6ÂXߨwSíêx³94Ã=_Å‚²`l§­,þU½½s_›ôM˜Aý›r~“ÈÏÜ”TrLýë›5KÏ覿Úçi]ã©QRTéµì\O²?’K–ýŒA_éKXoËeÀ”®P±H3K ½Ý”ÖKma¹åŒvÌÒJ—lÁþõSnUz¾æ ‰8éáj³‡ZZj5 J7×é¾”CÅÜVcU'ˆüE˜j>…§v7Fü£W®ÖÌ_é<,ûd[ ¢r½Ês~]„³_–Y½¿R kOÝКÇ"Ÿ¥ƒâ`·cÇòm¡hÉYB Y÷QÜ›Ùb|ã;éÞt©ö£¨œbvR)Ï^*ÍRýÈê1ƒ¤}ý & tÊÓoþÞÞ‡óãÃ-ú(«™¢ÖTÓðf®óJUцrèÒ>®Ì¡ÞOšMWÐd¦_T¤FGÚþ`]ñR8—+ˆø²oÖæ¥ì€’l7¸·îOû–¬*ºÑÂ%‰“œ”Kf”Lú9.ÉL†{#˜íC% otô-4–­Q[wfÚ,5 qM*sá“çMts†ˆýR¾Ÿ’Xœy+XGšMÿí ¿çö5ú…n„öe¡ Œöa æ)ût?Br‘"£ Z"ò¡Âur€WÈ-Ï *U+·ªjtZiÁ –רÆ`i8S»&²ÉúÑÿü7¡«c\È(h_)’™ac^r¨¥îéÜÏ)Öóö6õ AÕ†Üá§o{–—‰%œyüeJaá)|]¯B:¿JÛ¦XÌy¢Ün|-ô?¸Ô"Gh‡¿R‰@öŒuÐèœÁl}òc1Èß”L Ÿh},ùÂ= ñÓoÞóo¢2-_ Ž3pk7ì}䆲{"‹.aR—‡I¼jê7àð$4\êž";Ö5ú.Ú(Q{·gÉæÜÓÚMUF×ôi[ó.@ŠjÈù®ZoZQKU‘-ºÚ,Ê·»Œ'ö?ŸÐoì*úª ¿fãVŸÆÊ n:à,‰Ûhk‡=CË)ÀÖö@>¸Uz¤º]ÖyÎëÙÒ)·þÂ|²J|lýIÌ9/ÏT}À ²jscˆÏW‹Øêö}îñú4gDHä¡Wk/¡œwùµdªémT²i/PžIÉ[ó[ÕÝ]݄ڊ€ æq~ó¶Ã§¢ ÁnÔ³—˜¹á…ºînTSÕgÙFfn³Í§‘~%¯_”øô&)"‚ðGÜÆ6C7*Ž-$¡£íï_/'k¨Ãër¬:‘_ˆì<Ü ØrX™ã†Úˆ+z H C¼™¹KRˆ–Í +û7 Æk¥T–Æ«}zÉ=h-mN9w¥6¡TþÜC;Mqiü©ê[ºxä1­zïZ ˆ,HЧi™,h=cd±ibLü"Ù~I°4œþ6ö±Ù•‰ )UdYÖ†íå x~˜8…”ZÃ,‹±úÈ%Ú¾%ׯhÑòû•ð 7×òb‘Iß{™$Ù ÛèaÍ`ãÝWÑÓŒ0d·6¥KÙ{ ffµfŸnˆëJµÜµ˜}6¨Œ¸Ì5›õz££ü[aÙ~_Ü?Ä’žÛ.)= k¥h 4ÃÖg Ó×'ÒD†YÈÞ‚8×L?â&(ê*|¥¨G?ùÛ“ ãÓFXykíFñ†0èõ¯º—I«‰umšV]Ù·màТËã·¶)`×Ë®†g6g1xího‹oñ|¤n¾98JwÙŸ«ž¦ÞÔb~ŽnŒÙûCÝ<µ»åY¬j¶&ˆY ŠDͼçà8ãÇ¢@,_×mjì¤h,·-/“Ö2‚ø?Ãöµõ¾ó>ÊÌ-6­3.‘#YN.9u@ríÛД¶%²íþ:§/H´`.¢D”Š‚ç[˜§îH•ìŸ9X÷ ÀÇèõÛó]rEsq7“¨âØGWÏ Ø¥!ÝbÐ{áà§oŸÌY«-Á šÈ3Á¬pÔã:–T­‰‚Ô ÃìÚÊÊÈ”Tæ6'÷}ŒNùð³;Å—äÚ1³£Bñîýz•AhõÏuþ5P®è£¯pC܉‰Ž¢Zoð0íÄ:Ó³NZƒ{Ír•‹%Dn[ë¹¶Ë¢èýªý×Ë5ƒgºéÞÉ´RàýÚ_çX]ÎVô£œ² ö 8¤ž|õ†­¥:8ÙLŠÿ âÊ,ÛËžÅ\P§ޝh¸ua-FЯ…SaQÀ±MÞoãŵÞÌØëÁ[Öe€}ú[OÒ±~×`*ضË)Ĩ€4Ë‚6žÌÒ8œmvO(ä8|PêÝPf~˜t¡.OåŬKy¯5§<¡Vç,~`4‚F (j/™?ž ™0.þ 2ˆåËè!Ý+@;¦+8õBmp²ÇšÀL oXtêåÆÔ‡õ' rY½W¨©d}ü 3½9mÄ®gJ|ÝÅ(ê¡D§/~X,6N–éYÏÃÌyÄyŠ#7qv€¬§½ŸE=á|iÖ™§eÍIþfV]Ñê^6©9àn€¶u—E£CuU]D1ì…ã½½û”WÇ#Ò"X7‰üûkû['†¾¶%.íXãù+Ië©”¶óÓ"iD±’Ùl vP÷÷±Ü¾–.@e·tÞ ¦ü.‰ÖFÓ|¯ïî*ƒh+Ü«\ˆ/âmˆ I¢çgÕnÿÅ"Á'8)ðù ¸šT+Öc¨ñþêúQ‡MÙ<³ÆÜæ]«çßšË8bOö2#`u-Kys¬×oÍWš $y(GUUP{O–9sÛÌ›£Â¬›d¨b¸üU¼f‰ˆã&c•˜¶býÝñÉËg8A½¤a¤(&›m'ÔÿyÝed¦ÌpîJ¡Kn)f5 6'Oûqp íõÔÀOij7ŸsiÕë‡ÃpVõñÁ¢¹êé÷˜ùo °»k[oÄžQd`º6[c (½µ˜ÅeÌ ‡ÝôÉû <÷»5JÌâŒóó©)Åmká©›AeÍÄŸ[¹î˜™°a'Ÿ« ›„ÑmÛÄpaÞ—'®™;°«;jûœ›EÍÀ9wtûô³tEÀ™ßë]ϼu«t>›·±DÒáp²ˆÚ¯3ú˜ªÄ«"ÞA°ÂP+'øüµ#iÝBfyÊR3Ö;tk%b÷ÍÖ¢à&»_:&½Ùe¼ÐFY¬î–ãðÇ}ø¥Œ#C1-ÜC3tçHqâó%.O½'‰àý¥ ÿÎǯiË Âï†9Ï#›wÕr+„Æo™.Ø-ñÊÈÝ#9Òá3ïÙUØØÐ•…[>Eü½äÊ¥D Uvo-Ìiz9(úK<y¿!ãmST¾›²¼ÝÈQËTÂõfH:“+ˆ»ËïÀgÖ*ÙK,6] ®¤^ÁÃH ±Ž†’%gîŽ3Ù¯L~ý³SôÌÆ«zJZ³'ðú{OÃ¥ O¸^ÐWïL ,3.Žj\ Tv0: ”c™½~­P<Êö¶=òÙ–Êvm<#ç´úw4+ 4cxmpmZì÷Tvùx4·“Uºüm1Ag¼Ä`3» TP‘GÕ©ïælþâM:rÎ8Ø5„EDiâd$iåÝ1&õ\ {®S‹aêÜj8Ù~Úö.Ó ZGŠõM3]Ô!_g罪 úYÔè½ó¬ZL9È<õ ú×™ úðÓࣵÿñmÄ !„d ^ ï5šß™†Ÿ~u{×—¾£o4ßÙ\ $†ÅšçÅûC,‘ö™›*S—«óˆÐ`Ö-C%¿í^N/㮪øBPœAüN{¥è] zàÝ ¶abÝh,¿(c/0<þv|>¦8K£M™ 6܉ºþ/¾˜ø»Ü–Mç~a|Á+ÖMu¤=1xqúÅ!ˆæ*hoK†+÷1jVg‰¿ü\tnÇJ3áóB¸~Ù>× }ä« ¦û˜§7ì—ˆ€å3“´®wpÀa|üT8?¿×G>ÀPçç¨*ñqÀü1ˆq¦8lˆîFo»Ù&/ýƒ-ö¨52«Sš6h· [N8Ø5nCcùõÿߤk;.ïlí¦hGC#ÿŒ„±d~ ê½^htëFu‹Å!š1Bí½òÔË áT’•H±G˜ÊÜÕŒºuûÙ´ì+ÌÀ.‘Ë8mݳ%|MèvdN°W²“/{NÁoX1Ö Ïû‚6ùZj‡Ê®À¯$䓉•Š’+}œÌoø.*švpóˆ3ÈpÜ’âŒdnøøu¶Ëí¢÷èýyî)2B’ùe•?”–oÛ½ ¶BÏ>z7/6MnÔÌ@óêïP[Måµ°ß'U͆kS¹ïrœŸŒGã+´ Ã1‚1×¥‘¼!=»Å£;¿œN¸/…†£ÛˆéžÐYÞé\ íž6<Ó®Ôó"fiöDSz Õf³)ùJ7D ,E«ìõº1NOïp~1»Á:¬i‘=3°H_f‘ìŸÿ¯‘”ªBÔâàÛJaáÔ(>(ЧÂï%<ñ½O Á#¿n2éþ¥>-«Ê2Ÿ ¢UrUÂÌ-cš˜×õDlÇGs§ØŽwbD¢Z¶53c–ÌÍ´±T®Þa$Lp®H<°MïŒÞ4S-D9 l†¹¼b¹à‹Íø³ž8^®~¨æT=`Éð™æÙ¿:¼ 8²>Hkί šÅ—là u=@P6g ·+ Ì#Ån¸7XÍ|ÄÜk–`ÝÁ^•¥$(}Vµn¯3oª> ~ów@€N׊ a·CO 7__`@)€3 þ[š,ÕoLhS‚­%í$+ïQ„‚“ q°¦eQJq ¹65G¸32`=4›ºÉ¹‡ ]Å”}L'¨~àò¼œ ÖŠë®8™Z•ìçdÈñúŸpqìmš…PiW|Æõ/$¿»4”ìý­¾jŸò¢ÊÅ0¡^Yæßý¦0ˆãiаñìâ ¯³ªvN‰òqÙøÏÛ_ ÿv'ÕØF󆎾‰Ó“êmõ(EéÕ=Uº,/OpäZêË t ¡j ¤Íª( c·?Q•Â?õ;÷\¦ Ž4&vFqW,Æ‚ fàé6†\ÑWåãç¸ Ø'h“[ Gqæêɤtÿ´ÉÁj´žö}>ÙêÈut¾ `üjoómj9­T´iÑÁG½›yb¾n«‰)TëhLn•"ÛœïqÈ­w§ÝÑ—1M5fzÇg|åfŸ(jŒÊà_ò5”*­:rÊÑÚ®jÂaˆÑ@}Ý©„ìaYÂé€tñºÿÆ[¬Çw†h¢EÜ×/6c*M3{cVW1 f.}Ç÷>M 6w§•{¾iùôITœOºãY«S ' ªN]fž·þ÷¹@•žÌUí8œO4™[GŠìI2C<Åšá_ ;Á„ˆg$9áH.¶Px²#ì„ç+Ѭʮ£aoõ‚Öüêèï ã&ÞÃÐ?^š%å[È `˜/&Rÿ&§Ji=È«Vè«—2qÊýpkÇìÚj’&¢7vÅ,b— YöFTWÙ>šÞciyöšîŽu,†R¢©SQæ5.a‘બR-‹C¼Å"5F™kôÂ÷5ƒsT,Ý÷ÿFk‚p‹Jß’˜yÈöŽs”‘/¯M§€Bw´ ‡‹áM,ø/§Mr“É´éc˜ ›´Òì æŠˆØ¬Û¼"3Ð'Á™õÅ|·¸,ÓƒµE*UDþúv%ödñª=ºS+ç2ðü 䇙òe—fÛ6Æïž´_ÏÌ»LƒJºìÍÃolñaÑd–ŸúÇfã»x¥0€ê[ž´¦ X0ñz²!ÜKg§)–irà†<6j }Oq‘Ù—>X„ÒÓ [ra9볆Ⱥ§ Á™×Ô:ŠC¼ÈÌ¿ÕE Gƒ²Hz‹ó²xû.µà.Âïm~Ý›4IXJ9ýÇÕ'Nix¿yÎ|z‹˜;¶å“ä´¶ŽSˆÒíN™™„e¯„µp¨€°^ƒç94§i.Pà_°n µ á€pQsÑÜâ6;ö% B:0‰­/—-iÜ^šÌ…)Do\LíˆWs`8À+¡„*Zñ6~ƒ¤gy¤ÙÞŒuòÔîL¥ŠDB01â„¿gzåêÐÅÎ5V%'T20ï}`àwÍ‘d‰àé´Ioœè0ÓÓ[®R¦œ’å åò+j>©{Sò縄órB #ã†z€¯-ç%Z*òSÒ–õÄÁ KPQð¸úä“N‹×)ï<§$«iR-Un0 ŽÒ‰½—åì†gŠ=±ß¿–ì˜æ®õ«¯Æù7ÉÃòyª„[ÌD?êEÒÜ›Y¢ƒŸ"*÷Q{†û1ÖÃtöÇ=2 O­—¾¬>Z¡„À™*x²Í+%E ÊúF©Ý£–¦8u«‡·¦6õÛ~ÌóYÆüœŽ C ’n4yC±Oö³úêŸ[2w›Kbµëpÿ¹E{Hø¿&ivqV*Í9‡X—ÿÈñ$nU$‚P[]¸8jÏKµéYˆ#JÈp#©ýM0ñ =áÑ­ƒ %#6ûý‘ü_,Yã_q“O¶¶F4ÈÑ[Ž~ZšÀ_·lÂS«ôŒ-• ¦òø«öÇåí%0›ÿh>æ™2X ßâ‚×è»a"]×ÁK5_=—÷6Y”W:}` g(ŰÀËŒúÆ%X);[T-бhÀ„C@ý’—H§$kÀ,Ü}±Êz8#”ÃIOæ5R‡[£-МDªÁùµmk½éë“'l…ËxðyðKºÄ–ÂêúåÑ.×+Ýá„lo™«;ÄÊ3Ϻ˜);ר9¯ºZAçœáîÓ´V·wÖ ÈÓÊÙžcùQí»*®ÀÔïu$jW3X£‡®¸‡o²Ð uŽeƒì\ûö±ëgÖIòã ¨F åù(3 ÆÒ\­Ê⤠ÀBœ} u©ÊPádþäl.ù’þó-k› •“³9ÿiúÎCòbܰf=42Îô®sÆ@#ñÉ_üÑ’\QÜ'Wû¹Q]†°Ùt÷u}–Ç7™–Ð(‰“ž§NIq½È›ãÛDu6m4&ºGzuqJ‘”j[²Ïr˜jTÒ ã¬È¿aåoL¿Xàå‹§ŽL¦|Ùª°gFïÅßgá¸ÈÃüJñhÌøáÿž½²ÕŒz&OøÑ˜×U>GS¦°Íjõ,¥ Ý‰WðŽòâç4ÔÅ6ßk<KYÜÞ{ô³®nï¿åÙçæKlàZ'ÝuJÙ,ÛO)´¹UŽ{Ñ—w|Bvx–|Ÿ¨ÎB p–…Š@(01“•Ç6A”öI8òüÅug争ù6Býfm³?9±c0¶&²¿E”, °h®*¯ºù‰‚Ì  ›l zÚg3s§ô‘„5aWPá;­Ë°Úðt~®“ÎbR¾´x°~B^ÖT›”i¦Vˆ@_4YHØeWreUWH›†¿8Â?5’1½M¢ &ʳ\Œ0ó1!PëšÐmËøääÒÿNÅ?<ïGÛi¹§¸(â§‹ÜaéÒäÂÈÈSŸ‘¶æ¢ÁÁ€»žïéq`6]cÑ;¤‰A\–ÞÔRá*Ðt×AÚñ“v&"» @<››š\¼u:ÔKþ<ê?Õî{˜z¤9âÍ„ŠeÔèU[¢X9ºöe t+²6¿Þñ CIû_^kHŒm!To þ'þ>y«Àež3 6-L pq%@Ÿ×Дôã(z‹Ímm‰ö±\¾2­P'øæeÝÜBïáøñŽøôýΩ ·SÑ¿b¦®„ñêÚ;¸ÖÓzM…}&$Mè`ÔòZDÙžC|û¥¤”QÉú´å—7S2qaðT« €mKˆƒû߀Øåý;L¢j6;ñÞîy­Iô8R`¡ ÌïûcѦ¡´åX7Ålj¶Ûë·ŸÿŽÙs¤ObÌsRB‚9eŸô«8ù4¯AB\>W—Ñf›sº.‡€ ^¤)vª·ÿ·ŸñS‘åbb”e]åG¹¤sÝL,@lc&˦U­=1ûD4z¿³B©nAÅÄä^ .½_‘’ú#úÀ23*Sª` ±‡1¹8‘5'Ñ œò§ÖhVíÆ+Pß7yãüKñÚJïþЉN‚Ýw»‰”ÒÆ“áXñ@ZR2ñ"MÛ·L{¸¬ µÎ¬l~P¤¬D%À?‚Kõ"3ùZT§Çªi\A©Kmh)©̱Ô»mæ’â^rÌ{doÉ´S³©Yž>òÔZ6êˆ î>·Æ8ð¿=×÷ËÎÐHYµ ‰÷)ÀX&Îi1TŒ Å|m§RåÜ ÉèdÂÄ?Já³›=T“ÿý¢H~Í”©ÄÜ‹™ÎNyî¥#í SUÎ69ÑÒ“ÞĆÑúzŽóc¹=ÚA×ë¥F÷{H»*‰NEîU+D0Þx•rŒjòû… ÉýÉÛ¼Äi”®•þ·ÿ»íØþÀãœí.gWY&²ÄÊ×w*_d¾ÓOϱ&Çô†¾2AydÈ4è1¼Î‹–*Hî`r1ª?(Ö$±Ì™l°þÙ¨]mg-¬'ƒZáI?gg ¨œÊÅ•¦Gßf´³´F¼ãj@â÷3çÓµ™Þv’®~P•ÎÎð7ªÕÇÐï}EeõÕÎù’Ÿæ°°°8¶ÖkÔÉ î£q‚1•bb³ýx³(ëÕŠ+Ÿ‹X MCøÞh\ëx‹àS -Ð0M ØÖR‰ÛÛ MÌ÷5L±0…Y‹6•—þq^’ylþ+D¿Øn‰ÁsñþÔ”Íd`§.úL/`ÕA%7’Ôov´ÅOAVáý[ô­¤Œ$ä‰Èluy¿÷þ—¬ÑÌé•>& ÖdŽÜËWË}ÿᯘ-Ïqƒ´g¬ñI‰ý*žpéïï½ïq+‰>0 ‹YZsurveillance/data/measlesDE.RData0000644000175100001440000000442512376634041016467 0ustar hornikusers‹í[lWÆg/¾_ÈÅM[ %åNˆ-m¹”æâºÁ@Û„Ø t¼žx7ÙÝÙÎîÆ )Ô-ôÆB¸´U«UÜžZ Á U ‚'xàUU_*ñPA(áûïžcÏήã½}Ÿôó7—3ç6gΜ93Z?rCÿ‘~Çq’Nr0á$SXL'ñ'ú„‚ç–ó^yüv'‘ºÚÚÙå•üL Cà)µCÔ¢‘ ô€^u¤6ÕqÃà `Ø ¶€­`\¶+ÁUpÞÞÞ ®ׂ·€íà:ðVð6ðvððNð.ðnð°¼ì£`xx?¸Ü>n7›ÁÁ‡À‡ÁGÀ-à£àV°ì{Á>0nãàv°| L€ƒO€O‚;Àà.pŸ‡À$˜ŸŸ‡ÁðYp|Ü >¾¾î.˜0

sÙnËaq™mEÇ™Vù1o$i«ô5¦o0æuu ­Va×uX˜}€Ô¹ÜÐôM¯W-÷;‹åÓá“Îò24ê+ì|5Êo—Н[¥%7X¹Ù^¡òaÖaXœ­\#¦ô9’0=FÚæà@«Qûi%fal5‹ßΛÞ&èŒ,K}és¦Û¦.GTûÓû›…Y/5ëGÃòÜj¿¹ZEµosY·»v¦Ýªšõá­×z—«“µžç9jwY6JݬU>Û5æ0eߣVšÆJÆÕî‰û[IÏwG¹Ær­>KµK튫•g9™‘±¼ž`Ñãþ´r=‰"Û7©m~Xßg¤“2–Û9f 5‹ß,»Î—ŒÉôØr@­›ãO§ù¬dßSÃâ_i9ZÝN{ÚZ_I3.ý¬mÎ_4ÊGT^õr:âø¨ív¾´ôhX»1ÃG=×Ùa•±Q »/›ñÛ÷;;N©×yÁ"/Vä%ˆ¼l2Yÿ¬SŸÄ—‰z™xwúK A^@ÈKy"/]dì!sz|!c ™;‘±…\oº®ÒjÝœ6ó6§l®k5ª3¿NCòЯ–…ͪÌ[Õò•jYò)mïZgqÎ.jÞÞ·k¤Kmw:LÔõ/JËæ@j½õtA©°”'ݤôfÔE‘ŠAè‘É€áŽÿni¦§Æz±},„Îø=6[rò‘6ô¹Å,cðÎגּ8¸WTwJÊ$ð.š„­à“µþ ‡øeI!é£Ò Aa´å‹‘'ÙÀ£þˆÙ«½Êê¥a´Ö¶Ú:<`ûÊ\;U~¥â7Sâ *tg3ˆß0`{óQ¾¶¸Â3(hÝÍø1N^¼D8}¨åÂ"ÿ4ù—@ :Hsƒ›¿í_º„ÚUSD¸Ä>"´M¾IæÌ›œݦtº%ׯlë\k]€XšG#™Ï›Z(|ÝI¢v%ï:”LºÉ¦µ8›Ä¥X´‚½ø¹i"€öœ±þÌ lž3D;.RÉLÑ}´‡—€ßi>5hx0ŒV Ù-Vp_I?ý³°æãfèE f/^Ø6as ψ¡wéã\£Rô}ɼÂñdÃ'Wô<È; ·Ð uÞ®ØÆI¡QŸ QmBÚgF#ú@Š,¹‹wBÃsl”“3EtqOÎ ¦UÄ#Á£ƒŸ’läëjnµ\/Ãq&W[%b %Ý­ >e šÁÈGê ˜Ÿn/ê€H-=Šâ )Yt‡­’_?Š+Þa#Éå–¾"NòkN¶ÞtËEšv«K1üÉz3ÂÅÁ±|7®  ×îÁºÝ~àÃJª¬WB}\Ç òÆW>ôh“Óc”&ª~ŽÎY—ç*†¼z¨ŸÊ|n9±¾ê,µûº`cYÝAàï„Ø•SþÉ×›\ Ì‚ª&lMuºÚ3Åáõ-4–oŸ–Žë± ûb—VŽã ¹„ö¦>=êÄñÝß_OfòÙ|¥HFÓsY`Ý‹.T{6ê•7"„•$ÎGVçzü½ë¹÷ï4¸Q!­A†·¦›’Õ£åK¯z—Mò™Þ¾¡/ýMZ×¶e˃sž†#ËJ­0Ápy ŠOÝøão¾¢™&îýbEµôgñi«Cѧ„ ÷{g·ë™„tÅî]!¨9kzhm: Ì4e1\wÄGªÆf£WJÅÇÖiÓä1£Nõèó74ðë‡#íœL®è ùíßhÕö{ŽoRÞšï!8#Z0¬mÈ3‡‘àÐ;¡¦Ä^Ñ%Uþk0 ¨S¢ 6Ä»?fEÙ]Žw•ý8ø8{C£ù“½Ð È ]ÜÆeØw¬m­üîù”ýjP[ïå;T ˜Í÷’Áû*‚Ïœ¼ ^(‹ÿÈû[oò;€Þ­û8 Ù¨Ù …&ÅÕ'\‚[!{¨ÖpG †œ=ýèºä9%ÛïKfþ? NØž˜s:†÷›`I²zš ¤ 'ž÷ëzWÁ` ½c(7’A$ê˃1È z‰ÌER¿ æ“lêõ¸C+Õ‚Ÿ–ÀÇ®È$9as®a!äX¿ÎžµRÑ©µ­T¬ëݦ¹þÒ%äïu#ÿñ¾uÜÏ®b"°ÁÚ¾Vy¢éU{¥ýjË‘s\#ÓhÓ.æôUõ²ÙZ}3Ÿ_vXø~™vJŒê’6 “ðï™ßì»}âÚbÅ—ëGC䱓Æd}§ê®`þƯq0õ%îž~-•?Ÿ“¼Ô=Gþ0k eËž]H÷žïö]¢ŠV¤Råqúø*¶ ErŒ! ß óc ì0Ÿ{Ÿ±|ÇŸ{B䯗¾Ú̈w g‡áÕĤšoÏÈÀÏ ÌæÈÃ2¬]ân˜>Õ £S#>Å¢­q$·±Ãà|º%Tòo]ÝñúŒ†lRPøæNÆáAƒ“ßí){u?xG›¾¾‡žû4*Ìß³Î\yÖ.ݢѢ’J‚¾X+tY^ KEj(ž‰äž6àowÃÛ®B"„háòZ]µQÇ™S(¥¤À— z”êPJ. ”ϳiJáT‘=—ëMUÀˆC€·¢Œo•sÉú_Hû!A$jYÄ&üSr_§Fßs…3¹}¡sb%C© ý¡y¾0.§}8)äÿÞàZËô,õŒ´§0Êô°Ÿ|¿>UVüñcLßk´ã €Îü(Â…s4qkîúJûÈŸs‰ï5áì3;TåÌè‚Ó]\¤½8,ëYÁ‹4‰­¥1H¢eHë?Ž’8µ½–ü¼ÉÑ¿ä‰Îç •nIÂp×^÷^Ýý9à3º3t8ª½fé96ϵ^ŒX nÏ9­«ákï.(Va}ü“@vî,Ý0 ñ-vïȋ߄µF#ñtªúìiÿñÇP³‰Ãcæ’íìÞ?K¥§¥î)Ù,ÚaÊj ü߈_œºh˜ Õ·#žñm)Hµ@kûiÞ3]‡*Žq&6Ú§ßÍ6Æ·9ßÏOFT˜÷E»\mFTÅlh‰<¿ŒXŸ#/¹MšÉ ;O/Œ? í¶þ™*w¦bmvÒöÁœ¡x²U ¶n÷5õÔ=­?s#F ”a@/†D$À.ä5iTqÎQe:]Óz¿H²û+|Ú×Y›+PcØúv{Ldì‰Àüu3쳦·KþúLé9{'aDéõ¾Ìß_.'ò§\¶C!{•¤ôj¤£9k@è€hn¢™`¶ÅVd|ÆФöwótÜB($ñ*¬ñ†«X¥öVe¸v+šº¢_× ÀÏ”­ï™ÆþH3…€ßHœH•Q´ñ†í,ìðž1ÙÃÙ|¼Ñ5«ší.#ÍÍB?Zä@úh´Ž•œP ©F³zˆµïáTœ3ƒ‰ë×§ñšaÃeÝÒ@A_õ†Eÿ€C3–IRËVÆCßäÑÊx— ô—íK׿Øl%kLxK“?@eëL‡ÒßE' ì-“>µ8Ži„X⵿ªyðëóÓ#É’!:÷^èÌb´=°àq‘EN¿ÄV¿&ˆ‡_[c‘5Ý²× Y^§½.… ¹¸÷@dsa™1ü$u@ jâ 2~w:Ý«×Cäôáx¦žFÖ‡Yw%Ï<ʽ‹úk2/ïÕBȵ€?¦4OŒd¡yõ~¡SË•µOÌEd±u»ÄSvǃ½K‰þé§MÒíÔp<úÒ'M?G§¯óEBùs ÓŽ€ˆŠ¦äåþ±8ÅÞÁ¶ô“1€0Ä V€ðå›(aX]êxCáˆ>¢U(}@ÃÄÑ4òÿ¸wbÔe Å% ¬'ž»¿r¹0î%é»1Õ³ÝÐê:›w³‚Y˜p2ÛëOÝ1Y üu{Î’›èbí³Q*¶Ý&?§!Ì)-„wóƒâëÖm)›Wjsl=Ök\t¡@×&Õ:Ç‘QBR«, òæ˜Õ4oµ/HèÞ#îW†Ý3Ž‚äæ?'o¥9‰šwöP72W^¿¢%œE9ÝÃÆ}¿³ÔK<8/‚ÚýKð 4ëT’ãº>¸“Ÿ+!ÓyXM;Õ×½u“²¾øýú'<åxI}Å…Àê s„‹Ç§><0ÉŸMëå$æt±_m¬ª²“´Î4kNµÝÊž½›+§QGîþ|N¿Þ,‚,W”@éÌŒX‹ì…¼à)õß]ï‹rAQ?Ú&@…x{Ì%«c$é !¨µ³§š PÆŠ„eZSoÅ3â´çLž–ؤ1÷“ Á­Ä¸ªο»‘N9šQ] 5 ¢|'Û²Ž”¦Ð[j3½Ï•Tl>D+ÂêôÀÕ®ce©³.¤g Å!Âî ?Qê¡T›–to?p!…Ï™?¥—Yª`OH8¨Ñ;uc`òYIynÏ>%ÖQŽêöžß¾yå^n踲¾KPsâD¾hGý/¾ppç9Èe¡öçpž‡'ðþóœ EF•ÅÂÛ€Í ³{ɇg\¥©tü‹9Ü­Üü Ú¾ ³ã¹Îf–¹£ˆŸAéøad>ØK=žœLòoU`ȯ+{1\<<ØÍOSAW¢áçTÞGÚ»ñÅžRÓHÞæJ_Ucä_ fvz?V»j— ‰!¯¥a/EJ]ÆÑà‹ìT­0‡ßb ™w¼›o×(~_”ð@¿öfnÑe¶à^»h]©*2‘ñ³£’¦¥\Ÿ¶=æ$ÍàÚ DJ9äNCk3Ô,DþDçˆÄQ]í½©`ô;n£n„gM†+ m±`õ×ö•¨?ÿœVä”.Ñ…§•rcÓø¡Ná*GÓ·6« «ŒomÞ…¨["rQñJÙª îfæ~%™@¸LGî„K6!tÂS ÚÔƒoHŸŸîÊ.˜){LÄ’k^’|fG+AñÑ_ôj7ȉÒÛÜåQ/—ɇãëÉÛ­ý ã¤((ƒCAõì@[ü1QŠúyPTÒQUا½zã0{µÆê¥C๦ꌂ—7þCÓCœ,ò¿ ¡¿â`'Uû‚@VŸyfÞ B1þ=C÷æ \ÙW/$‚šŠ=øÞ4å>Ä[ËF}Cà™z6Z.ßlUr:F6/˜àn­\*ú‰‹Œ¶Ô+Z¦Ó¬Ömî¾­¤5+¯>ê}Ú‹„‰ÊÍØÖØ#ÀN‡’ƒ&¥žÓ"‹ÈÕ|(Í9ÕëܺxÕY— ¶nœ¬¸ÇYYÚüp‚¥>ºü¤«à6Iä@.<¹b è^Ê62êÒ>‘+T°&†wÁ²_rýºD„ì@þ}^Ÿ*2.jùpçÕÙ"(‘¤ú;‘ '`²z%Bk~í€4:a:OFæÍGõ/]Mlý¶£æó5"Ûä ?UÑÎ?oñ‘[á» Sô“‰"<0OZÔŽÕO»#²çÓ®ˆ#J1þ[¿‰dHÁNÐ2³)YÔÉtvDGX=-Õ$ª—Ý/ê¥ÚÍ+¿” пh ©7¡²ž’¹”¦o+eI/CÂ+2,e0gZè\¡p3ÑöE$«–4Åì `år(˜·ÿãµØõ€&?-ð±?;¹GÙÁ0þÖ &[óQIœ‘€œüpƒt•‚r"ó} òÜÚèzБ/cݾƒîOŸØK_l¶>B{·ÇLï Ú»·r¬´Ã)á‚‚I?óoYâaÜ”õÒãîŠA%ŒŒl˜+‡¡ôÆ÷Ûñµ™Jç.ó§+–ì-팂ÀËazKL X–àÏʦÞ4Ʊ@ಠöÂè­ùèEØØÑm`ã÷ùL³mîÀÜ(CÚ Ë•¥y ÈGð š¿¯óÈ”Z(ey8ûØÍîà+OÅ\c¾ »ø’ÓrŠv\UnÕ2‰×ãÄ"àQ¹ô *·{íÚyYhË nPäv²Ì~y‹û3ÄäÍðTí)Ä@J8ñbxõj*ü$¤Sàl‹Šý°dI¶X6‚ÏÀ4n±Y8Ñ®KE5"Ÿ$ÿ¾z þläð+Í.oX:­úylÀ •ìͺlR]—Å¢ùOpwú‘¤©Ö"7­9è¥ Å¤vNž·>sCÖª§m€ÕeXmDö@ÂjÃìݤHáÝ?¶ˆùÓɾƒ ‚jÒVŠŸÕ¾Ö´I«Ý Ó,2M£…ZGû~M7¥S7PãÍ—‰šn´–wºÓ‹Æ¾©:$•«ŠN¦ Óךs¡qËñ½:¹˜ ós4°*àãwÕ6¡Pë×wG÷”Û¥º1SŠ…ß.›ìL3ЮºI£Æ½oT§cH2ßz Þÿ‡çIÒ¬m¸­¨O³Nx•^®4Š¡­Fènô¯I2UgÇaKÛÏdÀâûš,ÁÂÒ‰•!¯}ÑÔ¸ÇTÔxM‹òعÍï{º?[8/ÌenMQÓ%®n·¼´h½ãQHx6ùÊFÑÀl¿0êŠñ1I S~÷~†oò¨!·¬w“ÿ—Ôxt ŒE1¦âÑEÔ39³þ?;æ;#î´Æ·YC¬GSÆX»ƒbÎ7M2³.R 3‡í#·hx÷ýLèm-Çq¸]P$©<—µS½o.8HaÛŸæO–t—+2;4œÀ%°çlNŠ,8 nˆ>c[Ç‚ƒ¼oïˆ/}Äö´0²Ï0]ä&?nLk`)›e:OnŸèœ }éþ@„µßÏö|d¶!¾s˜4`·ÄôÉ–àÓ@¦aê¡­0á¥à» :eìù›êQ'_~Ï[ê^’楓ý²ŽÊïY@4ìK¤÷Î"K^fYŽýœ)Œd1’åb~gQRä†ùâ,¨˜â3 ÚCKº6¾ý”Ûº´RâÄ,w»$Ȳϻsjba‘Ls‰æ°Ê†aOŠèúzd…:ÿ/HdûŸRKÅ\@Äü¤×âå£FÇ-Ÿ™g|äÍFIûM7€ŠñwÂñ™^¤ I§:X©ñ ꚇóß×ø’¹]‘eƒdcûõHM¯¹Dì —ŠŒƒ,<1s×Âxɸi&’ºGz,üð ÎZÚ²U|—–9ÀnE ùMô….övQ¨ôm<ñâä­-™:ÅEâǯT¢»\Ò¿^LYiž±/G¥föAw‘ÊçØb|ͶJÃÒfÝÁK üYñˆ ¬]_lÜA…ü÷‹[é& ¾RÜêxç=Ãdm`ؘXý@cþ® ¥`†ë–ÞÃÑù%«Âcò‹l~ˆq3rîò‘ Àú† ÍuYyE0Gj”s©Þ6ˆ´N–eºíB•dû 3C`©qªFø,· ŠÒçR—÷g&pczâËI 5oJ4Tq®ztb7Âñ¡Z4ƒíÓC7|6Ïy—… þ ŠÓS[j%é¥ÁÅ‘Oô>÷êè÷9^˜Æ½`'ÆkúK@ 0^QØ¡¦§-¨¤)ëÐ(ý3/T¨Aè‹j¶ŒO÷ÚÔµªó> Qð†yãân¯ÑʨqCŠZ5ÄÓŽÔA¯ØSëI£7f3%¨Vãâ—OšÈ·ÁnB¼è]£üÌ–7¶üV OÁ*¾ÐöÞöìƒÝF“ŒðêHê@ñ6˜®p•ckr cŽ+½’º¹vN™i°2dëe¼,§y&–Û‘„›ùj£>-wðÚç±GŒE‚4ë/PÜ@ÿ^„Òà¿)Ô Ï4ŒòZ»Crg•`Õ­7d8º‘I‰ƒ„Þž-‚¾b{¶(ø …RÞ>x0ð>®[F‘º}¡Fn-"QVüræhÕ+]÷á9 þáhÿ·ëälC¼§ú‹ô¶ÑöW•F§N†”Ⱥ­g:08Ç0‡{·Å&ŠQÜ$x¸qoô>M¬³ZãÛ¹jãöqZ/z/²óñÈYÞçêí«hÃи!•bÞ£)ÄÐ#|\ ˜ÿæK`y .ü+]“£“úSsqzâi`Boô÷Ü"X –’•Ÿ 0Ä” gxsb‰‰­Añ¦lifT¬{$@ˆÁÃA›Ϭԉ¥.û€óçßw¬ïv÷¥€Ïî:ßÍOšÇ ø ‹#vÔBý€€„{08¼©@­äHd‚ÙB‰0q~ô©ÎÎp¨±ú¸UÙ ½ÃzOq-„÷ ɶ9bKÞ ›[‡ÌúSÿúÐv÷Ü•Äk»á0jƒñ˜bñ‹{æ¶F& î‚}Æ9ù¾õWER Ï!!ùö«˜Ü¹û{ó!ƒëmHbfùÜÕ0vá)ŽI¨¬ÓU•f”;Ö†fU<"¨c0@¼åñ¦™ïMâ TBÁù—Óê(†¿¤ç·T3 ·X§=ÐçZ§ºtÆpQÞ‡Û:`™­:‹Bœn¦€:ÛâU|¨¬#G€x®ƒß}ÒhÖ5 ýßø)¢ïßx{íËrh „›‡Ôc?„,§/%+ò/áyZ~0Èm–Ì Ù$™á»qÇK/V«Ü xÚÒ5Áבùæœ2Ù:ž>4B5䃈h5þõ‹ä -9ô®½‰uw¹gˆÃ¼[F'¯ ,çç… a‘€On0¾‹¾,zcɶÕýËwãÔì‰òÒp`tüñÓÅ™ìŽSns(4®¡-™†[u™75|Û¢b•¿ ÙŠÑ mêŠAüâX®>Ò—¸¹0òŽæ~„P€|ÚzØŸ¶&n-µ/õálŽ˜]‡VºÌpÓGPàW1!E|_qs7*ñä!=âwÍÛÛÇšûSeF­\ ¢šsŸbƒ£I^ JÇkÒõüe׫øóÙ®ù6)tÍ2ºa¼ µ‡ÜQ¥fwËßïšL¡Âêt‰—çík'Iš.¢½×¸9“ ÁTÜìRoJšFÁ§màî¢ä£é¦uÍ"@[ x̵±u.’“Á€ðaÐ;FèGÚ矚AoÆèl s«£¦îzL±­ ݺˆÃ4%Ñ:+ 5$‘¶.¹µ*YYP+áåáý5˜ˆÐƬÑ/zî_›çqÂÎÐsˆ¦üœ|mý%)É"©%ÿiÎ̯Õï²êJ+¹…ÎÿjÂ\Õs ¶¥Ü¾½›wÐté#·.K®TÈê{HáÔ¶Ç¢=HŽö‹'Ý"4ÿš·É›ˆÌú-ÚªmåA“m¦tÿm§W³³î¿MJW “ÈÒ(ñ„ÿA@UK4øˆ°2›ÕW•ó‚X£sñæ;É$>L{³#²áˆµ›+æ°É Ad©aŸuo¸j^ÙLo¯‡”¡uƒòWDϲ 5àÏ{?akÌ.FøŒÅfïqÃÑ|C‚Ç€¾Qrv¦fXë{²çLê%l+auÁo:\°äï ;Ô”tÎP‚5·Áx„µ¥ÑÇMÞaØtåT™YŽ;oõ9!”<Ù£Ž0Óâ2Î0KNVîÜ…×–æ,ÙkOøœ0‰–:Kµ ™Û08ÊáyÏ«@`¹ý%7VËf¾×ðI[Z8ð--_÷4Àœg<6uM?HÜÊPcƒ.Çüw•½Ö¼=—”⡳ÈHä—·™ó¶{óêN„}¨áìqïñ¶Ùñ!'ŒÑ*9”•جýZž BElÞ–Én(eòz!Á¸Ëx@flÖQ“Z î¤bCH‰’ø‹+å—žãøËºÀ×Ù›'Þøì6¬ÆB[R_}˜23¾~²¶Hw³  +(¤ÂE“Ƶ'% 2ù U8`Ñ(ÊJŽ”*a Li]äÕYê@2ÊPS%?‹PL=“Ê˃ԉ'S¦ ΗÌP¿§¼•lqì„ôÞ3všm¤³p7>¢'”ˆc\ò`Q¦—*)öéÞNamݺø*2,~à{9Ï?î]¦sª„ÔeôÐ%jyð’kŠÌêâ~ù¿àe&Õd0ús¾WòõKü ©†hÜÜo“P÷d§¾}ídª×’ôø:ô>ÌÄÿxZ·¯9õ*óî¸î/ë]˜áaˆjiÅLõèxð`ñ"yIÿ1ÄÞô0Nâ_BÆô:¤ÿ7óÝí²Û6=‰™Ýµ˜¨Ú»R°…;QER¾ ÊXE ’± |@YLœA5xÿˆÊ"ŽÛG­j¡MK§Ûœ¸1ÊŽotc—2W¼ÁÙ»’=)øSE²¬Ñ×`ÒðÖãs1†Úƒ‚«|ƒCdÌçŸ+žš¾CÊ¢ùS³¸“®’ƒu$ÑwÉð®†Zœ–_a~§zÁæƒ=?‹Žôao2.õ>qzé'5(öXà ÄýR¨Áþœ½ª£2 6§âÊ8žmg= 4ÐV¯z?áC²¹X³8&îfRœi±6“ÉéÞ·7¿g/r³'<­Î-¹áU¸5Óo?~£%°:kî¢-4ä£ê@ÂÕ–ÀPÀ©Ú…ÑVè$‚òºèÏŠDsˆðW@¯V"%‡’¾P":`!{'F—’Bô4䶇rBa6Ì/¤Õ,ìËt JVCÙDEá™ @£¬¨E×ø—‡÷G7»·Xí}µ£Ô¨ù I6CÓ×Äd¥eš­ÑuÅ`ƒí8¬'oš(Pl¨‡à¢ÂÒÆ cƒNkMô8¿V–îz*Xár² >к"~ˆ¨’µt]y…P¶JÁG~aÁ øíÁ=‰Á¼ä(fy+¢Îx‰¬dÞUâf+C†Òjz®ì ‡Óñí~",„R@ýbñϧ|hœ¢)K©ýhÄës$ë99°4%Ù‚eûe= Ôl?ÿ¯±‡S‚·d¥ºà–V©Q„ȾHx*B`wkH¹OBºpTU-¾º7jmu$1òm!‹&5š“^änmOù[GÉJ%IÜ>¨àœö'i£2…Å«A5Üe)(3=DZoˆ’¶\ƒgÇ àØ(ï]t*y®zò°³0ëì’AMžß²m¶£Ñ0JPœfºÄÌlôœÚ6Ž…O™ÆD«å©²Ý;·ÛMþ/pWpsÞcý\¾‚F ¯}ÚÀT»5⸓,ë¢Ïiœ|Jüs´o+©Jf’\¸¥>¹Áдô½h÷³}ÌÆ)O!¡A 9mXÆKèÛò\ÓW¨ÈsZ‚$ˆÌ+vÁfuPè©zSHç¥y®¸ŒGkÑl­?† %.º‰K5`3÷„îÌ´rÝH¤ð`ò»„W—-ÿ¹a­ÉÔ2¶RPþè]Zx„µNA6àQ4¹@—.²D!€ÑnŸ ¯k¶ÿŠ\­ìHÛóótã2˜–‹ÀŽN¡‡x¶ ­&¤ËÅe3ÁnìjgÜ„ÂD~œ*Õ³óîŠe”m‰œe´Äï÷†x#­ß¥½V¥†.¢ŽÐQ$/#M«Ô§¶§eå–Èd#Xÿ\í«Òz@L³û¶;è ·|<å¾1‹x—‰þ0ƒ!fÐsbÇs½/$“•ü‘Ï ú‘³Ë¥Ç]ÝUˆÙ½ÞáÕ K Eytâ*ÿÍäl¯®†_¥ÍË‹,k?ã‚"6l:K³—ºË§Ì*­9ЬE/Ǫ3l½'¬4ù fÙÐî^ž³…Ù<Ž–ÑØÍøîŽõüÀç_”¾Ë4NuáP±j!Òg*X•ùµ{m¶£ìNÖ :ô,Un.‘þ\}©]\+o5/É ãF4ƇØwa¦œ)ÁA©ÈÀv+~TñfМÆ÷õ#u%§f„Ï‹)‚“Áô¥¯%¶Üö›ÕÀÌx(|ú…ÖVˆuÿ„£ŽÃß’7›…çó<.Vp»G_Ne3½QqušÖ¥X€iÈg "äD{Y!Ûó§'.°¯¡]„µOÓèaimvEúY£&k­3Zð#¤,Ê]7–ˆèmìÂÉ&X†ª¢qƇä UÒ‹{Ü_Cäxz¸ŽAŸ D[äL­~òM4°¾Nˆâ„Ò듬i Ѩ1Åb£k‹z‰ÚÌv9s«ŽMܯÌï>-ëÂÜbâí²rHòTE„qN¥'¨4ð ù´À= Ð…À˜í<1“Y~Sk³c*öºÛæ™ÀÐU±È´>:£âæG‰IŠOoTÒ]ÑÁ³6»lÔ+®VºˆîWØJáNhÅî1 à.¹ÚW” øË⌉± ioþdx!ˆ®8Œ0‚Ñ—Œ±£YÕÚµïëWzÑ­Ùyî#~C“"YÙ¾ü?ÿÖ%fצö»CÃáHÛZZ¿}°‡6}IX…ÑL#ä{¿\µäÚçT[ƤÕ[Å ú†aQJ¶”üü0 /Š´}ÿk‚æ×>Å$\Š»qÌÊŽ¹H¦×gtžŠ< pò‡%+±Ý˹&}'5f:%GqµS)á‚5)ŒÖz“&cNxXZz8±bÙĵ:U#°iÁ™’ßVq2M$R€SP1õ0Ud¦%‚$€Ô•¡L6KÊܹ‰ªX«íߪÆu´[F×F,€ ¶A§,Rgq$~g½uaèר"ìfuO`~}úZËwû 7×ñ¶–žQjR˜ýÊkä‰ì@db¬æSDQcg•?ÛmÃäbÛ*‘”1¦§œ“ìòVRÈ/Œ°¨ü†BëŒÍÿ$ý{ªc'*4Ó÷•Ç¢ª4»±ÖÎÖP!û‡Â…£Ò¢•Öûꬻ¹è,3Ä+b&þóûÖôþZªÉ½ªWUãÖ[²{þ Sw2'¦v˜ªŸ´*Ar›×›8\C~\˜Ð|•71Iü«B­¢ª!uM§"·.!Ÿé/S >‹=r Lµ¶S—6!/¤V/~²ýMÜK£Z·Ñ%`”²ßv¾”'jïA+!nT™,AÃ0¹vfpªÞÓßmŸ2=MÙÈ vÊj`:>“ˆ¥ 0OÄ7ïd–ÞÎɹB:¥:Ð}Ÿ8€úYýä€qÓÜt§õþÿÎ8¥^†Ý’ÀU~ŽØ™†2±Rf«yÒ Mº6‰¯hzÇÕä’µ’nz¿ÃV­Vrgâ^Ys‰¤IÆhc9ŸüÛuúŠÛíņ7Xd|¶æòRPÌ‹(Þ¶ ¿O"‡Þö,_ÔvÛ‘ªRZŽ–Tÿ'«FŸdÃמO‘QWŽÇjKó*¦U Ú„¬ {^÷1€Ê3a)] ;H÷ç!³ˆÚ)vðø¤Ôþ©_Õé!®•½‡¸Z;ç+NvyEàö÷m¢á˜‡Xk/0¹ó8˜?Ü0 MÏ&"2)ẉ»pkrþÈ£.áÜæ2‰+F!‰5R9K¹DFê4`°ª$ÐÙî k!ÏÝïOÊÒÎöi…¯¨íøó¦Ó5¡ŒÉË»x¨ Ǭ›à3 %‘asÝókÛݱnÏ’Q¥C¶ƒV1Û*Jð 3­Î¢w ïIæ½õÐKŠ)¯XpR–!û›SYO8·?䫞šãDlÇžLùÔÐÉ­å–¯r½ÝíÖ{ÓT¬…ÍÆ«Fæ]×{Éå•2DÐmÜÒHPŒÎ I^@‰¬˜ ª 8¦Øg5ÁÁ7AÔä‰×=N|S¾¶ÍØ©§†Ó^|ØL×›ãÁö£ñå‘‚w5É2ÎÛöǰê×·ë™Ø£Bã­cõ<ÏO~ú–˜}‹ˆÙÅüe3ØFIŒ‚wÆŒ-uÙÿ\ž×ày…îkÝ]˜/z!ÛP÷”Êg»©óFB'Êœ¾”RžîAU ñã½5‡„ÀýçU¥ùF¬.öéã˜yŸÿÛä/Ê’"“!‰³r¬apT±¯Ž·˜O÷Ö €EȉLFƧ3wqˆâåœS#ÆL0æå_!vbMÖon(Àfv_M81kîŠpðIJáÅžíÀ9Ú¥íÀ`#úÑR"”/ m‰tûÀms…ÔãiE-Úc H Öç# õÒÔ0Ì ZË0|Ån~í²©ZßåUEwíÄ|fçÚQqk©w‰¹q³´ÚÐ|É&ÛÁ_䗺ˆ•Ã?V͸„4ŒÃV+~01G*Ê_aB6x:ÖØ¾g Æ`zbØ_ó%£=¸Ž”.õŒ_s"c˜5¬¾„.~^•!Gj¬ÛŽ¿ÍùF†Í•9£&taÊä® éÊŒ¸”ŸöùQù‡I"èSdíöMÊj'rÅ?*¶Cß®Òññmo2I<^ªÎ3üÍ8œ  qÙ̆É`Ô}ª~ªshøôMÔ-5SAëðZئ‡B@K°i’Vó íÝ|ôÇO¤؈10Œ¡¾YLaÙ•æ`.Ø-nïüQgûÖxµŒCަb3!k¢8[¡ï°ÏÂb%%{8¥¦íÅá=)Ñ+c'´A:³¶‘0:tš4_üÉs5IE8]f‹+쯈éÛßËú¸Ä–wþxY¬Ê¡%¦áik/¢÷hš‚k$"”°züq¦­¿V¿»'ÚiBk¾ƒæZng/zÐöë{dzʽ´´5oÆ{É7°ÅÌ.Ö ²Û[Õ˜²¹’®>ÿŸšñ§×fá/Ä݃§¿”ïÄ:U‘ClÄӣܡ [QgÓðQm›˜K|gp`d,ô™÷ÞF×0µ}ˆ$qì–vÐñ¨§¯«nž+pfYóÀ"z‰¤×r£ð|§W"ŠHG'³Yaš¤µÉ¸•üM.Ë]·º%¾ìá-`Ž`èE@$Þs“%(€ÓªbìqUØ ~ÖÅœJÜ3ûÆŸlëâàĽHN¥ ªûtL`™mL¼¤¸®ïª éç¶<0«uõ}WZ{hìƒR@£‹BÚþP.*F­€]ø^·J g ‹ð\Çê\*ðf«M„z:Î$%VnÜ¥Û´B®=:î[í{Û ´° ¶• EãY¾‡T©½‚#Q[»vFÙ3mv옱×]-=8‰çБíÍWœôy i*÷@ü„šóFâÂPcÙ\jtÅ‘ çYcZh9o쑚w™dÊä…V§ÌGÓÕ_ñgÊKå•«B«Í>ZÍnd"êÓNBú*ÓsäwCYŽ%}Óù^oS«ODKb`|ÛPåjðšÈK£Ÿ§ÓÌbÓÇùˆ T·GT .4ƒ¸ˆ)Õ÷ŸX9E#ëªÆ™X„Çc ø™M",£Hªâº|Ø[µ€±9”ÐJN A1Šñß&V5~¼ðâÃ&Û.`~Þ¶AuÖsYq÷N„ßå´øq¦"!ða/ÍDNö\1/÷9þžç)¾å}ß÷ŸöÐÊÏ¿yÎ9ÔƒQÉwƒ´,óIn%)å„wqÌÙP$¯ Ñûᤧchý]df™ùEºs />Fc„HÊݰñ¤a»¤í MZç: $oƒ!/l·`ÿlu”»Íhåg8­ÏüÒ]tBuQ+4µõv„‹âŸ;º¸Dó"óY„@î4ø0ÓÊ Ê˜2%HrÍq¶IÕè}SéÏÙ¦‰Wæ¾$ÝÀýV9?½ ÁAœ‰Åc£FòWÑÈ>Bd`û({å·ã÷Æÿ\ ¢ØšU dÄûݺ©Y¾ãkS8 5 ¡Ãˆì EC{ù™ÙبŒÑA‚Œ.î¸Ðÿ48 ²ÊÁ¶2P´g£XsÖ¾úT“!Y1¶ù¶\’£LÔ`°¥ôÉX¨„á¯cв4s¦¹?ö<»ÄÖ5W´gœ•·¬ˆB¼&ñž5ŒÐ°€ÜH<çmj×¼E<Ñ@V³¡/'3Áo‘xÙ˜*Ú•L è’êÊL’"kÔÚ ¡¼_cGI™®æ5·\€žâC¯]9q——2‘ ÂèÅé–gºÆ$SØ÷ÐPȆ‰’6‰ÇÉ i':¤B Ϊ¹"t×rýåCñj®Ï‰Ñû銔eÀù çHÍׯ9hYm>‰± bÒŽ³¤kŒ‘þ£åxñܽm[›kóK3ý¦¥%Çöî#3ìV jy>÷yƒÑ·XDó.½KF L mžPò(| .]=U¨ ]ÈÊ”ë´â¶Îö,}> µƒ1+f%@Röi‘Gpé°Üòpm$NL¶êN哎ÌëÕF¡6-ª)’gœl-’bùSlOâà:Ìj`ëñîÇZ¼W  R@4¹Ô÷¥àã ¬ygƒ™Ï3 íÁ=bY|2ú> Å[—«íàÖlWk4Rm¯±þžÛQð{©òÇ/»f ç9á.mï@›4úo¼ˆ,‘‘¡r!-'Y8.¤šîeÛˆUÆùß.¬ŸÀ4ý:«ëKHÒjš²•71áêϺžÆM©Ã« bßß÷gþ*q7 2<¬ÖŒ®™üßÃÞé”}Fyr‹D+ÑôoSâmÄMñ ­|Kñõ{ýÍQ ’ö$@ÂX™åÁÓÅ×WŸ¡§žuÞøºâã˜çÆPí~­Ja£#áâ€ëP«[Qk¦Ú„é+)Þé!ô&rСUvÔé#Y™4¢ê抲^Ä­B¿5L4kÈÙñ¿¾oÞò«} Ó52dÏ0žË5‚N Ë_ªI)éfy ñšG”–°_Yá(?]ÙôÖc§’¸-ØÈÏd?>’¬:…ª/µ]ÝÙ³‰E¬±¼+ÍJEÁ4±µãГ(à_ h*›¥'nî ôI ®¼wmniùÙ-Ñ-¨þü~ÈêíÁ·¶eãm§!나NÎaå<"! ‹I)m§ŽÀˆ?œJÆoR"‰'p3g8WWÃi]~ž§ÌÂi´`{›Ntn$°/ÔèüÕïð¹ó§ãµð?¾uéõ°å%f¯lþl“tø€è^ô®ª]ìžMPŸ’ø a§£GŸ_$?† 1(ÀÙe Ë<[ÿùpŠg͹ŹAB_œ™"}õþz-EÜsJ•QÎe¨ÿ<ênÝ02¢d¬º›»a5‰lÖŠ²0…'U!Œzùœ¬å¶@ÿfÔÂs}šn}}Q€¯‹6taÑ51<ó)¯)¿A¨ù#q˜¡2]aÃH‘¤Ùv2–ojˆë@YÚì‰ÔûO¬>éSÚñÂÆ3°TtB<¶Ã`û5—Åîµ›á¡(?1mŒ WIH€{Ÿ{úæ·r¶”ê§6)È™ì<#½])“å+_É_1ù·mI.(ç b‹±öþ«{±Ç–ëÆ+߈VÈ+7À;¨Éë/ÜGZaõ.Ÿ5gdÛp0&§‘¶mòk5E<ñݘ—ƇñT‚>¿Éœ,£Ùº‘#zª2B•£–e4ænž£ÂLz¾µo¢àû/«Ç0ëŽr-;ß•uXòŽ” çó•Jxë¤Ð€O"I^ú·F~>9sÕûܸ¯AXÎ4;Ç‚‚Â|åéEIm²Ã ÙÁfäÂcØÔq néÄà çšK·ƒT¤¯ëE?c޶œÓúN _,˜®¦•³ŽÌœ8¬( ˆˆô˂B⊢â1O_+(T›óC6bA—ÝxL›kÂÍ.&5Ýž^ÚÖ&Þf`Œ^y´åý¦dî‹~QA9ÿGsŒ('N}Dä2Ã8›#£< W=V¬K´t‘^žÛ~š]l޲CÀºY EÝùW¢¡p7Z3ã1©ÜnÇeJÙ2ª¥¸˜r4€ ¼Ü‰]7¨Ûê£Â‘=îFH·ÕõfÖÃmÞÊ/•':´åi%séW°Œ±/ý‘ñ¹›?Hö»O{Dy6lÛYÈQu7#}ÃnàR€` ùOv «G›}¤ûQô„sû9Ð+…O‹°§FÒͧ<ÊÄʳxÌRœ/´žµÔatuì=*;É)@›öˆdÈ@FÙùÔ>§îËý…Uö”9¤Ø;¥OaÒ§ÌŽtõ››÷`’6ø¿X˜^7]e2öeìÏËŒö`JCòT 1 ¤¼„” ;çüzäÙ û“#Y§ó/u>+B[YQWTPÒæ+vê·cN¦.¼«ò™sTˆaš<›ÖŒ7­îB`+°$ô©e`ÊûÂɵ|À¶;òŸÍáËÌÍÿú'¸§CÞ9<Õ0ÂÚä˜çDêÛL]9¬@I¾Çž^—K)Ñv²/\ß Ÿ.&[-Ýj/ ZÞžƒ"œžO(x"†ÙNú±0êaËöÿú–¶î€67¸ÝÁiøz¨9â55ÖSÍŠ­Rþx²møÓ»àÁÇÆ˜QêåüñWÜE[U³2VåiïdªŽí™3ÔzÚ(T”¤~iøLk¡¾$Ë©œIÎ"!Ý%gƒ`‚¨’™þ[ë"Ÿ2œ2k†öø›Éí{2j&ÚÉÜ…$d|Îò;q˜Þt†'V¢kŠÁùZå²mét}nÝ:Swà<ñ¦‚Íà1'Þ!eˆ0‰oë–qS¡/BÁfp¶}¢b–§ò»Þì­4/爳Rãl’ß«¶*q¤ƒÇs\Èn;Ëálá³Q ÅÔíÙ×>òåĽÔôÛÍ…Ñkážt“±i÷%¥QÚ5;id=Ã?Û.ÝG²’4®FÒuN,µäít)%úŸ£ zœf:2…oþ„dÏâVÙs=âÀµ2¤h¿<£1páÙîZ )¬¿©/Îøä¡dLh‡®ñá¦iû‡s­„׈!ï œrfòKR²ó—ôÁrš—ŠŽè{Ô ´„¥6†-tHèú5È% ¯Ç „i‚C¡šQt@*Ç1}=I›”T²q¾ZIź·¨jtâb¾Ewð&LáJ¬çeM?Nš}Ÿóû&ùTµ×O¦›Þ¦‚ù®âããàAM`€”è*¥ô•øÿóav’r‘>¦<Ïz™äŠÐgkô?CÙ[Eˆ¤¡ÎZt]3sc€‹D·+AQšÌÌ…¸;˜@C=΀€P èìúF>JÙíšœ¦nÃ:¾¨R°xobm\YÊi‹–œ‘Fá~ °ª®ýrN|Ê8àÊöD/Žº¥”Á£^¨˜q³IlCîžE2BMdU¹/ŸB·KNÈv†gÊÒtNCô˜Äû÷ 4Ÿwi±¤\¸žÚH‚0^±Vv±S‚Õ•bÀ´2#˜X†–´¤‘‰<íÁ5ÜÆ,àçR}‹€}è»')'…Ýû§F¿Bo®ªØÛfu§]޼åF_! Gø63ƒ%Š<ÕÞ˜šô49¨=ø Mɤ)Úu!“Ê|ëiŠÔÇ.³K¨»©±×VëCôÅ–}¹ ¸g"X y¨Yébí½©ª­Ü?3±u&¾3 ÛßC(ב{ Àì>.Ìlȇ l”8MÀ‚÷lïÁ:uëy‘Ó§Ï!™¶±Ž Æ 7”³dLR‚ˆ„7îàed•"mN–%Š] Ý=è)®¬ú®ŸÃ›ƒC˜·>£®Ë›³S•¦œq¦Rº7åhÈ©ÚÑ/P£Qî£E >µ*ßþ‘<ôV›³Oéˆã¹wÀŒ\+Ô*dî„}e}'9F`&Ü^ó›ÛºÉîÅ¢IÞª›¶G¡m•iM«­Š„†×:µVM¤ˆྫྷ¼³âWϲçý³v³£-QÆ2~_ʈ—,aN¾;û]»ÆÒrì.!»GO5.)DÜÜŽ>bIÑüeÐùÎÎ h%\ïöeuÝ»-I_z|‚;ê:Üð±%I”ÈÌB¢©m ØÆº[ Þ÷©Gƒt {û–²¼õöc ¢a8h€ß²wÔžs£Ï5‚›~1åÝ%auîƯ°xxBÏl¼õo­Óv0•ÕZ-ÜþˆÔ¼­„Šc‘$€ŽW#•¨T®OÁìJÖ‡È'# HAÌè­Ä"­¨åY™Îjb§‚ש§€KðÔÐ!µýcÔaž\"bºdoÂQFùøIûJ=œ!t"ø”&^šŸdžqá™ÀÞ¹:Õtµc»ÍBÇÐêÇILQ³›+€Ê[ãTP[T0_ß%³’ñv½—7ÄD!5Mž+³ÊH媟0Œ¨,oƒiç]ÓØâMÌ]p‘þýÔÙä×§cÿ ÒºÇ 0oeiníXlõõ.ûhcß™¥×Î,ƒ¤‹7Y4;ŸˆÄ/ ÑÈÂ1—M[ðšb!ø[ð¤‘Ve~–õVîâ#±|ïøoá5» x¡ANx?„ó!ÎÛËyÁcç%Ћ·Ñ»…_͹ó̵»§o¤±ZIû—n—SUŒnªª€ƒ‡}ëÎÑ&šÆ6¾a·@°5:þœŽSG3/1 }CØž1(ž»Â1ÀÆôSí1Æ#XoH LþòC–­Œ¢«Ç¨9kb註#Ý Ö ‘¡˜x˜;¶è},Èl%äë2‰"Ïè‡G}èö7´—î>"‡÷ª³Ø Î2ù³Î@ >+Ö{X_ nÂñâ«Î´g¿ePšþ‚!L€ÄgJ”¨¬p;‘gÅÅ#7º¯%¾ ø9ª™›ÕˆjŸËh1ûDÿõOŽè\ÑâħdWQR˜:¯Xß<Ü f&Æÿ³øÉµb=×`‹«<1Eâ]Ä«%œ¬$”óõý„—ÏûBq¬…Ä–ÛžšHmîÇ“>¤»n¥VÎË(ãþ‡L±ELqâå\ ÙÚß;Ѫ cå¡£f*J+:BRã9ŸÊgv<š M¸<1_2ï–N|êg‚^™§%*‹a÷Ý1`!Ñ â+eª‚ÞP™?Z›fW~fQïYÅ2\®|€ ­bx:þÀàÿh4ëïú|$½†×Rø8â|Ù‡q‘ÿ“t¥iòÀ§ƒ,mW+O­iË(õ…1J™K¼¾R d‡¶vÀÅØeÒLK?÷ÔL»>j߆GùcFmÑË߉tO¶‘úÆ…$’F?HDª¹ 4)_|ÏâïŸÀŽS9Po×à™l.¬×¤ÌŠpWi\&¹ÔäB±'ó´Ãëe˜*=Övž cÉ)ÎQy µSìVç\Ú(&ƒ€,ãöhësÝS݈µ[À Æ6\v^©.qŒ ¢ê¸5îN%y˨_‰0BÓhu9$÷˜ቧÄÃlííÏ8XÓ‰ù‰ +Ù:ºž°—a3©ÕAc$¨_e®¥•A²IFmíw±öÎ:M¨Äú¶J•Q(Ä<‡Ì¯À•iñ;@ÛãßlÁÔRðô¶ŽÓ‚>xçë±³„–ˆÒ_~^ 3—‡ºt\`?¡«D¨÷ý «©bi7ÊòñâM$E¶¬€Þ–K…§åîÑ”lÄA~UŸF8›yØëñ´wR¥8ĺº¥Ê¨ß¯¨ªMtÖ”\0hcX˜Û¸¾ñøŒ³§ÚÜ2ôµÇ=OóR[ð±¶nDîÅÕã,EÎwPp2G©ºëòIÜšUXíÜûêßRµbäŽ"¿(g&ÈÚÇ{'ÚàS”¦— Sê'ê.2nFÔ<¶…®Ò‘”»“Ž“ûœ}®Þ$Y`E¸s0r»Ä«‚fí»È?¤xf 1%I'µŠ`º_2þÞ£é'­­ð9#¯Œ)ÜP-[wJ¶¥Íæy[W8¤hyÆCù)\ió‰ßM+׌‚„¬tÛF@­³‡_,h¿Óq§D”ák@oòÆpQº¤ÙûH Q12Ï¢lh8cut] 5L¹á±ôX·¢)†ôœf¾t Oün.*Ö w„tÿ°ºñË!§%/fQL6+<íÿh4óÄŒ™Ô¡Ôk`‚¤qâ1ùèq2:&n¤ÚÆ©î÷C]PâäÅœôœZƒ g‚¹¥óVä¹wu‘ëËE, 9ñxË»•~ˆvh ¥MQÇŽ‡è×-æ°aÈeœyK)QÐ ) ¼ØˆðöHíQ}¥$ªºLâU~³<»5O8eö©¹Úíê#­ôI#Û/”6…²N¨ÃW¢ŒŠï °Ryš}?S†k˜ô_ùðïIÈð:›³JÇc;zLg‰rö–b‘Ÿ"º9Bÿ€*Ô7,ÇÈÆatpèM‚í’’î »!ÒÑûÕÈuÜV2d|E ð舌•6ÅÇtB¹Ø`s¬,ļXH1×:1‹ LB}»S³åiÝz5¢8$ÉÕà,™uhÍ%Sæ¥ó5¯gÛ/í°}:XÛÝU2[XW<·®æ<Ÿ»d±X‘¡Ë]|ÐfP»6æg|Cø³bzLÌ6¬û¶cñ+ÿðÓJ%W®½ôN𹺌é9ée#mjì0ç³ m‡ÔÑ΃T¹1á«¿ ™j]º.”Q/0¤µQ¢“®[¦‘0°LA¸‰ã¬x°Ž¸h‹ IWS(åVâou€á«?«Ì_ŸÆ;²ƒŒR\£ :m&­åP¤™ pŸéiÂ^À¾¾:ž§ÌMÉò; íLÔÖ€œfö†º¸ƒ»=ïÜ` ß@ØÊ ²$)Ýü6 kj¥8®ÆÈÂ>÷‡•§-.³i èJwµx[ç½~©¯bmÑ?hO[IƒÍ­a\¹P:æw˜ ϰù‰Aã[ØýT6Û1T¨·žrƒÓ6[?&Ù¤TJÖÆÚb0eA„”Áó4†º‹ž¡bŒn…„ù«4Xc¶óÊãñÛ¤£âؾßî…eLÓC òpõ³õÛqï6^å×2õPPïªã*òTƒÓ¬RMaÍ vӣƪâ>3~¨ wËXËqú„¾¼þ²WþˆRB¡ó/ ¸'Hë 47ù˜Â”Üam6{ØÐº"ä‰3E¹Ú˜À£þ,lçk~a‡Ôýë)w ¶~ëñßdweωwšÕ¸ã–|OÛÍns¼Eª|Yì$L¡Ö"X›JUC°¾¿ƒ»ªd”, ½U*7#.:L¤2ÖŒ¾"¦wöc@K¶Ê&ʬW–ÀÀ=í€ô‘ÇWí½ÿ|h÷[hú}à×È•¾ª-ŒÅaÕ§d;'¾Jý[”–N(ü œJ¤@ПåWHoK<[ITSw3¿2ÈvaßöÉM¨Çã R >v#ƒ XÞôÞ)o‰3Çè–À™lÎAb~CYª¤ 켇‘³dÅÈl•oo5¾BÆyg¡G Iž vÙÀG™#ýˆlÙCèD÷àíû]ªñVx­g–zq¯x!µr.Wá3'¾ËÛ^¸ÌÌæs”Ù[ºIÊOœœˆ’àAê.*»ÃùXݦ Ñ0kã*®Mñì`SyÏ{çÒUŽÉZ‰¥½El—ÈÇêß¿]Qö踀é- ÖåùH¡T|‘6ÿ~B ¡Ï®Š¢‡Âñ}‚ð*ëDß}CŸKt m–ª¾ô]h¨>]׌v[»ñ3D’ì×Ô˜ãÅÛ,ò"7KV¦{tüÓ4"SÇ&Þ\À0óö}RTR|ÒBãÊI&_:â}_¼S&t¼5F´¼YÉg™›; “”§Fg˜`Rf|9ëmS)ï¤ [ß I¢Ž·±(2—œP­øédC€Æ >0}`*épν·€tÕc“êÞ¶{äo¢qj´Ȥӆ‡iF³1]øyb>žú 5óº`8|*·g ËÈ#$£IŒÏøÝ_±Èa 7F0¥c»v{’¬ûýóö7©CÃ’˜ ®óQ°œ]’Ÿ××P¤„JÇY¢- ã$û“}ð\CÎ[”Ñ]YÞYvƒ ‚j—»†-ÇÐP›[dñ¼ŠÓ M™áÛ6df¼€Ú]ëÕß½ø©‡o€úƒ©é: ÛÌbJŒÈü`²i¥ýKmÏr1âïÚ¬ÜxSÿUéû÷%d ¢A¶°4Ë¿uj"‘“5âæGÔgâF1¬ï‚Ñ\À3$^ñ|"3±úJ…@h©í•í'W1Æl¶\x??e{þïs¬£!2—it¬ìMŪÜöàÚ*<Þ±©–Kj±—ÑÎê6½U0°Ũà~¢øÍ¦µëß„öžÛÒq·ÂDËò -~T85¡bj°x_pÒƒ¸C| ¦½è[3eAsQü¥wû¹§ ÀÛ\XàW4òs±Û±¹vr’þmê}J¤Ç ªTFÌ8Žº:»î&4Í”‰Ïß^²Xâ;í4{Ÿ·‘¡åÀî,hÊu3@P)Ò„ ²¢¬ü2#·ÜÌа6¼±šÕB¸Í‹©û,´“ŒkºÞªƒnˆÆIÛ™{kð¬¾ÿñLìåÝÄ¿¯‘РuÀT6HŸË£óŠÇYë€WŒÚ>à‘ĉóW*ÆåÄÅg[@—t8×0Méó ¼nR÷7&Gæm‚± )ð”O¢òÎ ˆ«¸ûK;Ú=ŒÇ£îm ²ï=ê,»?8·Š\ð®ef"ô^ŸÌw°º+î3ýíÓ׺<®†D|†˜¹pE–Þ#øLbüW\´z5Ï“ÒGCûp_«ðû×Öqˆ@Àw戻™' E ZÆãôð‘º϶ÃÌÞ<èaävrÖZðéeì?çàk:¨®FéË¿û*B-a¡¬ëѹª…½l؆Ìäz÷N¥¾Ö:d×µx´¬ð_a›jT ßÐ4>ÃO€ùPàbtâ0•3⮋ûðð×»?‡Ý®sÁݨç§.ßà­3³K­~‰ZX|†þ¥E’…?æ"‚´ã6Œ¼Rlúå «mR%r6ñvlÕ£×Ñ5@ù³ÎIš«xêÖÀm–Úô{Pð5ßC„()ÆŠÊÜŽåJêd]ÝmcÑÙ%Jž¤§–¢¡Í¡r$q ÿŠÜ >æäççÏ™¨m§î¾D®Pw~FÜ‚¨qˆÉÑùR:°!ï:{_ù‚‚z‘ø/"b³KeÓeJ›êÏYFy•%C¶ ¤”¨;øŽJyq-)¢H„l–CÃeAð®´^µM2‹X`u#.RwiVÄa]!OêËË”é¢Âˆ¿X0TnÒ0R&0÷Ò¾äNù/Þ4©£çè®% Lácß>˜¡bªÚ”5>‚@UñfA‘Ë} æÐ5ÒwYÀÆëÁVùU¶ÁsÓuú儊.}LÞ¡r®Ž÷ ®ß>¹O©Ò5;`5®ö±„J”$Òç÷Jf0‰+D•ˆÍ°JȸuvN‹Ó]†ZœšCíõòJB«yâêõÙ‘é¸ÕUù1ÎÚÎ{75³TSÞ#æÙ$4o‰**ö94îB™R9¥§/b/NïèM¥v"ºpœ½tw /M7dQ–XP.°¼=«‘Æ’ÐB΋Ä!°Ê䩚I(4PÛV^.ÒQ©‚ =î¦M¤š™avh¼‡£Åz‹(=%çx"ˆ€lXhj3Â/ü´ \Fgzêa7ÔÄO|gíúªwxYø Íÿ•!eÎ!ÞíÓáq›E÷¿ˆ&"=7eF=1=-Ê{"B~\í²…óèÁ•“_uLò3÷|û¾1ñ8o¥[ÄŽeƒ˜>WÏ>¢Öm<3­zu›î/¸iY;´ Q6‰.½Ïè ¬5Ê\Ìj­µ#Õ+Y ALæ¯]¼šÒ0ÈÔçÂv%œÂ;Á6ÌZƒØÐEƒ‘…8¾îäé”§³ŠWã-Snhðßž0JV$Y4×·•Ç‚rÑ4ëí¦Á!äÕ5Rá»É}¼£ñ*¼_«¿[6·Að…ÉÞ·ž4%CKWnº>ŸŠª¢µPåê )Y–×HàÔ•râ>¼fS»}JPÞòí%«rû™îÔw/ÙÒ5‹qÅóF(²bŽ‚ÁÏ‹"iò~êƒð¦ÖáÃq™E÷mu‘Éíew¢|B^œnÀAB° ¹ "§mS/*x Öæ©T‡ ìÛ÷â é™Zî%|@ÖׯPlLuX·'ñÀê[æ¼€æ³Nñ¨+ãŒ"Û^爾ΠŒxêÂþº–E«´p]´·†qkµÿÿ¯REâVv‚t/ï6: ¹‡žaÕ¯ÅÝ99Å ÎSsŠå½fæ`wcSPoÏ­%wH9ÈýR?Š ÈEz¢V‘ë\PöWäUO6¾V*¿º¾ƒ¦JLT$CÊž‹«–dã1L=ýÎßÔØÓ…OŒ 9E€q£Jh2«-‘Z±Fäâ1.S¡Q^çV=®ã¯¤ž‚µßádZ²Íú=åz8ú)Lx¾×•©ÂÊ´4ºÄ ë>0 ‹YZsurveillance/data/salmNewport.RData0000644000175100001440000000575412376634041017146 0ustar hornikusersBZh91AY&SYñ$’?ßÝÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿà à|À0<Ÿ0>†AJˆ=M4h hhÐi ÐÓA¡¦A¦†A‘¦I£Lš2112d40›SFÔdÂ`˜š`Ú@oõTzi‰íT+ÕM5'³iµ£Ôz=5¨h€hÐ@J©ú§§ÿµJF"Ÿ¡d"z&M)妆€ h€€Ð ~ÿÕU@˜ÀÀ˜F0LF˜#i€IDdCSLSôL§E4ÓÊ0i 2h@ Ó@d ŠR„!UMbòþï€ÆÊÐÕØî8º<>@ü"ÇJLÏ¢F’Ù>Io>»«Øíظ̬í-m®N®ïoþØDcd¥æèiQØZ\)^ÚnwÌLœ¶Ž›_i¼ÿ‹Èð÷ꃅA!)17AIQX’Ñ*ƒ3t›{®.nÎï/ðPpŸ(˜¨¸éY‰©ê$Uuö6©S¸¹xÝžŸ`=žøHtD1q²O2ß¹©Ú 4TõU•âÎÙ-Ê“CDDÅ}ÿò2’²Ó3S“Ô_ÔTÕUuµé,límÒ¦N¤é¹Ùú:JZzš$uu•µÕö •¥­µ¿ù-Âk”êÝk„×)Ô)º8ÇqÇqÌÌ$Ñ?cJR”¥)HBš©+¸H$‰á£# ÈjU (¨•*2§‚TI@’@‘I!$YŸÊße²2B$‚2*ÈeE‘d«¹»ØH« B[‘Œ’H$€HH²,’0…¨²-°[!!"Ki«)¨2# HŠTjYRH’222$Œˆœ¤ ˜ @•KQ BE¶H@?ò \0°P ˆªJŒƒ%J‰" ’d  “`[$XFéP’¡*€.…„±„„•T2 „ É2NrŠb2ú£0UBI$D C  #UÎY$‘˜S Š€røû(…ÔQäí«"’š5AZKÌÌÌ`€dÍ/ ;IU›A€U M¸ õxp¸LVa– j¢ÐmR ÿGÏÙ ˜` 0â`X‡M×ôV^žÃŽw]¡Òqßx·ó÷…BÕÕX€ˆn€(b€ÌÌa9Vtà %¾#Bòy2©­ˆEÌáʪ54jÈ[¶¢Û b0–  UFX@U5ñåˆ ¡§ÌX ‰¯¾" ©ÌYN‰•it–.´ÒX°‹³›X똷®À¸ÑØU ˆÈ"‰ü Š„íGÏŠ>RûA€o,É.1¦ÓBD)±™öGÉnÂóóódS9§Šc¬%M=iƒJ¦Îý]78Ÿô×’ /#I!£”A¬©­Oy®È‡1´XI‰Žžu%|AÏS ÿ`bœœÅ•m¢Ýž(½a: ¢tKÿ ˜gšÿ²Ž\Wá4ëBUQ÷tÈ#h2Ó0„jµ*ŒÔ¨¢rÆxS” •AÀëÙ†„NºZ­$R„`¾Q‚Òñä«€ì® +Áhc]Í!dšë6(ìâ·`n2{îœ$·‰½µ„fÓ²°Ö®8§Æa¥N`By$÷ø2tá¦q[5¬‰Ï9*¾6‡¾Á¼6¸>òñ NˆäÎÓ=u²­r2»|o£“õš¶ÂÊÕ¶JÃÑ#¤\E RÊáÒt“-x,±·w‘z!y/£—´îLûú0!rísÚêì1öÛ‹C³Š¼¨,5}H&‹€ê®©ÄìZ‰Ž¤Ö„¡ÍiY³^&.˜¾Q2¢ú —.]â[¶w±)mÜ()YÂò§9|T³¼™hr"týGŽ¢;§ê%¥ ¼k•QWRˆL²…Žå•báH 94¼ê·¼ËŸ*“µ#Š3U/{ÙIÞTuެ•Áœ Ús´ˆÐÆ¥ã%Ù( ”eó D€ M£,)0[UI”žVÛR‘¨D ãZA2 Øfñ3çkW?iBD.‰œóxY$Jl¢°ZG*X Ñ1M1Cr6 Þª"¶C`[L<¤ˆ$©¢vL v‘Á‚¼…¿ÐG‰š,oâŽCD¼rœÙ[r¤˜ËL;#>fãÅ¡ÄàÁ›ƒ>Ô3¢©m–c’¸Px©¯¸  {ØÓ§¤S!Ÿ³ÁÔ·$“Òë¯-СT9+ÉS­1êЂZã£B¤‰ˆ³´Ñ`ÚEäæþjÁwúš"jAÚÀ6°qDq_@(_.‡-˜ÌxéD1ã¤1ã /ˆc¾› }ôKï¦ÂI$‰/¾ûKà·Âøßu.œà€ÌÎ`{ž÷s™™ïyÎs0˜ œæœÎpg3Ïzâð—µ-‹Ö—®®Lì€äÉ“&K´/ºô/¿šÅ‹÷Ýz·Ýu×]v•ºë®ºë°Ü ÓAUTËä1Ö;f¨hB"6è ŒDâw “Á®$@‚¾É` K˜0Úv쟡sĺŽÀ²€ô!Wô Œ…ã€9ð ȨrÔ G0à ìs%À߀˧ëE€$ ›ç¯­6Ûm¥$ï c90ºñ´²""\ŒãÇ}÷ß}÷]y}÷ßúÑ9âùoª½K»ú‹Á]˜¼¢ð6Êæ.û…Ï/0¸6fµ^»[@Ú®-MmnBÕÉŸÐv+W4]} ‡ÆE·]^ãquø`·,\þu—W¤ò4åq/B»Š–­,\ÅÔ^–.ÝxŽ;½…w[ º\KçWi[åë뜾;}¼Þo·»¬º(›Ôà­.æ­^ [½Üíï×ZÛ-ë¸ãµqq«»Ò¶®UǶØ]ñ¸,¥À¸‚-ÀQ««¶Ù5tò¦ˆz8uL™Ë´[.‹¸â×j¶.âk[ÒÝF¦Ž×çp ‹båZÇl[¸Ì¹l½`¸Ö—+VÁqdˆ–.(¯:²à<ºgDÒ0g;ų…¹¥Ç·5¹”MlêÍòêðO„³s¸à›nõxí¹¶Ô^g¹á`×ÙÙßãßï(ÙÃZåéy¬ámX¹d]Z[EÒ-ȶÀ-ήï{ƒZ±lOíù#&%ãMÚÒýžÔì]îÆÆè½tò¨EÐ\ `% hËWo·ã×[‡™Ó2¢W¸÷{8ØÒ×1-ë—.]xb&Žv‘HR,’ü°°®°UueUcÇ=y)ì‚êæÕg<µ–4€hŰÀ\æjBþŒhs«€¶€è€C;#C`ÄO oX: <Ï@_†çõœÝ€¡­Ã´ÞŸlð ÷!À7€#ÐÀ:ºÂˆÑ  D¯OѲ¨‚Î2:fr^LIËÇ#'C':›”, QÐRVŠŠ`*R ºÔuHëŒcYƶ1¬¬ÌcÆJ™2ƒ(1ŒcÆ1!4ÆU!¸¨R¹œç9œÌÍñÔØc|Ü2h0C’I$†!À!˜S½ï{ÄÁ€Pöfffg33Þ $’H`I$J œÌ@Bèˆ]  !tD.€…ѺDBèˆ] ¢!t.Š×\’I$’I$žI$’I$’I$’@A½ï{Á$’O?Æg3™˜3˜8üvté£LïCBá ¥þ‹¹"œ(Hx’I€surveillance/data/salmHospitalized.RData0000644000175100001440000000727112376634041020143 0ustar hornikusers‹íœg”ņ§ºgv bÀœ³¢æp èl`Y˜Ýgw¬HF`$9 1ç*(Š¢Â}¿éõ¬Ë¹Þs÷×ô9/=OwuõWU_Eª·eã¶õª´­ …¼/y¾~†=ýãBáPe÷.‰ÆŠšÆK…¥ÑXa¯ü¼ó*&’ŸˆçvÑêŠgŸË…ìh°¬I¿à|9|%|5Ün __çÀáB¸NÀ¥ðMðÍp_x< ‡GÃwÀãá{áàIð#ðTx:ü$<ž?χ_‚ÁËà•p ~ ^¿¿ o‚¿¿ƒ€† xy(àå>œ W«Ã5áýááCá#àcàãá“áSáºð™ð¹ðp}øb¸ ||%Ün _ _w‚sà|¸ŽÁ ¸¾ î÷…ûÃáÛàáð(øø.ø^ø~xü0<~~~ ž? χ_„ÁKá•ðø5xüüüü1ü9üü ¼þþ þÞð ?àYp¸\Þ>>>>>> >>>>¾¾¾¾¾ n·€[Á×ÂíáNp·»À18—ÀÝá^p¸?<¾ ‚ÇÂwÁ÷À÷Ãá‡á)ðãððSð\øYøøEøx)¼^¿ ¯ƒ7ÀïÀïÃßÁ_Á_Ã[ámðOð/ð®€Wz¯Ì‚+ÃÕà½áýààCàÃá£áãà“àÚðéðð9ðùðEpCø¸)Ü n·‚¯ÛÃá(œw»Áq8 w‡{Â}à~ð øVx< ß ßßO„‚§ÀÓà'àYð\øøx!ü ¼^¯†_…߀7ÀoÃïÃÁŸÁ_Â_Ã[àmðvøxgÀ«¼€WEàÊð^ðÞð¾ððÁðáðQðqð‰pm¸||6|>ü/¸!Ün _7‡[Â×ÀíàŽð p\wƒ‹á$\÷„{Ãýàð­ðíðHx |'|7|ü üü(< žÏ‚çÀÏÀÏà á—á%ðrx5¼~~~~þþþÞ o¿‡·Ã;à¯v¯ŽÀ•à½àð¾p-ø`ø0ø(øXøDø¸\>>þÜn _ __·„ÛÀíàð p.\w…‹áá2¸Ü¾o‡GÀcàqðÝðøAx2ü(ü<ž ÏŸ†Ÿ‡À/Ëáåð*x-ü:ü&¼~þþþÞ  ÿï€ x xM®W…kÀûÀµàƒàÃà#ácáàSàÓàzðYðyð…p¸|)|9||5Ün w€¯‡sáÎpW¸¾.…{À7÷Àà!ðPx<‡'ÀÀ“áGàÇàéðLx6ü4ü¼~ ^ /ƒWÁ)øux=¼~þþþÞ ÿÿ ÿp*p* gÃUáêð>ðþðAð¡ð‘ð1ð ðÉðip]ø,ø\øB¸>Ìü?Åü?Åü?Åü?Åü?Åü?Åü?Åü?Åü?•3ÿO1ÿO1ÿO1ÿO1ÿO1ÿO1ÿOóÿr‹áÎÉ|s@›ÔºiåÃDJJ£ÉRy l‘RK…+ÅsJò“ÝóÕ {ÕlD×l„f­†yª­”qÍ<ÛFó8ßÅ=[‘Fxkýl†÷²Ñ‘ÀÍ+le@£c§’Ó(Óifì4Zu2ЩWwª‰N½±S¼N³P§8zo·LÒ(Ò©%wÊ}§sêEÜéŠOÞää1ÎZ‘õ¼û>d#A=Úv¢d3 « VClÔi-»Õ>QZ-M’N;Û,úVž·¢Õ’iü¶ÙfµÖÛjÅwz¿¼Øi$åÔz9õ®®Ô ›Hò—ŠH·z§–Ãé]N=¬-]¤+¤©«(Ö¢Û¨b¦4»çð{8å`yo=Yw®™óXË4’´[Ø1ÅÇ’¯æ3`× Ò<ž4 À~+;Å äúRžß‚/x¼÷Plˆâ_Vòa§8œòÂ=ŽoiFêTÖžfjîgI>â4Kpò'_wÁ8ÍrÝAÚ¬ÜFÅÎF:6ºz·™Æ êÉ|®Í¢nجÖVÎî& VQ_ÌÏlV²„´Úý¡”é\òÄüÖZÒ]A9¹ýŸwÍ©KuHç(ÊÀlmÇýRë ¾8[MØLø ‚2}O°™Ï2~O&=V‡lÄÕ ÿ·|·ºÂûãcVW¬Õ‡í6â±UkùFsßêã(ÊÓÒlõj#ï™M^ÙÈÇ|}«5O”£µUßâ›[I[åàšåEhGp=´ Úˆ?݃ú‘¿–¯Ö³[éÀo³u0¶š%P|m$q˜ÝÖÎåñŒù§µ%“(£±äÛ,òÉ®O$Ü3”¹­2,Æl„¿»·H¶BeõòÓÊkéœñ§t® ý ì°Õå2øò5]×’¿v¿5iëÃ}›¥µlôm}˜Wnœáçš‹U n¥‡®üPDAŠ£Eù¶¹o.ív{ÿ9švéÛ;+ò”ª:xÕ‰;sdŽÌ‘92GæÈ™#sdŽÌ‘92GæÈ™ãÿ|ØbE–-WV°þ‘m×÷´ÞQy÷ÏÔ U°êE“Ez°ŠÅØ/¬àe”QFe”QFý·ú§F+UʉüdN¼¬8/3dÉ(£Œ2Ê(£ŒþWýSC–jÅù…]4dIv‰Çµ„\Åo ¶¬UðÆ=¾ío›Q=O”Å¢¥…ñâ&Éhî;uÝ"WKs¥ç¥é*©…T õ–žn—Rkéné ) Ù·ÐþmR‰4G*•ÖHódÁ•¡PÄWkJŠ3ëi¶Ò¦4f%u~Xê%éù쥶{G©PØJ¥£tí2…›ª8¶J“¥zŠ3%}*§w|.5‘ªJvÙn_ï@é]ÓóÞfI6yí¥b©‘´¿¤¼u¤iÒbqI¿}Ùãw×ïotn))éYÿ½s¤8ÂJgD“}ÛÖ!Iy”u­$»²”¯Y1i˜´›%Î’/gJ¤áÒJƒâ«”/)/³ß—ê>±ðò©È ’ü3¬gÃS¤—¤*|¥ß{\²϶ã\á¼±Ò@I>ïÝB=j'YØÚRIïõj)üO:w’ä#^™ÔŸµ8“Öás*ßp Iù–½‘S¤³õÛòZéÈ7ÃuΖäÓ½+¢°½/¢² oWòÿðIþàËŸ|ù¡/ò•.ÿDòÞêöéÙÖ(ØÕëÖvºg¥IÒvl+éôòk÷fPFîUØvr['?ó΢ m×ô6gâ·Êcï ½Ûڥϯ$]*Éoü>Ò²U-–ÿ…Îf§ÊÛÿRš/Éç|•¡ßWÏþ<ïu'Ï—l7ógøØPv›Û·aªé]ójëÜ:Òa÷»H–æAAZÜéIõ"ý…€ìòjÐÖ©sjܦ í4vjçÜNÚ”‹%ÕeïP©­t®¤ø½ _øÊ_>à_.í§kÊ3omj7ò§Cð¾ôŽòå¼ÏÒЛØò ûBÀ¾Rp{…‚Ýþ¶;û¬àº«Îîæ+Ù©}ˆTƒÜäAŒ2¶û¶‹ÝÚÌGõÞªø­µ3jƒ<åƒ÷lG[(óT<Õ-Oí¢×Œt™ß~-Íã¹¾´W*'/_¨EÙ¼A}±óKÉóMÁÎìô×z&ý¥@Kv—['ù姮ε¡\TwÒ»Ñí«kçä7NïrµÈ+ÕqϾ¦/Í¢Qÿá#]ôGy¦ÛÈmÔOŸ:[@ý“zj#½ñA÷mÐ"êƒú%§¾È©]sjÓݹä©}Ëc»’ŸÒoõN}OúK‚žøÚŠôWªNý™S›ïÔ>§w©¿ ¾|0ŸÌ¥Öâ´zåT6é/[Ö†‚~kXδ¯ÙW#jS}qñ‘¤>ÓS›æÉÿ½«‘ú)¯#ö[Þ÷ ¿ºRw‡“—í±Kýµ³¿-`;®-½YA¤wgÛ7ƶ3{­ =þ©Ñ“_MTð÷VÂ99qÙžK…ÿóHn·öh‹÷ûë ‹ÿxs ªšHÆ»žYRš,,.¨À°Jv;š,(ù=‘Jà.åÿÛ-7-±ÒøsNøZ¶*.;Íí-È/—g^IëËÛW)õ,ˆïÞ*w¿r"/mžÌËO’=¨¹«œ15Z%4ZŒÆZüŸÛg×ß¶$;7^\šŒÇö`HÕôŸÌiXÒ8½é:T…Ì*¿¡»ZQY¬´°8^$SZ·úkÀ¿Øí—”îÉÖ½JÊäg…±X´87ÿ«C;ÿ L”`Hsurveillance/data/rotaBB.RData0000644000175100001440000000447412376634041016002 0ustar hornikusers‹í\ l\Õ}óÿlÞ&vìÛ &$Ä1£q°BCcœ¡@œ””­ÛƒmÏþŒÓ¤l¦…¶P"6! ,jUµZ$(´*mˆl8 jQ+@´Uº«tB€{î¼óìï‰-Z©´‘xO:Üï¿ï½{ï[¿É «7/)ß\®”r” 8.ÃþRaUõ½Bª«K…܆’7‘tÎëÀCØÙ¹ç%¥sÏ/G4ý‹¦{CZ¾·šô8ÊO!ý8åç‘¿”4Cù5¤·R~ù¯“>CùÒSþkÒ¿kù¾°æ÷ՒΧ¼ôLÊ/ ÿiòYòבÞFù¤Rþ=òH_¥ü·¤okùþ˜æ÷Ï"]Hy;é*Ê7öP~5ùÒ”?DúMÊ@~”ôuÊOúŽ–(#­×ò-ä—‘®¥|išòùÏ‘ÞAù#¤OP¾›ô0å?%ÿ'Ò÷´ü¥JÒ9ZþÒbòËɯ#¿™´Ÿò­¤_ ünò_%}ŠòHHù/È¿E:¦å£ Ò&-m%]Aùzò—^IùvÒ[(¿—ü×HŸ¦üEÒW(ç:ý›–t4°†ôxÊ“¤+)?Ÿüe¤ʯ!ý2å\'¿AùwÉï#ý åo’þSËE4¨ŽüòKH»(¿t å9ò7î |éã”?Kþék”ÿŽôm-?Ìurø-?ÜL¾ƒt å•.“6§ð~új¥÷¦Pg‹šJ'’/¤ü•œÎ‡Î.ª¬|kJå¸×“Oû[Ó}P­^Æ+DÀ9ÀÊ É®3 4³Ùeã€9Àjè\ÝÀ'ðÜÙ |_-²Ç€ààaà]èCŠàYVØYÀl ‰ýœȈ AçTè>lÁóç!ûÐÊö¤mYiõÀ ÀEÐÁ q^WÊíÄó§ û «m.í©¤=ÂKpöBoðÔ»u•ÌÆú q”Ý#`W ‚ÁA¡õ´ÿZvªÀBÖ{¾ «` bæ^Œç¥É–eüè¯ìëé—ìŒð7´è|ðÝŒM"à÷©‹»€W¡wè;ŒïF¾‹³Îé@p °ÈDy';þ&Ú£¾K_V«€[¡;¸Ï»€åÔKÐña>Û¨ oüdÎE—pýÈ|YDý*Êõ «‹©e;s8&³Ø_œúaÒ(Ÿ?2rËø•QÏôcžËiƒŒÓÚUŶÂãâ¢æÇ3¶K¾™¶£l»ž~.ele¼e'¨e[¢WÍúQúÕÄñ`ÝÙô+°+Lý(ã)6%“èCœuÜ€ýfÕSÿDÆt.uãÔ»*Ù¶Ëx×1–u´Ýøkc½8ëU±ýÓØ_-uÌ8¹ÿ#>«)3ãe_¡€ß¦n9û3sÀŒQpÌL;f_2º&žÁùgb§ïnI{ª¤ cWë”α`=_Ó¾Ù+Cj²&&ÁøÆ£Ÿ€¾é+Âg±%¡&ÇÛ)iÛôkæU0¦Á5kl‹beêTÐ&WcS°¿àÚ7k.¸¾ Â%ý­VóÒ™¦Ù÷’À¹Î$…³¬¸¦k Y³H2ÏPú,[û<¥ç«™k1Æ/L}±AöÒó”Þ¥¿¹ôÝĬœz²Vå,ÙàP8Šk¿–}T²í:Ú/çg?p7°Ÿú-»ÙÔ-SçžØº€>J?÷}ô©ž}4P§…zŸF9q^*¹quѦ¶)uQ.g󣀜‹›W‰¯ì§²¯6±íu¬·Žþʹ"gWž>×ñ}=û©cì¤93q(î¹ùj™ÃxWÒcX¿‘¶-cÝfÖ¯âcß@[Ň/¿nf}3þ‹ØÇ ÆÀÜ'dO”y´+ŬÕû”gÙg/Wú\¬¦žY{fýÏÀöÑÁþ‚kËÌýÇí3³NàBÖ3w³vÌÞ/ú7¸;¨{•>“ïË}•ñý±ŒíõÀÏUñÎUô¡FMìI&N¢'ãšSz.­ ßÿëÕ1.“vÆÞv(}‡êa;Œ·™«Í³vúû<ð$ûjá;³nÌþ'¶ŸNz“ÒkFî'gÐf³Ï ~3ûÛd­¯ ´;“úQÆWüù-çô}¼çJ þÀúf·Q_Ú˜[r¿vû‡h²ˆwêa|‡J65”Ϋ‰£ô}†2bîôÉdk²}œéhM.7L[²µmüM[GëRóÆ]–\¬›:âó €^'¡¯û¶Øb‹-¶Øb‹-¶Øb‹-¶Øb‹-¶Øb‹-¶ØòaùãttLMù7ò˜ÈÿOeRþþ')ÎË#Jÿÿ1 ‹ÆÑq§/ÎåÒ~7œí³{ ‹ÿGÇž*›ìÀÅÞð<ÞíUÃÿÉÿÈ4þÿ—|ÿB˜Èy¹áLª0èe×ú©Þ@îïAwßz ùŒÒyN’c‘T:7£S鼕~è z{ÑÏBñônc|îdÛóÔDžX—ÒyR߇âá®o¢ÉWÝÅ1–\â>¯×6Úùcç?vþØùcç?vþ|ÔæÏÑð}ä¥rSü®Y¸§ÇÛÆ¯¥ðˆúÀ/bZËñî³=o›Â Šœï]Ùž/øƒÙþ) ‹Ëë”ߟgÃÅŸ«C)ýGZ½™TJNuÐÙUºKôb¹TïU©þôxsZìäs´¾Ô¾xÎËlï÷²&[•¼/Ëe¼Âù~_Úgx¨P3Vb̌R™ ÆÛµ™cÿ¶%±^/[ð½Ì4†TšîÌüêbw1÷œ¿Å1ùyh8SÌzC0ec÷‘ŠGØíæ ÓÙZ™ö·¦3™T¶7=aµzÿ_÷qõ®cOsurveillance/data/shadar.RData0000644000175100001440000000224012376634041016060 0ustar hornikusers‹íÚ‡eÀñ÷I ŒRµjÕP1TT·Rµ¢âB\u›6¡”¦$)¸q/÷¸÷Þ{ï½÷Þ{ïþ.¹7Øçò~âpïçóíÓ»wÜ{—{®ïåÓIÍ-£´ 0ÆDL¤ZL¤Š_«#üc¢ý‰}s‰d"kLÕ`¶úa •Ê-Œ×²Ð}¼Ö~›x½½‘ÂÂÅ~fA‹b1xãÖbq,%Q‡¥°4–A=–ÅrX1 AVÀP¬ˆ8¼¹5b% ÇÊX«bVÃHŒÂh¬Ž1‹5°&ÖÂÚXëb=¬ 0MØac4cŒÇ¦Ø ›c¶À–Ø [cLĶ˜„í°=vÀŽØ -Ø»`Wì†Ý±öÄ^H mH"…ÉhGÒØSЉ©èBݘ>W“C=˜ŽØûb?ìp ÂLŒCp(Ãá8Gâ(cp,fá8ÌÆp"NÂÉ8§â4œŽ3p&ÎÂÙ8çâ<ÌÅù¸â"\ŒKp).Ãå¸Wâ*\kp-®Ãõ¸7â&ÜŒ[p+nÃí¸wâ.Ü{p/îÃýxâ!<ŒGð(ÃãxOâ)Ãçø_â+|oð-¾Ã÷ø?â'üŒ_ð+~Ãïøâ/ü0ó‹©/üò_È!ÿ…üò_È!ÿ…üò_È!ÿÅ{nÿBþ ù/ä¿ÿBþ ù/ä¿ÿBþ ù/ä¿ÿBþ ù/ä¿ÿBþK ä¿ÿBþ ù/ä¿Ä‹Ï¦ˆwœaã¼³¤4Õù±FÅ~¬õ£ñc½£ª}Ô±ßF£¢ß.0Zµ?ªêãjÛÖ7úqL…vz>1ÕÞžŸ¯VE[ßàèW¯Ú×ôÞ¶¥t~ŽëdëKíLïvÎþêó²E÷ÌÃÑ/ÐN§¯ãx¥ë¥?zÕN_g½_ߟ®û,ª¶+Ýêºêëë*ñ£Žú ý××u¿ªù®gƒÚÖíó-Õë¨óAÏo¨õ}àª×ÇwÍOmÛ¢¯“-®Ï)ðQû+Wšêß‘¿ú<\yäÊóÀ¶ë¾°Q?ÏU=o£ê]ór7ºŽã¨<×íœÏ¡JÇuå·½žñòíÏ=‡FõÓy¡óζ•?À¸ž•î³JŸ‹ÞÖÅ9Žëï‹£Ÿ>Ž>ß@~ ÷£}®ÄÕþíþFG½g¤Çú1¦úÕÙöz¬J¦½Wïõ-²àÕ¯W“št%¦¦¼W‰ÁÅv…¥b´Ø¦ð*Ø?ÓšKe§§’£Š•Å5š KX–°„%,a Ëÿ,Þ,2ß”]˜Uyû] ±¾¹|"ŸòWa VbzÕÆ0†1Œa cÃÆòѽ+¬¯¼ÿx¦ ¶ma;Ò4·¹Ì¥¯ÓúØïÒ¢¦ðï…Õ3R©)öû6û]šíPXÒù»RéöŽÖLO¶#“±-ugº{:ùt¦k|6ÑfÇœœMMûÏÙ¼žI[g"ggbý’éÜÄl¦Ý?Ãyÿ0ÂúÝE"surveillance/data/meningo.age.RData0000644000175100001440000000246612376634041017017 0ustar hornikusers‹íšYsÜDÇgµ’ö^{qpH€„p†Ã&6B± !ÜÌenÖ¶²^bï:k; ˜ûg¸SÅŸ€*^xç¯Â ¾@à?ëþ£–xóàš©ú¹%M«§{¦{$«v|ÏÄpq¢hŒñŒdŒ—Å¡ïáOƘÞdi.j5[ö`½“íÃ¥¨€“+jƪwïE'¬ k¾Êr_ô€^Pçkw8ôƒõà<°lçƒ À…`Ø .[ÀÅàp)¸ \®[Á•à*p5¸ €Ap-؆À0¸\FÀ àF°Üv€›ÁNp ØFÁ¸ì·=àv°Üîw»Á=à^p¸<öÁ8x< ‚ÇÀx<žO§Á3àYð¨ƒI0¦ÖÈì 0šàypÌ‚9Ðm0‚X‹` ‡Áðx¼Ž‚—Á+àx¼–Áëà ð&x ¼ Þï‚÷Àûàp|>ƒOÀ§à3p|¾_‚¯À×àð­é曇üñ¬ß6ÇlÙü²y¶’Â+yçË1sÑÈuê2?CÑ͈nVt3rlûË)OÙE¯$öé •ž¶]½¢Ø-™dÍäå¾4y寎Ñ»¬?úï©þ@ÝŸU10¾Œèq^Ø([“/+רh7§l{JŸñц§lxjÎuŒ—±ÒW}c£ÿž:MÒW®'ó_TkF9_^j,kËîUÜ—¸…b'¯æ“9f÷µªÜceIÉ@$}(ɽ5¹–^Îç„ù–—~ú¶ M¼ïr/fNdÔxŒƒz¾ÄÊÚÉ™8t~ùb³ 2m&ù\èUþÒOÖYÁÄ9’S÷å˜s¯ãÕ}%é×ç%uNÛ¬_ÆÃ9`îø&YË\‹¬øRHé“Ìí¬‰s±,Çe5¦Þ‹hƒyo±ÏÄšøn×K\ÖF²Wl¿}FÚgf¿ÌqŸèTÕåÜöm[eå[Ò-KÌôÕöm¾ŠÒe>Qo“èqéwAé3oC‰¯bâ|à~¤ôõX%±Ïú©ª¹cîê~ëë:‘=j¬¢ŒÏ=„ùÎ` ¬?ævÁÄuX3qíÐfÍÄõÀ=,PãÐ.ç—µB;¾· >2ç9÷œ9sjâgºþ‚Ôu®cá»ýöÔ}ºNÊ&ÎƒŠšî±Ü‹ù\cp}e+T¶¹^ºFè#Ÿ§º~=™ËªIî30ñ^Κæ{aîk_ô³@ï!=æÌ=ǘxe̬+Ös˜ó¨×X¿èg§~wá~È÷iæŒ~×ÖÏC;ë9ýÞ“U’¾qœ´^¨ô¼T?÷ œ‰ë¼h’û×LbOü‹‘nΉ{ùäŠÙ„J*­ú\d_SûDï´,=K$À(;‡ä$ÄÉÐÀˆœåp620¼MuîêžÁ†W•WJ×\sÍ5×\sÍ5×\sÍ5×\sÍ5×\smÕšýÞçýaÎú0k¯¯Âw¿®n=õÏrµôηÿ7qÿÛ˜ÿ³o¥£Ëý¿œØñÛn'tÒÉ5'¿Žÿ^9ò£“N:éäš“?ÿÔ>ÚìuÒI'\sò×ñS›—Øî¤“N:¹Öäÿÿ­´û3ÖÌØÖ¿>ZÚsoì;?õM3ñ›Í€?Ø”ßaw/ú‡£èÔÙž\ˆ:‡¢iÞ°°X_Œä¤ÒŠš™ÉöRg¦Ý¦Fu¾=¿4[_l¶[{;õ)ÚÜ߉*Å´'S³õz’a¼ÓÍ…}vC"<ý'%Ï^{ 7surveillance/data/measlesWeserEms.RData0000644000175100001440000002325712412464353017733 0ustar hornikusers‹í] @LÛÿŸ6-B‘PÓÌ­P¤$ Ió„º%E! -“J5™Šd—-ñ²ï{Öì»È’åÉ.¤—(»,-ÏNèâž™iflýžåÿÞùêó¾ÝsÏ=÷¬ßóý~Ï÷öz8÷±Ñê£Åb±”YÊuTXÊ*èWUeô%–*Kñ:‘‚€˜ALoAŒ@Ô92†¥¤ÒH&‹š ZŠ~©…úñFey,ÖÇÂ*3 Ô@PGÐ@¨|¨ò5´™çjW¾ AA¡.B==„úú "  °  ØF.…`Œ`‚`ŠÐ¡ BS3s„fÍ,Z X"X!´D°Fh…`ƒÐÁ¡ ‚B[„víì: 8 tDpDà!Á ¡‚3Bg„.]\\h7w„nÝ<¼z ôDðFðAè…С‚/B_„~~þý D@DBF „ ú4>UO5D$Âô¿TÖê#Uà˜ØQ,“I–;ÌÂ+S˜YCˆfÊPz±2Ê_£ˆEˆ¡ÿ72\œÞ”á nËp†óÇ~âí™k`®ÇV½nQµYÂrôª^ËÞÿÜsÕ%ü¼,ÿÖç>—ŸÉ:Šó†âûâçdžÇý$ûÞÿµ?~wú··ï¿Fð•ûß*¾·Üo%¹u¨ñcÞCèßMÕÇÿú¯µ—!B¿9ôk~Ñ{Öxÿ[ç0üsöå·Ú²ö=.WÖ ö3˜0œ’É/Sžlù,™|Àú½ .î†ËÚ2~IûpºNÕü²åmÜþ©ùü«×ů~ÿ¿~uÿ~ïû?—˯ɕïõ³æŠïÿèõW]úÕïÿQô½í+†›üãUù­ >“.·ÿè0Ü\†7•¹Ïf8Þßñ¾…÷yk†·b8ÅpÜÿxÃåãòdêEè÷ ÿ/ãñÿ¥ž„~oú·Î£k»ý‚o͇õfŸÿœ=/{-k/‹9%só}gýd﫟ãk÷?w®ˆß'§Wub8޳°c¸#ÃqœEGæšÇðv oÌp×±Uóã8 ™|&2׸­Žõ8Ù~דá8ß×Ú‰ÓÙUÓ«ÛŸÿU’ÕÏ ýXúšýþµø¯•Cè÷¢ïoÙûð™rþ©8¶ÿ•~ö<”óO¦r~Ùt¼é0\FÀù6ý¯ñ„ÿvú¯¶ûw#¼nýôÿe]ü(ýûŸ:×ùÑýø­ïþ9½ð=oúÑô»Ôã{éwëÇÿ*}¯ÿä¿;^U¾¯S ‹d}úf²2¹ò{K]ÙOðP–¨€HA ëÓ7”•÷>°ð·•Ì7}Ö­m­[I_ØH_´–¾°•¾h#uÑFº€6Ò´‘. tmª`'}ÑVú¢ôE{© ;ké éØÙ|j¨ÜÇ‹±ò1"!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„"Dˆ!B„úwSåÇu5*X ¿@T¯L'_Dˆ"Q'hU~q8¥üͯŸhjÅEG D¸¨`r¬I@@@@@@@@@@@@@@@@@@@@@@@@@ðóAŽ5¿~¬Y+J6(4P'  +O6QO)³>‘*Ó;•\Eêwe™k•JÒðïªL9*2e(1\Yª,üŒ4¤ï³XŠß%[¯ÏÕ£’Ô¤Ò•YUÛ¡"õe©ç¤ï©1å(+xFºTeÞ!]G«jŸ(I•¥$ó ®t»dËùZŸÊö½²L:KÁ{¥!ýŒ"ŽŸaÉÙþ‘~^¶eËPfÉ÷ôxÉÖ[ѺúÒ½Ïõ³ì<–ë²ëž¥@zë²KoÖ@rÿ')»=ÕŽFÇEĆ £ºˆ‚ðÿ˜·|Fƒö"7N8áÕàsûl¬2rá„^ ¾mˆÛz£\ '¼|»5µAÃ2p ¯_9“~èXû-á„^ ¾îT͸„wS'œðjðÛ3r‡N8áÕà[sÎô\°šp ¯?üü¯ö‹³·N8áÕàkØÅ›‡-¥ 'œðjðËjMˆk»–p ¯ß®o¶&-e8á„^ ¾¡àÚžôA 'œðjð£ó »j•o"œp«Á76|ÜÿøØ„Nx5xꬭãMªC8á„WƒÏ¾:9µó 'üû9ù2þ럪DD³”TÉ$« ã?}‡ÈRƒe¾—r×:­zf gQ*G4ô_õWc ï>6l« Ÿ(ü†U™y‡R<þe¸Ì•Ȱ(IýâT»f´Hn+ ‹¤ ú•·Dƒb˜‚q:Ï¢òFÇaÔ ˆ€XÊ"8 6.²cï®=ÛÙRQÂÁ‚ÊBƒSc…ÃÅ´³íhÝý“ýÿ?EÄ w(K¿C¥Sž2ùÔ£‚ ÈÔF9&š™z²ÍÓˆF $ŒŠaºNWQ=«æQRG-" 0:¶ò ÓÊ×±K’«šk+ 'Õó¸ÎÍó‘ €É«Ä›°kþ³©²yB…•ÍÐb‰¿§®ÚÒÊq1SùìºJ–AB¡(8†™\uœɨ+: Å™Z`lbz¬™›©î¼uj4[x:Ú¤ƒ±óåË»WÖãîMúï×ìƃcœŸÎ\%™Œw ?j°èqí_¿y]èѰý\ãý@]¦ÝsäBÔèMœÓ‚ž¶{±ÃÚ4 §¿\1;t=ÐIGéí»‚ŸW0™5%B¢òžn…̈«3#ñévÝŠofÍèalwQ°@AÕ¯øÆaSvu–y!#¼>fÓÇÅÈŒ¨\#¤¦Ó—[Qu¼ƒ„‘‘‚¨X™ÌJÖóŠ'¤–R“Tªì½\®^“>@oitøzéM¹šÏèNOyñSzƒ ùù×—T6ª`¦˜>9<Œ:ÿäÙ¨™Z^1£º¾º~‡›AŸÒž†–6aû ص'&ÿí“lû§ùlö̲)N¾ã€]dw|`ýc`¤7&h½÷Yqyô¦+=§4™ôÝN‰…‹Ï×î×£=Ð5Ó—n†ÚÙP´M½m# …Zñ@oîòV9% è57Y8V½£c7ûù@ïJLÏ8fŽËS0kþÃSÐ@A‡}m@ eKeöÅ/ŽÖÿ6ÏØ²w¿sbQ¢<ËÔ@ÏJð ?”*WÕé§Uy×Þ¤U{bQ‹›p’å5{ÚÚÈøË@­êhÅ^%jÖ›{³ú•ÒÃ÷á †´Ï;¹s#P} Æe—ÕIÏe|Ûf@y.÷xUq¨œ—[wLjˣôMÜr èùêMùµ‘lš}wAQ³< gì+œ8<ɰþñ…Kï=µgÚö0$ËŠc“–®D<»,Â!èyþÃ’oŸza®ÿ⸼_?±ˆâ‰ÕúË£õ‹'Vƒvѵ^mÚ´ƒNã >rUM™å`Þ²(¸š‹î¥!ÛMú˜wOñìL§þÀ}¨Ö}V-à^[ò0¿ù" T/x¨åÞJ«ç™‡o€òÕ›¿×¨ÎCR5R4€rž;Þh’/PíŽu¾¨f3Ïužú¨º¦îP ÜÎ÷½ÚnîÕ;j7·®îÍ?Ç g'ˆßK›œ30÷¸ t“I–:s5€6×>wôÃd ›% ñ m´…[÷këPz~‹å½6Ý8FåÑi+ §éeO» 4§ñÁ–mЖŶ×4íj‰®3ê]<ƒ$"ûì©Ã¯ÐDåx¨ôër hªÎ¦¨<ãu JŠ_ã÷*˜¨:?y¢*`ÅÕöË£ÿ‹'ªÅ¶A+9é@g¥èá–ÊUušµwÒwª9Qu€âjÚ׸¸ïÝ¢nheUèTò¸P½"-›' C®\ݷĨ>õôŸ¼8”‡·ûDÇ:âçè#«c·î ÏùMrîä töž'¸ÈÔ8‘µÚ²š ÇÞÄ:¿ôñi¶ùÍ{y>¹øÃ&üœ‚‰¢ñ“'Š¢VµgÙÒd Æ¾Ÿºd}c ¦z8ÿ‘?¨•þZ‘k%[*Þñ‰·Ì¦Æ® Cù@8´¸oðp“ý…÷Ûÿ´`­K*pÞo4ÕssSÁ‡Õ7€sî¨Ö™{è~°CòÐ+O;µÄûd¿àÞõwëèš@ÕYÉŸÝ7(ŸZɽ((~i·2N\_z³rËtö>‰Ž·vöù|¾1ЩYA…ÁÑÛÁ~±O]É–·\¼ã-9yTféÖ]@OžÂÛ=åÿÃÐsÿ¤CÎÒ¹ô|ï  çìxu|Ü;ôÜãU¦›½d|¼aHs ×Œ¬³mÆq¤>æ¯XÙèuFAQMQùëÞo4y:Ò5KkÌö*:­WAádC\_ £ÁO^Š&”Â…ÑFÞV©2Û~ÖÂPS¸0 §®pŽ©‡t¯ìMí“üëÈUµƒ¥¹}Íõ«¹04Àp•ÆzÃ;»À0iÒû¿#¼À0ÖËÌíq’8¾ôÈÚÆz7ÐuUÌRŸ£kÍáNN‰8]Á@ã?Dö ´¢1·aoX›$ -[‘‹å:ä„û=­;õ«Û!îÀi¾À4}=Oõæ*õÜ“ Å^`´="ßNõ­™|hüÞ©`´¿Fãà~G€³PõÒÈ‘-€³îä^‡kÀ™;Çã¢o,pö†ì(VµΞ©³”Ê'çY³U GçïÂ!ýzÄ—;ï©$†¾ñÝÇfÀmðnµ¸RÖÏNnœq\;Ö†ê1úö¥40š–±KóÁ0 ŒÛs¿n‚Īd¬Bl%Š­FlE2V¥ØÊ4HésæB`[¯ôôë3Ø”Òè%ýú;øLVÝÓÀž¦ãõÎ%ؽï]sM™ìUyû=·ÜöËm®Œ²#× ~s¢Þˆû‰¾špžµHèË µƒÌ®}!ýæéÅ-w»è£ÿÚJÇt*زm¡í×'ªë}ò²¨_!ºNÔÈ€¶Üc z$ï@[ªî®zêg>PkÙÞ dtdô¾Øp*oŸÛ€%k_5ÞäÕ`d½~8`uŒ‡8GÕ1§Ð[_Þ¼¥•‚$ÐŽùü¸`tÝÍÆ¢` ’Dz“Ïîø]¨í—³Yb-ck[¿ØÆÖ1¶–±õ|°aÄ}[ªßÝõÏ;Ç z»³æ-môÑ¿’4?ŒA×ÑÛžB*éöfyͦ¢…²Üòp2ŽrÖåqý;ßÔºeî' ¦é]0†e3¼ôºŠ*{<œ ·`Ú/ž×֬ϼêK7Ýw»]ÉD’ãpÛLáM`­í’³í¶8¾ªa6É)á9Ãß•P‡ë²™)Nÿù„}ÿpÚó ‡¬ï ×!£.NêѸ¤š¢ìÒ´i>5׃QWn¶¡9°—qÕ:U4‘¬,æ>}}-Êð@õxɽö·?ÐyµŸn´úÚŒp'|_A©ý`›¹¶$™E×/g±ÿn+×AŽ£_6ñmTVíc”áÕ4×h&ê‘U>Ù Œ„kTß<)§Ó7’¶']]*é˜ë哞ÖÜ„Ó쌩ª\¨I½@iÊ·íIŠ• ù ëÈX³®©?Ư iM1ÿXߣs—lÚ`«Ž]¸l`b=¹*gñ¸­æpkÇX[kÏŒ6µkÊ1¯üÃÊ‹ˆ~œd4iã­ǘTÜF«I5[5alˆßÀÇ@ÅßÝðjpP£{]8ùiÕƒu:µ¦Ï%Xfxh$PíÞœØ7³92ûz,òÞW”Æ+§¸Ü–H ÷åkw*î*zÔ>QMà†¿¾½®¤+pk'Õyqª p2gO? NÀ™¶}MÏ´àäOh42: 8þXç¯2]óqÞ\óá‹×½AÜ[ët ?Sà¼jñ@uGpn<;«ß7pþ·¶ó¥àÄ´l®ÿ¡#Ò2:AŸƒâ~kÝX ÇZ9ÖÒ±Ö>æ¹ÿ2ÏÙ@Ç [ž‚öĘgçVé-ôN.èø™,ÿU§ ÙÔèhëM§ü €ŽÛø!ug4Ðí®E´zÄÅŠÖvç€WÔq—ærÔ®!^KuÇ=¿Kí6î ÜäG-pÅփ xAË; «¬Ž_kV-™˜ê¶”þQVÒjÈUõ¯ŠâÉnÕ\Èž’ '8žðÌÀ /¼`$ ˆYPxáwòÖ•‰9œ¨ÛÇ\ÊΨº«×ÜÖŽ0® ;Ñ 8ÝÇ\~¯¯ ׄâ”<pú—m  ð¸s<û=pTs¼=ÊÀȹݤ%{¦ƒ‘¦FïðäýÀÎ[0çøx02°x²½™æ¨ª/#vckûxà!®R8°£·Ý=: 5ÒeÆÍÛ2á°çê¸ÁR0,÷êíØØj£mº%Ûn­Ý©¹.Àöõ>í²Øé£E£Š2ž3×sÄV5`_œþ K0*Y¶iÚBàXl<—¡”&î7ñÀ /¼`ð /0¼àðÄ /Pï"Ëu%ª@wçÜKèó7ÐôæJ‘@;,MÞוßÞ\¤n=è¶&íoÜ ´¿zMï¾@·„€˜Aö@[Y¶ë¶)¯¦¹ œ=vmqáÆIçqè9ÓëÊnHév02mÉAÊI¯ëô4TïνJ5®Úí|®o\ÙI Ý_϶:†Úç–azý>(Ý[uœ^‚”ìnks‹® û^™Z´é$ {„ï«è> 舻yΤLÇGuœ{•7¶Æîí÷Q;þ¦ÉN¬ trMøÎÈ ž0rEœéÜo …ùÏ ˜bA!鶴²ú~– PV¼ã—îV³Y9­MŠzäËUu·í€#n8WSPØ‹³bG-〥š‰kõü PîGö_íƒvúà©Ïž­*¬öÊÚ·l%~;ìÃ~2Æo†ýhb¿Ú¨]ô/n®ð¯®ù§M€{£•ûçÕÀ½9Š2îÀÝ?þ䜙¶À=òâаÀu“Â:y¸Nï¼¼¶¸‘W×ì˜ ÜhãõÍMü€ëxåÙ¤ü~@Õpl9}¦:P:ƒµÂÏ饽ì¼_F= ô笨hó\Ü>±;”±ƒy/Ë禀NŸ|¡Á Y¡Ž¥1žhÞªýþW/‰ŸûѰ_ ûÙ°ß ûá¶Õ þ0mP;Õõ›úŽ@ÖqYüÐ6Ȫ=P×6ã^dµÆ6q19tæÀñ >¨æ«,‘µ~tö¡#ÉY@ŸæÄž{êu>¹õd!âùõC« úç·I¬åŠ4Žk¾&üÈXÛ¢ë²1èKÇs-pû,<£ná)œ  }-sCù~·þ5ǹ ÚÓÆÀÂåY«jmÜ#›ú›¿ÕîµÌEʽö7–åàvj0pžU?½Ã^|Ÿ :úΉ­ryGM%ØòJÏÌç5¾ü… ¤Ðh«*™”™F)ÛªV,äOv3ïßLI÷‡H'•ïµHØúo´ou´DÏáQiWËå*{$’7fß“©Õ~ñ†.Þà™ _¬`…€Q°Â V …B¬`0 ‡X±žÇ_kˆ‚‘ó”â6¡r‰í.•ô6ŸoÂöÙlƒ÷aüž!À¦]F±ÎÃW¢có]ÀðxäÙÇÇ`>Ëïnë+`¨Ê«“Ú¼ NÊ|n—ôíõò­Á ýFY» u0Ô™åpæÝr0(|÷úÉ,”~_Xz¡' ¯uf­œ(i§xÆ2Þ ñ†7p¼¡ã oøXÀ V°Â`|±Ð b!â“GŸ]‡ä·ÁY›ô!@sn{õª ÐM”¬ÆÏå"…ãÈ©wãVÝáOÖ¥úhÃo{¨é¿§@ÛçN¾<ôJï]æ7Ó hÇNq »ä´JÔ$).]Öì‰rɺkéƒó9GQ½ÃæO86µ«vËäñH±X™i¯»·SÁräü¨åø™˜EXñR´ûòìþµŠ‚Ñ;Ÿ2]·2 —&iêZÈU5óþ ØÙã›Us!ÚHÜ܌ۻÁ±[œë;²ô]‘H²ÑãŸ9`Ãnâ8ljcK…ÑÀ±FŽ5tvºïÑ^[}>¼(G·/°Ÿ$†¾â7ö•9cÂìýÁå@Ùòöâà-q0vÃc·;Vàk$ÓYh¥·™bY1/j,‰B׆c‹Çõú‚ﬠ“A8Ÿ‚«ñ£$Íç7~…«T±´‘wïõº{Ûxh‡ßcã§NÜøÞTèÑÞ…“ vÉË› Í6íÖ šÓ¡‹$®Çùâ¸_Œã‚]ʳš¬ðcÿœûa6×Á8¨op7{0v¥âÝÏ& nsq`à0ÖsL¹j·ŒkŸ WKóêÑÔžÝu‘¡Söžnué0P§Ï< ™ÔÅFêý¹¨=ú#¥t¸ÛÍÑ‚¿t‚wæRBf¾K|ôè0ãSÀˆøªV§Ú?:bCÕƒ€Ž4¼5Æ ½ˆ¹Wö‰‰k»:±ë»B±k»JqÀ€À1Š8fÇ0â˜Fã8÷òí×ï€N oH©{ ûã¦è‡ûCÁò6ýQËû3 Š„â¥ÝîË«åWÇ0Z…Å×l´õ#ÞûÐerUÍΚìî“·«š {¨Ä§Ïøø±ÏŸ2ïºøîû@5ÎmØ.ߨú´pÙúRdÉû/8s Yö œ6)/â^V¾qÙ(Jp,!qP^6uæló*ôaÙƒÝ €Z:~x§»€Z Ó“"jõë”`' VÜ\½~ Zhw6¸½™PÊÍÜܲƒU!pgl¸v×fœÈô”¸x»$÷-’¸p±K»x±Ë—qã3ñ™ 3žâ³ ñYsvá©‘[)LîQ߸ˆ,‚~9Cë¾’X Î.ý”Ý.Î!û‡…´Ÿ#‹cð¢í·ÝqrÔö§5€æåª7[ØÝèæm6h»ødóÝhßo]t(bìC ­œ›†4@ЉcéŒD´Å6Z³6ÐÒhý‡w ¨ëe6ÊÕ³ö‰²o5€Öy°Y;­К|Ñ­Ü@«÷ó¾vÕSãÄ ÿU§Ä_5Ñ5æ™h8!N+GuF„µ/°/œ¨tý²>ó‘EÕЕ]¢…® 2ËgS‘ÄÈâØUËŠc[ű®8öÇÂ2±±8VÇÎâXZ[‹cm­f±Ó}PÿX_~fâ>Yl-2òP»[óêìõ¾ƒú©Ãâåá×2v5c×3vEc×4>KÂgKŸÆS`íð“«"¤X°¶ÿ²´úÅ‚uȈΩ{8¨ãoxwS:(WÕžYðöY5«£D£yrôý–Žƒ€Zý´öL$@æýi\7¨åçFŒß5¨¥½ËÚ¬jesÕ—¹ $ P,P±€Å `,±€Æ p,Ðñ¡.>äŇ¾ø ãCb¬aa k`X#ÃÖØ˜öŠ5ÿ ‘ÍÆÏ@÷zÁ…ü| {:uº'Ú‹&þô¡ ÷_Fgþó lÀÙ~µOÊv‰@Á ,€°@ ,,À°@à <|x‹sñá.>ìŇ¿ø0kPX£ÂÖ¸°†5²OíU°0¹?ya*šÐ ¦õ—gû¯uPYK\f{!Óº«…¯Åm¹ª´¿Qa}N£Ú ÓØ ègéz·±š?Ò8*’ŒÓ/"Óàu}ßã×üÀX{Ü YEÀØaÿ3à’O± ĘØ$›ØdÀŸái3c¨qL5ޱÆg7ø,ŸíŒ›áÖ¾+æ;÷5Cù—«ìØÈ¿‡Lžƒ“®ìÔˆ–›Â-§5ãòì‰6È„IÛ~Òôœ Z˜ã“ص=À¸áÒic_7·—Î|Êy‘ ôAþκ]é²åÎÞ¼ÝÈøågÞB¦Á‚õÃ?¬^†Tû‘G?_"ùô›8XÅÇ*?6°I€?ƒÇX31×8ÇdcW >ËÁg;ø¬g§Ž“uãñ@ïw|O„îÝõ`ï=g2M»îF;ìùØÎQ϶Uzrj¶'Ð'T†ô¾·÷Ç.L…Øc]äŠnHò\ï•2ñìk¹ ìšÔÒ¼_‚IµÏ`¨îÖ‘Ñ]åÐyaÇÉåvwácO4ðÁ+ÿö/ß—VM[Þc*Ð7Ö´YשH×ZÄ-Ã÷3…«^±ô’D?Yæ?.ñÝÏvŨ(~ÎU»î;ùZh>¶ºî¾¡LþÀèö³ÈÂÕ>ƒÁg­â³W|‹ÏfñY->»Åg¹ølŸõâ³_ì"Æ.cìBÆ‘Ö8òš‰ÄÆ‘ÙâHm¹#¹qd7Žôf"¿q$¸82œ‰GŽãHr&b·S<ñ,^ÿXà3[|†‹Ïtñ/>óÅgÀØ•Œ]ËØÕŒ#¥qä4Ž¤Æ‘Õ8ÒG^ãHl™#µÅ‘ÛL$7ŽìÆ‘Þ8òG‚ãÈðÏ.Çð Fá„­Ûdò¢1¨…ŽG Ý‘›°~›¿~ÐÙ¥Ú®dΤ þ ê £µ{êÔóÀèAó»óS‡Q^ù¼ÄSš`ô²ß• FŠóÑ…y´Ò(d¼ž­›rÉ+Kóú;“üšucöJ4p7s&Ö>×çû±®d…VRz«mзWw¸ä)×aýtE7Cª-๖¶ž»6„'­mp^³“À9=´m—RZ²2™ûôíÈMGç—}K×Ô#ÕçνýÞì&ˆÛÎmÒßÿ™^E"à+Š…¼\¯îÉônÔh…ëòj’àߪíÑe}úË•U¨üfQ½rF3÷j2…Ôafœ.3ЕmWeúBM2Àâ—©Ä Ûõ˜çtX’?iS»§å,ˆˆD… E1±¸q(µsd°ÿ½mtÝ=]Ɖ1iµ*Ób¢Eq‚ ÁL¢JìŠJŒ *)ÀÝâGF DQÁ8º2-NŠë‚:E££«¼G˽².1RVÖE&NÓGi]E!1A¡!±”“ *6T‰§ºë.ˆ¤ kŽ»‚æTV±— (uŸ¤Š½1Qd€(F\ñš•©a±±‘q¨>ŸÆN—?³À*¸¯ÑüU†kîðƿК޽¿ä표ĺBþ‚aÜCÃø'6Ø/m3æ_ŽöŒx{Ë…Ÿ£™Ú»ÿ¾ü{Q™iíOäí›þg|+3þ9·Ô™éåøvïXÿ`‹ÿ‚±öØõ/Žñ £b÷ýòg9ñ¼Õu ÿ”gÆÛå‡øÇ Q™ÞáúÀÓéT¥8€‡œ•œ¯âýñš¯jú1ýùÚéPþâÈÇtõ¦Ÿò)ïiø‘×Íêóñþëì¯Yâ?=_ÿæÇôaðñºþµà××¢?òWÊŸÞû¤‹¡õá™ÿ:¡”Wl>)"ýÒÞ“zÃ5Rv°yÅ‘åy‰5yÅͦïçeóŠïž\:ª~ïI†ýTÇù™¼âÞË5MGò=K·**èÂ+ö¯µ&7Þ—÷䏯ÄÒ”rÞヷËõµƒáÇxÅLzIí}¹Oúßä•Ü?£U0ì4ï‰qÃKK_ç•ðË“Ï^㕪-ÜÐ}7Å{2îÜÄÐö¼R¥¾GzmÓç;ú…O™À+gÕ?1‡Wœ_¸ÿ@tYr^ú*^ñìà<»n³y%-¹Ü&®ÏÖ—Þ£Þ½cüúÛï½âÝÉtæ²›wäÞ3è‡÷ ÐåôU×%¼{e»¨Å¼›¯÷'•ìäÝÜú,=ܤ3ïþjÕE}uón'©,Öʦxw&5D?¼;óÏ,v=5‹w/Á`”µ^Þ­ˆì¨Ã³‹x÷9={УŒywv­Vº4ƒwwÁ^§î³¶Éȵ¨€HþJ5°ÊÚµ³–5üùxåzv÷ôqç{»vÇwµ‡ ƒ¬l¬Å K«2­•\ŠÍ§±ð­">µ*%šUˆÕE¦~š"á0+é:êJ ùóßî’Û öŒˆ ˆÀû”3ê².’ûŽ?H¤$ŒŠ #XŸ¬–Ìíš‚haP(¿ò_ú#Pµ"ã"bâ„‘¨NÞ=å3Ê5@%&ös›«vLœh¨ ,mAI­Yþ¡·|Ñ8surveillance/data/s1.RData0000644000175100001440000000050312376634041015141 0ustar hornikusers‹íV½N1 v~ª–“@•ºTb¨ØX */@‡NL¨S׃†ªPq9ñ:<o lHT_êëb©òIß%v|öwÎýÍg‹«bQ€mhƒS«ñ úGä÷3 7òù»PlȚL`ë@ÅÆ8—rÅóM`ºÆkðú1þIºGÈKä9òy†#O‘CdÙ×Öe#×Z°¼6ÑnX¬¤Ó¶¬q­†ÅK=áýâqißMrïQªKêë¾Ú\ƒ‚]¤>#ÄÆ{ M¿´¿m5¤u©>¯jÒÐÔ´/·´·ÝŸÒ³”ñ \ü‘‘qÀ ï‘šÞ4l=}›}Û÷`ãï°ó\>9??P68{›;ïªW·ŒA¾.k ûP¹¶PÕiÊûÇÒÇ”ô­%gw¹ö·Õf…ÓOâÚÓ…¸ surveillance/data/s3.RData0000644000175100001440000000047112376634041015147 0ustar hornikusers‹íVÁNÃ0 uœt Iü |;ìÄ qÚµ°€€‰¦âwø&þ„/@$U,^­iÜ&ú$/¶_cù-®Ò›õæ¼ÞÔDÄÄÎÛè:Ž?†hy”òá‚Èž¥t´“h´?ìHÞ€ÑÈÊ3Ô²À¡±…}x¬Yêã’½ikX¥Qz’¼…¾7+h`õœè1Àëÿm Ø›ìÅ}–†5ò”{}i:æÐçq´*ÇóÌ'=u^…K¶ÈµðœPSUÐVÒñ§gNÏ™ž}V’›e=ôÍó>8¥¿½K&L8\~þ¯uÂÁ"ÝGfu5ˆyõ¾îƒŸó|V/ͳÑYR9öÉÅî6øöÍoå¡Ð5Ï»oý+m§KÞ=5AJ¦;¸ÿÎØ>†ëv÷ݯdßJ×I¸ surveillance/data/m3.RData0000644000175100001440000000042112376634041015134 0ustar hornikusers‹ r‰0âŠàb```b`bad`b2Y˜€#ƒ'H<טY$ ļ@|‘8À„EŒˆ™!¦£¨a‚šÏ ÅPšM 6óÑıñabÌHvñ±K±Ë±"˱<K1(dŒ¡âš@,ã„Ò 3@aÆävV(fƒÚ…l'ˆÍeãsç( .ŒáÊÇ@|^ûK‚Q0 FÁ  úˆÑÁ …Ïä0ßÌA”c(­CÖ¼ÄÜÔb C€ܨ rä'§•¥¦À—$–¤B9,iE©…HE%èF&ç$ÃŒÕÛ Aö”Ì•üt ór×b¸ surveillance/data/husO104Hosp.RData0000644000175100001440000000125312376634041016616 0ustar hornikusers‹íšÍn1LJMj‰÷¨ñ=ôÀ ©§^W$ˆ* 円òUÊWÓ†’¶¼R_©`O[O=±½»Nð!ùe½žµýßÝñÌ(k«ë÷Zë-È ¡>YCýlfêë 4aIñú“ý‡wïÜÐío4nOºBã¦ÂæÊÉ+Tǰrò1Œ[Ún «áˆL¬ßBM‰ÿßA¢•˜˜xÎ÷X)11&?@b-‰‰uà6$ÄÄ‹ü±žÜŒX~‚Ãø"gó «áWpP÷ûŒhrÑäP·Ñä0¢ûà î7“ß%¢úüÍ1í<Ô牓vVÚ»úèiÞï«·.46WóAGñô¼ÈGE³Í_Óœq'»íèï»Éî„Ú£ÝÞå$Š¥U´ HãÅ ^¸Ó–œRp²„~Œ”ñMÀå$ç¶.a¾®ç#8X`ëuÀÙ¬*I[xðNÄÅ0V0ué¾¢ÉàÍÝÁè~ŠSÐ3Úûƒåè|ßHOŒ¤_I}œ: ë-Œ=Y™¾žzúê+Ùr%%¡÷I ÊË’Ç™ Ó‹±´ÎhÒ7¹òN’<9·çס§¯¾¡~Å7‰$λøº.g2Oësý.vÁÎèþ†Í_òãÒóË“ý²q”ï¾íz‡Œ¾ú-îï›hç™®4´³h^Qv~¤'m‚ÇÖ+í$}œº³qøsTÖÏï v¼Ÿx}L÷uäÒK /ªQ±‹Ï‡tÛgít'+Ëó<Þ€»»»»°ã®ºë®º—www¨wwww`îîîîÀÝÝÝÝ€¼Í{ß¼}§ØkÀûŽéÊ6(Ó7»´dÆîB‚{¨€` @Î+fÒÑÜB3QÙ†!Ž…ç-‹A“Ï6?w±½Ö-·ºS?Àå8ЖÔ)q£¼…ìaÀI€ó‘ÈgÞA‘Aø"D‹Ý¥mÅÚü¢/ydŽ©¸Õu[q_oeé=ЬpøkL/Yb@µn÷^§›!f)Ž”ä8+ßšúÖ¤tìr£ ¦ú¦_ªšλJbÎûy8ÛÕ»Uå†5Mn˜’@™|Ë¢Ô1$•ÌG­†[ ¦x‰}´Î —á2ÕÜhˆÊ`$`¨ß•D ºô¢ƒ¿Ö‚¦Ö DIt ŒI³†^ÎîïGwwwqÇqÇqÇ.óœç9ÎsšÎsœç\Vé5×]u×]Ày¿RIX©4¬VšIX©$¬T’bªI+$•Š’JÅI%b·â·òrm¶Ûm¶ÛÀ »»»¾_†íxV*I1U$•Š’JÅI%b¤’±RIŠ©$¬T’V*I+1\997ïÛm¶áwwÀ*ª«6­]Ò€WqjÊë™™™›UUUU±@®k®”¥)FUUUUˆ›vÀª€*šÈˆ•˜ˆˆˆˆ•UYˆ ª U™UUUU[.-X X¥)JYbªªªªÌ@ «và»»»»°Ýw¦ši¦ši¦šiZiœç9ÎsµUp©Ã`H –]¯óڸ߷òP~ûô?ÃÞ1<ÚíCâö3Ò%"æÊ®pf4IƒK|á¥,á ]ç­ÊBa”Ö-óÍZ‡ Ä/×Ñ æ–Ž,5SFm}?¯óÔà©’56pb†Õ¾1È‘†jàà ÖÒs¤! =¡…‹Ì†&n.†‘†© C9l^Âælaÿ‹¹"œ(HÞ•asurveillance/data/deleval.RData0000644000175100001440000000142512376634041016236 0ustar hornikusers‹ íÙùRÓ@ðmR ´€€Þ÷­¨ˆ÷AÄ[¢âí6YÚhš›´â¼‰¯Ä#ø>øÝ6RíVfÜùtÛä·›_6³9šÉÑéät’¢-#šŽ¯q 1h‡6“Ù¬DmÓw„Vµ0—y|é„|°B”;‘Ð*û€DÐHn+A».ØÝн°¶ÀVØÛ¡Ù »`7ì½°öÃ8‡à0£p ŽÃ 8 §à4œ~8 çà< À„‹p .ø ×à:Ü€›p † ÃpF`îÀÜ…{pÀCxá ŒÃ<…IÈÀ<ƒçð¦á%¼‚×ðÞÂ;x€B 0Á ä*ǧæàÅgûŒ,-{-—ÚìùTøA–þ–.‡ ýˆ Nð¬ÇD‰aÚ<°ódc”Ø_è+ÜgÔïØo~ÿ‹²Û_ï}ht\Âcõ=ê÷Ÿ–Gå±Ú}\m‡JÍüÒM«@*çL¹8_©k§ BZ`©œCåºR9·jAL‹É¨Ÿ¯6pËó*+&¿3ˆ&'ÿF™Ìª¨¢Š*ªüwE^œZIä°M._ûÚX‡†òe~Š¢¬N3fl²èºLdyÑ1Õ´U”µkÆ´ít˜•ËcÚŠ<çf0sã d¢Õɤ¡,V•j—ËÝ¢M}‹;c‚ÕÇá¡ï剪U­jU«ZÕͬ›q•Ö ÔxëÏfùlpÍn# ßEè æ§,g)ƒÙˆÄR®à=_XN."Á„\ME®zÍ//_D ?î6•;®u/[¨LfÂo@]j|¢9¶¼;™¯çÙ‡óK¸ÜþšãNõoxZßîÚÜ&Áð„â&õ)r‰jÜRýƒ¿;ªgÁ¿ôW–õܳJ>)·Ð?#º´2ªf0ú2.î|¨=ìÏ(UÚÈøÞp¯õ‡¤ÍàŽ/¸]gDRå7ÉÃr2Ÿ$ùõJ¤ö¾±P´}Ëáä4•Y¸btÏ÷êäÚáE‰Y¶Mƒ-eM~þ¿‚surveillance/data/m1.RData0000644000175100001440000000034012376634041015132 0ustar hornikusers‹ r‰0âŠàb```b`bad`b2Y˜€#ƒ'H<×Y$ ļ@|‘˜!ªÀ€Êfb~ æbnÉPq^¨8ˆb¨>$sÐÙƒêF4LmóG*náÄÇ€ÈK$ûÔ¥GÁ(£`ŒXª¼PøLó]ÀD=Ò:dÍKÌM-2À D° G~RqjQYj LQqIbI*”Ã’V”Zˆ$QT‚ndrNb1ÌHPdOÉ,(ÊO2ÿ0•ƒø¸ surveillance/data/h1_nrwrp.RData0000644000175100001440000000043512376634041016362 0ustar hornikusers‹ r‰0âŠàb```b`bad`b2Y˜€#ƒ'æÈ0ŒÏ+*/*```I1/_d@Fì€ cãcÓËŒÆfEÓ‹ÎF6ƒìˆ™ÐÄÕ1¢éA¶ƒM6w2"™É€ÆÆÄŠá’GWË„f'­º½Øâ›:B=>ð± ™ž.˜ÑÔ˱ sCí…Å7T-’{¹ ¦†šaÏÇ€š—FÁ(£`Xûƒ“àúˆÑÁ …Ïä0ßÌA„J‘5/17µÈ`7  Çü¤âÔ¢²Ô˜¢â’Ä’T(‡%­(µI¢¨ÝÈäœÄb˜‘ :$Èž’YP”Ÿdþa ¸ýo¾ surveillance/data/salmNewportTruncated.RData0000644000175100001440000000724012527561477021022 0ustar hornikusersý7zXZi"Þ6!ÏXÌæ]Ya])TW"änRÊŸ’Øâ •¡á°,¾ïÁÕæbA5… îfû]•|*§vã'zßÁ|•u3fú!êQ÷¯ 7œd ”+Å,!÷æ½Îg·ä#`ò°kCj] ú* ™¡ÝL)¿¿Ev긦1`û_ièƒfºxʼc¤°Ehtð?V*¦ç¬×&ëA©ÓÜTŸ !G†Ë§FbZ³Ç‹Õj Ç£’eÑ9ùÞsÈ»sLÅQÒÒ½éXÈÓÇᦎ‡?ÍI"Þó>곋ς +~Mð¬Ê¹ 9>ÉÕ‹¿;ŒËlY•­š¼s P8rµ2úqÂbg±º¥¹!å%k™ßúÞìà>·ï‡þ•Ü08›*]C¥Úiôw=çÏ|õí}òS5FzÂ÷¬Nòw/²LK±iqªÕ{ÜC?øû1ir^?¨;8À,GáJ¼¼Ì#ð„5§‘HQðkÕ]}ͪÑ?H&ñÒ© ,í$WB9Ä‚‘šwô.3غPò¹ó~Qx®î äfàºÔmí}“z¨•Ë`$pY·Îè0e™÷ÓÔu,v”eR’R7ä«YZKN¢ÀkQÕyÂâðì}'_=nøÎðË]7%h¼Â}Á‡-³1ëXïÝÚÿn)?q×®¥Ï`³¸ZP£Í´jÕÀ}+ï‰Ë0ÃWåOÕ–|‘./?ÌË­XD¨A„¿«ª7=BPöK«à|9ѧ¨ÇL £ì‡“!Ç—‘ö v¸RâÌý#Ù“$’YÆtÃ`Hv´jÚv8|Ên„š+N(E2ßd«Ø—]“ô÷²;h‘eëÄEºÖ¢ºÓFÇž´òqyý£™ýúµ€òžØDžnN¨íJ©1 ü"åÆ<Ú«øÎÐà¾âvÒ)_•™J|ýêf3î܃{hÍ*¦™l±ì"¾B|í—ar°¤G…¹,Ì3èFúù÷Âî™FËŒõEÜ5@˜¤”CcN+nŒxÖÉÉÇ7¨€ÜîZ³òf×—Évº¹7ª¥q^ZZ§ ?žŒñZObŽÛ@Àb;RBäO/ÒMŒæGX^”dûh‡¥»öx€^Ë2x(½Ñy'„tÕ*ƒÑ¾^¡‰|ÖÝy^Ôü7¼p™Ž¦îRYYÛ[¼ µ—«ç×·æ—ÖµÖ9 }W»Ÿ¸Ÿzër×—4»³EÞjÔ\Ⱦ<5ªœä—¸U0ˆL„L1„w«×‰îHj¤ðÚ!q5Ò…é/ cTÁ)Þ¾®bhàÜñ'åðòr®l'% ·…äx8º;âX?B'°Dã Ö—6Ñ”ÛgYú.-Êø?€¿Nœ§;²{TU¦Âº­; -—Eçˆ.b^âJtHúéµO~ÇM7¯\Áp‡¬[Íc¤Ó`'Û#¬C»VÅ·ÜLþùfg–Í3ĺœ0Pgª1T³1ªÛTSȦ]„æqùy4š=xÍ•Zng¹¢€¡N8Ïös†ú!f´te|Ü[šÙ:||Fþ•¦ànéœÂàm¹ÐMW|V‹s1•ÿ5ˆ-0žG”ô¸ ƒí§ŽL6 Üô°W£üí˜L\cç$»[HÈ1$+Qµ­*ÉýÝ+k~‚uŸØu^E þ‡¨ÉgýÃÌ+h HÔq #5ɃíÔô5ÔzÆu2ÒÐUùfÍFF‡šŸë#·ÕA˜@rB°Ò6E/‰N UŸ»Zõuè;)Ëß³«SɳV€<•«¨eD’>qEý¡þâÙ“‹qe~_Jù ûjXñwàó± µÊL£ëèÄKËä´YY~¡I‚ý,œúD7U'© tˆåãw e@§iwÉp7\?Í¢q!c¨OUZÚÍôÉÀAV‰÷ÑÁÔm”Æ%o>h3 Çø¯QWIÕ™7Ù.}Ï1 y-ÃÜI·ÑrìLT[h¤0Ç«žaðN¾¬(óN£”àIoÀîÄñ¥úê<ûrLÐô^êly¸iøá3¨Ð ~Ú”µêm N¾w*™>[ér°E­Û̇$4„@ ø»V€ƒ°uEãÄÏ[܈-Ò†`b#Ϧ"¶ý‡Ï[[„jñmðo ‰²i~·ÿ›ÓõY•Ør|àÞ-Ø©CãP[ AP¤emÓoT¨pÕŸK>ö³ìÂ|tÝA½¥V‹ÙŒlkõjÓ²ÖÎùAq㟠À"ÉÄÇäñŒ:Öºe'/ãTûÔéWá¾nÐãÖz†ïLR DZ¥f·xЩxpí”({ä“V?ô–kvÙZ{ØÛÖp<óÞç“:gjy3ÑZD~ôߤũj2…j¦vìT~º$âG­‹ Y !ž8x¦zaWd»oQ„šÀsÉü磛â•5ëVïR]é&EgqÜTtF¯0¦Œ :žs<Ù-:ÿ ÅM+Mgfù‹¯–3‹ê¸dŽü€7¼[÷[bOåªÈ7>—øCD¾ÀèÈÄkfÙüuáþ°âñ6ì­5›‘Ís::رts"¶Í$Um*åÒ¨[<VÝ­-‰:ìJmæy:=pik¾˜ÈŒgÅ÷oÑýpn¿tr©÷¥“ÌÌ$)ö\óò\L³Éµ¬YäFõ³ŒR éÁXÛL”?h…ÜNÇâ~LÃkÛ׋KU(Ó™™¶d4Ä ßÕ"W •{Õ%Ë~b¾kàóh?*@º¨¥#ëºÓh&£-ßl"÷9Gß­Aó¬YBF9qü­w\  ŒVf â¢kìúHM"ç…ÇAÄfbP\Â9–äßÑC~`ïŽë_'œ¡Køî²´·í•¬ÕiF>fŸf}ný›±ÖwÉÐ o’áÞ­A$é ‰lhx„Ÿ°DN$!騺/¹‡0ŽéŒÒóöv:aS..°w¤–¿û¿W_eÑu.‰¬òÐpá ˆ©[ZB̾T7Ù¯}ÎmmÏGÁä.YS†6ÑŽ›Ê³¸ñ¶€Û0ûÕ¯t•`×Õ-ÇA—çÖ˜@¯ê5ר½ô{ mÇ5~P¬¾Ô&ŒšÖ¹ðUâOµ/Ä<·È片²'jšQ¾¬’ÙîSçÖÇ1ÛMã¤;²ä©€ v­0I®ž&%?’ÁñƒôÞ?Â/L*.FrŸmžžì+>ê WÂx”¥iB¨—­ˆUÇb¯Á¦xUÓK‚Ãæú«nŸe“D¼GmÖL×Wìc±Žq|Žò!ÂøG”¶ZÞ[‰ýXŒkaA 1Ü)F#ín+vS·£óh î>û|ÚPƒÕ«æ£’ÁºÁuý£è÷jJŠ`ñºŠk²ð–¸,d(Ù(myÁ1¬dT2•C<ÍöÍ”;Iåy±úÚe®7yö,Žu˜?Yp`¾êÞë6ª‰QÂýä†ü[h!7¬}g#d1“x0DËEBû41ùCÝåεy‘$­¤”%kÝ«Cç$FÁ‡°£|A’™ðFõð›=XH¤ *^WP ¤Í—X#›0_x?烨…·•78¡ÒkðV’É´Äà„õ>ì?Éž‚¸o—ÅÜ_Ú ½­3¢ìžpÍ~nV©dt(ÿ¤akŠ CÁdühô&:;_`Š[h$”É9„ Há1;‡‰´=±¢ÕàÓè!Ô2%ÙrÆ:’_º³áY+k½1dÏDEcÑÏØ‚7j3ʶ„0 ‹YZsurveillance/data/measles.weser.RData0000644000175100001440000000311212376634041017372 0ustar hornikusers‹í]ÛoU?s¶7nmA¼à PÀíÌìÌ,ŠT©A ‚J¹ˆ.íÐ6¶,îxlâÀ”S/A‰bÔG$˜øà«O>ßHŒú¤1ý>vη§Ó™v™m·lý~Éß73gÎ9³ùè¾®^saïB!„²Ñ2aƒ„ !Ú€.ñsÅa¿¸éŒ_ô B¤î€•͸8X*(p‡›{MA™ V‚‹€‹ƒýZmÀvàRà2 Ö»x'ð.àÝÀ{€+€÷ïÞ|ø p%ð!àÃÀUÀÕÀ5ÀG€×××>ÜÜÜ|˜vM ´ t0 Ü |øp ðiàV`'ðà³ÀmÀ.àsÀnàvààóÀÀ]À€»{€{=Àû€û/_¾<ì¾ < | ø:0<ìö}àqà@éüH8ÞMx“BDà9Äs‹ç ÏsIßku¼Ôó[¿†ÃÞj<Á²jœAÅ÷ŒQ¯Â÷>ŽÍF›qøN¾ Fmˆ‚~ªûï“ÅË8·Às†÷¶WÍ#ðþÇ>¤‚òÍbâ³ ž1}˜Çe¶QËcÄçcjDßøLÀûÝ•QÏŽTÀQžÊPÙpýQïáe}¢?§ðÛÊ`~ÇÀo8/ÆïøÍçâø=Äåyó²`úV‚õà÷&­ý¢ümEAz›ÅÄ9nT[ç ·C’"<¾‡çŸá2óq}VËQïוÔUM™©öj“>ÀûKÝ'j[5~•¬«æËu×0× ˜ÌÖûY¥õNU®š9JÔ¾á9¶>þÎÔ³~¶®íz‹tĽ£ÌQß&üh”꥟zp5þLÔ*ÒENäFü¢(½êà¶¢4•SÓÐËN›Zli±]Ž3Z¬•Ïhå3zùŒ;Zìj±§ÅÙr줵XóuÌRûek•?·0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁ`TÌÕÿŠÈŽ®ŸO9ØÇŸ#BÒT¿ÙJÅŠÛgºT ¸ÿf$i_¦JŽJ­$å*.å´Òc9]û’ÔW&ܯJêŽÓ¸}¦;Æ•ö½’íqõŵµšÿ²fšþOzî´‰èçN=?sê¹í”ã¶õí¿ß[þAÏZVVÖúÅØÙ†ïϵ±²²&ÐK#ÆVv]geeM Ÿ¬ÿóÔ¯WYYYèWk–èìýš••5~þÇ51öãG¬¬¬ ôòнGŽŽÌÊÊš@?¼òÏõ]¿\deeM Ÿ _>¿}ãYVVÖz©ë\zÿÁßXYYè…·¶ütxs++k½ú×é÷¯üÐÍÊÊš@?½¶cõ¡ÝëXYYèø†o¶­ú¶ÈÊÊš@ßýnÏ—ït_dee½u½…·ö`æA*!ÂPY†JÁ0Tþ…¡’/ •ya¨´ Cå\*áBv¤)ê È¤È¢È¦(C‘C‘K‘Gy˜äa’‡I&y˜äa’‡I&y˜äa’‡EyXäa‘‡EyXäa‘‡EyØäa“‡M6yØäa“‡M6yØäa“G†<(éFRʤ„Ié6’’m$¥ÚHJ´‘”f#)ÉFRФé‡Cy8äá‡Cy8äá’‡K.y¸äá’‡K.y¸äá’‡KyxäᑇGyxäᑇGyxä‘%,ydÉ#KYòÈ’G–<²ä‘%¬òHu¤Óå°£šåÐ*‡hTç9\¢htî ¸,;ÏwÝ\Øú»Z=áo¶5ª?؆oV6œñý7ÔuË+ú…Ó~¿Ú¡8šõƒ…%'ü¡ÁcùS…Á|^•h=™?yj87:”?Ñ]Èõ©:ü7µ: £á–ô 犪%Fнæþ¡bO!?ôðÆá<À ݈surveillance/R/0000755000175100001440000000000012617067305013174 5ustar hornikuserssurveillance/R/twinSIR_intensity.R0000644000175100001440000002772011775051460016773 0ustar hornikusers################################################################################ # Authors: Sebastian Meyer, with contributions by Michael Hoehle # Date: 02 June 2009, modified 25 Mar 2011, 27 Jun 2012 # # This file contains functions related to calculating and plotting intensities. ################################################################################ ################################################################################ # Calculate the two components of the intensity lambda(t|H_t) for each row # of the event history. # Be aware that the function assumes atRiskY == 1 in all rows! # # ARGS: # theta - parameter vector c(alpha,beta), where # beta also contains the baseline coefficients in the first place # X - covariate matrix related to alpha, i.e. the epidemic component # Z - covariate matrix related to beta, i.e. the Cox-like endemic component # # RETURNS: a numeric matrix with two columns e and h and nrow(X)==nrow(Z) rows ################################################################################ .eh <- function(theta, X, Z) { # Extracting params from theta dimX <- dim(X) nRows <- dimX[1] # = nrow(Z) px <- dimX[2] pz <- ncol(Z) alpha <- theta[seq_len(px)] beta <- theta[px + seq_len(pz)] # Calculate the epidemic component e(t|H_t) and the endemic component h(t) e <- if (px > 0L) drop(X %*% alpha) else numeric(nRows) h <- if (pz > 0L) drop(exp(Z %*% beta)) else numeric(nRows) # Return the two components of the infection intensity related to the # rows of the event history in a two column matrix eh <- cbind(e = e, h = h) return(eh) } ################################################################################ # Cumulative hazard function # # \Lambda(t) = \int_{timeRange[1]}^t \lambda(s) ds, # # where \lambda(s) = \sum_{i=1}^n \lambda_i(s) # # Be aware that the function assumes atRiskY == 1 for all rows of X/Z/survs !!! # # ARGS: # t - scalar time point until we want to integrate, must be non-negative # theta - parameter vector c(alpha,beta), where # beta also contains the baseline coefficients in the first place # X - covariate matrix related to alpha, i.e. the epidemic component # Z - covariate matrix related to beta, i.e. the Cox-like endemic component # survs - data.frame with columns id, start, stop, event; "timeRange" attribute # weights - vector of length nrow(X) indicating the number of individuals # with the same covariates. weights are allowed to change over time. # Note: it is assumed that none of the individuals covered by # "weights" can have an actual event, if so they need to have their # own row # # RETURNS: value of the cumulative hazard function at time t ################################################################################ Lambda <- function(t, theta, X, Z, survs, weights) { timeRange <- attr(survs, "timeRange") eh <- if (!isScalar(t) || t < timeRange[1L]) { stop("invalid argument 't': must be a scalar >= ", timeRange[1L], " (beginning of observation period)") } else if (t == timeRange[1L]) { return(0) } else if (t < timeRange[2L]) { # We have to extract the relevant intervals sortedStop <- sort(unique(survs$stop)) # Find first stop time beyond t idx <- match(TRUE, sortedStop >= t) firstBeyondt <- sortedStop[idx] includeSurvsRow <- survs$stop <= firstBeyondt # If t between start and stop of an interval we need to chop... if (firstBeyondt != t) { survs$stop[survs$stop == firstBeyondt] <- t } # Extract relevant parts survs <- survs[includeSurvsRow,] weights <- weights[includeSurvsRow] .eh(theta, X[includeSurvsRow,], Z[includeSurvsRow,]) } else { # if t >= attr(survs, "timeRange")[2], we take all rows .eh(theta, X, Z) } lambda <- rowSums(eh) dt <- survs$stop - survs$start intlambda <- sum(weights * lambda * dt) # no individual sums as in loglik return(intlambda) } ################################################################################ # Function to plot the path of the infection intensity or the proportions of # the endemic or epidemic component, either on an individual basis or related # to the total intensity at each event (=infection) time. # The function works with objects of class "simEpidata" # as well as with objects of class "twinSIR". ################################################################################ # 'model' is the result of getModel(x) # if x is of class "twinSIR": theta = (alpha, beta) = (alpha, (h0coefs, betarest)) # if x is of class "simEpidata": theta = (alpha, 1, betarest) # per default, the function uses the fitted or true parameters, respectively intensityplot_twinSIR <- function(model, which = c("epidemic proportion", "endemic proportion", "total intensity"), aggregate = TRUE, theta = NULL, plot = TRUE, add = FALSE, rug.opts = list(), ...) { which <- match.arg(which) ## model components survs <- model$survs start <- attr(survs, "timeRange")[1L] end <- attr(survs, "timeRange")[2L] timeIntervals <- unique(survs[c("start", "stop")]) timepoints <- unique(c(timeIntervals$stop, end)) # need 'end' here, because model does only contain rows with atRiskY == 1, # otherwise would terminate in advance if all individuals have been infected nTimes <- length(timepoints) idlevels <- levels(survs$id) ## helper function for use with by() intensity <- function(iddata, what) { # 'iddata' will be a subset of survs, 'what' will be "wlambda" or "we" y <- numeric(nTimes) # zeroes y[match(iddata$stop, timepoints)] <- iddata[[what]] y } ## Calculate epidemic (e) and endemic (h) component in each row of the model eh <- do.call(".eh", args = c(list(theta = theta), model[c("X", "Z")])) ## Calculate individual _total intensity_ paths lambda <- rowSums(eh) survs$wlambda <- as.vector(model$weights * lambda) ## put individual intensity paths into a matrix [nTimes x n] wlambdaID <- by(data = survs, INDICES = survs["id"], FUN = intensity, what = "wlambda", simplify = FALSE) # initially infectious individuals (without re-infection) don't appear in # survs, since they are never atRiskY => wlambdaID[[i]] is NULL for such an # individual i but should be a 0-vector of length nTimes initiallyInfected <- names(which(sapply(wlambdaID, is.null))) #if (length(initiallyInfected) > 0L) # not necessary wlambdaID[initiallyInfected] <- rep(list(numeric(nTimes)), length(initiallyInfected)) wlambdaIDmatrix <- as.matrix(as.data.frame(c(wlambdaID), optional = TRUE)) ## alternative way but slower: ## wlambdaIDmatrix <- matrix(0, nrow = nTimes, ncol = length(idlevels), ## dimnames = list(NULL, idlevels)) ## for (ID in idlevels) { ## iddata <- survs[survs$id == ID,] ## wlambdaIDmatrix[match(iddata$stop, timepoints), ID] <- iddata$wlambda ## } if (which != "total intensity") { ## Calculate individual _epidemic intensity_ paths survs$we <- { px <- ncol(model$X) if (px == 0L) { stop("nothing to do, model does not contain both components") } as.vector(model$weights * eh[,1]) } ## put individual epidemic intensity paths into a matrix [nTimes x n] weID <- by(data = survs, INDICES = list(id = survs$id), FUN = intensity, what = "we", simplify = FALSE) # we have to replace NULL entries by numeric(nTimes) (cf. wlambdaID) weID[initiallyInfected] <- rep(list(numeric(nTimes)), length(initiallyInfected)) weIDmatrix <- as.matrix(as.data.frame(c(weID), optional = TRUE)) ## alternative code which is slower: ## weIDmatrix <- matrix(0, nrow = nTimes, ncol = length(idlevels), ## dimnames = list(NULL, idlevels)) ## for (ID in idlevels) { ## iddata <- survs[survs$id == ID,] ## weIDmatrix[match(iddata$stop, timepoints), ID] <- iddata$we ## } } ## Generate matrix with data for 'matplot' ydata2plot <- if (which == "total intensity") { if (aggregate) { rowSums(wlambdaIDmatrix) } else { wlambdaIDmatrix } } else { # calculate epidemic proportion if (aggregate) { rowSums(weIDmatrix) / rowSums(wlambdaIDmatrix) } else { weIDmatrix / wlambdaIDmatrix } } if (which == "endemic proportion") { ydata2plot <- 1 - ydata2plot } ydata2plot <- as.matrix(ydata2plot) colnames(ydata2plot) <- if (aggregate) which else idlevels if (which != "total intensity") { # there may be NAs in data2plot where the total intensity equals 0 # => when calculating proportions we get 0 / 0 = NA # we redefine those values to 0. (0-intensity => 0-proportion) ydata2plot[is.na(ydata2plot)] <- 0 } # prepend time (x) column data2plot <- cbind(stop = timepoints, ydata2plot) # if the epidemic is SIRS or SIS (re-susceptibility), there may be time # blocks during the observation period, where no individual is susceptible: # Problem: those time blocks are not included in the model component, # which only contains rows with atRiskY == 1 # Solution: fill the missing time periods with 0 intensity (or proportion) innerStart <- timeIntervals[-1L, "start"] innerStop <- timeIntervals[-nrow(timeIntervals), "stop"] noSusceptiblesStopTimes <- innerStart[innerStop != innerStart] if (length(noSusceptiblesStopTimes) > 0L) { data2plot <- rbind(data2plot, cbind(noSusceptiblesStopTimes, matrix(0, nrow = length(noSusceptiblesStopTimes), ncol = ncol(ydata2plot)) ) ) data2plot <- data2plot[order(data2plot[,1L]),] } ## Plot and return data if (plot) { dotargs <- list(...) nms <- names(dotargs) if(! "xlab" %in% nms) dotargs$xlab <- "time" if(! "ylab" %in% nms) dotargs$ylab <- which if(! "lty" %in% nms) dotargs$lty <- 1 do.call("matplot", args = c(list(x = c(start, data2plot[,1L]), y = rbind(data2plot[1L, -1L, drop = FALSE], data2plot[ , -1L, drop = FALSE]), type = "S", add = add), dotargs)) if (is.list(rug.opts)) { if (is.null(rug.opts$ticksize)) rug.opts$ticksize <- 0.02 if (is.null(rug.opts$quiet)) rug.opts$quiet <- TRUE do.call("rug", args = c(list(x = attr(survs, "eventTimes")), rug.opts)) } invisible(data2plot) } else { data2plot } } ### intensityplot-methods for objects of classes "twinSIR" and "simEpidata" intensityplot.twinSIR <- function () { cl <- match.call() cl[[1]] <- as.name("intensityplot_twinSIR") names(cl)[names(cl) == "x"] <- "model" cl$model <- quote(getModel(x)) if (is.null(theta)) { cl$theta <- quote(coef(x)) } eval(cl) } intensityplot.simEpidata <- function () { cl <- match.call() cl[[1]] <- as.name("intensityplot_twinSIR") names(cl)[names(cl) == "x"] <- "model" cl$model <- quote(getModel(x)) if (is.null(theta)) { config <- attr(x, "config") cl$theta <- quote(c(config$alpha, 1, config$beta)) # 1 is for true h0 } message("Note: the (true) baseline hazard is only evaluated", " at the beginning of the time intervals") eval(cl) } formals(intensityplot.twinSIR) <- formals(intensityplot.simEpidata) <- c(alist(x=), formals(intensityplot_twinSIR)[-1]) surveillance/R/epidataCS.R0000644000175100001440000005427712524145522015166 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Data structure for CONTINUOUS SPATIO-temporal infectious disease case data ### and a spatio-temporal grid of endemic covariates ### ### Copyright (C) 2009-2015 Sebastian Meyer ### $Revision: 1163 $ ### $Date: 2015-01-12 17:42:15 +0100 (Mon, 12. Jan 2015) $ ################################################################################ ###################################################################### # MAIN GENERATOR FUNCTION FOR epidataCS OBJECTS # PARAMS: # events: SpatialPointsDataFrame of cases with obligatory columns # time: time point of event # tile: reference to spatial unit (tile) in stgrid, where the event is located # type: optional type of event (-> marked twinstim). will be converted to a factor variable. # eps.t: maximal temporal influence radius (e.g. length of infectious period, time to culling, etc.), may be Inf # eps.s: maximal spatial influence radius (e.g. 100 [km]), may be Inf # The remaining columns are further marks of the event, e.g. sex, age of infected person (-> epidemic covariates) # The column names ".obsInfLength", ".bdist", ".influenceRegion", and ".sources" are reserved. # ".obsInfLength": observed length of the infectious period (being part [0,T]) # ".bdist": minimal distance of the event locations to the boundary # ".influenceRegion": object of class "owin", the intersection of W with b(s,eps.s), with origin at s # ".sources": potential sources of infection # stgrid: data.frame with obligatory columns # tile: ID of spatial unit (e.g. id of municipality) # start, stop: temporal interval # area: area of the spatial unit (tile) # The remaining columns are endemic covariates. # The column name "BLOCK" is reserved (indexing the time intervals of stgrid). # W: SpatialPolygons. Observation region. Must have same proj4string as events. # qmatrix: square indicator matrix (0/1 or TRUE/FALSE) for possible transmission between the event types. will be internally converted to logical. Defaults to an independent spread of the event types. # nCircle2Poly: accuracy (number of edges) of the polygonal approximation of a circle # T: end of observation period (=last stop time). Must be specified if only the # start but not the stop times are supplied in stgrid (-> auto-generation of stop-times). # clipper: engine to use for computing polygon intersections. ###################################################################### obligColsNames_events <- c("time", "tile", "type", "eps.t", "eps.s") obligColsNames_stgrid <- c("start", "stop", "tile", "area") reservedColsNames_events <- c(".obsInfLength", ".sources", ".bdist", ".influenceRegion", "BLOCK", "start") reservedColsNames_stgrid <- c("BLOCK") as.epidataCS <- function (events, stgrid, W, qmatrix = diag(nTypes), nCircle2Poly = 32, T = NULL, clipper = c("polyclip", "rgeos"), verbose = interactive()) { clipper <- match.arg(clipper) # Check and SORT events if (verbose) cat("\nChecking 'events':\n") events <- check_events(events, verbose = verbose) # Check and SORT stgrid if (verbose) cat("Checking 'stgrid':\n") tiles <- NULL # FIXME: add argument to as.epidataCS stgrid <- if (missing(stgrid) && inherits(tiles, "SpatialPolygons")) { if (verbose) cat("\t(missing, using time-constant 'tiles' grid)\n") stgrid_template <- data.frame( start = min(events$time), stop = max(events$time), tile = row.names(tiles), area = areaSpatialPolygons(tiles, byid = TRUE), check.rows = FALSE, check.names = FALSE) check_stgrid(stgrid_template, verbose = FALSE) } else { check_stgrid(stgrid, T, verbose = verbose) } # Check class of W and consistency of area if (verbose) cat("Checking 'W' ...\n") W <- check_W(W, area.other = sum(stgrid[["area"]][seq_len(nlevels(stgrid$tile))]), other = "stgrid") stopifnot(identicalCRS(W, events)) # Check qmatrix if (verbose) cat("Checking 'qmatrix' ...\n") typeNames <- levels(events$type) nTypes <- length(typeNames) # default value of qmatrix depends on nTypes qmatrix <- checkQ(qmatrix, typeNames) # Check nCircle2Poly stopifnot(isScalar(nCircle2Poly)) nCircle2Poly <- as.integer(nCircle2Poly) # Small helper function converting event index to (time, tile, type) string eventidx2string <- function (eventIdx) { with(events@data, paste(c("time", "tile", "type"), "=", c(time[eventIdx], dQuote(tile[eventIdx]), dQuote(type[eventIdx])), collapse = ", ")) } # Check that all events are part of W if (verbose) cat("Checking if all events are part of 'W' ...\n") WIdxOfEvents <- over(events, W) if (eventNotInWidx <- match(NA, WIdxOfEvents, nomatch = 0L)) { stop("the event at (", eventidx2string(eventNotInWidx), ") is not ", "inside 'W'") } # Some basic quantities eventCoords <- coordinates(events) nEvents <- nrow(eventCoords) timeRange <- with(stgrid, c(start[1], stop[length(stop)])) # Are event times covered by stgrid? if (verbose) cat("Checking if all events are covered by 'stgrid' ...\n") ## FIXME: what about pre-history events? don't need stgrid-data for them if (events$time[1L] <= timeRange[1L] || events$time[nEvents] > timeRange[2L]) { stop("event times are not covered by 'stgrid': must be in (", timeRange[1L],",",timeRange[2L],"]") } # Are all events$tile references really part of the stgrid? .events.tile <- factor(events$tile, levels = levels(stgrid$tile)) if (missingSCellIdx <- match(NA, .events.tile, nomatch = 0L)) { stop("the 'events$tile' entry \"", events$tile[missingSCellIdx], "\"", " is not a valid level of 'stgrid$tile'") } events$tile <- .events.tile # Calculate time point of removal, when event is definitely no longer infective removalTimes <- events$time + events$eps.t # Calculate distance matrix of events if (verbose) cat("Calculating Euclidean distance matrix of events ...\n") eventDists <- as.matrix(dist(eventCoords, method = "euclidean")) #diag(eventDists) <- Inf # infinite distance to oneself (no self-infection), not needed # Map events to corresponding grid cells # Also precalculate possible origins of events (other infected individuals) if (verbose) cat("Mapping events to 'stgrid' cells and", "determining potential event sources ...\n") withPB <- verbose && interactive() gridcellsOfEvents <- integer(nEvents) eventSources <- vector(nEvents, mode = "list") if (withPB) pb <- txtProgressBar(min=0, max=nEvents, initial=0, style=3) for (i in seq_len(nEvents)) { idx <- gridcellOfEvent(events$time[i], events$tile[i], stgrid) if (is.na(idx)) { stop("could not find information for time point ", events$time[i], " and tile \"", events$tile[i], "\" in 'stgrid'") } gridcellsOfEvents[i] <- idx eventSources[[i]] <- determineSources( i, events$time, removalTimes, eventDists[i,], events$eps.s, events$type, qmatrix ) if (withPB) setTxtProgressBar(pb, i) } if (withPB) close(pb) # Attach endemic covariates from stgrid to events if (verbose) cat("Attaching endemic covariates from 'stgrid' to 'events' ...\n") stgridIgnoreCols <- match(setdiff(obligColsNames_stgrid, "start"), names(stgrid)) copyCols <- setdiff(seq_along(stgrid), stgridIgnoreCols) reservedColsIdx <- na.omit(match(names(stgrid)[copyCols], names(events@data), nomatch=NA_integer_)) if (length(reservedColsIdx) > 0L) { warning("in 'events@data', the existing columns with names of endemic ", "covariates from 'stgrid' (", paste0("'", names(events@data)[reservedColsIdx], "'", collapse=", "), ") have been replaced") events@data <- events@data[-reservedColsIdx] } events@data <- cbind(events@data, stgrid[gridcellsOfEvents, copyCols]) # Calculate observed infection length = min(T-time, eps.t) for use in log-likelihood events$.obsInfLength <- with(events@data, pmin(timeRange[2]-time, eps.t)) # Attach possible eventSources (infective individuals) to events events$.sources <- eventSources # Calculate minimal distance of event locations from the polygonal boundary if (verbose) cat("Calculating the events' distances to the boundary ...\n") Wowin <- as(W, "owin") # imported from polyCub events$.bdist <- bdist(eventCoords, Wowin) # Construct spatial influence regions around events if (verbose) cat("Constructing spatial influence regions around events ...\n") events$.influenceRegion <- if (clipper == "polyclip") { .influenceRegions(events, Wowin, nCircle2Poly, clipper=clipper) } else .influenceRegions(events, W, nCircle2Poly, clipper=clipper) # Return components in a list of class "epidataCS" res <- list(events = events, stgrid = stgrid, W = W, qmatrix = qmatrix) class(res) <- "epidataCS" if (verbose) cat("Done.\n\n") return(res) } ###################################################################### # HELPER FUNCTIONS FOR as.epidataCS ###################################################################### ### CHECK FUNCTION FOR events ARGUMENT IN as.epidataCS check_events <- function (events, dropTypes = TRUE, verbose = TRUE) { # Check class and spatial dimensions stopifnot(inherits(events, "SpatialPointsDataFrame")) if (ncol(events@coords) != 2L) { stop("only two spatial dimensions are supported") } # check suitability of Euclidean geometry if (identical(FALSE, is.projected(events))) { # is.projected may return NA warning("\"epidataCS\" expects planar coordinates; ", "see 'spTransform' in package \"rgdal\"") } # Check existence of type column if (verbose) cat("\tChecking 'type' column ... ") events$type <- if ("type" %in% names(events)) { if (dropTypes) factor(events$type) else as.factor(events$type) } else { if (verbose) cat("Setting 'type' to 1 for all events.") factor(rep.int(1L,nrow(events@coords))) } if (verbose) cat("\n") # Check obligatory columns obligColsIdx <- match(obligColsNames_events, names(events), nomatch = NA_integer_) if (any(obligColsMissing <- is.na(obligColsIdx))) { stop("missing obligatory columns in 'events@data': ", paste(obligColsNames_events[obligColsMissing], collapse = ", ")) } # Check other columns on reserved names reservedColsIdx <- na.omit(match(reservedColsNames_events, names(events), nomatch=NA_integer_)) if (length(reservedColsIdx) > 0L) { warning("in 'events@data', the existing columns with reserved names (", paste0("'", names(events)[reservedColsIdx], "'", collapse=", "), ") have been replaced") events@data <- events@data[-reservedColsIdx] } # Check that influence radii are numeric and positive (also not NA) if (verbose) cat("\tChecking 'eps.t' and 'eps.s' columns ...\n") with(events@data, stopifnot(is.numeric(eps.t), eps.t > 0, is.numeric(eps.s), eps.s > 0)) # Transform time into a numeric variable if (verbose) cat("\tConverting event time into a numeric variable ...\n") events$time <- as.numeric(events$time) stopifnot(!is.na(events$time)) # Check event times for ties if (verbose) cat("\tChecking event times for ties ...\n") timeIsDuplicated <- duplicated(events$time) if (any(timeIsDuplicated)) { duplicatedTimes <- unique(events$time[timeIsDuplicated]) warning("detected non-unique event times: ", "concurrent events at time ", if (length(duplicatedTimes) == 1L) "point " else "points\n", paste(duplicatedTimes, collapse = ", ")) } # Sort events chronologically if (verbose) cat("\tSorting events ...\n") events <- events[order(events$time),] # First obligatory columns then remainders (epidemic covariates) obligColsIdx <- match(obligColsNames_events, names(events@data)) covarColsIdx <- setdiff(seq_along(events@data), obligColsIdx) events@data <- events@data[c(obligColsIdx, covarColsIdx)] events@coords.nrs <- numeric(0L) # forget index of coordinate columns # Done. return(events) } ### CHECK FUNCTION FOR stgrid ARGUMENT IN as.epidataCS check_stgrid <- function (stgrid, T, verbose = TRUE) { # Check class stopifnot(inherits(stgrid, "data.frame")) # Check obligatory columns autostop <- FALSE if (is.null(stgrid[["stop"]])) { if (is.null(T)) stop("'T' must be specified for auto-generation ", "of 'stop' column in 'stgrid'") stopifnot(isScalar(T)) autostop <- TRUE stgrid$stop <- NA_real_ } obligColsIdx <- match(obligColsNames_stgrid, names(stgrid), nomatch = NA_integer_) if (any(obligColsMissing <- is.na(obligColsIdx))) { stop("missing obligatory columns in 'stgrid': ", paste(obligColsNames_stgrid[obligColsMissing], collapse = ", ")) } # Check other columns on reserved names reservedColsIdx <- na.omit(match(reservedColsNames_stgrid, names(stgrid), nomatch=NA_integer_)) if (length(reservedColsIdx) > 0L) { warning("in 'stgrid', the existing columns with reserved names (", paste0("'", names(stgrid)[reservedColsIdx], "'", collapse=", "), ") have been replaced") stgrid <- stgrid[-reservedColsIdx] } # Transform tile into a factor variable # (also removing unused levels if it was a factor) if (verbose) cat("\tConverting 'tile' into a factor variable ...\n") stgrid$tile <- factor(stgrid$tile) # Transform start times and area into numeric variables stgrid$start <- as.numeric(stgrid$start) stgrid$area <- as.numeric(stgrid$area) # Check stop times stgrid$stop <- if (autostop) { # auto-generate stop times from start times and T if (verbose) cat("\tAuto-generating 'stop' column ...\n") starts <- sort(unique(stgrid$start)) if (T <= starts[length(starts)]) { stop("'T' must be larger than the last 'start' time in 'stgrid'") } stops <- c(starts[-1], T) stops[match(stgrid$start, starts)] } else { as.numeric(stgrid$stop) } # chronological data.frame of unique periods histIntervals <- unique(stgrid[c("start", "stop")]) histIntervals <- histIntervals[order(histIntervals[,1L]),] nBlocks <- nrow(histIntervals) if (!autostop) { # Check start/stop consistency if (verbose) cat("\tChecking start/stop consisteny ...\n") if (any(histIntervals[,2L] <= histIntervals[,1L])) { stop("stop times must be greater than start times") } startStopCheck <- histIntervals[-1L,1L] != histIntervals[-nBlocks,2L] if (startStopCheckIdx <- match(TRUE, startStopCheck, nomatch = 0)) { stop("inconsistent start/stop times: time intervals not consecutive ", "at stop time ", histIntervals[startStopCheckIdx,2L]) } } # Add BLOCK id stgrid$BLOCK <- match(stgrid$start, histIntervals[,1L]) # Check that we have a full BLOCK x tile grid if (verbose) cat("\tChecking if the grid is complete ...\n") blocksizes <- table(stgrid$BLOCK) tiletable <- table(stgrid$tile) if (length(unique(blocksizes)) > 1L || length(unique(tiletable)) > 1L) { stop("'stgrid' is not a full grid") } # First column BLOCK, then obligCols, then remainders (endemic covariates) if (verbose) cat("\tSorting the grid by time and tile ...\n") BLOCKcolIdx <- match("BLOCK", names(stgrid)) obligColsIdx <- match(obligColsNames_stgrid, names(stgrid)) covarColsIdx <- setdiff(seq_along(stgrid), c(BLOCKcolIdx, obligColsIdx)) stgrid <- stgrid[c(BLOCKcolIdx, obligColsIdx, covarColsIdx)] # Sort by BLOCK and tile stgrid <- stgrid[order(stgrid$BLOCK, stgrid$tile),] # # Get row indexes of the blocks' first/last rows # beginBlock <- match(seq_len(nBlocks), stgrid[["BLOCK"]]) # endBlock <- c(beginBlock[-1L]-1L, nrow(stgrid)) # Done. return(stgrid) } ### CHECK FUNCTION FOR W ARGUMENT IN as.epidataCS check_W <- function (W, area.other = NULL, other, tolerance = 0.001) { W <- as(W, "SpatialPolygons") # i.e. drop data if a SpatialPolygonsDataFrame if (!is.null(area.other) && area.other > 0) { check_W_area(W, area.other, other, tolerance) } return(W) } check_W_area <- function (W, area.other, other, tolerance = 0.001) { area.W <- areaSpatialPolygons(W) if (!isTRUE(all.equal.numeric(area.other, area.W, tolerance = tolerance, check.attributes = FALSE))) warning("area of 'W' (", area.W, ") differs from ", "total tile area in '", other, "' (", area.other, ")") } ### CHECK FUNCTION FOR tiles ARGUMENT IN as.epidataCS check_tiles <- function (tiles, levels, events = NULL, areas.stgrid = NULL, W = NULL, keep.data = FALSE, tolerance = 0.05) { stopifnot(inherits(tiles, "SpatialPolygons"), is.vector(levels, mode="character")) tileIDs <- row.names(tiles) ## check completeness of tiles if (any(missingtiles <- !levels %in% tileIDs)) stop(sum(missingtiles), " regions are missing in 'tiles', ", "check 'row.names(tiles)'") ## re-order: first 'levels', then any extra tiles tiles <- tiles[c(levels, setdiff(tileIDs, levels)),] ## drop data (also for suitable over-method in check_tiles_events) .tiles <- as(tiles, "SpatialPolygons") ## check tile specification of events and identical projection if (!is.null(events)) { check_tiles_events(.tiles, events) } ## check areas areas.tiles <- areaSpatialPolygons(tiles[levels,], byid = TRUE) if (!is.null(areas.stgrid)) { check_tiles_areas(areas.tiles, areas.stgrid, tolerance=tolerance) } if (!is.null(W)) { stopifnot(identicalCRS(tiles, W)) check_W_area(W, area.other=sum(areas.tiles), other="tiles", tolerance=tolerance) } ## done if (keep.data) tiles else .tiles } check_tiles_events <- function (tiles, events) { tiles <- as(tiles, "SpatialPolygons") # remove potential data for over() stopifnot(inherits(events, "SpatialPointsDataFrame"), identicalCRS(tiles, events)) tileIDs <- row.names(tiles) eventIDs <- row.names(events) ## get polygon ID's of events (via overlay) eventtiles <- tileIDs[over(events, tiles)] if (length(which_not_in_tiles <- which(is.na(eventtiles)))) warning("some of 'events' are not within 'tiles': ", paste0("\"", eventIDs[which_not_in_tiles], "\"", collapse=", ")) if (!is.null(events@data[["tile"]])) { which_disagree <- setdiff( which(eventtiles != as.character(events$tile)), which_not_in_tiles) if (length(which_disagree)) message("'over(events, tiles)' disagrees with 'events$tile': ", paste0("\"", eventIDs[which_disagree], "\"", collapse=", ")) } invisible() } check_tiles_areas <- function (areas.tiles, areas.stgrid, tolerance = 0.05) { areas_all_equal <- all.equal.numeric(areas.stgrid, areas.tiles, tolerance = tolerance, check.attributes = FALSE) if (!isTRUE(areas_all_equal)) warning("tile areas in 'stgrid' differ from areas of 'tiles': ", areas_all_equal) } ### CONSTRUCT SPATIAL INFLUENCE REGIONS AROUND EVENTS # An influenceRegion is an object of class "owin" with origin # at the event (over which we have to integrate by a cubature rule) # An attribute "area" gives the area of the influenceRegion. # If it is actually a circular influence region, then there is an attribute # "radius" denoting the radius of the influence region. # Argument 'W' can be of class "owin" (preferred) or "SpatialPolygons" # (especially for clipper="rgeos") .influenceRegions <- function (events, W, npoly, maxExtent = NULL, clipper = "polyclip") { Wowin <- as(W, "owin") if (is.null(maxExtent)) maxExtent <- diameter.owin(Wowin) doIntersection <- switch( clipper, # which package to use for polygon intersection "polyclip" = function (center, eps) intersectPolyCircle.owin(Wowin, center, eps, npoly), "rgeos" = function (center, eps) as( intersectPolyCircle.SpatialPolygons( as(W, "SpatialPolygons"), center, eps, npoly), "owin"), stop("unsupported polygon clipping engine: '", clipper, "'") ) eventCoords <- coordinates(events) res <- mapply( function (x, y, eps, bdist) { center <- c(x,y) ## if eps is very large, the influence region is the whole region of W iR <- shift.owin( if (eps > maxExtent) Wowin else doIntersection(center, eps), -center) ## if iR is actually a circle of radius eps, attach eps as attribute attr(iR, "area") <- if (eps <= bdist) { attr(iR, "radius") <- eps pi * eps^2 } else area.owin(iR) iR }, eventCoords[,1], eventCoords[,2], events$eps.s, events$.bdist, SIMPLIFY = FALSE, USE.NAMES = FALSE) attr(res, "nCircle2Poly") <- npoly attr(res, "clipper") <- clipper res } surveillance/R/wrap_univariate.R0000644000175100001440000001463512564314555016533 0ustar hornikusers############################################################################## # This function is a wrapper for univariate surveillance algorithms # using the old disProg and survRes object # # An sts object is given and a pre specified algorithms is ran # by successively creating a disProg object for each region, # running the algo and then assign the slots of the resulting survRes # object to an sts object. ################################################################################### ###Apply other algorithms by wrapping up a suitable package. #Wrapper function to call algo.farrington for each time series in an sts object wrap.algo <- function(sts, algo, control, control.hook=function(k, control) return(control), verbose=TRUE,...) { #Number of time series nAreas <- ncol(sts@observed) nTimePoints <- nrow(sts@observed) nAlarm <- length(control$range) #Create alarm matrix having same size as sts sts@alarm <- matrix(NA,ncol=nAreas,nrow=nTimePoints,dimnames=dimnames(sts@observed)) sts@upperbound <- matrix(NA,ncol=nAreas,nrow=nTimePoints,dimnames=dimnames(sts@observed)) #Loop over all regions for (k in 1:nAreas) { if (verbose) { cat("Running ",algo," on area ",k," out of ",nAreas,"\n") } ##Create an old S3 disProg object disProg.k <- sts2disProg(sts[,k]) #Use the univariate algorithm (possibly preprocess control object) kcontrol <- control.hook(k, control) survRes.k <- do.call(algo,args = list(disProg.k, control=kcontrol)) #Transfer results to the S4 object if (!is.null(survRes.k)) { sts@alarm[control$range,k] <- survRes.k$alarm sts@upperbound[control$range,k] <- survRes.k$upperbound #Control object needs only to be set once sts@control <- survRes.k$control } } #Reduce sts object to only those obervations in range sts@observed <- sts@observed[control$range,,drop=FALSE] sts@state <- sts@state[control$range,,drop=FALSE] sts@populationFrac <- sts@populationFrac[control$range,,drop=FALSE] sts@alarm <- sts@alarm[control$range,,drop=FALSE] sts@upperbound <- sts@upperbound[control$range,,drop=FALSE] #Set correct theta0t matrix for all sts@control$theta0t <- control$theta0t #Fix the corresponding start entry start <- sts@start new.sampleNo <- start[2] + min(control$range) - 1 start.year <- start[1] + (new.sampleNo - 1) %/% sts@freq start.sampleNo <- (new.sampleNo - 1) %% sts@freq + 1 sts@start <- c(start.year,start.sampleNo) sts@epoch <- sts@epoch[control$range] sts@epochAsDate <- sts@epochAsDate #Ensure dimnames in the new object sts <- fix.dimnames(sts) return(sts) } #Farrington wrapper farrington <- function(sts, control=list(range=NULL, b=3, w=3, reweight=TRUE, verbose=FALSE,alpha=0.01),...) { wrap.algo(sts,algo="algo.farrington",control=control,...) } #Bayes wrapper (this can be implemented more efficiently) bayes <- function(sts, control = list(range = range, b = 0, w = 6, actY = TRUE,alpha=0.05),...) { if (sts@epochAsDate) { warning("algo.bayes currently can't handle Date entries. Computing reference values based on freq") } wrap.algo(sts,algo="algo.bayes",control=control) } #RKI wrapper rki <- function(sts, control = list(range = range, b = 2, w = 4, actY = FALSE),...) { if (sts@epochAsDate) { warning("algo.rki currently can't handle Date entries. Computing reference values based on freq") } wrap.algo(sts,algo="algo.rki",control=control,...) } #outbreakP wrapper outbreakP <- function(sts, control=list(range = range, k=100, ret=c("cases","value"),maxUpperboundCases=1e5),...) { wrap.algo(sts,algo="algo.outbreakP",control=control,...) } #HMM wrapper hmm <- function(sts, control=list(range=NULL, noStates=2, trend=TRUE, noHarmonics=1,covEffectEqual=FALSE),...) { if (sts@epochAsDate) { warning("algo.hmm currently can't handle Date entries. Computing reference values based on freq") } wrap.algo(sts,algo="algo.hmm",control=control,...) } #Cusum wrapper cusum <- function(sts, control = list(range=range, k=1.04, h=2.26, m=NULL, trans="standard",alpha=NULL),...) { wrap.algo(sts,algo="algo.cusum",control=control,...) } #GLRpois wrapper glrpois <- function(sts, control = list(range=range,c.ARL=5, S=1, beta=NULL, Mtilde=1, M=-1, change="intercept",theta=NULL),...) { wrap.algo(sts,algo="algo.glrpois",control=control,...) } #GLRnb wrapper glrnb <- function(sts, control = list(range=range,c.ARL=5, mu0=NULL, alpha=0, Mtilde=1, M=-1, change="intercept",theta=NULL,dir=c("inc","dec"), ret=c("cases","value")), ...) { wrap.algo(sts,algo="algo.glrnb",control=control,...) } #### this code definitely needs some more documentation -- wrap.algo atm is # 100% without docu #Rogerson wrapper # theta0t now has to be a matrix #library(surveillance) #data("ha") #rogerson(disProg2sts(ha),control=list(range=200:290,ARL0=100,s=1,theta0t=matrix(1,nrow=91,ncol=12))) rogerson <- function(sts, control = list(range=range, theta0t=NULL, ARL0=NULL, s=NULL, hValues=NULL, distribution=c("poisson","binomial"), nt=NULL, FIR=FALSE,limit=NULL, digits=1),...) { if (sts@epochAsDate) { warning("algo.rogerson currently can't handle Date entries. Computing reference values based on freq") } #Hook function to find right theta0t vector control.hook = function(k,control) { #Extract values relevant for the k'th component control$theta0t <- control$theta0t[,k] if (is.null(control[["nt",exact=TRUE]])) { control$nt <- sts@populationFrac[control$range,k] } else { if (!all.equal(sts@populationFrac[control$range,k],control$nt[,k])) { warning("Warning: nt slot of control specified, but specified population differs.") } else { control$nt <- control$nt[,k] } } #If no hValues given then compute them if (is.null(control[["hValues",exact=TRUE]])) { #This code does not appear to work once n is big. # control$hValues <- hValues(theta0 = unique(control$theta0t), ARL0=control$ARL0, s=control$s , distr = control$distribution, n=mean(control$nt))$hValues control$hValues <- hValues(theta0 = unique(control$theta0t), ARL0=control$ARL0, s=control$s , distr = control$distribution)$hValues } return(control) } #WrapIt wrap.algo(sts,algo="algo.rogerson",control=control,control.hook=control.hook,...) } surveillance/R/boda.R0000755000175100001440000002367312471172531014236 0ustar hornikusers###################################################################### # An implementation of the Bayesian Outbreak Detection Algorithm (BODA) # described in Manitz and H{\"o}hle (2013), Biometrical Journal. # # Note: The algorithm requires the non CRAN package INLA to run. # You can install this package by writing # R> source("http://www.math.ntnu.no/inla/givemeINLA.R") # See http://www.r-inla.org/download for details. # # # Author: # The initial code was written by J. Manitz, which was then later # adapted and modified for integration into the package by M. Hoehle. # Contributions by M. Salmon. # # Date: # Code continuously developed during 2010-2014 # # Changes: # MS@2015-02-18 # fixed problem that the posterior was drawn from the respective marginals # instead of the joint distribution. # MH@2014-02-05 # changed tcltk progress bar to text based one and modified code, # use S4 sts object (no wrapping wanted) and changed to new INLA # function name for calculating the transformed marginal. ###################################################################### boda <- function(sts, control=list(range=NULL, X=NULL, trend=FALSE, season=FALSE, prior=c('iid','rw1','rw2'), alpha=0.05, mc.munu=100, mc.y=10, verbose=FALSE,multicore=TRUE, samplingMethod=c('joint','marginals'))) { #Check if the INLA package is available. if (!requireNamespace("INLA", quietly = TRUE)) { stop("The boda function requires the INLA package to be installed.\n", " The package is not available on CRAN, but can be downloaded by calling\n", "\tsource(\"http://www.math.ntnu.no/inla/givemeINLA.R\")\n", " as described at http://www.r-inla.org/download in detail.") } #Possibly speed up the computations by using multiple cores. if (is.null(control[["multicore",exact=TRUE]])) { control$multicore <- TRUE } if (control$multicore) { INLA::inla.setOption("num.threads", parallel::detectCores(logical = TRUE)) } #Stop if the sts object is multivariate if (ncol(sts)>1) { stop("boda currently only handles univariate sts objects.") } # extract data observed <- as.vector(observed(sts)) state <- as.vector(sts@state) time <- 1:length(observed) # clean model data from given outbreaks -- this is now part of the modelling # observed[which(state==1)] <- NA ### define range # missing range if(is.null(control[["range",exact=TRUE]])){ warning('No range given. Range is defined as time from second period until end of time series.') control$range <- (sts@freq+1):length(observed) } # check that range is subset of time series indices if(!all(control$range %in% time)){ stop("Evaluation period 'range' has to be vector of time series indices.") } #set order of range control$range <- sort(control$range) ### show extra output from INLA if(is.null(control[["verbose",exact=TRUE]])) { control$verbose <- FALSE } ### setting for different models if(is.null(control[["trend",exact=TRUE]])){ control$trend <- FALSE } if(is.null(control[["season",exact=TRUE]])){ control$season <- FALSE } if(!is.logical(control$trend)||!is.logical(control$season)){ stop('trend and season are logical parameters.') } ### Prior prior <- match.arg(control$prior, c('iid','rw1','rw2')) if(is.vector(control$X)){ control$X <- as.matrix(control$X,ncol=1) } # sampling method for the parameters samplingMethod <- match.arg(control$samplingMethod, c('joint','marginals')) # setting for threshold calcuation if(is.null(control[["alpha",exact=TRUE]])){ control$alpha <- 0.05 } if(control$alpha <= 0 | control$alpha >= 1){ stop("The significance level 'alpha' has to be a probability, and thus has to be between 0 and 1.") } # setting for monte carlo integration if(is.null(control[["mc.munu",exact=TRUE]])){ control$mc.munu <- 100 } if(is.null(control[["mc.y",exact=TRUE]])){ control$mc.y <- 10 } if(!control$mc.munu>0 || control$mc.munu!=round(control$mc.munu,0) || !control$mc.y>0 || control$mc.y!=round(control$mc.y,0)){ stop('Number of Monte Carlo trials has to be an integer larger than zero') } ### set model formula and data modelformula <- paste("observed ~ f(time, model='",prior,"', cyclic=FALSE)", sep="") dat <- data.frame(observed=observed, time=time) # outbreak id if(sum(state)>0){ modelformula <- paste(modelformula, "+ f(state, model='linear')", sep="") dat <- data.frame(dat, state=state) } # trend if(control$trend){ modelformula <- paste(modelformula, "+ f(timeT, model='linear')", sep="") dat <- data.frame(dat, timeT=time) } # season if(control$season){ modelformula <- paste(modelformula, "+ f(timeS, model='seasonal', season.length=",sts@freq,")", sep="") dat <- data.frame(dat, timeS=time) } # covariables X.formula <- NULL if(!is.null(control$X)){ if(nrow(control$X)!=length(observed)){ stop("Argument for covariates 'X' has to have the same length like the time series") } for(i in 1:ncol(control$X)){ X.formula <- (paste(X.formula ,'+', colnames(control$X)[i])) } modelformula <- paste(modelformula, X.formula, sep="") dat <- data.frame(dat, control$X) } modelformula <- as.formula(modelformula) ##### sequential steps ##### #If there is more than one time point in range, then setup a progress bar #(now text based. Alternative: tcltk based) useProgressBar <- length(control$range)>1 if (useProgressBar) { pb <- txtProgressBar(min=min(control$range), max=max(control$range), initial=0,style=3) } #Allocate vector of thresholds xi <- rep(NA,length(observed)) #Loop over all time points in 'range' for(i in control$range){ # prepare data frame dati <- dat[1:i,] dati$observed[i] <- NA #current value to be predicted dati$state[i] <- 0 #current state to be predicted # fit model and calculate quantile using INLA & MC sampling # browser() xi[i] <- bodaFit(dat=dati, samplingMethod=samplingMethod, modelformula=modelformula, prior=prior, alpha=control$alpha, mc.munu=control$mc.munu, mc.y=control$mc.y) # update progress bar if (useProgressBar) setTxtProgressBar(pb, i) } # close progress bar if (useProgressBar) close(pb) # compare observed with threshold an trigger alarm: FALSE=no alarm sts@alarm[,1] <- observed > xi sts@upperbound[,1] <- xi control$name <- paste('boda(prior=',prior,')',sep='') sts@control <- control # return result as an sts object return(sts[control$range,]) } ####################################################################### # Helper function for fitting the Bayesian GAM using INLA and computing # the (1-alpha)*100% quantile for the posterior predictive of y[T1] # # Parameters: # dat - data.frame containing the data # modelformula - formula to use for fitting the model with inla # prior - what type of prior for the spline c('iid','rw1','rw2') # alpha - quantile to compute in the predictive posterior # mc.munu - no. of Monte Carlo samples for the mu/size param in the NegBin # mc.y - no. of samples for y. # # Returns: # (1-alpha)*100% quantile for the posterior predictive of y[T1] ###################################################################### bodaFit <- function(dat=dat, modelformula=modelformula,prior=prior,alpha=alpha, mc.munu=mc.munu, mc.y=mc.y, samplingMethod=samplingMethod,...) { # set time point T1 <- nrow(dat) ### fit model link <- 1 E <- mean(dat$observed, na.rm=TRUE) model <- INLA::inla(modelformula, data=dat, family='nbinomial',E=E, control.predictor=list(compute=TRUE,link=link), control.compute=list(cpo=FALSE,config=TRUE), control.inla = list(int.strategy = "grid",dz=1,diff.logdens = 10)) if(is.null(model)){ return(qi=NA) } if(samplingMethod=='marginals'){ # draw sample from marginal posteriori of muT1 & etaT1 to determine predictive # quantile by sampling. hoehle: inla.marginal.transform does not exist anymore! # Since the observation corresponding to T1 is NA we manually need to transform # the fitted values (had there been an observation this is not necessary!!) marg <- try(INLA::inla.tmarginal(function(x) x,model$marginals.fitted.values[[T1]]), silent=TRUE) if(inherits(marg,'try-error')){ return(qi=NA) } mT1 <- try(INLA::inla.rmarginal(n=mc.munu,marg), silent=TRUE) if(inherits(mT1,'try-error')){ return(qi=NA) } # take variation in size hyperprior into account by also sampling from it mtheta <- model$internal.marginals.hyperpar[[1]] theta <- exp(INLA::inla.rmarginal(n=mc.munu,mtheta)) if(inherits(theta,'try-error')){ return(qi=NA) } #Draw (mc.munu \times mc.y) responses. Would be nice, if we could #determine the quantile of the predictive posterior in more direct form yT1 <- numeric(mc.munu*mc.y) #NULL idx <- seq(mc.y) for(j in seq(mc.munu)) { idx <- idx + mc.y yT1[idx] <- rnbinom(n=mc.y,size=theta[j],mu=E*mT1[j]) } } if (samplingMethod=='joint'){ # Sample from the posterior jointSample <- INLA::inla.posterior.sample(mc.munu,model,hyper.user.scale = FALSE) # take variation in size hyperprior into account by also sampling from it theta <- exp(t(sapply(jointSample, function(x) x$hyperpar[[1]]))) mT1 <- exp(t(sapply(jointSample, function(x) x$latent[[T1]]))) yT1 <- rnbinom(n=mc.y*mc.munu,size=theta,mu=E*mT1) } qi <- quantile(yT1, probs=(1-alpha), type=3, na.rm=TRUE) #Determine the upper (1-alpha)*100% quantile of the predictive posterior return(qi) } #done bodaFit surveillance/R/modifyListcall.R0000644000175100001440000000220412060143477016271 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Function to modify a list _call_ according to another one similar to ### what utils::modifyList (by Deepayan Sarkar) does for list objects. ### ### Copyright (C) 2012 Sebastian Meyer ### $Revision: 463 $ ### $Date: 2012-12-06 17:26:39 +0100 (Don, 06 Dez 2012) $ ################################################################################ is.listcall <- function (x) { is.call(x) && as.character(x[[1]]) %in% c("list", "alist") } modifyListcall <- function (x, val) { stopifnot(is.listcall(x), is.listcall(val)) xnames <- names(x)[-1] for (v in names(val)[nzchar(names(val))]) { xv <- if (v %in% xnames && is.listcall(x[[v]]) && is.listcall(val[[v]])) modifyListcall(x[[v]], val[[v]]) else val[[v]] x[v] <- list(xv) # allows for NULL value of val[[v]] } x } surveillance/R/twinstim_iafplot.R0000644000175100001440000003105012520414147016703 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Plot estimated interaction kernel (siaf/tiaf) as a function of distance ### ### Copyright (C) 2012-2015 Sebastian Meyer ### $Revision: 1325 $ ### $Date: 2015-04-30 13:56:23 +0200 (Don, 30. Apr 2015) $ ################################################################################ iafplot <- function (object, which = c("siaf", "tiaf"), types = NULL, scaled = c("intercept", "standardized", "no"), truncated = FALSE, log = "", conf.type = if (length(pars) > 1) "MC" else "parbounds", conf.level = 0.95, conf.B = 999, xgrid = 101, col.estimate = rainbow(length(types)), col.conf = col.estimate, alpha.B = 0.15, lwd = c(3,1), lty = c(1,2), verticals = FALSE, do.points = FALSE, add = FALSE, xlim = NULL, ylim = NULL, xlab = NULL, ylab = NULL, legend = !add && (length(types) > 1), ...) { if (isTRUE(verticals)) verticals <- list() if (isTRUE(do.points)) do.points <- list() if (add) log <- paste0("", if (par("xlog")) "x", if (par("ylog")) "y") scaled <- if (is.logical(scaled)) { # surveillance < 1.9-0 if (scaled) "intercept" else "no" } else { match.arg(scaled) } coefs <- coef(object) epiloglink <- .epilink(object) == "log" typeNames <- rownames(object$qmatrix) nTypes <- length(typeNames) ## interaction function which <- match.arg(which) IAFobj <- object$formula[[which]] if (is.null(IAFobj)) stop("the model has no epidemic component") IAF <- IAFobj[[if (which=="siaf") "f" else "g"]] if (which == "siaf") { # needs to be a function of distance IAF <- as.function( c(alist(x=, ...=), quote(f(cbind(x, 0), ...))), envir = list2env(list(f = IAF), parent = environment(IAF)) ) } isStepFun <- !is.null(knots <- attr(IAFobj, "knots")) && !is.null(maxRange <- attr(IAFobj, "maxRange")) ## interaction range if (isScalar(truncated)) { eps <- truncated truncated <- TRUE } else { eps <- attr(IAFobj, "eps") } if (is.null(eps)) { # cannot take eps into account (pre 1.8-0 behaviour) eps <- NA_real_ } else if (length(eps) > 1L && truncated) { message("no truncation due to heterogeneous interaction ranges, see \"rug\"") } epsIsFixed <- length(eps) == 1L && is.finite(eps) ## scaled interaction function if (scaled == "intercept") { idxgamma0 <- match("e.(Intercept)", names(coefs), nomatch = 0L) if (idxgamma0 == 0L) { message("no scaling due to missing epidemic intercept") scaled <- "no" } } else { # we do not use gamma0 -> 0-length selection idxgamma0 <- 0L } SCALE <- switch(scaled, "intercept" = if (epiloglink) quote(exp(gamma0)) else quote(gamma0), "standardized" = quote(1/IAF(0, iafpars, types)), "no" = 1 ) FUN <- function (x, iafpars, types, gamma0) { scale <- eval(SCALE) vals <- scale * IAF(x, iafpars, types) } ## truncate at eps if (truncated && epsIsFixed) { body(FUN) <- as.call(c(as.list(body(FUN)), expression( vals[x > eps] <- 0, vals ))) } ## if (loglog) { ## body(FUN)[[length(body(FUN))]] <- ## call("log", body(FUN)[[length(body(FUN))]]) ## } ## extract parameters gamma0 <- coefs[idxgamma0] idxiafpars <- grep(paste0("^e\\.",which), names(coefs)) iafpars <- coefs[idxiafpars] ## concatenate parameters idxpars <- c(idxgamma0, idxiafpars) pars <- c(gamma0, iafpars) ## type of confidence band force(conf.type) # per default depends on 'pars' if (length(pars) == 0 || is.null(conf.type) || is.na(conf.type)) { conf.type <- "none" } conf.type <- match.arg(conf.type, choices = c("parbounds", "bootstrap", "MC", "none")) if (conf.type == "bootstrap") conf.type <- "MC" # "bootstrap" was used <1.8 if (conf.type == "parbounds" && length(pars) > 1) { warning("'conf.type=\"parbounds\"' is only valid for a single parameter") } ## grid of x-values (t or ||s||) on which FUN will be evaluated if (is.null(xlim)) { xmax <- if (add) { xmax <- par("usr")[2] / (if (par("xaxs")=="r") 1.04 else 1) if (par("xlog")) 10^xmax else xmax } else { if (epsIsFixed) { eps } else if (isStepFun && maxRange < Inf) { maxRange } else if (which == "siaf") { sqrt(sum((object$bbox[,"max"] - object$bbox[,"min"])^2)) } else { diff(object$timeRange) } } xlim <- c(0.5*grepl("x", log), xmax) } xgrid <- if (isStepFun) { c(if (grepl("x", log)) { if (xlim[1L] < knots[1L]) xlim[1L] else NULL } else 0, knots[knots 1L && truncated) rug(eps) } ## store evaluated interaction function in a matrix (will be returned) typeNamesSel <- typeNames[types] res <- matrix(NA_real_, length(xgrid), 1L+length(types), dimnames = list(NULL, c("x", typeNamesSel))) res[,1L] <- xgrid for (i in seq_along(types)) { ## select parameters on which to evaluate iaf parSample <- switch(conf.type, parbounds = { cis <- confint(object, idxpars, level=conf.level) ## all combinations of parameter bounds do.call("expand.grid", as.data.frame(t(cis))) }, MC = { # Monte-Carlo confidence interval ## sample parameters from their asymptotic multivariate normal dist. rbind(pars, mvrnorm(conf.B, mu=pars, Sigma=vcov(object)[idxpars,idxpars,drop=FALSE]), deparse.level=0) }) ## add confidence limits if (!is.null(parSample)) { fvalsSample <- apply(parSample, 1, if (scaled == "intercept") { function (pars) FUN(xgrid, pars[-1L], types[i], pars[1L]) } else { function (pars) FUN(xgrid, pars, types[i]) }) if (length(xgrid) == 1L) # e.g., single-step function fvalsSample <- t(fvalsSample) # convert to matrix form lowerupper <- if (conf.type == "parbounds") { t(apply(fvalsSample, 1, range)) } else { # Monte-Carlo sample of parameter values if (is.na(conf.level)) { stopifnot(alpha.B >= 0, alpha.B <= 1) .col <- col2rgb(col.conf[i], alpha=TRUE)[,1] .col["alpha"] <- round(alpha.B*.col["alpha"]) .col <- do.call("rgb", args=c(as.list(.col), maxColorValue = 255)) matlines(x=xgrid, y=fvalsSample, type="l", lty=lty[2], col=.col, lwd=lwd[2]) # returns NULL } else { t(apply(fvalsSample, 1, quantile, probs=c(0,conf.level) + (1-conf.level)/2)) } } if (!is.null(lowerupper)) { attr(res, if(length(types)==1) "CI" else paste0("CI.",typeNamesSel[i])) <- lowerupper if (isStepFun) { segments(rep.int(xgrid,2L), lowerupper, rep.int(c(xgrid[-1L], min(maxRange, xlim[2L])), 2L), lowerupper, lty=lty[2], col=col.conf[i], lwd=lwd[2]) ##points(rep.int(xgrid,2L), lowerupper, pch=16, col=col.conf[i]) } else { matlines(x=xgrid, y=lowerupper, type="l", lty=lty[2], col=col.conf[i], lwd=lwd[2]) } } } ## add point estimate res[,1L+i] <- FUN(xgrid, iafpars, types[i], gamma0) if (isStepFun) { segments(xgrid, res[,1L+i], c(xgrid[-1L], min(maxRange, xlim[2L])), res[,1L+i], lty = lty[1], col = col.estimate[i], lwd = lwd[1]) ## add points if (is.list(do.points)) { pointStyle <- modifyList(list(pch=16, col=col.estimate[i]), do.points) do.call("points", c(list(xgrid, res[,1L+i]), pointStyle)) } ## add vertical connections: if (is.list(verticals)) { verticalStyle <- modifyList( list(lty = 3, col = col.estimate[i], lwd = lwd[1L]), verticals) do.call("segments", c( list(xgrid[-1L], res[-length(xgrid),1L+i], xgrid[-1L], res[-1L,1L+i]), verticalStyle)) } if (maxRange <= xlim[2L]) { ## add horizontal=0 afterwards segments(maxRange, 0, xlim[2L], 0, lty = lty[1], col = col.estimate[i], lwd = lwd[1]) if (is.list(verticals)) do.call("segments", c( list(maxRange, res[length(xgrid),1L+i], maxRange, 0), verticalStyle)) if (is.list(do.points)) do.call("points", c(list(maxRange, 0), pointStyle)) } } else { lines(x = xgrid, y = res[,1L+i], lty = lty[1], col = col.estimate[i], lwd = lwd[1]) } } ## add legend if (isTRUE(legend) || is.list(legend)) { default.legend <- list(x = "topright", legend = typeNamesSel, col = col.estimate, lty = lty[1], lwd = lwd[1], bty = "n", cex = 0.9, title="type") legend.args <- if (is.list(legend)) { modifyList(default.legend, legend) } else default.legend do.call("legend", legend.args) } ## Invisibly return interaction function evaluated on xgrid (by type) invisible(res) } surveillance/R/epidataCS_animate.R0000644000175100001440000001533312424415000016640 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### animate-method for "epidataCS" objects ### It respects the ani.options() "interval" and "nmax" of the animation ### package, and it is advisable to use it within saveHTML() or similar ### ### Copyright (C) 2009-2014 Sebastian Meyer ### $Revision: 1096 $ ### $Date: 2014-10-30 11:59:12 +0100 (Don, 30. Okt 2014) $ ################################################################################ ## three types: ## time.spacing=NULL: sequential snapshots at all event times ## time.spacing=scalar: snapshots with given time step (and timer) ## time.spacing=NA: time step is determined such that "nmax" snapshots result animate.epidataCS <- function (object, interval = c(0,Inf), time.spacing = NULL, nmax = NULL, sleep = NULL, legend.opts = list(), timer.opts = list(), pch = 15:18, col.current = "red", col.I = "#C16E41", col.R = "#B3B3B3", col.influence = NULL, main = NULL, verbose = interactive(), ...) { stopifnot(is.numeric(interval), length(interval) == 2L) with.animation <- requireNamespace("animation", quietly = TRUE) if (is.null(sleep)) { sleep <- if (with.animation) animation::ani.options("interval") else 0.1 ## we cannot set this as default function argument, because we don't ## want to depend on package "animation" (surveillance only suggests it) } if (is.null(nmax)) { nmax <- if (with.animation) animation::ani.options("nmax") else Inf } s <- summary(object) removalTimes <- s$eventTimes + object$events$eps.t eventCoordsTypes <- cbind(s$eventCoords, type = s$eventTypes) pch <- rep_len(pch, s$nTypes) typeNames <- names(s$typeTable) multitype <- length(typeNames) > 1L # set default legend options doLegend <- if (is.list(legend.opts)) { if (is.null(legend.opts[["x"]])) legend.opts$x <- "topright" if (is.null(legend.opts$title)) legend.opts$title <- if (multitype) "type" else "state" if (is.null(legend.opts$legend)) { legend.opts$legend <- if (multitype) typeNames else c("infectious", if (!is.na(col.R)) "removed") } if (is.null(legend.opts$col)) { legend.opts$col <- if (multitype) col.current else c(col.I, if (!is.na(col.R)) col.R) } if (is.null(legend.opts$pch)) legend.opts$pch <- pch TRUE } else FALSE # set default timer options doTimer <- if (is.list(timer.opts)) { if (is.null(timer.opts[["x"]])) timer.opts$x <- "bottomright" if (is.null(timer.opts$title)) timer.opts$title <- "time" if (is.null(timer.opts$box.lty)) timer.opts$box.lty <- 0 if (is.null(timer.opts$adj)) timer.opts$adj <- c(0.5,0.5) if (is.null(timer.opts$inset)) timer.opts$inset <- 0.01 if (is.null(timer.opts$bg)) timer.opts$bg <- "white" TRUE } else FALSE # wrapper for 'points' with specific 'cex' for multiplicity multpoints <- function (tableCoordsTypes, col) { tableMult <- countunique(tableCoordsTypes) points(tableMult[,1:2,drop=FALSE], pch = pch[tableMult[,"type"]], col = col, cex = sqrt(1.5*tableMult[,"COUNT"]/pi) * par("cex")) } # functions returning if events are in status I or R at time t I <- function (t) s$eventTimes <= t & removalTimes >= t R <- function (t) removalTimes < t sequential <- is.null(time.spacing) # plot observed infections sequentially if (!sequential) stopifnot(length(time.spacing) == 1L) timeGrid <- if (sequential) unique(s$eventTimes) else { start <- max(s$timeRange[1], interval[1]) end <- min(interval[2], s$timeRange[2], max(removalTimes) + if (is.na(time.spacing)) 0 else time.spacing) if (is.na(time.spacing)) { if (!is.finite(nmax)) { stop("with 'time.spacing=NA', 'nmax' must be finite") } seq(from = start, to = end, length.out = nmax) } else { tps <- seq(from = start, to = end, by = time.spacing) if (length(tps) > nmax) { message("Generating only the first ", sQuote(if (with.animation) "ani.options(\"nmax\")" else "nmax"), " (=", nmax, ") snapshots") head(tps, nmax) } else tps } } .info <- format.info(timeGrid) timerformat <- paste0("%", .info[1], ".", .info[2], "f") # animate loopIndex <- if (!sequential) timeGrid else { idxs <- which(s$eventTimes >= interval[1] & s$eventTimes <= interval[2]) if (length(idxs) > nmax) { message("Generating only the first ", sQuote(if (with.animation) "ani.options(\"nmax\")" else "nmax"), " (=", nmax, ") events") head(idxs, nmax) } else idxs } told <- -Inf if (verbose) pb <- txtProgressBar(min=0, max=max(loopIndex), initial=0, style=3) for(it in loopIndex) { t <- if (sequential) s$eventTimes[it] else it infectious <- I(t) removed <- R(t) plot(object$W, ...) # FIXME: use default lwd = 2 title(main = main) if (doLegend) do.call(legend, legend.opts) if (doTimer) { ttxt <- sprintf(timerformat, t) do.call(legend, c(list(legend = ttxt), timer.opts)) } if (!is.null(col.influence)) { iRids <- which(infectious) if (sequential) setdiff(iRids, it) for(j in iRids) { iR <- shift.owin(object$events@data$.influenceRegion[[j]], s$eventCoords[j,]) plot(iR, add = TRUE, col = col.influence, border = NA) } } rTable <- eventCoordsTypes[removed,,drop=FALSE] if (nrow(rTable) > 0L) multpoints(rTable, col = col.R) iTable <- eventCoordsTypes[infectious,,drop=FALSE] if (nrow(iTable) > 0L) multpoints(iTable, col = col.I) infectiousNew <- if (sequential) it else infectious & !I(told) iTableNew <- eventCoordsTypes[infectiousNew,,drop=FALSE] if (nrow(iTableNew) > 0L) multpoints(iTableNew, col = col.current) told <- t if (verbose) setTxtProgressBar(pb, it) if (dev.interactive()) Sys.sleep(sleep) } if (verbose) close(pb) ## if (dev.interactive()) ## message("Note: use facilities of the \"animation\" package, e.g.,\n", ## " saveHTML() to view the animation in a web browser.") invisible(NULL) } surveillance/R/catCUSUM.R0000644000175100001440000002142712303444055014702 0ustar hornikusers######################################################################### # Categorical CUSUM for y_t \sim M_k(n_t, \pi_t) for t=1,...,tmax # Workhorse function doing the actual computations - no semantic checks # are performed here, we expect "proper" input. # # Params: # y - (k) \times tmax observation matrix for all categories # pi0 - (k) \times tmax in-control prob vector for all categories # pi1 - (k) \times tmax out-of-control prob vector for all categories # dfun - PMF function of the categorical response, i.e. multinomial, binomial, # beta-binom, etc. # n - vector of dim tmax containing the varying sizes # h - decision threshold of the Categorical CUSUM ######################################################################### catcusum.LLRcompute <- function(y, pi0, pi1, h, dfun, n, calc.at=TRUE,...) { #Initialize variables t <- 0 stopped <- FALSE S <- numeric(ncol(y)+1) U <- numeric(ncol(y)+1) #Run the Categorical LR CUSUM while (!stopped) { #Increase time t <- t+1 #Compute log likelihood ratio # llr <- dmultinom(y[,t], size=n[t], prob=pi1[,t],log=TRUE) - # dmultinom(y[,t], size=n[t], prob=pi0[,t],log=TRUE) llr <- dfun(y=y[,t,drop=FALSE], size=n[t], mu=pi1[,t,drop=FALSE], log=TRUE,...) - dfun(y=y[,t,drop=FALSE], size=n[t], mu=pi0[,t,drop=FALSE], log=TRUE, ...) #Add to CUSUM S[t+1] <- max(0,S[t] + llr) #For binomial data it is also possible to compute how many cases it would take #to sound an alarm given the past. if (nrow(y) == 2 & calc.at) { #For the binomial its possible to compute the number needed for an #alarm exact if (identical(dfun,dbinom)) { #Calculations in ../maple/numberneededbeforealarm.mw at <- (h - S[t] - n[t] * ( log(1 - pi1[1,t]) - log(1-pi0[1,t]))) / (log(pi1[1,t]) - log(pi0[1,t]) - log(1-pi1[1,t]) + log(1-pi0[1,t])) U[t+1] = ceiling(max(0,at)) } else { #Compute the value at by trying all values betweeen 0 and n_t. If #no alarm, then we know the value for an alarm must be larger than y_t if (S[t+1]>h) { ay <- rbind(seq(0,y[1,t],by=1),n[t]-seq(0,y[1,t],by=1)) } else { ay <- rbind(seq(y[1,t],n[t],by=1),n[t]-seq(y[1,t],n[t],by=1)) } llr <- dfun(ay, size=n[t], mu=pi1[,t,drop=FALSE], log=TRUE,...) - dfun(ay, size=n[t], mu=pi0[,t,drop=FALSE], log=TRUE, ...) alarm <- llr > h-S[t] #Is a_t available, i.e. does a y_t exist or is the set over which to #take the minimum empty? if (sum(alarm)==0) { U[t+1] <- NA } else { U[t+1] <- ay[1,which.max(alarm)] } } } #Only run to the first alarm. Then reset. if ((S[t+1] > h) | (t==ncol(y))) { stopped <- TRUE} } #If no alarm at the end put rl to end (its censored!) #Question: Is this not automatically handled? if (sum(S[-1]>h)>0) { t <- which.max(S[-1] > h) } else { t <- ncol(pi0) ##Last one } #Missing: cases needs to be returned! return(list(N=t,val=S[-1],cases=U[-1])) } ###################################################################### # Wrap function to process sts object by categoricalCUSUM (new S4 # style). Time varying number of counts is found in slot populationFrac. # # Params: # control - list with the following components # * range - vector of indices in disProgObj to monitor # * h - threshold, once CUSUM > h we have an alarm # * pi0 - (k-1) \times tmax in-control prob vector for all but ref cat # * pi1 - (k-1) \times tmax out-of-control prob vector for all but ref cat # * dfun - PMF to use for the computations, dmultinom, dbinom, dBB, etc. # ... - further parameters to be sent to dfun ###################################################################### categoricalCUSUM <- function(stsObj, control = list(range=NULL,h=5, pi0=NULL, pi1=NULL, dfun=NULL, ret=c("cases","value")),...) { # Set the default values if not yet set if(is.null(control[["pi0",exact=TRUE]])) { stop("Error: No specification of in-control proportion vector pi0!") } if(is.null(control[["pi1",exact=TRUE]])) { stop("Error: No specification of out-of-control proportion vector pi1!") } if(is.null(control[["dfun",exact=TRUE]])) { stop("Error: No specification of the distribution to use, e.g. dbinom, dmultinom or similar!") } if(is.null(control[["h",exact=TRUE]])) control$h <- 5 if(is.null(control[["ret",exact=TRUE]])) control$ret <- "value" #Extract the important parts from the arguments range <- control$range y <- t(stsObj@observed[range,,drop=FALSE]) pi0 <- control[["pi0",exact=TRUE]] pi1 <- control[["pi1",exact=TRUE]] dfun <- control[["dfun",exact=TRUE]] control$ret <- match.arg(control$ret, c("value","cases")) #Total number of objects that are investigated. Note this #can't be deduced from the observed y, because only (c-1) columns #are reported so using: n <- apply(y, 2, sum) is wrong! #Assumption: all populationFrac's contain n_t and we can take just one n <- stsObj@populationFrac[range,1,drop=TRUE] #Semantic checks if ( ((ncol(y) != ncol(pi0)) | (ncol(pi0) != ncol(pi1))) | ((nrow(y) != nrow(pi0)) | (nrow(pi0) != nrow(pi1)))) { stop("Error: dimensions of y, pi0 and pi1 have to match") } if ((control$ret == "cases") & nrow(pi0) != 2) { stop("Cases can only be returned in case k=2.") } if (length(n) != ncol(y)) { stop("Error: Length of n has to be equal to number of columns in y.") } #Check if all n entries are the same if (!all(apply(stsObj@populationFrac[range,],1,function(x) all.equal(as.numeric(x),rev(as.numeric(x)))))) { stop("Error: All entries for n have to be the same in populationFrac") } #Reserve space for the results # start with cusum[timePoint -1] = 0, i.e. set cusum[1] = 0 alarm <- matrix(data = 0, nrow = length(range), ncol = nrow(y)) upperbound <- matrix(data = 0, nrow = length(range), ncol = nrow(y)) #Small helper function to be used along the way --> move to other file! either <- function(cond, whenTrue, whenFalse) { if (cond) return(whenTrue) else return(whenFalse) } #Setup counters for the progress doneidx <- 0 N <- 1 noofalarms <- 0 noOfTimePoints <- length(range) ####################################################### #Loop as long as we are not through the entire sequence ####################################################### while (doneidx < noOfTimePoints) { ##Run Categorical CUSUM until the next alarm res <- catcusum.LLRcompute(y=y, pi0=pi0, pi1=pi1, n=n, h=control$h, dfun=dfun,calc.at=(control$ret=="cases"),...) #In case an alarm found log this and reset the chart at res$N+1 if (res$N < ncol(y)) { #Put appropriate value in upperbound upperbound[1:res$N + doneidx,] <- matrix(rep(either(control$ret == "value", res$val[1:res$N] ,res$cases[1:res$N]),each=ncol(upperbound)),ncol=ncol(upperbound),byrow=TRUE) alarm[res$N + doneidx,] <- TRUE #Chop & get ready for next round y <- y[,-(1:res$N),drop=FALSE] pi0 <- pi0[,-(1:res$N),drop=FALSE] pi1 <- pi1[,-(1:res$N),drop=FALSE] n <- n[-(1:res$N)] #Add to the number of alarms noofalarms <- noofalarms + 1 } doneidx <- doneidx + res$N } #Add upperbound-statistic of last segment, where no alarm is reached upperbound[(doneidx-res$N+1):nrow(upperbound),] <- matrix( rep(either(control$ret == "value", res$val, res$cases),each=ncol(upperbound)),ncol=ncol(upperbound),byrow=TRUE) # Add name and data name to control object control$name <- "multinomCUSUM" control$data <- NULL #not supported anymore #New direct calculations on the sts object stsObj@observed <- stsObj@observed[control$range,,drop=FALSE] stsObj@epoch <- stsObj@epoch[control$range,drop=FALSE] stsObj@state <- stsObj@state[control$range,,drop=FALSE] stsObj@populationFrac <- stsObj@populationFrac[control$range,,drop=FALSE] stsObj@alarm <- alarm stsObj@upperbound <- upperbound stsObj@control <- control #Fix the corresponding start entry if (stsObj@epochAsDate==FALSE){ start <- stsObj@start new.sampleNo <- start[2] + min(control$range) - 1 start.year <- start[1] + (new.sampleNo - 1) %/% stsObj@freq start.sampleNo <- (new.sampleNo - 1) %% stsObj@freq + 1 stsObj@start <- c(start.year,start.sampleNo) } else { stsObj@start <- c(isoWeekYear(epoch(stsObj)[1])$ISOYear,isoWeekYear(epoch(stsObj)[1])$ISOWeek) } #Ensure dimnames in the new object ## THIS NEEDS TO BE FIXED! #stsObj <- fix.dimnames(stsObj) #Done return(stsObj) } surveillance/R/twinstim_siaf_step.R0000644000175100001440000001201112306105105017207 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### twinstim's spatial interaction function as a step function ### ### Copyright (C) 2014 Sebastian Meyer ### $Revision: 820 $ ### $Date: 2014-03-06 15:46:29 +0100 (Don, 06 Mär 2014) $ ################################################################################ siaf.step <- function (knots, maxRange = Inf, nTypes = 1, validpars = NULL) { knots <- sort(unique(as.vector(knots,mode="numeric"))) stopifnot(knots > 0, is.finite(knots), isScalar(maxRange), maxRange > knots) nknots <- length(knots) # = number of parameters (per type) allknots <- c(0, knots, unique(c(maxRange,Inf))) allknotsPos <- c(0,knots,maxRange) # pos. domain, =allknots if maxRange=Inf nTypes <- as.integer(nTypes) stopifnot(length(nTypes) == 1L, nTypes > 0L) ## for the moment we don't make this type-specific if (nTypes != 1) stop("type-specific shapes are not yet implemented") npars <- nknots * nTypes ## ## auxiliary function to get the type-specific values (heights) from logvals ## logvals4type <- function (logvals, type) ## logvals[(type-1)*nknots + seq_len(nknots)] ## auxiliary function calculating the areas of the "rings" of the ## two-dimensional step function intersected with a polydomain. ## Returns a numeric vector of length ## length(allknotsPos)-1 == nknots+1 (i.e. not appending the area of the ## 0-height ring from maxRange to Inf in case maxRange < Inf) .ringAreas <- function (polydomain, npoly = 256) { polyvertices <- vertices(polydomain) polyarea <- area.owin(polydomain) bdist <- bdist(cbind(0,0), polydomain) ## distance to farest vertex (-> later steps not relevant) R <- sqrt(max(polyvertices[["x"]]^2 + polyvertices[["y"]]^2)) sliceAreas <- sapply(allknotsPos[-1L], function (r) { if (r <= bdist) pi * r^2 else if (r >= R) polyarea else area.owin(intersectPolyCircle.owin(polydomain,c(0,0),r,npoly=npoly)) }, simplify=TRUE, USE.NAMES=FALSE) diff.default(c(0,sliceAreas)) } ## since this is the most cumbersome task, use memoization (result does not ## depend on the parameters being optimized, but on influenceRegions only) ringAreas <- if (requireNamespace("memoise")) { memoise::memoise(.ringAreas) } else { warning("siaf.step() is much slower without memoisation", immediate.=TRUE) .ringAreas } f <- function (s, logvals, types = NULL) { sLength <- sqrt(.rowSums(s^2, length(s)/2, 2L)) ## step function is right-continuous, intervals are [a,b) c(1, exp(logvals), 0)[.bincode(sLength, allknots, right=FALSE)] } F <- function (polydomain, f, logvals, type = NULL, npoly = 256) { ## sum of the volumes of the intersections of "rings" with 'polydomain' sum(c(1, exp(logvals)) * ringAreas(polydomain, npoly=npoly)) } Fcircle <- function (r, logvals, type = NULL) { # exact integration on disc ## this is just the sum of the "ring" volumes sum(c(1, exp(logvals)) * pi * diff(pmin.int(allknotsPos, r)^2)) } deriv <- function (s, logvals, types = NULL) { sLength <- sqrt(.rowSums(s^2, L <- length(s)/2, 2L)) whichvals <- .bincode(sLength, allknots, right=FALSE) - 1L ## NOTE: sLength >= maxRange => whichvals > nknots (=> f=0) ## we do a bare-bone implementation of relevant parts of ## deriv <- outer(whichvals, seq_len(nknots), "==") Y <- rep.int(seq_len(nknots), rep.int(L,nknots)) # column index Z <- rep.int(exp(logvals), rep.int(L,nknots)) # value ##<- 6x faster than rep(..., each=L) #X <- rep.int(whichvals, nknots) deriv <- (Y == whichvals) * Z dim(deriv) <- c(L, nknots) deriv } Deriv <- function (polydomain, deriv, logvals, type = NULL, npoly = 256) { ringAreas <- ringAreas(polydomain, npoly=npoly) exp(logvals) * ringAreas[-1L] } simulate <- function (n, logvals, type = NULL, ub) { upper <- min(maxRange, ub) knots2upper <- c(knots[knots < upper], upper) heights <- c(1,exp(logvals))[seq_along(knots2upper)] ## first, sample the "rings" of the points rings <- sample.int(length(heights), size=n, replace=TRUE, prob=heights*diff.default(c(0,knots2upper^2))) ## sample points from these rings runifdisc(n, knots2upper[rings], c(0,knots2upper)[rings]) } ## Done res <- list(f = f, F = F, Fcircle = Fcircle, deriv = deriv, Deriv = Deriv, simulate = simulate, npars = npars, validpars = validpars) attr(res, "knots") <- knots attr(res, "maxRange") <- maxRange res } surveillance/R/sts_creation.R0000644000175100001440000001373212545232342016015 0ustar hornikusers################################################################################ #' Function for simulating a time series #' #' Function for simulating a time series and creating a sts-object #' As the counts are generated using a negative binomial distribution #' one also gets the (1-alpha) quantile for each timepoint (can be interpreted #' as an in-control upperbound for in-control values). #' The baseline and outbreaks are created as in Noufaily 2012. ################################################################################ # Parameters for the negbin #' @references An improved algorithm for outbreak detection in multiple surveillance systems, Noufaily, A., Enki, D.G., Farrington, C.P., Garthwaite, P., Andrews, N.J., Charlett, A. (2012), Statistics in Medicine, published online. ### #' @param theta baseline frequency of reports #' @param beta time trend #' @param gamma1 seasonality #' @param gamma2 seasonality #' @param m seasonality #' @param overdispersion overdispersion (size in rnbinom for the parameterization with mean and size) #' @param delayMax maximal delay in time units ### # Parameters for the time series ### #' @param dates dates of the time series #' @param densityDelay density distribution for the delay ### # Parameters for outbreaks ### #' @param sizesOutbreak sizes of all the outbreaks (vector) #' @param datesOutbreak dates of all the outbreaks (vector) #' # alpha #' @param alpha alpha for getting the (1-alpha) quantile of the negative binomial distribution at each timepoint #' @examples #' set.seed(12345) #' # Time series parameters #' scenario4 <- c(1.6,0,0.4,0.5,2) #' theta <- 1.6 #' beta <- 0 #' gamma1 <-0.4 #' gamma2 <- 0.5 #' overdispersion <- 1 #' m <- 1 #' # Dates #' firstDate <- "2006-01-01" #' lengthT=350 #' dates <- as.Date(firstDate,origin='1970-01-01') + 7 * 0:(lengthT - 1) #' # Maximal delay in weeks #' D=10 #' # Dates and sizes of the outbreaks #' datesOutbreak <- c(as.Date("2008-03-30"),as.Date("2011-09-25",origin="1970-01-01")) #' sizesOutbreak <- c(2,5) #' # Delay distribution #' data("salmAllOnset") #' in2011 <- which(formatDate(epoch(salmAllOnset), "%G") == 2011) #' rT2011 <- salmAllOnset@@control$reportingTriangle$n[in2011,] #' densityDelay <- apply(rT2011,2,sum, na.rm=TRUE)/sum(rT2011, na.rm=TRUE) #' # alpha for the upperbound #' alpha <- 0.05 #' # Create the sts with the full time series #' stsSim <- sts_creation(theta=theta,beta=beta,gamma1=gamma1,gamma2=gamma2,m=m,overdispersion=overdispersion,dates=dates,sizesOutbreak=sizesOutbreak,datesOutbreak=datesOutbreak,delayMax=D, #' densityDelay=densityDelay,alpha=alpha) #' plot(stsSim) #' @export sts_creation <- function(theta,beta,gamma1,gamma2,m,overdispersion,dates, sizesOutbreak,datesOutbreak,delayMax,alpha, densityDelay){ lengthT <- length(dates) firstDate=dates[1] # Baseline observed <- rep(NA,lengthT) upperbound <- rep(NA,lengthT) state <- logical(length=lengthT) for (t in 1:lengthT) { if (m==0){season=0} if (m==1){season=gamma1*cos(2*pi*t/52)+ gamma2*sin(2*pi*t/52)} if (m==2){season=gamma1*cos(2*pi*t/52)+ gamma2*sin(2*pi*t/52)+gamma1*cos(4*pi*t/52)+ gamma2*sin(4*pi*t/52)} mu <- exp(theta + beta*t + season) observed[t] <- rnbinom(mu=mu,size=overdispersion,n=1) upperbound[t] <- qnbinom(mu=mu,size=overdispersion,p=(1-alpha)) } # Outbreaks nOutbreaks <- length(sizesOutbreak) if (nOutbreaks>1){ dens <- lognormDiscrete(Dmax=20,logmu=0,sigma=0.5) for (i in 1:nOutbreaks){ tOutbreak <- which(dates==datesOutbreak[i]) numberOfCases <- rpois(n=1,lambda=sizesOutbreak[i]*(mu*(1+mu/overdispersion))) cases <- rep(0,length(dens)) if (numberOfCases!=0){ for (case in 1:numberOfCases){ t <- sample(x=1:length(dens),size=1,prob=dens) cases[t] <- cases[t] + 1 } } cases <- cases[cases>0] if(sum(cases)>0){ observed[tOutbreak:(tOutbreak+length(cases)-1)] <- observed[tOutbreak:(tOutbreak+length(cases)-1)] + cases state[tOutbreak:(tOutbreak+length(cases)-1)] <- TRUE } } } observed <- observed[1:lengthT] # Reporting triangle if (!is.null(densityDelay)){ # use density delay n <- matrix(0, lengthT, delayMax + 1,dimnames=list(as.character(dates),NULL)) for (t in 1:lengthT){ if(observed[t]!=0){ for (case in 1:observed[t]){ delay <- sample(x=0:delayMax,size=1,prob=densityDelay) if (delay > delayMax) {delay <- delayMax} n[t, delay + 1] <- n[t, delay + 1] + 1 } } } } else{ # Using a poisson as for the outbreaks because it looks good n <- matrix(0, lengthT, D + 1,dimnames=list(as.character(dates),NULL)) for (t in 1:lengthT){ if(observed[t]!=0){ for (case in 1:observed[t]){ delay <- rpois(n=1, lambda=1.5) if (delay > D) {delay <- D} n[t, delay + 1] <- n[t, delay + 1] + 1 } } } } # Create the sts firstYear <- isoWeekYear(as.Date(firstDate,origin="1970-01-01"))$ISOYear firstWeek <- isoWeekYear(as.Date(firstDate,origin="1970-01-01"))$ISOWeek newSts <- new("sts", epoch = as.numeric(dates), start = c(2006, 1), upperbound = as.matrix(upperbound), freq = 52, observed = observed, state = as.matrix(state), epochAsDate = TRUE) newSts@control$reportingTriangle$n <- n return(newSts) } ################################################################################ # FUNCTION FOR DISCRETIZING THE LOG NORM DISTRIBUTION ################################################################################ lognormDiscrete <- function(Dmax=20,logmu=0,sigma=0.5){ Fd <- plnorm(0:Dmax, meanlog = logmu, sdlog = sigma) FdDmax <- plnorm(Dmax, meanlog = logmu, sdlog = sigma) #Normalize prob <- diff(Fd)/FdDmax return(prob) } surveillance/R/twinSIR_methods.R0000644000175100001440000002312112422377747016410 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Methods for "twinSIR" fits, specifically: ### - vcov: enabling the use of function confint to calculate Wald ### confidence intervals for the parameter estimates. ### - logLik: enables the use of function AIC ### - AIC, extractAIC: compute AIC or OSAIC depending on argument 'one.sided' ### - print, summary, print.summary, plot (intensityPlot), ... ### ### Copyright (C) 2009-2014 Sebastian Meyer, contributions by Michael Hoehle ### $Revision: 1088 $ ### $Date: 2014-10-24 09:29:43 +0200 (Fre, 24. Okt 2014) $ ################################################################################ ### don't need a specific coef-method (identical to stats:::coef.default) ## coef.twinSIR <- function (object, ...) ## { ## object$coefficients ## } # asymptotic variance-covariance matrix (inverse of fisher information matrix) vcov.twinSIR <- function (object, ...) { solve(object$fisherinfo) } logLik.twinSIR <- function (object, ...) { r <- object$loglik attr(r, "df") <- length(coef(object)) class(r) <- "logLik" r } # Note: pz is determined by scanning the names of coef(object), # thus the 'model' component is not necessary # See the Hughes and King (2003) paper for details .OSAICpenalty <- function (twinSIRobject, k = 2, nsim = 1e3) { theta <- coef(twinSIRobject) npar <- length(theta) pz <- length(grep("cox\\([^)]+\\)", names(theta), ignore.case = FALSE, perl = FALSE, fixed = FALSE, useBytes = FALSE, invert = FALSE)) px <- npar - pz # number of constrained (non-negative) parameters penalty <- if (px == 0L) { k * pz # default AIC penalty (with k = 2) } else if (px == 1L) { k * (pz + 0.5) } else if (px == 2L) { Sigma <- vcov(twinSIRobject) # parameter covariance matrix rho <- cov2cor(Sigma[1:2,1:2])[1,2] as <- acos(rho)/2/pi w <- c(as, 0.5, 0.5-as) k * sum(w * (pz + 0:2)) # = k * sum(w * (npar - px + 0:2)) } else { # px > 2 message("Computing OSAIC weights for ", px, " epidemic covariates based on ", nsim, " simulations ...") W <- vcov(twinSIRobject)[1:px,1:px] w.sim <- w.chibarsq.sim(p=px, W=W, N=nsim) #c.f. (12) in Hughes & King (2003), r_i=px, m=0:px, ki=npar #as npar=pz+px, we have that npar-px = pz, hence the sum is k * sum(w.sim * (pz + 0:px)) } attr(penalty, "exact") <- px <= 2 penalty } AIC.twinSIR <- function (object, ..., k = 2, one.sided = NULL, nsim = 1e3) { AIC.default <- match.call() AIC.default$one.sided <- NULL AIC.default$nsim <- NULL AIC.default[[1]] <- call(":::", as.name("stats"), as.name("AIC.default")) ## I don't see any easy way of using AIC.default while avoiding ":::". ## NextMethod() does not fit due to extra arguments one.sided & nsim. ## Could maybe unclass "object" and all objects in "..." and then use AIC() if (is.null(one.sided)) { one.sided <- object$method == "L-BFGS-B" } if (one.sided) { penalty <- .OSAICpenalty(object, k = k, nsim = nsim) edf <- length(coef(object)) AIC.default$k <- penalty/edf } res <- eval(AIC.default, parent.frame()) attr(res, "type") <- if (one.sided) "One-sided AIC" else "Standard AIC" attr(res, "exact") <- if (one.sided) attr(penalty, "exact") else TRUE res } extractAIC.twinSIR <- function (fit, scale = 0, k = 2, one.sided = NULL, nsim = 1e3, ...) { if (is.null(one.sided)) { one.sided <- fit$method == "L-BFGS-B" } loglik <- logLik(fit) edf <- attr(loglik, "df") penalty <- if (one.sided) { .OSAICpenalty(fit, k = k, nsim = nsim) # one-sided AIC } else { k * edf # default AIC } res <- c(edf = edf, AIC = -2 * c(loglik) + penalty) attr(res, "type") <- if (one.sided) "One-sided AIC" else "Standard AIC" attr(res, "exact") <- if (one.sided) attr(penalty, "exact") else TRUE res } print.twinSIR <- function (x, digits = max(3, getOption("digits") - 3), ...) { cat("\nCall:\n") print.default(x$call) cat("\nCoefficients:\n") print.default(format(coef(x), digits=digits), print.gap = 2, quote = FALSE) cat("\nLog-likelihood: ", format(logLik(x), digits=digits), "\n", sep = "") if (!x$converged) { cat("\nWARNING: OPTIMIZATION DID NOT CONVERGE!\n") } cat("\n") invisible(x) } summary.twinSIR <- function (object, correlation = FALSE, symbolic.cor = FALSE, ...) { ans <- object[c("call", "converged", "counts", "intervals", "nEvents")] ans$cov <- vcov(object) est <- coef(object) se <- sqrt(diag(ans$cov)) zval <- est/se pval <- 2 * pnorm(abs(zval), lower.tail = FALSE) ans$coefficients <- cbind(est, se, zval, pval) dimnames(ans$coefficients) <- list(names(est), c("Estimate", "Std. Error", "z value", "Pr(>|z|)")) if (correlation) { ans$correlation <- cov2cor(ans$cov) ans$symbolic.cor <- symbolic.cor } ans$loglik <- logLik(object) aic <- extractAIC(object, ...) ans$aic <- as.vector(aic[2L]) # remove 'edf' element attributes(ans$aic) <- attributes(aic)[c("type", "exact")] class(ans) <- "summary.twinSIR" ans } print.summary.twinSIR <- function (x, digits = max(3, getOption("digits") - 3), symbolic.cor = x$symbolic.cor, signif.stars = getOption("show.signif.stars"), ...) { cat("\nCall:\n") print.default(x$call) cat("\nCoefficients:\n") coefs <- x$coefficients printCoefmat(coefs, digits = digits, signif.stars = signif.stars, na.print = "NA", ...) nEvents <- x$nEvents nh0 <- length(nEvents) if (nh0 < 2L) { cat("\nTotal number of infections: ", nEvents, "\n") } else { cat("\nBaseline intervals:\n") intervals <- character(nh0) for(i in seq_len(nh0)) { intervals[i] <- paste("(", paste(format(x$intervals[c(i,i+1L)],trim=TRUE), collapse=";"), "]", sep = "") } names(intervals) <- paste("logbaseline", seq_len(nh0), sep=".") print.default(rbind("Time interval" = intervals, "Number of events" = nEvents), quote = FALSE, print.gap = 2) } cat("\n", attr(x$aic, "type"), ": ", format(x$aic, digits=max(4, digits+1)), if (!attr(x$aic, "exact")) "\t(simulated penalty weights)" else "", sep = "") cat("\nLog-likelihood:", format(x$loglik, digits = digits)) cat("\nNumber of log-likelihood evaluations:", x$counts[1], "\n") correl <- x$correlation if (!is.null(correl)) { p <- NCOL(correl) if (p > 1L) { cat("\nCorrelation of Coefficients:\n") if (is.logical(symbolic.cor) && symbolic.cor) { correl <- symnum(correl, abbr.colnames = NULL) correlcodes <- attr(correl, "legend") attr(correl, "legend") <- NULL print(correl) cat("---\nCorr. codes: ", correlcodes, "\n", sep="") } else { correl <- format(round(correl, 2), nsmall = 2, digits = digits) correl[!lower.tri(correl)] <- "" print(correl[-1, -p, drop = FALSE], quote = FALSE) } } } if (!x$converged) { cat("\nWARNING: OPTIMIZATION DID NOT CONVERGE!\n") } cat("\n") invisible(x) } ### Plot method for twinSIR (wrapper for intensityplot) plot.twinSIR <- function (x, which, ...) # defaults for 'which' are set below { cl <- match.call() cl[[1]] <- as.name("intensityplot") eval(cl, envir = parent.frame()) } formals(plot.twinSIR)$which <- formals(intensityplot.twinSIR)$which ###################################################################### # Extract the "residual process" (cf. Ogata, 1988), i.e. the # fitted cumulative intensity at the event times. # -> "generalized residuals similar to those discussed in Cox and Snell (1968)" ###################################################################### residuals.twinSIR <- function(object, ...) { #Extract event and stop-times eventTimes <- attr(object$model$survs,"eventTimes") sortedStop <- sort(unique(object$model$survs[,"stop"])) eventTimesIdx <- match(eventTimes, sortedStop) #Dimensions and zero vector (in case we need it) nTimes <- nrow(object$model$X) zerovec <- numeric(nTimes) # Extract the fitted model params px <- ncol(object$model$X) pz <- ncol(object$model$Z) theta <- coef(object) alpha <- theta[seq_len(px)] beta <- theta[px+seq_len(pz)] # Initialize e, h and thus lambda if (px > 0) { e <- as.vector(object$model$X %*% as.matrix(alpha)) } else { e <- zerovec } if (pz > 0) { h <- as.vector(exp(object$model$Z %*% as.matrix(beta))) } else { h <- zerovec } lambda <- (e + h) #Determine bloks BLOCK <- as.numeric(factor(object$model$survs$start)) # lambda_i integrals, i.e. integral of \lambda_i until t for each individual dt <- object$model$survs[,"stop"] - object$model$survs[,"start"] #Easier - no individual summations as they are all summed anyhow afterwards intlambda <- tapply(object$model$weights * lambda* dt, BLOCK, sum) #Compute cumulative intensities (Ogata (1988): "residual process") tau <- cumsum(intlambda)[eventTimesIdx] tau } surveillance/R/twinstim_tiaf_exponential.R0000644000175100001440000000524212272751567020620 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Exponential temporal interaction function g(t) = exp(-alpha*t) ### ### Copyright (C) 2009-2014 Sebastian Meyer ### $Revision: 733 $ ### $Date: 2014-01-31 17:46:47 +0100 (Fre, 31 Jan 2014) $ ################################################################################ ## nTypes: determines the number of parameters of the Exponential kernel. ## In a multitype epidemic, the different types may share ## the same temporal interaction function (type-invariant), in which case ## nTypes=1. Otherwise nTypes should equal the number of event types of the ## epidemic, in which case every type has its own alpha. tiaf.exponential <- function (nTypes = 1, validpars = NULL) { nTypes <- as.integer(nTypes) stopifnot(length(nTypes) == 1L, nTypes > 0L) ## function definitions for nTypes = 1 (length(alpha) == 1) g <- function (t, alpha, types) { exp(-alpha*t) } G <- function (t, alpha, types) { if (alpha==0) t else -exp(-alpha*t)/alpha } deriv <- function (t, alpha, types) { as.matrix( -t*exp(-alpha*t) ) } Deriv <- function (t, alpha, types) { as.matrix( if (alpha==0) -t^2/2 else (t+1/alpha)*exp(-alpha*t)/alpha ) } ## adaptions for nTypes > 1 if (nTypes > 1) { ## time points vector t, length(types) = length(t) body(g) <- as.call(append(as.list(body(g)), quote(alpha <- alpha[types]), after=1)) body(G) <- quote({ alpha <- alpha[types] ifelse (alpha==0, t, -exp(-alpha*t)/alpha) }) body(deriv) <- quote({ L <- length(t) deriv <- matrix(0, L, length(alpha)) alpha <- alpha[types] deriv[cbind(1:L,types)] <- -t*exp(-alpha*t) deriv }) body(Deriv) <- quote({ L <- length(t) Deriv <- matrix(0, L, length(alpha)) alpha <- alpha[types] Deriv[cbind(1:L,types)] <- ifelse(alpha==0, -t^2/2, (t+1/alpha)*exp(-alpha*t)/alpha) Deriv }) } ## set function environments to the global environment environment(g) <- environment(G) <- environment(deriv) <- environment(Deriv) <- .GlobalEnv ## return the kernel specification list(g=g, G=G, deriv=deriv, Deriv=Deriv, npars=nTypes, validpars=validpars) } surveillance/R/hhh4_simulate_plot.R0000644000175100001440000002723312610170775017121 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Plots for an array "hhh4sims" of simulated counts from an "hhh4" model, ### or a list thereof as produced by different "hhh4" models (same period!) ### ### Copyright (C) 2013-2015 Sebastian Meyer ### $Revision: 1493 $ ### $Date: 2015-10-16 14:47:57 +0200 (Fre, 16. Okt 2015) $ ################################################################################ plot.hhh4sims <- function (x, ...) { ## use the object name of x x <- eval(substitute(as.hhh4simslist(x)), envir = parent.frame()) plot.hhh4simslist(x, ...) } ## class for a list of "hhh4sims" arrays from different models ## (over the same period with same initial values) hhh4simslist <- function (x, initial, stsObserved) { ## drop attributes from every single hhh4sims object for (i in seq_along(x)) attr(x[[i]], "class") <- attr(x[[i]], "initial") <- attr(x[[i]], "stsObserved") <- NULL ## set as list attributes attr(x, "initial") <- initial attr(x, "stsObserved") <- stsObserved class(x) <- "hhh4simslist" x } ## converter functions as.hhh4simslist <- function (x, ...) UseMethod("as.hhh4simslist") as.hhh4simslist.hhh4sims <- function (x, ...) { ## we do not use x here, but construct a list() from the sys.call() ## such that as.hhh4simslist(name1 = model1, name2 = model2) works cl <- sys.call() cl[[1L]] <- as.name("list") xx <- eval(cl, envir = parent.frame()) objnames <- as.character(cl)[-1L] if (is.null(names(xx))) { names(xx) <- objnames } else { names(xx)[names(xx) == ""] <- objnames[names(xx) == ""] } as.hhh4simslist.list(xx) } as.hhh4simslist.list <- function (x, ...) { ## verify class lapply(X = x, FUN = function (Xi) if (!inherits(Xi, "hhh4sims")) stop(sQuote("x"), " is not a list of ", dQuote("hhh4sims"))) hhh4simslist(x, initial = attr(x[[1L]], "initial"), stsObserved = attr(x[[1L]], "stsObserved")) } as.hhh4simslist.hhh4simslist <- function (x, ...) x ## 'x[i]': select models (elements of the list) ## 'x[i,j,]': subset simulations while keeping attributes in sync "[.hhh4simslist" <- function (x, i, j, ..., drop = FALSE) { ## case 1: select models if (nargs() == 2L) { ## select elements of the list xx <- NextMethod("[") ## restore class attributes xx <- hhh4simslist(xx, initial = attr(x, "initial"), stsObserved = attr(x, "stsObserved")) return(xx) } ## case 2: subset simulations cl <- sys.call() cl[[1L]] <- as.name("[") cl[[2L]] <- quote(x) cl$drop <- drop subseti <- as.function(c(alist(x=), cl), envir = parent.frame()) x[] <- lapply(X = x, subseti) if (!missing(i)) attr(x, "stsObserved") <- attr(x, "stsObserved")[i,] if (!missing(j)) { attr(x, "stsObserved") <- suppressMessages(attr(x, "stsObserved")[, j]) is.na(attr(x, "stsObserved")@neighbourhood) <- TRUE attr(x, "initial") <- attr(x, "initial")[, j, drop = FALSE] } x } ## select a specific "hhh4sims" from the list of simulations ## (the inverse of as.hhh4simslist.hhh4sims(xx)) "[[.hhh4simslist" <- function (x, i) { xx <- NextMethod("[[") a <- attributes(xx) attributes(xx) <- c(a[c("dim", "dimnames")], attributes(x)[c("initial", "stsObserved")], list(class = "hhh4sims"), a[c("call", "seed")]) xx } ## aggregate predictions over time and/or (groups of) units aggregate.hhh4simslist <- function (x, units = TRUE, time = FALSE, ..., drop = FALSE) { if (drop || time) { # unclass(x) to use default "[["-method in lapply lapply(X = unclass(x), FUN = aggregate.hhh4sims, units = units, time = time,..., drop = TRUE) } else { as.hhh4simslist.list( lapply(X = x, FUN = aggregate.hhh4sims, units = units, time = time, ..., drop = FALSE) ) } } #################### ### plot methods ### #################### check_groups <- function (groups, units) { if (isTRUE(groups)) { factor(units, levels = units) } else { stopifnot(length(groups) == length(units)) as.factor(groups) } } plot.hhh4simslist <- function (x, type = c("size", "time"), ..., groups = NULL, par.settings = list()) { FUN <- paste("plotHHH4sims", match.arg(type), sep = "_") if (is.null(groups)) return(do.call(FUN, list(quote(x), ...))) ## stratified plots by groups of units groups <- check_groups(groups, colnames(attr(x, "stsObserved"))) if (is.list(par.settings)) { par.defaults <- list(mfrow = sort(n2mfrow(nlevels(groups))), mar = c(4,4,2,0.5)+.1, las = 1) par.settings <- modifyList(par.defaults, par.settings) opar <- do.call("par", par.settings) on.exit(par(opar)) } invisible(sapply( X = levels(groups), FUN = function (group) { x_group <- x[, which(group == groups) , ] do.call(FUN, list(quote(x_group), ..., main = group)) }, simplify = FALSE, USE.NAMES = TRUE)) } ### simulated final size distribution as boxplots aggregated over all units plotHHH4sims_size <- function (x, horizontal = TRUE, trafo = NULL, observed = TRUE, ...) { x <- as.hhh4simslist(x) if (horizontal) x <- rev(x) if (is.null(trafo)) #trafo <- scales::identity_trans() trafo <- list(name = "identity", transform = identity) if (isTRUE(observed)) observed <- list() nsims <- sapply(X = x, FUN = colSums, dims = 2, # sum over 1:2 (time x unit) simplify = TRUE, USE.NAMES = TRUE) nsimstrafo <- trafo$transform(nsims) ## default boxplot arguments fslab <- "size" if (trafo$name != "identity") fslab <- paste0(fslab, " (", trafo$name, "-scale)") defaultArgs <- list(ylab=fslab, yaxt="n", las=1, cex.axis=1, border=1) if (horizontal) names(defaultArgs) <- sub("^y", "x", names(defaultArgs)) ## defaultArgs$mai <- par("mai") ## defaultArgs$mai[2] <- max(strwidth(boxplot.args$names, units="inches", ## cex=boxplot.args$cex.axis)) ## if (trafo$name != "identity") { ## ## ?bxp: 'yaxs' and 'ylim' are used 'along the boxplot' ## defaultArgs <- c(defaultArgs, ## list(ylim=c(0,max(nsimstrafo)*1.05), yaxs="i")) ## } ## generate boxplots boxplot.args <- modifyList(defaultArgs, list(...)) boxplot.args$horizontal <- horizontal do.call("boxplot", c(list(nsimstrafo), boxplot.args)) ## add means if (horizontal) { points(x=colMeans(nsimstrafo), y=1:ncol(nsimstrafo), pch=8, col=boxplot.args$border) } else points(colMeans(nsimstrafo), pch=8, col=boxplot.args$border) ## add axis aty <- pretty(nsims, n=par("lab")[2-horizontal]) ##aty <- checkat(list(n=par("lab")[2], trafo=trafo), nsims) # linear on sqrt-scale axis(2-horizontal, at=trafo$transform(aty), labels=aty, las=boxplot.args$las) ## add line showing observed size if (is.list(observed)) { nObs <- sum(observed(attr(x, "stsObserved"))) observed <- modifyList( list(col = 1, lty = 2, lwd = 2, labels = nObs, font = 2, las = boxplot.args$las, mgp = if (horizontal) c(3, 0.4, 0)), observed) observed_line <- c( setNames(list(trafo$transform(nObs)), if (horizontal) "v" else "h"), observed[c("col", "lty", "lwd")]) do.call("abline", observed_line) if (!is.null(observed[["labels"]])) do.call("axis", c( list(side = 2-horizontal, at = trafo$transform(nObs)), observed)) } ## numeric summary mysummary <- function(x) c(mean=mean(x), quantile(x, probs=c(0.025, 0.5, 0.975))) nsum <- t(apply(nsims, 2, mysummary)) invisible(nsum) } ### Plot mean time series of the simulated counts plotHHH4sims_time <- function ( x, average = mean, individual = length(x) == 1, conf.level = if (individual) 0.95 else NULL, #score = "rps", matplot.args = list(), initial.args = list(), legend = length(x) > 1, xlim = NULL, ylim = NULL, add = FALSE, ...) { x <- as.hhh4simslist(x) nModels <- length(x) ytInit <- rowSums(attr(x, "initial")) stsObserved <- attr(x, "stsObserved") ytObs <- rowSums(observed(stsObserved)) ytSim <- aggregate.hhh4simslist(x, units = TRUE, time = FALSE, drop = TRUE) average <- match.fun(average) ytMeans <- vapply( X = ytSim, FUN = function (x) apply(x, 1, average), FUN.VALUE = numeric(length(ytObs)), USE.NAMES = TRUE) ## axis range if (is.null(xlim) && is.list(initial.args)) xlim <- c(1 - length(ytInit) - 0.5, length(ytObs) + 0.5) if (is.null(ylim)) ylim <- c(0, max(ytObs, if (individual) unlist(ytSim, recursive = FALSE, use.names = FALSE) else ytMeans)) ## graphical parameters stopifnot(is.list(matplot.args)) matplot.args <- modifyList( list(y = ytMeans, type = "b", lty = 1, lwd = 3, pch = 20, col = rainbow(nModels)), matplot.args) col <- rep_len(matplot.args$col, nModels) ## observed time series data during simulation period if (!add) plot(stsObserved, type = observed ~ time, xlim = xlim, ylim = ylim, ...) ## add initial counts if (is.list(initial.args)) { initial.args <- modifyList( list(x = seq(to = 0, by = 1, length.out = length(ytInit)), y = ytInit, type = "h", lwd = 5), initial.args) do.call("lines", initial.args) } ## add counts of individual simulation runs if (individual) { for (i in seq_len(nModels)) matlines(ytSim[[i]], lty=1, col=if (requireNamespace("scales")) scales::alpha(col[i], alpha=0.1) else col[i]) col <- col2rgb(col) col <- apply(col, 2, function (x) if (all(x == 0)) "grey" else do.call("rgb", as.list(x / 255 * 0.5))) } ## add means (or medians) matplot.args[["col"]] <- col do.call("matlines", matplot.args) ## add CIs if (isScalar(conf.level)) { alpha2 <- (1-conf.level)/2 ytQuant <- lapply(ytSim, function (sims) t(apply(sims, 1, quantile, probs=c(alpha2, 1-alpha2)))) matlines(sapply(ytQuant, "[", TRUE, 1L), col=col, lwd=matplot.args$lwd, lty=2) matlines(sapply(ytQuant, "[", TRUE, 2L), col=col, lwd=matplot.args$lwd, lty=2) } ## add scores ## if (length(score)==1) { ## scorestime <- simplify2array( ## simscores(x, by="time", scores=score, plot=FALSE), ## higher=FALSE) ## matlines(scales::rescale(scorestime, to=ylim), ## lty=2, lwd=1, col=col) ## } ## add legend if (!identical(FALSE, legend)) { legendArgs <- list(x="topright", legend=names(x), bty="n", col=col, lwd=matplot.args$lwd, lty=matplot.args$lty) if (is.list(legend)) legendArgs <- modifyList(legendArgs, legend) do.call("legend", legendArgs) } ## Done ret <- cbind(observed = ytObs, ytMeans) ## if (length(score) == 1) ## attr(ret, score) <- scorestime invisible(ret) } surveillance/R/twinstim_intensity.R0000644000175100001440000003112612504225640017277 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Plot the temporal or spatial evolution of the estimated intensity ### ### Copyright (C) 2012-2015 Sebastian Meyer ### $Revision: 1281 $ ### $Date: 2015-03-24 10:17:20 +0100 (Die, 24. Mär 2015) $ ################################################################################ intensity.twinstim <- function (x, aggregate = c("time", "space"), types = 1:nrow(x$qmatrix), tiles, tiles.idcol = NULL) { modelenv <- environment(x) ## check arguments if (is.null(modelenv)) stop("'x' is missing the model environment\n", " -- re-fit or update() with 'model=TRUE'") aggregate <- match.arg(aggregate) stopifnot(is.vector(types, mode="numeric"), types %in% seq_len(modelenv$nTypes), !anyDuplicated(types)) ## remove (big) x object from current evaluation environment qmatrix <- x$qmatrix # not part of modelenv force(types) # evaluate types before rm(x) rm(x) # don't need this anymore ##thisenv <- environment() ##parent.env(thisenv) <- modelenv # objects of modelenv become visible ## Instead of the above, we do cheap and nasty model unpacking! ## safer than the parent.env<- hack (R manual: "extremely dangerous"), and ## cleaner than running code inside with(modelenv,...) since assignments ## then would take place in modelenv, which would produce garbage t0 <- modelenv$t0 T <- modelenv$T histIntervals <- modelenv$histIntervals eventTimes <- modelenv$eventTimes eventCoords <- modelenv$eventCoords eventTypes <- modelenv$eventTypes removalTimes <- modelenv$removalTimes gridTiles <- modelenv$gridTiles gridBlocks <- modelenv$gridBlocks ds <- modelenv$ds tiaf <- modelenv$tiaf tiafpars <- modelenv$tiafpars eps.s <- modelenv$eps.s siaf <- modelenv$siaf siafpars <- modelenv$siafpars ## endemic component on the spatial or temporal grid hInt <- if (modelenv$hash) { eta <- drop(modelenv$mmhGrid %*% modelenv$beta) if (!is.null(modelenv$offsetGrid)) eta <- modelenv$offsetGrid + eta expeta <- exp(unname(eta)) .beta0 <- rep_len(if (modelenv$nbeta0==0L) 0 else modelenv$beta0, modelenv$nTypes) fact <- sum(exp(.beta0[types])) if (aggregate == "time") { # int over W and types by BLOCK fact * c(tapply(expeta * modelenv$ds, gridBlocks, sum, simplify = TRUE)) } else { # int over T and types by tile fact * c(tapply(expeta * modelenv$dt, gridTiles, sum, simplify = TRUE)) } } else { ngrid <- if (aggregate == "time") { gridBlocks[length(gridBlocks)] } else nlevels(gridTiles) rep.int(0, ngrid) } ## endemic component as a function of time or location hIntFUN <- if (modelenv$hash) { if (aggregate == "time") { function (tp) { stopifnot(isScalar(tp)) if (tp == t0) { hInt[1L] } else { starts <- histIntervals$start idx <- match(TRUE, c(starts,T) >= tp) - 1L if (identical(idx, 0L)) { # tp <= t0 NA_real_ } else { # idx is NA if tp > T block <- histIntervals$BLOCK[idx] hInt[as.character(block)] } } } } else { if (!is.null(tiles.idcol)) { stopifnot(is(tiles, "SpatialPolygonsDataFrame")) row.names(tiles) <- tiles@data[[tiles.idcol]] } tileLevels <- levels(gridTiles) tiles <- check_tiles(tiles, tileLevels, areas.stgrid = ds[seq_along(tileLevels)], keep.data = FALSE) # drop data for over-method tilesIDs <- row.names(tiles) # = sapply(tiles@polygons, slot, "ID") function (xy) { # works with a whole coordinate matrix points <- SpatialPoints(xy, proj4string=tiles@proj4string) polygonidxOfPoints <- over(points, tiles) tilesOfPoints <- tilesIDs[polygonidxOfPoints] hInt[tilesOfPoints] # index by name } } } else function (...) 0 ## epidemic component eInt <- if (modelenv$hase) { qSum_types <- rowSums(qmatrix[,types,drop=FALSE])[eventTypes] fact <- qSum_types * modelenv$gammapred if (aggregate == "time") { # as a function of time (int over W & types) factS <- fact * modelenv$siafInt function (tp) { stopifnot(isScalar(tp)) tdiff <- tp - eventTimes infectivity <- qSum_types > 0 & (tdiff > 0) & (removalTimes >= tp) if (any(infectivity)) { gsources <- tiaf$g(tdiff[infectivity], tiafpars, eventTypes[infectivity]) intWj <- factS[infectivity] * gsources sum(intWj) } else 0 } } else { # as a function of location (int over time and types) factT <- fact * modelenv$tiafInt nEvents <- nrow(eventCoords) function (xy) { stopifnot(is.vector(xy, mode="numeric"), length(xy) == 2L) point <- matrix(xy, nrow=nEvents, ncol=2L, byrow=TRUE) sdiff <- point - eventCoords proximity <- qSum_types > 0 & .rowSums(sdiff^2, nEvents, 2L) <= eps.s^2 if (any(proximity)) { fsources <- siaf$f(sdiff[proximity,,drop=FALSE], siafpars, eventTypes[proximity]) intTj <- factT[proximity] * fsources sum(intTj) } else 0 } } } else function (...) 0 ## return component functions list(hGrid = hInt, hFUN = hIntFUN, eFUN = eInt, aggregate = aggregate, types = types) } intensityplot.twinstim <- function (x, which = c("epidemic proportion", "endemic proportion", "total intensity"), aggregate, types, tiles, tiles.idcol, # arguments of intensity.twinstim; # defaults are set below plot = TRUE, add = FALSE, tgrid = 101, rug.opts = list(), sgrid = 128, polygons.args = list(), points.args = list(), cex.fun = sqrt, ...) { which <- match.arg(which) ## set up desired intensities cl <- match.call() cl <- cl[c(1L, match(names(formals(intensity.twinstim)), names(cl), 0L))] cl[[1]] <- as.name("intensity.twinstim") components <- eval(cl, envir = parent.frame()) aggregate <- components$aggregate types <- components$types ## define function to plot FUN <- function (tmp) {} names(formals(FUN)) <- if (aggregate == "time") "times" else "coords" body1 <- if (aggregate == "time") expression( hGrid <- sapply(times, components$hFUN, USE.NAMES=FALSE), eGrid <- sapply(times, components$eFUN, USE.NAMES=FALSE) ) else expression( hGrid <- unname(components$hFUN(coords)), # takes whole coord matrix eGrid <- apply(coords, 1, components$eFUN) ) body2 <- switch(which, "epidemic proportion" = expression(eGrid / (hGrid + eGrid)), "endemic proportion" = expression(hGrid / (hGrid + eGrid)), "total intensity" = expression(hGrid + eGrid)) body(FUN) <- as.call(c(as.name("{"), c(body1, body2))) if (!plot) return(FUN) ## plot the FUN modelenv <- environment(x) dotargs <- list(...) nms <- names(dotargs) if (aggregate == "time") { ## set up grid of x-values (time points where 'which' will be evaluated) tgrid <- if (isScalar(tgrid)) { seq(modelenv$t0, modelenv$T, length.out=tgrid) } else { stopifnot(is.vector(tgrid, mode="numeric")) sort(tgrid) } ## calculate 'which' on tgrid yvals <- FUN(tgrid) ## plot it if(! "xlab" %in% nms) dotargs$xlab <- "time" if(! "ylab" %in% nms) dotargs$ylab <- which if(! "type" %in% nms) dotargs$type <- "l" if(! "ylim" %in% nms) dotargs$ylim <- { if (which == "total intensity") c(0,max(yvals)) else c(0,1) } do.call(if (add) "lines" else "plot", args=c(alist(x=tgrid, y=yvals), dotargs)) if (is.list(rug.opts)) { if (is.null(rug.opts$ticksize)) rug.opts$ticksize <- 0.02 if (is.null(rug.opts$quiet)) rug.opts$quiet <- TRUE eventTimes.types <- modelenv$eventTimes[modelenv$eventTypes %in% types] do.call("rug", args = c(alist(x=eventTimes.types), rug.opts)) } invisible(FUN) } else { tiles <- as(tiles, "SpatialPolygons") # remove potential data for over() ## set up grid of coordinates where 'which' will be evaluated if (isScalar(sgrid)) { sgrid <- maptools::Sobj_SpatialGrid(tiles, n = sgrid)$SG ## ensure that sgrid has exactly the same proj4string as tiles ## since CRS(proj4string(tiles)) might have modified the string sgrid@proj4string <- tiles@proj4string } sgrid <- as(sgrid, "SpatialPixels") ## only select grid points inside W (tiles) sgridTileIdx <- over(sgrid, tiles) sgrid <- sgrid[!is.na(sgridTileIdx),] ## calculate 'which' on sgrid yvals <- FUN(coordinates(sgrid)) sgridy <- SpatialPixelsDataFrame(sgrid, data=data.frame(yvals=yvals), proj4string=tiles@proj4string) ## define sp.layout lobjs <- list() if (is.list(polygons.args)) { nms.polygons <- names(polygons.args) if(! "col" %in% nms.polygons) polygons.args$col <- "darkgrey" lobjs <- c(lobjs, list(c(list("sp.polygons", tiles, first=FALSE), polygons.args))) } if (is.list(points.args)) { eventCoords.types <- modelenv$eventCoords[modelenv$eventTypes %in% types,,drop=FALSE] ## eventCoords as Spatial object with duplicates counted and removed eventCoords.types <- SpatialPoints(eventCoords.types, proj4string = tiles@proj4string, bbox = tiles@bbox) eventCoords.types <- SpatialPointsDataFrame(eventCoords.types, data.frame(mult = multiplicity.Spatial(eventCoords.types))) eventCoords.types <- eventCoords.types[!duplicated(coordinates(eventCoords.types)),] points.args <- modifyList(list(pch=1, cex=0.5), points.args) pointcex <- cex.fun(eventCoords.types$mult) pointcex <- pointcex * points.args$cex points.args$cex <- NULL lobjs <- c(lobjs, list(c(list("sp.points", eventCoords.types, first=FALSE, cex=pointcex), points.args))) } if ("sp.layout" %in% nms) { if (!is.list(dotargs$sp.layout[[1]])) { # let sp.layout be a list of lists dotargs$sp.layout <- list(dotargs$sp.layout) } lobjs <- c(lobjs, dotargs$sp.layout) dotargs$sp.layout <- NULL } ## plotit if (add) message("'add'ing is not possible with 'aggregate=\"space\"'") if (! "xlim" %in% nms) dotargs$xlim <- bbox(tiles)[1,] if (! "ylim" %in% nms) dotargs$ylim <- bbox(tiles)[2,] if (! "scales" %in% nms) dotargs$scales <- list(draw = TRUE) do.call("spplot", args=c(alist(sgridy, zcol="yvals", sp.layout=lobjs, checkEmptyRC=FALSE), dotargs)) } } ## set default arguments for intensityplot.twinstim from intensity.twinstim formals(intensityplot.twinstim)[names(formals(intensity.twinstim))] <- formals(intensity.twinstim) surveillance/R/checkDerivatives.R0000644000175100001440000000463612523122744016606 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Simple wrapper around functionality of the numDeriv and maxLik packages ### to check the score vector and the Fisher information matrix ### CAVE: the return values of both wrappers are not unified ### ### Copyright (C) 2012, 2015 Sebastian Meyer ### $Revision: 1327 $ ### $Date: 2015-05-08 14:02:44 +0200 (Fre, 08. Mai 2015) $ ################################################################################ checkDerivatives.numDeriv <- function(ll, score, fisher, par, method="Richardson", method.args=list(), ...) { cat("Checking analytical score vector using numDeriv::grad() ...\n") nsc <- numDeriv::grad(ll, par, method = method, method.args = method.args, ...) asc <- score(par, ...) print(all.equal(asc, nsc, check.attributes=FALSE)) cat("Checking analytical Fisher information matrix using numDeriv::hessian() ...\n") if (length(par) > 50) cat("NOTE: this might take several minutes considering length(par) =", length(par), "\n") nfi <- -numDeriv::hessian(ll, par, method = "Richardson", method.args = method.args, ...) afi <- fisher(par, ...) print(all.equal(afi, nfi, check.attributes=FALSE)) invisible(list(score = list(analytic=asc, numeric=nsc), fisher = list(analytic=afi, numeric=nfi))) } checkDerivatives.maxLik <- function(ll, score, fisher, par, eps=1e-6, print=FALSE, ...) { cat("Checking analytical score and Fisher using maxLik::compareDerivatives() ...\n") res <- maxLik::compareDerivatives( f=ll, grad=score, hess=function (par, ...) -fisher(par, ...), t0=par, eps=eps, print=print, ...) cat("Comparison of score vectors:\n") print(all.equal(res$compareGrad$analytic, drop(res$compareGrad$numeric), check.attributes=FALSE)) cat("Comparison of Fisher information matrices:\n") print(all.equal(res$compareHessian$analytic, drop(res$compareHessian$numeric), check.attributes=FALSE)) invisible(res) } surveillance/R/stsNC.R0000755000175100001440000001330612601453025014346 0ustar hornikusers###################################################################### # Init function for stsNC objects. More or less call-through # to init of sts objects ###################################################################### init.stsNC <- function(.Object, epoch, start=c(2000,1), freq=52, observed, state=0*observed, map=NULL, neighbourhood=NULL, populationFrac=NULL,alarm=NULL,upperbound=NULL, control=NULL,epochAsDate=FALSE,multinomialTS=FALSE,reportingTriangle=NULL,predPMF=list(),pi=array(NA,dim=c(nrow(observed),ncol(observed),2)),truth=NULL,delayCDF=list(),SR=NULL) { #Make the base sts object .Object <- init.sts(.Object, epoch, start, freq, observed, state, map, neighbourhood, populationFrac,alarm,upperbound, control,epochAsDate,multinomialTS) #Check that CI matches dim.pi <- c(dim(observed),2) if (all(dim(pi) == dim.pi)) { .Object@pi <- pi } else { stop("Dimension of confidence interval (pi) (",paste(dim.pi,collapse=","),") is wrong.\n") } #Assign lambda slot (bootstrap replicates) if (is.null(reportingTriangle)) { .Object@reportingTriangle <- matrix(NA,nrow(observed),ncol(observed)) } else { .Object@reportingTriangle <- reportingTriangle } .Object@predPMF <- predPMF if (is.null(truth)) { .Object@truth <- init.sts(.Object, epoch, start, freq, observed, state, map, neighbourhood, populationFrac,alarm,upperbound, control,epochAsDate,multinomialTS) } else { .Object@truth <- truth } .Object@delayCDF <- delayCDF if (is.null(SR)) { .Object@SR <- array(NA,dim=c(nrow(.Object@observed),1,4)) } else { .Object@SR <- SR } return(.Object) } ###################################################################### # Coerce method ###################################################################### setAs("sts", "stsNC", function(from) { stsNC <- new("stsNC", epoch=from@epoch, freq=from@freq, start=from@start, observed=from@observed, state = from@state, alarm=from@alarm, upperbound=from@upperbound, neighbourhood=from@neighbourhood, populationFrac=from@populationFrac, map=from@map, control=from@control, epochAsDate=from@epochAsDate, multinomialTS=from@multinomialTS, reportingTriangle=NULL, predPMF=list(), pi=array(NA,dim=c(nrow(from@observed),ncol(from@observed),2)), truth=from, delayCDF=list(), SR=array(NA,dim=c(nrow(from@observed),1,4))) return(stsNC) }) ###################################################################### #Methods ###################################################################### setMethod("initialize", "stsNC", init.stsNC) ###################################################################### # Create own plotting method for the stsNC class, which starts by # using the inherited method, but with some additional plotting # put into the .hookFunSpecial function. # # Parameters: # same as the for the plot method of sts objects. ###################################################################### setMethod(f="plot", signature=signature(x="stsNC", y="missing"), function (x, type = observed ~ time | unit, ...) { ## environment of hook function will be set to evaluation ## environment of stsplot_time1() and only then be called legend.opts <- lty <- lwd <- "accommodate tools:::.check_code_usage_in_package()" #Hook function specifically for nowcasting objects. nowcastPlotHook <- function() { #Define some colors for the plotting as well as some plot symbols color <- surveillance.options("colors") pchList <- c(nowSymbol=10) #Prolong line of last observation (this should go into the plot function idx <- nrow(x) - which.max(!is.na(rev(upperbound(x)))) + 1 #Continue line from plot - use same style as stsplot_time1 lines( idx+c(-0.5,0.5), rep(upperbound(x)[idx,],2),col=col[3],lwd=lwd[3],lty=lty[3]) #Add the prediction intervals as bars (where not NA). Conf level #is found in x@control$alpha idxt <- which(apply(x@pi[1:nrow(x),1,],1,function(x) all(!is.na(x)))) for (i in idxt) { lines( i+c(-0.3,0.3), rep(x@pi[i,,1],2),lty=1,col=color["piBars"]) lines( i+c(-0.3,0.3), rep(x@pi[i,,2],2),lty=1,col=color["piBars"]) lines( rep(i,each=2), x@pi[i,,],lty=2,col=color["piBars"]) } #Extract now date and date range of the plotting startDate <- epoch(x)[1] #Add "now" symbol on x-axis. Plotting now takes possible temporal aggregation into account. #points(x@control$now-startDate+1,0,pch=pchList["nowSymbol"],col=color["nowSymbol"],cex=1.5) points(x@control$timeDelay(startDate,x@control$now)+1,0,pch=pchList["nowSymbol"],col=color["nowSymbol"],cex=1.5) #Add this to the legend if (!is.null(legend.opts)) { legend(x="topright",c("Now"),pch=pchList["nowSymbol"],col=color["nowSymbol"],bg="white") } return(invisible()) } callNextMethod(x=x, type=type, ..., .hookFuncInheritance=nowcastPlotHook) }) surveillance/R/permutationTest.R0000644000175100001440000000351612532032517016524 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Permutation test to compare the means of paired samples ### ### Copyright (C) 2011-2012 Michaela Paul, 2013-2015 Sebastian Meyer ### $Revision: 1347 $ ### $Date: 2015-05-29 11:45:51 +0200 (Fre, 29. Mai 2015) $ ################################################################################ permutationTest <- function(score1, score2, nPermutation = 9999, plot = FALSE, verbose = FALSE) { stopifnot((nTime <- length(score1)) == length(score2), !is.na(score1), !is.na(score2)) meanScore1 <- mean(score1) meanScore2 <- mean(score2) diffObserved <- meanScore1 - meanScore2 diffMean <- replicate(nPermutation, { sel <- rbinom(nTime, size=1, prob=0.5) g1 <- (sum(score1[sel==0]) + sum(score2[sel==1]))/nTime g2 <- (sum(score1[sel==1]) + sum(score2[sel==0]))/nTime g1 - g2 }) if (isTRUE(plot)) plot <- list() if (is.list(plot)) { do.call("permtestplot", args = modifyList( list(permstats = diffMean, xmarks = c("observed" = diffObserved), xlab = "Difference between means", ylab = "Density", main = ""), plot)) } pVal <- (1+sum(abs(diffMean)>=abs(diffObserved))) / (nPermutation+1) pTtest <- t.test(score1, score2, paired=TRUE)$p.value if (verbose) cat("mean difference =", diffObserved, "\tp(permutation) =", pVal, "\tp(paired t-test) =", pTtest, "\n") list(diffObs=diffObserved, pVal.permut=pVal, pVal.t=pTtest) } surveillance/R/stcd.R0000644000175100001440000000414711731650466014264 0ustar hornikusers###################################################################### # Shiryaev-Roberts based spatio-temporal cluster detection based # on the work in Assuncao & Correa (2009). The implementation # is based on C++ code was originally written by Marcos Oliveira Prates, UFMG, # Brazil and provided by Thais Correa, UFMG, Brazil during her research # stay in Munich. This stay was financially supported by the Munich # Center of Health Sciences. # # # Parameters: # x - vector containing spatial x coordinate of the events # y - vector containing spatial y coordinate of the events # t - vector containing the time points of the events # radius - is the radius of the cluster # epsilon - is the relative change of event-intensity within the cluster # to detect # areaA - area of the observation region A (single number) # areaAcapBk - area of A \ B(s_k,\rho) for all k=1,\ldots,n (vector) # vector of areas A\B(s_k,\rho) for k=1,\ldots,n # threshold - threshold limit for the alarm and should be equal # to the desired ARL # cusum -- boolean if TRUE then CUSUM otherwise Shiryaev-Roberts ###################################################################### stcd <- function(x, y,t,radius,epsilon,areaA, areaAcapBk, threshold,cusum=FALSE) { #check that the vectors x,y,t are of the same length. n <- length(x) if ((length(y) != n) | (length(t) != n)) { stop("Vectors x,y,t not of same size.") } if (!all(diff(order(t)) == 1)) { stop("The vector of time points needs to be ascending in time. No ties allowed.") } res <- .C("SRspacetime", x=as.double(x), y=as.double(y), t=as.double(t), n=as.integer(n), radius=as.double(radius), epsilon=as.double(epsilon), areaA=as.double(areaA),areaAcapBk=as.double(areaAcapBk),cusum=as.integer(cusum), threshold=as.double(threshold),R=as.double(numeric(n)),idxFA=as.integer(-1),idxCC=as.integer(-1),PACKAGE="surveillance") #Indexing differences between C and R res$idxFA <- res$idxFA+1 res$idxCC <- res$idxCC+1 #Missing: compute which indices are part of the cluster. #--> Thais R-code return(list(R=res$R,idxFA=res$idxFA,idxCC=res$idxCC)) } surveillance/R/sts.R0000644000175100001440000005077612553377263014155 0ustar hornikusers###################################################################### # Everything belonging to the class sts ###################################################################### ###################################################################### # Initialize function for the surveillance time series objects # -- see documentation in RD files # # Dimnames are taken from the observed matrix. ###################################################################### #Ensure that all matrix slots have the same dimnames fix.dimnames <- function(x) { #Make sure all arrays have the same dimnames dimnames(x@alarm) <- dimnames(x@state) <- dimnames(x@upperbound) <- dimnames(x@populationFrac) <- dimnames(x@observed) #Special for neighbourhood dimnames(x@neighbourhood) <- list(colnames(x@observed),colnames(x@observed)) return(x) } #constructor function init.sts <- function(.Object, epoch=seq_len(nrow(observed)), start=c(2000,1), frequency=52, observed, state=0*observed, map=NULL, neighbourhood=NULL, populationFrac=NULL,alarm=NULL,upperbound=NULL, control=NULL,epochAsDate=FALSE,multinomialTS=FALSE) { #If used in constructor if(nargs() > 1) { #Name handling namesObs <-colnames(observed) namesState <- colnames(observed) #Ensure observed, state are on matrix form observed <- as.matrix(observed) state <- as.matrix(state) #check number of columns of observed and state nAreas <- ncol(observed) nObs <- nrow(observed) if(ncol(observed) != ncol(state)){ #if there is only one state-vector for more than one area, repeat it if(ncol(state)==1) { state <- ts(matrix(rep(state,nAreas),ncol=nAreas,byrow=FALSE),frequency=frequency(observed)) ## FIXME @ Michael: 1. why convert 'state' to a "ts" object in this special case but not in general ## 2. frequency(observed) is 1 unless observed has the "tsp" attribute } else { stop('wrong dimensions of observed and state') } } # check length of epoch stopifnot(length(epoch) == nrow(observed)) #check neighbourhood matrix if(!is.null(neighbourhood) && any(dim(neighbourhood) != nAreas)) { stop('wrong dimensions of neighbourhood matrix') } #popFrac if (nAreas==1 && (!multinomialTS)) { populationFrac <- matrix(1,nrow=nObs, ncol=1) } else if (is.null(populationFrac)) { populationFrac <- matrix(1/nAreas,nrow=nObs,ncol=nAreas) } else if (is.vector(populationFrac, mode="numeric") && length(populationFrac) == nAreas) { populationFrac <- matrix(populationFrac, nObs, nAreas, byrow=TRUE) } #labels for observed and state if(is.null(namesObs)){ namesObs <- paste("observed", 1:nAreas, sep="") namesState <- paste("state", 1:nAreas, sep="") } dimnames(observed) <- list(NULL,namesObs) dimnames(state) <- list(NULL,namesState) if (is.null(neighbourhood)) neighbourhood <- matrix(NA,nrow=nAreas,ncol=nAreas) if (is.null(alarm)) alarm <- matrix(NA,nrow=nObs,ncol=nAreas) if (is.null(upperbound)) upperbound <- matrix(NA,nrow=nObs,ncol=nAreas) ##Assign everything else .Object@epoch <- epoch .Object@epochAsDate <- epochAsDate .Object@multinomialTS <- multinomialTS if (length(start) == 2) { .Object@start <- start } else { stop("start must be a vector of length two denoting (year, epoch/week/month/idx)") } .Object@freq <- frequency .Object@state <- state .Object@observed <- observed if (length(map) > 0L) { # i.e., not the empty prototype nor NULL .Object@map <- map # checkAtAssignment() verifies the class of map ## if a map is provided, it must cover all colnames(observed) if (!all(colnames(observed) %in% row.names(map))) { stop("map is incomplete; check colnames(observed) %in% row.names(map)") } } .Object@neighbourhood <- neighbourhood .Object@populationFrac <- populationFrac .Object@alarm <- alarm .Object@upperbound <- upperbound if (!is.null(control)) .Object@control <- control #Make sure all arrays have the same dimnames .Object <- fix.dimnames(.Object) } return(.Object) } ########################################################################### # Initialization -- two modes possible: full or just disProg, freq and map ########################################################################### #Full setMethod("initialize", "sts", init.sts) #Partial -- use a disProg object as start and convert it. disProg2sts <- function(disProgObj, map=NULL) { #Ensure that epoch slot is not zero if (is.null(disProgObj[["epoch",exact=TRUE]])) { myweek <- 1:nrow(as.matrix(disProgObj$observed)) } else { myweek <- disProgObj$week } sts <- new("sts", epoch=myweek, start=disProgObj$start, freq=disProgObj$freq, observed=disProgObj$observed, state = disProgObj$state, map=map, neighbourhood=disProgObj$neighbourhood, populationFrac=disProgObj$populationFrac,alarm=disProgObj$alarm,upperbound=disProgObj$upperbound) return(sts) } #The reverse action sts2disProg <- function(sts) { disProgObj <- create.disProg(week=sts@epoch, start=sts@start, freq=sts@freq, observed=sts@observed, state=sts@state, neighbourhood=sts@neighbourhood, populationFrac=sts@populationFrac, epochAsDate=sts@epochAsDate) #For survRes: alarm=sts@alarm, upperbound=sts@upperbound) return(disProgObj) } ########################################################################### #Method to aggregate over all units, either the time series is aggregated #so a new sampling frequency of nfreq units per time slot is obtained. #The other alternative is to aggregate all units. # # Note: The function is not 100% consistent with what the generic # aggregate does. # # Warning: In case the aggregation is by unit the upperbound slot is set # to NA. Furthermore the MAP object is left as.is, but # the object cannot be plotted anymore. # # Params: # by - a string being either "time" or "unit" # nfreq - new sampling frequency if by=="time". If "all" then all # time instances are summed. ########################################################################### setMethod("aggregate", signature(x="sts"), function(x,by="time",nfreq="all",...) { #Action of aggregation for populationFrac depends on the type binaryTS <- sum( x@populationFrac > 1 ) > 1 #Aggregate time if (by == "time") { if (nfreq == "all") { howmany <- dim(x@observed)[1] } else if (nfreq == x@freq) { # nothing to do return(x) } else { # nfreq != x@freq howmany <- x@freq / nfreq if (howmany - ceiling(howmany) != 0) stop("nfreq has to be a multiple of x@freq.") } n <- dim(x@observed)[1] m <- ceiling(n/howmany) new <- rep(1:m,each=howmany)[1:n] x@freq <- ifelse(nfreq == "all", howmany, nfreq) x@epoch <- 1:m x@observed <- as.matrix(aggregate(x@observed,by=list(new),sum)[,-1]) x@state <- as.matrix(aggregate(x@state,by=list(new),sum)[,-1])>0 x@alarm <- as.matrix(aggregate(x@alarm,by=list(new),sum)[,-1]) x@upperbound <- as.matrix(aggregate(x@upperbound,by=list(new),sum)[,-1]) x@populationFrac <- as.matrix(aggregate(x@populationFrac,by=list(new),sum)[,-1]) #the population fractions need to be recomputed if not a binary ts if (!binaryTS) { sums <- matrix(rep(apply(x@populationFrac,1,sum),times=ncol(x)),ncol=ncol(x)) x@populationFrac <-x@populationFrac/sums } } if (by == "unit") { #Aggregate units x@observed <- as.matrix(apply(x@observed, MARGIN=1, sum)) x@state <- as.matrix(apply(x@state, MARGIN=1, sum))>0 x@alarm <- as.matrix(apply(x@alarm, MARGIN=1, sum))>0 #There is no clever way to aggregate the upperbounds x@upperbound <- matrix(NA,ncol=ncol(x@alarm),nrow=nrow(x@alarm)) x@populationFrac <- as.matrix(apply(x@populationFrac, MARGIN=1, sum))#>0 x@neighbourhood <- matrix(NA, 1, 1) # consistent with default for new("sts") } #validObject(x) #just a check return(x) }) ##################################################################### # Miscellaneous access methods #################################################################### setMethod("dim", "sts", function (x) dim(x@observed)) setMethod("dimnames", "sts", function (x) dimnames(x@observed)) #Extract which observation within year we have setMethod("epochInYear", "sts", function(x,...) { #Strptime format strings available as: #http://www.opengroup.org/onlinepubs/009695399/functions/strptime.html if (x@epochAsDate) { epochStr <- switch( as.character(x@freq), "12" = "%m","52" = "%V","365" = "%j") return(as.numeric(formatDate(epoch(x),epochStr))) } else { return( (x@epoch-1 + x@start[2]-1) %% x@freq + 1) } }) #Extract the corresponding year for each observation using setMethod("year", "sts", function(x,...) { if (x@epochAsDate) { return(as.numeric(formatDate(epoch(x),"%G"))) } else { ((x@epoch-1 + x@start[2]-1) + (x@freq*x@start[1])) %/% x@freq } }) ##################################################################### #[-method for accessing the observed, alarm, etc. objects ##################################################################### setMethod("[", "sts", function(x, i, j, ..., drop) { #default value for i and j if(missing(i)) {i <- min(1,nrow(x@observed)):nrow(x@observed)} if(missing(j)) {j <- min(1,ncol(x@observed)):ncol(x@observed)} x@epoch <- x@epoch[i] x@observed <- x@observed[i,j,drop=FALSE] x@state <- x@state[i,j,drop=FALSE] x@alarm <- x@alarm[i,j,drop=FALSE] x@populationFrac <- x@populationFrac[i,j,drop=FALSE] #If not binary TS the populationFrac is normed binaryTS <- sum( x@populationFrac > 1 ) > 1 # FIXME @ Michael: x@multinomialTS if (!binaryTS) { x@populationFrac <- x@populationFrac / apply(x@populationFrac,MARGIN=1,sum) } x@upperbound <- x@upperbound[i,j,drop=FALSE] #Neighbourhood matrix if (ncol(x@observed) != ncol(x@neighbourhood) && # selected units !all(x@neighbourhood %in% c(NA,0,1))) { # no adjacency matrix message("Note: selection of units could invalidate the 'neighbourhood'") ## e.g., if 'neighbourhood' specifies neighbourhood orders } x@neighbourhood <- x@neighbourhood[j,j,drop=FALSE] #Fix the corresponding start entry. it can either be a vector of #logicals or a specific index. Needs to work in both cases. #Note: This code does not work if we have week 53s! if (is.logical(i)) { i.min <- which.max(i) #first TRUE entry } else { i.min <- min(i) } start <- x@start new.sampleNo <- start[2] + i.min - 1 start.year <- start[1] + (new.sampleNo - 1) %/% x@freq start.sampleNo <- (new.sampleNo - 1) %% x@freq + 1 x@start <- c(start.year,start.sampleNo) ## If !epochAsDate, we also have to update epoch since it is relative to start if (!x@epochAsDate) x@epoch <- x@epoch - i.min + 1 ## Note: We do not automatically subset the map according to j, since ## identical(row.names(map), colnames(observed)) ## is not a property of the sts-class; Unmonitored regions are allowed. #Done return(x) }) ######################################################################### ## Plot method ... the type argument specifies what type of plot to make ## ## plot as multivariate time series: type = observed ~ time | unit ## plot as map object aggregated over time: type = observed ~ 1 | unit ## new map implementation via: type = observed ~ unit ## the specific plot functions are in separate files (stsplot_*.R) ######################################################################## setMethod("plot", signature(x="sts", y="missing"), function (x, type = observed ~ time | unit, ...) { # catch new implementation of time-aggregate map plot if (isTRUE(all.equal(observed ~ unit, type))) return(stsplot_space(x, ...)) #Valid formula? valid <- lapply(as.list(type[[3]]), function(i) is.na(pmatch(i,c("1","unit","|","time","*","+")))) valid <- all(!unlist(valid)) obsOk <- (type[[2]] == "observed") alarmOk <- (type[[2]] == "alarm") if (!valid || !(obsOk | alarmOk)) stop("Not a valid plot type") #Parse the formula, i.e. extract components map <- (length(type[[3]])==3) && (type[[3]][[1]] == "|") && (type[[3]][[2]] == "1") time <- pmatch("time",type[[3]]) > 0 #All-in-one if type=time+unit -> no, use argument "as.one" for stsplot_time #as.one <- all(!is.na(pmatch(c("time","unit"),type[[3]] ))) && is.na(pmatch("|",type[[3]])) #No unit dimension? justTime <- type[[3]] == "time" #space-time plots if (map) { stsplot_spacetime(x, type, ...) return(invisible()) } #time plots if (time) { if (obsOk) { #In case observed ~ time, the units are aggregated stsplot_time(if(justTime) aggregate(x,by="unit") else x, ...) return(invisible()) } if (alarmOk) { stsplot_alarm(x, ...) return(invisible()) } } }) ###Validity checking ## NOTE: this is effectively not used ATM, but we could include ## validObject(.Object) as the last step in init.sts() setValidity("sts", function ( object ) { retval <- NULL #Check matrix dimensions if (!all( dim(object@observed) == dim(object@state))) retval <- c( retval , " dimension of observed and state has to match") if (!all( dim(object@observed) == dim(object@alarm))) retval <- c( retval , " dimension of observed and alarm has to match") if (!all( dim(object@observed) == dim(object@upperbound))) retval <- c( retval , " dimension of observed and upperbound has to match") if (!all( dim(object@observed) == dim(object@populationFrac))) retval <- c( retval , " dimension of observed and populationFrac has to match") if (!all( rep(dim(object@observed)[2] == dim(object@neighbourhood)))) { retval <- c( retval , " dimension of neighbourhood has to be ncols(observed) x ncols(observed)") } #Check colnames if (!all( colnames(object@observed) == colnames(object@state))) retval <- c( retval , " colnames of observed and state have to match") if (!all( colnames(object@observed) == colnames(object@alarm))) retval <- c( retval , " colnames of observed and alarm have to match") if (!all( colnames(object@observed) == colnames(object@upperbound))) retval <- c( retval , " colnames of observed and upperbound have to match") if (!all( colnames(object@observed) == colnames(object@populationFrac))) retval <- c( retval , " colnames of observed and populationFrac have to match") if (!all( colnames(object@observed) == colnames(object@neighbourhood))) retval <- c( retval , " colnames of observed and neighbourhood have to match") if (is.null(retval)) TRUE else retval }) ##Show/Print method # show setMethod( "show", "sts", function( object ){ cat( "-- An object of class sts -- \n" ) #cat( "length(week):\t", length(object@epoch),"\n" ) if (!object@epochAsDate) { cat( "freq:\t\t", object@freq,"\n" ) } else { epochStr <- switch( as.character(object@freq), "12" = "%m","52" = "%V","365" = "%j") cat( "freq:\t\t", paste(object@freq," with strptime format string ",epochStr,"\n",sep="")) } if (!object@epochAsDate) { cat( "start:\t\t",object@start,"\n" ) } else { cat( "start:\t\t",paste(epoch(object)[1]),"\n" ) } cat( "dim(observed):\t", dim(object@observed), "\n\n") n <- 1 cat("Head of observed:\n") print(head(object@observed,n)) #cat("Head of state:\n") #print(head(object@state,n)) #cat("Head of alarm:\n") #print(head(object@alarm,n)) if (npoly <- length(object@map)) { cat("\nmap:\n") print(modifyList(summary(object@map), list(data=NULL))) # no data summary cat("Features :", npoly, "\n") if (inherits(object@map, "SpatialPolygonsDataFrame")) cat("Data slot :", ncol(object@map), "variables\n") } if (ncol(object@observed) > 1) { cat("\nhead of neighbourhood:\n") print( head(object@neighbourhood,n)) } } ) #################### # toLatex method #################### toLatex.sts <- function(object, caption = "",label=" ", columnLabels = NULL, subset = NULL, alarmPrefix = "\\textbf{\\textcolor{red}{", alarmSuffix = "}}", ubColumnLabel = "UB", ...) { # Takes a list of sts objects and outputs a LaTeX Table. # Args: # object: A single sts object; must not be NULL or empty. # caption: A caption for the table. Default is the empty string. # label: A label for the table. Default is the empty string. # columnLabels: A list of labels for each column of the resulting table. # subset: A range of values which should be displayed. If Null, then all # data in the sts objects will be displayed. Else only a subset of # data. Therefore range needs to be a numerical vector of indexes # from 1 to length(@observed). # alarmPrefix: A latex compatible prefix string wrapped around a table cell # iff there is an alarm;i.e. alarm = TRUE # alarmSuffix: A latex compatible suffix string wrapped around a table cell # iff there is an alarm;i.e. alarm[i,j] = TRUE # ubColumnLabel: The label of the upper bound column; default is "UB". # ...: Variable arguments passed to toLatex.xtable # Returns: # An object of class Latex # Error Handling isEmpty <- function(o) is.null(o) if (isEmpty(object)) stop("object must not be null or NA.") if (is.list(object)) stop("supplying a list of sts has been removed from the api. Sorry.") if (!isS4(object) || !is(object, "sts")) stop("object must be of type sts from the surveillance package.") if (!is.character(caption)) stop("caption must be a character.") if (!isEmpty(labels) && length(labels) != length(object)) stop("number of labels differ from the number of sts objects.") # derive default values tableLabels <- colnames(object@observed) if (!is.null(columnLabels) && length(columnLabels) != ncol(object@observed) * 2 + 2) { stop("the number of labels must match the number of columns in the resulting table; i.e. 2 * columns of sts + 2.") } tableCaption <- caption tableLabel <- label vectorOfDates <- epoch(object, as.Date = TRUE) yearColumn <- Map(function(d)isoWeekYear(d)$ISOYear, vectorOfDates) if (object@freq == 12 ) monthColumn <- Map(function(d) as.POSIXlt(d)$mon, vectorOfDates) if (object@freq == 52 ) weekColumn <- Map(function(d)isoWeekYear(d)$ISOWeek, vectorOfDates) dataTable <- data.frame(unlist(yearColumn)) colnames(dataTable) <- "year" if (object@freq == 12 ) { dataTable$month <- unlist(monthColumn) } if (object@freq == 52 ) { dataTable$week <- unlist(weekColumn) } if (object@freq == 365 ) { dataTable$day <- unlist(vectorOfDates) dataTable <- dataTable[c(2)] } noCols <- ncol(dataTable) j <- 1 + noCols tableLabelsWithUB <- c() # I know it is imperative - shame on me for (k in 1:(ncol(object@observed))) { upperbounds <- round(object@upperbound[,k], 2) observedValues <- object@observed[,k] alarms <- object@alarm[,k] ubCol <- c() for (l in 1:length(upperbounds)) { if (is.na(upperbounds[l])) { ubCol <- c(ubCol, NA) } else { ubCol <- c(ubCol, upperbounds[l]) if (!is.na(alarms[l]) && alarms[l]) { observedValues[l] <- paste0(alarmPrefix, observedValues[l], alarmSuffix) } } } dataTable[,(j)] <- observedValues dataTable[,(j + 1)] <- ubCol tableLabelsWithUB <- c(tableLabelsWithUB, tableLabels[k]) tableLabelsWithUB <- c(tableLabelsWithUB, ubColumnLabel) j <- j + 2 } # remove rows which should not be displayed if (is.null(subset)) subset <- 1:nrow(dataTable) else if (min(subset) < 1 || max(subset) > nrow(dataTable)) stop("'subset' must be a subset of 1:nrow(observed), i.e., 1:", nrow(dataTable)) dataTable <- dataTable[subset,] # prepare everything for xtable newColNames <- c(colnames(dataTable)[1:noCols], tableLabelsWithUB) if (!is.null(columnLabels)) { colnames(dataTable) <- columnLabels } else { colnames(dataTable) <- newColNames } xDataTable <- xtable(dataTable, label = tableLabel, caption = tableCaption, digits = c(0)) toLatex(xDataTable, ...) } setMethod("toLatex", "sts", toLatex.sts) setMethod("toLatex", "list", toLatex.sts) ##<- FIXME: actually need a formal class for lists of sts objects surveillance/R/twinstim_siaf_powerlaw.R0000644000175100001440000001424112277371747020133 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Power-law kernel f(s) = (||s||+sigma)^-d ### This is the pure kernel of the Lomax density (the density requires d>1, but ### for the siaf specification we only want d to be positive) ### ### Copyright (C) 2013-2014 Sebastian Meyer ### $Revision: 769 $ ### $Date: 2014-02-14 11:45:59 +0100 (Fre, 14 Feb 2014) $ ################################################################################ siaf.powerlaw <- function (nTypes = 1, validpars = NULL) { nTypes <- as.integer(nTypes) stopifnot(length(nTypes) == 1L, nTypes > 0L) ## for the moment we don't make this type-specific if (nTypes != 1) stop("type-specific shapes are not yet implemented") ## helper expression, note: logpars=c(logscale=logsigma, logd=logd) tmp <- expression( logsigma <- logpars[[1L]], # used "[[" to drop names logd <- logpars[[2L]], sigma <- exp(logsigma), d <- exp(logd) ) ## spatial kernel f <- function (s, logpars, types = NULL) {} body(f) <- as.call(c(as.name("{"), tmp, expression(sLength <- sqrt(.rowSums(s^2, nrow(s), 2L))), expression((sLength+sigma)^-d) )) ## numerically integrate f over a polygonal domain F <- function (polydomain, f, logpars, type = NULL, ...) .polyCub.iso(polydomain$bdry, intrfr.powerlaw, logpars, #type, center=c(0,0), control=list(...)) ## fast integration of f over a circular domain Fcircle <- function (r, logpars, type = NULL) {} body(Fcircle) <- as.call(c(as.name("{"), tmp, expression( fofr <- (r+sigma)^-d, fof0 <- sigma^-d, ## calculate cylinder volume up to height f(r) basevolume <- if (is.infinite(r)) 0 else pi * r^2 * fofr, ## r=Inf is used in R0(,trimmed=F), Fcircle(Inf) is finite if d>2 Ifinvsq <- function (z) { if (d == 1) { -1/z - 2*sigma*log(z) + sigma^2*z } else if (d == 2) { log(z) - 4*sigma*sqrt(z) + sigma^2*z } else { z^(1-2/d) * d / (d-2) - z^(1-1/d) * 2*sigma*d/(d-1) + sigma^2*z } }, intfinvsq <- Ifinvsq(fof0) - Ifinvsq(fofr), basevolume + pi * intfinvsq ) )) ## derivative of f wrt logpars deriv <- function (s, logpars, types = NULL) {} body(deriv) <- as.call(c(as.name("{"), tmp, expression( sLength <- sqrt(.rowSums(s^2, nrow(s), 2L)), rsigmad <- (sLength+sigma)^d, derivlogsigma <- -d*sigma / rsigmad / (sLength+sigma), derivlogd <- -log(rsigmad) / rsigmad, cbind(derivlogsigma, derivlogd) ) )) ## Numerical integration of 'deriv' over a polygonal domain Deriv <- function (polydomain, deriv, logpars, type = NULL, ...) { res.logsigma <- .polyCub.iso(polydomain$bdry, intrfr.powerlaw.dlogsigma, logpars, #type, center=c(0,0), control=list(...)) res.logd <- .polyCub.iso(polydomain$bdry, intrfr.powerlaw.dlogd, logpars, #type, center=c(0,0), control=list(...)) c(res.logsigma, res.logd) } simulate <- siaf.simulatePC(intrfr.powerlaw) ## if (!is.finite(ub)) normconst <- { ## ## for sampling on [0;Inf] the density is only proper if d > 2 ## if (d <= 2) stop("improper density for d<=2, 'ub' must be finite") ## 1/(sigma^(d-2) * (d-2)*(d-1)) # = intrfr.powerlaw(Inf) ## } ## set function environments to the global environment environment(f) <- environment(Fcircle) <- environment(deriv) <- .GlobalEnv ## in F, Deriv, and simulate we need access to the intrfr-functions environment(F) <- environment(Deriv) <- environment(simulate) <- getNamespace("surveillance") ## return the kernel specification list(f=f, F=F, Fcircle=Fcircle, deriv=deriv, Deriv=Deriv, simulate=simulate, npars=2L, validpars=validpars) } ## integrate x*f(x) from 0 to R (vectorized) intrfr.powerlaw <- function (R, logpars, types = NULL) { sigma <- exp(logpars[[1L]]) d <- exp(logpars[[2L]]) if (d == 1) { R - sigma * log(R/sigma + 1) } else if (d == 2) { log(R/sigma + 1) - R/(R+sigma) } else { (R*(R+sigma)^(1-d) - ((R+sigma)^(2-d) - sigma^(2-d))/(2-d)) / (1-d) } } ## local({ # validation via numerical integration -> tests/testthat/test-siafs.R ## p <- function (r, sigma, d) r * (r+sigma)^-d ## Pnum <- function (r, sigma, d) sapply(r, function (.r) { ## integrate(p, 0, .r, sigma=sigma, d=d)$value ## }) ## r <- c(1,2,5,10,20,50,100) ## dev.null <- sapply(c(1,2,1.6), function(d) stopifnot(isTRUE( ## all.equal(intrfr.powerlaw(r, log(c(3, d))), Pnum(r, 3, d))))) ## }) ## integrate x * (df(x)/dlogsigma) from 0 to R (vectorized) intrfr.powerlaw.dlogsigma <- function (R, logpars, types = NULL) { pars <- exp(logpars) -prod(pars) * intrfr.powerlaw(R, log(pars+c(0,1)), types) } ## integrate x * (df(x)/dlogd) from 0 to R (vectorized) ## (thanks to Maple 17) -> validated in tests/testthat/test-siafs.R intrfr.powerlaw.dlogd <- function (R, logpars, types = NULL) { sigma <- exp(logpars[[1L]]) d <- exp(logpars[[2L]]) if (d == 1) { sigma * log(sigma) * (1-log(sigma)/2) - log(R+sigma) * (R+sigma) + sigma/2 * log(R+sigma)^2 + R } else if (d == 2) { (-log(R+sigma) * ((R+sigma)*log(R+sigma) + 2*sigma) + (R+sigma)*log(sigma)*(log(sigma)+2) + 2*R) / (R+sigma) } else { (sigma^(2-d) * (logpars[[1L]]*(-d^2 + 3*d - 2) - 2*d + 3) + (R+sigma)^(1-d) * (log(R+sigma)*(d-1)*(d-2) * (R*(d-1) + sigma) + R*(d^2+1) + 2*d*(sigma-R) - 3*sigma) ) * d / (d-1)^2 / (d-2)^2 } } surveillance/R/qlomax.R0000644000175100001440000000135412254317225014617 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Simple implementation of the quantile function of the Lomax distribution ### (we could also use VGAM::qlomax, but this would be slightly slower) ### ### Copyright (C) 2012-2013 Sebastian Meyer ### $Revision: 691 $ ### $Date: 2013-12-18 14:09:41 +0100 (Mit, 18 Dez 2013) $ ################################################################################ qlomax <- function (p, scale, shape) scale * ((1-p)^(-1/shape) - 1) surveillance/R/twinstim_helper.R0000644000175100001440000003417012504272053016532 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Some internal helper functions for "twinstim". ### ### Copyright (C) 2009-2015 Sebastian Meyer ### $Revision: 1285 $ ### $Date: 2015-03-24 15:26:51 +0100 (Die, 24. Mär 2015) $ ################################################################################ ### Determines indexes of potential sources of infection ## determine potential sources of the i'th event ## all arguments but i and qmatrix are nEvents-vectors ## -> determine potential sources for eventTimes[i], eventsTypes[i] with ## distances distvec_j = ||s_i - s_j|| determineSources <- function (i, eventTimes, removalTimes, distvec, eps.s, eventTypes = NULL, qmatrix) { tp <- eventTimes[i] infectivity <- (eventTimes < tp) & (removalTimes >= tp) #<- eventTimes= t)) ## ~5x faster alternative assuming a full BLOCK x tile grid, which is ## sorted by BLOCK and tile (tile varying first), specifically there must be ## all levels(stgrid$tile) in every BLOCK in that order; ## this structure is guaranteed by check_stgrid() blockstart <- match(TRUE, stgrid$stop >= t) idx <- blockstart + match(tilename, levels(stgrid$tile)) - 1L lidx <- length(idx) if (lidx == 0L) NA_integer_ else if (lidx == 1L) idx else { stop("'stgrid' has overlapping spatio-temporal grid cells") } } ## Crude estimate for a start value of the endemic intercept ## assuming the model only had a single-cell endemic component ## (rate of homogeneous Poisson process scaled for the offset) crudebeta0 <- function (nEvents, offset.mean, W.area, period, nTypes) { ## nEvents = exp(offset + beta0) * W.area * period * nTypes log(nEvents/W.area/period/nTypes) - offset.mean } ### Really internal helper function, which constructs the function that ### integrates the two-dimensional 'siaf' function over the influence regions of ### the events. The only argument of the returned function is 'siafpars'. ### The returned function is defined in the callers environment, where the ### variables used in the function are available (inside twinstim() or ### simEpidataCS()). .siafIntFUN <- function (siaf, noCircularIR, #= all(eps.s>bdist) = all(sapply(influenceRegion, function(x) # is.null(attr(x,"radius")))) parallel = FALSE ){ ## the following variables are unused here, because the environment of ## FUN will be set to the parent.frame(), where the variables exist ## they are only included to avoid the notes in R CMD check iRareas <- influenceRegion <- eventTypes <- eps.s <- bdist <- effRanges <- NULL ## define the siaf integration function depending on the siaf specification FUN <- if (attr(siaf, "constant")) { if (exists("iRareas", where=parent.frame(), mode="numeric")) { ## in twinstim(), 'iRareas' are pre-defined to save ## computation time (data are fixed during fitting) function (siafpars) iRareas } else { function (siafpars) vapply(X = influenceRegion, FUN = attr, which = "area", FUN.VALUE = 0, USE.NAMES = FALSE) } } else if (is.null(siaf$Fcircle) || # if siaf$Fcircle not available (is.null(siaf$effRange) && noCircularIR)) { ## Numerically integrate 'siaf' over each influence region mapplyFUN( c(alist(siaf$F, influenceRegion, type=eventTypes), list(MoreArgs=quote(list(siaf$f, siafpars, ...)), SIMPLIFY=TRUE, USE.NAMES=FALSE)), ##<- we explicitly quote() the ...-part instead of simply including ## it in the above alist() - only to make checkUsage() happy parallel = parallel) } else if (is.null(siaf$effRange)) # use Fcircle but only delta-trick { mapplyFUN( c(alist(function (iR, type, eps, bdisti, siafpars, ...) if (eps <= bdisti) # influence region completely inside W siaf$Fcircle(eps, siafpars, type) else # numerically integrate over influence region siaf$F(iR, siaf$f, siafpars, type, ...) , influenceRegion, eventTypes, eps.s, bdist), list(MoreArgs=quote(list(siafpars, ...)), SIMPLIFY=TRUE, USE.NAMES=FALSE)), parallel = parallel) } else { # fast Fcircle integration considering the delta-trick AND effRange .ret <- mapplyFUN( c(alist(function (iR, type, eps, bdisti, effRange, siafpars, ...) if (eps <= bdisti) # influence region completely inside W siaf$Fcircle(eps, siafpars, type) else if (effRange <= bdisti) # effective region inside W siaf$Fcircle(bdisti, siafpars, type) else # numerically integrate over influence region siaf$F(iR, siaf$f, siafpars, type, ...) , influenceRegion, eventTypes, eps.s, bdist, effRanges), list(MoreArgs=quote(list(siafpars, ...)), SIMPLIFY=TRUE, USE.NAMES=FALSE)), ## before: compute computationally effective range of the 'siaf' ## for the current 'siafpars' for each event (type): before = expression( effRangeTypes <- rep_len(siaf$effRange(siafpars), nTypes), effRanges <- effRangeTypes[eventTypes] # N-vector ), parallel = parallel) if (exists("effRangeTypes", where=parent.frame(), mode="numeric")) { ## in simEpidataCS effRangeTypes is pre-calculated outside siafInt to ## save computation time ('siafpars' is constant during simulation) body(.ret)[[grep("^effRangeTypes <-", body(.ret))]] <- NULL } .ret } ## set the environment of the siafInt function to the callers environment ## (i.e. inside twinstim() or simEpidataCS()) ## where the variables used in the function are defined environment(FUN) <- parent.frame() FUN } ### Helper function, which constructs the function that integrates the 'tiaf'. ### The returned function is defined in the callers environment, where the ### variables used in the function are available (inside twinstim() or ### simEpidataCS()). .tiafIntFUN <- function () { ## the following variables are unused here, because the environment of ## FUN will be set to the parent.frame(), where the variables exist ## they are only included to avoid the notes in R CMD check gIntLower <- gIntUpper <- eventTypes <- tiaf <- NULL ## from, to and type may be vectors of compatible lengths FUN <- function(tiafpars, from = gIntLower, to = gIntUpper, type = eventTypes, G = tiaf$G) { tiafIntUpper <- G(to, tiafpars, type) tiafIntLower <- G(from, tiafpars, type) tiafIntUpper - tiafIntLower } ## set the environment of the tiafInt function to the callers environment ## (i.e. inside twinstim() or simEpidataCS()) ## where the default argument values are defined environment(FUN) <- parent.frame() FUN } ### rename control arguments with optim names to have names compatible with nlminb control2nlminb <- function (control, defaults) { renamelist <- cbind(optim = c("maxit", "REPORT", "abstol", "reltol"), nlminb = c("iter.max", "trace", "abs.tol", "rel.tol")) for (i in which(renamelist[,"optim"] %in% names(control))) { fromname <- renamelist[i, "optim"] toname <- renamelist[i, "nlminb"] if (is.null(control[[toname]])) { control[[toname]] <- control[[fromname]] } control[[fromname]] <- NULL } defaults[names(control)] <- control defaults } ### Helper for iaf-checks: ### Checks if FUN has three arguments (s/t, pars, type) and ### eventually adds the last two .checknargs3 <- function (FUN, name) { FUN <- match.fun(FUN) NARGS <- length(formals(FUN)) if (NARGS == 0L) { stop("the function '", name, "' must accept at least one argument") } else if (NARGS == 1L) { formals(FUN) <- c(formals(FUN), alist(pars=, types=)) } else if (NARGS == 2L) { formals(FUN) <- c(formals(FUN), alist(types=)) } FUN } ### Internal wrapper used in twinstim() and simEpidataCS() to evaluate the siaf ### and tiaf arguments. If succesful, returns checked interaction function. .parseiaf <- function (iaf, type, eps = NULL, verbose = TRUE) { type <- match.arg(type, choices=c("siaf", "tiaf"), several.ok=FALSE) res <- if (missing(iaf) || is.null(iaf)) { if (verbose) { message("assuming constant ", switch(type, siaf="spatial", tiaf="temporal"), " interaction '", type, ".constant()'") } do.call(paste(type, "constant", sep="."), args=alist()) } else if (is.list(iaf)) { ret <- do.call(type, args = iaf) ## keep special attributes attr(ret, "knots") <- attr(iaf, "knots") attr(ret, "maxRange") <- attr(iaf, "maxRange") attr(ret, "Boundary.knots") <- attr(iaf, "Boundary.knots") attr(ret, "constant") <- attr(iaf, "constant") ret } else if (is.vector(iaf, mode = "numeric")) { do.call(paste(type,"step",sep="."), args = list(knots = iaf)) } else { stop("'", as.character(substitute(iaf)), "' must be NULL (or missing), a list (-> continuous ", "function), or numeric (-> knots of step function)") } ## indicate if this is a constant iaf attr(res, "constant") <- isTRUE(attr(res, "constant")) ## attach unique interaction ranges if (!is.null(eps)) { # in simEpidataCS() eps is not known beforehand attr(res, "eps") <- sort(unique(eps)) } return(res) } ### Construct a call/function for mapply or parallel::mcmapply, respectively ## args: alist() of arguments for mapply() ## before,after: expressions to be prepended/appended to the function body, ## where "res" will be the result of mapply() mapplyCall <- function (args, cores = 1L) { parallel <- is.name(cores) || cores > 1L mapplyFUN <- if (parallel) quote(parallel::mcmapply) else quote(mapply) parallelArgs <- list(mc.preschedule=TRUE, mc.cores=cores) as.call(c(mapplyFUN, args, if (parallel) parallelArgs)) } mapplyFUN <- function (args, before = list(), after = list(), parallel = TRUE) { FUN <- as.function(alist(siafpars=, ...=, NULL), envir=parent.frame()) body(FUN) <- mapplyCall(args, if (parallel) quote(cores) else 1L) if (length(after) + length(before) > 0) { body(FUN) <- as.call(c( list(as.name("{")), before, if (length(after)) call("<-", as.name("res"), body(FUN)) else body(FUN), after)) } FUN } ### parse the list or vector of start values check_twinstim_start <- function (start) { if (is.null(start)) { return(start) } else if (is.list(start)) { # convert allowed list specification to vector stopifnot(names(start) %in% c("endemic", "epidemic", "h", "e", "siaf", "tiaf", "e.siaf", "e.tiaf")) names(start)[names(start) == "endemic"] <- "h" names(start)[names(start) == "epidemic"] <- "e" names(start)[names(start) == "siaf"] <- "e.siaf" names(start)[names(start) == "tiaf"] <- "e.tiaf" start <- unlist(start, recursive=FALSE, use.names=TRUE) } if (!is.vector(start, mode="numeric") || is.null(names(start))) stop("parameter values must be named and numeric") return(start) } surveillance/R/plapply.R0000644000175100001440000001077312503317261015001 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Parallelized lapply (wrapping around mclapply and parLapply) ### taking care of the random seed and printing progress information ### ### Copyright (C) 2015 Sebastian Meyer ### $Revision: 1273 $ ### $Date: 2015-03-21 17:39:13 +0100 (Sam, 21. Mär 2015) $ ################################################################################ plapply <- function (X, FUN, ..., .parallel = 1, .seed = NULL, .verbose = TRUE) { if (!(useCluster <- inherits(.parallel, "cluster"))) { stopifnot(isScalar(.parallel), .parallel >= 1) .parallel <- as.vector(.parallel, mode = "integer") if (.Platform$OS.type == "windows" && .parallel > 1L) { useCluster <- TRUE .parallel <- parallel::makeCluster(.parallel) on.exit(parallel::stopCluster(.parallel)) } } FUN <- match.fun(FUN) .FUN <- if (useCluster || is.primitive(FUN)) { FUN # no support for reporting to the master || add.on.exit } else { # be verbose on.exit of FUN verboseExpr <- if (isTRUE(.verbose)) { ## progress bar or dots if (.parallel == 1L && interactive()) { env <- new.env(hash = FALSE, parent = environment(FUN)) environment(FUN) <- env # where the progress bar lives env$pb <- txtProgressBar(min = 0, max = length(X), initial = 0, style = 3) on.exit(close(env$pb), add = TRUE) quote(setTxtProgressBar(pb, pb$getVal() + 1L)) } else { on.exit(cat("\n"), add = TRUE) quote(cat(".")) } } else if (is.call(.verbose) || is.expression(.verbose)) { ## custom call or expression .verbose } else if (is.character(.verbose)) { ## custom progress symbol on.exit(cat("\n"), add = TRUE) substitute(cat(.verbose)) } # else NULL (no output) ## add on.exit(verboseExpr) to body(FUN) do.call(add.on.exit, list(FUN, verboseExpr)) } ## set random seed for reproducibility if (!is.null(.seed)) { if (useCluster) { parallel::clusterSetRNGStream(cl = .parallel, iseed = .seed) } else { if (!exists(".Random.seed", envir = .GlobalEnv, inherits = FALSE)) { set.seed(NULL) # initialize } .orig.seed <- get(".Random.seed", envir = .GlobalEnv) on.exit(assign(".Random.seed", .orig.seed, envir = .GlobalEnv), add = TRUE) if (.parallel == 1L) { set.seed(seed = .seed) } else { stopifnot(requireNamespace("parallel", quietly = TRUE)) ## Note @ R 3.1.3: this loading of package "parallel" ## before set.seed() is crucial; otherwise, the first run of ## plapply() would not be reproducible !!! set.seed(seed = .seed, kind = "L'Ecuyer-CMRG") parallel::mc.reset.stream() } } } ## rock'n'roll if (useCluster) { parallel::parLapply(cl = .parallel, X = X, fun = .FUN, ...) } else if (.parallel == 1L) { lapply(X = X, FUN = .FUN, ...) } else { # use forking parallel::mclapply(X = X, FUN = .FUN, ..., mc.preschedule = TRUE, mc.set.seed = TRUE, mc.silent = FALSE, mc.cores = .parallel) } } ## add an on.exit() statement at the beginning of a function add.on.exit <- function (FUN, expr) { FUN <- match.fun(FUN) if (is.null(expr <- substitute(expr))) { return(FUN) } if (is.primitive(FUN)) { # body(FUN) is NULL stop("not implemented for primitive functions") } onexitexpr <- substitute(on.exit(expr)) obody <- body(FUN) body(FUN) <- if (is.call(obody) && identical(as.name("{"), obody[[1L]])) { ## body(FUN) is a braced expression (usual case) ## and we insert on.exit(expr) directly after "{" as.call(append(x = as.list(obody), values = onexitexpr, after = 1L)) } else { ## body(FUN) is a symbol or a single call like UseMethod("print") as.call(c(as.name("{"), onexitexpr, obody)) } FUN } surveillance/R/twinSIR_profile.R0000644000175100001440000002411112422442515016367 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### profile-method for class "twinSIR" to calculate the profile log-likelihood ### (normalized) as well as profile likelihood based confidence intervals ### ### Copyright (C) 2009 Michael Hoehle, 2014 Sebastian Meyer ### $Revision: 1091 $ ### $Date: 2014-10-24 14:25:49 +0200 (Fre, 24. Okt 2014) $ ################################################################################ ###################################################################### # Function to compute likelihood based confidence interval, basically # the two solutions to # f(\theta) = l(\theta)-l(\hat{theta)) + 1/2 dchisq(1-alpha,df=1)=0 # are found. # # # Parameters: # logliktilde - normalized likelihood function(theta, ...) # theta.hat - the MLE # lower - search interval [lower,theta.hat] for f=0 # upper - search interval [theta.hat,upper] for f=0 # alpha - confidence level (see Equation 2.6 in Pawitan (2003) # ... - additional arguments passed to function logliktilde ###################################################################### likelihood.ci <- function (logliktilde, theta.hat, lower, upper, alpha = 0.05, ...) { # Highest Likelihood intervall -- target function f <- function(theta, ...) { logliktilde(theta, ...) + 1/2*qchisq(1-alpha, df=1) } # Compute upper and lower boundary numerically hl.lower <- uniroot(f, interval = c(lower, theta.hat), ...)$root hl.upper <- uniroot(f, interval = c(theta.hat, upper), ...)$root return(c(hl.lower,hl.upper)) } ###################################################################### # Function to compute estimated and profile likelihood based # confidence intervals. Heavy computations might be necessary! # #Params: # fitted - output from a fit with twinSIR # profile - list with 4D vector as entries - format: # c(index, lower, upper, grid size) # where index is the index in the coef vector # lower and upper are the parameter limits (can be NA) # grid size is the grid size of the equally spaced grid # between lower and upper (can be 0) # alpha - (1-alpha)% profile likelihood CIs are computed. # If alpha <= 0 then no CIs are computed # control - control object to use for optim in the profile loglik computations # # Returns: # list with profile loglikelihood evaluations on the grid # and highest likelihood and wald confidence intervals ###################################################################### profile.twinSIR <- function (fitted, profile, alpha = 0.05, control = list(fnscale = -1, factr = 1e1, maxit = 100), ...) { ## Check that input is ok profile <- as.list(profile) if (length(profile) == 0L) { stop("nothing to do") } lapply(profile, function(one) { if (length(one) != 4L) { stop("each profile entry has to be of form ", "'c(index, lower, upper, grid size)'") }}) if (is.null(fitted[["model"]])) { stop("'fitted' must contain the model component") } px <- ncol(fitted$model$X) pz <- ncol(fitted$model$Z) ## Control of the optim procedure if (is.null(control[["fnscale",exact=TRUE]])) { control$fnscale <- -1 } if (is.null(control[["factr",exact=TRUE]])) { control$factr <- 1e1 } if (is.null(control[["maxit",exact=TRUE]])) { control$maxit <- 100 } ## Estimated normalized likelihood function ltildeestim <- function(thetai,i) { theta <- theta.ml theta[i] <- thetai with(fitted$model, .loglik(theta, X=X, Z=Z, survs=survs, weights=weights)) - loglik.theta.ml } ## Profile normalized likelihood function ltildeprofile <- function(thetai,i) { emptyTheta <- rep(0, length(theta.ml)) # Likelihood l(theta_{-i}) = l(theta_i, theta_i) ltildethetaminusi <- function(thetaminusi) { theta <- emptyTheta theta[-i] <- thetaminusi theta[i] <- thetai with(fitted$model, .loglik(theta, X=X, Z=Z, survs=survs, weights=weights)) - loglik.theta.ml } # Score function of all params except thetaminusi stildethetaminusi <- function(thetaminusi) { theta <- emptyTheta theta[-i] <- thetaminusi theta[i] <- thetai with(fitted$model, .score(theta, X=X, Z=Z, survs=survs, weights=weights))[-i] } # Call optim using L-BFGS-B. For harder constrains we need constr.Optim lower <- if (fitted$method == "L-BFGS-B") { c(rep(0,px),rep(-Inf,pz))[-i] } else { -Inf } upper <- if (fitted$method == "L-BFGS-B") { c(rep(Inf,px),rep(Inf,pz))[-i] } else { Inf } resOthers <- tryCatch(with(fitted$model, optim(theta.ml[-i], fn = ltildethetaminusi, gr = stildethetaminusi, method = fitted$method, control = control, lower = lower, upper = upper)), warning = function(w) print(w), error = function(e) list(value=NA)) resOthers$value } ## Initialize theta.ml <- coef(fitted) loglik.theta.ml <- c(logLik(fitted)) se <- sqrt(diag(vcov(fitted))) resProfile <- list() ## Perform profile computations for all requested parameters cat("Evaluating the profile log-likelihood on a grid ...\n") for (i in 1:length(profile)) { cat("i= ",i,"/",length(profile),"\n") #Index of the parameter in the theta vector idx <- profile[[i]][1] #If no borders are given use those from wald intervals (unconstrained) if (is.na(profile[[i]][2])) profile[[i]][2] <- theta.ml[idx] - 3*se[idx] if (is.na(profile[[i]][3])) profile[[i]][3] <- theta.ml[idx] + 3*se[idx] #Evaluate profile loglik on a grid (if requested) if (profile[[i]][4] > 0) { thetai.grid <- seq(profile[[i]][2],profile[[i]][3],length=profile[[i]][4]) resProfile[[i]] <- matrix(NA, nrow = length(thetai.grid), ncol = 4L, dimnames = list(NULL, c("grid","profile","estimated","wald"))) for (j in 1:length(thetai.grid)) { cat("\tj= ",j,"/",length(thetai.grid),"\n") resProfile[[i]][j,] <- c(thetai.grid[j], ltildeprofile(thetai.grid[j],idx), ltildeestim(thetai.grid[j],idx), #9 June 2009: Bug discovered by L. Held. as part of paper revision. C.f. Pawitan p.63 - 1/2*(1/se[idx]^2)*(thetai.grid[j] - theta.ml[idx])^2) } } } #9 June 2009. This did not work. # names(resProfile) <- names(theta.ml)[sapply(profile, function(x) x[4L]) > 0] names(resProfile) <- names(theta.ml)[sapply(profile, function(x) x[1L])] ## Profile likelihood intervals ciProfile <- matrix(NA, nrow = length(profile), ncol = 6L, dimnames = list(NULL, c("idx","hl.low","hl.up","wald.low","wald.up","mle"))) ciProfile[,"idx"] <- sapply(profile, "[", 1L) ciProfile[,"mle"] <- theta.ml[ciProfile[,"idx"]] rownames(ciProfile) <- names(theta.ml)[ciProfile[,"idx"]] if (alpha > 0) { cat("Computing profile likelihood-based confidence intervals ...\n") lower <- if (fitted$method == "L-BFGS-B") { c(rep(0,px),rep(-Inf,pz)) } else { -Inf } for (i in seq_along(profile)) { cat(i,"/", length(profile),"\n") #Index of the parameter in the theta vector idx <- profile[[i]][1] #Compute highest likelihood intervals ci.hl <- tryCatch( likelihood.ci(ltildeprofile, theta.hat = theta.ml[idx], lower = max(lower[idx], theta.ml[idx]-5*se[idx]), upper = theta.ml[idx]+5*se[idx], alpha = alpha, i = idx), warning = function(w) print(w), error = function(e) rep(NA,2)) #Wald intervals based on expected fisher information ci.wald <- theta.ml[idx] + c(-1,1) * qnorm(1-alpha/2) * se[idx] ciProfile[i,2:5] <- c(ci.hl, ci.wald) } } res <- list(lp=resProfile, ci.hl=ciProfile, profileObj=profile) class(res) <- "profile.twinSIR" return(res) } ###################################################################### ## Plot the result of the profiler ## Parameters: ## x - the result of calling profile() on a "twinSIR" object ## which - names of selected parameters, NULL meaning all available ## conf.level - level for the horizontal line for -qchisq(,df=1)/2 ## legend - logical indicating whether to add a legend to the plot, ## or numeric vector of indexes of plots where to add the legend ###################################################################### plot.profile.twinSIR <- function(x, which = NULL, conf.level = 0.95, xlab = which, ylab = "normalized log-likelihood", legend = TRUE, par.settings = list(), ...) { ## extract relevant components of 'x' lp <- x$lp[!vapply(X=x$lp, FUN=is.null, FUN.VALUE=FALSE, USE.NAMES=FALSE)] mle <- x$ci.hl[,"mle"] ## check arguments which <- if (is.null(which)) { names(lp) } else { match.arg(which, names(lp), several.ok = TRUE) } xlab <- rep_len(xlab, length(which)) if (is.logical(legend)) legend <- which(legend) if (is.list(par.settings)) { par.defaults <- list(mfrow = sort(n2mfrow(length(which))), mar = c(5,5,1,1)+.1, las = 1) par.settings <- modifyList(par.defaults, par.settings) opar <- do.call("par", par.settings) on.exit(par(opar)) } ## loop over parameters for (i in seq_along(which)) { coefname <- which[i] matplot(lp[[coefname]][,1L], lp[[coefname]][,-1L], type = "l", col = 1:3, lty = 1:3, xlab = xlab[i], ylab = ylab) if (i %in% legend) { legend(x = "bottomright", legend = c("profile","estimated","Wald"), col = 1:3, lty = 1:3) } ## some lines which help interpretation segments(x0=mle[coefname], y0=par("usr")[3L], y1=0, lty=2, col="darkgray") abline(h=-1/2*qchisq(conf.level, df=1), lty=2, col="darkgray") } } surveillance/R/bodaDelay.R0000644000175100001440000006240412574557555015226 0ustar hornikusers# ____________________________ # |\_________________________/|\ # || || \ # || bodaDelay || \ # || || | # || || | # || || | # || || | # || || | # || || / # ||_________________________|| / # |/_________________________\|/ # __\_________________/__/|_ # |_______________________|/ ) # ________________________ (__ # /oooo oooo oooo oooo /| _ )_ # /ooooooooooooooooooooooo/ / (_)_(_) # /ooooooooooooooooooooooo/ / (o o) #/C=_____________________/_/ ==\o/== # Author: M.Salmon ################################################################################ # CONTENTS ################################################################################ # # MAIN FUNCTION # Function that manages input and output. # # FIT GLM FUNCTION # Function that fits a GLM. # # THRESHOLD FUNCTION # Function that calculates the threshold. # # DATA GLM FUNCTION # Function that prepares data for the GLM. # # FORMULA FUNCTION # Function that writes the formula for the GLM. ################################################################################ # END OF CONTENTS ################################################################################ ################################################################################ # MAIN FUNCTION ################################################################################ bodaDelay <- function(sts, control = list(range = NULL, b = 3, w = 3, mc.munu=100, mc.y=10, pastAberrations = FALSE, verbose = FALSE, alpha = 0.01, trend = TRUE, limit54=c(5,4), inferenceMethod=c("asym","INLA"), noPeriods = 1, pastWeeksNotIncluded = 26, delay = TRUE)) { ###################################################################### # Use special Date class mechanism to find reference months/weeks/days ###################################################################### if (is.null( sts@epochAsDate)) { epochAsDate <- FALSE } else { epochAsDate <- sts@epochAsDate } ###################################################################### # Fetch observed and population ###################################################################### # Fetch observed observed <- observed(sts) freq <- sts@freq if (epochAsDate) { epochStr <- switch( as.character(freq), "12" = "month","52" = "week", "365" = "day") } else { epochStr <- "none" } # Fetch population (if it exists) if (!is.null(population(sts))) { population <- population(sts) } else { population <- rep(1,length(observed)) } ###################################################################### # Fix missing control options ###################################################################### if (is.null(control[["b",exact=TRUE]])) { control$b = 5 } if (is.null(control[["w", exact = TRUE]])) { control$w = 3 } if (is.null(control[["range", exact=TRUE]])) { control$range <- (freq*(control$b)+control$w +1):dim(observed)[1] } if (is.null(control[["pastAberrations",exact=TRUE]])) {control$pastAberrations=FALSE} if (is.null(control[["verbose",exact=TRUE]])) { control$verbose=FALSE } if (is.null(control[["alpha",exact=TRUE]])) { control$alpha=0.05 } if (is.null(control[["trend",exact=TRUE]])) { control$trend=TRUE } # No alarm is sounded # if fewer than cases = 5 reports were received in the past period = 4 # weeks. limit54=c(cases,period) is a vector allowing the user to change # these numbers if (is.null(control[["limit54",exact=TRUE]])) {control$limit54=c(5,4)} if (is.null(control[["noPeriods",exact=TRUE]])){control$noPeriods=1} # Use factors in the model? Depends on noPeriods, no input from the user. if (control$noPeriods != 1) { control$factorsBool=TRUE } else { control$factorsBool=FALSE } # How many past weeks not to take into account? if (is.null(control[["pastWeeksNotIncluded",exact=TRUE]])) { control$pastWeeksNotIncluded=control$w } # Correct for delays? (default: FALSE) if (is.null(control[["delay",exact=TRUE]])) { control$delay = FALSE } # Is the reporting triangle available? if (control$delay) { if (is.null( sts@control$reportingTriangle$n)) { stop("You have to provide a reporting triangle in control of the sts-object") } if (!(length(apply(sts@control$reportingTriangle$n,1,sum,na.rm=TRUE))==length(sts@observed))) { stop("The reporting triangle number of lines is not the length of the observed slot.") } if (!all(rownames(sts@control$reportingTriangle$n) == as.character(epoch(sts)))) { stop("Dates in the reporting triangle do not correspond to epochs of the sts object.") } if (!(sum(apply(sts@control$reportingTriangle$n,1,sum,na.rm=TRUE)[as.logical(!is.na(sts@observed))]) == sum(sts@observed,na.rm=TRUE))) { stop("The reporting triangle is wrong: not all cases are in the reporting triangle.") } } # setting for monte carlo integration if(is.null(control[["mc.munu",exact=TRUE]])){ control$mc.munu <- 100 } if(is.null(control[["mc.y",exact=TRUE]])){ control$mc.y <- 10 } ###################################################################### # Check options ###################################################################### if (!((control$limit54[1] >= 0) && (control$limit54[2] > 0))) { stop("The limit54 arguments are out of bounds: cases >= 0 and period > 0.") } # inference method if(is.null(control[["inferenceMethod",exact=TRUE]])){ control$inferenceMethod <- "asym" } else { control$inferenceMethod <- match.arg(control$inferenceMethod, c("asym","INLA")) } #Check if the INLA package is available. if (control$inferenceMethod=="INLA"){ if (!requireNamespace("INLA", quietly = TRUE)) { stop("The bodaDelay function requires the INLA package to be installed.\n", " The package is not available on CRAN, but can be downloaded by calling\n", "\tsource(\"http://www.math.ntnu.no/inla/givemeINLA.R\")\n", " as described at http://www.r-inla.org/download in detail.\n", "Or set inferenceMethod to 'asym'.") } } # Define objects n <- control$b*(2*control$w+1) # loop over columns of sts --- hoehle??? #Vector of dates if (epochAsDate){ vectorOfDates <- as.Date(sts@epoch, origin="1970-01-01") } else { vectorOfDates <- seq_len(length(observed)) } # Parameters b <- control$b w <- control$w noPeriods <- control$noPeriods verbose <- control$verbose reportingTriangle <- sts@control$reportingTriangle timeTrend <- control$trend alpha <- control$alpha factorsBool <- control$factorsBool pastAberrations <- control$pastAberrations glmWarnings <- control$glmWarnings delay <- control$delay k <- control$k verbose <- control$verbose pastWeeksNotIncluded <- control$pastWeeksNotIncluded mc.munu <- control$mc.munu mc.y <- control$mc.y sts@control$expected <- numeric(length(observed(sts))) sts@control$pvalues <- numeric(length(observed(sts))) sts@control$score <- numeric(length(observed(sts))) # Loop over control$range for (k in control$range) { ###################################################################### # Prepare data for the glm ###################################################################### dayToConsider <- vectorOfDates[k] diffDates <- diff(vectorOfDates) delay <- control$delay dataGLM <- bodaDelay.data.glm(dayToConsider=dayToConsider, b=b, freq=freq, epochAsDate=epochAsDate, epochStr=epochStr, vectorOfDates=vectorOfDates,w=w, noPeriods=noPeriods, observed=observed,population=population, verbose=verbose, pastWeeksNotIncluded=pastWeeksNotIncluded, reportingTriangle=reportingTriangle, delay=delay) ###################################################################### # Fit the model ###################################################################### argumentsGLM <- list(dataGLM=dataGLM,reportingTriangle=reportingTriangle, timeTrend=timeTrend,alpha=alpha, factorsBool=factorsBool,pastAberrations=pastAberrations, glmWarnings=glmWarnings, verbose=verbose,delay=delay, inferenceMethod=control$inferenceMethod) model <- do.call(bodaDelay.fitGLM, args=argumentsGLM) if (identical(model, NA)) { sts@upperbound[k] <- NA sts@control$expected[k] <- NA sts@alarm[k] <- NA sts@control$pvalues[k] <- NA } else { ###################################################################### # Calculate the threshold ###################################################################### argumentsThreshold <- list(model,alpha=alpha,dataGLM=dataGLM,reportingTriangle, delay=delay,k=k,control=control,mc.munu=mc.munu,mc.y=mc.y, inferenceMethod=control$inferenceMethod,verbose=verbose, observed=observed) predisons <- do.call(bodaDelay.threshold,argumentsThreshold) threshold <- predisons$quantile expected <- predisons$expected ###################################################################### # Output results if enough cases ###################################################################### sts@upperbound[k] <- threshold sts@control$expected[k] <- expected sts@control$pvalues[k] <- predisons$score enoughCases <- (sum(observed[(k-control$limit54[2]+1):k]) >=control$limit54[1]) sts@alarm[k] <- FALSE if (is.na(threshold)) { sts@alarm[k] <- NA } else { if (sts@observed[k]>sts@upperbound[k]) {sts@alarm[k] <- TRUE} } if (!enoughCases) { sts@upperbound[k] <- NA sts@alarm[k] <- NA } } } #done looping over all time points sts@control$expected <- sts@control$expected[control$range] sts@control$pvalues <- sts@control$pvalues[control$range] #ready to return return(sts[control$range,]) } ################################################################################ # END OF MAIN FUNCTION ################################################################################ ################################################################################ # FIT GLM FUNCTION ################################################################################ bodaDelay.fitGLM <- function(dataGLM,reportingTriangle,alpha, timeTrend,factorsBool,delay,pastAberrations, glmWarnings,verbose,inferenceMethod,...) { # Model formula depends on whether to include a time trend or not. theModel <- formulaGLMDelay(timeBool=timeTrend,factorsBool,delay,outbreak=FALSE) if(inferenceMethod=="INLA"){ E <- max(0,mean(dataGLM$response, na.rm=TRUE)) link=1 model <- try(INLA::inla(as.formula(theModel),data=dataGLM, family='nbinomial',E=E, control.predictor=list(compute=TRUE,link=link), control.compute=list(cpo=TRUE,config=TRUE), control.inla = list(int.strategy = "eb"), # control.inla = list(int.strategy = "grid",dz=1, # diff.logdens = 10), control.family = list(hyper = list(theta = list(prior = "normal", param = c(0, 0.01))))), silent=TRUE) if(inherits(model,'try-error')){ return(model=NA) } if (pastAberrations){ # if we have failures => recompute those manually #if (sum(model$cpo$failure,na.rm=TRUE)!=0){ # model <- inla.cpo(model) #} # Calculate the mid p-value vpit <- model$cpo$pit vcpo <- model$cpo$cpo midpvalue <- vpit - 0.5*vcpo # Detect the point with a high mid p-value #hist(midpvalue) #print(summary(model)) # outbreakOrNot <- midpvalue #outbreakOrNot[midpvalue <= (1-alpha)] <- 0 outbreakOrNot <- ifelse(midpvalue > (1-alpha), 1, 0) outbreakOrNot[is.na(outbreakOrNot)] <- 0# FALSE outbreakOrNot[is.na(dataGLM$response)] <- 0#FALSE # Only recompute the model if it will bring something! if (sum(outbreakOrNot)>0){ dataGLM <- cbind(dataGLM,outbreakOrNot) theModel <- formulaGLMDelay(timeBool=timeTrend,factorsBool,delay,outbreak=TRUE) model <- try(INLA::inla(as.formula(theModel),data=dataGLM, family='nbinomial',E=E, control.predictor=list(compute=TRUE,link=link), control.compute=list(cpo=FALSE,config=TRUE), control.inla = list(int.strategy = "grid",dz=1,diff.logdens = 10), control.family = list(hyper = list(theta = list(prior = "normal", param = c(0, 0.001))))), silent=TRUE) if(inherits(model,'try-error')){ return(model=NA) } # if we have failures => recompute those manually # if (sum(model$cpo$failure,na.rm=TRUE)!=0){model <- inla.cpo(model)} vpit <- model$cpo$pit vcpo <- model$cpo$cpo midpvalue <- vpit - 0.5*vcpo } } } if (inferenceMethod=="asym") { model <- try(MASS::glm.nb(as.formula(theModel),data=dataGLM), silent=TRUE) if(inherits(model,'try-error')) { return(model=NA) } } return(model) } ################################################################################ # END OF FIT GLM FUNCTION ################################################################################ ################################################################################ # THRESHOLD FUNCTION ################################################################################ bodaDelay.threshold <- function(model, mc.munu,mc.y,alpha, delay,k,control,dataGLM,reportingTriangle, inferenceMethod,verbose=FALSE,observed=observed,...) { if (inferenceMethod=="INLA"){ E <- max(0,mean(dataGLM$response, na.rm=TRUE)) # Sample from the posterior jointSample <- INLA::inla.posterior.sample(mc.munu,model,hyper.user.scale = FALSE) # take variation in size hyperprior into account by also sampling from it theta <- t(sapply(jointSample, function(x) x$hyperpar)) if (delay) { mu_Tt <- numeric(mc.munu) N_Tt <- numeric(mc.munu*mc.y) # Maximal delay + 1 Dmax0 <- ncol(as.matrix(reportingTriangle$n)) # The sum has to be up to min(D,T-t). This is how we find the right indices. loopLimit <- min(Dmax0,which(is.na(as.matrix(reportingTriangle$n)[k,]))-1,na.rm=TRUE) # Find the mu_td and sum for (d in 1:loopLimit) { if (sum(dataGLM$response[dataGLM$delay==(d-1)],na.rm=TRUE)!=0){ mu_Tt <- mu_Tt + exp(t(sapply(jointSample, function(x) x$latent[[nrow(dataGLM)-Dmax0+d]]))) } } N_Tt <- rnbinom(size=theta,mu=E*mu_Tt,n=mc.munu*mc.y) N_Tt <- N_Tt[is.na(N_Tt)==FALSE] qi <- quantile(N_Tt, probs=(1-alpha), type=3, na.rm=TRUE) pi <- 1-sum(N_Tt0) { w <- choose(k,0:k)/2^k for (t in 1:T) { i.sub <- t+(0:k)-k/2 goodIdx <- i.sub %in% 1:T w.sub <- w[goodIdx]/sum(w[goodIdx]) lambda.new[t] <- sum(w.sub * phi.new[i.sub[goodIdx]]) } } else { #no smoothing lambda.new <- phi.new } #Done. return(lambda=lambda.new) } ###################################################################### # STS compatible function to call the non-parametric back-projection # method of Becker et al (1991) for time aggregated data. # # Parameters: # sts - sts object with the observed incidence as "observed" slot # incu.pmf - incubation time pmf as a vector with index 0,..,d_max. Please # note that the support includes zero! # k - smoothing parameter for the EMS algorithm # eps - relative convergence criteration # iter.max - max number of iterations # verbose - boolean, if TRUE provide extra output when running the method # lambda0 - start value for lambda, default: uniform # hookFun - hook function to call after each EMS step, a function # of type hookFun=function(stsj,...) # # Returns: # sts object with upperbound set to the backprojected lambda. ###################################################################### backprojNP.fit <- function(sts, incu.pmf,k=2,eps=1e-5,iter.max=250,verbose=FALSE,lambda0=NULL,eq3a.method=c("R","C"),hookFun=function(stsbp) {}, ...) { #Determine method eq3a.method <- match.arg(eq3a.method, c("R","C")) #Define object to return lambda.hat <- matrix(NA,ncol=ncol(sts),nrow=nrow(sts)) #Loop over all series for (j in 1:ncol(sts)) { #Inform (if requested) what series we are looking at if ((ncol(sts)>1) & verbose) { cat("Backprojecting series no. ",j,"\n") } #Extract incidence time series Y <- observed(sts)[,j] #If default behaviour for lambda0 is desired if (is.null(lambda0)) { lambda0j <- rep(sum(Y)/length(Y),length(Y)) } else { lambda0j <- lambda0[,j] } #Create incubation time distribution vectors for the j'th series inc.pmf <- as.numeric(incu.pmf[,j]) inc.cdf <- cumsum(inc.pmf) #Create wrapper functions for the PMF and CDF based on the vector. #These function will be used in the R version of eq3a. #ToDo: The function uses the global variable inc.pmf which #definitely is dirty coding. How to define this function #in an environment where inc.pmf is present? dincu <- function(x) { notInSupport <- x<0 | x>=length(inc.pmf) #Give index -1 to invalid queries x[notInSupport] <- -1 return(c(0,inc.pmf)[x+2]) } #Cumulative distribution function. Uses global var "inc.cdf" pincu <- function(x) { x[x<0] <- -1 x[x>=length(inc.cdf)] <- length(inc.cdf)-1 return(c(0,inc.cdf)[x+2]) } #Iteration counter and convergence indicator i <- 0 stop <- FALSE lambda <- lambda0j #Loop until stop while (!stop) { #Add to counter i <- i+1 lambda.i <- lambda #Perform one step lambda <- em.step.becker(lambda.old=lambda.i,Y=Y,dincu=dincu,pincu=pincu,k=k, incu.pmf=inc.pmf, eq3a.method=eq3a.method) #check stop #In original paper the expression to do so appears funny since #- and + deviations cancel. More realistic: #criterion <- abs(sum(res$lambda) - sum(lambda.i))/sum(lambda.i) criterion <- sqrt(sum((lambda- lambda.i)^2))/sqrt(sum(lambda.i^2)) if (verbose) { cat("Convergence criterion @ iteration i=",i,": ", criterion,"\n") } #Check whether to stop stop <- criterion < eps | (i>iter.max) #Call hook function stsj <- sts[,j] upperbound(stsj) <- matrix(lambda,ncol=1) hookFun(stsj, ...) } #Done lambda.hat[,j] <- lambda } #Create new object with return put in the lambda slot bp.sts <- as(sts,"stsBP") bp.sts@upperbound <- lambda.hat bp.sts@control <- list(k=k,eps=eps,iter=i) return(bp.sts) } ###################################################################### # EMS back-projection method including bootstrap based confidence # intervals. The theory is indirectly given in Becker and Marschner (1993), # Biometrika, 80(1):165-178 and more specifically in Yip et al, 2011, # Communications in Statistics -- Simulation and Computation, # 37(2):425-433. # # Parameters: # # sts - sts object with the observed incidence as "observed" slot # incu.pmf - incubation time pmf as a vector with index 0,..,d_max. Please # note that the support includes zero! # k - smoothing parameter for the EMS algorithm # eps - relative convergence criteration. If a vector of length two # then the first argument is used for the k=0 initial fit and # the second element for all EMS fits # # iter.max - max number of iterations. Can be a vector of length two. # Similar use as in eps. # verbose - boolean, if TRUE provide extra output when running the method # lambda0 - start value for lambda, default: uniform # hookFun - hook function to call after each EMS step, a function # of type hookFun=function(Y,lambda,...) # B - number of bootstrap replicates. If B=-1 then no bootstrap CIs # are calculated. # # Returns: # sts object with upperbound set to the backprojected lambda. ###################################################################### backprojNP <- function(sts, incu.pmf,control=list(k=2,eps=rep(0.005,2),iter.max=rep(250,2),Tmark=nrow(sts),B=-1,alpha=0.05,verbose=FALSE,lambda0=NULL,eq3a.method=c("R","C"),hookFun=function(stsbp) {}),...) { #Check if backprojection is to be done multivariate time series case. if (ncol(sts)>1) { warning("Multivariate time series: Backprojection uses same eps for the individual time series.") } #Check if incu.pmf vector fits the dimension of the sts object. If not #either replicate it or throw an error. if (is.matrix(incu.pmf)) { if (!ncol(incu.pmf) == ncol(sts)) { stop("Dimensions of sts object and incu.pmf don't match.") } } else { if (ncol(sts)>1) { warning("Backprojection uses same incubation time distribution for the individual time series.") } incu.pmf <- matrix(incu.pmf,ncol=ncol(sts),dimnames=list(NULL,colnames(sts))) } #Fill control object as appropriate and in sync with the default value if (is.null(control[["k",exact=TRUE]])) { control$k <- 2 } if (is.null(control[["eps",exact=TRUE]])) { control$eps <- rep(0.005,2) } if (is.null(control[["iter.max",exact=TRUE]])) { control$iter.max <- rep(250,2) } if (is.null(control[["Tmark",exact=TRUE]])) { control$Tmark <- nrow(sts) } if (is.null(control[["B",exact=TRUE]])) { control$B <- -1 } if (is.null(control[["alpha",exact=TRUE]])) { control$alpha <- 0.05 } if (is.null(control[["verbose",exact=TRUE]])) { control$verbose <- FALSE } if (is.null(control[["lambda0",exact=TRUE]])) { control$lambda0 <- NULL } #Which method to use for computing eq3a if (is.null(control[["eq3a.method",exact=TRUE]])) { control$eq3a.method <- "R" } else { control$eq3a.method <- match.arg(control$eq3a.method,c("R","C")) } #Hook function definition if (is.null(control[["hookFun",exact=TRUE]])) { control$hookFun <- function(Y,lambda,...) {} } #If the eps and iter.max arguments are too short, make them length 2. if (length(control$eps)==1) control$eps <- rep(control$eps,2) if (length(control$iter.max)==1) control$iter.max <- rep(control$iter.max,2) #Compute the estimate to report (i.e. use 2nd component of the args) if (control$verbose) { cat("Back-projecting with k=",control$k," to get lambda estimate.\n") } stsk <- backprojNP.fit(sts, incu.pmf=incu.pmf,k=control$k,eps=control$eps[2],iter.max=control$iter.max[2],verbose=control$verbose,lambda0=control$lambda0,hookFun=control$hookFun,eq3a.method=control$eq3a.method) #Fix control slot stsk@control <- control #If no bootstrap to do return object right away as stsBP object. if (control$B<=0) { if (control$verbose) { cat("No bootstrap CIs calculated as requested.\n") } stsk <- as(stsk,"stsBP") return(stsk) } #Call back-project function without smoothing, i.e. with k=0. if (control$verbose) { cat("Back-projecting with k=",0," to get lambda estimate for parametric bootstrap.\n") } sts0 <- backprojNP.fit(sts, incu.pmf=incu.pmf,k=0,eps=control$eps[1],iter.max=control$iter.max[1],verbose=control$verbose,lambda0=control$lambda0,hookFun=control$hookFun, eq3a.method=control$eq3a.method) ########################################################################### #Create bootstrap samples and loop for each sample while storing the result ########################################################################### sts.boot <- sts0 #Define object to return lambda <- array(NA,dim=c(nrow(sts),ncol(sts),control$B)) #Define PMF of incubation time which does safe handling of values #outside the support of the incubation time. dincu <- function(x,i) { notInSupport <- x<0 | x>=length(incu.pmf[,i]) #Give index -1 to invalid queries x[notInSupport] <- -1 return(c(0,incu.pmf[,i])[x+2]) } #Loop in order to create the sample for (b in 1:control$B) { if (control$verbose) { cat("Bootstrap sample ",b,"/",control$B,"\n") } #Compute convolution for the mean of the observations mu <- matrix(0, nrow=nrow(sts0), ncol=ncol(sts0)) #Perform the convolution for each series for (i in 1:ncol(sts)) { for (t in 1:nrow(mu)) { for (s in 0:(t-1)) { mu[t,i] <- mu[t,i] + upperbound(sts0)[t-s,i] * dincu(s,i) } } } #Create new observations in the observed slot. observed(sts.boot) <- matrix(rpois(prod(dim(sts.boot)),lambda=mu),ncol=ncol(sts0)) #Run the backprojection on the bootstrap sample. Use original result #as starting value. sts.boot <- backprojNP.fit(sts.boot, incu.pmf=incu.pmf,k=control$k,eps=control$eps[2],iter.max=control$iter.max[2],verbose=control$verbose,lambda0=upperbound(stsk),hookFun=control$hookFun, eq3a.method=control$eq3a.method) #Extract the result of the b'th backprojection lambda[,,b] <- upperbound(sts.boot) } #Compute an equal tailed (1-alpha)*100% confidence intervals based on the #bootstrap samples. The dimension is (ci.low,ci.high) x time x series ci <- apply(lambda,MARGIN=c(1,2), quantile, p=c(control$alpha/2,1-control$alpha/2)) #Convert output to stsBP object and add information to the extra slots stsk <- as(stsk,"stsBP") #Add extra slots stsk@ci <- ci stsk@lambda <- lambda stsk@control <- control #Done return(stsk) } surveillance/R/addSeason2formula.R0000644000175100001440000000367612505254341016676 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Conveniently add sine-cosine terms to a model formula ### ### Copyright (C) 2010 Michaela Paul, 2013-2015 Sebastian Meyer ### $Revision: 1299 $ ### $Date: 2015-03-27 14:19:29 +0100 (Fre, 27. Mär 2015) $ ################################################################################ ## for S = 1, 'sin(2*pi * t/period) + cos(2*pi * t/period)' is added to 'f' addSeason2formula <- function ( f = ~1, # formula to enhance S = 1, # number of sine/cosine pairs period = 52, # periodicity of the sinusoidal wave timevar = "t" # name of the time variable ){ ## check arguments stopifnot(inherits(f, "formula"), is.vector(S, mode = "numeric"), S >= 0, isScalar(period)) ## return unchanged formula if S = 0 if (max(S) == 0) return(f) ## character representation of old formula ftext <- paste0(deparse(f), collapse = "") ## add sine-cosine terms if (length(S) == 1L) { for (i in seq_len(S)) { ftext <- paste0(ftext, " + sin(", 2*i, "*pi*", timevar, "/", period, ")", " + cos(", 2*i, "*pi*", timevar, "/", period, ")") } } else { ## unit-specific seasonality for hhh4() via the special fe() function for (i in seq_len(max(S))) { which <- paste0(i <= S, collapse = ",") ftext <- paste0(ftext, " + fe(sin(",2*i,"*pi*",timevar,"/",period,"), which=c(",which,"))", " + fe(cos(",2*i,"*pi*",timevar,"/",period,"), which=c(",which,"))") } } ## convert back to a formula as.formula(ftext, env = .GlobalEnv) } surveillance/R/stsplot_time.R0000644000175100001440000003576312611413076016055 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Time series plot for sts-objects ### ### Copyright (C) 2007-2014 Michael Hoehle, 2013-2015 Sebastian Meyer ### $Revision: 1499 $ ### $Date: 2015-10-20 12:23:58 +0200 (Die, 20. Okt 2015) $ ################################################################################ ###################################################################### # stsplot_time sets the scene and calls stsplot_time1 for each unit ###################################################################### stsplot_time <- function(x, units = NULL, method=x@control$name, disease=x@control$data, as.one=FALSE, same.scale=TRUE, par.list=list(), ...) { #Extract observed <- x@observed population <- x@populationFrac binaryTS <- x@multinomialTS if (is.null(units)) # plot all units units <- seq_len(ncol(observed)) nUnits <- length(units) #graphical parameters if (is.list(par.list)) { if (nUnits > 1 && !as.one) { par.list <- modifyList( #default: reduced margins and mfrow panels list(mar = c(5,4,1,1), mfrow = magic.dim(nUnits)), par.list) } else { par.list$mfrow <- NULL #no mf formatting.. } oldpar <- par(par.list) on.exit(par(oldpar)) } #multivariate time series if(nUnits > 1){ if(as.one) { # all areas in one plot stop("this type of plot is currently not implemented") } else { #All plots on same scale? If yes, then check if a scale #is already specified using the ylim argument args <- list(...) if(same.scale) { if (is.null(args$ylim)) { max <- if (binaryTS) { max(ifelse(population == 0, 0, pmax(observed,x@upperbound,na.rm=TRUE)/population)) } else max(observed,x@upperbound,na.rm=TRUE) args$ylim <- c(-1/20*max, max) } } else { args$ylim <- NULL } #plot areas for (k in units) { argsK <- modifyList(args, list(x=x, k=k, main="", legend.opts=NULL), keep.null = TRUE) do.call("stsplot_time1",args=argsK) title(main=if (is.character(k)) k else colnames(observed)[k], line=-1) } } } else { #univariate time series stsplot_time1(x=x, k=units, ...) } invisible() } ### work-horse which produces the time series plot with formatted x-axis stsplot_time1 <- function( x, k=1, ylim=NULL, axes=TRUE, xaxis.tickFreq=list("%Q"=atChange), xaxis.labelFreq=xaxis.tickFreq, xaxis.labelFormat="%G\n\n%OQ", epochsAsDate=x@epochAsDate, xlab="time", ylab="No. infected", main=NULL, type="s", lty=c(1,1,2), col=c(NA,1,4), lwd=c(1,1,1), outbreak.symbol=list(pch=3, col=3, cex=1, lwd=1), alarm.symbol=list(pch=24, col=2, cex=1, lwd=1), legend.opts=list(), dx.upperbound=0L, hookFunc=function(){}, .hookFuncInheritance=function() {}, ...) { #Extract slots -- depending on the algorithms: x@control$range observed <- x@observed[,k] state <- x@state[,k] alarm <- x@alarm[,k] upperbound <- x@upperbound[,k] hasAlarm <- all(!is.na(alarm)) method <- x@control$name disease <- x@control$data population <- x@populationFrac[,k] binaryTS <- x@multinomialTS #Control what axis style is used xaxis.dates <- !is.null(xaxis.labelFormat) if (binaryTS) { observed <- ifelse(population!=0,observed/population,0) upperbound <- ifelse(population!=0,upperbound/population,0) if (ylab == "No. infected") { ylab <- "Proportion infected" } } ##### Handle the NULL arguments ###################################### if (is.null(main)) { #If no surveillance algorithm has been run if (length(x@control) != 0) { # main = paste("Surveillance using ", as.character(method),sep="") action = switch(class(x), "sts"="surveillance","stsNC"="nowcasting","stsBP"="backprojection") main = paste(action," using ", as.character(method),sep="") } } # control where the highest value is max <- max(c(observed,upperbound),na.rm=TRUE) #if ylim is not specified, give it a default value if(is.null(ylim) ){ ylim <- c(-1/20*max, max) } # left/right help for constructing the columns dx.observed <- 0.5 upperboundx <- (1:length(upperbound)) - (dx.observed - dx.upperbound) #Generate the matrices to plot (values,last value) xstuff <- cbind(c(upperboundx,length(observed) + min(1-(dx.observed - dx.upperbound),0.5))) ystuff <-cbind(c(upperbound,upperbound[length(observed) ])) #Plot the results matplot(x=xstuff,y=ystuff,xlab=xlab,ylab=ylab,main=main,ylim=ylim,axes = !(xaxis.dates),type=type,lty=lty[-c(1:2)],col=col[-c(1:2)],lwd=lwd[-c(1:2)],...) #This draws the polygons containing the number of counts (sep. by NA) i <- rep(1:length(observed),each=5) dx <- rep(dx.observed * c(-1,-1,1,1,NA), times=length(observed)) x.points <- i + dx y.points <- as.vector(t(cbind(0, observed, observed, 0, NA))) polygon(x.points,y.points,col=col[1],border=col[2],lwd=lwd[1]) #Draw upper bound once more in case the polygons are filled if (!is.na(col[1])) { lines(x=xstuff,y=ystuff,type=type,lty=lty[-c(1:2)],col=col[-c(1:2)],lwd=lwd[-c(1:2)],...) } #Draw outbreak symbols alarmIdx <- which(!is.na(alarm) & (alarm == 1)) if (length(alarmIdx)>0) { matpoints( alarmIdx, rep(-1/40*ylim[2],length(alarmIdx)), pch=alarm.symbol$pch, col=alarm.symbol$col, cex= alarm.symbol$cex, lwd=alarm.symbol$lwd) } #Draw alarm symbols stateIdx <- which(state == 1) if (length(stateIdx)>0) { matpoints( stateIdx, rep(-1/20*ylim[2],length(stateIdx)), pch=outbreak.symbol$pch, col=outbreak.symbol$col,cex = outbreak.symbol$cex,lwd=outbreak.symbol$lwd) } #Label x-axis if(xaxis.dates & axes) { addFormattedXAxis(x = x, epochsAsDate = epochsAsDate, xaxis.tickFreq = xaxis.tickFreq, xaxis.labelFreq = xaxis.labelFreq, xaxis.labelFormat = xaxis.labelFormat, ...) } #Label y-axis if (axes) { axis( side=2 ,...)#cex=cex, cex.axis=cex.axis) } doLegend <- if (missing(legend.opts)) { length(stateIdx) + length(alarmIdx) > 0 || any(upperbound > 0, na.rm = TRUE) } else { is.list(legend.opts) } if(doLegend) { legend.opts <- modifyList( list(x = "top", lty = c(lty[1],lty[3],NA,NA), col = c(col[2],col[3],outbreak.symbol$col,alarm.symbol$col), pch = c(NA,NA,outbreak.symbol$pch,alarm.symbol$pch), legend = c("Infected", "Threshold", "Outbreak", "Alarm")), legend.opts) #Make the legend do.call("legend",legend.opts) } #Call hook function for user customized action using the current environment environment(hookFunc) <- environment() hookFunc() #Extra hook functions for inheritance plotting (see e.g. plot function of stsNC objects) environment(.hookFuncInheritance) <- environment() .hookFuncInheritance() invisible() } ############## ### alarm plot ############## stsplot_alarm <- function( x, lvl=rep(1,nrow(x)), ylim=NULL, xaxis.tickFreq=list("%Q"=atChange), xaxis.labelFreq=xaxis.tickFreq, xaxis.labelFormat="%G\n\n%OQ", epochsAsDate=x@epochAsDate, xlab="time", main=NULL, type="hhs", lty=c(1,1,2), col=c(1,1,4), outbreak.symbol=list(pch=3, col=3, cex=1, lwd=1), alarm.symbol=list(pch=24, col=2, cex=1, lwd=1), cex=1, cex.yaxis=1, ...) { k <- 1 #Extract slots -- depending on the algorithms: x@control$range observed <- x@observed[,k] state <- x@state[,k] alarm <- x@alarm[,k] upperbound <- x@upperbound[,k] hasAlarm <- all(!is.na(alarm)) method <- x@control$name disease <- x@control$data ylim <- c(0.5, ncol(x)) ##### Handle the NULL arguments ###################################### if (is.null(main)) { #If no surveillance algorithm has been run if (length(x@control) != 0) { # main = paste("Analysis of ", as.character(disease), " using ", main = paste("Surveillance using ", as.character(method),sep="") } } #Control what axis style is used xaxis.dates <- !is.null(xaxis.labelFormat) # left/right help for constructing the columns dx.observed <- 0.5 observedxl <- (1:length(observed))-dx.observed observedxr <- (1:length(observed))+dx.observed upperboundx <- (1:length(upperbound)) #-0.5 # control where the highest value is max <- max(c(observed,upperbound),na.rm=TRUE) #if ylim is not specified if(is.null(ylim)){ ylim <- c(-1/20*max, max) } #Generate the matrices to plot xstuff <- cbind(observedxl, observedxr, upperboundx) ystuff <-cbind(observed, observed, upperbound) #Plot the results using one Large plot call (we do this by modifying #the call). Move this into a special function! matplot(x=xstuff,y=ystuff,xlab=xlab,ylab="",main=main,ylim=ylim,axes = FALSE,type="n",lty=lty,col=col,...) #Label of x-axis if(xaxis.dates){ addFormattedXAxis(x = x, epochsAsDate = epochsAsDate, xaxis.tickFreq = xaxis.tickFreq, xaxis.labelFreq = xaxis.labelFreq, xaxis.labelFormat = xaxis.labelFormat, ...) } axis( side=2, at=1:ncol(x),cex.axis=cex.yaxis, labels=colnames(x),las=2) #Draw all alarms for (i in 1:nrow(x)) { idx <- (1:ncol(x))[x@alarm[i,] > 0] for (j in idx) { points(i,j,pch=alarm.symbol$pch,col=alarm.symbol$col[lvl[j]],cex=alarm.symbol$cex,lwd=alarm.symbol$lwd) } } #Draw lines seperating the levels m <- c(-0.5,cumsum(as.numeric(table(lvl)))) sapply(m, function(i) lines(c(0.5,nrow(x@alarm)+0.5),c(i+0.5,i+0.5),lwd=2)) invisible() } ##################################### ### Utilities to set up the time axis ##################################### #Every unit change atChange <- function(x,xm1) { which(diff(c(xm1,x)) != 0) } #Median index of factor atMedian <- function(x,xm1) { as.integer(tapply(seq_along(x), INDEX=x, quantile, prob=0.5,type=3)) } #Only every second unit change at2ndChange <- function(x,xm1) { idxAtChange <- atChange(x,xm1) idxAtChange[seq(idxAtChange) %% 2 == 1] } #Helper function to format the x-axis of the time series addFormattedXAxis <- function(x, epochsAsDate = FALSE, xaxis.tickFreq = list("%Q"=atChange), xaxis.labelFreq = xaxis.tickFreq, xaxis.labelFormat = "%G\n\n%OQ", ...) { #Old style if there are no Date objects if (!epochsAsDate) { #Declare commonly used variables. nTime <- nrow(x) startyear <- x@start[1] firstweek <- x@start[2] if (x@freq ==52) { #Weekly epochs are the most supported # At which indices to put the "at" tick label. This will # be exactly those week numbers where the new quarter begins: 1, 14, 27 and 40 + i*52. # Note that week number and index is not the same due to the "firstweek" argument weeks <- seq_len(nTime) + (firstweek-1) noYears <- ceiling(max(weeks)/52) quarterStarts <- rep( (0:(noYears))*52, each=4) + rep( c(1,14,27,40), noYears+1) weeks <- subset(weeks, !is.na(match(weeks,quarterStarts))) weekIdx <- weeks - (firstweek-1) # get the right year for each week year <- weeks %/% 52 + startyear # function to define the quarter order quarterFunc <- function(i) { switch(i+1,"I","II","III","IV") } #nicer:as.roman, but changes class. # get the right number and order of quarter labels quarter <- sapply( (weeks-1) %/% 13 %% 4, quarterFunc) #Computed axis labels -- add quarters (this is the old style) labels.week <- paste(year,"\n\n",quarter,sep="") #Make the line. Use lwd.ticks to get full line but no marks. axis( side=1,labels=FALSE,at=c(1,nTime),lwd.ticks=0,line=1,...) axis( at=weekIdx[which(quarter != "I")] , labels=labels.week[which(quarter != "I")] , side=1, line = 1 ,...) #Bigger tick marks at the first quarter (i.e. change of the year) at <- weekIdx[which(quarter == "I")] axis( at=at, labels=rep(NA,length(at)), side=1, line = 1 ,tcl=2*par("tcl")) } else { ##other frequency (not really supported) #A label at each unit myat.unit <- seq(firstweek,length.out=nTime) # get the right year order month <- (myat.unit-1) %% x@freq + 1 year <- (myat.unit - 1) %/% x@freq + startyear #construct the computed axis labels -- add quarters if xaxis.units is requested mylabels.unit <- paste(year,"\n\n", (myat.unit-1) %% x@freq + 1,sep="") #Add axis axis( at=seq_len(nTime), labels=NA, side=1, line = 1, ...) axis( at=seq_len(nTime)[month==1], labels=mylabels.unit[month==1] , side=1, line = 1 ,...) #Bigger tick marks at the first unit at <- seq_len(nTime)[(myat.unit - 1) %% x@freq == 0] axis( at=at, labels=rep(NA,length(at)), side=1, line = 1 ,tcl=2*par("tcl")) } } else { ################################################################ #epochAsDate -- experimental functionality to handle ISO 8601 ################################################################ dates <- epoch(x, as.Date = TRUE) #make one which has one extra element at beginning with same spacing datesOneBefore <- c(dates[1]-(dates[2]-dates[1]),dates) #Make the line. Use lwd.ticks to get full line but no marks. axis( side=1,labels=FALSE,at=c(1,length(dates)),lwd.ticks=0,...) ###Make the ticks (depending on the selected level).### tcl <- par("tcl") tickFactors <- surveillance.options("stsTickFactors") #Loop over all pairs in the xaxis.tickFreq list for (i in seq_along(xaxis.tickFreq)) { format <- names(xaxis.tickFreq)[i] xm1x <- as.numeric(formatDate(datesOneBefore,format)) idx <- xaxis.tickFreq[[i]](x=xm1x[-1],xm1=xm1x[1]) #Find tick size by table lookup tclFactor <- tickFactors[pmatch(format, names(tickFactors))] if (is.na(tclFactor)) { warning("no \"tcl\" factor found for \"", format ,"\" -> setting it to 1") tclFactor <- 1 } axis(1,at=idx, labels=NA,tcl=tclFactor*tcl,...) } ###Make the labels (depending on the selected level)### if (!is.null(xaxis.labelFormat)) { labelIdx <- NULL for (i in seq_along(xaxis.labelFreq)) { format <- names(xaxis.labelFreq)[i] xm1x <- as.numeric(formatDate(datesOneBefore,format)) labelIdx <- c(labelIdx,xaxis.labelFreq[[i]](x=xm1x[-1],xm1=xm1x[1])) } #Format labels (if any) for the requested subset if (length(labelIdx)>0) { labels <- rep(NA,nrow(x)) labels[labelIdx] <- formatDate(dates[labelIdx],xaxis.labelFormat) axis(1,at=1:nrow(x), labels=labels,tick=FALSE,...) } } }#end epochAsDate #Done invisible() } surveillance/R/epidataCS_methods.R0000644000175100001440000003304712504272053016677 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Standard S3-methods for "epidataCS" objects, which represent ### CONTINUOUS SPATIO-temporal infectious disease case data ### ### Copyright (C) 2009-2015 Sebastian Meyer ### $Revision: 1285 $ ### $Date: 2015-03-24 15:26:51 +0100 (Die, 24. Mär 2015) $ ################################################################################ ### Number of events nobs.epidataCS <- function (object, ...) length(object$events) ### UPDATE eps.s, eps.t, qmatrix OR nCircle2Poly IN AN EXISTING epidataCS OBJECT # all arguments but 'object' are optional, the ... argument is unused update.epidataCS <- function (object, eps.t, eps.s, qmatrix, nCircle2Poly, ...) { nEvents <- nobs(object) # Check and update eps.t if (!missing(eps.t)) { stopifnot(is.numeric(eps.t), eps.t > 0) object$events$eps.t <- eps.t } # Initialise indicator of which influenceRegions to update ir2update <- logical(nEvents) # all FALSE # Check and update eps.s if (!missing(eps.s)) { stopifnot(is.numeric(eps.s), eps.s > 0) oldeps.s <- object$events$eps.s object$events$eps.s <- eps.s ir2update <- oldeps.s != object$events$eps.s } # Check nCircle2Poly nCircle2Poly <- if (missing(nCircle2Poly)) { attr(object$events$.influenceRegion, "nCircle2Poly") } else { stopifnot(isScalar(nCircle2Poly)) ir2update <- rep.int(TRUE, nEvents) as.integer(nCircle2Poly) } # Update influenceRegions of events if (any(ir2update)) { clipper <- attr(object$events$.influenceRegion, "clipper") if (is.null(clipper)) # epidataCS < 1.8-1 clipper <- "polyclip" object$events$.influenceRegion[ir2update] <- .influenceRegions(object$events[ir2update,], object$W, nCircle2Poly, clipper = clipper) attr(object$events$.influenceRegion, "nCircle2Poly") <- nCircle2Poly } # Check qmatrix if (!missing(qmatrix)) object$qmatrix <- checkQ(qmatrix, levels(object$events$type)) #hoehle @ 16 Apr 2011 - bug fix. .obsInfLength was not handled # Update length of infection time, i.e. length = min(T-time, eps.t) if (!missing(eps.t)) { timeRange <- with(object$stgrid, c(start[1], stop[length(stop)])) object$events$.obsInfLength <- with(object$events@data, pmin(timeRange[2]-time, eps.t)) } # Update .sources if (!missing(eps.t) || !missing(eps.s) || !missing(qmatrix)) { object$events$.sources <- determineSources.epidataCS(object) } # Done update. return(object) } ### subsetting epidataCS, i.e. select only part of the events, ### but retain stgrid and W. If any event types disappear due to subsetting, ### these types will be dropped from the factor levels and from qmatrix "[.epidataCS" <- function (x, i, j, ..., drop = TRUE) { ## rescue attributes of .influenceRegion (dropped when indexing) iRattr <- attributes(x$events$.influenceRegion) ## apply [,SpatialPointsDataFrame-method (where "drop" is ignored) cl <- sys.call() cl[[1]] <- as.name("[") cl[[2]] <- substitute(x$events) x$events <- eval(cl, envir=parent.frame()) ## assure valid epidataCS after subsetting if (!missing(j)) { # only epidemic covariates may be selected endemicVars <- setdiff(names(x$stgrid), c( reservedColsNames_stgrid, obligColsNames_stgrid)) if (!all(c(reservedColsNames_events, obligColsNames_events, endemicVars) %in% names(x$events))) { stop("only epidemic covariates may be removed from 'events'") } } if (!missing(i)) { ## update .sources x$events$.sources <- determineSources.epidataCS(x) if (drop) { ## update type levels and qmatrix (a type could have disappeared) x$events$type <- x$events$type[drop=TRUE] typeNames <- levels(x$events$type) if (!identical(rownames(x$qmatrix), typeNames)) { message("Note: dropped type(s) ", paste0("\"", setdiff(rownames(x$qmatrix), typeNames), "\"", collapse = ", ")) x$qmatrix <- checkQ(x$qmatrix, typeNames) } } } ## restore attributes of .influenceRegion attributes(x$events$.influenceRegion) <- iRattr ## done return(x) } ## The subset method for epidataCS-objects is adapted from ## base::subset.data.frame (authored by Peter ## Dalgaard and Brian Ripley, Copyright (C) 1995-2012 ## The R Core Team) with slight modifications only ## (we just replace 'x' by 'x$events@data' for evaluation of subset and select) subset.epidataCS <- function (x, subset, select, drop = TRUE, ...) { if (missing(subset)) r <- TRUE else { e <- substitute(subset) r <- eval(e, x$events@data, parent.frame()) # HERE IS A MOD if (!is.logical(r)) stop("'subset' must evaluate to logical") r <- r & !is.na(r) } if (missing(select)) vars <- TRUE else { nl <- as.list(seq_along(x$events@data)) # HERE IS A MOD names(nl) <- names(x$events@data) # HERE IS A MOD vars <- eval(substitute(select), nl, parent.frame()) } x[r, vars, drop = drop] # this calls the [.epidataCS-method from above } ## Subset epidataCS object using head and tail methods (which use [.epidataCS) head.epidataCS <- function (x, n = 6L, ...) head.matrix(x, n = n, ...) tail.epidataCS <- function (x, n = 6L, ...) { # ugly hack for tail.matrix because I don't want to register a # dim-method for class "epidataCS" nrow <- function (x) base::nrow(x$events) my.tail.matrix <- tail.matrix environment(my.tail.matrix) <- environment() ##<- such that the function uses my local nrow definition my.tail.matrix(x, n = n, addrownums=FALSE, ...) } ### extract marks of the events (actually also including time and tile) idxNonMarks <- function (x) { endemicCovars <- setdiff(names(x$stgrid), c( reservedColsNames_stgrid, obligColsNames_stgrid)) match(c(reservedColsNames_events, endemicCovars), names(x$events@data)) } marks.epidataCS <- function (x, coords = TRUE, ...) { if (coords) { # append coords (cp. as.data.frame.SpatialPointsDataFrame) data.frame(x$events@data[-idxNonMarks(x)], x$events@coords) } else { # return marks without coordinates x$events@data[-idxNonMarks(x)] } } ### permute event times and/or locations holding remaining columns fixed permute.epidataCS <- function (x, what = c("time", "space"), keep) { stopifnot(inherits(x, "epidataCS")) what <- match.arg(what) ## permutation index perm <- if (missing(keep)) { sample.int(nobs.epidataCS(x)) } else { # some events should not be relabeled keep <- eval(substitute(keep), envir = x$events@data, enclos = parent.frame()) stopifnot(is.logical(keep), !is.na(keep)) which2permute <- which(!keep) howmany2permute <- length(which2permute) if (howmany2permute < 2L) { message("Note: data unchanged ('keep' all)") return(x) } perm <- seq_len(nobs.epidataCS(x)) perm[which2permute] <- which2permute[sample.int(howmany2permute)] perm } ## rescue attributes of .influenceRegion (dropped when indexing) iRattr <- attributes(x$events@data$.influenceRegion) ## permute time points and/or locations PERMVARS <- if (what == "time") { c("time", "BLOCK", "start", ".obsInfLength") } else { x$events@coords <- x$events@coords[perm,,drop=FALSE] c("tile", ".bdist", ".influenceRegion") } x$events@data[PERMVARS] <- x$events@data[perm, PERMVARS] ## re-sort on time if necessary if (what == "time") { x$events <- x$events[order(x$events@data$time), ] } ## .sources and endemic variables need an update x$events@data$.sources <- determineSources.epidataCS(x) ENDVARS <- setdiff(names(x$stgrid), c(reservedColsNames_stgrid, obligColsNames_stgrid)) gridcellsOfEvents <- match( do.call("paste", c(x$events@data[c("BLOCK", "tile")], sep = "\r")), do.call("paste", c(x$stgrid[c("BLOCK", "tile")], sep = "\r")) ) x$events@data[ENDVARS] <- x$stgrid[gridcellsOfEvents, ENDVARS] ## restore attributes of .influenceRegion attributes(x$events@data$.influenceRegion) <- iRattr ## done x } ### printing methods print.epidataCS <- function (x, n = 6L, digits = getOption("digits"), ...) { print.epidataCS_header( timeRange = c(x$stgrid$start[1L], x$stgrid$stop[nrow(x$stgrid)]), bbox = bbox(x$W), nBlocks = length(unique(x$stgrid$BLOCK)), nTiles = nlevels(x$stgrid$tile), digits = digits ) cat("Types of events: ") str(levels(x$events$type), give.attr = FALSE, give.head = FALSE, width = getOption("width") - 17L) cat("Overall number of events:", nEvents <- nobs(x), "\n\n") visibleCols <- grep("^\\..+", names(x$events@data), invert = TRUE) if (nEvents == 0L) { # not handled by [,SpatialPointsDataFrame-method # and thus actually not supported by "epidataCS" ## display header only print(data.frame(coordinates = character(0L), x$events@data[visibleCols])) } else { ## 2014-03-24: since sp 1.0-15, print.SpatialPointsDataFrame() ## appropriately passes its "digits" argument to print.data.frame() print(head.matrix(x$events[visibleCols], n = n), digits = digits, ...) if (n < nEvents) cat("[....]\n") } invisible(x) } print.epidataCS_header <- function (timeRange, bbox, nBlocks, nTiles, digits = getOption("digits")) { bboxtxt <- paste( apply(bbox, 1, function (int) paste0( "[", paste(format(int, trim=TRUE, digits=digits), collapse=", "), "]" )), collapse = " x ") cat("Observation period:", paste(format(timeRange, trim=TRUE, digits=digits), collapse = " - "), "\n") cat("Observation window (bounding box):", bboxtxt, "\n") cat("Spatio-temporal grid (not shown):", nBlocks, ngettext(nBlocks, "time block,", "time blocks"), "x", nTiles, ngettext(nTiles, "tile", "tiles"), "\n") } ### SUMMARY # the epidemic is summarized by the following returned components: # timeRange, nEvents, eventTimes, eventCoords, nSources, as well as # - tile/typetable: number of events per tile/type # - counter: number of infective individuals as stepfun summary.epidataCS <- function (object, ...) { res <- list( timeRange = with(object$stgrid, c(start[1], stop[length(stop)])), bbox = bbox(object$W), nBlocks = length(unique(object$stgrid$BLOCK)), nEvents = nobs(object), nTypes = nlevels(object$events$type), eventTimes = object$events$time, eventCoords = coordinates(object$events), eventTypes = object$events$type, eventRanges = object$events@data[c("eps.t", "eps.s")], eventMarks = marks.epidataCS(object), tileTable = c(table(object$events$tile)), typeTable = c(table(object$events$type)), counter = as.stepfun.epidataCS(object), nSources = sapply(object$events$.sources, length) ) class(res) <- "summary.epidataCS" res } print.summary.epidataCS <- function (x, ...) { print.epidataCS_header(timeRange = x$timeRange, bbox = x$bbox, nBlocks = x$nBlocks, nTiles = length(x$tileTable)) cat("Overall number of events:", x$nEvents, if (x$nTypes==1) "(single type)" else paste0("(",x$nTypes," types)"), "\n") cat("\nSummary of event marks and number of potential sources:\n") print(summary(cbind(x$eventMarks, "|.sources|"=x$nSources)), ...) invisible(x) } as.stepfun.epidataCS <- function (x, ...) { eventTimes <- x$events$time removalTimes <- eventTimes + x$events$eps.t tps <- sort(unique(c(eventTimes, removalTimes[is.finite(removalTimes)]))) nInfectious <- sapply(tps, function(t) sum(eventTimes <= t & removalTimes > t)) stepfun(tps, c(0,nInfectious), right = TRUE) # no ties, 'tps' is unique } ################################################### ### Distances from potential (eps.s, eps.t) sources ################################################### getSourceDists <- function (object, dimension = c("space", "time")) { dimension <- match.arg(dimension) ## extract required info from "epidataCS"-object distmat <- as.matrix(dist( if (dimension == "space") { coordinates(object$events) } else object$events$time )) .sources <- object$events$.sources ## number of sources nsources <- sapply(.sources, length) hasSources <- nsources > 0 cnsources <- c(0, cumsum(nsources)) ## generate vector of distances of events to their potential sources sourcedists <- numeric(sum(nsources)) for (i in which(hasSources)) { .sourcesi <- .sources[[i]] .sourcedists <- distmat[i, .sourcesi] .idx <- cnsources[i] + seq_len(nsources[i]) sourcedists[.idx] <- .sourcedists names(sourcedists)[.idx] <- paste(i, .sourcesi, sep="<-") } ## Done sourcedists } surveillance/R/knox.R0000644000175100001440000001240012532032517014264 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Knox test for space-time interaction ### ### Copyright (C) 2015 Sebastian Meyer ### $Revision: 1347 $ ### $Date: 2015-05-29 11:45:51 +0200 (Fre, 29. Mai 2015) $ ################################################################################ knox <- function (dt, ds, eps.t, eps.s, simulate.p.value = TRUE, B = 999, ...) { stopifnot(length(dt) == length(ds)) ## logical vectors indicating which pairs are close in time and space closeInTime <- if (is.logical(dt)) { dt } else { stopifnot(is.numeric(dt), isScalar(eps.t)) dt <= eps.t } closeInSpace <- if (is.logical(ds)) { ds } else { stopifnot(is.numeric(ds), isScalar(eps.s)) ds <= eps.s } ## manually build the contingency table (table() with factor() is too slow) .lab <- c("close", "not close") knoxtab <- array( tabulate(4L - closeInTime - 2L*closeInSpace, nbins = 4L), dim = c(2L, 2L), dimnames = list( dt = if (is.logical(dt)) .lab else paste(c("<=", " >"), eps.t), ds = if (is.logical(ds)) .lab else paste(c("<=", " >"), eps.s) )) class(knoxtab) <- "table" ## expected number of close pairs in the absence of spatio-temporal interaction npairs <- sum(knoxtab) expected <- sum(knoxtab[1L,]) / npairs * sum(knoxtab[,1L]) ##<- this order of terms avoids integer overflow ## test statistic is the number of spatio-temporally close pairs METHOD <- "Knox test" STATISTIC <- knoxtab[1L] ## determine statistical significance pval_Poisson <- ppois(STATISTIC, expected, lower.tail = FALSE) PVAL <- if (simulate.p.value) { # Monte Carlo permutation approach stopifnot(isScalar(B)) B <- as.integer(B) METHOD <- paste(METHOD, "with simulated p-value") PARAMETER <- setNames(B, "B") permstats <- plapply(X = integer(B), FUN = function (...) sum(closeInSpace & closeInTime[sample.int(npairs)]), ...) structure(mean(c(STATISTIC, permstats, recursive = TRUE) >= STATISTIC), Poisson = pval_Poisson) } else { METHOD <- paste(METHOD, "with Poisson approximation") PARAMETER <- setNames(expected, "lambda") pval_Poisson } ## return test results structure( list(method = METHOD, data.name = paste("dt =", deparse(substitute(dt)), "and ds =", deparse(substitute(ds))), statistic = setNames(STATISTIC, "number of close pairs"), parameter = PARAMETER, p.value = PVAL, alternative = "greater", null.value = setNames(expected, "number"), permstats = if (simulate.p.value) { unlist(permstats, recursive = FALSE, use.names = FALSE) }, table = knoxtab), class = c("knox", "htest") ) } print.knox <- function (x, ...) { ## first print by the default method for class "htest" NextMethod("print") ## then also output the contingency table cat("contingency table:\n") print(x$table) cat("\n") invisible(x) } plot.knox <- function (x, ...) { if (is.null(permstats <- x[["permstats"]])) { stop("this plot-method is for a permutation-based Knox test") } defaultArgs <- list( permstats = permstats, xmarks = setNames(c(x[["null.value"]], x[["statistic"]]), c("expected", "observed")), xlab = "number of close pairs" ) do.call("permtestplot", modifyList(defaultArgs, list(...))) } xtable.knox <- function (x, caption = NULL, label = NULL, align = paste0("r|rr", if (!is.null(sumlabel)) "|r"), digits = 0, display = NULL, ..., sumlabel = "$\\sum$") { tab <- x$table if (!is.null(sumlabel)) { FUN <- setNames(list(sum), sumlabel) tab <- addmargins(tab, FUN = FUN, quiet = TRUE) } xtable(tab, caption = caption, label = label, align = align, digits = digits, display = display, ...) } toLatex.knox <- function (object, dnn = names(dimnames(object$table)), hline.after = NULL, sanitize.text.function = NULL, ...) { xtab <- xtable(object, ...) if (is.null(hline.after)) hline.after <- unique(c(-1,0,2,nrow(xtab))) if (is.null(sanitize.text.function)) sanitize.text.function <- function (x) gsub("<=", "$\\le$", gsub(">", "$>$", x, fixed = TRUE), fixed = TRUE) res <- toLatex.xtable(xtab, hline.after = hline.after, sanitize.text.function = sanitize.text.function, ...) if (is.null(dnn)) { res } else { stopifnot(length(dnn) == 2) headeridx <- grep("&", res, fixed = TRUE)[1L] res[headeridx] <- paste0(dnn[1L], res[headeridx]) res <- append(res, paste0(" & \\multicolumn{2}{|c|}{", dnn[2L], "} & \\\\"), after = headeridx - 1L) class(res) <- "Latex" res } } surveillance/R/intersectPolyCircle.R0000644000175100001440000000404612455232124017302 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Compute the intersection of a circular domain with a polygonal domain of ### various classes (currently: owin, gpc.poly, or SpatialPolygons) ### ### Copyright (C) 2009-2015 Sebastian Meyer ### $Revision: 1169 $ ### $Date: 2015-01-13 16:05:56 +0100 (Die, 13. Jan 2015) $ ################################################################################ intersectPolyCircle.gpc.poly <- function (object, center, radius, npoly = 32, useGEOS = FALSE, ...) { if (useGEOS) { loadNamespace("rgeos") # coerce gpc.poly to SpatialPolygons res <- intersectPolyCircle.SpatialPolygons(as(object, "SpatialPolygons"), center, radius, npoly) as(res, "gpc.poly") # also defined in rgeos } else { gpclibCheck() circle <- discpoly(center, radius, npoly = npoly, class = "gpc.poly") gpclib::intersect(circle, object) # this order seems to be faster } } intersectPolyCircle.owin <- function (object, center, radius, npoly = 32, ...) { circle <- disc(radius = radius, centre = center, npoly = npoly) res <- intersect.owin(circle, object) # order does not affect runtime ## ensure "polygonal" type (because of rescue.rectangle in intersect.owin) as.polygonal(res) } intersectPolyCircle.SpatialPolygons <- function (object, center, radius, npoly = 32, ...) { circle <- discpoly(center, radius, npoly = npoly, class = "Polygon") circleSpP <- SpatialPolygons(list(Polygons(list(circle), "0"))) ## ensure that circleSpP has exactly the same proj4string as 'object' circleSpP@proj4string <- object@proj4string rgeos::gIntersection(circleSpP, object) } surveillance/R/algo_outbreakP.R0000644000175100001440000001316512564314555016266 0ustar hornikusers################################################### ### chunk number 1: ################################################### ###################################################################### # Workhorse computing the OutbreakP statistic. # Alarm statistic at end time n is returned. # # Author: # Michael Hoehle # # R port of the Java code by Marianne Frisen & Linus Schioler from # the CASE project. See https://smisvn.smi.se/case/ # # For a manual on how to use the method see also # http://www.hgu.gu.se/item.aspx?id=16857 # # Date: # 25 May 2010 # # Parameters: # x -- the series with the counts # # Returns: # value of the alarm statistic at the end of the series x. ###################################################################### calc.outbreakP.statistic <- function(x) { #Length of the monitored series n <- length(x) #Index problem when converting java arrays to R arrays x <- c(0,x) #Initialization (not all parts might be needed) leftl <- numeric(n+1); y <- numeric(n+1); yhat <- numeric(n+1); sumwy <- numeric(n+1); sumwys <- numeric(n+1); sumw <- numeric(n+1); w <- numeric(n+1); meanl <- numeric(n+1); xbar <- 0 meanl[1] = -Inf leftl[1] = 0 for (i in 1:n) { #Initialize yhat[i+1] <- x[i+1]; sumwy[i+1] <- x[i+1]; sumw[i+1] <- 1; meanl[i+1] <- x[i+1]; leftl[i+1] <- i; #Calculate mean (this is a sequential formula to calculate mean(x[1:i])) xbar=xbar+(x[i+1]-xbar)/i #Create plateaus while (meanl[i+1] <= meanl[ (leftl[i+1] - 1) + 1]) { #merge sets sumwy[i+1] = sumwy[i+1] + sumwy[(leftl[i+1] - 1)+1]; sumw[i+1] = sumw[i+1] + sumw[(leftl[i+1] - 1)+1]; meanl[i+1] = sumwy[i+1] / sumw[i+1]; leftl[i+1] = leftl[(leftl[i+1] - 1)+1]; } #calculate yhat for (j in leftl[i+1]:i) { yhat[j+1] = meanl[i+1]; } } #Compute the statistic in case of a Poisson distribution alarm.stat <- 1 for (j in seq_len(n)) { #Ensure 0/0 = 1 so we don't get NaNs div <- ifelse(yhat[j+1]==0 & xbar==0, 1, yhat[j+1]/xbar) alarm.stat <- alarm.stat * (div)^x[j+1] } return(alarm.stat) ## The above might cause NaN's in case of large numbers. ## logalarm <- 0 ## for (j in 1:n) { ## #Eqn (5) in Frisen et al paper in log form. However: it is undefined ## #if \hat{\mu}^D(t) == 0 (it is a division by zero). ## #We fix 0/0 = 1 ## if (xbar != 0) { ## if (yhat[j+1] != 0) { #if \hat{\mu}^{C1} == 0 then ## logalarm = logalarm + x[j+1] * (log(yhat[j+1]) - log(xbar)) ## } ## } else { ## if (yhat[j+1] != 0) { ## stop("Division by zero in Eqn (5) of Frisen paper!") ## } ## } ## } ## #Done, return the value ## return(exp(logalarm)) } ###################################################################### # The detection function in S3 style ###################################################################### algo.outbreakP <- function(disProgObj, control = list(range = range, k=100, ret=c("cases","value"),maxUpperboundCases=1e5)) { #Set threshold to some fixed value, i.e. 100 if(is.null(control[["k",exact=TRUE]])) control$k <- 100 #Set largest observed value to try as upperbound when numerically searching #for NNBA in case ret = "cases" if(is.null(control[["maxUpperboundCases",exact=TRUE]])) control$maxUpperboundCases <- 1e5 #Which value to return in upperbound? control$ret <- match.arg(control$ret, c("value","cases")) #Initialize the necessary vectors alarm <- matrix(data = 0, nrow = length(control$range), ncol = 1) upperbound <- matrix(data = 0, nrow = length(control$range), ncol = 1) observed <- disProgObj$observed #Store results count <- 1 for(i in control$range) { statistic <- calc.outbreakP.statistic( observed[seq_len(i)] ) # store the results in the right order alarm[count] <- statistic > control$k #Find NNBA or just return value of the test statistic (faster) if (control$ret == "cases") { #If length is 1 no alarm can be given unless k<1 if (i<=1) { upperbound[count] <- ifelse(control$k>=1, NA, 0) } else { if (is.nan(statistic)) { #if no decent statistic was computed. upperbound[count] <- NA } else { #Go up or down delta <- ifelse(alarm[count], -1, 1) #Initialize observedi <- observed[i] foundNNBA <- FALSE #Loop with modified last observation until alarm is caused (dx=1) #or until NO alarm is caused anymore (dx=-1) while ( ((delta == -1 & observedi > 0) | (delta == 1 & observedi < control$maxUpperboundCases)) & (!foundNNBA)) { observedi <- observedi + delta newObserved <- c(observed[seq_len(i-1)],observedi) statistic <- calc.outbreakP.statistic( newObserved ) if (is.nan(statistic)) { #statistic produced a numeric overflow. observedi <- control$maxUpperboundCases } else { foundNNBA <- (statistic > control$k) == ifelse(alarm[count],FALSE,TRUE) } } upperbound[count] <- ifelse( foundNNBA, observedi + ifelse(alarm[count],1,0), NA) } } } else { upperbound[count] <- statistic } #Advance time index count <- count + 1 } #Add name and data name to control object. control$name <- paste("outbreakP(",control$k,")",sep="") control$data <- paste(deparse(substitute(disProgObj))) # return alarm and upperbound vectors result <- list(alarm = alarm, upperbound = upperbound, disProgObj=disProgObj, control=control) class(result) = "survRes" # for surveillance system result return(result) } surveillance/R/epidata_animate.R0000644000175100001440000001361712424415000016415 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Two types of spatio-temporal animations of "epidata" are supported: ### - sequential plots regardless of time between events (i.e. only ordering) ### - chronological animation with timer ### ### Copyright (C) 2008-2009, 2012, 2014 Sebastian Meyer ### $Revision: 1096 $ ### $Date: 2014-10-30 11:59:12 +0100 (Don, 30. Okt 2014) $ ################################################################################ animate.epidata <- function (object, ...) { s <- summary(object) animate.summary.epidata(s, ...) } animate.summary.epidata <- function (object, main = "An animation of the epidemic", pch = 19, col = c(3, 2, gray(0.6)), time.spacing = NULL, sleep = quote(5/.nTimes), legend.opts = list(), timer.opts = list(), end = NULL, generate.snapshots = NULL, ...) { counters <- object[["counters"]] # remove pseudo-R-events, which come before S-event directSevents <- which(duplicated(counters[["time"]])) counters_noPseudoR <- if (length(directSevents)) { counters[-(directSevents-1), ] } else { counters } # remove initial row and keep essential columns eventTable <- counters_noPseudoR[-1, c("time", "type", "id")] eventTable[["type"]] <- unclass(eventTable[["type"]]) # get integer codes .nTimes <- nrow(eventTable) # extract initial individual information (id, at-risk, coordinates) coords <- object[["coordinates"]] d <- ncol(coords) if (d > 2L) { stop("spatial plotting in more than two dimensions is not implemented") } else if (d == 1L) { coords <- cbind(coords, 0) } else if (d == 0L) { stop ("'object' does not contain any defined coordinates") } # plot the initial state pch <- rep(pch, length.out = 3) col <- rep(col, length.out = 3) isInitiallyInfected <- rownames(coords) %in% object[["initiallyInfected"]] plot(coords, pch = ifelse(isInitiallyInfected, pch[2L], pch[1L]), col = ifelse(isInitiallyInfected, col[2L], col[1L]), main = main, ...) if (is.list(legend.opts)) { if (is.null(legend.opts[["x",exact=TRUE]])) legend.opts$x <- "topright" if (is.null(legend.opts$legend)) legend.opts$legend <- c("susceptible", "infectious", "removed") if (is.null(legend.opts$col)) legend.opts$col <- col if (is.null(legend.opts$pch)) legend.opts$pch <- pch do.call(legend, legend.opts) } # animate the epidemic by iteratively re-drawing points at the coordinates sleep <- eval(sleep) if (is.null(time.spacing)) { # plot events sequentially for(i in seq_len(.nTimes)) { if (dev.interactive()) Sys.sleep(sleep) tmp <- eventTable[i,] # c(time, type, id) points(coords[as.character(tmp[["id"]]),,drop=FALSE], pch = pch[tmp[["type"]]], col = col[tmp[["type"]]]) } } else { # plot events chronologically if (is.null(end)) end <- eventTable[.nTimes, "time"] + time.spacing timeGrid <- seq(from = time.spacing, to = end, by = time.spacing) timeWidth <- nchar(timeGrid[length(timeGrid)]) timeDigits <- nchar(strsplit(as.character(time.spacing), ".", fixed = TRUE)[[1L]][2L]) form <- paste("%", timeWidth, ".", timeDigits, "f", sep = "") if (is.list(timer.opts)) { if (is.null(timer.opts[["x",exact=TRUE]])) timer.opts$x <- "bottomright" if (is.null(timer.opts$title)) timer.opts$title <- "time" if (is.null(timer.opts$box.lty)) timer.opts$box.lty <- 0 if (is.null(timer.opts$adj)) timer.opts$adj <- c(0.5,0.5) if (is.null(timer.opts$inset)) timer.opts$inset <- 0.01 if (is.null(timer.opts$bg)) timer.opts$bg <- "white" do.call(legend, c(list(legend = sprintf(form, 0)), timer.opts)) } oldtp <- tp <- attr(object, "timeRange")[1L] i <- 1L # to be used in the file argument in dev.print if (is.vector(generate.snapshots, mode="character") && length(generate.snapshots) == 1L && requireNamespace("animation")) { img.name <- generate.snapshots ani.dev <- animation::ani.options("ani.dev") if (is.character(ani.dev)) ani.dev <- get(ani.dev) imgdir <- animation::ani.options("imgdir") imgtype <- animation::ani.options("ani.type") generate.snapshots <- list( device = ani.dev, file = quote(file.path(imgdir, paste0(img.name,i,".",imgtype))), width = animation::ani.options("ani.width"), height = animation::ani.options("ani.height") ) } if (is.list(generate.snapshots)) { do.call(dev.print, generate.snapshots) } for(i in 1L+seq_along(timeGrid)) { tp <- timeGrid[i-1L] if (dev.interactive()) Sys.sleep(sleep) timeIndex <- which(eventTable[["time"]] > oldtp & eventTable[["time"]] <= tp) if (length(timeIndex) > 0L) { tmp <- eventTable[timeIndex,] # c(time, type, id) points(coords[as.character(tmp[["id"]]),,drop=FALSE], pch = pch[tmp[["type"]]], col = col[tmp[["type"]]]) } if (is.list(timer.opts)) { do.call(legend, c(list(legend = sprintf(form,tp)), timer.opts)) } oldtp <- tp if (is.list(generate.snapshots)) { do.call(dev.print, generate.snapshots) } } } invisible(NULL) } surveillance/R/misc_dataProcessing.R0000644000175100001440000001111012113474335017266 0ustar hornikusers################################################### ### chunk number 1: ################################################### # 'readData' to reads the data of a specified disease of several years # and generates a state chain using the bulletin knowledge # # Parameter: # abb : abbreviation of the disease # week53to52: Boolean indicating whether to convert RKI 53 Weeks System to 52 weeks a year readData <- function(abb,week53to52=TRUE,sysPath=TRUE){ #Read depending on which path is requested if (sysPath) { #Prepend the systempath/data to the filename #hoehle 2012-07-24 - this does not work when package is not #installed. Use extdata as recommended in the file package structure. file <- file.path(path.package('surveillance'),'extdata',paste(abb,".txt",sep="")) } else { file <- file.path(paste(abb,".txt",sep="")) } # read the data from four years and write it to a table #file <- paste( dataPath, abb , ".txt" , sep="" ) fileTable <- read.table( file=file, header=TRUE ) observed <- fileTable$observed state <- fileTable$state result = list(observed=observed, state=state) class(result) = "disProg" # for disease progress #Convert to 52 week system... if (week53to52) { result <- correct53to52(result) } result$freq <- 52 result$start <- c(2001,1) return(result) } ################################################### ### chunk number 2: ################################################### toFileDisProg <- function(disProgObj, toFile){ length <- length(disProgObj$observed) writeMatrix <- matrix(0, length, 3) dimnames(writeMatrix) <- list(c(), c("week", "observed", "state")) writeMatrix[,"week"] <- 1:length writeMatrix[,"observed"] <- disProgObj$observed writeMatrix[,"state"] <- disProgObj$state write.table(writeMatrix, toFile, row.names = FALSE, sep = "\t") } ################################################### ### chunk number 3: ################################################### # 'correct53to52' sums up and cuts a value from a splited last and first week of a year # # Parameter: # disProgObj - object of class disProgObj (including the observed and the state chain) # firstweek: the number in observed of the first week in a year, default = 1 # ouput: # disProgObj: the new disProgObj correct53to52 <- function(disProgObj, firstweek = 1){ if(firstweek > length(disProgObj$observed)){ stop("firstweek doesn't exist") } observed <- disProgObj$observed state <- disProgObj$state if(length(state) != length(observed)){ stop("state and observed don't have the same length") } # do not cut, if observed is too short length = length(observed[firstweek:length(observed)]) if(length > 53){ lastyear <- floor((length-1)/53) # sum case numbers of double weeks up for(i in 1:lastyear){ # last week of year i (-i+1 because the array now is shorter) last <- firstweek + i * 52 # first week in year i+1 firstnew <- last + 1 observed[firstnew] <- observed[last] + observed[firstnew] # delete double weeks observed <- observed[-c(last)] # with state state[firstnew] <- state[last] + state[firstnew] # delete double weeks state <- state[-c(last)] } } # correct also the first week, if it doesn't is the beginning if(firstweek > 1){ observed[firstweek] <- observed[firstweek] + observed[firstweek-1] observed <- observed[-c(firstweek-1)] state[firstweek] <- state[firstweek] + state[firstweek-1] state <- state[-c(firstweek-1)] } # correct all 2 to 1 state[state==2] <- 1 disProgObj$observed <- observed disProgObj$state <- state return(disProgObj) } ################################################### ### chunk number 4: ################################################### enlargeData <- function(disProgObj, range = 1:156, times = 1){ # enlarge observed disProgObj$observed <- c(rep(disProgObj$observed[range], times), disProgObj$observed) # enlarge state disProgObj$state <- c(rep(disProgObj$state[range], times), disProgObj$state) return(disProgObj) } surveillance/R/hhh4_oneStepAhead.R0000644000175100001440000002113612616414703016572 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Compute one-step-ahead predictions (means) at a series of time points ### ### Copyright (C) 2011-2012 Michaela Paul, 2012-2015 Sebastian Meyer ### $Revision: 1508 $ ### $Date: 2015-11-04 15:44:19 +0100 (Mit, 04. Nov 2015) $ ################################################################################ oneStepAhead <- function(result, # hhh4-object (i.e. a hhh4 model fit) tp, # scalar: one-step-ahead predictions for time # points (tp+1):nrow(stsObj), or tp=c(from, to) type = c("rolling", "first", "final"), which.start = c("current", "final"), #if type="rolling" keep.estimates = FALSE, verbose = TRUE, # verbose-1 is used as verbose setting # for sequentially refitted hhh4 models cores = 1) # if which.start="final", the predictions # can be computed in parallel { stopifnot(inherits(result, c("ah4", "hhh4"))) type <- match.arg(type) if (type == "rolling" && !is.list(which.start)) { ## new in surveillance 1.10-0: if 'which.start' is a list, it is ## directly used as the 'start' argument for hhh4() in all time steps which.start <- match.arg(which.start) if (cores > 1 && which.start == "current") stop("no parallelization for 'type=\"rolling\"' ", "if 'which.start=\"current\"'") } ## get model terms model <- result[["terms"]] if (is.null(model)) model <- result$terms <- with(result, interpretControl(control, stsObj)) nTime <- model$nTime nUnits <- model$nUnits dimPsi <- model$nOverdisp withPsi <- dimPsi > 0L psiIdx <- model$nFE + model$nd + seq_len(dimPsi) ## check that tp is within the time period of the data maxlag <- if (is.null(result$lags) || all(is.na(result$lags))) 1L else max(result$lags, na.rm=TRUE) stopifnot(tp %in% seq.int(maxlag,nTime-1L), length(tp) %in% 1:2) if (length(tp) == 1) tp <- c(tp, max(model$subset)-1) tps <- tp[1]:tp[2] ntps <- length(tps) observed <- model$response[tps+1,,drop=FALSE] rownames(observed) <- tps+1 ## adjust verbosity for model refitting verbose <- as.integer(verbose) result$control$verbose <- max(0, verbose - (ntps>1)) if (type != "rolling" && verbose > 1L) verbose <- 1L do_pb <- verbose == 1L && interactive() ## initial fit fit <- if (type == "first") { if (do_pb) cat("\nRefitting model at first time point t =", tps[1L], "...\n") update.hhh4(result, subset.upper = tps[1L], use.estimates = TRUE, keep.terms = TRUE) # need "model" -> $terms } else result if (!fit$convergence) stop("initial fit did not converge") ## result templates (named and filled with NA's) pred <- matrix(NA_real_, nrow=ntps, ncol=nUnits, dimnames=list(tps+1, colnames(observed))) if (withPsi) psi <- matrix(NA_real_, nrow=ntps, ncol=dimPsi, dimnames=list(tps, names(model$initialTheta)[psiIdx])) if (keep.estimates) { coefficients <- matrix(NA_real_, nrow=ntps, ncol=length(model$initialTheta), dimnames=list(tps, names(model$initialTheta))) Sigma.orig <- matrix(NA_real_, nrow=ntps, ncol=model$nSigma, dimnames=list(tps, names(result$Sigma.orig))) logliks <- matrix(NA_real_, nrow=ntps, ncol=2L, dimnames=list(tps, c("loglikelihood", "margll"))) } ## extract predictions and stuff for specific tp from fit getPreds <- function (fit, tp) { coefs <- unname(fit$coefficients) c(list(pred = as.vector( meanHHH(coefs, fit$terms, subset=tp+1L, total.only=TRUE))), if (withPsi) list(psi = coefs[psiIdx]), if (keep.estimates) list( coefficients=coefs, Sigma.orig=unname(fit$Sigma.orig), logliks=c(fit$loglikelihood, fit$margll)) ) } ## compute the predictions and save ## pred, psi, coefficients, Sigma.orig, and logliks if (cores > 1L) { ## return value template (unnamed NA vectors) resTemplate <- lapply(getPreds(fit, tps[1L]), "is.na<-", TRUE) ## run parallel res <- parallel::mclapply(tps, function (tp) { if (verbose) cat("One-step-ahead prediction @ t =", tp, "...\n") if (type == "rolling") { # update fit fit <- update.hhh4(result, subset.upper=tp, use.estimates=TRUE, start=if (is.list(which.start)) which.start, verbose=FALSE, # chaotic in parallel keep.terms=TRUE) # need "model" -> $terms if (!fit$convergence) { cat("WARNING: No convergence @ t =", tp, "!\n") return(resTemplate) } } getPreds(fit, tp) }, mc.preschedule=TRUE, mc.cores=cores) ## gather results .extractFromList <- function (what) t(vapply(res, "[[", resTemplate[[what]], what, USE.NAMES=FALSE)) pred[] <- .extractFromList("pred") if (withPsi) psi[] <- .extractFromList("psi") if (keep.estimates) { coefficients[] <- .extractFromList("coefficients") Sigma.orig[] <- .extractFromList("Sigma.orig") logliks[] <- .extractFromList("logliks") } } else { ## sequential one-step ahead predictions if (do_pb) pb <- txtProgressBar(min=0, max=ntps, initial=0, style=3) for(i in seq_along(tps)) { if (verbose > 1L) { cat("\nOne-step-ahead prediction @ t =", tps[i], "...\n") } else if (do_pb) setTxtProgressBar(pb, i) if (type == "rolling") { # update fit fit.old <- fit # backup start <- if (is.list(which.start)) { which.start } else if (which.start == "current") hhh4coef2start(fit) ## else NULL fit <- update.hhh4(result, subset.upper=tps[i], start=start, # takes precedence use.estimates=TRUE, keep.terms=TRUE) # need "model" -> $terms if (!fit$convergence) { if (do_pb) cat("\n") cat("WARNING: No convergence @ t =", tps[i], "!\n") ## FIXME: do a grid search ? fit <- fit.old next } } res <- getPreds(fit, tps[i]) ## gather results pred[i,] <- res$pred if (withPsi) psi[i,] <- res$psi if (keep.estimates) { coefficients[i,] <- res$coefficients Sigma.orig[i,] <- res$Sigma.orig logliks[i,] <- res$logliks } } if (do_pb) close(pb) } ## with shared overdispersion parameters we need to expand psi to ncol(pred) if (dimPsi > 1L && dimPsi != nUnits) { psi <- psi[,model$indexPsi] } ## done res <- c(list(pred = pred, observed = observed, psi = if (withPsi) psi else NULL, allConverged = all(!is.na(pred))), if (keep.estimates) list(coefficients = coefficients, Sigma.orig = Sigma.orig, logliks = logliks) ) class(res) <- "oneStepAhead" res } ## extract estimated overdispersion in dnbinom() parametrization, as full matrix psi2size.oneStepAhead <- function (object) { if (is.null(object$psi)) # Poisson model return(NULL) size <- exp(object$psi) # a matrix with 1 or nUnit columns ## ensure that we always have a full 'size' matrix with nUnit columns dimpred <- dim(object$pred) if (ncol(size) != dimpred[2L]) { # => ncol(size)=1, unit-independent psi size <- rep.int(size, dimpred[2L]) dim(size) <- dimpred } dimnames(size) <- list(rownames(object$psi), colnames(object$pred)) size } surveillance/R/LRCUSUM.runlength.R0000644000175100001440000001277212332422263016457 0ustar hornikusers###################################################################### # Compute log likelihood ratio for a univariate or multivariate # categorical distribution # # Params: # outcomes - a data frame with all possible configuration for the (c-1) # variables not being the reference category. # mu - expectation under which LLR under pi is computed # mu0 - null model. A vector of length (k-1) # mu1 - alternative model. A vector of length (k-1) ###################################################################### LLR.fun <- function(outcomes, mu, mu0, mu1, dfun, ...) { #Compute likelihood ratios. Both univariate and the multivariate #values are computed llr.res <- t(apply(outcomes,1, function(y) { llr <- dfun(y, mu=mu1, log=TRUE,...) - dfun(y, mu=mu0, log=TRUE, ...) p <- dfun(y, mu=mu, ...) return(c(llr=llr,p=p)) })) res <- cbind(outcomes,llr.res) colnames(res) <- c(paste("y",1:ncol(outcomes),sep=""),"llr","p") return(res) } ###################################################################### # Function to compute all possible outcomes for the categorical time # series. This is needed for the LLR computations # # Parameters: # km1 - Dimension of the problem (k-1) # n - number of items arranged (i.e. number of experiments). Integer # # Returns: # matrix of size (number of configs) \times km1 # containing all possible states ###################################################################### outcomeFunStandard <- function(k,n) { #Compute all possible likelihood ratios and their probability under mu #Note: Currently all states are investigated. This might be way too #much work as defacto many states have an occurence prob near 0!! args <- list() ; for (j in seq_len(k)) args[[j]] <- 0:n outcomes <- as.matrix(do.call("expand.grid", args)) #Take only valid outcomes (might reduce drastically the number of cells) if (!is.null(n)) { outcomes <- outcomes[apply(outcomes,1,sum) <= n,,drop=FALSE] } return(outcomes) } ###################################################################### # Compute run length for CUSUM based on Markov representation of the # Likelihood ratio based CUSUM # # Parameters: # mu - (k-1 \times T) matrix with true proportions, i.e. equal to mu0 or mu1 if one wants to compute e.g. ARL_0 or ARL_1 # mu0 - (k-1 \times T) matrix with in-control proportions # mu1 - (k-1 \times T) matrix with out-of-control proportion # n - vector of length T containing the total number of experiments for each time point # h- The threshold h which is used for the CUSUM # g - The number of levels to cut the state space into, i.e. M on foil 12 ###################################################################### LRCUSUM.runlength <- function(mu,mu0,mu1,h,dfun, n, g=5,outcomeFun=NULL,...) { #Semantic checks if ( ((ncol(mu) != ncol(mu0)) | (ncol(mu0) != ncol(mu1))) | ((nrow(mu) != nrow(mu0)) | (nrow(mu0) != nrow(mu1)))) { stop("Error: dimensions of mu, mu0 and mu1 have to match") } if (missing(h)) { stop("No threshold specified!") } #If no specific way for computing the outcomes is given #use the standard way. if (is.null(outcomeFun)) { outcomeFun <- outcomeFunStandard } #Discretize number of possible states of the CUSUM S <- c(-Inf,seq(0,h,length=g)) names <- c(levels(cut(1,S,right=TRUE)),">=h") #Time variable t <- 1:ncol(mu) #Dimension of the problem (k-1) km1 <- nrow(mu) #Create transition matrix for CUSUM control chart P <- array(0, dim=c(length(t),g+1,g+1),dimnames=list(t,names,names)) #Once in the absorbing state stay there! P[,g+1,g+1] <- 1 #Loop over all P[t,,] and compute probabilities for (i in seq_len(length(t))) { cat("Looking at t=",i," out of ",length(t),"\n") #Determine all possible outcomes outcomes <- outcomeFun(km1,n[i]) #Compute all possible likelihood ratios and their probability under mu llr <- LLR.fun(outcomes,mu=mu[,i],mu0=mu0[,i],mu1=mu1[,i],dfun=dfun,size=n[i],...) #Exact CDF of the LLR for this time F <- stepfun(sort(llr[,"llr"]),c(0,cumsum(llr[order(llr[,"llr"]),"p"]))) #Compute probability going from c <= S_{t-1} < d to a <= S_{t} < b for (j in 1:g) { #from index for (k in 1:g) { #to index a <- S[k] ; b <- S[k+1] ; c <- S[j] ; d <- S[j+1] ; m <- (c+d)/2 #From zero to new state if (j == 1) { P[i,j,k] <- F(b) - F(a) } else { #Rieman integral assuming as in Brook & Evans (1972) that S at midpoint #P[i,j,k] <- F(b-m) - F(a-m) #Slightly better approximation by Hawkins (1992), which uses Simpson's rule P[i,j,k] <- (F(b-c) + 4*F(b-m) + F(b-d) - F(a-c) - 4*F(a-m) - F(a-d))/6 } } } #Whatever is missing goes to >h category (take care of rounding errors) P[i,-(g+1),(g+1)] <- pmax(0,1-apply(P[i,-(g+1),-(g+1)],1,sum)) } #Use matrix to compute RL distribution Ppower <- P[1,,] alarmUntilTime <- numeric(ncol(mu0)) alarmUntilTime[1] <- Ppower[1,ncol(P)] for (time in t[-1]) { #from 2 to length of t Ppower <- Ppower %*% P[time,,] alarmUntilTime[time] <- Ppower[1,ncol(P)] } pRL <- c(alarmUntilTime[1],diff(alarmUntilTime)) mom <- NA #If the Markov chain is homogenous then compute ARL by inverting if (length(t) == 1) { R <- P[,1:g,1:g] I <- diag(rep(1,g)) mom <- solve(I-R) %*% matrix(1,g,1) #-- no sparse computing #Alternative using sparse #mom <- solve(Matrix(id-r)) %*% matrix(1,mw,1) } return(list(P=P,pmf=pRL,cdf=alarmUntilTime,arl=mom[1])) } surveillance/R/pairedbinCUSUM.R0000644000175100001440000002213012236775520016071 0ustar hornikusers###################################################################### # Compute ARL for paired binary CUSUM charts as introducted in Steiner, # Cook and Farefwell, 1999, Monitoring paired binary surgical outcomes, # Stats in Med, 18, 69-86. # # This code is an R implementation of Matlab code provided by # Stefan H. Steiner, University of Waterloo, Canada. # # Params: # p - vector giving the probability of the four different possibilities # c((death=0,near-miss=0),(death=1,near-miss=0), # (death=0,near-miss=1),(death=1,near-miss=1)) # w1, w2 - w1 and w2 are the sample weights vectors for the two CUSUMs. # (see (2)). We have w1 is equal to deaths # (according to paper it being 2 would be more realistic) # h1, h2 - decision barriers for the individual cusums (see (3)) # h11,h22 - joint decision barriers (see (3)) # sparse - use Matrix package ###################################################################### pairedbinCUSUM.runlength <- function(p,w1,w2,h1,h2,h11,h22, sparse=FALSE) { #Size of the sparse matrix -- assumption h1>h11 and h2>h22 mw <- h1*h22+(h2-h22)*h11; cat("g = ",mw+3,"\n") #build transition matrix; look at current state as an ordered pair (x1,x2) #the size of the matrix is determined by h1, h2, and h11 and h22 #Look at all 3 possible absorbing conditions transm <- matrix(0, mw+3, mw+3) #the last row/column is the absorbing state, I_{3\times 3} block #Is this ever used?? transm[mw+1,mw+1] <- 1 transm[mw+2,mw+2] <- 1 transm[mw+3,mw+3] <- 1 #go over each row and fill in the transition probabilities for (i in 1:mw) { # cat(i," out of ", mw,"\n") #find the corresponding state if (i>h1*h22) { temp <- floor((i-h1*h22-1)/h11) x1 <- i-h1*h22-1-temp*h11 x2 <- temp+h22 } else { x2 <- floor((i-1)/h1); x1 <- i-x2*h1-1; } #go over the four different weight combinations for (j in 1:2) { for (k in 1:2) { x1n <- x1+w1[j+2*(k-1)] #death chart x2n <- x2+w2[k] #look at all possible combinations of weights #we cant go below zero if (x1n<0) { x1n <- 0 } if (x2n<0) { x2n <- 0 } newcond=0; #try to figure out what condition index the new CUSUM values correspond to if (x1n>=h1) { newcond <- mw+1; #absorbing state on x1 } else { if (x2n>=h2) { newcond <- mw+2 #absorbing state on x2 } else { if ((x1n>=h11)&(x2n>=h22)) { #only register this if other two conditions are not satisfied newcond <- mw+3 } } } if (newcond==0) { #transition is not to an absorbing state #translate legal ordered pair to state number if (x2n h1, S[t+1,2] > h2) if ((S[t+1,1] > h11) & (S[t+1,2] > h22)) { alarm <- c(TRUE,TRUE) } # alarm <- (S[t+1,1] > h1) | (S[t+1,2] > h2) | # ((S[t+1,1] > h11) & (S[t+1,2] > h22)) #If one or both of the CUSUMs produced an alarm then stop if ((sum(alarm)>0) | (t==nrow(x))) { stopped <- TRUE} } return(list(N=t,val=S[-1,],alarm=alarm)) } ###################################################################### # STS wrapper for the Paired binary CUSUM method. This follows in # style the categoricalCUSUM method. ###################################################################### pairedbinCUSUM <- function(stsObj, control = list(range=NULL,theta0,theta1,h1,h2,h11,h22)) { # Set the default values if not yet set if(is.null(control[["range",exact=TRUE]])) { control$range <- 1:nrow(observed(stsObj)) } if(is.null(control[["theta0",exact=TRUE]])) { stop("Error: No specification of in-control parameters theta0!") } if(is.null(control[["theta1",exact=TRUE]])) { stop("Error: No specification of out-of-control parameters theta1!") } if(is.null(control[["h1",exact=TRUE]])) { stop("Error: No specification of primary threshold h1 for first series.") } if(is.null(control[["h2",exact=TRUE]])) { stop("Error: No specification of primary threshold h2 for 2nd series.") } if(is.null(control[["h11",exact=TRUE]])) { stop("Error: No specification of secondary limit h11 for 1st series.") } if(is.null(control[["h22",exact=TRUE]])) { stop("Error: No specification of secondary limit h11 for 2nd series.") } #Extract the important parts from the arguments range <- control$range y <- stsObj@observed[range,,drop=FALSE] theta0 <- control[["theta0",exact=TRUE]] theta1 <- control[["theta1",exact=TRUE]] h1 <- control[["h1",exact=TRUE]] h2 <- control[["h2",exact=TRUE]] h11 <- control[["h11",exact=TRUE]] h22 <- control[["h22",exact=TRUE]] #Semantic checks. if (ncol(y) != 2) { stop("Error: The number of columns in the sts object needs to be two.") } #Reserve space for the results. Contrary to the categorical CUSUM #method, each ROW represents a series. alarm <- matrix(data = 0, nrow = length(range), ncol = ncol(y)) upperbound <- matrix(data = 0, nrow = length(range), ncol = ncol(y)) #Setup counters for the progress doneidx <- 0 N <- 1 noofalarms <- 0 noOfTimePoints <- length(range) ####################################################### #Loop as long as we are not through the entire sequence ####################################################### while (doneidx < noOfTimePoints) { #Run paired binary CUSUM until the next alarm res <- pairedbinCUSUM.LLRcompute(x=y, theta0=theta0, theta1=theta1, h1=h1, h2=h2, h11=h11, h22=h22) #In case an alarm found log this and reset the chart at res$N+1 if (res$N < nrow(y)) { #Put appropriate value in upperbound upperbound[1:res$N + doneidx,] <- res$val[1:res$N,] alarm[res$N + doneidx,] <- res$alarm #Chop & get ready for next round y <- y[-(1:res$N),,drop=FALSE] # theta0 <- pi0[,-(1:res$N),drop=FALSE] # theta1 <- pi1[,-(1:res$N),drop=FALSE] # n <- n[-(1:res$N)] #Add to the number of alarms noofalarms <- noofalarms + 1 } doneidx <- doneidx + res$N } #Add upperbound-statistic of last segment, where no alarm is reached upperbound[(doneidx-res$N+1):nrow(upperbound),] <- res$val # Add name and data name to control object control$name <- "pairedbinCUSUM" control$data <- NULL #not supported anymore #New direct calculations on the sts object stsObj@observed <- stsObj@observed[control$range,,drop=FALSE] stsObj@state <- stsObj@state[control$range,,drop=FALSE] stsObj@populationFrac <- stsObj@populationFrac[control$range,,drop=FALSE] stsObj@alarm <- alarm stsObj@upperbound <- upperbound #Fix the corresponding start entry start <- stsObj@start new.sampleNo <- start[2] + min(control$range) - 1 start.year <- start[1] + (new.sampleNo - 1) %/% stsObj@freq start.sampleNo <- (new.sampleNo - 1) %% stsObj@freq + 1 stsObj@start <- c(start.year,start.sampleNo) #Done return(stsObj) } surveillance/R/graphs.R0000644000175100001440000000652012237174420014601 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Functions concerning graphs: neighbourhood order, adjacency matrix ### These are wrappers around functionality from package "spdep" by Roger Bivand ### ### Copyright (C) 2009-2013 Sebastian Meyer ### $Revision: 666 $ ### $Date: 2013-11-08 15:45:36 +0100 (Fre, 08 Nov 2013) $ ################################################################################ ### Determine the matrix of neighbourhood orders ### given the binary matrix of first-order neighbours. ### Working horse: spdep::nblag() nbOrder <- function (neighbourhood, maxlag = 1) { if (!requireNamespace("spdep")) stop("package ", dQuote("spdep"), " is required to determine neighbourhood orders") stopifnot(isScalar(maxlag), maxlag > 0) checkNeighbourhood(neighbourhood) neighbourhood <- neighbourhood == 1 # convert to binary matrix nregions <- nrow(neighbourhood) maxlag <- as.integer(min(maxlag, nregions-1)) # upper bound of nb order if (maxlag == 1L) { storage.mode(neighbourhood) <- "integer" return(neighbourhood) } ## manually convert to spdep's "nb" class ## region.idxs <- seq_len(nregions) ## nb <- lapply(region.idxs, function(i) { ## nbs <- which(neighbourhood[i,]) ## if (length(nbs) > 0L) nbs else 0L ## }) ## class(nb) <- "nb" ## convert first-order neighbourhood to spdep's "nb" class nb <- spdep::mat2listw(neighbourhood)$neighbours attr(nb, "region.id") <- NULL ## compute higher order neighbours using spdep::nblag() nb.lags <- spdep::nblag(nb, maxlag=maxlag) ## Side note: fast method to determine neighbours _up to_ specific order: ## crossprod(neighbourhood) > 0 # up to second order neighbours (+set diag to 0) ## (neighbourhood %*% neighbourhood %*% neighbourhood) > 0 # up to order 3 ## and so on... ## convert to a single matrix nbmat <- neighbourhood # logical first-order matrix storage.mode(nbmat) <- "numeric" for (lag in 2:maxlag) { if (any(spdep::card(nb.lags[[lag]]) > 0L)) { # any neighbours of this order nbmat.lag <- spdep::nb2mat(nb.lags[[lag]], style="B", zero.policy=TRUE) nbmat <- nbmat + lag * nbmat.lag } } attr(nbmat, "call") <- NULL storage.mode(nbmat) <- "integer" ## message about maximum neighbour order by region maxlagbyrow <- apply(nbmat, 1, max) message("Note: range of maximum neighbour order by region is ", paste(range(maxlagbyrow), collapse="-")) ## Done nbmat } ### Derive adjacency structure from a SpatialPolygons object ### Working horse: spdep::poly2nb poly2adjmat <- function (SpP, ..., zero.policy = TRUE) { if (!requireNamespace("spdep")) stop("package ", dQuote("spdep"), " is required to derive adjacencies from SpatialPolygons") nb <- spdep::poly2nb(SpP, ...) adjmat <- spdep::nb2mat(nb, style="B", zero.policy=zero.policy) attr(adjmat, "call") <- NULL colnames(adjmat) <- rownames(adjmat) adjmat } surveillance/R/hhh4.R0000644000175100001440000023757212575630137014174 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### hhh4 is an extended version of algo.hhh for the sts-class ### The function allows the incorporation of random effects and covariates. ### ### Copyright (C) 2010-2012 Michaela Paul, 2012-2015 Sebastian Meyer ### $Revision: 1475 $ ### $Date: 2015-09-14 22:38:55 +0200 (Mon, 14. Sep 2015) $ ################################################################################ ## Error message issued in loglik, score and fisher functions upon NA parameters ADVICEONERROR <- "\n Try different starting values, more iterations, or another optimizer.\n" ### Main function to be called by the user hhh4 <- function (stsObj, control = list( ar = list(f = ~ -1, # a formula "exp(x'lamba)*y_t-lag" (ToDo: matrix) offset = 1, # multiplicative offset lag = 1), # autoregression on y_i,t-lag ne = list(f = ~ -1, # a formula "exp(x'phi) * sum_j w_ji * y_j,t-lag" offset = 1, # multiplicative offset lag = 1, # regression on y_j,t-lag weights = neighbourhood(stsObj) == 1, # weights w_ji scale = NULL, # such that w_ji = scale * weights normalize = FALSE), # w_ji -> w_ji / rowSums(w_ji), after scaling end = list(f = ~ 1, # a formula "exp(x'nu) * n_it" offset = 1), # optional multiplicative offset e_it family = c("Poisson", "NegBin1", "NegBinM"), # or a factor of length nUnit subset = 2:nrow(stsObj), # epidemic components require Y_{t-lag} optimizer = list(stop = list(tol = 1e-5, niter = 100), # control arguments regression = list(method = "nlminb"), # for optimization variance = list(method = "nlminb")), # <- or "Nelder-Mead" verbose = FALSE, # level of reporting during optimization start = list(fixed = NULL, # list of start values, replacing initial random = NULL, # values from fe() and ri() in 'f'ormulae sd.corr = NULL), data = list(t = stsObj@epoch - min(stsObj@epoch)), # named list of covariates keep.terms = FALSE # whether to keep interpretControl(control, stsObj) ), check.analyticals = FALSE) { ptm <- proc.time() ## Convert old disProg class to new sts class if (inherits(stsObj, "disProg")) { stsObj <- disProg2sts(stsObj) } else { stopifnot(inherits(stsObj, "sts")) } ## check control and set default values (for missing arguments) control <- setControl(control, stsObj) ## get model terms model <- interpretControl(control, stsObj) dimFixedEffects <- model$nFE + model$nd + model$nOverdisp dimRandomEffects <- model$nRE ## starting values #* -> better default values possible theta.start <- model$initialTheta Sigma.start <- model$initialSigma ## check if initial values are valid ## CAVE: there might be NA's in mu if there are missing values in Y mu <- meanHHH(theta.start, model, total.only=TRUE) if(any(mu==0, na.rm=TRUE) || any(is.infinite(mu))) stop("some mean is degenerate (0 or Inf) at initial values") ## check score vector and fisher information at starting values check.analyticals <- if (isTRUE(check.analyticals)) { if (length(theta.start) > 50) "maxLik" else "numDeriv" } else if (is.character(check.analyticals)) { match.arg(check.analyticals, c("numDeriv", "maxLik"), several.ok=TRUE) } else NULL if (length(check.analyticals) > 0L) { resCheck <- checkAnalyticals(model, theta.start, Sigma.start, methods=check.analyticals) return(resCheck) } ## maximize loglikelihood (penalized and marginal) myoptim <- fitHHH(theta=theta.start,sd.corr=Sigma.start, model=model, cntrl.stop = control$optimizer$stop, cntrl.regression = control$optimizer$regression, cntrl.variance = control$optimizer$variance, verbose=control$verbose) convergence <- myoptim$convergence == 0 thetahat <- c(myoptim$fixef, myoptim$ranef) loglik <- myoptim$loglik cov <- try(solve(myoptim$fisher), silent=TRUE) ## check for degenerate fisher info if(inherits(cov, "try-error")){ # fisher info is singular if (control$verbose) cat("WARNING: Final Fisher information matrix is singular!\n") convergence <- FALSE } else if(any(!is.finite(diag(cov))) || any(diag(cov)<0)){ if (control$verbose) cat("WARNING: non-finite or negative covariance of regression parameters!\n") convergence <- FALSE } if (!convergence) { if (control$verbose) { cat("Penalized loglikelihood =", loglik, "\n") thetastring <- paste(round(thetahat,2), collapse=", ") thetastring <- strwrap(thetastring, exdent=10, prefix="\n", initial="") cat("theta = (", thetastring, ")\n") } warning("Results are not reliable!", ADVICEONERROR) res <- myoptim res$convergence <- convergence res$call <- match.call() class(res) <- "hhh4" return(res) } ## optimization successful, return a full "hhh4" object dimnames(cov) <- list(names(thetahat), names(thetahat)) if (dimRandomEffects>0) { Sigma.orig <- myoptim$sd.corr Sigma.cov <- solve(myoptim$fisherVar) dimnames(Sigma.cov) <- list(names(Sigma.orig),names(Sigma.orig)) Sigma.trans <- getSigmai(head(Sigma.orig,model$nVar), tail(Sigma.orig,model$nCorr), model$nVar) dimnames(Sigma.trans) <- rep.int(list(sub("^sd\\.", "", names(Sigma.orig)[seq_len(model$nVar)])), 2L) } else { Sigma.orig <- Sigma.cov <- Sigma.trans <- NULL } ## Done result <- list(coefficients=thetahat, se=sqrt(diag(cov)), cov=cov, Sigma=Sigma.trans, # estimated covariance matrix of ri's Sigma.orig=Sigma.orig, # variance parameters on original scale Sigma.cov=Sigma.cov, # covariance matrix of Sigma.orig call=match.call(), dim=c(fixed=dimFixedEffects,random=dimRandomEffects), loglikelihood=loglik, margll=marLogLik(Sigma.orig, thetahat, model), convergence=convergence, fitted.values=meanHHH(thetahat, model, total.only=TRUE), control=control, terms=if(control$keep.terms) model else NULL, stsObj=stsObj, lags=sapply(control[c("ar","ne")], function (comp) if (comp$inModel) comp$lag else NA_integer_), nObs=sum(!model$isNA[control$subset,]), nTime=length(model$subset), nUnit=ncol(stsObj), ## CAVE: nTime is not nrow(stsObj) as usual! runtime=proc.time()-ptm) class(result) <- "hhh4" result } ## set default values for model specifications in control setControl <- function (control, stsObj) { stopifnot(is.list(control)) nTime <- nrow(stsObj) nUnit <- ncol(stsObj) if(nTime <= 2) stop("too few observations") ## arguments in 'control' override any corresponding default arguments defaultControl <- eval(formals(hhh4)$control) environment(defaultControl$ar$f) <- environment(defaultControl$ne$f) <- environment(defaultControl$end$f) <- .GlobalEnv control <- modifyList(defaultControl, control) ## check that component specifications are list objects for (comp in c("ar", "ne", "end")) { if(!is.list(control[[comp]])) stop("'control$", comp, "' must be a list") } ## check lags in "ar" and "ne" components for (comp in c("ar", "ne")) { if (!isScalar(control[[comp]]$lag) || control[[comp]]$lag < (comp=="ar")) stop("'control$", comp, "$lag' must be a ", if (comp=="ar") "positive" else "non-negative", " integer") control[[comp]]$lag <- as.integer(control[[comp]]$lag) } ### check AutoRegressive component if (control$ar$isMatrix <- is.matrix(control$ar$f)) { ## this form is not implemented -> will stop() in interpretControl() if (any(dim(control$ar$f) != nUnit)) stop("'control$ar$f' must be a square matrix of size ", nUnit) if (is.null(control$ar$weights)) { # use identity matrix control$ar$weights <- diag(nrow=nUnit) } else if (!is.matrix(control$ar$weights) || any(dim(control$ar$weights) != nUnit)) { stop("'control$ar$weights' must be a square matrix of size ", nUnit) } control$ar$inModel <- TRUE } else if (inherits(control$ar$f, "formula")) { if (!is.null(control$ar$weights)) { warning("argument 'control$ar$weights' is not used") control$ar$weights <- NULL } # check if formula is valid control$ar$inModel <- isInModel(control$ar$f) } else { stop("'control$ar$f' must be either a formula or a matrix") } ### check NEighbourhood component if (!inherits(control$ne$f, "formula")) stop("'control$ne$f' must be a formula") control$ne$inModel <- isInModel(control$ne$f) if (control$ne$inModel) { if (nUnit == 1) stop("\"ne\" component requires a multivariate 'stsObj'") ## if ar$f is a matrix it includes neighbouring units => no "ne" component if (control$ar$isMatrix) stop("there must not be an extra \"ne\" component ", "if 'control$ar$f' is a matrix") ## check ne$weights specification checkWeights(control$ne$weights, nUnit, nTime, neighbourhood(stsObj), control$data, check0diag = control$ar$inModel) ## check optional scaling of weights if (!is.null(control$ne$scale)) { stopifnot(is.numeric(control$ne$scale)) if (is.vector(control$ne$scale)) { stopifnot(length(control$ne$scale) == 1L || length(control$ne$scale) %% nUnit == 0, !is.na(control$ne$scale)) } else { checkWeightsArray(control$ne$scale, nUnit, nTime) } } } else { control$ne[c("weights", "scale", "normalize")] <- list(NULL, NULL, FALSE) } ### check ENDemic component if (!inherits(control$end$f, "formula")) stop("'control$end$f' must be a formula") control$end$inModel <- isInModel(control$end$f) ### check offsets for (comp in c("ar", "ne", "end")) { if (is.matrix(control[[comp]]$offset) && is.numeric(control[[comp]]$offset)){ if (!identical(dim(control[[comp]]$offset), dim(stsObj))) stop("'control$",comp,"$offset' must be a numeric matrix of size ", nTime, "x", nUnit) if (any(is.na(control[[comp]]$offset))) stop("'control$",comp,"$offset' must not contain NA values") } else if (!identical(as.numeric(control[[comp]]$offset), 1)) { stop("'control$",comp,"$offset' must either be 1 or a numeric ", nTime, "x", nUnit, " matrix") } } ### stop if no component is included in the model if (length(comps <- componentsHHH4(list(control=control))) == 0L) stop("none of the components 'ar', 'ne', 'end' is included in the model") ### check remaining components of the control list if (is.factor(control$family)) { stopifnot(length(control$family) == nUnit) control$family <- droplevels(control$family) names(control$family) <- colnames(stsObj) } else { control$family <- match.arg(control$family, defaultControl$family) } if (!is.vector(control$subset, mode="numeric") || !all(control$subset %in% seq_len(nTime))) stop("'control$subset' must be %in% 1:", nTime) lags <- c(ar = control$ar$lag, ne = control$ne$lag) maxlag <- suppressWarnings(max(lags[names(lags) %in% comps])) # could be -Inf if (control$subset[1L] <= maxlag) { warning("'control$subset' should be > ", maxlag, " due to epidemic lags") } if (!is.list(control$optimizer) || any(! sapply(c("stop", "regression", "variance"), function(x) is.list(control$optimizer[[x]])))) stop("'control$optimizer' must be a list of lists") control$verbose <- as.integer(control$verbose) if (length(control$verbose) != 1L || control$verbose < 0) stop("'control$verbose' must be a logical or non-negative numeric value") stopifnot(is.list(control$start)) control$start <- local({ defaultControl$start[] <- control$start[names(defaultControl$start)] defaultControl$start }) if (!all(vapply(X = control$start, FUN = function(x) is.null(x) || is.vector(x, mode="numeric"), FUN.VALUE = TRUE, USE.NAMES = FALSE))) stop("'control$start' must be a list of numeric start values") stopifnot(length(control$keep.terms) == 1L, is.logical(control$keep.terms)) ## Done return(control) } # check whether or not one of the three components is included in the model isInModel <- function(formula, name=deparse(substitute(formula))) { term <- terms.formula(formula) if(attr(term,"response") > 0) stop(name, " cannot contain a response") attr(term, "intercept") + length(attr(term, "term.labels")) > 0 } # used to incorporate covariates and unit-specific effects fe <- function(x, # covariate unitSpecific = FALSE, # TRUE means which = rep.int(TRUE, nUnits) which=NULL, # NULL = overall, vector with booleans = unit-specific initial=NULL) # vector of inital values for parameters { stsObj <- get("stsObj", envir=parent.frame(1), inherits=TRUE) #checkFormula() nTime <- nrow(stsObj) nUnits <- ncol(stsObj) if(!is.numeric(x)){ stop("Covariate \'",deparse(substitute(x)),"\' is not numeric\n") } lengthX <- length(x) if(lengthX == 1){ terms <- matrix(x, nTime, nUnits, byrow=FALSE) mult <- "*" } else if(lengthX == nTime){ terms <- matrix(x, nTime, nUnits, byrow=FALSE) mult <- "*" } else if(lengthX == nTime*nUnits){ if(!is.matrix(x)){ stop("Covariate \'",deparse(substitute(x)),"\' is not a matrix\n") } # check dimensions of covariate if((ncol(x) != nUnits) | (nrow(x) != nTime)){ stop("Dimension of covariate \'",deparse(substitute(x)),"\' is not suitably specified\n") } terms <- x mult <- "*" } else { stop("Covariate \'",deparse(substitute(x)),"\' is not suitably specified\n") } intercept <- all(terms==1) # overall or unit-specific effect? unitSpecific <- unitSpecific || !is.null(which) if (unitSpecific) { if (is.null(which)) { which <- rep.int(TRUE, nUnits) } else { stopifnot(is.vector(which, mode="logical"), length(which) == nUnits) } terms[,!which] <- 0 } # get dimension of parameter dim.fe <- if (unitSpecific) sum(which) else 1 # check length of initial values + set default values if (is.null(initial)) { initial <- rep.int(0,dim.fe) } else if (length(initial) != dim.fe) { stop("initial values for '",deparse(substitute(x)),"' must be of length ",dim.fe) } summ <- if (unitSpecific) "colSums" else "sum" name <- deparse(substitute(x)) if (unitSpecific) name <- paste(name, colnames(stsObj)[which], sep=".") result <- list(terms=terms, name=name, Z.intercept=NULL, which=which, dim.fe=dim.fe, initial.fe=initial, dim.re=0, dim.var=0, initial.var=NULL, initial.re=NULL, intercept=intercept, unitSpecific=unitSpecific, random=FALSE, corr=FALSE, summ=summ, mult=mult ) return(result) } # random intercepts ri <- function(type=c("iid","car"), corr=c("none","all"), initial.fe=0, initial.var=-.5, initial.re=NULL) { stsObj <- get("stsObj", envir=parent.frame(1), inherits=TRUE) #checkFormula() if (ncol(stsObj) == 1) stop("random intercepts require a multivariate 'stsObj'") type <- match.arg(type) corr <- match.arg(corr) corr <- switch(corr, "none"=FALSE, "all"=TRUE) if(type=="iid"){ Z <- 1 dim.re <- ncol(stsObj) mult <- "*" } else if(type=="car"){ # construct penalty matrix K K <- neighbourhood(stsObj) checkNeighbourhood(K) K <- K == 1 # indicate first-order neighbours ne <- colSums(K) # number of first-order neighbours K <- -1*K diag(K) <- ne dimK <- nrow(K) # check rank of the nhood, only connected neighbourhoods are allowed if(qr(K)$rank != dimK-1) stop("neighbourhood matrix contains islands") # singular-value decomposition of K svdK <- svd(K) # just use the positive eigenvalues of K in descending order # for a the factorisation of the penalty matrix K = LL' L <- svdK$u[,-dimK] %*% diag(sqrt(svdK$d[-dimK])) #* only use non-zero eigenvalues # Z = L(L'L)^-1, which can't be simplified to Z=(L')^-1 as L is not square Z <- L %*% solve(t(L)%*%L) dim.re <- dimK - 1L mult <- "%*%" } # check length of initial values + set default values stopifnot(length(initial.fe) == 1, length(initial.var) == 1) if (is.null(initial.re)) { initial.re <- rnorm(dim.re,0,sd=sqrt(0.001)) } else if (length(initial.re) != dim.re) { stop("'initial.re' must be of length ", dim.re) } result <- list(terms=1, name=paste("ri(",type,")",sep=""), Z.intercept=Z, which=NULL, dim.fe=1, initial.fe=initial.fe, dim.re=dim.re, dim.var=1, initial.var=initial.var, initial.re=initial.re, intercept=TRUE, unitSpecific=FALSE, random=TRUE, corr=corr, summ="colSums", mult=mult ) return(result) } ### check specification of formula ## f: one of the component formulae (ar$f, ne$f, or end$f) ## component: 1, 2, or 3, corresponding to the ar/ne/end component, respectively ## data: the data-argument of hhh4() ## stsObj: the stsObj is not used directly in checkFormula, but in fe() and ri() checkFormula <- function(f, component, data, stsObj) { term <- terms.formula(f, specials=c("fe","ri")) # check if there is an overall intercept intercept.all <- attr(term, "intercept") == 1 # list of variables in the component vars <- as.list(attr(term,"variables"))[-1] # first element is "list" nVars <- length(vars) # begin with intercept res <- if (intercept.all) { c(fe(1), list(offsetComp=component)) } else { if (nVars==0) stop("formula ", deparse(substitute(f)), " contains no variables") NULL } # find out fixed effects without "fe()" specification # (only if there are variables in addition to an intercept "1") fe.raw <- setdiff(seq_len(nVars), unlist(attr(term, "specials"))) # evaluate covariates for(i in fe.raw) res <- cbind(res, c( eval(substitute(fe(x), list(x=vars[[i]])), envir=data), list(offsetComp=component) )) # fixed effects for(i in attr(term, "specials")$fe) res <- cbind(res, c( eval(vars[[i]], envir=data), list(offsetComp=component) )) res <- cbind(res, deparse.level=0) # ensure res has matrix dimensions # random intercepts RI <- attr(term, "specials")$ri if (sum(unlist(res["intercept",])) + length(RI) > 1) stop("There can only be one intercept in the formula ", deparse(substitute(f))) for(i in RI) res <- cbind(res, c( eval(vars[[i]], envir=data), list(offsetComp=component) )) return(res) } ## Create function (pars, type = "response") which ## returns the weighted sum of time-lagged counts of neighbours ## (or its derivates, if type = "gradient" or type = "hessian"). ## For type="reponse", this is a nTime x nUnits matrix (like Y), ## otherwise a list of such matrices, ## which for the gradient has length length(pars) and ## length(pars)*(length(pars)+1)/2 for the hessian. ## If neweights=NULL (i.e. no NE component in model), the result is always 0. ## offset is a multiplicative offset for \phi_{it}, e.g., the population. ## scale is a nUnit-vector or a nUnit x nUnit matrix scaling neweights. neOffsetFUN <- function (Y, neweights, scale, normalize, nbmat, data, lag = 1, offset = 1) { if (is.null(neweights)) { # no neighbourhood component as.function(alist(...=, 0), envir=.GlobalEnv) ## dimY <- dim(Y) ## as.function(c(alist(...=), ## substitute(matrix(0, r, c), list(r=dimY[1], c=dimY[2]))), ## envir=.GlobalEnv) } else if (is.list(neweights)) { # parametric weights wFUN <- scaleNEweights.list(neweights, scale, normalize) function (pars, type = "response") { name <- switch(type, response="w", gradient="dw", hessian="d2w") weights <- wFUN[[name]](pars, nbmat, data) ## gradient and hessian are lists if length(pars$d) > 1L ## but can be single matrices/arrays if == 1 => _c_onditional lapply res <- clapply(weights, function (W) offset * weightedSumNE(Y, W, lag)) ##<- clapply always returns a list (possibly of length 1) if (type=="response") res[[1L]] else res } } else { # fixed (known) weight structure (0-length pars) weights <- scaleNEweights.default(neweights, scale, normalize) env <- new.env(hash = FALSE, parent = emptyenv()) # small -> no hash env$initoffset <- offset * weightedSumNE(Y, weights, lag) as.function(c(alist(...=), quote(initoffset)), envir=env) } } # interpret and check the specifications of each component # control must contain all arguments, i.e. setControl was used interpretControl <- function (control, stsObj) { nTime <- nrow(stsObj) nUnits <- ncol(stsObj) Y <- observed(stsObj) ########################################################################## ## get the model specifications for each of the three components ########################################################################## ar <- control$ar ne <- control$ne end <- control$end ## for backwards compatibility with surveillance < 1.8-0, where the ar and ne ## components of the control object did not have an offset if (is.null(ar$offset)) ar$offset <- 1 if (is.null(ne$offset)) ne$offset <- 1 ## for backward compatibility with surveillance < 1.9-0 if (is.null(ne$normalize)) ne$normalize <- FALSE ## create list of offsets of the three components Ym1 <- rbind(matrix(NA_integer_, ar$lag, nUnits), head(Y, nTime-ar$lag)) Ym1.ne <- neOffsetFUN(Y, ne$weights, ne$scale, ne$normalize, neighbourhood(stsObj), control$data, ne$lag, ne$offset) offsets <- list(ar=ar$offset*Ym1, ne=Ym1.ne, end=end$offset) ## -> offset$ne is a function of the parameter vector 'd', which returns a ## nTime x nUnits matrix -- or 0 (scalar) if there is no NE component ## -> offset$end might just be 1 (scalar) ## Initial parameter vector 'd' of the neighbourhood weight function initial.d <- if (is.list(ne$weights)) ne$weights$initial else numeric(0L) dim.d <- length(initial.d) names.d <- if (dim.d == 0L) character(0L) else { paste0("neweights.", if (is.null(names(initial.d))) { if (dim.d==1L) "d" else paste0("d", seq_len(dim.d)) } else names(initial.d)) } ## determine all NA's (FIXME: why do we need this? Why include is.na(Y)?) isNA <- is.na(Y) if (ar$inModel) isNA <- isNA | is.na(offsets[[1L]]) if (ne$inModel) isNA <- isNA | is.na(offsets[[2L]](initial.d)) ## get terms for all components all.term <- NULL if(ar$isMatrix) stop("matrix-form of 'control$ar$f' is not implemented") if(ar$inModel) # ar$f is a formula all.term <- cbind(all.term, checkFormula(ar$f, 1, control$data, stsObj)) if(ne$inModel) all.term <- cbind(all.term, checkFormula(ne$f, 2, control$data, stsObj)) if(end$inModel) all.term <- cbind(all.term, checkFormula(end$f,3, control$data, stsObj)) dim.fe <- sum(unlist(all.term["dim.fe",])) dim.re.group <- unlist(all.term["dim.re",], use.names=FALSE) dim.re <- sum(dim.re.group) dim.var <- sum(unlist(all.term["dim.var",])) dim.corr <- sum(unlist(all.term["corr",])) if(dim.corr>0){ if(dim.var!=dim.corr) stop("Use corr=\'all\' or corr=\'none\' ") dim.corr <- switch(dim.corr,0,1,3) } # the vector with dims of the random effects must be equal if they are correlated if(length(unique(dim.re.group[dim.re.group>0]))!=1 & dim.corr>0){ stop("Correlated effects must have same penalty") } n <- c("ar","ne","end")[unlist(all.term["offsetComp",])] names.fe <- names.var <- names.re <- character(0L) for(i in seq_along(n)){ .name <- all.term["name",i][[1]] names.fe <- c(names.fe, paste(n[i], .name, sep=".")) if(all.term["random",i][[1]]) { names.var <- c(names.var, paste("sd", n[i], .name, sep=".")) names.re <- c(names.re, paste(n[i], .name, if (.name == "ri(iid)") { colnames(stsObj) } else { seq_len(all.term["dim.re",i][[1]]) }, sep = ".")) } } index.fe <- rep(1:ncol(all.term), times=unlist(all.term["dim.fe",])) index.re <- rep(1:ncol(all.term), times=unlist(all.term["dim.re",])) # poisson or negbin model if(identical(control$family, "Poisson")){ ddistr <- function(y,mu,size){ dpois(y, lambda=mu, log=TRUE) } dim.overdisp <- 0L index.overdisp <- names.overdisp <- NULL } else { # NegBin ddistr <- function(y,mu,size){ dnbinom(y, mu=mu, size=size, log=TRUE) } ## version that can handle size = Inf (i.e. the Poisson special case): ## ddistr <- function (y,mu,size) { ## poisidx <- is.infinite(size) ## res <- y ## res[poisidx] <- dpois(y[poisidx], lambda=mu[poisidx], log=TRUE) ## res[!poisidx] <- dnbinom(y[!poisidx], mu=mu[!poisidx], ## size=size[!poisidx], log=TRUE) ## res ## } index.overdisp <- if (is.factor(control$family)) { control$family } else if (control$family == "NegBinM") { factor(colnames(stsObj), levels = colnames(stsObj)) ## do not sort levels (for consistency with unitSpecific effects) } else { # "NegBin1" factor(character(nUnits)) } names(index.overdisp) <- colnames(stsObj) dim.overdisp <- nlevels(index.overdisp) names.overdisp <- if (dim.overdisp == 1L) { "-log(overdisp)" } else { paste0("-log(", paste("overdisp", levels(index.overdisp), sep = "."), ")") } } environment(ddistr) <- getNamespace("stats") # function is self-contained # parameter start values from fe() and ri() calls via checkFormula() initial <- list( fixed = c(unlist(all.term["initial.fe",]), initial.d, rep.int(2, dim.overdisp)), random = as.numeric(unlist(all.term["initial.re",])), # NULL -> numeric(0) sd.corr = c(unlist(all.term["initial.var",]), rep.int(0, dim.corr)) ) # set names of parameter vectors names(initial$fixed) <- c(names.fe, names.d, names.overdisp) names(initial$random) <- names.re names(initial$sd.corr) <- c(names.var, head(paste("corr",1:3,sep="."), dim.corr)) # modify initial values according to the supplied 'start' values initial[] <- mapply( FUN = function (initial, start, name) { if (is.null(start)) return(initial) if (is.null(names(initial)) || is.null(names(start))) { if (length(start) == length(initial)) { initial[] <- start } else { stop("initial values in 'control$start$", name, "' must be of length ", length(initial)) } } else { ## we match by name and silently ignore additional start values start <- start[names(start) %in% names(initial)] initial[names(start)] <- start } return(initial) }, initial, control$start[names(initial)], names(initial), SIMPLIFY = FALSE, USE.NAMES = FALSE ) # Done result <- list(response = Y, terms = all.term, nTime = nTime, nUnits = nUnits, nFE = dim.fe, nd = dim.d, nOverdisp = dim.overdisp, nRE = dim.re, rankRE = dim.re.group, nVar = dim.var, nCorr = dim.corr, nSigma = dim.var+dim.corr, nGroups = ncol(all.term), namesFE = names.fe, indexFE = index.fe, indexRE = index.re, initialTheta = c(initial$fixed, initial$random), initialSigma = initial$sd.corr, offset = offsets, family = ddistr, indexPsi = index.overdisp, subset = control$subset, isNA = isNA ) return(result) } splitParams <- function(theta, model){ fixed <- theta[seq_len(model$nFE)] d <- theta[model$nFE + seq_len(model$nd)] overdisp <- theta[model$nFE + model$nd + seq_len(model$nOverdisp)] random <- theta[seq.int(to=length(theta), length.out=model$nRE)] list(fixed=fixed, random=random, overdisp=overdisp, d=d) } ### compute predictor meanHHH <- function(theta, model, subset=model$subset, total.only=FALSE) { ## unpack theta pars <- splitParams(theta, model) fixed <- pars$fixed random <- pars$random ## unpack model term <- model$terms offsets <- model$offset offsets[[2L]] <- offsets[[2L]](pars$d) # evaluate at current parameter value nGroups <- model$nGroups comp <- unlist(term["offsetComp",]) idxFE <- model$indexFE idxRE <- model$indexRE #isNA <- model$isNA toMatrix <- function (x, r=model$nTime, c=model$nUnits) matrix(x, r, c, byrow=TRUE) ## go through groups of parameters and compute predictor of each component, ## i.e. lambda_it, phi_it, nu_it, EXCLUDING the multiplicative offset terms, ## as well as the resulting component mean (=exppred * offset) computePartMean <- function (component) { pred <- nullMatrix <- toMatrix(0) #is.na(pred) <- isNA # set missing values in observed Y to NA # -> FIXME: why? seems to be awkward... and # incompatible with simulation for t=1 (given y.start) if(!any(comp==component)) { # component not in model -> return 0-matrix zeroes <- pred[subset,,drop=FALSE] return(list(exppred = zeroes, mean = zeroes)) } for(i in seq_len(nGroups)[comp==component]){ fe <- fixed[idxFE==i] if(term["unitSpecific",i][[1]]){ fe <- nullMatrix which <- term["which",i][[1]] fe[,which] <- toMatrix(fixed[idxFE==i],c=sum(which)) } if(term["random",i][[1]]){ re <- random[idxRE==i] "%m%" <- get(term["mult",i][[1]]) Z.re <- toMatrix(term["Z.intercept",i][[1]] %m% re) } else { Z.re <- 0 } X <- term["terms",i][[1]] pred <- pred + X*fe + Z.re } exppred <- exp(pred[subset,,drop=FALSE]) offset <- offsets[[component]] if (length(offset) > 1) offset <- offset[subset,,drop=FALSE] ##<- no subsetting if offset is scalar (time- and unit-independent) list(exppred = exppred, mean = exppred * offset) } ## compute component means ar <- computePartMean(1) ne <- computePartMean(2) end <- computePartMean(3) ## Done epidemic <- ar$mean + ne$mean endemic <- end$mean if (total.only) epidemic + endemic else list(mean=epidemic+endemic, epidemic=epidemic, endemic=endemic, epi.own=ar$mean, epi.neighbours=ne$mean, ar.exppred=ar$exppred, ne.exppred=ne$exppred, end.exppred=end$exppred) } ### compute dispersion in dnbinom (mu, size) parametrization sizeHHH <- function (theta, model, subset = model$subset) { if (model$nOverdisp == 0L) # Poisson case return(NULL) ## extract dispersion in dnbinom() parametrization pars <- splitParams(theta, model) size <- exp(pars$overdisp) # = 1/psi, pars$overdisp = -log(psi) ## return either a vector or a time x unit matrix of dispersion parameters if (is.null(subset)) { unname(size) # no longer is "-log(overdisp)" } else { matrix(data = size[model$indexPsi], nrow = length(subset), ncol = model$nUnits, byrow = TRUE, dimnames = list(NULL, names(model$indexPsi))) } } ## auxiliary function used in penScore and penFisher ## it sums colSums(x) within the groups defined by f (of length ncol(x)) .colSumsGrouped <- function (x, f, na.rm = TRUE) { nlev <- nlevels(f) if (nlev == 1L) { # all columns belong to the same group sum(x, na.rm = na.rm) } else { dimx <- dim(x) colsums <- .colSums(x, dimx[1L], dimx[2L], na.rm = na.rm) if (nlev == dimx[2L]) { # each column is its own group colsums[order(f)] } else { # sum colsums within groups unlist(lapply( X = split.default(colsums, f, drop = FALSE), FUN = sum ), recursive = FALSE, use.names = FALSE) } } } ############################################ penLogLik <- function(theta, sd.corr, model, attributes=FALSE) { if(any(is.na(theta))) stop("NAs in regression parameters.", ADVICEONERROR) ## unpack model subset <- model$subset Y <- model$response[subset,,drop=FALSE] #isNA <- model$isNA[subset,,drop=FALSE] dimPsi <- model$nOverdisp dimRE <- model$nRE ## unpack random effects if (dimRE > 0) { pars <- splitParams(theta, model) randomEffects <- pars$random sd <- head(sd.corr, model$nVar) corr <- tail(sd.corr, model$nCorr) dimBlock <- model$rankRE[model$rankRE>0] Sigma.inv <- getSigmaInv(sd, corr, model$nVar, dimBlock) } ############################################################ ## evaluate dispersion psi <- sizeHHH(theta, model, subset = if (dimPsi > 1L) subset) # else scalar or NULL #psi might be numerically equal to 0 or Inf in which cases dnbinom (in meanHHH) #would return NaN (with a warning). The case size=Inf rarely happens and #corresponds to a Poisson distribution. Currently this case is not handled #in order to have the usual non-degenerate case operate faster. #For size=0, log(dnbinom) equals -Inf for positive x or if (x=0 and mu=0), and #zero if x=0 and mu>0 and mu0, which is always true), we have that sum(ll.units) = -Inf, hence: if (any(psi == 0)) return(-Inf) ## evaluate mean mu <- meanHHH(theta, model, total.only=TRUE) # if, numerically, mu=Inf, log(dnbinom) or log(dpois) both equal -Inf, hence: #if (any(is.infinite(mu))) return(-Inf) # however, since mu=Inf does not produce warnings below and this is a rare # case, it is faster to not include this conditional expression ## penalization term for random effects lpen <- if (dimRE==0) 0 else { # there are random effects ##-.5*(t(randomEffects)%*%Sigma.inv%*%randomEffects) ## the following implementation takes ~85% less computing time ! -0.5 * crossprod(randomEffects, Sigma.inv) %*% randomEffects } lpen <- c(lpen) # drop 1x1 matrix dimensions ## log-likelihood ll.units <- .colSums(model$family(Y,mu,psi), length(subset), model$nUnits, na.rm=TRUE) ## penalized log-likelihood ll <- sum(ll.units) + lpen ## Done if (attributes) { attr(ll, "loglik") <- ll.units attr(ll, "logpen") <- lpen } ll } penScore <- function(theta, sd.corr, model) { if(any(is.na(theta))) stop("NAs in regression parameters.", ADVICEONERROR) ## unpack model subset <- model$subset Y <- model$response[subset,,drop=FALSE] isNA <- model$isNA[subset,,drop=FALSE] dimPsi <- model$nOverdisp dimRE <- model$nRE term <- model$terms nGroups <- model$nGroups dimd <- model$nd ## unpack parameters pars <- splitParams(theta, model) if (dimRE > 0) { randomEffects <- pars$random sd <- head(sd.corr, model$nVar) corr <- tail(sd.corr, model$nCorr) dimBlock <- model$rankRE[model$rankRE>0] Sigma.inv <- getSigmaInv(sd, corr, model$nVar, dimBlock) } ## evaluate dispersion psi <- sizeHHH(theta, model, subset = if (dimPsi > 1L) subset) # else scalar or NULL ## evaluate mean mu <- meanHHH(theta, model) meanTotal <- mu$mean ############################################################ ## helper function for derivatives derivHHH.factor <- if(dimPsi > 0L){ # NegBin psiPlusMu <- psi + meanTotal # also used below for calculation of grPsi psiYpsiMu <- (psi+Y) / psiPlusMu Y/meanTotal - psiYpsiMu } else { # Poisson Y/meanTotal - 1 } derivHHH <- function (dmu) derivHHH.factor * dmu ## go through groups of parameters and compute the gradient of each component computeGrad <- function(mean.comp){ grad.fe <- numeric(0L) grad.re <- numeric(0L) for(i in seq_len(nGroups)){ comp <- term["offsetComp",i][[1]] Xit<- term["terms",i][[1]] # eiter 1 or a matrix with values if(is.matrix(Xit)){ Xit <- Xit[subset,,drop=FALSE] } summ <- get(term["summ",i][[1]]) dTheta <- derivHHH(mean.comp[[comp]]*Xit) dTheta[isNA] <- 0 # dTheta must not contain NA's (set NA's to 0) if(term["unitSpecific",i][[1]]){ which <- term["which",i][[1]] dTheta <- summ(dTheta)[ which ] grad.fe <- c(grad.fe,dTheta) } else if(term["random",i][[1]]){ Z <- term["Z.intercept",i][[1]] "%m%" <- get(term["mult",i][[1]]) dRTheta <- .colSums(dTheta %m% Z, length(subset), term["dim.re",i][[1]]) grad.re <- c(grad.re, dRTheta) grad.fe <- c(grad.fe, sum(dTheta)) } else{ grad.fe <- c(grad.fe, summ(dTheta)) } } list(fe=grad.fe, re=grad.re) } gradients <- computeGrad(mu[c("epi.own","epi.neighbours","endemic")]) ## gradient for parameter vector of the neighbourhood weights grd <- if (dimd > 0L) { dneOffset <- model$offset[[2L]](pars$d, type="gradient") ##<- this is always a list (of length dimd) of matrices onescore.d <- function (dneoff) { dmudd <- mu$ne.exppred * dneoff[subset,,drop=FALSE] grd.terms <- derivHHH(dmudd) sum(grd.terms, na.rm=TRUE) } unlist(clapply(dneOffset, onescore.d), recursive=FALSE, use.names=FALSE) } else numeric(0L) ## gradient for overdispersion parameter psi grPsi <- if(dimPsi > 0L){ dPsiMat <- psi * (digamma(Y+psi) - digamma(psi) + log(psi) + 1 - log(psiPlusMu) - psiYpsiMu) .colSumsGrouped(dPsiMat, model$indexPsi) } else numeric(0L) ## add penalty to random effects gradient s.pen <- if(dimRE > 0) c(Sigma.inv %*% randomEffects) else numeric(0L) if(length(gradients$re) != length(s.pen)) stop("oops... lengths of s(b) and Sigma.inv %*% b do not match") grRandom <- c(gradients$re - s.pen) ## Done res <- c(gradients$fe, grd, grPsi, grRandom) res } penFisher <- function(theta, sd.corr, model, attributes=FALSE) { if(any(is.na(theta))) stop("NAs in regression parameters.", ADVICEONERROR) ## unpack model subset <- model$subset Y <- model$response[subset,,drop=FALSE] isNA <- model$isNA[subset,,drop=FALSE] dimPsi <- model$nOverdisp dimRE <- model$nRE term <- model$terms nGroups <- model$nGroups dimd <- model$nd dimFE <- model$nFE idxFE <- model$indexFE idxRE <- model$indexRE indexPsi <- model$indexPsi ## unpack parameters pars <- splitParams(theta, model) if (dimRE > 0) { randomEffects <- pars$random sd <- head(sd.corr, model$nVar) corr <- tail(sd.corr, model$nCorr) dimBlock <- model$rankRE[model$rankRE>0] Sigma.inv <- getSigmaInv(sd, corr, model$nVar, dimBlock) } ## evaluate dispersion psi <- sizeHHH(theta, model, subset = if (dimPsi > 1L) subset) # else scalar or NULL ## evaluate mean mu <- meanHHH(theta, model) meanTotal <- mu$mean ############################################################ ## helper functions for derivatives: if (dimPsi > 0L) { # negbin psiPlusY <- psi + Y psiPlusMu <- psi + meanTotal psiPlusMu2 <- psiPlusMu^2 psiYpsiMu <- psiPlusY / psiPlusMu psiYpsiMu2 <- psiPlusY / psiPlusMu2 deriv2HHH.fac1 <- psiYpsiMu2 - Y / (meanTotal^2) deriv2HHH.fac2 <- Y / meanTotal - psiYpsiMu ## psi-related derivatives dThetadPsi.fac <- psi * (psiYpsiMu2 - 1/psiPlusMu) dThetadPsi <- function(dTheta){ dThetadPsi.fac * dTheta } dPsiMat <- psi * (digamma(psiPlusY) - digamma(psi) + log(psi) + 1 - log(psiPlusMu) - psiYpsiMu) # as in penScore() dPsidPsiMat <- psi^2 * ( trigamma(psiPlusY) - trigamma(psi) + 1/psi - 1/psiPlusMu - (meanTotal-Y)/psiPlusMu2) + dPsiMat } else { # poisson deriv2HHH.fac1 <- -Y / (meanTotal^2) deriv2HHH.fac2 <- Y / meanTotal - 1 } deriv2HHH <- function(dTheta_l, dTheta_k, dTheta_lk){ dTheta_l * dTheta_k * deriv2HHH.fac1 + dTheta_lk * deriv2HHH.fac2 } ## go through groups of parameters and compute the hessian of each component computeFisher <- function(mean.comp){ # initialize hessian hessian.FE.FE <- matrix(0,dimFE,dimFE) hessian.FE.RE <- matrix(0,dimFE,dimRE) hessian.RE.RE <- matrix(0,dimRE,dimRE) hessian.FE.Psi <- matrix(0,dimFE,dimPsi) hessian.Psi.RE <- matrix(0,dimPsi,dimPsi+dimRE) # CAVE: contains PsiPsi and PsiRE hessian.FE.d <- matrix(0,dimFE,dimd) hessian.d.d <- matrix(0,dimd,dimd) hessian.d.Psi <- matrix(0,dimd,dimPsi) hessian.d.RE <- matrix(0,dimd,dimRE) ## derivatives wrt neighbourhood weight parameters d if (dimd > 0L) { phi.doff <- function (dneoff) { mu$ne.exppred * dneoff[subset,,drop=FALSE] } ## for type %in% c("gradient", "hessian"), model$offset[[2L]] always ## returns a list of matrices. It has length(pars$d) elements for the ## gradient and length(pars$d)*(length(pars$d)+1)/2 for the hessian. dneOffset <- model$offset[[2L]](pars$d, type="gradient") dmudd <- lapply(dneOffset, phi.doff) d2neOffset <- model$offset[[2L]](pars$d, type="hessian") d2mudddd <- lapply(d2neOffset, phi.doff) ## d l(theta,x) /dd dd (fill only upper triangle, BY ROW) ij <- 0L for (i in seq_len(dimd)) { for (j in i:dimd) { ij <- ij + 1L #= dimd*(i-1) + j - (i-1)*i/2 # for j >= i ## d2mudddd contains upper triangle by row (=lowertri by column) d2ij <- deriv2HHH(dmudd[[i]], dmudd[[j]], d2mudddd[[ij]]) hessian.d.d[i,j] <- sum(d2ij, na.rm=TRUE) } } } if (dimPsi > 0L) { ## d l(theta,x) /dpsi dpsi dPsidPsi <- .colSumsGrouped(dPsidPsiMat, indexPsi) hessian.Psi.RE[,seq_len(dimPsi)] <- if (dimPsi == 1L) { dPsidPsi } else { diag(dPsidPsi) } ## d l(theta) / dd dpsi for (i in seq_len(dimd)) { # will not be run if dimd==0 ## dPsi.i <- colSums(dThetadPsi(dmudd[[i]]),na.rm=TRUE) ## hessian.d.Psi[i,] <- if(dimPsi==1L) sum(dPsi.i) else dPsi.i[order(indexPsi)] hessian.d.Psi[i,] <- .colSumsGrouped(dThetadPsi(dmudd[[i]]), indexPsi) } } ## i.fixed <- function(){ if(random.j){ Z.j <- term["Z.intercept",j][[1]] "%mj%" <- get(term["mult",j][[1]]) hessian.FE.RE[idxFE==i,idxRE==j] <<- colSums(didj %mj% Z.j) ##<- didj must not contain NA's (all NA's set to 0) dIJ <- sum(didj,na.rm=TRUE) # fixed on 24/09/2012 } else if(unitSpecific.j){ dIJ <- colSums(didj,na.rm=TRUE)[ which.j ] } else { dIJ <- sum(didj,na.rm=TRUE) } hessian.FE.FE[idxFE==i,idxFE==j] <<- dIJ } ## i.unit <- function(){ if(random.j){ Z.j <- term["Z.intercept",j][[1]] "%mj%" <- get(term["mult",j][[1]]) dIJ <- colSums(didj %mj% Z.j) # didj must not contain NA's (all NA's set to 0) hessian.FE.RE[idxFE==i,idxRE==j] <<- diag(dIJ)[ which.i, ] # FIXME: does not work if type="car" dIJ <- dIJ[ which.i ] # added which.i subsetting in r432 } else if(unitSpecific.j){ dIJ <- diag(colSums(didj))[ which.i, which.j ] } else { dIJ <- colSums(didj)[ which.i ] } hessian.FE.FE[idxFE==i,idxFE==j] <<- dIJ } ## i.random <- function(){ if(random.j){ Z.j <- term["Z.intercept",j][[1]] "%mj%" <- get(term["mult",j][[1]]) hessian.FE.RE[idxFE==i,idxRE==j] <<- colSums(didj %mj% Z.j) hessian.FE.RE[idxFE==j,idxRE==i] <<- colSums(didj %m% Z.i) if(length(Z.j)==1 & length(Z.i)==1){ Z <- Z.i*Z.j hessian.RE.RE[which(idxRE==i),idxRE==j] <<- diag(colSums( didj %m% Z)) } else if(length(Z.j)==1 & length(Z.i)>1){ #* Z.j <- diag(nrow=model$nUnits) for(k in seq_len(ncol(Z.j))){ Z <- Z.i*Z.j[,k] hessian.RE.RE[idxRE==i,which(idxRE==j)[k]] <<- colSums( didj %m% Z) } } else if(length(Z.j)>1 & length(Z.i)==1){ #* Z.i <- diag(nrow=model$nUnits) for(k in seq_len(ncol(Z.i))){ Z <- Z.i[,k]*Z.j hessian.RE.RE[which(idxRE==i)[k],idxRE==j] <<- colSums( didj %mj% Z) } } else { for(k in seq_len(ncol(Z.j))){ Z <- Z.i*Z.j[,k] hessian.RE.RE[which(idxRE==i)[k],idxRE==j] <<- colSums( didj %m% Z) } } dIJ <- sum(didj) } else if(unitSpecific.j){ dIJ <- colSums(didj %m% Z.i) hessian.FE.RE[idxFE==j,idxRE==i] <<- diag(dIJ)[ which.j, ] dIJ <- dIJ[ which.j ] } else { hessian.FE.RE[idxFE==j,idxRE==i] <<- colSums(didj %m% Z.i) dIJ <- sum(didj) } hessian.FE.FE[idxFE==i,idxFE==j] <<- dIJ } ##---------------------------------------------- for(i in seq_len(nGroups)){ #go through rows of hessian # parameter group belongs to which components comp.i <- term["offsetComp",i][[1]] # get covariate value Xit <- term["terms",i][[1]] # eiter 1 or a matrix with values if(is.matrix(Xit)){ Xit <- Xit[subset,,drop=FALSE] } m.Xit <- mean.comp[[comp.i]] * Xit random.i <- term["random",i][[1]] unitSpecific.i <- term["unitSpecific",i][[1]] ## fill psi-related entries and select fillHess function if (random.i) { Z.i <- term["Z.intercept",i][[1]] # Z.i and %m% (of i) determined here "%m%" <- get(term["mult",i][[1]]) # will also be used in j's for loop fillHess <- i.random if (dimPsi > 0L) { dThetadPsiMat <- dThetadPsi(m.Xit) hessian.FE.Psi[idxFE==i,] <- .colSumsGrouped(dThetadPsiMat, indexPsi) dThetadPsi.i <- .colSums(dThetadPsiMat %m% Z.i, length(subset), term["dim.re",i][[1]], na.rm=TRUE) if (dimPsi==1L) { hessian.Psi.RE[,dimPsi + which(idxRE==i)] <- dThetadPsi.i } else { hessian.Psi.RE[cbind(indexPsi,dimPsi + which(idxRE==i))] <- dThetadPsi.i ## FIXME: does not work with type="car" } } } else if (unitSpecific.i) { which.i <- term["which",i][[1]] fillHess <- i.unit if (dimPsi > 0L) { dThetadPsi.i <- .colSums(dThetadPsi(m.Xit), length(subset), model$nUnits, na.rm=TRUE) if (dimPsi==1L) { hessian.FE.Psi[idxFE==i,] <- dThetadPsi.i[which.i] } else { hessian.FE.Psi[cbind(which(idxFE==i),indexPsi[which.i])] <- dThetadPsi.i[which.i] } } } else { fillHess <- i.fixed if (dimPsi > 0L) { ## dPsi <- colSums(dThetadPsi(m.Xit),na.rm=TRUE) ## hessian.FE.Psi[idxFE==i,] <- if (dimPsi==1L) sum(dPsi) else dPsi[order(indexPsi)] hessian.FE.Psi[idxFE==i,] <- .colSumsGrouped(dThetadPsi(m.Xit), indexPsi) } } ## fill pars$d-related entries for (j in seq_len(dimd)) { # will not be run if dimd==0 didd <- deriv2HHH(dTheta_l = m.Xit, dTheta_k = dmudd[[j]], dTheta_lk = if (comp.i == 2) dmudd[[j]] * Xit else 0) didd[isNA] <- 0 hessian.FE.d[idxFE==i,j] <- if (unitSpecific.i) { colSums(didd,na.rm=TRUE)[which.i] } else sum(didd) if (random.i) hessian.d.RE[j,idxRE==i] <- colSums(didd %m% Z.i) } ## fill other (non-psi, non-d) entries (only upper triangle, j >= i!) for(j in i:nGroups){ comp.j <- term["offsetComp",j][[1]] Xjt <- term["terms",j][[1]] # eiter 1 or a matrix with values if(is.matrix(Xjt)){ Xjt <- Xjt[subset,,drop=FALSE] } # if param i and j do not belong to the same component, d(i)d(j)=0 m.Xit.Xjt <- if (comp.i != comp.j) 0 else m.Xit * Xjt didj <- deriv2HHH(dTheta_l = m.Xit, dTheta_k = mean.comp[[comp.j]]*Xjt, dTheta_lk = m.Xit.Xjt) didj[isNA]<-0 random.j <- term["random",j][[1]] unitSpecific.j <- term["unitSpecific",j][[1]] which.j <- term["which",j][[1]] fillHess() } } ######################################################### ## fill lower triangle of hessians and combine them ######################################################## hessian <- rbind(cbind(hessian.FE.FE,hessian.FE.d,hessian.FE.Psi,hessian.FE.RE), cbind(matrix(0,dimd,dimFE),hessian.d.d,hessian.d.Psi,hessian.d.RE), cbind(matrix(0,dimPsi,dimFE+dimd),hessian.Psi.RE), cbind(matrix(0,dimRE,dimFE+dimd+dimPsi),hessian.RE.RE)) hessian[lower.tri(hessian)] <- 0 # FIXME: should already be the case! diagHessian <- diag(hessian) fisher <- -(hessian + t(hessian)) diag(fisher) <- -diagHessian return(fisher) } fisher <- computeFisher(mu[c("epi.own","epi.neighbours","endemic")]) ## add penalty for random effects pen <- matrix(0, length(theta), length(theta)) Fpen <- if(dimRE > 0){ thetaIdxRE <- seq.int(to=length(theta), length.out=dimRE) pen[thetaIdxRE,thetaIdxRE] <- Sigma.inv fisher + pen } else fisher ## Done if(attributes){ attr(Fpen, "fisher") <- fisher attr(Fpen, "pen") <- pen } Fpen } ################################################# sqrtOf1pr2 <- function(r){ sqrt(1+r^2) } getSigmai <- function(sd, # vector of length dim with log-stdev's correlation, # vector of length dim with correlation # parameters, 0-length if uncorrelated dim ){ if(dim==0) return(NULL) Sigma.i <- if (length(correlation) == 0L) diag(exp(2*sd), dim) else { D <- diag(exp(sd), dim) L <- diag(nrow=dim) L[2,1:2] <- c(correlation[1],1)/sqrtOf1pr2(correlation[1]) if (dim==3) { L[3,] <- c(correlation[2:3],1)/sqrtOf1pr2(correlation[2]) L[3,2:3] <- L[3,2:3]/sqrtOf1pr2(correlation[3]) } D %*% tcrossprod(L) %*% D # ~75% quicker than D %*% L %*% t(L) %*% D } return(Sigma.i) } getSigmaiInv <- function(sd, # vector of length dim with log-stdev's correlation, # vector of length dim with correlation # parameters, 0-length if uncorrelated dim ){ if(dim==0) return(NULL) Sigma.i.inv <- if (length(correlation) == 0L) diag(exp(-2*sd), dim) else { r <- correlation Dinv <- diag(exp(-sd), dim) L <- diag(nrow=dim) L[2,1:2] <- c(-r[1],sqrtOf1pr2(r[1])) if(dim==3){ L[3,1] <- r[1]*r[3]-r[2]*sqrtOf1pr2(r[3]) L[3,2] <- -L[2,2]*r[3] L[3,3] <- sqrtOf1pr2(r[2])*sqrtOf1pr2(r[3]) } Dinv %*% crossprod(L) %*% Dinv # ~75% quicker than Dinv %*% t(L) %*% L %*% Dinv } return(Sigma.i.inv) } #* allow blockdiagonal matrix blockdiag(A,B), with A=kronecker product, B=diagonal matrix? getSigmaInv <- function(sd, correlation, dimSigma, dimBlocks, SigmaInvi=NULL){ if(is.null(SigmaInvi)){ SigmaInvi <- getSigmaiInv(sd,correlation,dimSigma) } if(length(unique(dimBlocks))==1){ # kronecker product formulation possible kronecker(SigmaInvi,diag(nrow=dimBlocks[1])) # the result is a symmetric matrix if SigmaInvi is symmetric } else { # kronecker product not possible -> correlation=0 diag(rep.int(diag(SigmaInvi),dimBlocks)) } } getSigma <- function(sd, correlation, dimSigma, dimBlocks, Sigmai=NULL){ if(is.null(Sigmai)){ Sigmai <- getSigmai(sd,correlation,dimSigma) } if(length(unique(dimBlocks))==1){ # kronecker product formulation possible kronecker(Sigmai,diag(nrow=dimBlocks[1])) # the result is a symmetric matrix if Sigmai is symmetric } else { # kronecker product not possible -> correlation=0 diag(rep.int(diag(Sigmai),dimBlocks)) } } ## Approximate marginal likelihood for variance components ## Parameter and model unpacking at the beginning (up to the ###...-line) is ## identical in marScore() and marFisher() marLogLik <- function(sd.corr, theta, model, fisher.unpen=NULL, verbose=FALSE){ dimVar <- model$nVar dimCorr <- model$nCorr dimSigma <- model$nSigma if(dimSigma == 0){ return(-Inf) } if(any(is.na(sd.corr))){ # in order to avoid nlminb from running into an infinite loop (cf. bug # report #15052), we have to emergency stop() in this case. # As of R 2.15.2, nlminb() throws an error if it receives NA from # any of the supplied functions. stop("NAs in variance parameters.", ADVICEONERROR) } sd <- head(sd.corr,dimVar) corr <- tail(sd.corr,dimCorr) pars <- splitParams(theta,model) randomEffects <- pars$random dimRE <- model$nRE dimBlocks <- model$rankRE[model$rankRE>0] Sigma.inv <- getSigmaInv(sd, corr, dimVar, dimBlocks) # if not given, calculate unpenalized part of fisher info if(is.null(fisher.unpen)){ fisher.unpen <- attr(penFisher(theta, sd.corr, model,attributes=TRUE), "fisher") } # add penalty to fisher fisher <- fisher.unpen thetaIdxRE <- seq.int(to=length(theta), length.out=dimRE) fisher[thetaIdxRE,thetaIdxRE] <- fisher[thetaIdxRE,thetaIdxRE] + Sigma.inv ############################################################ # penalized part of likelihood # compute -0.5*log(|Sigma|) - 0.5*RE' %*% Sigma.inv %*% RE # where -0.5*log(|Sigma|) = -dim(RE_i)*[Sum(sd_i) -0.5*log(1+corr_i^2)] ##lpen <- -0.5*(t(randomEffects)%*%Sigma.inv%*%randomEffects) ## the following implementation takes ~85% less computing time ! lpen <- -0.5 * crossprod(randomEffects, Sigma.inv) %*% randomEffects loglik.pen <- sum(-dimBlocks*sd) + c(lpen) if(dimCorr >0){ loglik.pen <- loglik.pen + 0.5*dimBlocks[1]*sum(log(1+corr^2)) } ## approximate marginal likelihood logdetfisher <- determinant(fisher,logarithm=TRUE)$modulus lmarg <- loglik.pen -0.5*c(logdetfisher) return(lmarg) } marScore <- function(sd.corr, theta, model, fisher.unpen=NULL, verbose=FALSE){ dimVar <- model$nVar dimCorr <- model$nCorr dimSigma <- model$nSigma if(dimSigma == 0){ return(numeric(0L)) } if(any(is.na(sd.corr))) stop("NAs in variance parameters.", ADVICEONERROR) sd <- head(sd.corr,dimVar) corr <- tail(sd.corr,dimCorr) pars <- splitParams(theta,model) randomEffects <- pars$random dimRE <- model$nRE dimBlocks <- model$rankRE[model$rankRE>0] Sigma.inv <- getSigmaInv(sd, corr, dimVar, dimBlocks) # if not given, calculate unpenalized part of fisher info if(is.null(fisher.unpen)){ fisher.unpen <- attr(penFisher(theta, sd.corr, model,attributes=TRUE), "fisher") } # add penalty to fisher fisher <- fisher.unpen thetaIdxRE <- seq.int(to=length(theta), length.out=dimRE) fisher[thetaIdxRE,thetaIdxRE] <- fisher[thetaIdxRE,thetaIdxRE] + Sigma.inv # inverse of penalized fisher info F.inv <- try(solve(fisher),silent=TRUE) if(inherits(F.inv,"try-error")){ if(verbose) cat(" WARNING (in marScore): penalized Fisher is singular!\n") #return(rep.int(0,dimSigma)) ## continuing with the generalized inverse often works, otherwise we would ## have to stop() here, because nlminb() cannot deal with NA's F.inv <- ginv(fisher) } F.inv.RE <- F.inv[thetaIdxRE,thetaIdxRE] ############################################################ ## compute marginal score and fisher for each variance component # initialize score and fisher info marg.score <- rep.int(NA_real_,dimSigma) ## specify functions for derivatives deriv1 <- switch(dimVar, dSigma1, dSigma2, dSigma3) d1Sigma <- deriv1(sd, corr) Sigmai.inv <- getSigmaiInv(sd, corr, dimVar) # derivation of log determinant # -.5*tr(Sigma^-1 %*% dSigma/ds) = -R (for sd.i) # = R*corr.i/(corr.i^2+1) (for corr.i) d1logDet <- c(-dimBlocks,dimBlocks[1]*corr/(corr^2+1)) # go through all variance parameters for(i in seq_len(dimSigma)){ dSi <- -Sigmai.inv %*% d1Sigma[,,i] %*% Sigmai.inv # CAVE: sign dS.i <- getSigma(dimSigma=dimVar,dimBlocks=dimBlocks,Sigmai=dSi) #dlpen.i <- -0.5* t(randomEffects) %*% dS.i %*% randomEffects # ~85% faster implementation using crossprod() avoiding "slow" t(): dlpen.i <- -0.5 * crossprod(randomEffects, dS.i) %*% randomEffects #tr.d1logDetF <- sum(diag(F.inv.RE %*% dS.i)) tr.d1logDetF <- sum(F.inv.RE * dS.i) # since dS.i is symmetric #<- needs 1/100 (!) of the computation time of sum(diag(F.inv.RE %*% dS.i)) marg.score[i] <- d1logDet[i] + c(dlpen.i) - 0.5 * tr.d1logDetF } return(marg.score) } marFisher <- function(sd.corr, theta, model, fisher.unpen=NULL, verbose=FALSE){ dimVar <- model$nVar dimCorr <- model$nCorr dimSigma <- model$nSigma if(dimSigma == 0){ return(matrix(numeric(0L),0L,0L)) } if(any(is.na(sd.corr))) stop("NAs in variance parameters.", ADVICEONERROR) sd <- head(sd.corr,dimVar) corr <- tail(sd.corr,dimCorr) pars <- splitParams(theta,model) randomEffects <- pars$random dimRE <- model$nRE dimBlocks <- model$rankRE[model$rankRE>0] Sigma.inv <- getSigmaInv(sd, corr, dimVar, dimBlocks) # if not given, calculate unpenalized part of fisher info if(is.null(fisher.unpen)){ fisher.unpen <- attr(penFisher(theta, sd.corr, model,attributes=TRUE), "fisher") } # add penalty to fisher fisher <- fisher.unpen thetaIdxRE <- seq.int(to=length(theta), length.out=dimRE) fisher[thetaIdxRE,thetaIdxRE] <- fisher[thetaIdxRE,thetaIdxRE] + Sigma.inv # inverse of penalized fisher info F.inv <- try(solve(fisher),silent=TRUE) if(inherits(F.inv,"try-error")){ if(verbose) cat(" WARNING (in marFisher): penalized Fisher is singular!\n") #return(matrix(Inf,dimSigma,dimSigma)) ## continuing with the generalized inverse often works, otherwise we would ## have to stop() here, because nlminb() cannot deal with NA's F.inv <- ginv(fisher) } F.inv.RE <- F.inv[thetaIdxRE,thetaIdxRE] ## declare F.inv.RE as a symmetric matrix? ##F.inv.RE <- new("dsyMatrix", Dim = dim(F.inv.RE), x = c(F.inv.RE)) ## -> no, F.inv.RE %*% dS.i becomes actually slower (dS.i is a "sparseMatrix") ############################################################ marg.hesse <- matrix(NA_real_,dimSigma,dimSigma) ## specify functions for derivatives deriv1 <- switch(dimVar,dSigma1, dSigma2, dSigma3) deriv2 <- switch(dimVar,d2Sigma1, d2Sigma2, d2Sigma3) d1Sigma <- deriv1(sd, corr) d2Sigma <- deriv2(sd, corr, d1Sigma) Sigmai.inv <- getSigmaiInv(sd, corr, dimVar) # 2nd derivatives of log determinant d2logDet <- diag(c(rep.int(0,dimVar),-dimBlocks[1]*(corr^2-1)/(corr^2+1)^2),dimSigma) # function to convert dS.i and dS.j matrices to sparse matrix objects dS2sparse <- if (dimCorr > 0) function (x) { forceSymmetric(as(x, "sparseMatrix")) # dS.i & dS.j are symmetric } else function (x) { #as(x, "diagonalMatrix") new("ddiMatrix", Dim = dim(x), diag = "N", x = diag(x)) } # go through all variance parameters for(i in seq_len(dimSigma)){ # compute first derivative of the penalized Fisher info (-> of Sigma^-1) # with respect to the i-th element of Sigma (= kronecker prod. of Sigmai and identity matrix) # Harville Ch15, Eq. 8.15: (d/d i)S^-1 = - S^-1 * (d/d i) S * S^-1 SigmaiInv.d1i <- Sigmai.inv %*% d1Sigma[,,i] dSi <- -SigmaiInv.d1i %*% Sigmai.inv dS.i <- getSigma(dimSigma=dimVar,dimBlocks=dimBlocks,Sigmai=dSi) dS.i <- dS2sparse(dS.i) # compute second derivatives for(j in i:dimSigma){ # compute (d/d j) S^-1 SigmaiInv.d1j <- Sigmai.inv %*% d1Sigma[,,j] dSj <- -SigmaiInv.d1j %*% Sigmai.inv dS.j <- getSigma(dimSigma=dimVar,dimBlocks=dimBlocks,Sigmai=dSj) dS.j <- dS2sparse(dS.j) # compute (d/di dj) S^-1 #dS.ij <- getSigma(dimSigma=dimVar,dimBlocks=dimBlocks, # Sigmai=d2Sigma[[i]][,,j]) # compute second derivatives of Sigma^-1 (Harville Ch15, Eq 9.2) d2S <- (- Sigmai.inv %*% d2Sigma[[i]][,,j] + SigmaiInv.d1i %*% SigmaiInv.d1j + SigmaiInv.d1j %*% SigmaiInv.d1i) %*% Sigmai.inv dSij <- getSigma(dimSigma=dimVar,dimBlocks=dimBlocks,Sigmai=d2S) #d2lpen.i <- -0.5* t(randomEffects) %*% dSij %*% randomEffects # ~85% faster implementation using crossprod() avoiding "slow" t(): d2lpen.i <- -0.5 * crossprod(randomEffects, dSij) %*% randomEffects # compute second derivative of log-determinant of penFisher mpart1 <- dS.j %*% F.inv.RE # 3 times as fast as the other way round mpart2 <- dS.i %*% F.inv.RE mpart <- mpart1 %*% mpart2 ## speed-ups: - tr(F.inv.RE %*% dSij) simply equals sum(F.inv.RE * dSij) ## - accelerate matrix product by sparse matrices dS.i and dS.j ## - use cyclic permutation of trace: ## tr(F.inv.RE %*% dS.j %*% F.inv.RE %*% dS.i) = ## tr(dS.j %*% F.inv.RE %*% dS.i %*% F.inv.RE) tr.d2logDetF <- -sum(Matrix::diag(mpart)) + sum(F.inv.RE * dSij) marg.hesse[i,j] <- marg.hesse[j,i] <- d2logDet[i,j] + d2lpen.i - 0.5 * tr.d2logDetF } } marg.Fisher <- as.matrix(-marg.hesse) return(marg.Fisher) } ## first and second derivatives of the covariance matrix dSigma1 <- function(sd,corr){ derivs <- array(2*exp(2*sd), c(1,1,1)) return(derivs) } #d1: result of dSigma1 d2Sigma1 <- function(sd,corr,d1){ return(list(dsd1=2*d1)) } dSigma2 <- function(sd,corr){ derivs <- array(0,c(2,2,3)) dSigma <- diag(2*exp(2*sd)) if(length(corr)>0){ dSigma[1,2] <- dSigma[2,1] <- exp(sum(sd[1:2]))*corr[1]/sqrtOf1pr2(corr[1]) # derivative of corr_1 derivs[2,1,3] <- derivs[1,2,3] <- exp(sum(sd[1:2]))/(sqrtOf1pr2(corr[1])^3) } derivs[,,1:2] <- dSigma # derivative of sd_1 derivs[2,2,1] <- 0 # derivative of sd_2 derivs[1,1,2] <- 0 return(derivs) } d2Sigma2 <- function(sd,corr, d1){ derivs <- array(0,c(2,2,3)) result <- list(dsd1=d1, dsd2=derivs, dcorr1=derivs) result$dsd1[1,1,1] <- 2*d1[1,1,1] result$dsd1[2,2,2] <- 0 result$dsd2[,,2:3]<- d1[,,2:3] result$dsd2[2,2,2] <- 2*d1[2,2,2] if(length(corr)>0){ result$dcorr1[2,1,3] <- result$dcorr1[1,2,3] <- -(3*corr[1]*exp(sum(sd[1:2])))/(sqrtOf1pr2(corr[1])^5) } return(result) } dSigma3 <- function(sd,corr){ derivs <- array(0,c(3,3,6)) dSigma <- diag(2*exp(2*sd)) # if(length(corr)>0){ dSigma[1,2] <- dSigma[2,1] <- exp(sum(sd[1:2]))*corr[1]/sqrtOf1pr2(corr[1]) # dSigma[1,3] <- dSigma[3,1] <- exp(sum(sd[c(1,3)]))*corr[2]/sqrtOf1pr2(corr[2]) # dSigma[2,3] <- dSigma[3,2] <- exp(sum(sd[c(2,3)]))*(corr[1]*corr[2]*sqrtOf1pr2(corr[3])+corr[3])/prod(sqrtOf1pr2(corr[1:3]))# # derivative of corr_1 derivs[2,1,4] <- derivs[1,2,4] <- exp(sum(sd[1:2]))/(sqrtOf1pr2(corr[1])^3) derivs[3,2,4] <- derivs[2,3,4] <-(exp(sum(sd[2:3]))*(corr[2]*sqrtOf1pr2(corr[3])-prod(corr[c(1,3)])))/ (prod(sqrtOf1pr2(corr[2:3]))*(sqrtOf1pr2(corr[1])^3))# # derivative of corr_2 derivs[3,1,5] <- derivs[1,3,5] <- exp(sum(sd[c(3,1)]))/(sqrtOf1pr2(corr[2])^3)# derivs[3,2,5] <- derivs[2,3,5] <- (exp(sum(sd[2:3]))*(corr[1]*sqrtOf1pr2(corr[3])-prod(corr[c(2,3)])))/ (prod(sqrtOf1pr2(corr[c(1,3)]))*(sqrtOf1pr2(corr[2])^3)) # # derivative of corr_3 derivs[3,2,6] <- derivs[2,3,6] <- exp(sum(sd[2:3]))/ (prod(sqrtOf1pr2(corr[c(1,2)]))*(sqrtOf1pr2(corr[3])^3)) } derivs[,,1:3] <- dSigma # derivative of sd_1 derivs[2:3,2:3,1] <- 0 # derivative of sd_2 derivs[1,c(1,3),2] <- derivs[3,c(1,3),2] <- 0 # derivative of sd_3 derivs[1:2,1:2,3] <- 0 return(derivs) } d2Sigma3 <- function(sd,corr, d1) { derivs <- array(0,c(3,3,6)) result <- list(dsd1=d1, dsd2=derivs, dsd3=derivs, dcorr1=derivs, dcorr2=derivs, dcorr3=derivs) result$dsd1[1,1,1] <- 2*d1[1,1,1] result$dsd1[2,2:3,2] <- result$dsd1[3,2,2] <- 0 result$dsd1[2:3,2:3,3] <- 0 # result$dsd2[,,2]<- d1[,,2] result$dsd2[2,2,2] <- 2*d1[2,2,2] result$dsd2[3,2,3] <- result$dsd2[2,3,3] <- d1[3,2,3]# result$dsd3[,,3]<- d1[,,3] result$dsd3[3,3,3] <- 2*d1[3,3,3]# if (length(corr)>0) { result$dsd1[2:3,2:3,4] <- 0 result$dsd1[2:3,2:3,5] <- 0 result$dsd1[,,6] <- 0 result$dsd2[,,c(4,6)] <- d1[,,c(4,6)] result$dsd2[3,2,5] <- result$dsd2[2,3,5] <- d1[3,2,5] result$dsd3[3,2,4] <- result$dsd3[2,3,4] <- d1[3,2,4] result$dsd3[,,c(5,6)] <- d1[,,c(5,6)] # derivative of corr_1 result$dcorr1[2,1,4] <- result$dcorr1[1,2,4] <- -(exp(sum(sd[1:2]))*3*corr[1])/(sqrtOf1pr2(corr[1])^5) # result$dcorr1[3,2,4] <- result$dcorr1[2,3,4] <- -(exp(sum(sd[2:3]))*(corr[1]*(3*corr[2]*sqrtOf1pr2(corr[3])-2*prod(corr[c(1,3)])) + corr[3]) )/ (prod(sqrtOf1pr2(corr[2:3]))*(sqrtOf1pr2(corr[1])^5)) # result$dcorr1[3,2,5] <- result$dcorr1[2,3,5] <- (exp(sum(sd[2:3]))*(sqrtOf1pr2(corr[3])+prod(corr[1:3])))/ (prod(sqrtOf1pr2(corr[c(1,2)])^3)*sqrtOf1pr2(corr[3])) result$dcorr1[3,2,6] <- result$dcorr1[2,3,6] <- -(exp(sum(sd[2:3]))*corr[1])/ (prod(sqrtOf1pr2(corr[c(1,3)])^3)*sqrtOf1pr2(corr[2])) # derivative of corr_2 result$dcorr2[3,1,5] <- result$dcorr2[1,3,5] <- -(exp(sum(sd[c(3,1)]))*3*corr[2])/(sqrtOf1pr2(corr[2])^5) result$dcorr2[3,2,5] <- result$dcorr2[2,3,5] <- -(exp(sum(sd[2:3]))*(corr[2]*(3*corr[1]*sqrtOf1pr2(corr[3])-2*prod(corr[c(2,3)])) + corr[3]) )/ (prod(sqrtOf1pr2(corr[c(1,3)]))*(sqrtOf1pr2(corr[2])^5)) result$dcorr2[3,2,6] <- result$dcorr2[2,3,6] <- -exp(sum(sd[2:3]))*corr[2] / # SM @ 14/05/13: formula fixed, marFisher() # and hhh4()$Sigma.cov[5,6] are now correct (prod(sqrtOf1pr2(corr[c(2,3)])^3)*sqrtOf1pr2(corr[1])) # derivative of corr_3 result$dcorr3[3,2,6] <- result$dcorr3[2,3,6] <- -(exp(sum(sd[2:3]))*3*corr[3])/ (prod(sqrtOf1pr2(corr[c(1,2)]))*sqrtOf1pr2(corr[3])^5) } return(result) } ### Various optimizers updateParams_nlminb <- function (start, ll, sc, fi, ..., control) { lower <- control[["lower"]]; control$lower <- NULL upper <- control[["upper"]]; control$upper <- NULL scale <- control[["scale"]]; control$scale <- NULL negll <- function (x, ...) -ll(x, ...) negsc <- function (x, ...) -sc(x, ...) ## run the optimization res <- nlminb(start, negll, gradient=negsc, hessian=fi, ..., scale=scale, control=control, lower=lower, upper=upper) if (any(is.finite(c(lower, upper)))) checkParBounds(res$par, lower, upper) ## Done list(par=res$par, ll=-res$objective, rel.tol=getRelDiff(res$par, start), convergence=res$convergence, message=res$message) } updateParams_nr <- function (start, ll, sc, fi, ..., control) { ## objective function llscfi <- function (x, ...) { loglik <- ll(x, ...) attr(loglik, "score") <- sc(x, ...) attr(loglik, "fisher") <- fi(x, ...) loglik } ## run the optimization res <- newtonRaphson(start, llscfi, ..., control=control, verbose=control$verbose) ## Done list(par=res$coefficients, ll=res$loglikelihood, rel.tol=getRelDiff(res$coefficients, start), convergence=res$convergence, message=res$message) } updateParams_nlm <- function (start, ll, sc, fi, ..., control) { ## objective function negllscfi <- function (x, ...) { negloglik <- -ll(x, ...) attr(negloglik, "gradient") <- -sc(x, ...) attr(negloglik, "hessian") <- fi(x, ...) negloglik } ## run the optimization res <- do.call("nlm", args=c(alist(p=start, f=negllscfi, ...), control)) ## Done list(par=res$estimate, ll=-res$minimum, rel.tol=getRelDiff(res$estimate, start), convergence=as.numeric(res$code>2), message=res$message) ## nlm returns convergence status in $code, 1-2 indicate convergence, ## 3-5 indicate non-convergence } updateParams_optim <- function (start, ll, sc, fi, ..., control) { ## Note: "fi" is not used in optim method <- control[["method"]]; control$method <- NULL lower <- control[["lower"]]; control$lower <- NULL upper <- control[["upper"]]; control$upper <- NULL res <- optim(start, ll, sc, ..., # Note: control$fnscale is negative method=method, lower=lower, upper=upper, control=control) if (any(is.finite(c(lower, upper)))) checkParBounds(res$par, lower, upper) ## Done list(par=res$par, ll=res$value, rel.tol=getRelDiff(res$par, start), convergence=res$convergence, message=res$message) } ## Calculate relative parameter change criterion. ## We use a weaker criterion than the maximum relative parameter change ## max(abs(sd.corr.new/sd.corr - 1)) getRelDiff <- function (final, start) max(abs(final - start)) / max(abs(start)) checkParBounds <- function (par, lower, upper) { if (is.null(names(par))) names(par) <- seq_along(par) if (any(atl <- par <= lower)) cat(" WARNING: parameters reached lower bounds:", paste(names(par)[atl], par[atl], sep="=", collapse=", "), "\n") if (any(atu <- par >= upper)) cat(" WARNING: parameters reached upper bounds:", paste(names(par)[atu], par[atu], sep="=", collapse=", "), "\n") } ## default control arguments for updates defaultOptimControl <- function (method = "nlminb", lower = -Inf, upper = Inf, iter.max = NULL, verbose = 0) { if (is.null(iter.max)) iter.max <- 20 + 280*(method=="Nelder-Mead") lowVerbose <- verbose %in% 0:2 luOptimMethod <- method %in% c("Brent", "L-BFGS-B") defaults.nr <- list(scoreTol=1e-5, paramTol=1e-7, F.inc=0.01, stepFrac=0.5, niter=iter.max, verbose=verbose) defaults.nlminb <- list(iter.max=iter.max, scale=1, lower=lower, upper=upper, trace=if(lowVerbose) c(0,0,5)[verbose+1] else 1) defaults.nlm <- list(iterlim=iter.max, check.analyticals=FALSE, print.level=if(lowVerbose) c(0,0,1)[verbose+1] else 2) defaults.optim <- list(maxit=iter.max, fnscale=-1, trace=max(0,verbose-1), lower=if (luOptimMethod) lower else -Inf, upper=if (luOptimMethod) upper else Inf) switch(method, "nr" = defaults.nr, "nlm" = defaults.nlm, "nlminb" = defaults.nlminb, defaults.optim) } setOptimControl <- function (method, control, ...) { defaults <- defaultOptimControl(method, ...) cntrl <- modifyList(defaults, control) ## ensure fnscale < 0 (optim performs minimization) if (!is.null(cntrl$fnscale)) { # i.e., using optim() cntrl$method <- method # append method to control list if (cntrl$fnscale > 0) cntrl$fnscale <- -cntrl$fnscale } cntrl } ## fitHHH is the main workhorse where the iterative optimization is performed fitHHH <- function(theta, sd.corr, model, cntrl.stop=list(tol=1e-5, niter=100), cntrl.regression=list(method="nlminb"), cntrl.variance=list(method="nlminb"), verbose=0, shrinkage=FALSE) { dimFE.d.O <- model$nFE + model$nd + model$nOverdisp dimRE <- model$nRE getUpdater <- function (cntrl, start, ...) { method <- cntrl$method; cntrl$method <- NULL if (length(start) == 1 && method == "Nelder-Mead") { method <- "Brent" message("Switched optimizer from \"Nelder-Mead\" to \"Brent\"", " (dim(", deparse(substitute(start)), ")=1)") } list(paste("updateParams", if (method %in% c("nlminb", "nlm", "nr")) method else "optim", sep="_"), control = setOptimControl(method, cntrl, ...)) } ## ## artificial lower bound on intercepts of epidemic components ## reg.lower <- rep.int(-Inf, length(theta)) ## reg.lower[grep("^(ar|ne)\\.(1|ri)", model$namesFE)] <- -20 ## set optimizer for regression parameters updateRegressionControl <- getUpdater(cntrl.regression, theta, ## lower=reg.lower, iter.max=if(dimRE==0) 100, verbose=verbose+(dimRE==0)) updateRegression <- function (theta, sd.corr) do.call(updateRegressionControl[[1]], alist(theta, penLogLik, penScore, penFisher, sd.corr=sd.corr, model=model, control=updateRegressionControl[[2]])) ## set optimizer for variance parameters updateVarianceControl <- getUpdater(cntrl.variance, sd.corr, lower=-5, upper=5, verbose=verbose) updateVariance <- function (sd.corr, theta, fisher.unpen) do.call(updateVarianceControl[[1]], alist(sd.corr, marLogLik, marScore, marFisher, theta=theta, model=model, fisher.unpen=fisher.unpen, verbose=verbose>1, control=updateVarianceControl[[2]])) ## Let's go if (verbose>0) { cat(as.character(Sys.time()), ":", if (dimRE == 0) "Optimization of regression parameters" else "Iterative optimization of regression & variance parameters", "\n") } if (dimRE == 0) { # optimization of regression coefficients only parReg <- updateRegression(theta, sd.corr) theta <- parReg$par if ((convergence <- parReg$convergence) != 0 && !is.null(parReg$message)) cat("! Non-convergence message from optimizer:", parReg$message, "\n") } else { # swing between updateRegression & updateVariance convergence <- 99 i <- 0 while(convergence != 0 && (i < cntrl.stop$niter)){ i <- i+1 if (verbose>0) cat("\n") ## update regression coefficients parReg <- updateRegression(theta, sd.corr) theta <- parReg$par fisher.unpen <- attr(penFisher(theta, sd.corr, model, attributes=TRUE), "fisher") if(verbose>0) cat("Update of regression parameters: ", "max|x_0 - x_1| / max|x_0| =", parReg$rel.tol, "\n") if(parReg$convergence != 0) { if (!is.null(parReg$message)) cat("! Non-convergence message from optimizer:", parReg$message, "\n") cat("Update of regression coefficients in iteration ", i, " unreliable\n") } if(parReg$convergence > 20 && shrinkage){ cat("\n\n***************************************\nshrinkage", 0.1*theta[abs(theta)>10],"\n") theta[abs(theta)>10] <- 0.1*theta[abs(theta)>10] diag(fisher.unpen) <- diag(fisher.unpen)+1e-2 } ## update variance parameters parVar <- updateVariance(sd.corr, theta, fisher.unpen) if(verbose>0) cat("Update of variance parameters: max|x_0 - x_1| / max|x_0| =", parVar$rel.tol, "\n") if(parVar$convergence!=0) { if (!is.null(parVar$message)) print(parVar$message) cat("Update of variance parameters in iteration ", i, " unreliable\n") } ## NA values in sd.corr cause a stop() already in marLogLik() ## if(any(is.na(parVar$par))){ ## updateVarianceControl[[1]] <- "updateParams_optim" ## updateVarianceControl[[2]]$method <- ## if (length(sd.corr) == 1L) "Brent" else "Nelder-Mead" ## cat(" WARNING: at least one updated variance parameter is not a number\n", ## "\t-> NO UPDATE of variance\n", ## "\t-> SWITCHING to robust", dQuote(updateVarianceControl[[2]]$method), ## "for variance updates\n") ## } else sd.corr <- parVar$par ## overall convergence ? if( (parReg$rel.tol < cntrl.stop$tol) && (parVar$rel.tol < cntrl.stop$tol) && (parReg$convergence==0) && (parVar$convergence==0) ) convergence <- 0 ## exit loop if no more change in parameters (maybe false convergence) if (parReg$rel.tol == 0 && parVar$rel.tol == 0) break } } if(verbose > 0) { cat("\n") cat(as.character(Sys.time()), ":", if (convergence==0) "Optimization converged" else "Optimization DID NOT CONVERGE", "\n\n") } ll <- penLogLik(theta=theta,sd.corr=sd.corr,model=model) fisher <- penFisher(theta=theta,sd.corr=sd.corr,model=model) fisher.var <- marFisher(sd.corr=sd.corr, theta=theta, model=model, fisher.unpen=fisher.unpen) list(fixef=head(theta,dimFE.d.O), ranef=tail(theta,dimRE), sd.corr=sd.corr, loglik=ll, fisher=fisher, fisherVar=fisher.var, convergence=convergence, dim=c(fixed=dimFE.d.O,random=dimRE)) } ## check analytical score functions and Fisher informations for ## a given model (the result of interpretControl(control, stsObj)) ## and given parameters theta (regression par.) and sd.corr (variance par.). ## This is a wrapper around functionality of the numDeriv and maxLik packages. checkAnalyticals <- function (model, theta = model$initialTheta, sd.corr = model$initialSigma, methods = c("numDeriv","maxLik")) { cat("\nPenalized log-likelihood:\n") resCheckPen <- sapply(methods, function(derivMethod) { if (requireNamespace(derivMethod)) { do.call(paste("checkDerivatives", derivMethod, sep="."), args=alist(penLogLik, penScore, penFisher, theta, sd.corr=sd.corr, model=model)) } }, simplify=FALSE, USE.NAMES=TRUE) if (length(resCheckPen) == 1L) resCheckPen <- resCheckPen[[1L]] resCheckMar <- if (length(sd.corr) == 0L) list() else { cat("\nMarginal log-likelihood:\n") fisher.unpen <- attr(penFisher(theta, sd.corr, model, attributes=TRUE), "fisher") resCheckMar <- sapply(methods, function(derivMethod) { if (requireNamespace(derivMethod)) { do.call(paste("checkDerivatives", derivMethod, sep="."), args=alist(marLogLik, marScore, marFisher, sd.corr, theta=theta, model=model, fisher.unpen=fisher.unpen)) } }, simplify=FALSE, USE.NAMES=TRUE) if (length(resCheckMar) == 1L) resCheckMar[[1L]] else resCheckMar } list(pen = resCheckPen, mar = resCheckMar) } surveillance/R/AllClass.R0000644000175100001440000000274212571306422015015 0ustar hornikusers# ------------- class sts ---------------------------------------- sts <- setClass( "sts", representation(epoch = "numeric", ##this slot used to be named week freq = "numeric", start = "numeric", observed = "matrix", state = "matrix", alarm = "matrix", upperbound = "matrix", neighbourhood= "matrix", populationFrac= "matrix", map = "SpatialPolygons", control = "list", #New slots added to handle proportion time series epochAsDate="logical", multinomialTS="logical")) ###################################################################### # Definition of the stsBP class for backprojections. ###################################################################### setClass( "stsBP", slots = list(ci = "array", lambda = "array"), contains = "sts") ###################################################################### # Definition of the stsNC class for nowcasts. ###################################################################### setClass( "stsNC", slots=list(reportingTriangle = "matrix", predPMF= "list", pi = "array", truth= "sts", delayCDF = "list", SR = "array"), contains = "sts") surveillance/R/twinstim.R0000644000175100001440000016402312576753373015216 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Maximum Likelihood inference for the two-component spatio-temporal intensity ### model described in Meyer et al (2012), DOI: 10.1111/j.1541-0420.2011.01684.x ### ### Copyright (C) 2009-2015 Sebastian Meyer ### $Revision: 1321 $ ### $Date: 2015-04-27 23:19:13 +0200 (Mon, 27. Apr 2015) $ ################################################################################ ## model.frame() evaluates 'subset' and '...' with 'data' utils::globalVariables(c("tile", "type", "BLOCK", ".obsInfLength", ".bdist", "area")) twinstim <- function ( endemic, epidemic, siaf, tiaf, qmatrix = data$qmatrix, data, subset, t0 = data$stgrid$start[1], T = tail(data$stgrid$stop,1), na.action = na.fail, start = NULL, partial = FALSE, epilink = "log", control.siaf = list(F=list(), Deriv=list()), optim.args = list(), finetune = FALSE, model = FALSE, cumCIF = FALSE, cumCIF.pb = interactive(), cores = 1, verbose = TRUE ) { #################### ### Preparations ### #################### ptm <- proc.time() cl <- match.call() partial <- as.logical(partial) finetune <- if (partial) FALSE else as.logical(finetune) ## (inverse) link function for the epidemic linear predictor of event marks epilink <- match.arg(epilink, choices = c("log", "identity")) epilinkinv <- switch(epilink, "log" = exp, "identity" = identity) ## Clean the model environment when exiting the function on.exit(suppressWarnings(rm(cl, cumCIF, cumCIF.pb, data, doHessian, eventDists, eventsData, finetune, neghess, fisherinfo, fit, fixed, functions, globalEndemicIntercept, h.Intercept, inmfe, initpars, ll, negll, loglik, msgConvergence, msgNotConverged, mfe, mfhEvents, mfhGrid, model, my.na.action, na.action, namesOptimUser, namesOptimArgs, nlminbControl, nlminbRes, nlmObjective, nlmControl, nlmRes, nmRes, optim.args, optimArgs, control.siaf, optimMethod, optimRes, optimRes1, optimValid, origenv.endemic, origenv.epidemic, partial, partialloglik, ptm, qmatrix, res, negsc, score, start, subset, tmpexpr, typeSpecificEndemicIntercept, useScore, verbose, whichfixed, inherits = FALSE))) ## also set fixed[st]iafpars to FALSE (for free posteriori evaluations, and ## to be defined for score function evaluation with optim.args=NULL) on.exit(fixedsiafpars <- fixedtiafpars <- FALSE, add = TRUE) ### Verify that 'data' inherits from "epidataCS" if (!inherits(data, "epidataCS")) { stop("'data' must inherit from class \"epidataCS\"") } ### Check time range if (!isScalar(t0) || !isScalar(T)) { stop("endpoints 't0' and 'T' must be single numbers") } if (T <= t0) { stop("'T' must be greater than 't0'") } if (!t0 %in% data$stgrid$start) { justBeforet0 <- match(TRUE, data$stgrid$start > t0) - 1L # if 't0' is beyond the time range covered by 'data$stgrid' if (is.na(justBeforet0)) justBeforet0 <- length(data$stgrid$start) # t0 was too big if (justBeforet0 == 0L) justBeforet0 <- 1L # t0 was too small t0 <- data$stgrid$start[justBeforet0] message("replaced 't0' by the value ", t0, " (must be a 'start' time of 'data$stgrid')") } if (!T %in% data$stgrid$stop) { justAfterT <- match(TRUE, data$stgrid$stop > T) # if 'T' is beyond the time range covered by 'data$stgrid' if (is.na(justAfterT)) justAfterT <- length(data$stgrid$stop) # T was too big T <- data$stgrid$stop[justAfterT] message("replaced 'T' by the value ", T, " (must be a 'stop' time of 'data$stgrid')") } ### Subset events eventsData <- if (missing(subset)) data$events@data else { do.call("subset.data.frame", args = list( x = quote(data$events@data), subset = cl$subset, drop = FALSE )) } ############################################################# ### Build up a model.frame for both components separately ### ############################################################# ########################## ### epidemic component ### ########################## ### Parse epidemic formula if (missing(epidemic)) { origenv.epidemic <- parent.frame() epidemic <- ~ 0 } else { origenv.epidemic <- environment(epidemic) environment(epidemic) <- environment() ## such that t0 and T are found in the subset expression below } epidemic <- terms(epidemic, data = eventsData, keep.order = TRUE) if (!is.null(attr(epidemic, "offset"))) { warning("offsets are not implemented for the 'epidemic' component") } ### Generate model frame # na.action mod such that for simulated epidataCS, where events of the # prehistory have missing 'BLOCK' indexes, those NA's do not matter. # ok because actually, 'eventBlocks' are only used in the partial likelihood # and there only eventBlocks[includes] is used (i.e. no prehistory events) my.na.action <- function (object, ...) { prehistevents <- row.names(object)[object[["(time)"]] <= t0] if (length(prehistevents) == 0L) return(na.action(object, ...)) origprehistblocks <- object[prehistevents, "(BLOCK)"] # all NA object[prehistevents, "(BLOCK)"] <- 0L # temporary set non-NA xx <- na.action(object, ...) xx[match(prehistevents,row.names(xx),nomatch=0L), "(BLOCK)"] <- origprehistblocks[prehistevents %in% row.names(xx)] xx } mfe <- model.frame(epidemic, data = eventsData, subset = time + eps.t > t0 & time <= T, # here we can have some additional rows (individuals) compared to mfhEvents, which is established below! # Namely those with time in (t0-eps.t; t0], i.e. still infective individuals, which are part of the prehistory of the process na.action = my.na.action, # since R 2.10.0 patched also works with epidemic = ~1 and na.action=na.fail (see PR#14066) drop.unused.levels = FALSE, time = time, tile = tile, type = type, eps.t = eps.t, eps.s = eps.s, BLOCK = BLOCK, obsInfLength = .obsInfLength, bdist = .bdist) ### Extract essential information from model frame # 'inmfe' indexes rows of data$events@data and is necessary for subsetting # influenceRegion (list incompatible with model.frame) and coordinates. # Note: model.frame() takes row.names from data inmfe <- which(row.names(data$events@data) %in% row.names(mfe)) N <- length(inmfe) # mfe also contains events of the prehistory eventTimes <- mfe[["(time)"]] # I don't use model.extract since it returns named vectors # Indicate events after t0, which are actually part of the process # (events in (-Inf;t0] only contribute in sum over infected individuals) includes <- which(eventTimes > t0) # this indexes mfe! Nin <- length(includes) if (Nin == 0L) { stop("none of the ", nrow(data$events@data), " supplied ", "events is in the model (check 'subset', 't0' and 'T')") } eventBlocks <- mfe[["(BLOCK)"]] # only necessary for partial log-likelihood eventTypes <- factor(mfe[["(type)"]]) # drop unused levels typeNames <- levels(eventTypes) nTypes <- length(typeNames) if (verbose && nTypes > 1L) cat("marked point pattern of", nTypes, "types\n") qmatrix <- checkQ(qmatrix, typeNames) # we only need the integer codes for the calculations eventTypes <- as.integer(eventTypes) ### Generate model matrix mme <- model.matrix(epidemic, mfe) q <- ncol(mme) hase <- q > 0L ### Extract further model components (only if q > 0) if (hase) { eps.t <- mfe[["(eps.t)"]] removalTimes <- eventTimes + eps.t eps.s <- mfe[["(eps.s)"]] bdist <- mfe[["(bdist)"]] gIntUpper <- mfe[["(obsInfLength)"]] gIntLower <- pmax(0, t0-eventTimes) eventCoords <- coordinates(data$events)[inmfe,,drop=FALSE] ## if (verbose && N > 6000) ## cat("calculating distance matrix of", N, "events ...\n") eventDists <- as.matrix(dist(eventCoords, method = "euclidean")) influenceRegion <- data$events@data$.influenceRegion[inmfe] iRareas <- vapply(X = influenceRegion, FUN = attr, which = "area", FUN.VALUE = 0, USE.NAMES = FALSE) eventSources <- if (N == nobs(data) && identical(qmatrix, data$qmatrix)) { data$events@data$.sources } else { # re-determine because subsetting has invalidated row indexes if (verbose) cat("updating list of potential sources ...\n") lapply(seq_len(N), function (i) determineSources(i, eventTimes, removalTimes, eventDists[i,], eps.s, eventTypes, qmatrix)) } ## calculate sum_{k=1}^K q_{kappa_j,k} for all j = 1:N qSum <- unname(rowSums(qmatrix)[eventTypes]) # N-vector } else if (verbose) { message("no epidemic component in model") } ### Drop "terms" and restore original formula environment epidemic <- formula(epidemic) if (epilink != "log") # set as attribute only if non-standard link function attr(epidemic, "link") <- epilink environment(epidemic) <- origenv.epidemic ## We keep the original formula environment since it will be used to ## evaluate the modified twinstim-call in drop1/add1 (with default ## enclos=baseenv()), and cl$data should be visible from there. ## Alternatively, we could set it to parent.frame(). ######################### ### endemic component ### ######################### ### Parse endemic formula if (missing(endemic)) { origenv.endemic <- parent.frame() endemic <- ~ 0 } else { origenv.endemic <- environment(endemic) environment(endemic) <- environment() ## such that t0 and T are found in the subset expressions below } endemic <- terms(endemic, data = data$stgrid, keep.order = TRUE) ## check for type-specific endemic intercept and remove it from the formula ## (will be handled separately) typeSpecificEndemicIntercept <- "1 | type" %in% attr(endemic, "term.labels") if (typeSpecificEndemicIntercept) { endemic <- update(endemic, ~ . - (1|type)) # this drops the terms attributes endemic <- terms(endemic, data = data$stgrid, keep.order = TRUE) } globalEndemicIntercept <- if (typeSpecificEndemicIntercept) { attr(endemic, "intercept") <- 1L # we need this to ensure that we have correct contrasts FALSE } else attr(endemic, "intercept") == 1L nbeta0 <- globalEndemicIntercept + typeSpecificEndemicIntercept * nTypes ### Generate endemic model frame and model matrix on event data mfhEvents <- model.frame(endemic, data = eventsData[row.names(mfe),], subset = time>t0 & time<=T, na.action = na.fail, # since R 2.10.0 patched also works with # endemic = ~1 (see PR#14066) drop.unused.levels = FALSE) mmhEvents <- model.matrix(endemic, mfhEvents) # exclude intercept from endemic model matrix below, will be treated separately if (nbeta0 > 0) mmhEvents <- mmhEvents[,-1,drop=FALSE] #stopifnot(nrow(mmhEvents) == Nin) p <- ncol(mmhEvents) hash <- (nbeta0+p) > 0L ### Generate model frame and model matrix on grid data (only if p > 0) if (hash) { offsetEvents <- model.offset(mfhEvents) mfhGrid <- model.frame(endemic, data = data$stgrid, subset = start >= t0 & stop <= T, na.action = na.fail, # since R 2.10.0 patched also works with # endemic = ~1 (see PR#14066) drop.unused.levels = FALSE, BLOCK=BLOCK, tile=tile, dt=stop-start, ds=area) # 'tile' is redundant here for fitting but useful # for debugging & necessary for intensityplots gridBlocks <- mfhGrid[["(BLOCK)"]] histIntervals <- data$stgrid[!duplicated.default( data$stgrid$BLOCK, nmax = gridBlocks[length(gridBlocks)] ), c("BLOCK", "start", "stop")] # sorted row.names(histIntervals) <- NULL histIntervals <- histIntervals[histIntervals$start >= t0 & histIntervals$stop <= T,] gridTiles <- mfhGrid[["(tile)"]] # only needed for intensityplot mmhGrid <- model.matrix(endemic, mfhGrid) nGrid <- nrow(mmhGrid) # exclude intercept from endemic model matrix below, will be treated separately if (nbeta0 > 0) mmhGrid <- mmhGrid[,-1,drop=FALSE] # Extract endemic model components offsetGrid <- model.offset(mfhGrid) dt <- mfhGrid[["(dt)"]] ds <- mfhGrid[["(ds)"]] ## expression to calculate the endemic part on the grid -> .hIntTW() if (p > 0L) { hGridExpr <- quote(drop(mmhGrid %*% beta)) if (!is.null(offsetGrid)) hGridExpr <- call("+", quote(offsetGrid), hGridExpr) } else { hGridExpr <- if (is.null(offsetGrid)) quote(numeric(nGrid)) else quote(offsetGrid) } hGridExpr <- call("exp", hGridExpr) ## expression to calculate the endemic part for the events -> .hEvents() hEventsExpr <- if (p > 0L) { quote(drop(mmhEvents %*% beta)) } else { quote(numeric(Nin)) } if (nbeta0 == 1L) { # global intercept hEventsExpr <- call("+", quote(beta0), hEventsExpr) } else if (nbeta0 > 1L) { # type-specific intercept hEventsExpr <- call("+", quote(beta0[eventTypes]), hEventsExpr) } if (!is.null(offsetEvents)) hEventsExpr <- call("+", quote(offsetEvents), hEventsExpr) hEventsExpr <- call("exp", hEventsExpr) } else if (verbose) message("no endemic component in model") ### Drop "terms" and restore original formula environment endemic <- if (typeSpecificEndemicIntercept) { ## re-add it to the endemic formula update.formula(formula(endemic), ~ (1|type) + .) } else formula(endemic) environment(endemic) <- origenv.endemic ## We keep the original formula environment since it will be used to ## evaluate the modified twinstim-call in drop1/add1 (with default ## enclos=baseenv()), and cl$data should be visible from there. ## Alternatively, we could set it to parent.frame(). ### Check that there is at least one parameter if (!hash && !hase) { stop("nothing to do: neither endemic nor epidemic parts were specified") } ############################# ### Interaction functions ### ############################# if (hase) { ## Check interaction functions siaf <- do.call(".parseiaf", args = alist(siaf, "siaf", eps.s, verbose)) constantsiaf <- attr(siaf, "constant") nsiafpars <- siaf$npars tiaf <- do.call(".parseiaf", args = alist(tiaf, "tiaf", eps.t, verbose)) constanttiaf <- attr(tiaf, "constant") ntiafpars <- tiaf$npars ## Check control.siaf if (constantsiaf) { control.siaf <- NULL } else if (is.list(control.siaf)) { if (!is.null(control.siaf$F)) stopifnot(is.list(control.siaf$F)) if (!is.null(control.siaf$Deriv)) stopifnot(is.list(control.siaf$Deriv)) } else if (!is.null(control.siaf)) { stop("'control.siaf' must be a list or NULL") } ## should we compute siafInt in parallel? useParallel <- cores > 1L && requireNamespace("parallel") ## but do not parallelize for a memoised siaf.step (becomes slower) if (useParallel && !is.null(attr(siaf, "knots")) && !is.null(attr(siaf, "maxRange")) && isTRUE(attr(environment(siaf$f)$ringAreas, "memoised"))) { cores <- 1L useParallel <- FALSE } ## Define function that integrates the 'tiaf' function .tiafInt <- .tiafIntFUN() ## Define function that integrates the two-dimensional 'siaf' function ## over the influence regions of the events ..siafInt <- if (is.null(control.siaf[["siafInt"]])) { .siafInt <- .siafIntFUN(siaf = siaf, noCircularIR = all(eps.s > bdist), parallel = useParallel) ## Memoisation of .siafInt if (!constantsiaf && requireNamespace("memoise")) { memoise::memoise(.siafInt) ## => speed-up optimization since 'nlminb' evaluates the loglik and ## score for the same set of parameters at the end of each iteration } else { if (!constantsiaf && verbose) message("Continuing without memoisation of 'siaf$f' cubature ...") .siafInt } } else { ## predefined cubature results in epitest(..., fixed = TRUE), ## where siafInt is identical during all permutations (only permuted) stopifnot(is.vector(control.siaf[["siafInt"]], mode = "numeric"), length(control.siaf[["siafInt"]]) == N) local({ env <- new.env(hash = FALSE, parent = .GlobalEnv) env$siafInt <- control.siaf[["siafInt"]] as.function(alist(siafpars=, ...=, siafInt), envir = env) }) } .siafInt.args <- c(alist(siafpars), control.siaf$F) } else { if (!missing(siaf) && !is.null(siaf)) warning("'siaf' can only be modelled in conjunction with an 'epidemic' process") if (!missing(tiaf) && !is.null(tiaf)) warning("'tiaf' can only be modelled in conjunction with an 'epidemic' process") siaf <- tiaf <- NULL nsiafpars <- ntiafpars <- 0L control.siaf <- NULL } hassiafpars <- nsiafpars > 0L hastiafpars <- ntiafpars > 0L ## Can we calculate the score function? useScore <- if (partial) FALSE else if (hase) { (!hassiafpars | !is.null(siaf$deriv)) & (!hastiafpars | (!is.null(tiaf$deriv)) & !is.null(tiaf$Deriv)) } else TRUE ## Define function that applies siaf$Deriv on all events (integrate the ## two-dimensional siaf$deriv function) if (useScore && hassiafpars) { .siafDeriv <- mapplyFUN( c(alist(siaf$Deriv, influenceRegion, type=eventTypes), list(MoreArgs=quote(list(siaf$deriv, siafpars, ...)), SIMPLIFY=TRUE, USE.NAMES=FALSE)), ##<- we explicitly quote() the ...-part instead of simply including ## it in the above alist() - only to make checkUsage() happy ## depending on nsiafpars, mapply() will return an N-vector ## or a nsiafpars x N matrix => transform to N x nsiafpars: after = quote(if (is.matrix(res)) t(res) else as.matrix(res)), parallel = useParallel) .siafDeriv.args <- c(alist(siafpars), control.siaf$Deriv) } ############################################################################ ### Log-likelihood function, score function, expected Fisher information ### ############################################################################ ### Total number of parameters (= length of 'theta') npars <- nbeta0 + p + q + nsiafpars + ntiafpars # REMINDER: # theta - parameter vector c(beta0, beta, gamma, siafpars, tiafpars), where # beta0 - endemic intercept (maybe type-specific) # beta - other parameters of the endemic component exp(offset + eta_h(t,s)) # gamma - coefficients of the epidemic predictor # siafpars- parameters of the epidemic spatial interaction function # tiafpars- parameters of the epidemic temporal interaction function # mmh[Events/Grid] - model matrix related to beta, i.e the endemic component, # either for events only or for the whole spatio-temporal grid # offset[Events/Grid] - offset vector related to the endemic component (can be NULL), # either for events only or for the whole spatio-temporal grid # dt, ds - columns of the spatio-temporal grid (dt = stop-start, ds = area) # mme - model matrix related to gamma in the epidemic component # siaf, tiaf - spatial/temporal interaction function (NULL, list or numeric) # eventTimes, eventCoords, eventSources, gIntLower, gIntUpper, influenceRegion - # columns of the events data frame if (hash) { ### Calculates the endemic component (for i in includes -> Nin-vector) ### h(t_i,s_i,kappa_i) = exp(offset_i + beta_{0,kappa_i} + eta_h(t_i,s_i)) .hEvents <- function (beta0, beta) {} body(.hEvents) <- hEventsExpr ### Integral of the endemic component over [0;uppert] x W .hIntTW <- function (beta, score = NULL, #matrix(1,nrow(mmhGrid),1L) uppert = NULL) {} body(.hIntTW) <- as.call(c(as.name("{"), expression( subtimeidx <- if (!is.null(uppert)) { # && isScalar(uppert) && t0 <= uppert && uppert < T if (uppert == t0) return(0) # actually never happens # since uppert %in% eventTimes[includes] > t0 idx <- match(TRUE, histIntervals$stop >= uppert) firstBlockBeyondUpper <- histIntervals$BLOCK[idx] newdt <- uppert - histIntervals$start[idx] dt[gridBlocks == firstBlockBeyondUpper] <- newdt which(gridBlocks <= firstBlockBeyondUpper) } else NULL ), substitute(hGrid <- hGridExpr, list(hGridExpr=hGridExpr)), expression(sumterms <- hGrid * ds * dt), expression(if (is.null(score)) { if (is.null(subtimeidx)) sum(sumterms) else sum(sumterms[subtimeidx]) } else { if (is.null(subtimeidx)) .colSums(score * sumterms, nGrid, ncol(score)) else .colSums((score * sumterms)[subtimeidx,,drop=FALSE], length(subtimeidx), ncol(score)) }) )) } if (hase) { ### Calculates the epidemic component for all events .eEvents <- function (gammapred, siafpars, tiafpars, ncolsRes = 1L, score = matrix(1,N,ncolsRes), f = siaf$f, g = tiaf$g) # second line arguments are for score functions with defaults for loglik { e <- vapply(X = includes, FUN = function (i) { sources <- eventSources[[i]] nsources <- length(sources) if (nsources == 0L) numeric(ncolsRes) else { scoresources <- score[sources,,drop=FALSE] predsources <- gammapred[sources] repi <- rep.int(i, nsources) sdiff <- eventCoords[repi,,drop=FALSE] - eventCoords[sources,,drop=FALSE] fsources <- f(sdiff, siafpars, eventTypes[sources]) tdiff <- eventTimes[repi] - eventTimes[sources] gsources <- g(tdiff, tiafpars, eventTypes[sources]) # if(length(predsources) != NROW(fsources) || NROW(fsources) != NROW(gsources)) browser() .colSums(scoresources * predsources * fsources * gsources, nsources, ncolsRes) } }, FUN.VALUE = numeric(ncolsRes), USE.NAMES = FALSE) ## return a vector if ncolsRes=1, otherwise a matrix (Nin x ncolsRes) if (ncolsRes == 1L) e else t(e) } } ### Calculates the two components of the integrated intensity function ### over [0;uppert] x W x K heIntTWK <- function (beta0, beta, gammapred, siafpars, tiafpars, uppert = NULL) {} body(heIntTWK) <- as.call(c(as.name("{"), if (hash) { # endemic component expression( hIntTW <- .hIntTW(beta, uppert = uppert), .beta0 <- rep_len(if (nbeta0==0L) 0 else beta0, nTypes), fact <- sum(exp(.beta0)), hInt <- fact * hIntTW ) } else { expression(hInt <- 0) }, if (hase) { # epidemic component c(expression(siafInt <- do.call("..siafInt", .siafInt.args)),#N-vector if (useParallel) expression( # print "try-catch"ed errors if (any(.nonfinitesiafint <- !is.finite(siafInt))) stop("invalid result of 'siaf$F' for 'siafpars=c(", paste(signif(siafpars, getOption("digits")), collapse=", "), ")':\n", paste(unique(siafInt[.nonfinitesiafint]), sep="\n"), call.=FALSE) ), expression( if (!is.null(uppert)) { # && isScalar(uppert) && t0 <= uppert && uppert < T gIntUpper <- pmin(uppert-eventTimes, eps.t) subtimeidx <- eventTimes < uppert tiafIntSub <- .tiafInt(tiafpars, from = gIntLower[subtimeidx], to = gIntUpper[subtimeidx], type = eventTypes[subtimeidx]) eInt <- sum(qSum[subtimeidx] * gammapred[subtimeidx] * siafInt[subtimeidx] * tiafIntSub) } else { tiafInt <- .tiafInt(tiafpars) eInt <- sum(qSum * gammapred * siafInt * tiafInt) } ) ) } else expression(eInt <- 0), expression(c(hInt, eInt)) )) ### Calculates the log-likelihood loglik <- function (theta) { # Extract parameters from theta beta0 <- theta[seq_len(nbeta0)] beta <- theta[nbeta0+seq_len(p)] gamma <- theta[nbeta0+p+seq_len(q)] siafpars <- theta[nbeta0+p+q+seq_len(nsiafpars)] tiafpars <- theta[nbeta0+p+q+nsiafpars+seq_len(ntiafpars)] # dN part of the log-likelihood hEvents <- if (hash) .hEvents(beta0, beta) else 0 eEvents <- if (hase) { gammapred <- drop(epilinkinv(mme %*% gamma)) # N-vector .eEvents(gammapred, siafpars, tiafpars) # Nin-vector! (only 'includes' here) } else 0 lambdaEvents <- hEvents + eEvents # Nin-vector llEvents <- sum(log(lambdaEvents)) # * llEvents is -Inf in case of 0-intensity at any event time # * If epilinkinv is 'identity', lambdaEvents < 0 if eEvents < -hEvents, # and llEvents is NaN with a warning (intensity must be positive) if (is.nan(llEvents)) # nlminb() does not like NA function values llEvents <- -Inf # lambda integral of the log-likelihood heInt <- heIntTWK(beta0, beta, gammapred, siafpars, tiafpars) # !hase => missing(gammapred), but lazy evaluation omits an error in this case because heIntTWK doesn't ask for gammapred llInt <- sum(heInt) # Return the log-likelihood ll <- llEvents - llInt ll } ### Calculates the score vector score <- function (theta) { # Extract parameters from theta beta0 <- theta[seq_len(nbeta0)] beta <- theta[nbeta0+seq_len(p)] gamma <- theta[nbeta0+p+seq_len(q)] siafpars <- theta[nbeta0+p+q+seq_len(nsiafpars)] tiafpars <- theta[nbeta0+p+q+nsiafpars+seq_len(ntiafpars)] if (hase) { gammapred <- drop(epilinkinv(mme %*% gamma)) # N-vector hEvents <- if (hash) .hEvents(beta0, beta) else 0 eEvents <- .eEvents(gammapred, siafpars, tiafpars) # Nin-vector! (only 'includes' here) lambdaEvents <- hEvents + eEvents # Nin-vector siafInt <- do.call("..siafInt", .siafInt.args) # N-vector tiafInt <- .tiafInt(tiafpars) # N-vector } # score vector for beta hScore <- if (hash) { score_beta0 <- if (nbeta0 == 1L) local({ # global intercept sEvents <- if (hase) { hEvents / lambdaEvents } else rep.int(1, Nin) sEventsSum <- sum(sEvents) sInt <- nTypes*exp(beta0) * .hIntTW(beta) sEventsSum - unname(sInt) }) else if (nbeta0 > 1L) local({ # type-specific intercepts ind <- sapply(seq_len(nTypes), function (type) eventTypes == type, simplify=TRUE, USE.NAMES=FALSE) # logical N x nTypes matrix sEvents <- if (hase) { ind * hEvents / lambdaEvents } else ind sEventsSum <- .colSums(sEvents, N, nTypes) sInt <- exp(beta0) * .hIntTW(beta) sEventsSum - unname(sInt) }) else numeric(0L) # i.e. nbeta0 == 0L score_beta <- if (p > 0L) local({ sEvents <- if (hase) { mmhEvents * hEvents / lambdaEvents } else mmhEvents sEventsSum <- .colSums(sEvents, Nin, p) fact <- if (nbeta0 > 1L) sum(exp(beta0)) else if (nbeta0 == 1L) nTypes*exp(beta0) else nTypes sInt <- fact * .hIntTW(beta, mmhGrid) sEventsSum - sInt }) else numeric(0L) c(score_beta0, score_beta) } else numeric(0L) # score vector for gamma, siafpars and tiafpars eScore <- if (hase) { score_gamma <- local({ nom <- .eEvents(switch(epilink, "log" = gammapred, "identity" = rep.int(1, N)), siafpars, tiafpars, ncolsRes=q, score=mme) # Nin-vector if q=1 sEventsSum <- .colSums(nom / lambdaEvents, Nin, q) # |-> dotted version also works for vector-arguments dgammapred <- switch(epilink, "log" = mme * gammapred, "identity" = mme) sInt <- .colSums(dgammapred * (qSum * siafInt * tiafInt), N, q) sEventsSum - sInt }) score_siafpars <- if (hassiafpars && !fixedsiafpars) local({ nom <- .eEvents(gammapred, siafpars, tiafpars, ncolsRes=nsiafpars, f=siaf$deriv) sEventsSum <- .colSums(nom / lambdaEvents, Nin, nsiafpars) derivInt <- do.call(".siafDeriv", .siafDeriv.args) # N x nsiafpars matrix ## if useParallel, derivInt may contain "try-catch"ed errors ## in which case we receive a one-column character or list matrix if (!is.numeric(derivInt)) # we can throw a helpful error message stop("invalid result of 'siaf$Deriv' for 'siafpars=c(", paste(signif(siafpars, getOption("digits")), collapse=", "), ")':\n", paste(unique(derivInt[sapply(derivInt, is.character)]), sep="\n"), call.=FALSE) sInt <- .colSums(derivInt * (qSum * gammapred * tiafInt), N, nsiafpars) sEventsSum - sInt }) else numeric(nsiafpars) # if 'fixedsiafpars', this part is unused score_tiafpars <- if (hastiafpars && !fixedtiafpars) local({ nom <- .eEvents(gammapred, siafpars, tiafpars, ncolsRes=ntiafpars, g=tiaf$deriv) sEventsSum <- .colSums(nom / lambdaEvents, Nin, ntiafpars) derivIntUpper <- tiaf$Deriv(gIntUpper, tiafpars, eventTypes) derivIntLower <- tiaf$Deriv(gIntLower, tiafpars, eventTypes) derivInt <- derivIntUpper - derivIntLower # N x ntiafpars matrix sInt <- .colSums(derivInt * (qSum * gammapred * siafInt), N, ntiafpars) sEventsSum - sInt }) else numeric(ntiafpars) # if 'fixedtiafpars', this part is unused c(score_gamma, score_siafpars, score_tiafpars) } else numeric(0L) # return the score vector scorevec <- c(hScore, eScore) scorevec } ### Estimates the expected Fisher information matrix ### by the "optional variation process" (Martinussen & Scheike, p. 64), ### or see Rathbun (1996, equation (4.7)) fisherinfo <- function (theta) { # Extract parameters from theta beta0 <- theta[seq_len(nbeta0)] beta <- theta[nbeta0+seq_len(p)] gamma <- theta[nbeta0+p+seq_len(q)] siafpars <- theta[nbeta0+p+q+seq_len(nsiafpars)] tiafpars <- theta[nbeta0+p+q+nsiafpars+seq_len(ntiafpars)] # only events (intdN) part of the score function needed zeromatrix <- matrix(0, Nin, 0) if (hase) { gammapred <- drop(epilinkinv(mme %*% gamma)) # N-vector hEvents <- if (hash) .hEvents(beta0, beta) else 0 eEvents <- .eEvents(gammapred, siafpars, tiafpars) # Nin-vector! (only 'includes' here) lambdaEvents <- hEvents + eEvents # Nin-vector } # for beta hScoreEvents <- if (hash) { scoreEvents_beta0 <- if (nbeta0 > 1L) local({ # type-specific intercepts ind <- sapply(seq_len(nTypes), function (type) eventTypes == type, simplify=TRUE, USE.NAMES=FALSE) # logical N x nTypes matrix if (hase) { ind * hEvents / lambdaEvents } else ind }) else if (nbeta0 == 1L) { # global intercept if (hase) { hEvents / lambdaEvents } else matrix(1, Nin, 1L) } else zeromatrix scoreEvents_beta <- if (p > 0L) { if (hase) { mmhEvents * hEvents / lambdaEvents } else mmhEvents # Nin x p matrix } else zeromatrix unname(cbind(scoreEvents_beta0, scoreEvents_beta, deparse.level=0)) } else zeromatrix # for gamma, siafpars and tiafpars eScoreEvents <- if (hase) { scoreEvents_gamma_nom <- .eEvents(switch(epilink, "log" = gammapred, "identity" = rep.int(1, N)), siafpars, tiafpars, ncolsRes = q, score = mme) # Ninxq matrix scoreEvents_siafpars_nom <- if (hassiafpars) { .eEvents(gammapred, siafpars, tiafpars, ncolsRes = nsiafpars, f = siaf$deriv) # Ninxnsiafpars matrix } else zeromatrix scoreEvents_tiafpars_nom <- if (hastiafpars) { .eEvents(gammapred, siafpars, tiafpars, ncolsRes = ntiafpars, g = tiaf$deriv) # Ninxntiafpars matrix } else zeromatrix eScoreEvents_nom <- cbind(scoreEvents_gamma_nom, scoreEvents_siafpars_nom, scoreEvents_tiafpars_nom, deparse.level=0) eScoreEvents_nom / lambdaEvents } else zeromatrix scoreEvents <- cbind(hScoreEvents, eScoreEvents, deparse.level=0) ## Build the optional variation process (Martinussen & Scheike, p64) ## info <- matrix(0, nrow = npars, ncol = npars, ## dimnames = list(names(theta), names(theta))) ## for (i in 1:Nin) info <- info + crossprod(scoreEvents[i,,drop=FALSE]) ## oh dear, this is nothing else but t(scoreEvents) %*% scoreEvents crossprod(scoreEvents) } ### Calculates the partial log-likelihood for continuous space ### (Diggle et al., 2009) partialloglik <- function (theta) { # Extract parameters from theta beta0 <- theta[seq_len(nbeta0)] beta <- theta[nbeta0+seq_len(p)] gamma <- theta[nbeta0+p+seq_len(q)] siafpars <- theta[nbeta0+p+q+seq_len(nsiafpars)] tiafpars <- theta[nbeta0+p+q+nsiafpars+seq_len(ntiafpars)] # calculcate the observed intensities hEvents <- if (hash) .hEvents(beta0, beta) else 0 eEvents <- if (hase) { gammapred <- drop(epilinkinv(mme %*% gamma)) # N-vector .eEvents(gammapred, siafpars, tiafpars) # Nin-vector! (only 'includes' here) } else 0 lambdaEvents <- hEvents + eEvents # Nin-vector # calculate integral of lambda(t_i, s, kappa) over at-risk set = (observation region x types) hInts <- if (hash) { # endemic component hGrid <- eval(hGridExpr) # integral over W and types for each time block in mfhGrid fact <- if (nbeta0 > 1L) sum(exp(beta0)) else if (nbeta0 == 1L) nTypes*exp(beta0) else nTypes hInt_blocks <- fact * tapply(hGrid*ds, gridBlocks, sum, simplify=TRUE) .idx <- match(eventBlocks[includes], names(hInt_blocks)) unname(hInt_blocks[.idx]) # Nin-vector } else 0 eInts <- if (hase) { # epidemic component siafInt <- do.call("..siafInt", .siafInt.args) # N-vector gs <- gammapred * siafInt # N-vector sapply(includes, function (i) { timeSources <- determineSources(i, eventTimes, removalTimes, 0, Inf, NULL) nSources <- length(timeSources) if (nSources == 0L) 0 else { repi <- rep.int(i, nSources) tdiff <- eventTimes[repi] - eventTimes[timeSources] gsources <- tiaf$g(tdiff, tiafpars, eventTypes[timeSources]) sum(qSum[timeSources] * gs[timeSources] * gsources) } }, simplify=TRUE, USE.NAMES=FALSE) # Nin-vector } else 0 lambdaEventsIntW <- hInts + eInts # Nin-vector # Calculate and return the partial log-likelihood p <- lambdaEvents / lambdaEventsIntW # Nin-vector pll <- sum(log(p)) pll } ################################ ### Prepare for optimization ### ################################ ll <- if (partial) partialloglik else loglik functions <- list(ll = ll, sc = if (useScore) score else NULL, fi = if (useScore) fisherinfo else NULL) ### Include check for validity of siafpars and tiafpars ('validpars') in ll if (!is.null(siaf$validpars)) { body(ll) <- as.call(append(as.list(body(ll)), as.list(expression( if (hassiafpars && !siaf$validpars(siafpars)) { if (optimArgs$control$trace > 0L) cat("(invalid 'siafpars' in loglik)\n") return(-Inf) } )), after = grep("^siafpars <-", body(ll)))) } if (!is.null(tiaf$validpars)) { body(ll) <- as.call(append(as.list(body(ll)), as.list(expression( if (hastiafpars && !tiaf$validpars(tiafpars)) { if (optimArgs$control$trace > 0L) cat("(invalid 'tiafpars' in loglik)\n") return(-Inf) } )), after = grep("^tiafpars <-", body(ll)))) } ### Check that optim.args is a list or NULL if (is.null(optim.args)) { # no optimisation requested setting <- functions on.exit(rm(setting), add = TRUE) # Append model information setting$npars <- c(nbeta0 = nbeta0, p = p, q = q, nsiafpars = nsiafpars, ntiafpars = ntiafpars) setting$qmatrix <- qmatrix # -> information about nTypes and typeNames setting$formula <- list(endemic = endemic, epidemic = epidemic, siaf = siaf, tiaf = tiaf) # Return settings setting$call <- cl environment(setting) <- environment() if (verbose) message("optimization skipped", " (returning functions in data environment)") return(setting) } else if (!is.list(optim.args)) stop("'optim.args' must be a list or NULL") ### Check initial value for theta if (is.null(optim.args[["par"]])) { # set naive defaults h.Intercept <- if (nbeta0 > 0) rep.int(crudebeta0( nEvents = Nin, offset.mean = if (is.null(offsetGrid)) 0 else weighted.mean(offsetGrid, ds), W.area = sum(ds[gridBlocks==histIntervals[1,"BLOCK"]]), period = T-t0, nTypes = nTypes ), nbeta0) else numeric(0L) optim.args$par <- c(h.Intercept, rep.int(0, npars - nbeta0)) } else { # check validity of par-specification if (!is.vector(optim.args$par, mode="numeric")) { stop("'optim.args$par' must be a numeric vector") } if (length(optim.args$par) != npars) { stop(gettextf(paste("'optim.args$par' (%d) does not have the same", "length as the number of unknown parameters (%d)"), length(optim.args$par), npars)) } } ## Set names for theta names(optim.args$par) <- c( if (nbeta0 > 1L) { paste0("h.type",typeNames) } else if (nbeta0 == 1L) "h.(Intercept)", if (p > 0L) paste("h", colnames(mmhEvents), sep = "."), if (hase) paste("e", colnames(mme), sep = "."), if (hassiafpars) paste("e.siaf",1:nsiafpars,sep="."), if (hastiafpars) paste("e.tiaf",1:ntiafpars,sep=".") ) ## values in "start" overwrite initial values given by optim.args$par if (!is.null(start)) { start <- check_twinstim_start(start) start <- start[names(start) %in% names(optim.args$par)] optim.args$par[names(start)] <- start } initpars <- optim.args$par ### Fixed parameters during optimization fixed <- optim.args[["fixed"]] optim.args[["fixed"]] <- NULL whichfixed <- if (is.null(fixed)) { integer(0L) } else if (isTRUE(fixed)) { seq_len(npars) } else { stopifnot(is.vector(fixed)) if (is.numeric(fixed)) { stopifnot(fixed %in% seq_len(npars)) fixed } else if (is.character(fixed)) { ## we silently ignore names of non-existent parameters intersect(fixed, names(initpars)) } else if (is.logical(fixed)) { stopifnot(length(fixed) == npars) which(fixed) } else { stop("'optim.args$fixed' must be a numeric, character or logical vector") } } fixed <- setNames(logical(npars), names(initpars)) # FALSE fixed[whichfixed] <- TRUE fixedsiafpars <- hassiafpars && all(fixed[paste("e.siaf", 1:nsiafpars, sep=".")]) fixedtiafpars <- hastiafpars && all(fixed[paste("e.tiaf", 1:ntiafpars, sep=".")]) ### Define negative log-likelihood (score, hessian) for minimization ### as a function of the non-fixed parameters negll <- ll body(negll)[[length(body(negll))]] <- call("-", body(negll)[[length(body(negll))]]) negsc <- if (useScore) { negsc <- score body(negsc)[[length(body(negsc))]] <- call("-", body(negsc)[[length(body(negsc))]]) negsc } else NULL neghess <- if (useScore) fisherinfo else NULL if (any(fixed)) { ## modify negll, negsc and neghess for subvector optimization optim.args$par <- initpars[!fixed] if (verbose) { if (all(fixed)) { cat("\nno numerical likelihood optimization, all parameters fixed:\n") } else cat("\nfixed parameters during optimization:\n") print(initpars[fixed]) } tmpexpr <- expression( initpars[!fixed] <- theta, theta <- initpars ) body(negll) <- as.call(append(as.list(body(negll)), as.list(tmpexpr), 1)) if (useScore) { body(negsc) <- as.call(append(as.list(body(negsc)), as.list(tmpexpr), 1)) body(neghess) <- as.call(append(as.list(body(neghess)), as.list(tmpexpr), 1)) # return non-fixed sub-vector / sub-matrix only body(negsc)[[length(body(negsc))]] <- call("[", body(negsc)[[length(body(negsc))]], quote(!fixed)) body(neghess)[[length(body(neghess))]] <- call("[", body(neghess)[[length(body(neghess))]], quote(!fixed), quote(!fixed), drop=FALSE) } ## if siafpars or tiafpars are fixed, pre-evaluate integrals if (fixedsiafpars) { if (verbose) cat("pre-evaluating 'siaf' integrals with fixed parameters ...\n") if (!"memoise" %in% loadedNamespaces()) cat("WARNING: Memoization of siaf integration not available!\n", " Repeated integrations with same parameters ", "are redundant and slow!\n", " Really consider installing package \"memoise\"!\n", sep="") .siafInt.args[[1]] <- initpars[paste("e.siaf", 1:nsiafpars, sep=".")] siafInt <- do.call("..siafInt", .siafInt.args) # memoise()d } if (fixedtiafpars) { if (verbose) cat("pre-evaluating 'tiaf' integrals with fixed parameters ...\n") tiafInt <- .tiafInt(initpars[paste("e.tiaf", 1:ntiafpars, sep=".")]) ## re-define .tiafInt such that it just returns the pre-evaluated ## integrals if called with the default arguments .tiafInt.orig <- .tiafInt body(.tiafInt) <- expression( if (nargs() == 1L) tiafInt else .tiafInt.orig(tiafpars, from, to, type, G) ) ## restore the original function at the end on.exit({ .tiafInt <- .tiafInt.orig rm(.tiafInt.orig) }, add=TRUE) } } if (any(!fixed)) { #################### ### Optimization ### #################### ## Configure the optim procedure (check optim.args) # default arguments optimArgs <- list(par = NULL, # replaced by optim.args$par below fn = quote(negll), gr = quote(negsc), method = if (partial) "Nelder-Mead" else "nlminb", lower = -Inf, upper = Inf, control = list(), hessian = TRUE) # user arguments namesOptimArgs <- names(optimArgs) namesOptimUser <- names(optim.args) optimValid <- namesOptimUser %in% namesOptimArgs optimArgs[namesOptimUser[optimValid]] <- optim.args[optimValid] if (any(!optimValid)) { warning("unknown names in optim.args: ", paste(namesOptimUser[!optimValid], collapse = ", "), immediate. = TRUE) } doHessian <- optimArgs$hessian optimMethod <- optimArgs$method ## Call 'optim', 'nlminb', or 'nlm' with the above arguments if (verbose) { cat("\nminimizing the negative", if (partial) "partial", "log-likelihood", "using", if (optimMethod %in% c("nlm", "nlminb")) paste0("'",optimMethod,"()'") else { paste0("'optim()'s \"", optimMethod, "\"") }, "...\n") cat("initial parameters:\n") print(optimArgs$par) } optimRes1 <- if (optimMethod == "nlminb") { nlminbControl <- control2nlminb(optimArgs$control, defaults = list(trace=1L, rel.tol=1e-6)) ## sqrt(.Machine$double.eps) is the default reltol used in optim, ## which usually equals about 1.49e-08. ## The default rel.tol of nlminb (1e-10) seems too small ## (nlminb often does not finish despite no "relevant" change in loglik). ## I therefore use 1e-6, which is also the default in package nlme ## (see 'lmeControl'). if (nlminbControl$trace > 0L) { cat("negative log-likelihood and parameters ") if (nlminbControl$trace == 1L) cat("in each iteration") else { cat("every", nlminbControl$trace, "iterations") } cat(":\n") } nlminbRes <- nlminb(start = optimArgs$par, objective = negll, gradient = negsc, hessian = if (doHessian) neghess else NULL, control = nlminbControl, lower = optimArgs$lower, upper = optimArgs$upper) nlminbRes$value <- -nlminbRes$objective nlminbRes$counts <- nlminbRes$evaluations nlminbRes } else if (optimMethod == "nlm") { nlmObjective <- function (theta) { value <- negll(theta) grad <- negsc(theta) #hess <- neghess(theta) structure(value, gradient = grad)#, hessian = hess) } nlmControl <- optimArgs$control if (is.null(nlmControl[["print.level"]])) { nlmControl$print.level <- min(nlmControl$trace, 2L) } nlmControl$trace <- nlmControl$REPORT <- NULL if (is.null(nlmControl[["iterlim"]])) { nlmControl$iterlim <- nlmControl$maxit } nlmControl$maxit <- NULL nlmControl$check.analyticals <- FALSE ##<- we use the negative _expected_ Fisher information as the Hessian, ## which is of course different from the true Hessian (=neg. obs. Fisher info) nlmRes <- do.call("nlm", c(alist(f = nlmObjective, p = optimArgs$par, hessian = doHessian), nlmControl)) names(nlmRes)[names(nlmRes) == "estimate"] <- "par" nlmRes$value <- -nlmRes$minimum nlmRes$counts <- rep.int(nlmRes$iterations, 2L) nlmRes$convergence <- if (nlmRes$code %in% 1:2) 0L else nlmRes$code nlmRes } else { # use optim() optimArgs$control <- modifyList(list(trace=1L, REPORT=1L), optimArgs$control) if (finetune) optimArgs$hessian <- FALSE res <- do.call("optim", optimArgs) res$value <- -res$value res } ## Optional fine-tuning of ML estimates by robust Nelder-Mead optimRes <- if (finetune) { if (verbose) { cat("\nMLE from first optimization:\n") print(optimRes1$par) cat("loglik(MLE) =", optimRes1$value, "\n") cat("\nfine-tuning MLE using Nelder-Mead optimization ...\n") } optimArgs$par <- optimRes1$par optimArgs$method <- "Nelder-Mead" optimArgs$hessian <- doHessian optimArgs$control <- modifyList(list(trace=1L), optimArgs$control) nmRes <- do.call("optim", optimArgs) nmRes$value <- -nmRes$value nmRes$counts[2L] <- 0L # 0 gradient evaluations (replace NA for addition below) nmRes } else optimRes1 ## Convergence message msgConvergence <- if (finetune || optimMethod != "nlminb") { paste("code", optimRes$convergence) } else optimRes$message if (optimRes$convergence != 0) { msgNotConverged <- paste0("optimization routine did not converge (", msgConvergence, ")") warning(msgNotConverged) if (verbose) { cat("\nWARNING: ", msgNotConverged, "!\n", sep="") if ((finetune || optimMethod != "nlminb") && !is.null(optimRes$message) && nzchar(optimRes$message)) { cat("MESSAGE: \"", optimRes$message, "\"\n", sep="") } if (hase && useScore && !constantsiaf && grepl("false", msgNotConverged)) { cat("SOLUTION: increase the precision of 'siaf$Deriv' (and 'siaf$F')\n") if (optimMethod == "nlminb") { cat(" or nlminb's false convergence tolerance 'xf.tol'\n") } } } } if (verbose) { cat("\n", if (finetune) "final ", "MLE:\n", sep = "") print(optimRes$par) cat("loglik(MLE) =", optimRes$value, "\n") } } ############## ### Return ### ############## ### Set up list object to be returned fit <- list( coefficients = if (any(fixed)) { if (all(fixed)) initpars else unlist(modifyList(as.list(initpars), as.list(optimRes$par))) } else optimRes$par, loglik = structure(if (all(fixed)) ll(initpars) else optimRes$value, partial = partial), counts = if (all(fixed)) c("function"=1L, "gradient"=0L) else { optimRes1$counts + if (finetune) optimRes$counts else c(0L, 0L) }, converged = if (all(fixed) || (optimRes$convergence == 0)) TRUE else msgConvergence ) ### Add Fisher information matrices # estimation of the expected Fisher information matrix fit["fisherinfo"] <- list( if (useScore) structure( fisherinfo(fit$coefficients), dimnames = list(names(initpars), names(initpars)) ) ) # If requested, add observed fisher info (= negative hessian at maximum) fit["fisherinfo.observed"] <- list( if (any(!fixed) && !is.null(optimRes$hessian)) optimRes$hessian ## no "-" here because we optimized the negative log-likelihood ) ### Add fitted intensity values and integrated intensities at events # final coefficients theta <- fit$coefficients beta0 <- theta[seq_len(nbeta0)] beta <- theta[nbeta0+seq_len(p)] gamma <- theta[nbeta0+p+seq_len(q)] siafpars <- theta[nbeta0+p+q+seq_len(nsiafpars)] tiafpars <- theta[nbeta0+p+q+nsiafpars+seq_len(ntiafpars)] # final siaf and tiaf integrals over influence regions / periods # and final gammapred (also used by intensity.twinstim) if (hase) { gammapred <- drop(epilinkinv(mme %*% gamma)) # N-vector if (!fixedsiafpars) siafInt <- do.call("..siafInt", .siafInt.args) if (!fixedtiafpars) tiafInt <- .tiafInt(tiafpars) } # fitted intensities hEvents <- if (hash) .hEvents(unname(beta0), beta) else rep.int(0, Nin) eEvents <- if (hase) { .eEvents(gammapred, siafpars, tiafpars) # Nin-vector! (only 'includes' here) } else rep.int(0, Nin) fit$fitted <- hEvents + eEvents # = lambdaEvents # Nin-vector fit$fittedComponents <- cbind(h = hEvents, e = eEvents) rm(hEvents, eEvents) # calculate cumulative ground intensities at event times # Note: this function is also used by residuals.twinstim LambdagEvents <- function (cores = 1L, cumCIF.pb = interactive()) { if (cores != 1L) cumCIF.pb <- FALSE if (cumCIF.pb) pb <- txtProgressBar(min=0, max=Nin, initial=0, style=3) heIntEvents <- if (cores == 1L) { sapply(seq_len(Nin), function (i) { if (cumCIF.pb) setTxtProgressBar(pb, i) heIntTWK(beta0, beta, gammapred, siafpars, tiafpars, eventTimes[includes[i]]) }, simplify=TRUE, USE.NAMES=FALSE) } else { # cannot use progress bar simplify2array(parallel::mclapply( X=eventTimes[includes], FUN=heIntTWK, beta0=beta0, beta=beta, gammapred=gammapred, siafpars=siafpars,tiafpars=tiafpars, mc.preschedule=TRUE, mc.cores=cores ), higher=FALSE) } if (cumCIF.pb) close(pb) setNames(.colSums(heIntEvents, 2L, Nin), rownames(mmhEvents)) } fit["tau"] <- list( if (cumCIF) { if (verbose) cat("\nCalculating fitted cumulative intensities at events ...\n") LambdagEvents(cores, cumCIF.pb) }) # calculate observed R0's: mu_j = spatio-temporal integral of e_j(t,s) over # the observation domain (t0;T] x W (not whole R+ x R^2) fit$R0 <- if (hase) qSum * gammapred * siafInt * tiafInt else rep.int(0, N) names(fit$R0) <- row.names(mfe) ### Append model information fit$npars <- c(nbeta0 = nbeta0, p = p, q = q, nsiafpars = nsiafpars, ntiafpars = ntiafpars) fit$qmatrix <- qmatrix # -> information about nTypes and typeNames fit$bbox <- bbox(data$W) # for completeness and for iafplot fit$timeRange <- c(t0, T) # for simulate.twinstim's defaults fit$formula <- list(endemic = endemic, epidemic = epidemic, siaf = siaf, tiaf = tiaf) fit["control.siaf"] <- list(control.siaf) # might be NULL ### Append optimizer configuration optim.args$par <- initpars # reset to also include fixed coefficients if (any(fixed)) optim.args$fixed <- names(initpars)[fixed] # restore fit$optim.args <- optim.args fit["functions"] <- list( if (model) { environment(fit) <- environment() functions }) ### Return object of class "twinstim" if (verbose) cat("\nDone.\n") fit$call <- cl fit$runtime <- structure(proc.time() - ptm, cores=cores) class(fit) <- "twinstim" return(fit) } surveillance/R/twinstim_tiaf_step.R0000644000175100001440000001267612273015471017242 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Step function implementation for temporal interaction ### ### Copyright (C) 2014 Sebastian Meyer ### $Revision: 735 $ ### $Date: 2014-01-31 22:52:57 +0100 (Fre, 31 Jan 2014) $ ################################################################################ tiaf.step <- function (knots, maxRange = Inf, nTypes = 1, validpars = NULL) { knots <- sort(unique(as.vector(knots,mode="numeric"))) stopifnot(knots > 0, is.finite(knots), isScalar(maxRange), maxRange > knots) nknots <- length(knots) # = number of parameters (per type) knotsmax <- c(knots, maxRange) nknotsmax <- nknots + 1L allknots <- c(0, knots, maxRange) nallknots <- length(allknots) allknotsInf <- unique(c(allknots, Inf)) # ensure Inf as last element stopifnot(isScalar(nTypes <- as.integer(nTypes)), nTypes > 0L) npars <- nknots * nTypes .parintwidths <- rep.int(c(diff.default(knotsmax)), nTypes) .parintwidths[is.infinite(.parintwidths)] <- -1 ##<- in case maxRange=Inf, last interval width will always be multiplied by ## 0 and should give 0, but Inf would produce NaN, so we just set it to -1 ## the step function is right-continuous, intervals are [a,b) g <- if (nTypes > 1) { heights <- function (logvals) { # get matrix of type-specific heights dim(logvals) <- c(nknots, nTypes) rbind(1, exp(logvals), 0, deparse.level=0) } function (t, logvals, types) heights(logvals)[(types-1)*nallknots + .bincode(t, allknotsInf, right=FALSE)] } else { function (t, logvals, types = NULL) c(1,exp(logvals),0)[.bincode(t, allknotsInf, right=FALSE)] } G <- if (nTypes > 1) { typeheights <- function (logvals, type) # vector of type-specific heights c(1, exp(logvals[(type-1)*nknots+seq_len(nknots)])) as.function(c(alist(t=, logvals=, types=), substitute({ mapply(function (t, type) { knots2t <- c(0, pmin.int(knots, t), TMAX) sum(typeheights(logvals, type) * diff.default(knots2t)) }, t, types, SIMPLIFY=TRUE, USE.NAMES=FALSE) }, list(TMAX = if (is.finite(maxRange)) quote(min(t,maxRange)) else quote(t))))) } else { ## function (t, logvals, types = NULL) { ## vapply(t, function (t) { ## knots2t <- c(0, pmin.int(knots, t), min(t, maxRange)) ## sum(c(1,exp(logvals)) * diff.default(knots2t)) ## }, 0, USE.NAMES=FALSE) # vapply is faster than sapply ## } as.function(c(alist(t=, logvals=, types = NULL), substitute({ ##omtk <- outer(t, knots, pmin.int), bare-bone implementation: omtk <- pmin.int(rep.int(knots, rep.int(L <- length(t), nknots)), t) dim(omtk) <- c(L, nknots) .colSums(apply(cbind(0, omtk, TMAX, deparse.level=0), 1L, diff.default) * c(1,exp(logvals)), nknotsmax, L) }, list(TMAX = if (is.finite(maxRange)) quote(pmin.int(t,maxRange)) else quote(t))))) } ## the derivative is simply the height corresponding to (t, type) and is 0 ## outside this interval/type deriv <- function (t, logvals, types) { whichvals <- .bincode(t, knotsmax, right=FALSE) fixedheight <- is.na(whichvals) ##<- intervals number 1 and 'nallknots' don't correspond to parameters whichvals <- whichvals + (types-1)*nknots # select type parameter whichvals[fixedheight] <- 0 ## we do a bare-bone implementation of relevant parts of ## deriv <- outer(whichvals, seq_len(npars), "==") * rep(exp(logvals), each=L) repL <- rep.int(L <- length(t), npars) Y <- rep.int(seq_len(npars), repL) # column index Z <- rep.int(exp(logvals), repL) # value ##<- 6x faster than rep(..., each=L) res <- (Y == whichvals) * Z dim(res) <- c(L, npars) res } ## only tiny modification necessary for nTypes == 1 if (nTypes == 1) { body(deriv)[[grep("types", body(deriv))]] <- NULL formals(deriv)["types"] <- list(NULL) } Deriv <- deriv body(Deriv) <- as.call(append(as.list(body(Deriv)), expression( partwidth <- t - knots[whichvals] ), after=2L)) body(Deriv)[[grep("whichvals[fixedheight]", body(Deriv), fixed=TRUE)]] <- quote(whichvals[fixedheight] <- partwidth[fixedheight] <- 0) body(Deriv) <- as.call(append(as.list(body(Deriv)), expression( W <- rep.int(.parintwidths, repL) ), after=grep("Z <-", body(Deriv)))) body(Deriv)[[grep("res <-", body(Deriv))]] <- if (nTypes == 1) { quote(res <- ((Y < whichvals | t >= maxRange) * W + (Y == whichvals) * partwidth) * Z) } else { quote(res <- ((Y > (types-1)*nknots & (Y < whichvals | t >= maxRange)) * W + (Y == whichvals) * partwidth) * Z) } ## Done res <- list(g = g, G = G, deriv = deriv, Deriv = Deriv, ## FIXME: simulate = simulate, npars = npars, validpars = validpars) attr(res, "knots") <- knots attr(res, "maxRange") <- maxRange res } surveillance/R/twinstim_siaf.R0000644000175100001440000003220312476452241016177 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Spatial interaction functions for twinstim's epidemic component. ### Specific implementations are in seperate files (e.g.: Gaussian, power law). ### ### Copyright (C) 2009-2015 Sebastian Meyer ### $Revision: 1217 $ ### $Date: 2015-03-07 02:30:09 +0100 (Sam, 07. Mär 2015) $ ################################################################################ ##################### ### "Constructor" ### ##################### siaf <- function (f, F, Fcircle, effRange, deriv, Deriv, simulate, npars, validpars = NULL) { npars <- as.integer(npars) if (length(npars) != 1 || npars < 0L) { stop("'siaf$npars' must be a single nonnegative number") } f <- .checknargs3(f, "siaf$f") F <- if (missing(F) || is.null(F)) siaf.fallback.F else { F <- match.fun(F) if (length(formals(F)) < 4L) stop("siaf$F() must accept >=4 arguments ", "(polydomain, f, pars, type)") F } haspars <- npars > 0L if (!haspars || missing(deriv)) deriv <- NULL if (!is.null(deriv)) deriv <- .checknargs3(deriv, "siaf$deriv") if (missing(effRange)) effRange <- NULL if (missing(Fcircle) || is.null(Fcircle)) { Fcircle <- NULL if (!is.null(effRange)) { message("'siaf$effRange' only works in conjunction with 'siaf$Fcircle'") effRange <- NULL } } if (!is.null(Fcircle)) Fcircle <- .checknargs3(Fcircle, "siaf$Fcircle") if (!is.null(effRange)) { effRange <- match.fun(effRange) if (length(formals(effRange)) < 1L) { stop("the 'siaf$effRange' function must accept a parameter vector") } } Deriv <- if (is.null(deriv)) NULL else if (missing(Deriv) || is.null(Deriv)) siaf.fallback.Deriv else { Deriv <- match.fun(Deriv) if (length(formals(Deriv)) < 4L) stop("siaf$Deriv() must accept >=4 arguments ", "(polydomain, deriv, pars, type)") Deriv } ## Check if simulation function has proper format if (missing(simulate)) simulate <- NULL if (!is.null(simulate)) { simulate <- .checknargs3(simulate, "siaf$simulate") if (length(formals(simulate)) == 3L) formals(simulate) <- c(formals(simulate), alist(ub=)) } ## Check if the validpars are of correct form validpars <- if (!haspars || is.null(validpars)) NULL else match.fun(validpars) ## Done, return result. list(f = f, F = F, Fcircle = Fcircle, effRange = effRange, deriv = deriv, Deriv = Deriv, simulate = simulate, npars = npars, validpars = validpars) } ########################################## ### Constant spatial interaction/dispersal ########################################## siaf.constant <- function () { res <- list( ## use explicit quote()ing to prevent notes from codetools::checkUsage f = as.function(c(alist(s=, pars=NULL, types=NULL), quote(rep.int(1, length(s)/2))), ##<- nrow() would take extra time in standardGeneric() envir = .GlobalEnv), ## integration over polydomains is handled specially in twinstim Fcircle = as.function(c(alist(r=, pars=NULL, type=NULL), quote(pi*r^2)), envir = .GlobalEnv), ## simulation will be handled specially in simEpidataCS, this is only ## included here for completeness simulate = as.function(c(alist(n=, pars=NULL, type=NULL, ub=), quote(runifdisc(n, ub))), envir = getNamespace("surveillance")), npars = 0L ) attr(res, "constant") <- TRUE res } ########################################## ### Naive defaults for the siaf primitives ########################################## ## numerical integration of f over a polygonal domain (single "owin" and type) siaf.fallback.F <- function(polydomain, f, pars, type, method = "SV", ...) { if (identical(method,"SV")) polyCub.SV(polydomain, f, pars, type, alpha=0, ...) # since max at origin else polyCub(polydomain, f, method, pars, type, ...) } ## numerical integration of f over a circular domain getFcircle <- function (siaf, control.F = list()) { if (is.null(siaf$Fcircle)) { function (r, pars, type) { disc <- discpoly(c(0,0), r, npoly = 64, class = "owin") do.call(siaf$F, c(alist(disc, siaf$f, pars, type), control.F)) } } else { siaf$Fcircle } } ## numerical integration of deriv over a polygonal domain siaf.fallback.Deriv <- function (polydomain, deriv, pars, type, method = "SV", ...) { deriv1 <- function (s, paridx) deriv(s, pars, type)[,paridx,drop=TRUE] intderiv1 <- function (paridx) polyCub(polydomain, deriv1, method, paridx=paridx, ...) sapply(seq_along(pars), intderiv1) } #################################### ### Simulation via polar coordinates (used, e.g., for siaf.powerlaw) #################################### ## Simulate from an isotropic spatial interaction function ## f_{2D}(s) \propto f(||s||), ||s|| <= ub. ## within a maximum distance 'ub' via polar coordinates and the inverse ## transformation method: ## p_{2D}(r,theta) = r * f_{2D}(x,y) \propto r*f(r) ## => angle theta ~ U(0,2*pi) and sample r according to r*f(r) siaf.simulatePC <- function (intrfr) # e.g., intrfr.powerlaw { as.function(c(alist(n=, siafpars=, type=, ub=), substitute({ ## Note: in simEpidataCS, simulation is always bounded to eps.s and to ## the largest extend of W, thus, 'ub' is finite stopifnot(is.finite(ub)) ## Normalizing constant of r*f(r) on [0;ub] normconst <- intrfr(ub, siafpars, type) ## => cumulative distribution function CDF <- function (q) intrfr(q, siafpars, type) / normconst ## For inversion sampling, we need the quantile function CDF^-1 ## However, this is not available in closed form, so we use uniroot ## (which requires a finite upper bound) QF <- function (p) uniroot(function(q) CDF(q)-p, lower=0, upper=ub)$root ## Now sample r as QF(U), where U ~ U(0,1) r <- vapply(X=runif(n), FUN=QF, FUN.VALUE=0, USE.NAMES=FALSE) ## Check simulation of r via kernel estimate: ## plot(density(r, from=0, to=ub)); curve(p(x)/normconst,add=TRUE,col=2) ## now rotate each point by a random angle to cover all directions theta <- runif(n, 0, 2*pi) r * cbind(cos(theta), sin(theta)) })), envir=parent.frame()) } ################################################ ### Check F, Fcircle, deriv, Deriv, and simulate ################################################ checksiaf <- function (siaf, pargrid, type = 1, tolerance = 1e-5, method = "SV", ...) { stopifnot(is.list(siaf), is.numeric(pargrid), !is.na(pargrid), length(pargrid) > 0) pargrid <- as.matrix(pargrid) stopifnot(siaf$npars == ncol(pargrid)) ## Check 'F' if (!is.null(siaf$F)) { cat("'F' vs. cubature using method = \"", method ,"\" ... ", sep="") comp.F <- checksiaf.F(siaf$F, siaf$f, pargrid, type=type, method=method, ...) cat(attr(comp.F, "all.equal") <- all.equal(comp.F[,1], comp.F[,2], check.attributes=FALSE, tolerance=tolerance), "\n") } ## Check 'Fcircle' if (!is.null(siaf$Fcircle)) { cat("'Fcircle' vs. cubature using method = \"",method,"\" ... ", sep="") comp.Fcircle <- checksiaf.Fcircle(siaf$Fcircle, siaf$f, pargrid, type=type, method=method, ...) cat(attr(comp.Fcircle, "all.equal") <- all.equal(comp.Fcircle[,1], comp.Fcircle[,2], check.attributes=FALSE, tolerance=tolerance), "\n") } ## Check 'deriv' if (!is.null(siaf$deriv)) { cat("'deriv' vs. numerical derivative ... ") if (requireNamespace("maxLik", quietly=TRUE)) { maxRelDiffs.deriv <- checksiaf.deriv(siaf$deriv, siaf$f, pargrid, type=type) cat(attr(maxRelDiffs.deriv, "all.equal") <- if (any(maxRelDiffs.deriv > tolerance)) paste("maxRelDiff =", max(maxRelDiffs.deriv)) else TRUE, "\n") } else cat("Failed: need package", sQuote("maxLik"), "\n") } ## Check 'Deriv' if (!is.null(siaf$Deriv)) { cat("'Deriv' vs. cubature using method = \"", method ,"\" ... ", sep="") comp.Deriv <- checksiaf.Deriv(siaf$Deriv, siaf$deriv, pargrid, type=type, method=method, ...) if (siaf$npars > 1) cat("\n") attr(comp.Deriv, "all.equal") <- sapply(seq_len(siaf$npars), function (j) { if (siaf$npars > 1) cat("\tsiaf parameter ", j, ": ", sep="") ae <- all.equal(comp.Deriv[,j], comp.Deriv[,siaf$npars+j], check.attributes=FALSE, tolerance=tolerance) cat(ae, "\n") ae }) } ## Check 'simulate' if (interactive() && !is.null(siaf$simulate)) { cat("Simulating ... ") checksiaf.simulate(siaf$simulate, siaf$f, pargrid[1,], type=type) cat("(-> check the plot)\n") } ## invisibly return check results invisible(mget(c("comp.F", "comp.Fcircle", "maxRelDiffs.deriv", "comp.Deriv"), ifnotfound=list(NULL), inherits=FALSE)) } checksiaf.F <- function (F, f, pargrid, type=1, method="SV", ...) { letterR <- "cheating on codetools::checkUsage" data("letterR", package="spatstat", envir=environment()) poly <- shift.owin(letterR, -c(3,2)) res <- t(apply(pargrid, 1, function (pars) { given <- F(poly, f, pars, type) num <- siaf.fallback.F(poly, f, pars, type, method=method, ...) c(given, num) })) colnames(res) <- c("F", method) res } checksiaf.Fcircle <- function (Fcircle, f, pargrid, type=1, rs=c(1,5,10,50,100), method="SV", ...) { pargrid <- pargrid[rep(1:nrow(pargrid), each=length(rs)),,drop=FALSE] rpargrid <- cbind(rs, pargrid, deparse.level=0) res <- t(apply(rpargrid, 1, function (x) { c(ana = Fcircle(x[1], x[-1], type), num = siaf.fallback.F(discpoly(c(0,0), x[1], npoly=128, class="owin"), f, x[-1], type, method=method, ...)) })) res } checksiaf.deriv <- function (deriv, f, pargrid, type=1, rmax=100) { rgrid <- seq(-rmax,rmax,len=21) / sqrt(2) rgrid <- rgrid[rgrid != 0] # some siafs are always 1 at (0,0) (deriv=0) sgrid <- cbind(rgrid, rgrid) apply(pargrid, 1, function (pars) { maxLik::compareDerivatives(f, deriv, t0=pars, s=sgrid, print=FALSE)$maxRelDiffGrad ## Note: numDeriv::grad() would only allow one location s at a time }) } checksiaf.Deriv <- function (Deriv, deriv, pargrid, type=1, method="SV", ...) { letterR <- "cheating on codetools::checkUsage" data("letterR", package="spatstat", envir=environment()) poly <- shift.owin(letterR, -c(3,2)) res <- t(apply(pargrid, 1, function (pars) { given <- Deriv(poly, deriv, pars, type) num <- siaf.fallback.Deriv(poly, deriv, pars, type, method=method, ...) c(given, num) })) paridxs <- seq_len(ncol(pargrid)) colnames(res) <- c(paste("Deriv",paridxs,sep="."), paste(method,paridxs,sep=".")) res } checksiaf.simulate <- function (simulate, f, pars, type=1, B=3000, ub=10, plot=interactive()) { ## Simulate B points on the disc with radius 'ub' simpoints <- simulate(B, pars, type=type, ub=ub) if (plot) { ## Graphical check in 2D opar <- par(mfrow=c(2,1), mar=c(4,3,2,1)); on.exit(par(opar)) plot(as.im.function(function(x,y,...) f(cbind(x,y), pars, type), W=discpoly(c(0,0), ub, class="owin")), axes=TRUE, main="Simulation from the spatial kernel") points(simpoints, cex=0.2) kdens <- kde2d(simpoints[,1], simpoints[,2], n=100) contour(kdens, add=TRUE, col=2, lwd=2, labcex=1.5, vfont=c("sans serif", "bold")) ##x11(); image(kdens, add=TRUE) ## Graphical check of distance distribution truehist(sqrt(rowSums(simpoints^2)), xlab="Distance") rfr <- function (r) r*f(cbind(r,0), pars, type) rfrnorm <- integrate(rfr, 0, ub)$value do.call("curve", list(quote(rfr(x)/rfrnorm), add=TRUE, col=2, lwd=2)) ##<- use do.call-construct to prevent codetools::checkUsage from noting "x" } ## invisibly return simulated points invisible(simpoints) } surveillance/R/hhh4_simulate_scores.R0000644000175100001440000000507412575777465017463 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Compute scores based on simulations from fitted hhh4() models ### ### Copyright (C) 2013-2015 Sebastian Meyer ### $Revision: 1476 $ ### $Date: 2015-09-15 00:08:30 +0200 (Die, 15. Sep 2015) $ ################################################################################ ## logarithmic score ## CAVE: will be infinite if none of "sims" yields "x" logs_sims <- function (sims, x) .logs(px = mean(sims == x)) ## Dawid-Sebastiani score ## CAVE: undefined if all simulations have the same value (i.e., no variance) dss_sims <- function (sims, x) { if ((varsims <- var(sims)) == 0) { # FIXME: What to do in that case? warning("DSS undefined for zero variance of prediction: all(sims==", sims[1L], "), x=", x) NA_real_ # if (x==sims[1L]) -Inf else Inf } else { .dss(meanP = mean(sims), varP = varsims, x = x) } } ## ranked probability score rps_sims <- function (sims, x) { .rps(P = ecdf(sims), x = x, kmax = ceiling(mean(sims) + 40*sd(sims))) ## Two alternatives via the expectation-based definition of the RPS: ## method = "means": equivalent to ecdf approach but slower ## method = "means.MC": faster than ecdf but with approximation error ## simdiffs <- switch(method, ## "means.MC" = diff(sims), ## "means" = outer(sims, sims, "-")) ## mean(abs(sims - x)) - mean(abs(simdiffs)) / 2 } ## scores-method for simulations from a hhh4 fit scores.hhh4sims <- function (x, which = "rps", units = NULL, ..., drop = TRUE) { observed <- observed(attr(x, "stsObserved")) scoreFUNs <- mget(paste0(which, "_sims"), envir = getNamespace("surveillance"), inherits = FALSE) names(scoreFUNs) <- which if (!is.null(units)) { observed <- observed[, units, drop = FALSE] x <- x[, units, , drop = FALSE] } counts <- array(c(observed, x), dim = dim(x) + c(0L, 0L, 1L)) res <- lapply(X = scoreFUNs, FUN = function (scoreFUN) apply(counts, 1:2, function (y) scoreFUN(y[-1L], y[1L]))) res <- simplify2array(res, higher = TRUE) if (drop) drop(res) else res } ## scores-method for simulations from a bunch of hhh4 fits scores.hhh4simslist <- function (x, ...) lapply(X = x, FUN = scores.hhh4sims, ...) surveillance/R/twinstim_tiaf.R0000644000175100001440000000353312272751567016213 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Temporal interaction functions for twinstim's epidemic component. ### Specific implementations are in seperate files (e.g.: exponential, step). ### ### Copyright (C) 2009-2014 Sebastian Meyer ### $Revision: 733 $ ### $Date: 2014-01-31 17:46:47 +0100 (Fre, 31 Jan 2014) $ ################################################################################ ##################### ### "Constructor" ### ##################### tiaf <- function (g, G, deriv, Deriv, npars, validpars = NULL) { npars <- as.integer(npars) if (length(npars) != 1 || npars < 0L) { stop("'tiaf'/'npars' must be a single nonnegative number") } haspars <- npars > 0L g <- .checknargs3(g, "tiaf$g") G <- .checknargs3(G, "tiaf$G") if (!haspars || missing(deriv)) deriv <- NULL if (!haspars || missing(Deriv)) Deriv <- NULL if (!is.null(deriv)) deriv <- .checknargs3(deriv, "tiaf$deriv") if (!is.null(Deriv)) Deriv <- .checknargs3(Deriv, "tiaf$Deriv") validpars <- if (!haspars || is.null(validpars)) NULL else match.fun(validpars) list(g = g, G = G, deriv = deriv, Deriv = Deriv, npars = npars, validpars = validpars) } ################################# ### Constant temporal interaction ################################# tiaf.constant <- function () { res <- list( g = as.function(alist(t=, pars=, types=, rep.int(1, length(t))), envir = .GlobalEnv), G = as.function(alist(t=, pars=, types=, t), envir = .GlobalEnv), npars = 0L ) attr(res, "constant") <- TRUE res } surveillance/R/scores.R0000644000175100001440000001444112575623072014623 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Scoring rules as discussed in: ### Predictive model assessment for count data ### Czado, C., Gneiting, T. & Held, L. (2009) ### Biometrics 65:1254-1261 ### ### Copyright (C) 2010-2012 Michaela Paul, 2014-2015 Sebastian Meyer ### $Revision: 1474 $ ### $Date: 2015-09-14 21:55:38 +0200 (Mon, 14. Sep 2015) $ ################################################################################ ## logarithmic score ## logs(P,x) = -log(P(X=x)) .logs <- function (px) -log(px) logs <- function (x, mu, size=NULL) { if (is.null(size)) { - dpois(x, lambda=mu, log=TRUE) } else { - dnbinom(x, mu=mu, size=size, log=TRUE) } } ## squared error score ## ses(P,x) = (x-mu_p)^2 ses <- function (x, mu, size=NULL) { (x-mu)^2 } ## normalized squared error score (IMPROPER) ## nses(P,x) = ((x-mu_p)/sigma_p)^2 nses <- function (x, mu, size=NULL) { sigma2 <- if (is.null(size)) mu else mu * (1 + mu/size) ((x-mu)^2) / sigma2 } ## Dawid-Sebastiani score ## dss(P,x) = ((x-mu_p)/sigma_p)^2 + 2*log(sigma_p) .dss <- function (meanP, varP, x) (x-meanP)^2 / varP + log(varP) dss <- function (x, mu, size=NULL) .dss(meanP = mu, varP = if (is.null(size)) mu else mu * (1 + mu/size), x = x) ## ranked probability score ## rps(P,x) = sum_0^Kmax {P(X<=k) - 1(x<=k)}^2 ## for a single prediction (general formulation) .rps <- function (P, ..., x, kmax, tolerance = sqrt(.Machine$double.eps)) { ## compute P(X<=k) k <- 0:kmax Pk <- P(k, ...) ## check precision if ((1 - Pk[length(Pk)])^2 > tolerance) warning("finite sum approximation error larger than tolerance=", format(tolerance)) ## compute the RPS sum((Pk - (x <= k))^2) } ## for a single Poisson prediction rps_1P <- function (x, mu, k=40, tolerance=sqrt(.Machine$double.eps)) { ## return NA for non-convergent fits (where mu=NA) if (is.na(mu)) return(NA_real_) ## determine the maximum number of summands as Kmax=mean+k*sd kmax <- ceiling(mu + k*sqrt(mu)) ## compute the RPS .rps(P = ppois, lambda = mu, x = x, kmax = kmax, tolerance = tolerance) } ## for a single NegBin prediction rps_1NB <- function (x, mu, size, k=40, tolerance=sqrt(.Machine$double.eps)) { ## return NA for non-convergent fits (where mu=NA) if (is.na(mu)) return(NA_real_) ## determine the maximum number of summands as Kmax=mean+k*sd sigma2 <- mu * (1 + mu/size) kmax <- ceiling(mu + k*sqrt(sigma2)) ## compute the RPS .rps(P = pnbinom, mu = mu, size = size, x = x, kmax = kmax, tolerance = tolerance) } ## vectorized version rps <- function (x, mu, size=NULL, k=40, tolerance=sqrt(.Machine$double.eps)) { res <- if (is.null(size)) { mapply(rps_1P, x=x, mu=mu, MoreArgs=list(k=k, tolerance=tolerance), SIMPLIFY=TRUE, USE.NAMES=FALSE) } else { mapply(rps_1NB, x=x, mu=mu, size=size, MoreArgs=list(k=k, tolerance=tolerance), SIMPLIFY=TRUE, USE.NAMES=FALSE) } attributes(res) <- attributes(x) # set dim and dimnames res } ### apply a set of scoring rules at once scores.default <- function(x, mu, size, which = c("logs", "rps", "dss", "ses"), sign = FALSE, ...) { ## compute sign of x-mu signXmMu <- if (sign) sign(x-mu) else NULL ## compute individual scores (these are dim(x) matrices) scorelist <- lapply(which, do.call, args = alist(x=x, mu=mu, size=size), envir = environment()) ## gather individual scores in an array array(c(unlist(scorelist, recursive=FALSE, use.names=FALSE), signXmMu), dim = c(dim(x), length(which) + sign), dimnames = c(dimnames(x), list(c(which, if (sign) "sign")))) } ### apply scoring rules to a set of oneStepAhead() forecasts ## CAVE: returns scores in reversed order, i.e. for time points n, n-1, n-2, ... scores.oneStepAhead <- function (x, which = c("logs","rps","dss","ses"), units = NULL, sign = FALSE, individual = FALSE, reverse = TRUE, ...) { y <- x$observed # observed counts during the prediction window mu <- x$pred # predicted counts (same dim as y) ## transform overdispersion to dnbinom() parameterization size <- psi2size.oneStepAhead(x) # -> NULL or full dim(y) matrix ## select units if (!is.null(units)) { y <- y[,units,drop=FALSE] mu <- mu[,units,drop=FALSE] size <- size[,units,drop=FALSE] # works with size = NULL } nUnits <- ncol(y) if (nUnits == 1L) individual <- TRUE # no need to apply rowMeans() below result <- scores.default(x = y, mu = mu, size = size, which = which, sign = sign) ## reverse order of the time points (historically) if (reverse) result <- result[nrow(result):1L,,,drop=FALSE] ## average over units if requested if (individual) { drop(result) } else { apply(X=result, MARGIN=3L, FUN=rowMeans) ## this gives a nrow(y) x (5L+sign) matrix (or a vector in case nrow(y)=1) } } ## calculate scores with respect to fitted values scores.hhh4 <- function (x, which = c("logs","rps","dss","ses"), subset = x$control$subset, units = seq_len(x$nUnit), sign = FALSE, ...) { ## slow implementation via "fake" oneStepAhead(): ##fitted <- oneStepAhead(x, tp = subset[1L] - 1L, type = "final", ## keep.estimates = FALSE, verbose = FALSE) ##scores.oneStepAhead(fitted, which = which, units = units, sign = sign, ## individual = TRUE, reverse = FALSE) result <- scores.default( x = x$stsObj@observed[subset, units, drop = FALSE], mu = x$fitted.values[match(subset, x$control$subset), units, drop = FALSE], size = psi2size.hhh4(x, subset, units), which = which, sign = sign) drop(result) } surveillance/R/epidataCS_plot.R0000644000175100001440000003474012616246275016226 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### plot-method for "epidataCS" objects ### ### Copyright (C) 2009-2015 Sebastian Meyer ### $Revision: 1507 $ ### $Date: 2015-11-04 01:09:33 +0100 (Mit, 04. Nov 2015) $ ################################################################################ plot.epidataCS <- function (x, aggregate = c("time", "space"), subset, by = type, ...) { aggregate <- match.arg(aggregate) FUN <- paste("epidataCSplot", aggregate, sep = "_") do.call(FUN, args = list(x = quote(x), subset = substitute(subset), by = substitute(by), ...)) } ### plot.epidataCS(x, aggregate = "time") -> number of cases over time ## in case t0.Date is specified, hist.Date() is used and breaks must set in ... (e.g. "months") epidataCSplot_time <- function (x, subset, by = type, t0.Date = NULL, breaks = "stgrid", freq = TRUE, col = rainbow(nTypes), cumulative = list(), add = FALSE, mar = NULL, xlim = NULL, ylim = NULL, xlab = "Time", ylab = NULL, main = NULL, panel.first = abline(h=axTicks(2), lty=2, col="grey"), legend.types = list(), ...) { timeRange <- with(x$stgrid, c(start[1L], stop[length(stop)])) ## subset event marks eventMarks <- if (missing(subset)) { marks.epidataCS(x, coords = FALSE) } else { do.call(base::subset, list( x = quote(marks.epidataCS(x, coords = FALSE)), subset = substitute(subset) )) } if (nrow(eventMarks) == 0L) stop("no events left after 'subset'") ## extract the data to plot by <- substitute(by) eventTimesTypes <- eventMarks[c("time", "type")] eventTimesTypes$type <- if (is.null(by)) { # disregard event types factor("all") } else { # stratification of counts (default is to stack bars by event type) as.factor(eval(by, envir = eventMarks)) } typeNames <- levels(eventTimesTypes$type) nTypes <- length(typeNames) if (!freq && nTypes > 1L) warning("a stacked barplot of multiple event types only makes sense for 'freq=TRUE'") ## default breaks at stop times of stgrid if (identical(breaks, "stgrid")) { breaks <- c(timeRange[1L], unique.default(x$stgrid$stop)) if (any(eventTimesTypes$time < timeRange[1L])) { message("Note: ignoring events of the pre-history (before \"stgrid\")") eventTimesTypes <- base::subset(eventTimesTypes, time >= timeRange[1L]) if (nrow(eventTimesTypes) == 0L) stop("no events left to plot") } } ## calculate cumulative numbers if requested if (is.list(cumulative)) { csums <- tapply(eventTimesTypes$time, eventTimesTypes["type"], function (t) cumsum(table(t)), simplify=FALSE) if (!is.null(cumulative[["offset"]])) { stopifnot(is.vector(cumulative$offset, mode="numeric"), length(cumulative$offset) == nTypes) csums <- mapply(FUN="+", csums, cumulative$offset, SIMPLIFY=FALSE, USE.NAMES=TRUE) } if (is.null(cumulative[["axis"]])) cumulative[["axis"]] <- TRUE } eventTimesTypes$type <- as.integer(eventTimesTypes$type) typesEffective <- sort(unique(eventTimesTypes$type)) col <- rep_len(col, nTypes) if (!is.null(t0.Date)) { stopifnot(length(t0.Date) == 1L) t0.Date <- as.Date(t0.Date) t0 <- timeRange[1L] if (is.numeric(breaks) && length(breaks) > 1L) # transform to Date breaks <- t0.Date + (breaks - t0) if (is.null(xlim)) xlim <- t0.Date + (timeRange - t0) if (missing(xlab) && is.character(breaks)) xlab <- paste0("Time (", breaks, ")") eventTimesTypes$time <- t0.Date + as.integer(eventTimesTypes$time - t0) ## we need integer dates here because otherwise, if the last event ## occurs on the last day of a month, year, etc. (depending on ## 'breaks') with a fractional date (e.g. as.Date("2009-12-31") + 0.5), ## then the automatic 'breaks' (e.g., breaks = "months") will not cover ## the data (in the example, it will only reach until ## as.Date("2009-12-31")). The following would fail: ## data("imdepi"); plot(imdepi, t0.Date = "2002-01-15", breaks = "months") } gethistdata <- function (breaks, types = seq_len(nTypes)) { times <- eventTimesTypes$time[eventTimesTypes$type %in% types] if (is.null(t0.Date)) { hist(times, breaks=breaks, plot=FALSE, warn.unused=FALSE, ...) } else { hist(times, breaks=breaks, plot=FALSE, ...) ## warn.unused=FALSE is hard-coded in hist.Date } } histdata <- gethistdata(breaks=breaks) if (!is.null(t0.Date)) { ## hist.Date() drops the Date class, but we need it for later re-use class(histdata$breaks) <- "Date" } ## establish the basic plot window if (!add) { if (is.null(xlim)) xlim <- timeRange if (is.null(ylim)) { ylim <- range(0, histdata[[if (freq) "counts" else "density"]]) } if (is.null(ylab)) { ylab <- if (freq) "Number of cases" else "Density of cases" } if (is.null(mar)) { mar <- par("mar") if (is.list(cumulative) && cumulative$axis) mar[4L] <- mar[2L] } opar <- par(mar = mar); on.exit(par(opar)) plot(x=xlim, y=ylim, xlab=xlab, ylab=ylab, main=main, type="n", bty="n") force(panel.first) } ## plot histogram (over all types) suppressWarnings( # about wrong AREAS if breaks are non-equidistant plot(histdata, freq = freq, add = TRUE, col = col[typesEffective[1L]], ...) ) if (!add) # doesn't work as expected when adding to plot with cumulative axis box() # because white filling of bars might overdraw the inital box ## add type-specific sub-histograms for (typeIdx in seq_along(typesEffective)[-1L]) { .histdata <- gethistdata( breaks = histdata$breaks, # have to use same breaks types = typesEffective[typeIdx:length(typesEffective)] ) suppressWarnings( # about wrong AREAS if breaks are non-equidistant plot(.histdata, freq = freq, add = TRUE, col = col[typesEffective[typeIdx]], ...) ) } ## optionally add cumulative number of cases if (is.list(cumulative)) { aT2 <- axTicks(2) div <- length(aT2) - 1L darken <- function (col, f = 0.6) apply(X = col2rgb(col, alpha = TRUE), MARGIN = 2L, FUN = function (x) rgb(f*x[1L], f*x[2L], f*x[3L], x[4L], maxColorValue = 255)) cumulative <- modifyList( list(maxat = ceiling(max(unlist(csums))/div)*div, col = darken(col), lwd = 3, axis = TRUE, lab = "Cumulative number of cases"), cumulative) csum2y <- function (x) x / cumulative$maxat * aT2[length(aT2)] for (typeIdx in typesEffective) { .times <- as.numeric(names(csums[[typeIdx]])) lines(if (is.null(t0.Date)) .times else t0.Date + .times - t0, csum2y(csums[[typeIdx]]), lwd=cumulative$lwd, col=cumulative$col[typeIdx]) } if (cumulative$axis) { axis(4, at=aT2, labels=aT2/aT2[length(aT2)]*cumulative$maxat) mtext(cumulative$lab, side=4, line=3, las=0) } } ## optionally add legend if (is.list(legend.types) && length(typesEffective) > 1) { legend.types <- modifyList( list(x="topleft", legend=typeNames[typesEffective], title=deparse(by, nlines = 1), fill=col[typesEffective]), legend.types) do.call("legend", legend.types) } invisible(histdata) } ### plot.epidataCS(x, aggregate = "space") -> spatial point pattern epidataCSplot_space <- function (x, subset, by = type, tiles = x$W, pop = NULL, cex.fun = sqrt, points.args = list(), add = FALSE, legend.types = list(), legend.counts = list(), sp.layout = NULL, ...) { ## extract the points to plot events <- if (missing(subset)) { x$events } else { # calls sp:::subset.Spatial eval(substitute(base::subset(x$events, subset=.subset), list(.subset=substitute(subset)))) } ## should the plot distinguish between different event types? by <- substitute(by) events@data$type <- if (is.null(by)) { # disregard event types factor("all") } else { # default is to distinguish points by event type as.factor(eval(by, envir = events@data)) } typeNames <- levels(events$type) nTypes <- length(typeNames) eventCoordsTypes <- data.frame( coordinates(events), type = as.integer(events$type), row.names = NULL, check.rows = FALSE, check.names = FALSE) ## count events by location and type eventCoordsTypesCounts <- if (is.null(pop)) { countunique(eventCoordsTypes) } else { ## work with "SpatialPolygons" -> spplot() events$COUNT <- multiplicity(eventCoordsTypes) events[!duplicated(eventCoordsTypes), c("type", "COUNT")] } pointCounts <- eventCoordsTypesCounts$COUNT countsLegend <- unique(round(10^(do.call("seq", c( as.list(log10(range(pointCounts))), list(length.out=5) ))))) typesEffective <- sort(unique(eventCoordsTypesCounts$type)) ## point style colTypes <- list(...)[["colTypes"]] # backwards compatibility for < 1.8 if (is.null(colTypes)) { colTypes <- rainbow(nTypes) } else warning("argument 'colTypes' is deprecated; ", "use 'points.args$col' instead") points.args <- modifyList(list(pch=1, col=colTypes, lwd=1, cex=0.5), points.args) styleArgs <- c("pch", "col", "lwd") points.args[styleArgs] <- lapply(points.args[styleArgs], rep_len, length.out=nTypes) ## select style parameters according to the events' types points.args_pointwise <- points.args points.args_pointwise[styleArgs] <- lapply( points.args_pointwise[styleArgs], "[", eventCoordsTypesCounts$type) points.args_pointwise$cex <- points.args_pointwise$cex * cex.fun(pointCounts) ## plot if (is.null(pop)) { ## classical plotting system if (!add) plot(tiles, ...) do.call("points", c(alist(x=eventCoordsTypesCounts[,1:2,drop=FALSE]), points.args_pointwise)) ## optionally add legends if (is.list(legend.types) && length(typesEffective) > 1) { legend.types <- modifyList( list(x="topright", legend=typeNames[typesEffective], title=deparse(by, nlines = 1), #pt.cex=points.args$cex, # better use par("cex") pch=points.args$pch[typesEffective], col=points.args$col[typesEffective], pt.lwd=points.args$lwd[typesEffective]), legend.types) do.call("legend", legend.types) } if (is.list(legend.counts) && any(pointCounts > 1)) { if (!is.null(legend.counts[["counts"]])) { countsLegend <- as.vector(legend.counts[["counts"]], mode="integer") legend.counts[["counts"]] <- NULL } legend.counts <- modifyList( list(x="bottomright", bty="n", legend=countsLegend, pt.cex=points.args$cex * cex.fun(countsLegend), pch=points.args$pch[1L], col=if(length(unique(points.args$col)) == 1L) points.args$col[1L] else 1, pt.lwd=points.args$lwd[1L]), legend.counts) do.call("legend", legend.counts) } invisible() } else { if (!is(tiles, "SpatialPolygonsDataFrame")) { stop("'pop' requires 'tiles' to be a \"SpatialPolygonsDataFrame\"") } ## grid plotting system -> spplot() layout.points <- c(list("sp.points", eventCoordsTypesCounts), points.args_pointwise) ## optional legend definitions legend.types <- if (is.list(legend.types) && length(typesEffective) > 1) { legend.types <- modifyList( list(corner = c(1, 1), # "topright" title = deparse(by, nlines = 1), cex.title = 1, border = TRUE, points = list( pch = points.args$pch[typesEffective], col = points.args$col[typesEffective], lwd = points.args$lwd[typesEffective] ), text = list(typeNames[typesEffective])), legend.types ) corner.types <- legend.types$corner legend.types$corner <- NULL list(inside = list(fun = lattice::draw.key(legend.types), corner = corner.types)) } legend.counts <- if (is.list(legend.counts) && any(pointCounts > 1)) { if (!is.null(legend.counts[["counts"]])) { countsLegend <- as.vector(legend.counts[["counts"]], mode="integer") legend.counts[["counts"]] <- NULL } legend.counts <- modifyList( list(corner = c(1,0), # "bottomright" points = list( cex = points.args$cex * cex.fun(countsLegend), pch = points.args$pch[1L], col = if(length(unique(points.args$col)) == 1L) points.args$col[1L] else 1, lwd = points.args$lwd[1L] ), text = list(as.character(countsLegend)), padding.text=2, between=0), legend.counts ) corner.counts <- legend.counts$corner legend.counts$corner <- NULL list(inside = list(fun = lattice::draw.key(legend.counts), corner = corner.counts)) } ## create the plot spplot(obj = tiles, zcol = pop, sp.layout = c(list(layout.points), sp.layout), legend = c(legend.types, legend.counts), ...) } } surveillance/R/sysdata.rda0000644000175100001440000001712412307672335015342 0ustar hornikusersý7zXZi"Þ6!ÏXÌàG ])TW"änRÊŸ’Ù¢Ä)'dzø$&}ïT©·ä¤È˜KŒ£z‡NÊ|`9–1 ²7=+¡¢]£˜ê¡>VÍÙ»e‡1Aš ^czQè®¼Š ¶‘Ã\6_IôÉf7|<,Nkú`ñ=¦“ç¦öb‘„ÌyKCVIm7„y›‚è¥ENsµrÎârE‘[਀ª@5NÍû™Ùž;ɧœ<&º®Ès2”»8¨ ùåS"Ü5=¶T¥0{~ç•%+Ø©BRž‡¦ws{ßXÁˆ¤9:™Nð*“˜á+ïÂ+"{jK|§(˜®.„l×G?õžo UE±ÂïÓ PL]óå醡¹NáŠ8{¥ Œàìà_« :! Ђÿ$x*6?¾qïtÐÀÃ÷ê&d7r RÝð…L ;ÂürFlgú'Yò2¶ô-ɧ”F#møå¾áªiá÷vóI›_fXtüãM”~®Ÿ„¬`¥« BÎνژ2}4ÑB¹Þ b¬Df0x $yÌh8¸²¬¿¬T›Âæ/¶3‡rEFµ9³Bn ñb䯙ŠàŠ&Á‘ršbG £éô:—fÁ4ÔbHòÝF½°m.ÿ"\„9}‹ÞwÆoJàþoÓ<Ë¢zÌ—‹ÿ£ó:Á›Aÿލ*ᆲ À°íÝ禇¤µ¾ÀˆýêÜ™?òËPÓ[›º¾uÊ œ+ÁÃÂyÖ/å/å%a»É·»òö8ç8`Jد=G V½ha×÷ZSLè#Ët—tà_;xAÛø"ð`—ØÆÿ”’bL:LtÈ Æik[£"‚V½sýÒÊ;†ÿ ×ïä­óë¿ý€¥qâÝ›fâ†L·$í¨c… PI2ZKž=u/8Ä©JöOØd‰¢Vt—8{i­,™R gª+W\¥ù߬_³VxÝ´†Ÿ‡äíê¯t­·gÛ`rßîë£Ï¾*?Æœ”…êE»Ù“¦ ˃Pe7ø³ŸˆíÒ›ÞY¶ô³(Á½w‚ Öó"­ÎZ02ÔQ%zhÄ.ÏÉ cþD7YJÀ*í9ú²»Ð®í­‰‘×Z±³ µjJžde:pÃW¸<‘—Î,ë‹V|uG¿µŠ¦q1’Íklø}tMɆÝì‹_ý‰xÎ’Æ|33ÜÒ*ÝÏÒÈ Å:ÞâŒÎ±:и˜Ð ãhrIæ¬tš$Yi'hÚ!tJ³ÛÑùúhíøêx83¿^¸ 51‹e(ÊÄpQØ2ªÅÆaÅhÆŒóéS£†ììË0Np­B:$W%r/"Ö(O°ßrS@Bë„a8pÅpï“@å7!GAy)Zi{Pp°ªvU>«C»1ÐãÌ%”-­Ýì ݆Óé7*Äûhè¾'"¼!)>A¦ybzC;d *¦ÖÔ,*g]@´ v¨¿ÖŸß†GÕ}.úi…Í Z›‰óò§“>Ë7ñéóÕ©PÌJ òˆx:–wY«”zî‹€j3ŠaHH‚ùBfÝ‘Ä$x ô5•qÌgümN}?7'CcTNø6áÁÖ6wÍxÌ}Kðü‡¢.B¾–·™@û÷-ÏÚý¼Ï© OÒ žèTVuß&ÎÖÐNn„“WÆDYb $øÜÎÜïjT49Åê,¬³áÃÿ¯ª;Õá5ð£:~ѵ8€Àƒt™‚^Œ+NóÄ>9ÄÆÕùŸ”éFÀžë+‡«eî˜Èxs­Ý¹CñÅÆ„Žløk:i1ž]‹r 3<›„z;{ËHæÌ‡ó/…‡T4’ÓðÑtƒœªµ‘'Á¼RmF_^ „Gú‡® g.Aá:úäÐÇÈåÐ ¬jPAdÃ"õe@÷1¬Ø˜ÁÕ>9›sÚæqíÒFÄ™‚ä¾¼ æt}wñ/²žú—5 7 týWº»8Œž'±v—99 o«?Fž¹´žÊ¥¬ù9JË•PM-T†Ö„ˆg âÓÿoðŇ©ï,=z|ŠŸô%Zɱç5›ªXIyÏEÂyj"’“ ÚOt2º •'@BÞüʼJL™½¹ ?©×ïXô6g/{n ï‰pžê%¦;vÝB‚0ê|4Íe±vµÏG@y½ŽîBprÜ`CÇ´Ò‘¢Í®“p9µ›˜,ñ0Süm<Ÿ|ELÆ›CÈÔšŸÓ…sàk’Ì L6 KÛ\o‘"Ÿô"\bäù .`øqëóWìžYý¬­¡O°2:mÙ ÝëCíCÅÌÿ†õœ'P¬AsW~n´ÌµUtÌEv?‹JúÑuO²ˆËîÇü·ÕÝò 3Ô$CYN[Äì;hƒâh¥­Ž¦ÃPGBÕ7‚£f“3±Ë–éÝÜNMñKõbUÊ #f«ˆ )"Q[3¤!¨0?Ð@³}m:¬•Ò½ºNFUV=–l Xä|a¥CŽùL›„à*8I€¿&Ýõý¸c¿„k¸Ížãõ&¾r xüp­c_Ï>Ôé< ‹Žcíɱ¿ç¸¤5˜³ûð„ÓJ­¡ÂÿùAC¼•J…*ÊFÁ[~íÐÌ4œªDšÙ Çÿk•Yæ[Áù…W9=È~c­rÆÝÝW(…T‹Fùa,ëcþçäL„M)0Óãð{tA“…âåùÌ)}Á9QÕvˈ#<ãØ2ãò¶¹ ¾¤›-gLþdÂøÅ9¥«Š]ãDBž*äô4ð2HÁ=žÂwå:Ø»qíÔi6ÕæÁ^è,–Ø Ù¾Á¨jò`·«A‰‘©_wï”>®n`$ «ü…c0¨Q£*tÎO&V¯ò W-¥ø7€TÚ°;a7Êâ#pã ¾4 ”×S#*Ž™à–TÜ|™¯ˆ³ª¹þÎG]Þç¸ça5¢ë©—[<&&+_pIƒ@NzSsQïSîõ<ȬjÎTÑsëØÑçMXvØY˜ñÌweöVˆƒ«öš!A¹ïeü+ïÏòÑÏÂÚÝ–_¦ÀNæ¸WwG—a~eXŒniýôÈÅGcè@nžYO4ÔNCOgôþq˜É ˆ¾Èó‡iòâh@· rÒ‚-u g©› ¼yk½c•þß{®¦ÿ Qw’Zøã¿»õBë/ß}Låv®wž>þaÝ}†¹Í0·rÚ‘½Kì'î–]럻ጊ[Y˜S}àËŽUº`?E¡¤à||Ò1þ3‚ꌜÌ[÷ÄéáÓf0£SupF0TëÿË^L¼Ç—»£è”wøà£4jjëaîÆæ‘¢àÔa}àËpÊA~m»«ãá ƒüS¦Ò°úÛ f´#Jà6ÆOÇѪrë-ea×ðwi„@°àN&† ©Jô—¾@èàcç•î;ÌÝBH‰@>ÕÓœr)Q´%ØADÈ ¯%œs»1H“C ¡$8+8D®p•f) S¨t|øaÔÎ<öõn ö)þAêð¤$±´$*äKHù‚ž7J”ØÖqqˆ$MýŒhŸ±M´±ÅZf¡¹¤YêcM&E/8üÊ—h˜¡Cøj¤å«$Ë4Kš‚ýÉJÁF´Ç$|¼†Äã‹#L‚žâÌÊ[„;EaÆd¡ðkü:kÃé_«Qe2+-ˆó9vZ`ö'.f ¤Ðïऎù,&» šKƒŒ?Ñ‚~¾àd¥¤¨˜e÷¸÷LîƒY²¶Sƒ¡J…ÚÛßV76}À¼ÑN62ý‚àÄõq—X6bôÚÏíie2rw(1‘ î1T¬ ‰Av;íè ’œ—šÑ>®DÆ,§ÍÃTSå—ì½ÄôÖøÿ \BæjnhÁ•Ô£odB±Ž±´¶avÖaÃ?†G«Ð²~IÚVDÈ™è:.äŠÞ™?A¡vS¨3)ÑéŸEÄd¡HåHÕ½*— _B'EÛàœ=ÎSaI–ÛSá»ÌŠÂ—ôt 5ú» Ð$ÍÎCb§ Á2:e3È ­îAS Àyçg6Ôœd©²O7±òÙí¶÷=?ùò­”®ý6µ@Í@J&Áƒ”\¯¢í€=ã¾<ãÔtQ´Ñ-Ì•ïÒ»M”˜Ý©/Ó.Ôóa\ê÷ÂÁ4–¥_•.j*}8÷4†9»éÛWr !L”T¨Í}-/œqÉè9+({Agñ¢Q¶DOêd¯4œ„é5¹¿Òü–áP_FÁ;:1‡æí"½g5žô*&.Ò!/g¥±WŠñɵ›(z¾B/Ö,ë= à«Si”C(«FX'RåyÌ!xŠõ¨Ñ㬠¦}ÊV+ÏÄÙ=Ûê¼ñy#ì=ée"òuô€{Y¨Q“«A#?‰ì,ônª'á>± î…’›¢dèí2ŒrYÝœ²ä46i<Ëý/þ1Ü~œVGµü%­bsŸ^—ˆÔèŽí㜿g~ç¾øÒµÌÝÆ©/Ñ’D0çb³nÄûe~qM‰šÑ›ƒÂFtš×̯ҩÛ/'p“ùê¡*7:;L¾ÌQÌv½œ_åh¼Uðv”á‹æPN=öânŸ“èÆfÝpçéjqM£Q]šToŸ<Æ^”/Í0q6W5Ëö"³Ió:eh D @QÎÔo2D‡Ð½`Ý(^ܘQÚ/•ž¾Æê-œÃÙ“;ƒ›–%Ò•¬l±žÁºîðâ:RÌç‡È <cж¦`Úý›î !Â=`˜…ºç=hÛ n¼Ýð9:¯a…¶¡±¢™«a©?ðø °J¬± Š™s P×ò^™uäºQÝÈRÏÂ4Ì­¾ÌÇóµÿ )_[á#v¼ÑãFÀéÉ5©2JëßÁÿ³Ëq/Þ¡@?*ÅzæœÞÕO(¥-ŸŽycvûAÓ©º›W’šásÇhÁ’ZFáö üL*\qFR‰ë…2I,=胂þ»Ö9´ê9‚f¬öX‹v™F\j='zSÒô“Ž­7u P¿‡#zWPÔÀ|ôRÓ·e)/É(grÖcòc® âvBã€1˜N¾îÖ W¦£tü|“¢OYÞm‰^o?– Dð§òsVP¡Èrm%ðX®}Eh7wï4µbjÅåz¨lCý€oƒŸÆ¦ÔnúÇ”|psÉ ¾Œé:kâ+ÿz æXž—„øé£¶®Í 0fÅiP£ÿ%›äl¬¬ÚÕaâ8²¿•ó¥‰8|±RÎ…U nýüw’Œ¶>»Á'+ûCb‚¸ÖbUcà9­Âß8¹®Ò0ž }™žâ"Õ|˜†ù³Ì_mÎKTwšìüOçBìÉï ¡š¥¡Ÿ¾ÃrÞ⤼uj%C1“Ï­ZáݶγwíyÏÔz@²* ¸$§1˜¯®Å‘Ѱ–oÛŠz”gÿó+Šc`O‹Q=&P÷Æ­ Ê[FXÓæ¶¶¶ÖÈÃHçÙ)þv¦öÓÑWIвºµ€Ú QÖƒ¶o*F‹2@ØD¥âtP=*Vº""´hÒT£îïˆ_h¸?ØœiÛÑ\‘ŒÖM û v¿c5"‘ ãp—fÙü6÷²ÊLzFuωo\Úú)Sb=T†èNî>–øð)—Ó& Î({k“ÌYPí–ÊlT ¼ƒšÒ>[§‹Î»ŒãsúÛ]Ó{ ÛÕXR4ë Ž‰±Ù‘V Mòïó'Aô›$â=àôT¬wÜ­"ù£cˆ>“ßkg«¿ 2Ì¡ß=¬Bß„¨œµä“rÝ N/:•ö†Át…}¨®>×é'Ë}£X›ZÌ30´³…2—iõ 4ˆ£¹¤œM^œnaQä8!ÓIÜÆRQ¬u äèTÌ~Øt‚‚ÙÅãõˆ•P«66$d–¶¸ íø,< ]€rR!Ó! ÍÕ®!ê4B3pÙÃô¹'’¿±·YÓ¿KN1þrm´{ÒqhTH¸ü¦Zê+X'n–)÷Xf[4éÄÛdlû ‹@õÆUxe×\pϽncĺF°kˆŽ¹™øiª@–óoÿ…:5»–áÏD×õê9¦R`"hÍé•: ÔàúËLwXI·k^}’²Ê–I>ræ†.0dø%AÃG¾+<:VÔ ~Û/m.-ycÔ¯s‚+±—PU[ÉT¼ÉW(‰°N”œø–Á×ãàmsr)€’´cÔcw¤êŠ•ÉÁ™úsž_Ý1²Iû±¿ôU=]·¸ðvàÆ/—¡½åÐÚæ~×€ 9äá¹£ž'%uàBâ¶v‰b¡¨Ë¼ªÈSJ3îÒøpÇíŸÕÔ³­n]ø ½'–7Ô'M²€åBØT;«`U¸6_™gì»Íç“ ¨¤ôH³B‡·V,eÜóŽ2º_ï›}Ö;”rYuõ5ôPD' .˜œu1¸t=祳¥/?6 ‡ïµ±EJ¥TX<#žÏë¤zI<€RbÒyyé ([,ˆÚÔ9t¦ þñªŠÇ«¨Ö°FÜš¢ØÌœÃ!]Ú/›¡ÄP%ìµSæaÜ– ú©òJ©ýÖù:ñ›ùj×#Ü_Ò®«ûºG®‹:HAн–¾9\“ˆ5Ô»Ä2÷8tw£tóR$(²ç‘Òò¡ÍI¹¿@r–Y8!«*údx$& .²Ý@ãø Áäú#úôþe¦èÓ…£cÿ÷YXx˜uJN®> >4ï£sk6å-]0(s7¤—½tø+úH!—oq*ITÉ-»\°™²Õ‰Á¤gh¢²!à«bA1pFMÆô™ÖßÝ&¤ß›ÝJƒ$ƒoÿÈÙ¾ûr‰Àq}R騝M¬Ú=÷"æ ¼Óùo« BPG*߶´­¨ü¶À`B0D×¹Vd×,„Ž^…"eÓïÒ!q©ç4Öûl*24o)NP8"“p6MjÒÊéçTã¯`_¼£Ë\QÆÅ4JÀE³óØ<¥oIÒ .@+{P4A8¤/\hWËZƒ9žN1ý¾Z¸'Šu×cšÒ~œëC Î8•¶‚ÃåÕÓŸ¸²3>1& 3P´ìg%wƒ‰Í Ù,έß86+°ñ¹Cpú È·)A5E˜ ¨½Äè:ÿ,4E­ÀOá“3 !ÉF¿5:A<ÚAžd.è ´qâZèéÞøˆ?„–¿mÖ¦¹1÷´ØNðHÿ>”¼Ê¨ŠyȧQ1÷§Óx óNM»!N»y|J#⦋àî;­[œ –¥àÈc- Dí@©;¦ÃÐÅ£2)N…’ªýZ)A|¨Ê¥˜Ý6#ÅÃéë<Á\£ãÓF6L.,§o_¤‚5[Û[Éíy檼ÐíY†J3=‚LMŒ1§fjnŽ88 ÷¦ãÎz YZê×éqŸŠ‹¸l/ËSœBŒ¹âÖôk+} ‘8?¾¡Ïdäã³vø[Ž¿£«T$äbck7])—ÔÑÄ™[kQçVGHËæëvsµßÈ{,'ÚµJ—jÍ·žn’Z)ËàypǤr­yM"µL\¼I1Èkbñ¬?Ž2¥ªS~zîÚt¡ºí ÈÆ'Õ“°fÓ9F‚á#¥ÓTË 墒Žš4¥Üï½é7eëWZ4öþ~~ÎwCµ3UP±o» Å먰¾×Z饫fCÑúºðÍÒÒe†t!(=ëÀG´£®‹Fúɨ$({·yž»†OÉUÂâߨ­ âüdçëïK是†|\PAC>‘‘f’×&¡a¯—¬¸.žÂÁò^¡" ƒèŒ—‰pëÙÔ• Ñ`1)iùjÏïÏ"§ufäËŒæ\²x§H±I†$Ÿ»à‘°ï¢QžéC Ç]Ía¡÷¡ãdz¿†3BÇ(R¤N[Ô9@A…&à=pd´“_n|ú÷”‰UJPÜÛœèë¥):˜$@÷KÊšÍ?@¨{­³W&µ1¾CøºX°<ŽŽìTxB>0 ‹YZsurveillance/R/twinstim_simulation.R0000644000175100001440000015243112527561473017454 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Simulate a point pattern according to a spatio-temporal intensity model of ### class "twinstim". The function basically uses Ogata's modified thinning ### algorithm (cf. Daley & Vere-Jones, 2003, Algorithm 7.5.V.). ### ### Copyright (C) 2010-2015 Sebastian Meyer ### $Revision: 1339 $ ### $Date: 2015-05-22 10:05:15 +0200 (Fre, 22. Mai 2015) $ ################################################################################ ### CAVE: ### - the type of contrasts for factor variables has to be set through options("contrasts") ### - if epidemic-only process (!hash), we actually don't need stgrid, but we ### want to have valid epidataCS at the end, which requires stgrid ## model.frame() evaluates '...' with 'data' utils::globalVariables(c("BLOCK", "tile", "area")) simEpidataCS <- function (endemic, epidemic, siaf, tiaf, qmatrix, rmarks, events, stgrid, tiles, beta0, beta, gamma, siafpars, tiafpars, epilink = "log", t0 = stgrid$start[1], T = tail(stgrid$stop,1), nEvents = 1e5, control.siaf = list(F=list(), Deriv=list()), W = NULL, trace = 5, nCircle2Poly = 32, gmax = NULL, .allocate = 500, .skipChecks = FALSE, .onlyEvents = FALSE) { ptm <- proc.time()[[3]] cl <- match.call() ####################### ### Check arguments ### (this takes many lines of code ...) ####################### cat("\nChecking the supplied arguments ...\n") ### Some simple input checks if (missing(endemic)) endemic <- ~ 0 else stopifnot(inherits(endemic, "formula")) if (missing(epidemic)) epidemic <- ~ 0 else stopifnot(inherits(epidemic, "formula")) if (length(trace) != 1L) stop("'trace' must be a single integer or logical value") trace <- as.integer(trace) if (!isScalar(nCircle2Poly)) stop("'nCircle2Poly' must be scalar") nCircle2Poly <- as.integer(nCircle2Poly) if (!isScalar(.allocate)) stop("'.allocate' must be scalar") .allocate <- as.integer(.allocate) .skipChecks <- as.logical(.skipChecks) .onlyEvents <- as.logical(.onlyEvents) ### Check qmatrix if (missing(qmatrix)) qmatrix <- diag(1) nTypes <- nrow(qmatrix) if (is.null(typeNames <- rownames(qmatrix))) { if (nTypes > length(LETTERS)) stop("'qmatrix' needs dimnames") typeNames <- LETTERS[seq_len(nTypes)] } qmatrix <- checkQ(qmatrix, typeNames) qSumTypes <- rowSums(qmatrix) # how many types can be triggered by each type ### Check other "epidataCS" components (events, stgrid, tiles, and W) if (!missing(events) && !is.null(events)) { events <- events[!names(events) %in% reservedColsNames_events] if (!.skipChecks) { cat("Checking 'events':\n") events <- check_events(events, dropTypes = FALSE) # epscols are obligatory in 'check_events', which is also appropriate here } ## check event types events@data$type <- factor(events@data$type, levels=typeNames) if (any(.typeIsNA <- is.na(events@data$type))) { warning("ignored some 'events' of unknown type") events <- events[!.typeIsNA,] } } if (!.skipChecks) { cat("Checking 'stgrid':\n") stgrid <- check_stgrid(stgrid[grep("^BLOCK$", names(stgrid), invert=TRUE)]) } W <- if (is.null(W)) { cat("Building 'W' as the union of 'tiles' ...\n") unionSpatialPolygons(tiles) } else check_W(W) # does as(W, "SpatialPolygons") tileLevels <- levels(stgrid$tile) tiles <- check_tiles(tiles, tileLevels, areas.stgrid = stgrid[["area"]][seq_along(tileLevels)], W = W, keep.data = FALSE) ## Transform W to class "owin" Wowin <- as(W, "owin") Wedges <- edges(Wowin, check = FALSE) maxExtentOfW <- diameter.owin(Wowin) ### Check parameters beta0 <- if (missing(beta0)) numeric(0L) else as.vector(beta0, mode="numeric") beta <- if (missing(beta)) numeric(0L) else as.vector(beta, mode="numeric") gamma <- if (missing(gamma)) numeric(0L) else as.vector(gamma, mode="numeric") siafpars <- if (missing(siafpars)) numeric(0L) else as.vector(siafpars, mode="numeric") tiafpars <- if (missing(tiafpars)) numeric(0L) else as.vector(tiafpars, mode="numeric") nbeta0 <- length(beta0) if (nbeta0 > 1L && nbeta0 != nTypes) { stop("'beta0' must have length 0, 1, or 'nrow(qmatrix)'") } p <- length(beta) q <- length(gamma) nsiafpars <- length(siafpars) ntiafpars <- length(tiafpars) hase <- q > 0L hassiafpars <- nsiafpars > 0L hastiafpars <- ntiafpars > 0L if (!hase && (hassiafpars | hastiafpars)) { stop("'siafpars' and 'tiafpars' require 'gamma'") } ### Check time range if (is.null(t0)) t0 <- eval(formals()$t0) if (is.null(T)) T <- eval(formals()$T) if (!isScalar(t0) || !isScalar(T)) { stop("endpoints 't0' and 'T' must be single numbers") } if (T <= t0) { stop("'T' must be greater than 't0'") } stopifnot(t0 >= stgrid$start[1], T <= tail(stgrid$stop,1)) ### Subset stgrid to include actual time range only # BLOCK in stgrid such that start time is equal to or just before t0 block_t0 <- stgrid$BLOCK[match(TRUE, c(stgrid$start,Inf) > t0) - 1L] # BLOCK in stgrid such that stop time is equal to or just after T block_T <- stgrid$BLOCK[match(TRUE, stgrid$stop >= T)] stgrid <- stgrid[stgrid$BLOCK>=block_t0 & stgrid$BLOCK<=block_T,,drop=FALSE] stgrid$start[stgrid$BLOCK == block_t0] <- t0 stgrid$stop[stgrid$BLOCK == block_T] <- T # matrix of BLOCKS and start times (used later) blockstarts <- with(stgrid, cbind(block_t0:block_T, start[match(block_t0:block_T, BLOCK)], deparse.level = 0L) ) ### Check mark-generating function # eps.t and eps.s are also unpredictable marks (generated by rmarks) unpredMarks <- unique(c("eps.t", "eps.s", if (hase) { setdiff(all.vars(epidemic), c("type", names(stgrid))) })) rmarks <- match.fun(rmarks) sampleCoordinate <- coordinates(spsample(tiles, n=1L, type="random")) sampleMarks <- rmarks(t0, sampleCoordinate) # should be a one-row data.frame if (!is.data.frame(sampleMarks) || nrow(sampleMarks) != 1L) { stop("'rmarks' must return a one-row data.frame of marks") } markNames <- names(sampleMarks) if (.idx <- match(FALSE, unpredMarks %in% markNames, nomatch=0L)) { stop("the unpredictable mark '", unpredMarks[.idx], "' is not returned by 'rmarks'") } if (!all(sapply(sampleMarks[unpredMarks], function(x) inherits(x, c("integer","numeric","logical","factor"), which=FALSE)))) warning("'rmarks' should return \"numeric\", \"logical\", or", " \"factor\" ('epidemic') variables only") ### Check prehistory of the process Nout <- 0L if (!missing(events) && !is.null(events)) { .stillInfective <- with(events@data, time <= t0 & time + eps.t > t0) Nout <- sum(.stillInfective) events <- if (Nout > 0L) { events[.stillInfective,] } else { .eventstxt <- if (.skipChecks) "data$events" else "events" # for simulate.twinstim cat("(no events from '", .eventstxt, "' were considered as prehistory)\n", sep="") NULL } } ## separate coordinates and data if (Nout > 0L) { check_tiles_events(tiles, events) eventCoords <- coordinates(events) eventData <- events@data ## check presence of unpredictable marks if (length(.idx <- which(!unpredMarks %in% names(eventData)))) { stop("missing unpredictable marks in 'events': ", paste0("\"", unpredMarks[.idx], "\"", collapse=", ")) } ## check type of unpredictable marks for (um in unpredMarks) { if (!identical(class(sampleMarks[[um]]), class(eventData[[um]]))) stop("the class of the unpredictable mark '", um, "' in the 'events' prehistory ", "is not identical to the class returned by 'rmarks'") } ## add marks which are not in the prehistory but simulated by 'rmarks' if (length(.add2events <- setdiff(markNames, names(eventData)))) { eventData <- cbind(eventData, sampleMarks[.add2events]) is.na(eventData[.add2events]) <- TRUE } eventData <- eventData[c("time", "tile", "type", markNames)] } else { ## empty prehistory eventCoords <- matrix(0, nrow=0L, ncol=2L) eventData <- data.frame( time = numeric(0L), tile = factor(character(0L), levels=tileLevels), type = factor(character(0L), levels=typeNames), check.rows = FALSE, check.names = FALSE ) eventData <- cbind(eventData, sampleMarks[0L,]) } ## helper function to attach covariates from 'stgrid' to events attachstgridvars <- function (eventData, stgridvars) { if (length(stgridvars) == 0L) return(eventData) gridcellsOfEvents <- integer(nrow(eventData)) for (i in seq_along(gridcellsOfEvents)) { gridcellsOfEvents[i] <- gridcellOfEvent(eventData[i,"time"], eventData[i,"tile"], stgrid) } cbind(eventData, stgrid[gridcellsOfEvents, stgridvars, drop=FALSE]) } ### Build epidemic model matrix epidemic <- terms(epidemic, data = eventData, keep.order = TRUE) if (!is.null(attr(epidemic, "offset"))) { warning("offsets are not implemented for the 'epidemic' component") } # helper function taking eventData and returning the epidemic model.matrix buildmme <- function (eventData) { # which variables do we have to copy from stgrid? stgridCopyCols <- match(all.vars(epidemic), names(stgrid), nomatch = 0L) eventData <- attachstgridvars(eventData, stgridCopyCols) mfe <- model.frame(epidemic, data = eventData, na.action = na.fail, drop.unused.levels = FALSE) model.matrix(epidemic, mfe) } mme <- buildmme(eventData) if (ncol(mme) != q) { cat(ncol(mme), "epidemic model terms:\t", paste(colnames(mme), collapse=" "), "\n") stop("length of 'gamma' (", q, ") does not match the 'epidemic' specification (", ncol(mme), ")") } ## (inverse) link function for the epidemic linear predictor of event marks epilink <- match.arg(epilink, choices = c("log", "identity")) epilinkinv <- switch(epilink, "log" = exp, "identity" = identity) ### Build endemic model matrix endemic <- terms(endemic, data = stgrid, keep.order = TRUE) # check if we have an endemic component at all hasOffset <- !is.null(attr(endemic, "offset")) hash <- (nbeta0 + p + hasOffset) > 0L if (!hash) { if (!hase) { stop("nothing to do: neither endemic nor epidemic parameters were specified") # actually, the process might be endemic offset-only, which I don't care about ATM } if (Nout == 0L) { stop("missing 'events' pre-history (no endemic component)") } } # remove (1|type) specification typeSpecificEndemicIntercept <- "1 | type" %in% attr(endemic, "term.labels") || nbeta0 > 1 if (typeSpecificEndemicIntercept) { endemic <- update(endemic, ~ . - (1|type)) # this drops the terms attributes endemic <- terms(endemic, data = stgrid, keep.order = TRUE) if (nbeta0 <= 1L) { stop("for type-specific endemic intercepts, 'beta0' must be longer than 1") } } # ensure that we have correct contrasts in the endemic component attr(endemic, "intercept") <- as.integer(nbeta0 > 0L) # helper function taking eventData (with time and tile columns) # and returning the endemic model.matrix buildmmh <- function (eventData) { # if 'pi' appears in 'endemic' we don't care, and if a true covariate is # missing, model.frame will throw an error # which variables do we have to copy from stgrid? stgridCopyCols <- match(all.vars(endemic), names(stgrid), nomatch = 0L) # attaching covariates from 'stgrid' to events eventData <- attachstgridvars(eventData, stgridCopyCols) # construct model matrix mfhEvents <- model.frame(endemic, data = eventData, na.action = na.fail, drop.unused.levels = FALSE) mmhEvents <- model.matrix(endemic, mfhEvents) # exclude intercept from endemic model matrix below, will be treated separately if (nbeta0 > 0) mmhEvents <- mmhEvents[,-1,drop=FALSE] structure(mmhEvents, offset = model.offset(mfhEvents)) } # actually, we don't need the endemic model matrix for the pre-history events at all # this is just to test consistence with 'beta' and for the names of 'beta' mmh <- buildmmh(eventData[0L,]) if (ncol(mmh) != p) { stop("length of 'beta' (", p, ") does not match the 'endemic' specification (", ncol(mmh), ")") } ### Build endemic model matrix on stgrid mfhGrid <- model.frame(endemic, data = stgrid, na.action = na.fail, drop.unused.levels = FALSE, BLOCK = BLOCK, tile = tile, ds = area) # we don't actually need 'tile' in mfhGrid; this is only for easier identification when debugging mmhGrid <- model.matrix(endemic, mfhGrid) # exclude intercept from endemic model matrix below, will be treated separately if (nbeta0 > 0) mmhGrid <- mmhGrid[,-1,drop=FALSE] # Extract endemic model components offsetGrid <- model.offset(mfhGrid) gridBlocks <- mfhGrid[["(BLOCK)"]] ds <- mfhGrid[["(ds)"]] ### Parse interaction functions if (hase) { ## Check interaction functions siaf <- do.call(".parseiaf", args = alist(siaf, "siaf", verbose=trace>0)) constantsiaf <- attr(siaf, "constant") if (siaf$npars != nsiafpars) { stop("length of 'siafpars' (", nsiafpars, ") does not match the 'siaf' specification (", siaf$npars, ")") } tiaf <- do.call(".parseiaf", args = alist(tiaf, "tiaf", verbose=trace>0)) constanttiaf <- attr(tiaf, "constant") if (constanttiaf) gmax <- 1L if (tiaf$npars != ntiafpars) { stop("length of 'tiafpars' (", ntiafpars, ") does not match the 'tiaf' specification (", tiaf$npars, ")") } ## Check control.siaf if (constantsiaf) control.siaf <- NULL else { stopifnot(is.null(control.siaf) || is.list(control.siaf)) } ## Define function that integrates the two-dimensional 'siaf' function ## over the influence regions of the events if (!constantsiaf && !is.null(siaf$Fcircle) && !is.null(siaf$effRange)) { ## pre-compute effective range of the 'siaf' (USED BY .siafInt) effRangeTypes <- rep_len(siaf$effRange(siafpars), nTypes) } .siafInt <- .siafIntFUN(siaf = siaf, noCircularIR = FALSE) # not certain beforehand .siafInt.args <- c(list(siafpars), control.siaf$F) ## Check gmax if (is.null(gmax)) { gmax <- max(tiaf$g(rep.int(0,nTypes), tiafpars, 1:nTypes)) cat("assuming gmax =", gmax, "\n") } else if (!isScalar(gmax)) { stop("'gmax' must be scalar") } } else { if (!missing(siaf) && !is.null(siaf)) warning("'siaf' can only be modelled in conjunction with an 'epidemic' process") if (!missing(tiaf) && !is.null(tiaf)) warning("'tiaf' can only be modelled in conjunction with an 'epidemic' process") siaf <- tiaf <- NULL control.siaf <- NULL } ### print some information on the upcoming simulation txtPrehistory <- if (Nout == 0L) "no prehistory" else paste(Nout, ngettext(Nout, "event", "events"), "in the prehistory") cat("\nSimulating a", if (length(unpredMarks) > 2L) "marked", "spatio-temporal point pattern with", "\n\t-", nTypes, ngettext(nTypes, "event type", "event types"), "\n\t-", txtPrehistory) coefs <- c( if (nbeta0 > 1L) { setNames(beta0, paste0("h.type",typeNames)) } else if (nbeta0 == 1L) setNames(beta0, "h.(Intercept)"), if (p > 0L) setNames(beta, paste("h",colnames(mmh),sep=".")), if (hase) setNames(gamma, paste("e",colnames(mme),sep=".")), if (hassiafpars) setNames(siafpars, paste("e.siaf",1:nsiafpars,sep=".")), if (hastiafpars) setNames(tiafpars, paste("e.tiaf",1:ntiafpars,sep=".")) ) cat("\n\t-", length(coefs), "coefficients:\n\n") print(coefs) ########################################## ### CIF of the temporal ground process ### ########################################## ### calculate integral of endemic component over W (= union of tiles) ### and over types for all time blocks in stgrid hIntWK <- if (hash) { dsexpeta <- local({ eta <- drop(mmhGrid %*% beta) # =0 if p = 0 if (!is.null(offsetGrid)) eta <- offsetGrid + eta ds * exp(unname(eta)) }) fact <- if (nbeta0 > 1L) sum(exp(beta0)) else if (nbeta0 == 1L) nTypes*exp(unname(beta0)) else nTypes fact * c(tapply(dsexpeta, gridBlocks, sum)) } else setNames(numeric(nrow(blockstarts)), blockstarts[,1]) # zeroes #<- is a named vector with names referencing BLOCK in stgrid ### helper function evaluating the epidemic terms of the ground intensity ### for a specific set of events (the lambdag function uses eTerms) eTermsCalc <- function (eventData, eventCoords) { # extract some marks from the eventData (USED INSIDE .siafInt() BELOW!) eventTypes <- as.integer(eventData$type) eps.s <- eventData$eps.s # distance to the border (required for siafInt below, and for epidataCS) bdist <- bdist(eventCoords, Wedges) # spatial influence regions of the events influenceRegion <- if (nrow(eventCoords) > 0L) .influenceRegions( events = SpatialPointsDataFrame( coords = eventCoords, data = data.frame(eps.s = eps.s, .bdist = bdist), match.ID = FALSE ), W = Wowin, npoly = nCircle2Poly, maxExtent = maxExtentOfW, clipper = "polyclip" ) else list() # epidemic terms if (!hase) { return(list(matrix(NA_real_, length(influenceRegion), 3L), bdist, influenceRegion)) } # epidemic model matrix (will be multiplied with gamma) mme <- buildmme(eventData) # integrate the two-dimensional 'siaf' function over the influence region siafInts <- if (length(influenceRegion) == 0L) numeric(0L) else { environment(.siafInt) <- environment() do.call(".siafInt", .siafInt.args) } # Matrix of terms in the epidemic component eTerms <- cbind( qSum = qSumTypes[eventTypes], expeta = epilinkinv(drop(mme %*% gamma)), siafInt = siafInts ) # Return list(eTerms, bdist, influenceRegion) } ### function calculating the (upper bound) intensity of the ground process ### it relies on several objects for the epidemic component which are updated alongside simulation # t will be one of the break points in stgrid or an event time lambdagVec <- function (t, upper=FALSE) { ## endemic part hIntWKt <- hIntWK[[as.character(tBLOCK)]] ## epidemic part ejIntWt <- if (!hase || length(infectives) == 0L) numeric(0L) else { eTerms <- eTerms[infectives,,drop=FALSE] gTerm <- if (upper) { rep.int(gmax, length(infectives)) } else { times <- eventMatrix[infectives,"time"] types <- eventMatrix[infectives,"type"] tiaf$g(t-times, tiafpars, types) } # ejIntWt only for infectives, others have 0 setNames(apply(cbind(eTerms,gTerm), 1, prod), infectives) } c("0"=hIntWKt, ejIntWt) # endemic component has index "0" ! } ### helper function calculating the integral of lambdag from oldct to ct ### during simulation; it depends on the current values of the simulation add2Lambdag <- if (!hase || constanttiaf) { function () lambdagUpper * (ct-oldct) } else function () { # old endemic ground intensity * passed time hIntWKInt_oldct_ct <- lambdaghe[1L] * (ct-oldct) # integrated epidemic ground intensities of infectives (from oldct) ejIntWInt_oldct_ct <- if (length(infectives) == 0L) numeric(0L) else { eTermsProd <- apply(eTerms[infectives,,drop=FALSE], 1, prod) # integral of \id_{(0;eps.t]}(t-t_j) g(t-t_j \vert \kappa_j) from oldct to ct, for j in infectives # we can ignore the indicator because t-t_j is not >eps.t if t in [oldct;ct], because recoveries are change points times <- eventMatrix[infectives,"time"] types <- eventMatrix[infectives,"type"] gInt_0_ct <- tiaf$G(ct -times, tiafpars, types) gInt_0_oldct <- tiaf$G(oldct-times, tiafpars, types) gInt_oldct_ct <- gInt_0_ct - gInt_0_oldct eTermsProd * gInt_oldct_ct } sum(hIntWKInt_oldct_ct, ejIntWInt_oldct_ct) } ################## ### Simulation ### ################## ### Initialise values for simulation loop # all necessary components for an epidataCS object will be build along the simulation # let's start with the events of the prehistory tmp <- eTermsCalc(eventData, eventCoords) eTerms <- tmp[[1]]; rownames(eTerms) <- NULL bdists <- tmp[[2]] influenceRegions <- tmp[[3]] sources <- rep.int(list(integer(0L)), Nout) # Transform eventData into a matrix, which is faster with rbind # (factors will be recreated at the end of simulation) # simulated events will be subsequently appended to this matrix eventMatrix <- if (Nout == 0L) { matrix(numeric(0L), nrow=0L, ncol=ncol(eventData), dimnames=list(NULL, names(eventData))) } else { sapply(eventData, as.numeric, simplify = TRUE) # prehistory } if (Nout == 1L) eventMatrix <- t(eventMatrix) # we will also know about the source of infection and corresponding BLOCK in stgrid navec <- rep.int(NA_real_, Nout) eventMatrix <- cbind(eventMatrix, source = navec, lambda.h = navec, lambda.e = navec, Lambdag = navec, BLOCK = navec) # row indices of currently infective individuals infectives <- seq_len(Nout) # maximum total number of events (including prehistory) maxEvents <- Nout + nEvents # change points of lambdag stgridbreaks <- blockstarts[-1,2] Rtimes <- setNames(eventMatrix[,"time"]+eventMatrix[,"eps.t"], infectives) # name indexes row of eventMatrix # index of next event (row in eventMatrix) j <- Nout + 1L # allocation of large objects for faster filling-in of new events allocated <- Nout ncolEventMatrix <- ncol(eventMatrix) newAllocation <- expression({ eventMatrix <- rbind(eventMatrix, matrix(NA_real_, nrow = .allocate, ncol = ncolEventMatrix)) eventCoords <- rbind(eventCoords, matrix(NA_real_, nrow = .allocate, ncol = 2L)) eTerms <- rbind(eTerms, matrix(NA_real_, nrow = .allocate, ncol = 3L)) bdists <- c(bdists, rep.int(NA_real_,.allocate)) influenceRegions <- c(influenceRegions, vector(.allocate, mode="list")) sources <- c(sources, vector(.allocate, mode="list")) allocated <- allocated + .allocate }) # current time point ct <- t0 # current value of the cumulative intensity function of the ground process Lambdag <- 0 # last point rejected? pointRejected <- FALSE # did we have numerical problems simulating from Exp(lambdagUpper) in the current loop? hadNumericalProblems0 <- FALSE # index of the current loop loopCounter <- 0L ### Let's Rock 'n' Roll if (trace > 0L) { cat("\nSimulation path (starting from t=", t0, "):\n---\n", sep="") } else { cat("\nSimulating (starting from t=", t0, ") ...\n", sep="") } while(j <= maxEvents && ct < T && (hash || length(infectives) > 0L)) { loopCounter <- loopCounter + 1L if (trace > 0L && loopCounter %% trace == 0L) { cat(loopCounter, "@t =", ct, ":\t#simulated events =", j-1L-Nout, "\t#currently infective =", length(infectives), if (hase && !constanttiaf) paste("\tlast rejected?", pointRejected), "\n") flush.console() # affects Windows only } # check if we need to allocate larger matrices if (j > allocated) { eval(newAllocation) } if (!pointRejected) # what we have to do in the usual case { # we need the time block of stgrid corresponding to the new covariates, # i.e. search BLOCK such that t in [start; stop) tBLOCK <- blockstarts[findInterval(ct, blockstarts[,2]), 1] # Compute new infection intensity (upper bound) lambdaghe <- lambdagVec(ct, upper=TRUE) lambdagUpper <- sum(lambdaghe) # Determine time of next external change point changePoints <- c(nextblock = if (length(stgridbreaks) > 0L) stgridbreaks[1L], Rtimes) nextChangePoint <- if (length(changePoints) > 0L) { changePoints[which.min(changePoints)] # don't use min() because need names } else Inf } pointRejected <- FALSE ## Simulate waiting time for the subsequent infection if (is.na(lambdagUpper)) { warning("simulation stopped due to undefined intensity") break } if (lambdagUpper < 0) { warning("simulation stopped due to negative overall intensity") break } Delta <- if (lambdagUpper == 0) Inf else tryCatch( rexp(1, rate = lambdagUpper), warning = function (w) { # rate was too small (for R >= 2.7.0, # rexp(1, Inf) returns 0 without warning) assign("hadNumericalProblems0", TRUE, inherits = TRUE) Inf }) # Stop if lambdaStarMax too big meaning Delta == 0 (=> concurrent events) if (Delta == 0) { warning("simulation stopped due to infinite overall intensity") break } # Stop at all costs if end of simulation time [t0; T) has been reached if (isTRUE(min(ct+Delta, nextChangePoint) >= T)) { # ">=" because we don't want an event at "end" break } oldct <- ct if (ct + Delta > nextChangePoint) { ## Simulated time point is beyond the next time of intensity change (removal or endemic covariates) ct <- unname(nextChangePoint) # update cumulative intensity of the ground processes up to time ct, # i.e. add integral of lambdag from oldct to ct Lambdag <- Lambdag + add2Lambdag() # is this change point due to next time block in stgrid? if (names(nextChangePoint) == "nextblock") { stgridbreaks <- stgridbreaks[-1] } else { # i.e. change point due to recovery recoverer <- names(nextChangePoint) # update set of infectives infectives <- setdiff(infectives, recoverer) # remove recovery time from Rtimes .Rtimesidx <- match(recoverer, names(Rtimes)) Rtimes <- Rtimes[-.Rtimesidx] } } else { ## Simulated time point lies within the thinning period ct <- ct + Delta # rejection sampling if non-constant temporal interaction kernel g if (hase && !constanttiaf) { # Calculate actual ground intensity for rejection probability at new ct lambdaghe <- lambdagVec(ct, upper=FALSE) lambdag <- sum(lambdaghe) # rejection sampling step if (lambdag/lambdagUpper < runif(1)) { pointRejected <- TRUE next } } # At this point, we have an actual event! # update cumulative intensity of the ground processes up to time ct, # i.e. add integral of lambdag from oldct to ct Lambdag <- Lambdag + add2Lambdag() # note that lambdaghe[1L] did not change by the above update in case of !constanttiaf, # which is expected by add2Lambdag (which requires the value of lambdag.h(oldct)) # Where did the event come from: imported case or infection? .eventSource <- as.integer(sample(names(lambdaghe), 1L, prob=lambdaghe)) # We now sample type and location if (.eventSource == 0L) { # i.e. endemic source of infection .eventType <- sample(typeNames, 1L, prob=if (nbeta0 > 1L) exp(beta0)) stgrididx <- which(gridBlocks == tBLOCK) .eventTile <- sample(stgrid$tile[stgrididx], 1L, prob=dsexpeta[stgrididx]) # this is a factor ## spsample doesn't guarantee that the sample will consist of ## exactly n points. if no point is sampled (very unlikely ## though), there would be an error ntries <- 1L .nsample <- 1L while( inherits(eventLocationSP <- try( spsample(tiles[as.character(.eventTile),], n=.nsample, type="random"), silent = TRUE), "try-error")) { .nsample <- 10L # this also circumvents a bug in sp 1.0-0 # (missing drop=FALSE in sample.Spatial()) if (ntries >= 1000) { stop("'sp::spsample()' didn't succeed in sampling a ", "point from tile \"", as.character(.eventTile), "\"") } ntries <- ntries + 1L } .eventLocation <- coordinates(eventLocationSP)[1L,,drop=FALSE] } else { # i.e. source is one of the currently infective individuals sourceType <- eventMatrix[.eventSource,"type"] sourceCoords <- eventCoords[.eventSource,,drop=FALSE] sourceIR <- influenceRegions[[.eventSource]] sourceEpss <- eventMatrix[.eventSource,"eps.s"] .upperRange <- min(sourceEpss, maxExtentOfW) .eventType <- sample(typeNames[qmatrix[sourceType,]], 1L) .eventTypeCode <- match(.eventType, typeNames) eventLocationIR <- if (constantsiaf) { as.matrix(coords.ppp(runifpoint(1L, win=sourceIR))) } else { eventInsideIR <- FALSE ntries <- 0L while(!eventInsideIR) { if (ntries >= 1000) { stop("event location sampled by siaf$simulate() was", " rejected 1000 times (not in influence region)") } ntries <- ntries + 1L eventLocationIR <- siaf$simulate(1L, siafpars, .eventTypeCode, .upperRange) eventInsideIR <- inside.owin(eventLocationIR[,1], eventLocationIR[,2], sourceIR) } eventLocationIR } .eventLocation <- sourceCoords + eventLocationIR whichTile <- over(SpatialPoints(.eventLocation, proj4string=tiles@proj4string), tiles) if (is.na(whichTile)) { warning("event generated at (", paste(.eventLocation, collapse=","), ") not in 'tiles'") stop("'tiles' must cover all of 'W'") } .eventTile <- row.names(tiles)[whichTile] .eventTile <- factor(.eventTile, levels=tileLevels) if (is.na(.eventTile)) stop("tile \"", row.names(tiles)[whichTile], "\" of simulated event is no level of stgrid$tile", "\n-> verify row.names(tiles)") } .eventType <- factor(.eventType, levels=typeNames) # sample marks at this time and location .eventMarks <- rmarks(ct, .eventLocation) # gather event information .eventData <- data.frame(time=ct, tile=.eventTile, type=.eventType, .eventMarks, check.rows = FALSE, check.names = FALSE) # determine potential sources of infection (for epidataCS and lambda) .sources <- infectives[eventMatrix[infectives,"type"] %in% which(qmatrix[,.eventType])] if (length(.sources) > 0L) { .sdiffs <- .eventLocation[rep.int(1L,length(.sources)),,drop=FALSE] - eventCoords[.sources,,drop=FALSE] .sources <- .sources[sqrt(.rowSums(.sdiffs^2, length(.sources), 2L)) <= eventMatrix[.sources,"eps.s"]] } # calculate actual intensity at this time, location and type .mmhEvent <- buildmmh(.eventData) .etaEvent <- .mmhEvent %*% beta if (!is.null(.offsetEvent <- attr(.mmhEvent, "offset"))) .etaEvent <- .etaEvent + .offsetEvent if (nbeta0 == 1L) { .etaEvent <- .etaEvent + beta0 } else if (nbeta0 > 1L) { .etaEvent <- .etaEvent + beta0[.eventType] } .lambdah <- exp(.etaEvent) .lambdae <- if (hase && length(.sources) > 0L) { .sdiffs <- .eventLocation[rep.int(1L,length(.sources)),,drop=FALSE] - eventCoords[.sources,,drop=FALSE] .fSources <- siaf$f(.sdiffs, siafpars, eventMatrix[.sources,"type"]) .gSources <- tiaf$g(ct - eventMatrix[.sources,"time"], tiafpars, eventMatrix[.sources,"type"]) sum(eTerms[.sources,"expeta"] * .fSources * .gSources) } else 0 # calculate terms of the epidemic component e_j(t,s) of the new infective tmp <- eTermsCalc(.eventData, .eventLocation) # Update objects eventMatrix[j,] <- c(ct, as.numeric(.eventTile), as.numeric(.eventType), sapply(.eventMarks, as.numeric), .eventSource, .lambdah, .lambdae, Lambdag, tBLOCK) eventCoords[j,] <- .eventLocation eTerms[j,] <- tmp[[1]] bdists[j] <- tmp[[2]] influenceRegions[[j]] <- tmp[[3]][[1]] sources[[j]] <- .sources # Update set of infectives and recovery times infectives <- c(infectives, j) Rtimes <- c(Rtimes, setNames(ct + .eventMarks[["eps.t"]], j)) # Increment next event iterator j <- j + 1L } } if (trace > 0L) cat("---\n") ### update T if simulation ended preterm if (j > maxEvents || (!hash && length(infectives) == 0L)) { T <- ct # clip stgrid to effective time range of simulation stgrid <- subset(stgrid, start <= T) if (j > maxEvents) { cat("Maximum number of events (nEvents=", nEvents, ") reached @t = ", T, "\n", sep="") } else { # epidemic-only model cat("Simulation has ended preterm (no more infectives)", "@t =", T, "with", j-1L-Nout, "simulated events.\n") } } else { # ct >= T or ct+Delta >= T cat("Simulation has ended @t =", T, "with", j-1L-Nout, "simulated events.\n") } ############## ### Return ### ############## ### Throw warning in case of numerical difficulties if (hadNumericalProblems0) { warning("occasionally, the overall infection rate was numerically equal to 0") } ### throw an error if no events have been simulated ## because SpatialPoints[DataFrame]() does not allow the empty set, try: ## SpatialPoints(coords = matrix(numeric(0), 0, 2), bbox=bbox(W)) if (j-1L == Nout) { stop("no events have been simulated") } ### transform eventMatrix back into a data.frame with original factor variables cat("\nPreparing simulated events for \"epidataCS\" ...\n") preEventData <- eventData # drop unused entries (due to large pre-allocation) from objects seqAlongEvents <- seq_len(j-1L) eventData <- as.data.frame(eventMatrix[seqAlongEvents,,drop=FALSE]) # rebuild factor variables for (idx in which(sapply(preEventData, is.factor))) { origlevels <- levels(preEventData[[idx]]) eventData[[idx]] <- factor(eventData[[idx]], levels=seq_along(origlevels), labels=origlevels) } # transform integer columns to integer eventData[c("source","BLOCK")] <- lapply(eventData[c("source","BLOCK")], as.integer) ### Append additional columns for an epidataCS object # add endemic covariates at events stgrididx <- apply(eventData[c("BLOCK","tile")], 1, function (x) { ret <- with(stgrid, which(BLOCK==as.integer(x[1L]) & tile==x[2L])) if (length(ret) == 0L) NA_integer_ else ret #<- events of the prehistory have missing BLOCKs, thus return NA }) stgridIgnoreCols <- match(c("BLOCK", setdiff(obligColsNames_stgrid, "start")), names(stgrid)) eventData <- cbind(eventData, stgrid[stgrididx, -stgridIgnoreCols, drop = FALSE]) rownames(eventData) <- seqAlongEvents # add hidden columns eventData$.obsInfLength <- with(eventData, pmin(T-time, eps.t)) eventData$.sources <- sources[seqAlongEvents] eventData$.bdist <- bdists[seqAlongEvents] eventData$.influenceRegion <- influenceRegions[seqAlongEvents] attr(eventData$.influenceRegion, "nCircle2Poly") <- nCircle2Poly attr(eventData$.influenceRegion, "clipper") <- "polyclip" ### Construct "epidataCS" object events <- SpatialPointsDataFrame( coords = eventCoords[seqAlongEvents,,drop=FALSE], data = eventData, proj4string = W@proj4string, match.ID = FALSE #, bbox = bbox(W)) # the bbox of SpatialPoints is defined as the actual # bbox of the points and is also updated every time # when subsetting the SpatialPoints object # -> useless to specify it as the bbox of W ) if (.onlyEvents) { cat("Done.\n") attr(events, "timeRange") <- c(t0, T) attr(events, "runtime") <- proc.time()[[3]] - ptm return(events) } epi <- list(events=events, stgrid=stgrid, W=W, qmatrix=qmatrix) ### Return object of class "simEpidataCS" cat("Done.\n") # append configuration of the model epi$bbox <- bbox(W) epi$timeRange <- c(t0, T) epi$formula <- list( endemic = if (typeSpecificEndemicIntercept) { update(formula(endemic), ~ (1|type) + .) # re-add to the formula } else formula(endemic), epidemic = formula(epidemic), siaf = siaf, tiaf = tiaf ) if (epilink != "log") # set as attribute only if non-standard link function attr(epi$formula$epidemic, "link") <- epilink # coefficients as a numeric vector to be compatible with twinstim-methods epi$coefficients <- coefs #list(beta0=beta0, beta=beta, gamma=gamma, # siafpars=siafpars, tiafpars=tiafpars) epi$npars <- c(nbeta0=nbeta0, p=p, q=q, nsiafpars=nsiafpars, ntiafpars=ntiafpars) epi$control.siaf <- control.siaf # for R0.simEpidataCS epi$call <- cl epi$runtime <- proc.time()[[3]] - ptm class(epi) <- c("simEpidataCS", "epidataCS") return(epi) } ############################################################################# ### much more efficient simulation for endemic-only models ### where intensities are piecewise constant and independent from the history ############################################################################# ## auxiliary function to calculate the endemic intensity by spatio-temporal cell ## from the model environment of a "twinstim" fit .hGrid <- function (modelenv) { .beta0 <- rep_len(if (modelenv$nbeta0==0L) 0 else modelenv$beta0, modelenv$nTypes) hGrid <- sum(exp(.beta0)) * eval(modelenv$hGridExpr, envir = modelenv) blockstartstop <- modelenv$histIntervals[ match(modelenv$gridBlocks, modelenv$histIntervals$BLOCK), ] data.frame(blockstartstop, tile = modelenv$gridTiles, hGrid = hGrid, hInt = hGrid * modelenv$ds * modelenv$dt, row.names = NULL, check.rows = FALSE, check.names = FALSE) } ## simulate events from the endemic component of a "twinstim" fit ## this simulates pure (s,t,k) data with the only extra column being "tile" simEndemicEvents <- function (object, tiles) { ## check arguments if (is.null(modelenv <- environment(object))) stop("no model environment -- re-fit or update() with 'model=TRUE'") tileLevels <- levels(modelenv$gridTiles) tiles <- check_tiles(tiles, levels = tileLevels, areas.stgrid = modelenv$ds[seq_along(tileLevels)], keep.data = FALSE) ## calculate endemic intensity by spatio-temporal cell lambdaGrid <- .hGrid(modelenv) ## simulate number of events by cell nGrid <- rpois(n = nrow(lambdaGrid), lambda = lambdaGrid[["hInt"]]) nTotal <- sum(nGrid) ## sample time points tps <- mapply( FUN = runif, n = nGrid, min = lambdaGrid[["start"]], max = lambdaGrid[["stop"]], SIMPLIFY = FALSE, USE.NAMES = FALSE ) ## sample types beta0 <- coeflist.default(coef(object), object$npars)[["nbeta0"]] nTypes <- nrow(object$qmatrix) types <- if (nTypes == 1L) { rep.int(1L, nTotal) } else { sample.int(n = nTypes, size = nTotal, replace = TRUE, prob = if (length(beta0) > 1L) exp(beta0)) } ## put event times, tiles, and types in a data frame events <- data.frame( ##lambdaGrid[rep.int(seq_len(nrow(lambdaGrid)), nGrid), c("tile", "BLOCK")], time = unlist(tps, recursive = FALSE, use.names = FALSE), tile = rep.int(lambdaGrid[["tile"]], nGrid), type = factor(types, levels = seq_len(nTypes), labels = rownames(object$qmatrix)), row.names = NULL, check.rows = FALSE, check.names = FALSE ) ## sample coordinates from tiles nByTile <- tapply(X = nGrid, INDEX = lambdaGrid["tile"], FUN = sum) xyByTile <- sapply( X = names(nByTile), FUN = function (tile) { n <- nByTile[tile] if (n > 0L) coordinates(spsample(x = tiles[tile,], n = n, type = "random", iter = 10)) ## else NULL }, simplify = FALSE, USE.NAMES = TRUE ) ## set coordinates of events events <- SpatialPointsDataFrame( coords = do.call("rbind", xyByTile), data = events[order(events$tile),], proj4string = tiles@proj4string, match.ID = FALSE) ## order by time events <- events[order(events$time),] row.names(events) <- seq_along(events) events } #################################################### ### some twinstim-methods for "simEpidataCS" objects #################################################### ### wrapper for R0.twinstim R0.simEpidataCS <- function (object, trimmed = TRUE, ...) { R0.twinstim(object, newevents=object$events@data, trimmed = trimmed, ...) } ### wrapper for intensityplot.twinstim as.twinstim.simEpidataCS <- function (x) { m <- do.call("twinstim", c( formula(x), list(data = quote(x), control.siaf = x$control.siaf, optim.args = list(par=coef(x), fixed=TRUE), model = TRUE, cumCIF = FALSE, verbose = FALSE) )) components2copy <- setdiff(names(m), names(x)) for (comp in components2copy) x[[comp]] <- m[[comp]] environment(x) <- environment(m) class(x) <- c("simEpidataCS", "epidataCS", "twinstim") x } intensityplot.simEpidataCS <- function (x, ...) { if (is.null(environment(x))) { objname <- deparse(substitute(x)) message("Setting up the model environment ...") x <- as.twinstim.simEpidataCS(x) try({ assign(objname, x, envir=parent.frame()) message("Note: added model environment to '", objname, "' for future use.") }, silent=TRUE) } intensityplot.twinstim(x, ...) } ### the residual process Lambda_g(t) is stored with the simulated events residuals.simEpidataCS <- function (object, ...) { setNames(object$events$Lambdag, row.names(object$events))[!is.na(object$events$Lambdag)] } ################################################################################ # A 'simulate' method for objects of class "twinstim". ################################################################################ ### FIXME: actually stgrid's of simulations might have different time ranges ### when nEvents is active -> atm, simplify ignores this .rmarks <- function (data, t0, T) { observedMarks <- subset(marks.epidataCS(data, coords = FALSE), subset = time > t0 & time <= T) if (nrow(observedMarks) == 0L) { message("Note: 'data' does not contain any events during ('t0';'T'],\n", " 'rmarks' thus samples marks from all of 'data$events'") observedMarks <- marks.epidataCS(data, coords = FALSE) } observedMarks <- observedMarks[match("eps.t", names(observedMarks)):ncol(observedMarks)] rm(list = "data", inherits = FALSE) # to save memory (environment is kept) function (t, s, n = 1L) { as.data.frame(lapply(observedMarks, function (x) sample(na.omit(x), size = n, replace = TRUE)), optional = TRUE) } } simulate.twinstim <- function (object, nsim = 1, seed = NULL, data, tiles, newcoef = NULL, rmarks = NULL, t0 = NULL, T = NULL, nEvents = 1e5, control.siaf = object$control.siaf, W = data$W, trace = FALSE, nCircle2Poly = NULL, gmax = NULL, .allocate = 500, simplify = TRUE, ...) { ptm <- proc.time()[[3]] cl <- match.call() ### Determine seed (this part is copied from stats:::simulate.lm with ### Copyright (C) 1995-2012 The R Core Team) if (!exists(".Random.seed", envir = .GlobalEnv, inherits = FALSE)) runif(1) if (is.null(seed)) RNGstate <- get(".Random.seed", envir = .GlobalEnv) else { R.seed <- get(".Random.seed", envir = .GlobalEnv) set.seed(seed) RNGstate <- structure(seed, kind = as.list(RNGkind())) on.exit(assign(".Random.seed", R.seed, envir = .GlobalEnv)) } ### Few checks stopifnot(inherits(object, "twinstim"), inherits(data, "epidataCS")) stopifnot(isScalar(nsim), nsim > 0) nsim <- as.integer(nsim) if (is.null(t0)) t0 <- object$timeRange[1] if (is.null(T)) T <- object$timeRange[2] if (is.null(nCircle2Poly)) nCircle2Poly <- attr(data$events$.influenceRegion, "nCircle2Poly") ### Retrieve arguments for simulation endemic <- formula(object)$endemic epidemic <- formula(object)$epidemic # we don't need any reference to the original formula environment environment(endemic) <- environment(epidemic) <- .GlobalEnv if (is.null(rmarks)) rmarks <- .rmarks(data, t0 = t0, T = T) theta <- coef(object) if (!is.null(newcoef)) { newcoef <- check_twinstim_start(newcoef) newcoef <- newcoef[names(newcoef) %in% names(theta)] theta[names(newcoef)] <- newcoef } thetalist <- coeflist.default(theta, object$npars) ### Run the simulation(s) # establish call simcall <- call("simEpidataCS", endemic=endemic, epidemic=epidemic, siaf=quote(formula(object)$siaf), tiaf=quote(formula(object)$tiaf), qmatrix=quote(object$qmatrix), rmarks=quote(rmarks), events=quote(data$events), stgrid=quote(data$stgrid), tiles=quote(tiles), beta0=thetalist[[1L]], beta=thetalist[[2L]], gamma=thetalist[[3L]], siafpars=thetalist[[4L]], tiafpars=thetalist[[5L]], epilink = .epilink(object), t0=t0, T=T, nEvents=nEvents, control.siaf=control.siaf, W=quote(W), trace=trace, nCircle2Poly=nCircle2Poly, gmax=gmax, .allocate=.allocate, .skipChecks=TRUE, .onlyEvents=FALSE) # First simulation if (nsim > 1L) { cat("\nTime at beginning of simulation:", as.character(Sys.time()), "\n") cat("Simulation 1 /", nsim, "...\n") cat("-------------------------------------------------------------------------------\n") } res <- eval(simcall) if (nsim > 1L) { cat("\n-------------------------------------------------------------------------------\n") cat("Runtime of first simulation:", res$runtime, "seconds\n") cat("Estimated finishing time:", as.character(Sys.time() + (nsim-1) * res$runtime), "\n\n") # set up list of simulations res <- if (simplify) { with(res, list( eventsList=c(structure(events, timeRange = timeRange, runtime = runtime), vector(nsim-1L, mode="list")), stgrid=stgrid, W=W, qmatrix=qmatrix, formula=formula, coefficients=coefficients, npars=npars, call=call )) } else { c(list(res), vector(nsim-1L, mode="list")) } # force garbage collection gc() # run the remaining simulations simcall$.onlyEvents <- simplify for (i in 2:nsim) { cat("Simulation", sprintf(paste0("%",nchar(nsim),"i"), i), "/", nsim, "...") capture.output(resi <- eval(simcall)) .nEvents <- if (simplify) sum(!is.na(resi$source)) else { sum(!is.na(resi$events$source)) } .T <- if (simplify) attr(resi,"timeRange")[2] else resi$timeRange[2] cat("\tsimulated", .nEvents, "events", if (nEvents == .nEvents) "(reached maximum)", "up to time", .T, "\n") if (simplify) res$eventsList[[i]] <- resi else res[[i]] <- resi } cat("\nDone (", as.character(Sys.time()), ").\n", sep="") } attr(res, "call") <- cl attr(res, "seed") <- RNGstate attr(res, "simplified") <- simplify attr(res, "runtime") <- proc.time()[[3]] - ptm class(res) <- if (nsim == 1L) { c("simEpidataCS", "epidataCS") } else c("simEpidataCSlist") res } ### print method for lists of simulated epidemics print.simEpidataCSlist <- function (x, ...) { cat("\nCall:\n") print.default(attr(x, "call")) simplified <- attr(x, "simplified") nsim <- if (simplified) length(x$eventsList) else length(x) cat("\n") cat(if (simplified) "Simplified list" else "List", "of", nsim, "simulated epidemics of class \"simEpidataCS\" (not printed)\n\n") invisible(x) } "[[.simEpidataCSlist" <- function (x, i) { simplified <- attr(x, "simplified") if (simplified) { x <- unclass(x) x$eventsList <- x$eventsList[[i]] names(x)[names(x) == "eventsList"] <- "events" x <- append(x, list(timeRange = attr(x$events, "timeRange")), after=4L) x$runtime <- attr(x$events, "runtime") attr(x$events, "timeRange") <- attr(x$events, "runtime") <- NULL class(x) <- c("simEpidataCS", "epidataCS") x } else NextMethod("[[") } plot.simEpidataCSlist <- function (x, which = NULL, mfrow = n2mfrow(length(which)), main = paste("Simulated epidemic", which), aggregate = c("time", "space"), subset, ...) { simplified <- attr(x, "simplified") nsim <- if (simplified) length(x$eventsList) else length(x) if (is.null(which)) { which <- seq_len(nsim) if (nsim > 4) which <- sample(which, 4L) } opar <- par(mfrow = mfrow); on.exit(par(opar)) main <- rep_len(main, length(which)) for (i in seq_along(which)) { do.call("plot", args=list(x=quote(x[[which[i]]]), aggregate=aggregate, subset=substitute(subset), main = main[i], ...)) } } surveillance/R/hhh4_calibration.R0000644000175100001440000000300212551702034016504 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### calibrationTest() for "hhh4" fits ### ### Copyright (C) 2015 Sebastian Meyer ### $Revision: 1428 $ ### $Date: 2015-07-16 12:14:52 +0200 (Don, 16. Jul 2015) $ ################################################################################ calibrationTest.hhh4 <- function (x, subset = x$control$subset, units = seq_len(x$nUnit), ...) { ## perform the calibration test in the specified subset res <- calibrationTest.default( x = x$stsObj@observed[subset, units, drop = FALSE], mu = x$fitted.values[match(subset, x$control$subset), units, drop = FALSE], size = psi2size.hhh4(x, subset, units), ...) ## change "data.name" to be the name of the supplied model res$data.name <- deparse(substitute(x)) res } calibrationTest.oneStepAhead <- function (x, ...) { ## perform the calibration test res <- calibrationTest.default( x = x$observed, mu = x$pred, size = psi2size.oneStepAhead(x), ...) ## change "data.name" to be the name of the supplied "oneStepAhead" object res$data.name <- deparse(substitute(x)) res } surveillance/R/gd.R0000755000175100001440000000474112332422263013712 0ustar hornikusers###################################################################### # This file contains utility functions for the generalized Dirichlet # distribution described in the article by T.-T. Wong et al. (1998), # Generalized Dirichlet distribution in Bayesian analysis. Applied # Mathematics and Computation, volume 97, pp 165-181. # # This includes: # rgd - sample from the generalized Dirichlet distribution # Egd - expectation of the generalized Dirichlet distribution # # Author: Michael Höhle # Date: LaMo Apr 2014. ###################################################################### ###################################################################### # Sample from the generalized dirichlet distribution, i.e. # (X_1,...,X_{k+1})' ~ GD(alpha,beta) # This is the algorithm described by Wong (1998), p. 174. # # Parameters: # alpha - vector of length k # beta - vector of length k # # Note: The alpha and beta vectors are for the first k categories. # The element in k+1 is automatically given as 1-sum_{i=1}^k X_i. ###################################################################### rgd <- function(n,alpha,beta) { #Check that alpha and beta are of the same length. if (length(alpha) != length(beta)) { stop("alpha and beta not of same length") } if (!all(alpha>0) | !all(beta>0)) { stop("Assumptiom alpha>0 and beta>0 is violated.") } #Prepare result and sample the first step as in Wong (1998), p.174 res <- matrix(NA,nrow=n,ncol=length(alpha)+1) res[,1] <- rbeta(n,alpha[1],beta[1]) sum <- res[,1] for (j in 2:(length(alpha))) { xj <- rbeta(n, alpha[j], beta[j]) #Adjust for previous samples res[,j] <- xj * (1-sum) sum <- sum + res[,j] } #Last cell is fixed. res[,length(alpha)+1] <- 1-sum return(res) } ###################################################################### #Compute analytically the expectation of a GD(alpha,beta) distributed #variable using the expression of Wong (1998). # # Parameters: # alpha - vector of alpha parameters of the distribution # beta - vector of beta parameters of the distribution # # Returns: # Expectation vector of the GD(alpha,betra) distribution ###################################################################### Egd <- function(alpha, beta) { mu <- alpha/(alpha+beta) mean <- NULL for (j in 1:length(mu)) { mean[j] <- mu[j] * prod(1-mu[seq_len(j-1)]) } return(c(mean,prod(1-mu))) } surveillance/R/stsBP.R0000644000175100001440000000415111731650466014355 0ustar hornikusers###################################################################### # Init function for stsBP objects. More or less call-through # to init of sts objects ###################################################################### init.stsBP <- function(.Object, epoch, start=c(2000,1), freq=52, observed, state=0*observed, map=NULL, neighbourhood=NULL, populationFrac=NULL,alarm=NULL,upperbound=NULL, control=NULL,epochAsDate=FALSE,multinomialTS=FALSE,ci=array(NA,dim=c(nrow(observed),ncol(observed),2)),lambda=NULL) { .Object <- init.sts(.Object, epoch, start, freq, observed, state, map, neighbourhood, populationFrac,alarm,upperbound, control,epochAsDate,multinomialTS) #Check that CI matches dim.ci <- c(dim(observed),2) if (all(dim(ci) == dim.ci)) { .Object@ci <- ci } else { stop("Dimension of confidence interval (ci) (",paste(dim.ci,collapse=","),") is wrong.\n") } #Assign lambda slot (bootstrap replicates) .Object@lambda <- lambda return(.Object) } ###################################################################### # Coerce method ###################################################################### setAs("sts", "stsBP", function(from) { stsBP <- new("stsBP", epoch=from@epoch, freq=from@freq, start=from@start, observed=from@observed, state = from@state, alarm=from@alarm, upperbound=from@upperbound, neighbourhood=from@neighbourhood, populationFrac=from@populationFrac, map=from@map, control=from@control, epochAsDate=from@epochAsDate, multinomialTS=from@epochAsDate, ci=array(NA,dim=c(nrow(from@observed),ncol(from@observed),2)), lambda=array(NA,dim=c(nrow(from@observed),ncol(from@observed),2))) return(stsBP) }) ###################################################################### #Methods ###################################################################### setMethod("initialize", "stsBP", init.stsBP) surveillance/R/stK.R0000644000175100001440000001535712532032517014064 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Space-time K-function analysis of "epidataCS" objects ### along the lines of Diggle et al (1995): ### "Second-order analysis of space-time clustering" (Stat Methods Med Res) ### ### Copyright (C) 2015 Sebastian Meyer ### $Revision: 1347 $ ### $Date: 2015-05-29 11:45:51 +0200 (Fre, 29. Mai 2015) $ ################################################################################ ## call K-function methods in package "splancs" stKcall <- function (which = c("stkhat", "stsecal", "stmctest"), object, eps.s, eps.t, ...) { stopifnot(inherits(object, "epidataCS")) ## get the function which <- match.arg(which) FUN <- get(which, mode = "function", envir = getNamespace("splancs")) ## default arguments commonArgs <- list( pts = coordinates(object$events), times = object$events$time, poly = NULL, tlimits = summary(object)$timeRange, s = eps.s, tm = eps.t ) args <- modifyList(commonArgs, list(...)) if (is.null(args$poly)) { # use coordinates of first polygon if (length(object$W) > 1L || length(object$W@polygons[[1]]@Polygons) > 1L) stop("package \"splancs\" does not support multi-'poly'gons") args$poly <- coordinates(object$W@polygons[[1L]]@Polygons[[1L]]) } if (which == "stmctest" && is.null(args[["nsim"]])) { args$nsim <- 199L } ## unfortunately, argument names are not consistent across functions if (which == "stsecal") names(args)[names(args) == "tlimits"] <- "tlim" if (which == "stmctest") names(args)[names(args) == "tm"] <- "tt" ## call the selected splancs function do.call(FUN, args) } ## Monte-Carlo test for space-time interaction stKtest <- function (object, eps.s = NULL, eps.t = NULL, B = 199, cores = 1, seed = NULL, poly = object$W) { stopifnot(inherits(object, "epidataCS"), isScalar(cores), cores > 0, isScalar(B), B > 0) cores <- as.integer(cores) B <- as.integer(B) ## naive default grids if (is.null(eps.s)) eps.s <- seq(0, min(object$events$eps.s, apply(bbox(object$W), 1, diff)/2), length.out = 10) if (is.null(eps.t)) eps.t <- seq(0, min(object$events$eps.t, tail(object$stgrid$stop,1L)/2), length.out = 10) ## extract coordinates of the polygon polycoordslist <- xylist(poly) if (length(polycoordslist) > 1L) { stop("package \"splancs\" does not support multi-'poly'gons") } Wcoords <- as.matrix(as.data.frame(polycoordslist[[1L]])) ## calculate K-function stK <- stKcall("stkhat", object = object, eps.s = eps.s, eps.t = eps.t, poly = Wcoords) ## calculate standard error seD <- stKcall("stsecal", object = object, eps.s = eps.s, eps.t = eps.t, poly = Wcoords) ## perform Monte Carlo permutation test (parallelized) permt <- plapply( X = diff(round(seq(from = 0, to = B, length.out = cores + 1L))), FUN = function (nsim) { stKcall("stmctest", object = object, eps.s = eps.s, eps.t = eps.t, poly = Wcoords, nsim = nsim, quiet = TRUE)[["t"]] }, .parallel = cores, .seed = seed, .verbose = FALSE ) mctest <- list( "t0" = sum(stK$kst - outer(stK$ks, stK$kt)), "t" = unlist(permt, recursive = FALSE, use.names = FALSE) ) PVAL <- mean(c(mctest[["t0"]], mctest[["t"]]) >= mctest[["t0"]]) ## return test results structure( list(method = "Diggle et al (1995) K-function test for space-time clustering", data.name = deparse(substitute(object)), statistic = setNames(mctest$t0, "U"), # sum of residuals parameter = setNames(B, "B"), p.value = PVAL, pts = coordinates(object$events), stK = stK, seD = seD, mctest = mctest), class = c("stKtest", "htest") ) } ## diagnostic plots related to space-time K-function analysis ## inspired by splancs::stdiagn authored by Barry Rowlingson and Peter Diggle plot.stKtest <- function (x, which = c("D", "R", "MC"), args.D = list(), args.D0 = args.D, args.R = list(), args.MC = list(), mfrow = sort(n2mfrow(length(which))), ...) { stkh <- x$stK stse <- x$seD stmc <- x$mctest if (identical(which, "stdiagn")) { splancs::stdiagn(pts = x$pts, stkh = stkh, stse = stse, stmc = stmc) return(invisible()) } which <- match.arg(which, several.ok = TRUE) stopifnot(is.list(args.D), is.list(args.D0), is.list(args.R), is.list(args.MC)) ## K_0(s,t) = K(s) * K(t) K0 <- outer(stkh$ks, stkh$kt) ## D(s,t) = K(s,t) - K_0(s,t) st.D <- stkh$kst - K0 if (!is.null(mfrow)) { omfrow <- par(mfrow = mfrow) on.exit(par(omfrow)) } ## D plots Dzero <- which[which %in% c("D", "D0")] == "D0" whichDzero <- match(Dzero, c(FALSE, TRUE)) omar <- par(mar = if (is.null(args.D[["mar"]])) c(2,2,par("mar")[3L],1) else args.D[["mar"]]) mapply( FUN = function (z, Dzero, args) { defaultArgs <- list( x = stkh$s, y = stkh$t, z = z, main = if (Dzero) "Excess risk" else "D plot", xlab = "Distance", ylab = "Time lag", zlab = "", ticktype = "detailed", shade = 0.5, col = "lavender", theta = -30, phi = 15, expand = 0.5 ) do.call("persp", modifyList(defaultArgs, args)) }, z = list(st.D, st.D/K0)[whichDzero], Dzero = Dzero, args = list(args.D, args.D0)[whichDzero], SIMPLIFY = FALSE, USE.NAMES = FALSE ) par(omar) ## Residual plot if ("R" %in% which) { st.R <- st.D/stse defaultArgs.R <- list( x = K0, y = st.R, panel.first = quote(abline(h = c(-2,0,2), lty = c(2,1,2))), xlab = "K(s)K(t)", ylab = "R", main = "Standardized residuals", ylim = range(0, st.R, finite = TRUE) ) do.call("plot.default", modifyList(defaultArgs.R, args.R)) } ## MC permutation test plot if ("MC" %in% which) { defaultArgs.MC <- list( permstats = stmc$t, xmarks = setNames(stmc$t0, "observed"), main = "MC permutation test" ) do.call("permtestplot", modifyList(defaultArgs.MC, args.MC)) } invisible() } surveillance/R/sts_observation.R0000644000175100001440000000337312476355036016555 0ustar hornikusers################################################################################ #' Function for creating a sts-object with a given observation date ################################################################################ # Parameters ### #' @param sts sts-object we want to set at a previous state. Needs to include a reporting triangle. #' @param dateObservation Date for which we want the state. Needs to be in the reporting triangle dates. #' @param cut Boolean indicating wether to have 0 counts after the observation date or to simply cut the sts-object #' @examples #' data("salmAllOnset") #' salmAllOnsety2013m01d20 <- sts_observation(salmAllOnset, #' dateObservation="2014-01-20",cut=FALSE) #' plot(salmAllOnset) #' lines(salmAllOnsety2013m01d20@@observed,t="h",col="red") #' @export sts_observation <- function(sts,dateObservation,cut=TRUE){ # The sts object we shall return stsSub <- sts # Index of the observation date line1 <- which(epoch(sts)==dateObservation) # Maximal delay D <- dim(stsSub@control$reportingTriangle$n)[2]-1 # Number of dates theEnd <- dim(stsSub@control$reportingTriangle$n)[1] # Nothing observed after the observation date (I am a genius) stsSub@control$reportingTriangle$n[(line1+1):theEnd,] <- NA stsSub@observed[(line1+1):theEnd] <- 0 # Not everything observed before the observation date for (i in 1:D){ stsSub@control$reportingTriangle$n[line1+1-i,(i+1):(D+1)] <- NA stsSub@observed[line1+1-i] <- sum(stsSub@control$reportingTriangle$n[line1+1-i,],na.rm=T) } stsSub@control$reportingTriangle$n <- stsSub@control$reportingTriangle$n[1:line1,] # Return the new sts object if (cut){return(stsSub[1:line1])} else{return(stsSub)} }surveillance/R/twinstim_epitest.R0000644000175100001440000002512312532032517016726 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Monte Carlo Permutation Test for Space-Time Interaction in "twinstim" ### ### Copyright (C) 2015 Sebastian Meyer ### $Revision: 1347 $ ### $Date: 2015-05-29 11:45:51 +0200 (Fre, 29. Mai 2015) $ ################################################################################ epitest <- function (model, data, tiles, method = "time", B = 199, eps.s = NULL, eps.t = NULL, fixed = NULL, verbose = TRUE, compress = FALSE, ...) { ## check input stopifnot(inherits(model, "twinstim"), inherits(data, "epidataCS"), model$converged, isScalar(B), B >= 1) B <- as.integer(B) method <- match.arg(method, choices = c("LRT", "simulate", "time", "space")) # eval(formals(permute.epidataCS)$what) if (model$npars["q"] == 0L) { stop("no epidemic component in 'model'") } if (.epilink(model) == "log") { warning("boundary issues with the epidemic log-link", immediate. = TRUE) } if (isTRUE(fixed)) { fixed <- setdiff(grep("^e\\.", names(coef(model)), value = TRUE), "e.(Intercept)") } else { stopifnot(is.null(fixed) || is.character(fixed)) } t0 <- model$timeRange[1L] # will not permute events before t0 T <- model$timeRange[2L] ## auxiliary function to compute the LRT statistic lrt <- function (m0, m1) { l0 <- m0$loglik l1 <- m1$loglik c(l0 = l0, l1 = l1, D = 2 * (l1 - l0), converged = isTRUE(m1$converged) && isTRUE(m0$converged)) } ## observed test statistic m0 <- update.twinstim(model, data = data, epidemic = ~0, siaf = NULL, tiaf = NULL, control.siaf = NULL, model = method == "simulate", cumCIF = FALSE, cores = 1, verbose = FALSE, optim.args = list(fixed = fixed, control = list(trace = 0))) if (!isTRUE(m0$converged)) { stop("endemic-only model did not converge") } LRT <- lrt(m0 = m0, m1 = model) STATISTIC_D <- structure(LRT["D"], l0 = LRT[["l0"]], l1 = LRT[["l1"]]) STATISTIC_R0 <- c("simpleR0" = simpleR0(model, eps.s = eps.s, eps.t = eps.t)) ## LRT p-value (CAVE: invalid for the default log-link models) DF <- length(coef(model)) - length(coef(m0)) # number of epidemic parameters PVAL_LRT <- pchisq(as.vector(STATISTIC_D), # drop attributes df = DF, lower.tail = FALSE) ## result template res <- list( method = "Likelihood Ratio Test for Space-Time Interaction", data.name = paste0(deparse(substitute(data)), "\ntwinstim: ", deparse(substitute(model))), statistic = STATISTIC_D, parameter = c("df" = DF), p.value = PVAL_LRT ) class(res) <- c("epitest", "htest") if (method == "LRT") { ## we are done return(res) } ## otherwise: determine the null distribution via permutation or simulation res$method <- if (method == "simulate") { paste("Test for Space-Time Interaction (based on", B, "endemic simulations)") } else { "Monte Carlo Permutation Test for Space-Time Interaction" } if (model$npars["q"] > 1L) { warning("epidemic covariate effects might not be identifiable for null data", immediate. = TRUE) } ## define a function which generates data under the null generateNullData <- if (method == "simulate") { if (missing(tiles)) stop("'tiles' is required for 'method = \"simulate\"'") rmarks <- .rmarks(data, t0 = t0, T = T) function() { events <- simEndemicEvents(m0, tiles = tiles) events@data <- cbind(events@data, rmarks(n = length(events))) as.epidataCS(events = events, stgrid = data$stgrid[,-1L], W = data$W, qmatrix = data$qmatrix, nCircle2Poly = attr(data$events$.influenceRegion, "nCircle2Poly"), clipper = "polyclip", verbose = FALSE) } } else { function() permute.epidataCS(data, what = method, keep = time <= t0) } ## interpret 'verbose' level .verbose <- if (is.numeric(verbose)) { if (verbose >= 2) { ## create '.verbose' expression to print test statistics stats2string <- function (lrt, simpleR0) paste0(c(names(lrt)[1:3], "simpleR0"), " = ", sprintf(paste0("%4.", c(0,0,1,2), "f"), c(lrt[1:3], simpleR0)), collapse = " | ") cat("Endemic/Epidemic log-likelihoods, LRT statistic, and simple R0:\n", stats2string(LRT, STATISTIC_R0), "\n", "\nResults from B=", B, if (method == "simulate") " endemic simulations" else paste0(" permutations of ", method), ## will actually not be printed if parallelized using clusters ... ":\n", sep = "") substitute({ cat(STATS2STRING) if (!lrt["converged"]) { msg <- c(m0 = m0$converged, m1 = m1$converged) msg <- msg[msg != "TRUE"] cat(" | WARNING (", paste0(names(msg), collapse = " and "), "): ", paste0(unique(msg), collapse = " and "), sep = "") } cat("\n") }, list(STATS2STRING = body(stats2string))) } else { verbose <- verbose == 1 } } else verbose siafInt <- NULL if (method != "simulate") { ## if siafpars are fixed, determine siafInt for use in all permutations siafpars <- coeflist(model)$siaf if (length(siafpars) > 0L && all(names(siafpars) %in% fixed) && is.null(siafInt <- environment(model)$siafInt)) { if (!identical(FALSE, verbose)) cat("pre-evaluating 'siaf' integrals with fixed parameters ...\n") setup <- update.twinstim(model, data = data, optim.args = NULL, verbose = FALSE) assign("siafpars", siafpars, envir = environment(setup)) siafInt <- with(environment(setup), do.call("..siafInt", .siafInt.args)) } } ## define the function to be replicated B times: ## permute/simulate data, update epidemic model, compute endemic-only model, ## and compute test statistics permfits1 <- function (...) { ## depends on 'data', 'model', 'lrt', 'eps.s', 'eps.t', and 'fixed' .permdata <- generateNullData() .siafInt <- if (!is.null(siafInt)) { siafInt[match(row.names(.permdata$events), row.names(data$events))] } # else NULL ## sink(paste0("/tmp/trace_", Sys.getpid()), append = TRUE) m1 <- update.twinstim(model, data = .permdata, control.siaf = list(siafInt = .siafInt), model = FALSE, cumCIF = FALSE, cores = 1, verbose = FALSE, optim.args = list(fixed = fixed, control = list(trace = is.numeric(verbose) && verbose >= 3))) ## sink() m0 <- update.twinstim(m1, epidemic = ~0, siaf = NULL, tiaf = NULL, control.siaf = NULL, optim.args = list(control = list(trace = 0))) lrt <- lrt(m0, m1) simpleR0 <- simpleR0(m1, eps.s = eps.s, eps.t = eps.t) if (isTRUE(compress)) { # save memory m0[c("fitted", "fittedComponents", "R0")] <- m1[c("fitted", "fittedComponents", "R0")] <- list(NULL) } list(m0 = m0, m1 = m1, stats = c(lrt[1:3], simpleR0 = simpleR0, lrt["converged"])) } ## rock'n'roll (the computationally intensive part) permfits <- plapply(X = integer(B), FUN = permfits1, .verbose = .verbose, ...) ## extract the statistics permstats <- as.data.frame(t(vapply( X = permfits, FUN = "[[", "stats", FUN.VALUE = numeric(5L), USE.NAMES = TRUE ))) permstats$converged <- as.logical(permstats$converged) ## compute permutation-based p-value PVAL_D <- mean(c(STATISTIC_D, permstats[permstats$converged, "D"]) >= STATISTIC_D) PVAL_R0 <- mean(c(STATISTIC_R0, permstats[permstats$converged, "simpleR0"]) >= STATISTIC_R0) ## set results res$statistic <- structure(STATISTIC_R0, "D" = unname(STATISTIC_D)) res$parameter <- c("B" = sum(permstats$converged)) res$p.value <- structure(PVAL_R0, "D-based" = PVAL_D, "LRT" = PVAL_LRT) res$permfits <- permfits res$permstats <- permstats res } coef.epitest <- function (object, which = c("m1", "m0"), ...) { which <- match.arg(which) permcoefs <- vapply(X = object$permfits, FUN = function (x) coef(x[[which]]), FUN.VALUE = coef(object$permfits[[1L]][[which]]), USE.NAMES = TRUE) t(permcoefs) } plot.epitest <- function (x, teststat = c("simpleR0", "D"), ...) { teststat <- match.arg(teststat) defaultArgs <- switch(teststat, "simpleR0" = list( permstats = x$permstats$simpleR0, xmarks = setNames(x$statistic, "observed"), xlab = expression("Simple " * R[0]) ), "D" = list( permstats = x$permstats$D, xmarks = setNames(attr(x$statistic, "D"), "observed"), xlab = expression(D == 2 %.% log(L[full]/L[endemic])) ) ) args <- modifyList(defaultArgs, list(...)) if (is.null(args[["permstats"]])) stop("nothing to plot (no 'permstats' available)") do.call("permtestplot", args) } ## auxiliary function also used by plot.knox(), permutationTest(), ... permtestplot <- function (permstats, xmarks = NULL, xlab = "test statistic", ...) { defaultArgs <- list( data = permstats, xlab = xlab, col = "lavender", main = "Monte Carlo permutation test for space-time interaction", xlim = extendrange(c(permstats, xmarks)) ) do.call("truehist", modifyList(defaultArgs, list(...), keep.null = TRUE)) if (!is.null(xmarks)) { abline(v = xmarks, lwd = 2) axis(3, at = xmarks, labels = names(xmarks), # if NULL the value is used tick = FALSE, line = -1, font = 2) } invisible(NULL) } surveillance/R/algo_farrington.R0000644000175100001440000005160012177702702016472 0ustar hornikusers### R code from vignette source 'Rnw/algo_farrington.Rnw' ### Encoding: ISO8859-1 ################################################### ### code chunk number 1: algo_farrington.Rnw:25-35 ################################################### anscombe.residuals <- function(m,phi) { y <- m$y mu <- fitted.values(m) #Compute raw Anscombe residuals a <- 3/2*(y^(2/3) * mu^(-1/6) - mu^(1/2)) #Compute standardized residuals a <- a/sqrt(phi * (1-hatvalues(m))) return(a) } ################################################################################ # WEIGHTS FUNCTION ################################################################################ algo.farrington.assign.weights <- function(s,weightsThreshold=1) { #s_i^(-2) for s_iweightsThreshold) )) omega <- numeric(length(s)) omega[s>weightsThreshold] <- gamma*(s[s>weightsThreshold]^(-2)) omega[s<=weightsThreshold] <- gamma return(omega) } ################################################### ### code chunk number 3: algo_farrington.Rnw:136-305 ################################################### algo.farrington.fitGLM <- function(response,wtime,timeTrend=TRUE,reweight=TRUE,...) { #Model formula depends on whether to include a time trend or not. theModel <- as.formula(ifelse(timeTrend, "response~1+wtime","response~1")) #Fit it -- this is slow. An improvement would be to use glm.fit here. model <- glm(theModel, family = quasipoisson(link="log")) #Check convergence - if no convergence we return empty handed. if (!model$converged) { #Try without time dependence if (timeTrend) { cat("Warning: No convergence with timeTrend -- trying without.\n") #Set model to one without time trend theModel <- as.formula("response~1") model <- glm(response ~ 1, family = quasipoisson(link="log")) } if (!model$converged) { cat("Warning: No convergence in this case.\n") print(cbind(response,wtime)) return(NULL) } } #Overdispersion parameter phi phi <- max(summary(model)$dispersion,1) #In case reweighting using Anscome residuals is requested if (reweight) { s <- anscombe.residuals(model,phi) omega <- algo.farrington.assign.weights(s) model <- glm(theModel,family=quasipoisson(link="log"),weights=omega) #Here, the overdispersion often becomes small, so we use the max #to ensure we don't operate with quantities less than 1. phi <- max(summary(model)$dispersion,1) } # end of refit. #Add wtime, response and phi to the model model$phi <- phi model$wtime <- wtime model$response <- response #Done return(model) } ###################################################################### # The algo.farrington.fitGLM function in a version using glm.fit # which is faster than the call using "glm. # This saves lots of overhead and increases speed. # # Author: Mikko Virtanen (@thl.fi) with minor modifications by Michael Hoehle # Date: 9 June 2010 # # Note: Not all glm results may work on the output. But for the # necessary ones for the algo.farrington procedure work. ###################################################################### algo.farrington.fitGLM.fast <- function(response,wtime,timeTrend=TRUE,reweight=TRUE, ...) { #Create design matrix and formula needed for the terms object #Results depends on whether to include a time trend or not. if (timeTrend) { design<-cbind(intercept=1,wtime=wtime) Formula<-response~wtime } else { design<-matrix(1,nrow=length(wtime),dimnames=list(NULL,c("intercept"))) Formula<-response~1 } #Fit it using glm.fit which is faster than calling "glm" model <- glm.fit(design,response, family = quasipoisson(link = "log")) #Check convergence - if no convergence we return empty handed. if (!model$converged) { #Try without time dependence if (timeTrend) { cat("Warning: No convergence with timeTrend -- trying without.\n") #Drop time from design matrix design <- design[,1,drop=FALSE] #Refit model <- glm.fit(design,response, family = quasipoisson(link = "log")) Formula<-response~1 } #No convergence and no time trend. That's not good. } #Fix class of output to glm/lm object in order for anscombe.residuals to work #Note though: not all glm methods may work for the result class(model) <- c("glm","lm") #Overdispersion parameter phi phi <- max(summary.glm(model)$dispersion,1) #In case reweighting using Anscome residuals is requested if (reweight) { s <- anscombe.residuals(model,phi) omega <- algo.farrington.assign.weights(s) model <- glm.fit(design,response, family = quasipoisson(link = "log"), weights = omega) #Here, the overdispersion often becomes small, so we use the max #to ensure we don't operate with quantities less than 1. phi <- max(summary.glm(model)$dispersion,1) } # end of refit. model$phi <- phi model$wtime <- wtime model$response <- response model$terms <- terms(Formula) # cheating a bit, all methods for glm may not work class(model)<-c("algo.farrington.glm","glm","lm") # 23/10/2012 (SM): # added "lm" class to avoid warnings # from predict.lm about fake object #Done return(model) } ###################################################################### # Experimental function to include a population offset in the # farrington procedure based on algo.farrington.fitGLM # Alternative: include populationOffset argument in the two other # fit functions, but I suspect use of this is not so common # # Parameters: # takes an additional "population" parameter ###################################################################### algo.farrington.fitGLM.populationOffset <- function(response,wtime,population,timeTrend=TRUE,reweight=TRUE,...) { #Model formula depends on whether to include a time trend or not. theModel <- as.formula(ifelse(timeTrend, "response~offset(log(population)) + 1 + wtime","response~offset(log(population)) + 1")) #Fit it -- this is slow. An improvement would be to use glm.fit here. model <- glm(theModel, family = quasipoisson(link="log")) #Check convergence - if no convergence we return empty handed. if (!model$converged) { #Try without time dependence if (timeTrend) { model <- glm(response ~ 1, family = quasipoisson(link="log")) cat("Warning: No convergence with timeTrend -- trying without.\n") } if (!model$converged) { cat("Warning: No convergence in this case.\n") print(cbind(response,wtime)) return(NULL) } } #Overdispersion parameter phi phi <- max(summary(model)$dispersion,1) #In case reweighting using Anscome residuals is requested if (reweight) { s <- anscombe.residuals(model,phi) omega <- algo.farrington.assign.weights(s) model <- glm(theModel,family=quasipoisson(link="log"),weights=omega) #Here, the overdispersion often becomes small, so we use the max #to ensure we don't operate with quantities less than 1. phi <- max(summary(model)$dispersion,1) } # end of refit. #Add wtime, response and phi to the model model$phi <- phi model$wtime <- wtime model$response <- response model$population <- population #Done return(model) } ################################################### ### code chunk number 4: algo_farrington.Rnw:344-370 ################################################### algo.farrington.threshold <- function(pred,phi,alpha=0.01,skewness.transform="none",y) { #Fetch mu0 and var(mu0) from the prediction object mu0 <- pred$fit tau <- phi + (pred$se.fit^2)/mu0 #Standard deviation of prediction, i.e. sqrt(var(h(Y_0)-h(\mu_0))) switch(skewness.transform, "none" = { se <- sqrt(mu0*tau); exponent <- 1}, "1/2" = { se <- sqrt(1/4*tau); exponent <- 1/2}, "2/3" = { se <- sqrt(4/9*mu0^(1/3)*tau); exponent <- 2/3}, { stop("No proper exponent in algo.farrington.threshold.")}) #Note that lu can contain NA's if e.g. (-1.47)^(3/2) lu <- sort((mu0^exponent + c(-1,1)*qnorm(1-alpha/2)*se)^(1/exponent),na.last=FALSE) #Ensure that lower bound is non-negative lu[1] <- max(0,lu[1],na.rm=TRUE) #Compute quantiles of the predictive distribution based on the #normal approximation on the transformed scale q <- pnorm( y^(1/exponent) , mean=mu0^exponent, sd=se) m <- qnorm(0.5, mean=mu0^exponent, sd=se)^(1/exponent) #Return lower and upper bounds return(c(lu,q=q,m=m)) } ################################################### ### code chunk number 5: algo_farrington.Rnw:412-451 ################################################### ###################################################################### # Compute indices of reference value using Date class # # Params: # t0 - Date object describing the time point # b - Number of years to go back in time # w - Half width of window to include reference values for # epochStr - "1 month", "1 week" or "1 day" # epochs - Vector containing the epoch value of the sts/disProg object # # Details: # Using the Date class the reference values are formed as follows: # Starting from d0 go i, i in 1,...,b years back in time. # # Returns: # a vector of indices in epochs which match ###################################################################### refvalIdxByDate <- function(t0, b, w, epochStr, epochs) { refDays <- NULL refPoints <- seq( t0, length=b+1, by="-1 year")[-1] #Loop over all b-lagged points and append appropriate w-lagged points for (j in 1:length(refPoints)) { refPointWindow <- c(rev(seq(refPoints[j], length=w+1, by=paste("-",epochStr,sep=""))), seq(refPoints[j], length=w+1, by=epochStr)[-1]) refDays <- append(refDays,refPointWindow) } if (epochStr == "1 week") { #What weekday is t0 (0=Sunday, 1=Monday, ...) epochWeekDay <- as.numeric(format(t0,"%w")) #How many days to go forward to obtain the next "epochWeekDay", i.e. (d0 - d) mod 7 dx.forward <- (epochWeekDay - as.numeric(format(refDays,"%w"))) %% 7 #How many days to go backward to obtain the next "epochWeekDay", i.e. (d - d0) mod 7 dx.backward <- (as.numeric(format(refDays,"%w")) - epochWeekDay) %% 7 #What is shorter - go forward or go backward? #By convention: always go to the closest weekday as t0 refDays <- refDays + ifelse(dx.forward < dx.backward, dx.forward, -dx.backward) } if (epochStr == "1 month") { #What day of the month is t0 (it is assumed that all epochs have the same value here) epochDay <- as.numeric(format(t0,"%d")) #By convention: go back in time to closest 1st of month refDays <- refDays - (as.numeric(format(refDays, "%d")) - epochDay) } #Find the index of these reference values wtime <- match(as.numeric(refDays), epochs) return(wtime) } ################################################### ### code chunk number 6: algo_farrington.Rnw:571-769 ################################################### algo.farrington <- function(disProgObj, control=list(range=NULL, b=3, w=3, reweight=TRUE, verbose=FALSE,alpha=0.01,trend=TRUE,limit54=c(5,4),powertrans="2/3",fitFun=c("algo.farrington.fitGLM.fast","algo.farrington.fitGLM","algo.farrington.fitGLM.populationOffset"))) { #Fetch observed observed <- disProgObj$observed freq <- disProgObj$freq epochStr <- switch( as.character(freq), "12" = "1 month","52" = "1 week","365" = "1 day") #Fetch population (if it exists) if (!is.null(disProgObj$populationFrac)) { population <- disProgObj$populationFrac } else { population <- rep(1,length(observed)) } ###################################################################### # Fix missing control options ###################################################################### if (is.null(control$range)) { control$range <- (freq*control$b - control$w):length(observed) } if (is.null(control$b)) {control$b=5} if (is.null(control$w)) {control$w=3} if (is.null(control$reweight)) {control$reweight=TRUE} if (is.null(control$verbose)) {control$verbose=FALSE} if (is.null(control$alpha)) {control$alpha=0.05} if (is.null(control$trend)) {control$trend=TRUE} if (is.null(control$plot)) {control$plot=FALSE} if (is.null(control$limit54)) {control$limit54=c(5,4)} if (is.null(control$powertrans)){control$powertrans="2/3"} if (is.null(control$fitFun)) { control$fitFun="algo.farrington.fitGLM.fast" } else { control$fitFun <- match.arg(control$fitFun, c("algo.farrington.fitGLM.fast","algo.farrington.fitGLM","algo.farrington.fitGLM.populationOffset")) } #Use special Date class mechanism to find reference months/weeks/days if (is.null(disProgObj[["epochAsDate",exact=TRUE]])) { epochAsDate <- FALSE } else { epochAsDate <- disProgObj[["epochAsDate",exact=TRUE]] } #check options if (!((control$limit54[1] >= 0) & (control$limit54[2] > 0))) { stop("The limit54 arguments are out of bounds: cases >= 0 and period > 0.") } #Check control$range is within bounds. if (any((control$range < 1) | (control$range > length(disProgObj$observed)))) { stop("Range values are out of bounds (has to be within 1..",length(disProgObj$observed)," for the present data).") } # initialize the necessary vectors alarm <- matrix(data = 0, nrow = length(control$range), ncol = 1) trend <- matrix(data = 0, nrow = length(control$range), ncol = 1) upperbound <- matrix(data = 0, nrow = length(control$range), ncol = 1) # predictive distribution pd <- matrix(data = 0, nrow = length(control$range), ncol = 2) # Define objects n <- control$b*(2*control$w+1) # 2: Fit of the initial model and first estimation of mean and dispersion # parameter for (k in control$range) { # transform the observed vector in the way # that the timepoint to be evaluated is at last position #shortObserved <- observed[1:(maxRange - k + 1)] if (control$verbose) { cat("k=",k,"\n")} #Find index of all epochs, which are to be used as reference values #i.e. with index k-w,..,k+w #in the years (current year)-1,...,(current year)-b if (!epochAsDate) { wtimeAll <- NULL for (i in control$b:1){ wtimeAll <- append(wtimeAll,seq(k-freq*i-control$w,k-freq*i+control$w,by=1)) } #Select them as reference values - but only those who exist wtime <- wtimeAll[wtimeAll>0] if (length(wtimeAll) != length(wtime)) { warning("@ range= ",k,": With current b and w then ",length(wtimeAll) - length(wtime),"/",length(wtimeAll), " reference values did not exist (index<1).") } } else { #Alternative approach using Dates t0 <- as.Date(disProgObj$week[k], origin="1970-01-01") wtimeAll <- refvalIdxByDate( t0=t0, b=control$b, w=control$w, epochStr=epochStr, epochs=disProgObj$week) #Select them as reference values (but only those not being NA!) wtime <- wtimeAll[!is.na(wtimeAll)] #Throw warning if necessary if (length(wtimeAll) != length(wtime)) { warning("@ range= ",k,": With current b and w then ",length(wtimeAll) - length(wtime),"/",length(wtimeAll), " reference values did not exist (index<1).") } } #Extract values from indices response <- observed[wtime] pop <- population[wtime] if (control$verbose) { print(response)} ###################################################################### #Fit the model with overdispersion -- the initial fit ###################################################################### #New feature: fitFun can now be the fast function for fitting the GLM model <- do.call(control$fitFun, args=list(response=response,wtime=wtime,population=pop,timeTrend=control$trend,reweight=control$reweight)) #Stupid check to pass on NULL values from the algo.farrington.fitGLM proc. if (is.null(model)) return(model) ###################################################################### #Time trend # #Check whether to include time trend, to do this we need to check whether #1) wtime is signifcant at the 95lvl #2) the predicted value is not larger than any observed value #3) the historical data span at least 3 years. doTrend <- control$trend #Bug discovered by Julia Kammerer and Sabrina Heckl: Only investigate trend if it actually was part of the GLM #if (control$trend) { if ("wtime" %in% names(coef(model))){ #is the p-value for the trend significant (0.05) level p <- summary.glm(model)$coefficients["wtime",4] significant <- (p < 0.05) #prediction for time k mu0Hat <- predict.glm(model,data.frame(wtime=c(k),population=population[k]),type="response") #have to use at least three years of data to allow for a trend atLeastThreeYears <- (control$b>=3) #no horrible predictions noExtrapolation <- mu0Hat <= max(response) #All 3 criteria have to be met in order to include the trend. Otherwise #it is removed. Only necessary to check this if a trend is requested. if (!(atLeastThreeYears && significant && noExtrapolation)) { doTrend <- FALSE model <- do.call(control$fitFun, args=list(response=response,wtime=wtime,population=pop,timeTrend=FALSE,reweight=control$reweight)) } } else { doTrend <- FALSE } #done with time trend ###################################################################### ###################################################################### # Calculate prediction & confidence interval # ###################################################################### #Predict value - note that the se is the mean CI #and not the prediction error of a single observation pred <- predict.glm(model,data.frame(wtime=c(k),population=population[k]),dispersion=model$phi, type="response",se.fit=TRUE) #Calculate lower and upper threshold lu <- algo.farrington.threshold(pred,model$phi,skewness.transform=control$powertrans,alpha=control$alpha, observed[k]) ###################################################################### # If requested show a plot of the fit. ###################################################################### if (control$plot) { #Compute all predictions data <- data.frame(wtime=seq(min(wtime),k,length=1000)) preds <- predict(model,data,type="response",dispersion=model$phi) #Show a plot of the model fit. plot(c(wtime, k), c(response,observed[k]),ylim=range(c(observed[data$wtime],lu)),,xlab="time",ylab="No. infected",main=paste("Prediction at time t=",k," with b=",control$b,",w=",control$w,sep=""),pch=c(rep(1,length(wtime)),16)) #Add the prediction lines(data$wtime,preds,col=1,pch=2) #Add the thresholds to the plot lines(rep(k,2),lu[1:2],col=3,lty=2) } ###################################################################### #Postprocessing steps ###################################################################### #Compute exceedance score unless less than 5 reports during last 4 weeks. #Changed in version 0.9-7 - current week is included now enoughCases <- (sum(observed[(k-control$limit54[2]+1):k])>=control$limit54[1]) #18 May 2006: Bug/unexpected feature found by Y. Le Strat. #the okHistory variable meant to protect against zero count problems, #but instead it resulted in exceedance score == 0 for low counts. #Now removed to be concordant with the Farrington 1996 paper. X <- ifelse(enoughCases,(observed[k] - pred$fit) / (lu[2] - pred$fit),0) #Do we have an alarm -- i.e. is observation beyond CI?? #upperbound only relevant if we can have an alarm (enoughCases) trend[k-min(control$range)+1] <- doTrend alarm[k-min(control$range)+1] <- (X>1) upperbound[k-min(control$range)+1] <- ifelse(enoughCases,lu[2],0) #Compute bounds of the predictive pd[k-min(control$range)+1,] <- lu[c(3,4)] }#done looping over all time points #Add name and data name to control object. control$name <- paste("farrington(",control$w,",",0,",",control$b,")",sep="") control$data <- paste(deparse(substitute(disProgObj))) #Add information about predictive distribution control$pd <- pd # return alarm and upperbound vectors result <- list(alarm = alarm, upperbound = upperbound, trend=trend, disProgObj=disProgObj, control=control) class(result) <- "survRes" #Done return(result) } surveillance/R/epidata.R0000644000175100001440000010301112605032474014716 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Data structure "epidata" representing the SIR event history of a fixed ### geo-referenced population (e.g., farms, households) for twinSIR() analysis ### ### Copyright (C) 2008-2010, 2012, 2014-2015 Sebastian Meyer ### $Revision: 1489 $ ### $Date: 2015-10-06 22:55:24 +0200 (Die, 06. Okt 2015) $ ################################################################################ ## CAVE: ## - we assume fixed coordinates (this is important since time-varying ## coordinates would result in more sophisticated and time consuming ## calculations of distance matrices) ! ## - in the first block (start = t0) all id's must be present (for coordinates) ## - those id's with atRiskY(t0) = 0 are taken as initially infectious ## - SIS epidemics are possible, but must be given as SIRS with pseudo R-events, ## i.e. individuals will be removed and become susceptible directly afterwards ################################################################################ ## Convert a simple data.frame with one row per individual and with columns for ## the times of becoming exposed/infectious/removed ## to the long "epidata" event history start/stop format. ## tE.col and tR.col can be missing corresponding to SIR, SEI, or SI data. ## NA's in time variables mean that the respective event has not yet occurred. ## Time-varying covariates are not supported by this converter. ################################################################################ as.epidata.data.frame <- function (data, t0, tE.col, tI.col, tR.col, id.col, coords.cols, f = list(), w = list(), D = dist, keep.cols = TRUE, ...) { if (missing(t0)) { return(NextMethod("as.epidata")) # as.epidata.default } ## drop individuals that have already been removed prior to t0 ## since they would otherwise be considered as initially infective ## (atRiskY = 0 in first time block) and never be removed if (!missing(tR.col)) { alreadyRemoved <- !is.na(data[[tR.col]]) & data[[tR.col]] <= t0 if (any(alreadyRemoved)) { data <- data[!alreadyRemoved,] message("Note: dropped rows with tR <= t0 (", paste0(which(alreadyRemoved), collapse = ", "), ")") } } ## parse id column id <- factor(data[[id.col]]) # removes unused levels stopifnot(!anyDuplicated(id), !is.na(id)) N <- nlevels(id) # = nrow(data) ## make time relative to t0 subtract_t0 <- function (x) as.numeric(x - t0) tI <- subtract_t0(data[[tI.col]]) tE <- if (missing(tE.col)) tI else subtract_t0(data[[tE.col]]) tR <- if (missing(tR.col)) rep.int(NA_real_, N) else subtract_t0(data[[tR.col]]) ## check E-I-R order if (any((is.na(tE) & !(is.na(tI) & is.na(tR))) | (is.na(tI) & !is.na(tR)))) { stop("events cannot be skipped (NA in E/I => NA in I/R)") } if (any(.wrongsequence <- (tE > tI | tI >= tR) %in% TRUE)) { # TRUE | NA = TRUE stop("E-I-R events are in wrong order for the following id's: ", paste0(id[.wrongsequence], collapse = ", ")) } ## vector of stop times stopTimes <- c(tE, tI, tR) stopTimes <- stopTimes[!is.na(stopTimes) & stopTimes > 0] stopTimes <- sort.int(unique.default(stopTimes), decreasing = FALSE) nBlocks <- length(stopTimes) if (nBlocks == 0L) { stop("nothing happens after 't0'") } ## initialize event history evHist <- data.frame( id = rep.int(id, nBlocks), start = rep.int(c(0,stopTimes[-nBlocks]), rep.int(N, nBlocks)), stop = rep.int(stopTimes, rep.int(N, nBlocks)), atRiskY = NA, event = 0, Revent = 0, # adjusted in the loop below row.names = NULL, check.rows = FALSE, check.names = FALSE) ## indexes of the last rows of the time blocks blockbase <- c(0, seq_len(nBlocks) * N) ## which individuals are at risk in the first (next) block Y <- is.na(tE) | tE > 0 ## Loop over the blocks/stop times to adjust atRiskY, event and Revent for (i in seq_len(nBlocks)) { ct <- stopTimes[i] ## set individual at-risk indicators for the current time block evHist$atRiskY[blockbase[i] + seq_len(N)] <- Y ## individuals who become exposed at the current stop time ## will no longer be at risk in the next block Y[which(tE == ct)] <- FALSE ## process events at this stop time evHist$event[blockbase[i] + which(tI == ct)] <- 1 evHist$Revent[blockbase[i] + which(tR == ct)] <- 1 } ## add additional time-constant covariates extraVarNames <- coords.cols # may be NULL if (isTRUE(keep.cols)) { extraVarNames <- c(extraVarNames, setdiff(names(data), id.col)) } else if (length(keep.cols) > 0L && !identical(FALSE, keep.cols)) { extraVarNames <- c(extraVarNames, names(data[keep.cols])) } extraVarNames <- unique.default(extraVarNames) if (length(extraVarNames) > 0L) { evHist <- data.frame( evHist, data[rep.int(seq_len(N), nBlocks), extraVarNames, drop=FALSE], row.names = NULL, check.names = TRUE, stringsAsFactors = TRUE) } ## Now we can pass the generated event history to the default method ## for the usual consistency checks and the pre-calculation of f covariates as.epidata.default( data = evHist, id.col = "id", start.col = "start", stop.col = "stop", atRiskY.col = "atRiskY", event.col = "event", Revent.col = "Revent", coords.cols = coords.cols, f = f, w = w, D = D) } ################################################################################ # DEFAULT CONVERTER, which requires a start/stop event history data.frame # It performs consistency checks, and pre-calculates the distance-based # epidemic covariates from f. ################################################################################ as.epidata.default <- function(data, id.col, start.col, stop.col, atRiskY.col, event.col, Revent.col, coords.cols, f = list(), w = list(), D = dist, ...) { cl <- match.call() # If necessary, convert 'data' into a data.frame (also converting # column names to syntactically correct names for use in formulae) data <- as.data.frame(data, stringsAsFactors = FALSE) # Use column numbers as indices and check them colargs <- c("id.col", "start.col", "stop.col", "atRiskY.col", "event.col", "Revent.col", "coords.cols") colidxs <- structure(as.list(numeric(length(colargs))), names = colargs) for (colarg in colargs) { colidx <- get(colarg, inherits = FALSE) if (colarg != "coords.cols" && length(colidx) != 1L) { stop("the column specifier '", colarg, "' must be of length 1") } if (is.character(colidx)) { colidx <- match(colidx, colnames(data)) if (any(is.na(colidx))) { stop("'", colarg, " = ", deparse(cl[[colarg]]), "': ", "column does not exist in 'data'") } } else if (is.numeric(colidx) && any(colidx<1L | colidx>ncol(data))) { stop("'", colarg, " = ", deparse(cl[[colarg]]), "': ", "column index must be in [1; ", ncol(data), "=ncol(data)]") } colidxs[[colarg]] <- colidx } # Rename main columns to default column names colidxsVec <- unlist(colidxs) colnams <- c("id", "start", "stop", "atRiskY", "event", "Revent") colnames(data)[colidxsVec[1:6]] <- colnams usedReservedName <- any(colnams %in% colnames(data)[-colidxsVec[1:6]]) # REORDER COLUMNS, so that main columns come first (also for make.unique) data <- data[c(colidxsVec, setdiff(seq_len(NCOL(data)), colidxsVec))] # Make columns names unique (necessary if other column with name in colnams) if (usedReservedName) { colnames(data) <- make.unique(colnames(data)) message("Some other columns had reserved names and have been renamed") } # Convert id into a factor (also removing unused levels if it was a factor) data[["id"]] <- factor(data[["id"]]) # Check atRiskY, event and Revent for values other than 0 and 1 for (var in c("atRiskY", "event", "Revent")) { data[[var]] <- as.numeric(data[[var]]) if (any(! data[[var]] %in% c(0,1))) stop("'", var, "' column may only assume values 0 and 1") } # Check consistency of atRiskY and event (event only if at-risk) noRiskButEvent <- data[["atRiskY"]] == 0 & data[["event"]] == 1 if (noRiskButEventRow <- match(TRUE, noRiskButEvent, nomatch = 0)) { stop("inconsistent atRiskY/event indicators in row ", noRiskButEventRow, ": event only if at risk") } # Check event (infection) times for ties eventTimes <- data[data[["event"]] == 1, "stop"] ReventTimes <- data[data[["Revent"]] == 1, "stop"] duplicatedEventTime <- duplicated(c(eventTimes, ReventTimes)) if (duplicatedEventTimeIdx <- match(TRUE, duplicatedEventTime, nomatch=0)) { stop("non-unique event times: concurrent event/Revent at time ", c(eventTimes, ReventTimes)[duplicatedEventTimeIdx]) } # Check start/stop consistency and add block id histIntervals <- unique(data[c("start", "stop")]) histIntervals <- histIntervals[order(histIntervals[,1L]),] nBlocks <- nrow(histIntervals) if (any(histIntervals[,2L] <= histIntervals[,1L])) { stop("stop times must be greater than start times") } startStopCheck <- histIntervals[-1L,1L] != histIntervals[-nBlocks,2L] if (startStopCheckIdx <- match(TRUE, startStopCheck, nomatch = 0)) { stop("inconsistent start/stop times: time intervals not consecutive ", "at stop time ", histIntervals[startStopCheckIdx,2L]) } if ("BLOCK" %in% colnames(data)) { warning("column name 'BLOCK' is reserved, ", "existing column has been replaced") } data[["BLOCK"]] <- match(data[["start"]], histIntervals[,1L]) # SORT by block/id and create indexes for block borders data <- data[order(data[["BLOCK"]], data[["id"]]),] beginBlock <- match(seq_len(nBlocks), data[["BLOCK"]]) endBlock <- c(beginBlock[-1L]-1L, nrow(data)) # make block column the first column BLOCK.col <- match("BLOCK", colnames(data)) data <- data[c(BLOCK.col, setdiff(seq_along(data), BLOCK.col))] coords.cols <- 1L + 6L + seq_along(colidxs[["coords.cols"]]) # Check consistency of atRiskY and event (not at-risk after event) .checkFunction <- function(eventblock, eventid) { if (eventblock == nBlocks) return(invisible()) rowsOfNextBlock <- beginBlock[eventblock+1L]:endBlock[eventblock+1L] nextBlockData <- data[rowsOfNextBlock, c("id", "atRiskY")] idIdx <- which(nextBlockData[["id"]] == eventid) if (length(idIdx) == 1L && nextBlockData[idIdx, "atRiskY"] == 1) { stop("inconsistent atRiskY/event indicators for id '", eventid, "': should not be at risk immediately after event") } } eventTable <- data[data[["event"]] == 1,] for(k in seq_len(nrow(eventTable))) { .checkFunction(eventTable[k,"BLOCK"], eventTable[k,"id"]) } # Set attributes attr(data, "eventTimes") <- sort(eventTimes) attr(data, "timeRange") <- c(histIntervals[1L,1L],histIntervals[nBlocks,2L]) attr(data, "coords.cols") <- coords.cols # <- must include this info because externally of this function # we don't know how many coords.cols (dimensions) we have attr(data, "f") <- list() # initialize attr(data, "w") <- list() # initialize class(data) <- c("epidata", "data.frame") # Compute epidemic variables update.epidata(data, f = f, w = w, D = D) } update.epidata <- function (object, f = list(), w = list(), D = dist, ...) { oldclass <- class(object) class(object) <- "data.frame" # avoid use of [.epidata ## block indexes and first block beginBlock <- which(!duplicated(object[["BLOCK"]], nmax = object[["BLOCK"]][nrow(object)])) endBlock <- c(beginBlock[-1L]-1L, nrow(object)) firstDataBlock <- object[seq_len(endBlock[1L]), ] ## check f and calculate distance matrix if (length(f) > 0L) { if (!is.list(f) || is.null(names(f)) || any(!sapply(f, is.function))) { stop("'f' must be a named list of functions") } lapply(X = f, FUN = function (B) { if (!isTRUE(all.equal(c(5L,2L), dim(B(matrix(0, 5, 2)))))) stop("'f'unctions must retain the dimensions of their input") }) if (any(names(f) %in% names(object))) { warning("'f' components replace existing columns of the same name") } ## reset / initialize columns for distance-based epidemic weights object[names(f)] <- 0 ## keep functions as attribute attr(object, "f")[names(f)] <- f ## check / compute distance matrix distmat <- if (is.function(D)) { if (length(coords.cols <- attr(object, "coords.cols")) == 0L) { stop("need coordinates to calculate the distance matrix") } coords <- as.matrix(firstDataBlock[coords.cols], rownames.force = FALSE) rownames(coords) <- as.character(firstDataBlock[["id"]]) as.matrix(D(coords)) } else if (is.matrix(D)) { stopifnot(is.numeric(D)) if (any(!firstDataBlock[["id"]] %in% rownames(D), !firstDataBlock[["id"]] %in% colnames(D))) { stop("'dimnames(D)' must contain the individuals' IDs") } D } else { stop("'D' must be a function or a matrix") } } ## check covariate-based epidemic weights if (length(w) > 0L) { if (!is.list(w) || is.null(names(w)) || any(!sapply(w, is.function))) { stop("'w' must be a named list of functions") } if (any(names(w) %in% names(object))) { warning("'w' components replace existing columns of the same name") } ## reset / initialize columns for covariate-based epidemic weights object[names(w)] <- 0 ## keep functions as attribute attr(object, "w")[names(w)] <- w ## compute wij matrix for each of w wijlist <- compute_wijlist(w = w, data = firstDataBlock) } ## Compute sum of epidemic covariates over infectious individuals if (length(f) + length(w) > 0L) { infectiousIDs <- firstDataBlock[firstDataBlock[["atRiskY"]] == 0, "id"] ##<- this is a factor variable for(i in seq_along(beginBlock)) { blockidx <- beginBlock[i]:endBlock[i] blockdata <- object[blockidx,] blockIDs <- blockdata[["id"]] if (length(infectiousIDs) > 0L) { if (length(f) > 0L) { u <- distmat[as.character(blockIDs), as.character(infectiousIDs), drop = FALSE] # index by factor levels object[blockidx,names(f)] <- vapply( X = f, FUN = function (B) rowSums(B(u)), FUN.VALUE = numeric(length(blockIDs)), USE.NAMES = FALSE) } if (length(w) > 0L) { object[blockidx,names(w)] <- vapply( X = wijlist, FUN = function (wij) { ## actually don't have to care about the diagonal: ## i at risk => sum does not include it ## i infectious => atRiskY = 0 (ignored in twinSIR) rowSums(wij[as.character(blockIDs), as.character(infectiousIDs), drop = FALSE]) # index by factor levels }, FUN.VALUE = numeric(length(blockIDs)), USE.NAMES = FALSE) } } ## update the set of infectious individuals for the next block recoveredID <- blockIDs[blockdata[["Revent"]] == 1] infectedID <- blockIDs[blockdata[["event"]] == 1] if (length(recoveredID) > 0L) { infectiousIDs <- infectiousIDs[infectiousIDs != recoveredID] } else if (length(infectedID) > 0L) { infectiousIDs[length(infectiousIDs)+1L] <- infectedID } } } ## restore "epidata" class class(object) <- oldclass return(object) } compute_wijlist <- function (w, data) { ## for each function in 'w', determine the variable on which it acts; ## this is derived from the name of the first formal argument, which ## must be of the form "varname.i" wvars <- vapply(X = w, FUN = function (wFUN) { varname.i <- names(formals(wFUN))[[1L]] substr(varname.i, 1, nchar(varname.i)-2L) }, FUN.VALUE = "", USE.NAMES = TRUE) if (any(wvarNotFound <- !wvars %in% names(data))) { stop("'w' function refers to unknown variables: ", paste0(names(w)[wvarNotFound], collapse=", ")) } ## compute weight matrices w_ij for each of w mapply( FUN = function (wFUN, wVAR, ids) { wij <- outer(X = wVAR, Y = wVAR, FUN = wFUN) dimnames(wij) <- list(ids, ids) wij }, wFUN = w, wVAR = data[wvars], MoreArgs = list(ids = as.character(data[["id"]])), SIMPLIFY = FALSE, USE.NAMES = TRUE ) } ################################################################################ # EXTRACTION OPERATOR FOR 'EPIDATA' OBJECTS # Indexing with "[" would be possible (inheriting from data.frame). # But using any column index would remove attributes (row indexes would not). # Thus, we define an own method to retain and adjust the attributes when # selecting a subset of blocks of the 'epidata'. # Selecting a subset of columns will remove class "epidata" (resulting in a # simple data.frame) ################################################################################ "[.epidata" <- function(x, i, j, drop) { # use data.frame method first xx <- NextMethod("[") # then return its result as pure data.frame or assure valid 'epidata' # if a subset of columns has been selected and attributes have been removed if (NCOL(xx) != ncol(x) || any(names(xx) != names(x))) { if (inherits(xx, "data.frame")) { # xx could be a vector class(xx) <- "data.frame" # remove class 'epidata' } message("Note: converted class \"epidata\" to simple \"", class(xx), "\"") return(xx) } # else there is no effective column selection (e.g. j=TRUE) if (nrow(xx) == 0) { message("Note: no rows selected, dropped class \"epidata\"") class(xx) <- "data.frame" return(xx[TRUE]) # removes attributes } invalidEpidata <- FALSE blocksizesx <- table(x[["BLOCK"]]) blocksizesxx <- table(xx[["BLOCK"]]) blocksOK <- identical(c(blocksizesxx), c(blocksizesx[names(blocksizesxx)])) if (is.numeric(i) && any(diff(na.omit(i)) < 0)) { # epidata should remain ordered by time warning("dropped class \"epidata\": reordering rows is not permitted") invalidEpidata <- TRUE } else if (!blocksOK) { # blocks should not be cut, epidemic covariates might become invalid warning("dropped class \"epidata\": subsetting blocks not allowed") invalidEpidata <- TRUE } else if (any(diff(as.numeric(names(blocksizesxx))) != 1)) { # blocks can only be selected consecutively warning("dropped class \"epidata\": ", "only consecutive blocks may be selected") invalidEpidata <- TRUE } if (invalidEpidata) { class(xx) <- "data.frame" xx[TRUE] # removes attributes } else { # # adjust block index so that it starts at 1 # firstBlockNumber <- as.numeric(names(blocksizesxx)[1]) # if (firstBlockNumber > 1) { # xx[["BLOCK"]] <- xx[["BLOCK"]] - (firstBlockNumber-1) # } # Restore or adjust attributes tmin <- xx[["start"]][1] tmax <- xx[["stop"]][nrow(xx)] oldEventTimes <- attr(x, "eventTimes") attr(xx, "eventTimes") <- if (blocksOK) { oldEventTimes[oldEventTimes > tmin & oldEventTimes <= tmax] } else { xx[["stop"]][xx[["event"]] == 1] } attr(xx, "timeRange") <- c(tmin, tmax) attr(xx, "coords.cols") <- attr(x, "coords.cols") attr(xx, "f") <- attr(x, "f") xx } } ################################################################################ # INSERT BLOCKS FOR EXTRA STOP TIMES IN 'EPIDATA' OBJECTS ################################################################################ intersperse <- function (epidata, stoptimes, verbose = FALSE) { # Check arguments if (!inherits(epidata, "epidata")) { stop("'epidata' must inherit from class \"epidata\"") } if (!is.vector(stoptimes, mode = "numeric")) { stop("'stoptimes' must be a numeric vector") } # Identify new 'stoptimes' sortedEpiStop <- sort(unique(epidata$stop)) extraStoptimes <- stoptimes[! stoptimes %in% sortedEpiStop] # Return original 'epidata' if nothing to do if (length(extraStoptimes) == 0) { # message("nothing done: no new stop times") return(epidata) } # # Retain attributes of 'epidata' # .attributes <- attributes(epidata) # .attributes <- .attributes[match(c("eventTimes", "timeRange", # "coords.cols", "f", "config", "call", "terms"), names(.attributes), # nomatch = 0)] # Check new 'stoptimes' timeRange <- attr(epidata, "timeRange") inside <- extraStoptimes > timeRange[1] & extraStoptimes < timeRange[2] if (any(!inside)) { extraStoptimes <- extraStoptimes[inside] warning("ignored extra 'stoptimes' outside the observation period") } # Impute blocks for extraStoptimes oldclass <- class(epidata) class(epidata) <- "data.frame" # Avoid use of [.epidata (not necessary here) blocksize <- sum(epidata$BLOCK == 1) nInsert <- length(extraStoptimes) lastRow <- nrow(epidata) epidata <- rbind(epidata, epidata[rep.int(NA_integer_, nInsert * blocksize),], deparse.level = 0) # add NA rows, to be replaced below if (verbose) pb <- txtProgressBar(min=0, max=nInsert, initial=0, style=3) for(i in seq_len(nInsert)) { extraStop <- extraStoptimes[i] nextStoptime <- sortedEpiStop[match(TRUE, sortedEpiStop > extraStop)] # Find the block (row indexes) into which the extraStop falls rowsMatchedBlock <- which(epidata$stop == nextStoptime) # Split this block up into 2 parts # later part equals original block with start time = extraStop newBlock <- epidata[rowsMatchedBlock,] newBlock$start <- extraStop # earlier part has stop time = extraStop and no events at this time point epidata[rowsMatchedBlock, "stop"] <- extraStop epidata[rowsMatchedBlock, "event"] <- 0 epidata[rowsMatchedBlock, "Revent"] <- 0 # write the new block to epidata (reorder rows later) epidata[lastRow + seq_along(rowsMatchedBlock),] <- newBlock lastRow <- lastRow + length(rowsMatchedBlock) if (verbose) setTxtProgressBar(pb, i) } if (verbose) close(pb) # Adjust BLOCK column sortedEpiStop <- sort(c(sortedEpiStop, extraStoptimes)) epidata$BLOCK <- match(epidata$stop, sortedEpiStop) # Reorder rows by time and id epidata <- epidata[order(epidata$BLOCK, epidata$id), ] row.names(epidata) <- NULL class(epidata) <- oldclass return(epidata) } ################################################################################ # SUMMARY FUNCTION FOR EPIDATA OBJECTS # the epidemic is summarized by the following returned components: # - type: one of "SIR", "SI", "SIRS", "SIS" # - size: number of initially susceptible individuals, which became infected # - initiallyInfected: vector (factor) of initially infected individuals # - neverInfected: vector (factor) of never (during the observation period) # infected individuals # - coordinates: matrix with the coordinates of the individuals (rownames=id's) # - byID: data.frame with time points of events by id (columns time.I, time.R # and optionally time.S) # - counters: data.frame representing the evolution of the epidemic ################################################################################ summary.epidata <- function (object, ...) { class(object) <- "data.frame" # avoid use of [.epidata (not necessary here) # extract coordinates and initially infected individuals idlevels <- levels(object[["id"]]) N <- length(idlevels) firstDataBlock <- object[object$BLOCK == min(object$BLOCK),] coordinates <- as.matrix(firstDataBlock[attr(object, "coords.cols")]) rownames(coordinates) <- as.character(firstDataBlock[["id"]]) initiallyInfected <- firstDataBlock$id[firstDataBlock$atRiskY == 0] m <- length(initiallyInfected) n <- N - m ### summary 1: event table with columns id, time and type (of event, S/I/R) # Extract time points of the S events for each id StimesID <- by(object[c("atRiskY", "stop")], object["id"], function(x) { SeventIdx <- which(diff(x[["atRiskY"]]) == 1) x[["stop"]][SeventIdx] }, simplify=TRUE) names(StimesID) <- paste0(names(StimesID), ":") StimesVec <- c(unlist(StimesID, use.names = TRUE)) # c() if by() returned an array .Sids <- sub("(.+):.*", "\\1", names(StimesVec)) Stimes <- data.frame(id = factor(.Sids, levels = idlevels), stop = StimesVec, type = rep("S", length(StimesVec)), row.names = NULL, check.names = FALSE, stringsAsFactors = FALSE) # Extract time points of the I and R events for each id Itimes <- object[object$event == 1, c("id", "stop")] Itimes[["type"]] <- rep("I", nrow(Itimes)) Rtimes <- object[object$Revent == 1, c("id", "stop")] Rtimes[["type"]] <- rep("R", nrow(Rtimes)) # Combine the three event types into one data.frame eventTable <- rbind(Rtimes, Stimes, Itimes) # need this order for the counters below in the case of SIS: # pseudo-R-event occures infinitesimally before S names(eventTable)[2L] <- "time" eventTable <- eventTable[order(eventTable[["id"]], eventTable[["time"]]), ] eventTable[["type"]] <- factor(eventTable[["type"]], levels=c("S","I","R")) rownames(eventTable) <- NULL ### summary 2: type and size of the epidemic resusceptibility <- length(StimesVec) > 0 epitype <- if (resusceptibility) { Rtimes_notLast <- Rtimes[-which.max(Rtimes[,2]),] onlyPseudoR <- length(setdiff(Rtimes_notLast[,2], Stimes[,2])) == 0 if (onlyPseudoR) "SIS" else "SIRS" } else { if (nrow(Rtimes) > 0) "SIR" else "SI" } isEverInfected <- idlevels %in% initiallyInfected | idlevels %in% unique(eventTable$id[eventTable$type == "I"]) isNeverInfected <- !isEverInfected size <- n - sum(isNeverInfected) # everInfected <- factor(idlevels[isEverInfected], levels = idlevels) neverInfected <- factor(idlevels[isNeverInfected], levels = idlevels) ### summary 3: eventTable by id in wide form byID_everInfected <- if (nrow(eventTable) == 0) { data.frame(id = factor(character(0), levels = idlevels), time.I = numeric(0), row.names = NULL, check.names = FALSE, stringsAsFactors = FALSE) } else if (!resusceptibility) { .res <- reshape(eventTable, direction = "wide", timevar = "type", idvar = "id") attr(.res, "reshapeWide") <- NULL .res } else { rowsPerId <- table(eventTable[["id"]]) modulo3 <- rowsPerId %% 3 rest1 <- modulo3 == 1 rest12 <- modulo3 >= 1 missingR <- data.frame(id = names(rowsPerId)[rest1], time = rep(NA_real_, sum(rest1)), type = rep("R", sum(rest1)), row.names = NULL, check.names = FALSE, stringsAsFactors = FALSE) missingS <- data.frame(id = names(rowsPerId)[rest12], time = rep(NA_real_, sum(rest12)), type = rep("S", sum(rest12)), row.names = NULL, check.names = FALSE, stringsAsFactors = FALSE) eventTable3 <- rbind(eventTable, missingR, missingS) eventTable3 <- eventTable3[order(eventTable3[["id"]]),] .res <- data.frame( eventTable3[eventTable3$type == "I", c("id", "time")], eventTable3[eventTable3$type == "R", "time", drop = FALSE], eventTable3[eventTable3$type == "S", "time", drop = FALSE], row.names = NULL, check.names = FALSE, stringsAsFactors = FALSE ) names(.res) <- c("id", paste("time", c("I", "R", "S"), sep=".")) .res } byID_neverInfected <- data.frame(id = neverInfected, time.I = rep(NA_real_, n-size), time.R = rep(NA_real_, n-size), time.S = rep(NA_real_, n-size), row.names = NULL, check.names = FALSE) byID_all <- rbind(byID_everInfected, byID_neverInfected[seq_along(byID_everInfected)]) byID <- byID_all[order(byID_all[["id"]]),] rownames(byID) <- NULL ### summary 4: upgrade eventTable with ### evolution of numbers of susceptibles, infectious and removed counters <- eventTable[order(eventTable[["time"]]),c("time", "type", "id")] init <- data.frame(time = attr(object, "timeRange")[1L], type = NA_character_, id = NA_character_, nSusceptible = n, nInfectious = m, nRemoved = 0L) cumulatedReSusceptibility <- cumsum(counters[["type"]] == "S") cumulatedInfections <- cumsum(counters[["type"]] == "I") cumulatedRemovals <- cumsum(counters[["type"]] == "R") counters[["nSusceptible"]] <- init[["nSusceptible"]] - cumulatedInfections + cumulatedReSusceptibility counters[["nInfectious"]] <- init[["nInfectious"]] + cumulatedInfections - cumulatedRemovals counters[["nRemoved"]] <- init[["nRemoved"]] + cumulatedRemovals - cumulatedReSusceptibility counters <- rbind(init, counters) rownames(counters) <- NULL ### return the components in a list res <- list(type = epitype, size = n - sum(isNeverInfected), initiallyInfected = initiallyInfected, neverInfected = neverInfected, coordinates = coordinates, byID = byID, counters = counters) class(res) <- "summary.epidata" attr(res, "eventTimes") <- attr(object, "eventTimes") attr(res, "timeRange") <- attr(object, "timeRange") res } ################################################################################ # PRINT METHOD FOR 'EPIDATA' OBJECTS ################################################################################ print.epidata <- function (x, ...) { cat("\nHistory of an epidemic\n") cat("Number of individuals:", nlevels(x[["id"]]), "\n") cat("Time range:", paste(attr(x, "timeRange"), collapse = " -- "), "\n") cat("Number of infections:", length(attr(x, "eventTimes")), "\n\n") print.data.frame(x, ...) cat("\n") invisible(x) } ################################################################################ # PRINT METHOD FOR THE SUMMARY OF 'EPIDATA' OBJECTS ################################################################################ print.summary.epidata <- function(x, ...) { cat("\nAN", x$type, "EPIDEMIC\n") cat(" Time range:", paste(attr(x, "timeRange"), collapse = " -- "), "\n") cat(" Number of individuals:", nlevels(x$initiallyInfected), "\n") cat(" ", length(x$initiallyInfected), "initially infected individuals") if (length(x$initiallyInfected) > 0) { cat(":\n ") str(as.character(x$initiallyInfected), give.head = FALSE, vec.len = 100, strict.width = "wrap", indent.str = " ") } else cat("\n") cat(" ", length(x$neverInfected), "never infected individuals") if (length(x$neverInfected) > 0) { cat(":\n ") str(as.character(x$neverInfected), give.head = FALSE, vec.len = 100, strict.width = "wrap", indent.str = " ") } else cat("\n") cat(" Size of the epidemic:", x$size, "\n") if (x$type %in% c("SIRS", "SIS")) { cat(" Number of infections:", length(attr(x, "eventTimes")), "\n") } dimc <- dim(x$counters) cat("\n$ counters ('data.frame',", dimc[1L], "x", dimc[2L], "):", "evolution of the epidemic:\n") counters2print <- if (dimc[1] > 6L) { tmp <- format.data.frame(x$counters[c(1:3,1,dimc[1]-(1:0)),], na.encode = FALSE) tmp[4,] <- c("[....]", "", "", "", "", "") rownames(tmp)[4] <- "" as.matrix(tmp) } else { x$counters } print(counters2print, quote = FALSE, right = TRUE, na.print = "") cat("\n") invisible(x) } surveillance/R/farringtonFlexible.r0000644000175100001440000010712212375616647017220 0ustar hornikusers# ____________________________ # |\_________________________/|\ # || || \ # || algo.farrington || \ # || new version || | # || || | # || || | # || || | # || || | # || || / # ||_________________________|| / # |/_________________________\|/ # __\_________________/__/|_ # |_______________________|/ ) # ________________________ (__ # /oooo oooo oooo oooo /| _ )_ # /ooooooooooooooooooooooo/ / (_)_(_) # /ooooooooooooooooooooooo/ / (o o) #/C=_____________________/_/ ==\o/== # Version of the 26.06.2013 # M.Salmon, M.Hoehle ################################################################################ # CONTENTS ################################################################################ # # MAIN FUNCTION # Function that manages input and output. # # RESIDUALS FUNCTION # Function that calculates Anscombe residuals. # # WEIGHTS FUNCTION # Function that calculates weights based on these residuals. # # FORMULA FUNCTION # Function that writes a formula for the glm using Booleans from control. # # FIT GLM FUNCTION # Function that fits a GLM. If it does not converge this function tries to fit it without time trend. # # THRESHOLD FUNCTION # Function that calculates the lower and upper threshold, the probability of observing a count that is >= observed, and the score. # There are two versions of this function depending on the method chosen. # # BLOCKS FUNCTION # Function that creates the factor variable for the glm. # # DATA GLM FUNCTION # Function that prepares data for the glm # # GLM FUNCTION # Function that calls fit glm, checkst he time trend and calculate the prediction fort he current timepoint. ################################################################################ # END OF CONTENTS ################################################################################ ################################################################################ # MAIN FUNCTION ################################################################################ farringtonFlexible <- function(sts, control = list(range = NULL, b = 3, w = 3, reweight = TRUE, weightsThreshold = 2.58, verbose = FALSE,glmWarnings = TRUE, alpha = 0.01, trend = TRUE, pThresholdTrend = 0.05, limit54=c(5,4), powertrans="2/3", fitFun="algo.farrington.fitGLM.flexible", populationOffset = FALSE, noPeriods = 1, pastWeeksNotIncluded = 26, thresholdMethod = "delta")) { ###################################################################### # Use special Date class mechanism to find reference months/weeks/days ###################################################################### if (is.null( sts@epochAsDate)) { epochAsDate <- FALSE } else { epochAsDate <- sts@epochAsDate } ###################################################################### # Fetch observed and population ###################################################################### # Fetch observed observed <- observed(sts) freq <- sts@freq if (epochAsDate) { epochStr <- switch( as.character(freq), "12" = "month","52" = "week", "365" = "day") } else { epochStr <- "none" } # Fetch population (if it exists) if (!is.null(population(sts))) { population <- population(sts) } else { population <- rep(1,length(observed)) } ###################################################################### # Fix missing control options ###################################################################### # How many years to go back in time? if (is.null(control[["b",exact=TRUE]])) { control$b = 5 } # Half-window length if (is.null(control[["w", exact = TRUE]])) { control$w = 3 } # Range of time points to be evaluated if (is.null(control[["range", exact=TRUE]])) { control$range <- (freq*(control$b)+control$w +1):dim(observed)[1] } # Reweighting past outbreaks? if (is.null(control[["reweight",exact=TRUE]])) {control$reweight=TRUE} # With which threshold? if (is.null(control[["weightsThreshold",exact=TRUE]])) { control$weightsThreshold=2.58 } # Printing information? if (is.null(control[["verbose",exact=TRUE]])) {control$verbose=FALSE} # Printing warning from glm.fit? if (is.null(control[["glmWarnings",exact=TRUE]])) {control$glmWarnings=TRUE} # An approximate (two-sided) (1 - alpha)% prediction interval is calculated if (is.null(control[["alpha",exact=TRUE]])) {control$alpha=0.05} # Include a time trend when possible? if (is.null(control[["trend",exact=TRUE]])) {control$trend=TRUE} # Which pvalue for the time trend to be significant? if (is.null(control[["pThresholdTrend",exact=TRUE]])){ control$pThresholdTrend=0.05} # No alarm is sounded # if fewer than cases = 5 reports were received in the past period = 4 # weeks. limit54=c(cases,period) is a vector allowing the user to change # these numbers if (is.null(control[["limit54",exact=TRUE]])) {control$limit54=c(5,4)} # Power transformation to apply to the data. if (is.null(control[["powertrans",exact=TRUE]])){control$powertrans="2/3"} # How many noPeriods between windows around reference weeks? if (is.null(control[["noPeriods",exact=TRUE]])){control$noPeriods=1} # Use factors in the model? Depends on noPeriods, no input from the user. if (control$noPeriods!=1) { control$factorsBool=TRUE } else { control$factorsBool=FALSE } # Use a population offset in the model? if (is.null(control[["populationOffset",exact=TRUE]])) { control$populationOffset=FALSE } # How many past weeks not to take into account? if (is.null(control[["pastWeeksNotIncluded",exact=TRUE]])){ control$pastWeeksNotIncluded=control$w } # Which function to use? # Only one possibility at the moment if (is.null(control[["fitFun",exact=TRUE]])) { control$fitFun="algo.farrington.fitGLM.flexible" } else { control$fitFun <- match.arg(control$fitFun, c( "algo.farrington.fitGLM.flexible")) } # Which method for calculating the threshold? # Extracting the method if (is.null(control[["thresholdMethod",exact=TRUE]])) { control$thresholdMethod="delta"} thresholdMethod<- match.arg(control$thresholdMethod, c("delta","nbPlugin","muan"),several.ok=FALSE) # Adapt the argument for the glm function control$typePred <- switch(thresholdMethod, "delta"="response","nbPlugin"="link","muan"="link") # Which threshold function? control$thresholdFunction <- switch(thresholdMethod, "delta"="algo.farrington.threshold.farrington", "nbPlugin"="algo.farrington.threshold.noufaily", "muan"="algo.farrington.threshold.noufaily") ###################################################################### # Check options ###################################################################### if (!((control$limit54[1] >= 0) && (control$limit54[2] > 0))) { stop("The limit54 arguments are out of bounds: cases >= 0 and period > 0.") } ###################################################################### # Initialize the necessary vectors ###################################################################### # Vector for score score <- matrix(data = 0, nrow = length(control$range), ncol = ncol(sts)) sts@control$score <- score # Vector for time trend trend <- matrix(data = 0, nrow = length(control$range), ncol = ncol(sts)) # Vector for predictive distribution pvalue <- matrix(data = 0, nrow = length(control$range), ncol = ncol(sts)) sts@control$pvalue <- pvalue # Vector for expected count expected <- matrix(data = 0, nrow = length(control$range), ncol = ncol(sts)) sts@control$expected <- expected # Vector for mu0 (prediction from glm) mu0Vector <- matrix(data = 0, nrow = length(control$range), ncol = ncol(sts)) sts@control$mu0Vector <- mu0Vector # Vector for overdispersion phi (from glm) phiVector <- matrix(data = 0, nrow = length(control$range), ncol = ncol(sts)) sts@control$phiVector <- phiVector # Vector for time trend (from glm) trendVector <- matrix(data = 0, nrow = length(control$range), ncol = ncol(sts)) sts@control$trendVector <- trendVector # Define objects n <- control$b*(2*control$w+1) # loop over columns of sts for (j in 1:ncol(sts)) { #Vector of dates if (epochAsDate){ vectorOfDates <- as.Date(sts@epoch, origin="1970-01-01") } else { vectorOfDates <- seq_len(length(observed[,j])) } # Loop over control$range for (k in control$range) { ###################################################################### # Prepare data for the glm ###################################################################### dayToConsider <- vectorOfDates[k] diffDates <- diff(vectorOfDates) dataGLM <- algo.farrington.data.glm(dayToConsider=dayToConsider, b=control$b, freq=freq, epochAsDate=epochAsDate, epochStr=epochStr, vectorOfDates=vectorOfDates,w=control$w, noPeriods=control$noPeriods, observed=observed[,j],population=population, verbose=control$verbose, pastWeeksNotIncluded=control$pastWeeksNotIncluded,k) ###################################################################### # Fit the model ###################################################################### finalModel <- algo.farrington.glm(dataGLM,timeTrend=control$trend,populationOffset=control$populationOffset, factorsBool=control$factorsBool,reweight=control$reweight, weightsThreshold=control$weightsThreshold, pThresholdTrend=control$pThresholdTrend,b=control$b, noPeriods=control$noPeriods,typePred=control$typePred, fitFun=control$fitFun,glmWarnings=control$glmWarnings, epochAsDate=epochAsDate,dayToConsider=dayToConsider, diffDates=diffDates,populationNow=population[k,j],k, verbose=control$verbose) if (is.null(finalModel)){ #Do we have an alarm -- i.e. is observation beyond CI?? #upperbound only relevant if we can have an alarm (enoughCases) sts@alarm[k,j] <- NA sts@upperbound[k,j] <- NA mu0Vector[(k-min(control$range)+1),j] <- NA # Get overdispersion phiVector[(k-min(control$range)+1),j] <- NA # Get score score[(k-min(control$range)+1),j] <- NA #Compute bounds of the predictive pvalue[(k-min(control$range)+1),j] <- NA # Time trend trendVector[(k-min(control$range)+1),j] <- NA trend[(k-min(control$range)+1),j] <- NA warning(paste("The model could not converge with nor without time trend at timepoint ", k," so no result can be given for timepoint ", k,".\n")) } else { pred <- finalModel$pred doTrend <- finalModel$doTrend coeffTime <- finalModel$coeffTime ###################################################################### # Calculate lower and upper threshold ###################################################################### argumentsThreshold <- list(predFit=pred$fit,predSeFit=pred$se.fit, phi=finalModel$phi, skewness.transform=control$powertrans, alpha=control$alpha, y=observed[k,j], method=control$thresholdMethod ) lu <- do.call(control$thresholdFunction, args=argumentsThreshold) ###################################################################### # Postprocessing steps & output ###################################################################### #Compute exceedance score unless less than 5 reports during last 4 weeks. #Changed in version 0.9-7 - current week is included now enoughCases <- (sum(observed[(k-control$limit54[2]+1):k,j]) >=control$limit54[1]) #18 May 2006: Bug/unexpected feature found by Y. Le Strat. #the okHistory variable meant to protect against zero count problems, #but instead it resulted in exceedance score == 0 for low counts. #Now removed to be concordant with the Farrington 1996 paper. X <- ifelse(enoughCases,lu$score,NA) #Do we have an alarm -- i.e. is observation beyond CI?? #upperbound only relevant if we can have an alarm (enoughCases) sts@alarm[k,j] <- !is.na(X) && (X>1) && observed[k,j]!=0 sts@upperbound[k,j] <- ifelse(enoughCases,lu$upper,NA) # Possible bug alarm although upperbound <- 0? # Calculate expected value from glm if (is.na(lu$upper)==FALSE){ if ( control$typePred=="response"){ expected[(k-min(control$range)+1),j] <- ifelse(enoughCases,pred$fit,NA) } else{ expected[(k-min(control$range)+1),j] <- ifelse(enoughCases,exp(pred$fit),NA) } }else{ expected[(k-min(control$range)+1),j] <- NA } # Calculate mean of the negbin distribution of the observation # Use linear predictor mean and sd eta0 <- pred$fit seEta0 <- pred$se.fit # deduce the quantile for mu0 from eta0 which is normally distributed if (control$thresholdMethod=='nbPlugin'){ mu0Vector[(k-min(control$range)+1),j] <- exp(eta0) } else { mu0Vector[(k-min(control$range)+1),j] <- exp(qnorm(1-control$alpha, mean=eta0, sd=seEta0)) } # Get overdispersion phiVector[(k-min(control$range)+1),j] <- finalModel$phi # Get score score[(k-min(control$range)+1),j] <- lu$score #Compute bounds of the predictive pvalue[(k-min(control$range)+1),j] <- lu$prob # Time trend if(doTrend){ trendVector[(k-min(control$range)+1),j] <- coeffTime trend[(k-min(control$range)+1),j] <- 1 } else { trendVector[(k-min(control$range)+1),j] <- NA } } }#done looping over all time points } #end of loop over cols in sts. # Add information about score sts@control$score[,j] <- score[,j] # Add information about trend sts@control$trend[,j] <- trend[,j] #Add information about predictive distribution sts@control$pvalue[,j] <- pvalue[,j] # Add information about expected value sts@control$expected[,j] <- expected[,j] # Add information about mean of the negbin distribution of the observation sts@control$mu0Vector[,j] <- mu0Vector[,j] # Add information about overdispersion sts@control$phiVector[,j] <- phiVector[,j] # Add information about time trend sts@control$trendVector[,j] <- trendVector[,j] #Done return(sts[control$range,]) } ################################################################################ # END OF MAIN FUNCTION ################################################################################ ################################################################################ # REFERENCE TIME POINTS FUNCTION ################################################################################ algo.farrington.referencetimepoints <- function(dayToConsider,b=control$b,freq=freq,epochAsDate,epochStr){ if (epochAsDate) { referenceTimePoints <- as.Date(seq(as.Date(dayToConsider, origin="1970-01-01"), length=(b+1), by="-1 year")) } else { referenceTimePoints <- seq(dayToConsider, length=(b+1),by=-freq) if (referenceTimePoints[b+1]<=0){ warning("Some reference values did not exist (index<1).") } } if (epochStr == "week") { # get the date of the Mondays/Tuesdays/etc so that it compares to # the reference data # (Mondays for Mondays for instance) # Vectors of same days near the date (usually the same week) # dayToGet dayToGet <- as.numeric(format(dayToConsider, "%w")) actualDay <- as.numeric(format(referenceTimePoints, "%w")) referenceTimePointsA <- referenceTimePoints - (actualDay - dayToGet) # Find the other "same day", which is either before or after referenceTimePoints referenceTimePointsB <- referenceTimePointsA + ifelse(referenceTimePointsA>referenceTimePoints,-7,7) # For each year choose the closest Monday/Tuesday/etc # The order of referenceTimePoints is NOT important AB <- cbind(referenceTimePointsA,referenceTimePointsB) ABnumeric <- cbind(as.numeric(referenceTimePointsA),as.numeric(referenceTimePointsB)) distMatrix <- abs(ABnumeric-as.numeric(referenceTimePoints)) idx <- (distMatrix[,1]>distMatrix[,2])+1 referenceTimePoints <- as.Date(AB[cbind(1:dim(AB)[1],idx)],origin="1970-01-01") } return(referenceTimePoints) } ################################################################################ # END OF REFERENCE TIME POINTS FUNCTION ################################################################################ ################################################################################ # RESIDUALS FUNCTION ################################################################################ anscombe.residuals <- function(m,phi) { y <- m$y mu <- fitted.values(m) #Compute raw Anscombe residuals a <- 3/2*(y^(2/3) * mu^(-1/6) - mu^(1/2)) #Compute standardized residuals a <- a/sqrt(phi * (1-hatvalues(m))) return(a) } ################################################################################ # END OF RESIDUALS FUNCTION ################################################################################ ## ################################################################################ ## # WEIGHTS FUNCTION -- this function has been changed in the original algo_farrington ## # implementation. ## ################################################################################ ## ## algo.farrington.assign.weights <- function(s,weightsThreshold) { ## #s_i^(-2) for s_iweightsThreshold) )) ## omega <- numeric(length(s)) ## omega[s>weightsThreshold] <- gamma*(s[s>weightsThreshold]^(-2)) ## omega[s<=weightsThreshold] <- gamma ## return(omega) ## } ## ################################################################################ ## # END OF WEIGHTS FUNCTION ## ################################################################################ ################################################################################ # FORMULA FUNCTION ################################################################################ # Function for writing the good formula depending on timeTrend, # populationOffset and factorsBool formulaGLM <- function(populationOffset=FALSE,timeBool=TRUE,factorsBool=FALSE){ # Description # Args: # populationOffset: --- # Returns: # Vector of X # Smallest formula formulaString <- "response ~ 1" # With time trend? if (timeBool){ formulaString <- paste(formulaString,"+wtime",sep ="")} # With population offset? if(populationOffset){ formulaString <- paste(formulaString,"+offset(log(population))",sep ="")} # With factors? if(factorsBool){ formulaString <- paste(formulaString,"+seasgroups",sep ="")} # Return formula as a string return(formulaString) } ################################################################################ # END OF FORMULA FUNCTION ################################################################################ ################################################################################ # FIT GLM FUNCTION ################################################################################ algo.farrington.fitGLM.flexible <- function(dataGLM, timeTrend,populationOffset,factorsBool,reweight,weightsThreshold,glmWarnings,verbose,control,...) { # Model formula depends on whether to include a time trend or not. theModel <- formulaGLM(populationOffset,timeBool=timeTrend,factorsBool) # Fit it -- this is slow. An improvement would be to use glm.fit here. # This would change the syntax, however. if (glmWarnings) { model <- glm(formula(theModel),data=dataGLM,family = quasipoisson(link="log")) } else { model <- suppressWarnings(glm(formula(theModel),data=dataGLM,family = quasipoisson(link="log"))) } #Check convergence - if no convergence we return empty handed. if (!model$converged) { #Try without time dependence if (timeTrend) { theModel <- formulaGLM(populationOffset,timeBool=F,factorsBool) if (glmWarnings) { model <- glm(as.formula(theModel), data=dataGLM, family = quasipoisson(link="log")) } else { model <- suppressWarnings(glm(as.formula(theModel), data=dataGLM, family = quasipoisson(link="log"))) } if (verbose) {cat("Warning: No convergence with timeTrend -- trying without.\n")} } if (!model$converged) { if (verbose) {cat("Warning: No convergence in this case.\n")} if (verbose) {print(dataGLM[,c("response","wtime"),exact=TRUE])} return(NULL) } } #Overdispersion parameter phi phi <- max(summary(model)$dispersion,1) #In case reweighting using Anscome residuals is requested if (reweight) { s <- anscombe.residuals(model,phi) omega <- algo.farrington.assign.weights(s,weightsThreshold) if (glmWarnings) { model <- glm(as.formula(theModel),data=dataGLM, family=quasipoisson(link="log"), weights=omega) } else { model <- suppressWarnings(glm(as.formula(theModel),data=dataGLM, family=quasipoisson(link="log"), weights=omega)) } #Here, the overdispersion often becomes small, so we use the max #to ensure we don't operate with quantities less than 1. phi <- max(summary(model)$dispersion,1) } # end of refit. #Add wtime, response and phi to the model model$phi <- phi model$wtime <- dataGLM$wtime model$response <- dataGLM$response model$population <- dataGLM$population if (reweight) { model$weights <- omega } else{ model$weights <- model$weights } #Done return(model) } ################################################################################ # END OF FIT GLM FUNCTION ################################################################################ ################################################################################ # THRESHOLD FUNCTION FARRINGTON ################################################################################ algo.farrington.threshold.farrington <- function(predFit,predSeFit,phi, skewness.transform, alpha,y,method){ #Fetch mu0 and var(mu0) from the prediction object mu0 <- predFit tau <- phi + (predSeFit^2)/mu0 #Standard deviation of prediction, i.e. sqrt(var(h(Y_0)-h(\mu_0))) switch(skewness.transform, "none" = { se <- sqrt(mu0*tau); exponent <- 1}, "1/2" = { se <- sqrt(1/4*tau); exponent <- 1/2}, "2/3" = { se <- sqrt(4/9*mu0^(1/3)*tau); exponent <- 2/3}, { stop("No proper exponent in algo.farrington.threshold.")}) #Note that lu can contain NA's if e.g. (-1.47)^(3/2) lu <- sort((mu0^exponent + c(-1,1)*qnorm(1-alpha)*se)^(1/exponent), na.last=FALSE) #Ensure that lower bound is non-negative lu[1] <- max(0,lu[1],na.rm=TRUE) # probability associated to the observed value as quantile q <- pnorm( y^(1/exponent) , mean=mu0^exponent, sd=se,lower.tail=FALSE) # calculate score x <- ifelse(is.na(lu[2])==FALSE,(y - predFit) / (lu[2] - predFit),NA) return(list(lower=lu[1],upper=lu[2],prob=q,score=x)) } ################################################################################ # END OF THRESHOLD FUNCTION FARRINGTON ################################################################################ ################################################################################ # THRESHOLD FUNCTION NOUFAILY ################################################################################ algo.farrington.threshold.noufaily <- function(predFit,predSeFit,phi, skewness.transform, alpha,y,method){ # method of Angela Noufaily with modifications # Use linear predictor mean and sd eta0 <- predFit seEta0 <- predSeFit # deduce the quantile for mu0 from eta0 which is normally distributed if (method=='nbPlugin'){ mu0Quantile <- exp(eta0) } else { mu0Quantile <- exp(qnorm(1-alpha, mean=eta0, sd=seEta0)) } if (mu0Quantile==Inf){ lu <- c(NA,NA) q <- NA # else is when the method is "muan" } else{ # Two cases depending on phi value if (phi>1){ lu<-c(qnbinom(alpha/2,mu0Quantile/(phi-1),1/phi), qnbinom(1-alpha/2,mu0Quantile/(phi-1),1/phi)) } else { lu<-c(qpois(alpha/2,mu0Quantile),qpois(1-alpha/2,mu0Quantile)) } # cannot be negative lu[1]=max(0,lu[1]) # probability associated to the observed value as quantile if (phi!=1){ q <- pnbinom(q= y-1 ,size=mu0Quantile/(phi-1),prob=1/phi,lower.tail=FALSE) } else{ q <- ppois(y-1,mu0Quantile,lower.tail=FALSE) } } # calculate score x <- ifelse(is.na(lu[2])==FALSE,(y - predFit) / (lu[2] - predFit),NA) return(list(lower=lu[1],upper=lu[2],prob=q,score=x)) } ################################################################################ # END OF THRESHOLD FUNCTION NOUFAILY ################################################################################ ################################################################################ # BLOCKS FUNCTION ################################################################################ blocks <- function(referenceTimePoints,vectorOfDates,freq,dayToConsider,b,w,p, epochAsDate) { ## INPUT # freq: are we dealing with daily/weekly/monthly data? # b: how many years to go back in time # w: half window length around the reference timepoints # p: number of noPeriods one wants the year to be split into ## VECTOR OF ABSOLUTE NUMBERS # Very useful to write the code! vectorOfAbsoluteNumbers <- seq_len(length(vectorOfDates)) # logical vector indicating where the referenceTimePoints # are in the vectorOfDates referenceTimePointsOrNot <- vectorOfDates %in% referenceTimePoints ## VECTOR OF FACTORS vectorOfFactors <- rep(NA,length(vectorOfDates)) ## SETTING THE FACTORS # Current week if (epochAsDate==FALSE){ now <- which(vectorOfDates==dayToConsider) } else { now <- which(vectorOfDates==as.Date(dayToConsider)) } vectorOfFactors[(now-w):now] <- p # Reference weeks referenceWeeks <- rev(as.numeric( vectorOfAbsoluteNumbers[referenceTimePointsOrNot=='TRUE'])) for (i in 1:b) { # reference week refWeek <- referenceWeeks[i+1] vectorOfFactors[(refWeek-w):(refWeek+w)] <- p # The rest is only useful if ones want factors, otherwise only have # reference timepoints like in the old algo.farrington if (p!=1){ # Number of time points to be shared between vectors period <- referenceWeeks[i] - 2 * w - 1 - refWeek # Check that p is not too big if (period < (p-(2*w+1))){stop('Number of factors too big!')} # Look for the length of blocks lengthOfBlocks <- period %/% (p-1) rest <- period %% (p-1) vectorLengthOfBlocks <- rep(lengthOfBlocks,p-1) # share the rest of the Euclidian division among the first blocks add <- seq_len(rest) vectorLengthOfBlocks[add] <- vectorLengthOfBlocks[add]+1 # slight transformation necessary for the upcoming code with cumsum vectorLengthOfBlocks <- c(0,vectorLengthOfBlocks) # fill the vector for (j in 1:(p-1)) { vectorOfFactors[(refWeek+w+1+cumsum(vectorLengthOfBlocks)[j]): (refWeek+w+1+cumsum(vectorLengthOfBlocks)[j+1]-1)]<-j } } } ## DONE! return(vectorOfFactors) #indent } ################################################################################ # END OF BLOCKS FUNCTION ################################################################################ ################################################################################ # DATA GLM FUNCTION ################################################################################ algo.farrington.data.glm <- function(dayToConsider, b, freq, epochAsDate,epochStr, vectorOfDates,w,noPeriods, observed,population, verbose,pastWeeksNotIncluded,k){ # Identify reference time points # Same date but with one year, two year, etc, lag # b+1 because we need to have the current week in the vector referenceTimePoints <- algo.farrington.referencetimepoints(dayToConsider,b=b, freq=freq, epochAsDate=epochAsDate, epochStr=epochStr ) if (sum((vectorOfDates %in% min(referenceTimePoints)) == rep(FALSE,length(vectorOfDates))) == length(vectorOfDates)){ stop("Some reference values did not exist (index<1).") } if (verbose) { cat("k=", k,"\n")} # Create the blocks for the noPeriods between windows (including windows) # If noPeriods=1 this is a way of identifying windows, actually. blocks <- blocks(referenceTimePoints,vectorOfDates,epochStr,dayToConsider, b,w,noPeriods,epochAsDate) # Here add option for not taking the X past weeks into account # to avoid adaptation of the model to emerging outbreaks blocksID <- blocks blocksID[(k-pastWeeksNotIncluded):k] <- NA # Extract values for the timepoints of interest only blockIndexes <- which(is.na(blocksID)==FALSE) # Time # if epochAsDate make sure wtime has a 1 increment if (epochAsDate){ wtime <- (as.numeric(vectorOfDates[blockIndexes])- as.numeric(vectorOfDates[blockIndexes][1]))/as.numeric(diff(vectorOfDates))[1] } else { wtime <- as.numeric(vectorOfDates[blockIndexes]) } # Factors seasgroups <- as.factor(blocks[blockIndexes]) # Observed response <- observed[blockIndexes] # Population pop <- population[blockIndexes] if (verbose) { print(response)} dataGLM <- data.frame(response=response,wtime=wtime,population=pop, seasgroups=seasgroups,vectorOfDates=vectorOfDates[blockIndexes]) dataGLM <- dataGLM[is.na(dataGLM$response)==FALSE,] return(dataGLM) } ################################################################################ # END OF DATA GLM FUNCTION ################################################################################ ################################################################################ # GLM FUNCTION ################################################################################ algo.farrington.glm <- function(dataGLM,timeTrend,populationOffset,factorsBool, reweight,weightsThreshold,pThresholdTrend,b, noPeriods,typePred,fitFun,glmWarnings,epochAsDate, dayToConsider,diffDates,populationNow,k,verbose) { arguments <- list(dataGLM=dataGLM, timeTrend=timeTrend, populationOffset=populationOffset, factorsBool=factorsBool,reweight=reweight, weightsThreshold=weightsThreshold,glmWarnings=glmWarnings, verbose=verbose,control=control) model <- do.call(fitFun, args=arguments) #Stupid check to pass on NULL values from the algo.farrington.fitGLM proc. if (is.null(model)) return(model) ###################################################################### #Time trend ###################################################################### #Check whether to include time trend, to do this we need to check whether #1) wtime is signifcant at the 95lvl #2) the predicted value is not larger than any observed value #3) the historical data span at least 3 years. doTrend <- NULL # if model converged with time trend if ("wtime" %in% names(coef(model))){ # get the prediction for k if(epochAsDate){ wtime=(as.numeric(dayToConsider)-as.numeric(dataGLM$vectorOfDates[1]))/as.numeric(diffDates)[1] } else { wtime <- c(k) } pred <- predict.glm(model,newdata=data.frame(wtime=wtime, population=populationNow, seasgroups=factor(noPeriods), dispersion=model$phi),se.fit=TRUE,type="response") # check if three criterion ok #is the p-value for the trend significant (0.05) level significant <- (summary.glm(model)$coefficients["wtime",4] < pThresholdTrend) #have to use at least three years of data to allow for a trend atLeastThreeYears <- (b>=3) #no horrible predictions noExtrapolation <- (pred$fit <= max(dataGLM$response,na.rm=T)) #All 3 criteria have to be met in order to include the trend. Otherwise #it is removed. Only necessary to check this if a trend is requested. doTrend <- (atLeastThreeYears && significant && noExtrapolation) # if not then refit if (doTrend==FALSE) { arguments$timeTrend=FALSE model <- do.call(fitFun, args=arguments) } } else { doTrend <- FALSE } #done with time trend ###################################################################### ###################################################################### # Calculate prediction # ###################################################################### #Predict value if(epochAsDate){ wtime=(as.numeric(dayToConsider)-as.numeric(dataGLM$vectorOfDates[1]))/as.numeric(diffDates)[1] } else { wtime <- c(k) } pred <- predict.glm(model,newdata=data.frame(wtime=wtime, population=populationNow, seasgroups=factor(noPeriods), dispersion=model$phi),se.fit=TRUE,type=typePred) coeffTime=ifelse(doTrend,summary.glm(model)$coefficients["wtime",1],NA) finalModel <- list (pred,doTrend,coeffTime,model$phi) names(finalModel) <- c("pred","doTrend","coeffTime","phi") return(finalModel) } ################################################################################ # END OF GLM FUNCTION ################################################################################ surveillance/R/hhh4_W_powerlaw.R0000644000175100001440000001242112533654646016367 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Parametric power-law specification for neighbourhood weights in hhh4() ### ### Copyright (C) 2012-2015 Sebastian Meyer ### $Revision: 1353 $ ### $Date: 2015-06-03 21:46:45 +0200 (Mit, 03. Jun 2015) $ ################################################################################ ### Construct weight matrix wji according to the Zeta-distribution with respect ### to the orders of neighbourhood (in nbmat, as e.g. obtained from nbOrder()), ### optionally fulfilling rowSums(wji) = 1 ## As a formula (for j != i, otherwise wji = 0): ## wji = pzeta(oji; d, maxlag) / sum_k pzeta(ojk; d, maxlag) ## Here, oji = oij is the order of nb of i and j, ## and pzeta(o; d, m) = o^-d / sum_{r=1}^m r^-d is the Zeta-distribution ## on 1:m (also called Zipf's law). ## Special cases: maxlag >= max(nbmat) yields the weights ## wji = oji^-d / sum_k ojk^-d ## and maxlag=1 yields the classical weights wji=1/nj. zetaweights <- function (nbmat, d = 1, maxlag = max(nbmat), normalize = FALSE) { ## raw (non-normalized) zeta-distribution on 1:maxlag zeta <- c(0, seq_len(maxlag)^-d) # first 0 is for lag 0 (i.e., diag(nbmat)) ## replace order by zetaweight of that order wji <- zeta[nbmat + 1L] # results in vector wji[is.na(wji)] <- 0 # for lags > maxlag ## set dim and names dim(wji) <- dim(nbmat) dimnames(wji) <- dimnames(nbmat) if (normalize) normalizeW(wji) else wji } ### powerlaw weights ## in the non-truncated case, i.e. maxlag = max(nbmat), ## the raw powerlaw weights are defined as w_ji = o_ji^-d, ## and with (row-)normalization we have w_ji = o_ji^-d / sum_k o_jk^-d W_powerlaw <- function (maxlag, normalize = TRUE, log = FALSE, initial = if (log) 0 else 1) { if (missing(maxlag)) { stop("'maxlag' must be specified (e.g. maximum neighbourhood order)") ## specifying 'maxlag' in zetaweights is actually optional since it has ## the default value max(nbmat). however, repeatedly asking for this ## maximum would be really inefficient. } else stopifnot(isScalar(maxlag)) ## main function which returns the weight matrix weights.call <- call("zetaweights", quote(nbmat), quote(d), maxlag, normalize) weights <- as.function(c(alist(d=, nbmat=, ...=), call("{", weights.call)), envir=.GlobalEnv) if (log) { # the parameter d is interpreted on log-scale ## we prepend the necessary conversion d <- exp(d) body(weights) <- as.call(append(as.list(body(weights)), quote(d <- exp(d)), after=1)) } ## construct derivatives with respect to "d" (or log(d), respectively) dweights <- d2weights <- as.function(c(alist(d=, nbmat=, ...=), quote({})), envir=.GlobalEnv) weights.call[[5L]] <- FALSE # normalize separately header <- c( if (log) quote(d <- exp(d)), # such that d is again on original scale substitute(Wraw <- weights.call, list(weights.call=weights.call)), if (normalize) expression( nUnits <- nrow(Wraw), norm <- .rowSums(Wraw, nUnits, nUnits) ), expression( # Wraw == 0 means o = 0 (diagonal) or o > maxlag => deriv = 0 is.na(Wraw) <- Wraw == 0, # set to NA since we will take the log logo <- -log(Wraw)/d # = log(nbmat) with NA's at Wraw == 0 ), if (normalize) quote(W <- Wraw / norm) else quote(W <- Wraw) ) footer <- expression(deriv[is.na(deriv)] <- 0, deriv) ## first derivative tmp1 <- expression( ## in surveillance < 1.9-0, 'norm' and 'tmpnorm' were based on 'nbmat', ## which is incorrect for the truncated case maxlag < max(nbmat) tmpnorm <- .rowSums(Wraw * -logo, nUnits, nUnits, na.rm=TRUE) / norm, tmp1 <- logo + tmpnorm ) deriv1 <- if (normalize) { expression(deriv <- W * -tmp1) } else expression(deriv <- W * -logo) body(dweights) <- as.call(c(as.name("{"), header, if (normalize) tmp1, deriv1, if (log) expression(deriv <- deriv * d), # this is the non-log d footer )) ## second derivative body(d2weights) <- as.call(c(as.name("{"), header, if (normalize) { c(tmp1, expression( tmp2 <- .rowSums(Wraw * logo^2, nUnits, nUnits, na.rm=TRUE) / norm - tmpnorm^2, deriv <- W * (tmp1^2 - tmp2) )) } else expression(deriv <- W * logo^2), if (log) c( do.call("substitute", list(deriv1[[1L]], list(deriv=as.name("deriv1")))), expression(deriv <- deriv * d^2 + deriv1 * d) # this is the non-log d ), footer )) ## return list of functions list(w=weights, dw=dweights, d2w=d2weights, initial=initial) } surveillance/R/twinstim_siaf_student.R0000644000175100001440000001070012271543314017736 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Student (t) kernel f(s) = (||s||^2+sigma^2)^-d ### This is a reparametrization of the t-kernel; For d=1, this is the kernel of ### the Cauchy density with scale sigma; in Geostatistics, a correlation ### function of this kind is known as the Cauchy model. ### ### Copyright (C) 2013-2014 Sebastian Meyer ### $Revision: 711 $ ### $Date: 2014-01-27 21:51:24 +0100 (Mon, 27 Jan 2014) $ ################################################################################ siaf.student <- function (nTypes = 1, validpars = NULL) { nTypes <- as.integer(nTypes) stopifnot(length(nTypes) == 1L, nTypes > 0L) ## for the moment we don't make this type-specific if (nTypes != 1) stop("type-specific shapes are not yet implemented") ## helper expression, note: logpars=c(logscale=logsigma, logd=logd) tmp <- expression( logsigma <- logpars[[1L]], # used "[[" to drop names logd <- logpars[[2L]], sigma <- exp(logsigma), d <- exp(logd) ) ## spatial kernel f <- function (s, logpars, types = NULL) {} body(f) <- as.call(c(as.name("{"), tmp, expression(s2 <- .rowSums(s^2, nrow(s), 2L)), expression((s2+sigma^2)^-d) )) ## numerically integrate f over a polygonal domain F <- function (polydomain, f, logpars, type = NULL, ...) .polyCub.iso(polydomain$bdry, intrfr.student, logpars, #type, center=c(0,0), control=list(...)) ## fast integration of f over a circular domain ## is not relevant for this heavy-tail kernel since we don't use ## 'effRange', and usually eps.s=Inf ##Fcircle <- function (r, logpars, type = NULL) {} ## derivative of f wrt logpars deriv <- f body(deriv)[[length(body(deriv))]] <- # assignment for return value of f substitute(fvals <- x, list(x=body(deriv)[[length(body(deriv))]])) body(deriv) <- as.call(c(as.list(body(deriv)), expression( derivlogsigma <- -2*d*sigma^2 * fvals / (s2+sigma^2), derivlogd <- log(fvals) * fvals, cbind(derivlogsigma, derivlogd, deparse.level = 0) ))) ## Numerical integration of 'deriv' over a polygonal domain Deriv <- function (polydomain, deriv, logpars, type = NULL, ...) { res.logsigma <- .polyCub.iso(polydomain$bdry, intrfr.student.dlogsigma, logpars, #type, center=c(0,0), control=list(...)) res.logd <- .polyCub.iso(polydomain$bdry, intrfr.student.dlogd, logpars, #type, center=c(0,0), control=list(...)) c(res.logsigma, res.logd) } ## simulation from the kernel simulate <- siaf.simulatePC(intrfr.student) ## set function environments to the global environment environment(f) <- environment(deriv) <- .GlobalEnv ## in F, Deriv, and simulate we need access to the intrfr-functions environment(F) <- environment(Deriv) <- environment(simulate) <- getNamespace("surveillance") ## return the kernel specification list(f=f, F=F, deriv=deriv, Deriv=Deriv, simulate=simulate, npars=2L, validpars=validpars) } ## integrate x*f(x) from 0 to R (vectorized) intrfr.student <- function (R, logpars, types = NULL) { sigma <- exp(logpars[[1L]]) d <- exp(logpars[[2L]]) if (d == 1) { log(R^2+sigma^2) / 2 - log(sigma) } else { ( (R^2+sigma^2)^(-d+1) - (sigma^2)^(-d+1) ) / (2-2*d) } } ## integrate x * (df(x)/dlogsigma) from 0 to R (vectorized) intrfr.student.dlogsigma <- function (R, logpars, types = NULL) { sigma <- exp(logpars[[1L]]) d <- exp(logpars[[2L]]) sigma^2 * ( (R^2+sigma^2)^-d - sigma^(-2*d) ) } ## integrate x * (df(x)/dlogd) from 0 to R (vectorized) intrfr.student.dlogd <- function (R, logpars, types = NULL) { sigma <- exp(logpars[[1L]]) d <- exp(logpars[[2L]]) if (d == 1) { log(sigma)^2 - log(R^2+sigma^2)^2 / 4 } else { # thanks to Maple 17 primitive <- function (x) { x2ps2 <- x^2 + sigma^2 (d*(d-1)*log(x2ps2) + d) / (2*(d-1)^2 * (x2ps2)^(d-1)) } primitive(R) - primitive(0) } } surveillance/R/algo_rogerson.R0000644000175100001440000004125511731650466016170 0ustar hornikusers################################################### ### chunk number 1: ################################################### ################################################################### # Average Run Lengths for CUSUMs using Markov Chain approach # # based on the program of Hawkins, D. M. (1992) # "Evaluation of Average Run Lengths of Cumulative Sum Charts # for an Arbitrary Data Distribution" # Communications in Statistics--Simulation. 21(4) 1001-1020. #--------------------------------------------------------------- # # for discrete distributions (i.e. Pois, Bin) # and upward CUSUMS (increasing rate,probability) # # Parameters: # h - decision interval h # k - reference value k # distr - "poisson" or "binomial" # theta - distribution parameter for cdf distr, e.g. lambda for ppois, p for pbinomial # W - winsorizing value W (for robust CUSUM) # to get a nonrobust CUSUM set W > k+h # digits - k and h are rounded to digits decimal places # ... - further arguments for distribution # i.e. number of trials n for binomial (defaults to n=1) # # Returns: # ARL - one-sided ARL of the regular (no-head-start) CUSUM ################################################################### arlCusum <- function(h=10, k=3, theta=2.4, distr=c("poisson","binomial"), W=NULL,digits=1,...){ h <- round(h,digits) k <- round(k,digits) #cat("h",h,"k",k,"\n") distr <- match.arg(distr,c("poisson","binomial")) ############## # cdf of a binomial variate with fixed sample size pbinomial <- function(x,p,n=1){ pbinom(x,size=n,prob=p) } ######## distribution <- switch(distr, "poisson" = ppois, "binomial" = pbinomial ) #no winsorization if(is.null(W)) W <- ceiling(h+k+1) # common denominator of h and k denrat <- commonDenom(h,k,digits=digits) #cat("h =",h,"k =",k,"denrat",denrat,"\n") # check parameters for feasibility if(h <=0) stop("Nonpositive decision interval\n") if(W <= k) stop("Winsorization value less than reference value\n") K <- as.integer(k*denrat+0.5) N <- as.integer(denrat) M <- as.integer(h*denrat -0.5) w <- as.integer(W*denrat+0.5) deviat <- abs(K-k*denrat)+abs(M-h*denrat+1)+abs(w-W*denrat) if(deviat > .01) stop("h, k or W not a multiple of 1/denrat\n") # determine probabilities x <- seq(((-M-1)+K)/N,(M+K)/N,by=(1/denrat)) probs <- distribution(x, theta,...) # Winsorization (any observation exeeding some treshold value W is replaced by W # CUSUM is then: S_n = max{0, S_n-1 + min(X_n,W) - k} probs[x>=W] <- 1 #construct transition matrix transition <- matrix(NA,M+1,M+1) transition[1,1] <- probs[(M+2)] #Pr(X <= k) transition[-1,1] <- probs[(M+2)-(1:M)] #Pr(X <= -j+ k) ,j=1,2,...,h-1 transition[1,-1] <- probs[(M+2)+(1:M)]- probs[(M+2)+(1:M)-1] #Pr(X = j+ k) , j=1,2,...,h-1 idx <-rep((M+2):((M+2)+M-1),M)-rep(0:(M-1),each=M) transition[-1,-1] <- matrix(probs[idx]-probs[idx-1],nrow=M,ncol=M,byrow=TRUE) #print(transition) # I - transition matrix R IminusR <- diag(1,M+1) - transition #Solve might work poorly in some cases res <- try(solve(IminusR)%*%rep(1,M+1),silent=TRUE) # res <- try(qr.solve(IminusR)%*%rep(1,M+1),silent=TRUE) if(inherits(res, "try-error")){ warning("I-R singular\n") return(NA) } ARL <- res[1] #FIRARL - one-sided ARL of the FIR CUSUM with head start 0.5h FIRARL <- res[(M+1)/2+1] return(list(ARL=ARL,FIR.ARL=FIRARL)) } ################################################################# # find smallest common denominator of x and y, # i.e find an integer N so that x=X/N and y=Y/N (with X,Y integer) ################################################################# commonDenom <- function(x,y,digits=1){ x <- round(x,digits) y <- round(y,digits) which.max( ( round((x+y)*1:(10^digits),digits)%%1 == 0 ) # (x+y)*N is integer & ( round(x*1:(10^digits),digits)%%1 == 0 ) # x*N is integer & ( round(y*1:(10^digits),digits)%%1 == 0 ) ) # y*N is integer } ################################################### ### chunk number 2: ################################################### ################################################################# # find reference value k for a Poisson /Binomial CUSUM # designed to detect a change from theta0 to theta1 # # digits - k is rounded to digits decimal places if roundK=TRUE # ... - extra arguments for distribution, # i.e number of trials n for binomial, set to 1 if not specified ################################################################## findK <- function(theta0,theta1,distr=c("poisson","binomial"),roundK=FALSE,digits=1,...){ n <- list(...)$n if(is.null(n)) n <- 1 distr <- match.arg(distr,c("poisson","binomial")) k <- switch(distr, "poisson" = (theta1 - theta0)/(log(theta1)-log(theta0)), "binomial" = -n*(log(1-theta1)-log(1-theta0))/(log(theta1*(1-theta0))-log(theta0*(1-theta1))) ) # for discrete data the # Cusum values are of form integer - integer multiple of k # so there is a limited set of possible values of h (and ARL) if(roundK){ # add/substract 0.05 to k so that k isn't an integer or a multiple of 0.5 # when rounded (then the Markov Chain has more states) if(round(k,digits=digits)%%1 == 0.5 | round(k,digits=digits)%%1 == 0){ round.k <- ((k-floor(k))*10^digits)%%1 #print(roundK) if(round.k < .5 ) k <- k+0.5*10^(-digits) else k <- k-0.5*10^(-digits) } k <- round(k,digits=digits) } return(k) } ################################################### ### chunk number 3: ################################################### ################################################################## # function to find the decision limit h so that the # average run length for a Poisson/Binomial CUSUM with in-control # parameter theta0 is (approx.) ARL0 # # Params: # ARL0 - desired in-control ARL # theta0 - in-control parameter # s - change to detect (in stdev) # rel.tol - (relative) tolerance (if attainable) # roundK - should k be rounded up to digits decimal place (avoiding integers, multiples of 0.5) # digits - h is rounded to digits decimal places # distr - "poisson" or "binomial" # ... - further arguments for distribution (i.e number of trials n for "binomial") # # Returns: # vector c(theta0, h, k, ARL, rel.tol) ################################################################# findH <- function(ARL0,theta0,s=1, rel.tol=0.03,roundK=TRUE,distr=c("poisson","binomial"),digits=1,FIR=FALSE,...){ distr <- match.arg(distr,c("poisson","binomial")) #FIR-ARL or zero-start ARL? fir.arl <- ifelse(FIR,2,1) theta1 <- getTheta1(theta0,s=s,distr=distr) k <- findK(theta0,theta1,roundK=roundK,distr=distr,digits=digits,...) # compute ARL for two (arbitrary) points (h1, h2) h1 <- min(12,4*k) arl1 <- arlCusum(h=h1,k=k,theta=theta0,distr=distr,digits=digits,...)[[fir.arl]] nEval <- 1 #ensure h1 and arl1 are not too small (-> log. interpolation is better) while(arl1 < 100){ h1 <- 2*h1 arl1 <- arlCusum(h=h1,k=k,theta=theta0,distr=distr,digits=digits,...)[[fir.arl]] nEval <- nEval + 1 } h2 <- h1*2^(sign(ARL0-arl1)) arl2 <- arlCusum(h=h2,k=k,theta=theta0,distr=distr,digits=digits,...)[[fir.arl]] nEval <- nEval + 1 # determine h (that leads to an ARL of ARL0) using logarithmic interpolation h.hat <- round(logInterpolation(ARL0,h1,h2,arl1,arl2),digits) # what's the actual ARL for h arl <- arlCusum(h=h.hat,k=k,theta=theta0,distr=distr,digits=digits,...)[[fir.arl]] nEval <- nEval + 1 relTol <- abs((arl-ARL0)/ARL0) #cat("theta0:", theta0,"k:", k,"h:", h.hat,"ARL:",arl,"relTol:", relTol,"\n") i<-0 signs <- sign(ARL0-arl) convergence <- relTol < rel.tol if(convergence){ # print(nEval) return(c("theta0"=theta0,"h"=h.hat,"k"=k,"ARL"=arl,"rel.tol"=relTol)) } # find hLow so that the target ARL0 is in interval c(ARL(hLow), ARL(h.hat)) denrat <- 1/commonDenom(1,k,digits=digits) steps <- denrat #max(0.1,denrat) # cat("denrat",denrat,"steps",steps,"\n") hLow <- round(h.hat+signs*steps,digits) arlLow <- arlCusum(h=hLow,k=k,theta=theta0,distr=distr,digits=digits,...)[[fir.arl]] nEval <- nEval + 1 relTol.Low <- abs((arlLow-ARL0)/ARL0) if(relTol.Low < rel.tol){ # print(nEval) return(c("theta0"=theta0,"h"=hLow,"k"=k,"ARL"=arlLow,"rel.tol"=relTol.Low)) } while(sign(ARL0-arl)*sign(ARL0-arlLow)>0){ # cat("steps:",nEval,"\n") h.hat <- hLow arl <-arlLow relTol <- relTol.Low signs <- sign(ARL0-arl) hLow <- round(h.hat+signs*steps,digits) arlLow <- arlCusum(h=hLow,k=k,theta=theta0,distr=distr,digits=digits,...)[[fir.arl]] nEval <- nEval + 1 relTol.Low <- abs((arlLow-ARL0)/ARL0) if(relTol.Low < rel.tol){ # print(nEval) return(c("theta0"=theta0,"h"=hLow,"k"=k,"ARL"=arlLow,"rel.tol"=relTol.Low)) } # cat("hLow:", hLow,"ARL:",arlLow,"relTol:",relTol.Low,"\n") } # cat("hLow:", hLow,"ARL:",arlLow,"relTol:",relTol.Low,"\n") # return the ARL which is at least the target ARL0 if(sign(ARL0-arlLow)<0){ h.hat <- hLow arl <- arlLow relTol <- relTol.Low } #print(nEval) return(c("theta0"=theta0,"h"=h.hat,"k"=k,"ARL"=arl,"rel.tol"=relTol)) } ################################################################## # find h for various values theta0 # # Params: # theta0 - vector of in control parameter # ARL0 - desired in-control ARL # # Returns: # matrix with columns c(theta0, h, k, ARL, rel.Tol) ################################################################## hValues <- function(theta0,ARL0,rel.tol=0.02,s=1,roundK=TRUE,digits=1,distr=c("poisson","binomial"),FIR=FALSE,...){ distr <- match.arg(distr,c("poisson","binomial")) n <- list(...)$n hVals <- t(sapply(theta0,findH,ARL0=ARL0,rel.tol=rel.tol,s=s,roundK=roundK,digits=digits,distr=distr,FIR=FIR,...)) res <- list(hValues=hVals,ARL0=ARL0,s=s,rel.tol=rel.tol,distribution=distr,firARL=FIR) res$n <- n return(res) } ################################################################## # get the decision limit h for CUSUM with # in-control parameter theta using a "table" of h values # # theta - in-control parameter # hValues - matrix with columns c(theta, h) ################################################################## getH <- function(theta,hValues){ one<- function(theta){ theta.diff <- abs(hValues[,1]-theta) idx <- which.min(theta.diff) h <- hValues[idx,2] if(theta.diff[idx] > 0.05) warning("table doesn't contain h value for theta = ",theta,"\n") return(h) } sapply(theta,one) } ##################################################################### # get decision interval h and reference value k ##################################################################### getHK <- function(theta,hValues){ one<- function(theta){ theta.diff <- abs(hValues[,1]-theta) idx <- which.min(theta.diff) hk <- hValues[idx,2:3] if(theta.diff[idx] > 0.05) warning("table doesn't contain h value for theta = ",theta,"\n") return(hk) } t(sapply(theta,one)) } ################################################################# # get out-of-control parameter theta1 # # X ~ Po(lambda0): theta1 = lambda0 + s*sqrt(lambda0) # theta1 corresponds to a s*stdev increase in mean # # X ~Bin(n,pi) # H0: Odds of failure =pi/(1-pi) vs H1: Odds = s*pi/(1-pi) # prob of failure under H1 is then pi1 = s*pi0/(1+(s-1)*pi0) ################################################################# getTheta1 <- function(theta0,s=1,distr=c("poisson","binomial")){ distr <- match.arg(distr,c("poisson","binomial")) theta1 <- switch(distr, "poisson" = theta0 + s*sqrt(theta0), "binomial" = s*theta0/(1-theta0+s*theta0) ) return(theta1) } ################################################################# # logarithmic interpolation, i.e. linear interpolation of ln(f(x)) # in points (x0,ln(f0)), (x1,ln(f1)) # # (ln(f)-ln(f0))/(ln(f1)-ln(f0)) = (x-x0)/(x1-x0) # # returns: x # # to find decision limit h for given ARL0 set x = h, f(h) = ARL0(h,k) # and solve equation for x ################################################################# logInterpolation <- function(f,x0,x1,f0,f1){ x0 + ((x1-x0)*(log(f)-log(f0)))/(log(f1)-log(f0)) } ################################################### ### chunk number 4: ################################################### # control - list with # range - vector of indices in the observed matrix to monitor # theta0t - matrix with in-control parameter, needs to be specified # ARL0 - desired average run length for each one of the univariate CUSUMs # s - change to detect # hValues - matrix with decision intervals for theta0_t # reset - if TRUE, the CUSUM is reset to zero after an alarm # nt - time varying sample sizes (for Binomial), # matrix of same dimension as theta0t algo.rogerson <- function(disProgObj, control=list(range=range, theta0t=NULL, ARL0=NULL, s=NULL, hValues=NULL, distribution=c("poisson","binomial"), nt=NULL, FIR=FALSE,limit=NULL, digits=1)){ if (is.null(control$s)) { stop("Error: the s value is not specified") } if (is.null(control$hValues)) { stop("Error: the hValues are not specified") } # if (is.null(control$ARL0)) { stop("Error: no ARL0 value specified") } #Default value is poisson control$distribution <- match.arg(control$distribution,c("poisson","binomial")) if(is.null(control$FIR)){ control$FIR <- FALSE } if(is.null(control$limit)) control$limit <- -1 if(is.null(control$digits)) control$digits <- 1 x <- as.matrix(disProgObj$observed[control$range,]) if (is.null(control$theta0t)) { stop("Error: no theta0t vector specified") } else { theta0t <- as.matrix(control$theta0t) } #theta0 <- colMeans(theta0t) #size = length of process size <- nrow(x) nAreas <- ncol(theta0t) theta0 <- rep(mean(theta0t),nAreas) #check dimensions of x, theta0t if(size !=nrow(theta0t) | (ncol(x)%%nAreas)!=0) stop("wrong dimensions\n") reps <- ncol(x)/nAreas #time-varying size n for Binomial nt<-control$nt if(control$distribution=="binomial"){ if(is.null(nt)) nt <- matrix(rep(control$n,size),ncol=1) else nt<-as.matrix(nt) } theta1 <- getTheta1(theta0,s=control$s,distr=control$distribution) theta1t <- getTheta1(theta0t,s=control$s,distr=control$distribution) hk <- getHK(theta0,hValues=control$hValues) k <- hk[,"k"] h <- hk[,"h"] #cat("k =",k,"h =",h,"\n") if(control$FIR){ control$limit <- 0.5 fir <- h/2 } else { fir <- 0 } #cat("fir",fir,"\n") # initialize the necessary vectors # start with cusum[1] = 0 cusum <- matrix(0,nrow=(size+1), ncol=nAreas*reps) cusum[1,] <- fir alarm <- matrix(data = 0, nrow = (size+1), ncol = nAreas*reps) upperbound <- matrix(0,nrow=(size+1),ncol=reps) #CUSUM as in Rogerson (2004) for(t in 1:size){ #choose k_t based upon theta_0t and theta_1t hkt <- getHK(theta0t[t,],hValues=control$hValues) #kt <- hkt[,"k"] kt <- findK(theta0t[t,],theta1t[t,],distr=control$distribution,roundK=TRUE, digits=control$digits, n=nt[t,]) # #for given k_t (theta0t) and ARL_0 choose h_t #ht <- getH(lambda0t[t],control$hValues) ht <- hkt[,"h"] ct <- h/ht # compute cumulative sums of observations x corrected with the # reference value kt, scaled by factor ct # cusum[t+1,]<- pmax(0, cusum[t,] + ct*(x[t,]-kt)) # reset CUSUM to zero if an alarm is given at time t if((control$limit >= 0) & any(alarm[t,]==1)){ cusum.t <- cusum[t,] cusum.t[alarm[t,]==1] <- pmin(cusum[t,], control$limit*h)[alarm[t,]==1] cusum[t+1,]<- pmax(0, cusum.t + ct*(x[t,]-kt)) } else { cusum[t+1,]<- pmax(0, cusum[t,] + ct*(x[t,]-kt)) } # give alarm if the cusum is larger than h alarm[t+1,] <- cusum[t+1,] >= h # in case speed is premium then one might want to comment this line if((control$limit >= 0) & any(alarm[t,]==1)) { upperbound[t+1,] <- ceiling( (h-cusum.t)/ct + kt) } else { upperbound[t+1,] <- ceiling( (h-cusum[t,])/ct + kt) } #Ensure upperbound is positive (this should always be the case) if (upperbound[t+1,] < 0) { upperbound[t+1,] <- 0} } # discard cusum[1] and alarm[1] cusum <- as.matrix(cusum[-1,]) alarm <- as.matrix(alarm[-1,]) upperbound <- as.matrix(upperbound[-1,]) #Add name and data name to control object. control$name <- paste("CUSUM Rogerson:",control$distribution) control$data <- paste(deparse(substitute(disProgObj))) # return alarm and upperbound vectors result <- list(alarm = alarm, upperbound = upperbound, disProgObj=disProgObj,control=c(control,list(h=h))) class(result) = "survRes" # for surveillance system result return(result) } surveillance/R/earsC.R0000644000175100001440000001422312164275142014353 0ustar hornikusers# \|||/ # (o o) # ,~~~ooO~~(_)~~~~~~~~~, # | EARS | # | surveillance | # | methods | # | C1, C2 and C3 | # '~~~~~~~~~~~~~~ooO~~~' # |__|__| # || || # ooO Ooo ###################################################################### # Implementation of the EARS surveillance methods. ###################################################################### # DESCRIPTION ###################################################################### # Given a time series of disease counts per month/week/day # this function determines whether there was an outbreak at given time points: # it deduces for each time point an expected value from past values, # it defines an upperbound based on this value and on the variability # of past values # and then it compares the observed value with the upperbound. # If the observed value is greater than the upperbound # then an alert is flagged. # Three methods are implemented. # They do not use the same amount of past data # and are expected to have different specificity and sensibility # from C1 to C3 # the amount of past data used increases, # so does the sensibility # but the specificity decreases. ###################################################################### # PARAMETERS ###################################################################### # range : range of timepoints over which the function will look for # outbreaks. # method : which of the three EARS methods C1, C2 and C3 should be used. # ###################################################################### # INPUT ###################################################################### # A R object of class sts ###################################################################### # OUTPUT ###################################################################### # The same R object of class sts with slot alarm and upperbound filled # by the function ###################################################################### earsC <- function(sts, control = list(range = NULL, method = "C1", alpha = 0.001)) { ###################################################################### #Handle I/O ###################################################################### #If list elements are empty fill them! # Method if (is.null(control[["method",exact=TRUE]])) { control$method <- "C1" } # Extracting the method method <- match.arg( control$method, c("C1","C2","C3"),several.ok=FALSE) # Range # By default it will take all possible weeks # which is not the same depending on the method if (is.null(control[["range",exact=TRUE]])) { if (method == "C1"){ control$range <- c(8:dim(sts@observed)[1]) } if (method == "C2"){ control$range <- c(10:dim(sts@observed)[1]) } if (method == "C3"){ control$range <- c(12:dim(sts@observed)[1]) } } # zAlpha if (is.null(control[["alpha",exact=TRUE]])) { # C1 and C2: Risk of 1st type error of 10-3 # This corresponds to an Z(1-zAlpha) of about 3 if (method %in% c("C1","C2")) { control$alpha = 0.001 } # C3: Risk of 1st type error of 0.025 # This corresponds to an Z(1-zAlpha) of about 2 if (method=="C3") { control$alpha = 0.025 } } # Calculating the threshold zAlpha zAlpha <- qnorm((1-control$alpha)) #Deduce necessary amount of data from method maxLag <- switch(method, C1=7, C2=9, C3=11) # Order range in case it was not given in the right order control$range = sort (control$range) ###################################################################### #Loop over all columns in the sts object #Call the right EARS function depending on the method chosen (1, 2 or 3) ##################################################################### for (j in 1:ncol(sts)) { # check if the vector observed includes all necessary data: maxLag values. if((control$range[1] - maxLag) < 1) { stop("The vector of observed is too short!") } ###################################################################### # Method C1 or C2 ###################################################################### if (method %in% c("C1","C2")) { # Create a matrix with time-lagged vectors refVals <- NULL for (lag in maxLag:(maxLag-6)) { refVals <- cbind(refVals, observed(sts)[(control$range-lag),j]) } # calculate the upperbound sts@upperbound[control$range,j] <- apply(refVals,1,mean)+ zAlpha*apply(refVals,1,sd) } if (method=="C3") { # Create a matrix with time-lagged vectors refVals <- NULL rangeC2 = ((min(control$range) - 2) : max(control$range)) for (lag in 9:3) { refVals <- cbind(refVals, observed(sts)[(rangeC2-lag),j]) } # Calculate C2 C2 <- (observed(sts)[rangeC2,j] - apply(refVals,1,mean)) / apply(refVals,1,sd) # Calculate the upperbound # first calculate the parts of the formula with the maximum of C2 and 0 for # two time lags. partUpperboundLag2 = pmax(rep(0,length=length(C2)-2),C2[1:(length(C2)-2)]-1) partUpperboundLag1 = pmax(rep(0,length=length(C2)-2),C2[2:(length(C2)-1)]-1) sts@upperbound[control$range,j] <- observed(sts)[control$range,j] + apply(as.matrix(refVals[3:length(C2),]),1,sd)*(zAlpha - (partUpperboundLag2 + partUpperboundLag1)) # Upperbound must be superior to 0 which is not always the case #with this formula sts@upperbound[control$range,j] = pmax(rep(0,length(control$range)),sts@upperbound[control$range,j]) } # end of loop over j } #end of loop over cols in sts #Make sts return object control$name <- paste("EARS_",method,sep="") control$data <- paste(deparse(substitute(sts))) sts@control <- control #Where are the alarms? sts@alarm[control$range,] <- matrix(observed(sts)[control$range,]>upperbound(sts)[control$range,] ) #Done return(sts[control$range,]) } surveillance/R/gpc.poly-methods.R0000644000175100001440000000401312237174420016504 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Methods for gpc.poly polygons ### These are no longer used by the surveillance package itself ### ### Copyright (C) 2009-2013 Sebastian Meyer ### $Revision: 666 $ ### $Date: 2013-11-08 15:45:36 +0100 (Fre, 08 Nov 2013) $ ################################################################################ ### Redefinition of gpclib's scale.poly method to also do centering scale.gpc.poly <- function (x, center = c(0,0), scale = c(1,1)) { x@pts <- lapply(x@pts, function (p) { p$x <- (p$x-center[1]) / scale[1] p$y <- (p$y-center[2]) / scale[2] p }) x } ### Same as inside.owin for gpc.poly (using point.in.polygon from package sp) inside.gpc.poly <- function(x, y = NULL, polyregion, mode.checked = FALSE) { xy <- xy.coords(x, y, recycle=FALSE) N <- length(xy$x) # check for each polygon of polyregion if points are in the polygon locations <- sapply(polyregion@pts, function (poly) { pip <- point.in.polygon(xy$x, xy$y, poly$x, poly$y, mode.checked = mode.checked) if (poly$hole) { # if point is inside a hole then attribute -Inf ifelse(pip == 1, -Inf, 0) } else pip }) if (N == 1) sum(locations) > 0 else .rowSums(locations, N, length(polyregion@pts)) > 0 } ### Maximum extent of a gpc.poly (i.e. maximum distance of two vertices) diameter.gpc.poly <- function (object) { pts <- object@pts x <- unlist(lapply(pts, "[[", "x"), use.names=FALSE) y <- unlist(lapply(pts, "[[", "y"), use.names=FALSE) ## The diagonal of the bounding box provides a fast upper bound ##ext <- sqrt(diff(range(x))^2 + diff(range(y))^2) xy <- cbind(x,y) dists <- dist(xy) max(dists) } surveillance/R/options.R0000644000175100001440000001052612375650445015022 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Description: Set up surveillance.options. ### The code below is inspired by the options management of the ### spatstat package authored by Adrian Baddeley and Rolf Turner, which is ### available under GPL-2 from http://CRAN.R-project.org/package=spatstat ### ### Copyright (C) 2012 Sebastian Meyer ### $Revision: 960 $ ### $Date: 2014-08-22 16:18:13 +0200 (Fre, 22. Aug 2014) $ ################################################################################ .Options <- new.env() ## Specify options .Options$gpclib <- list( default = FALSE, # no gpclib due to license restrictions check = function(x) { if (!is.logical(x) || length(x) != 1L) return(FALSE) if (x && !requireNamespace("gpclib")) { warning("cannot set gpclib=TRUE") return(FALSE) } TRUE }, valid = "a single logical value" ) .Options$allExamples <- list( default = TRUE, # maybe disabled by .onAttach() check = function(x) is.logical(x) && length(x) == 1L, valid = "a single logical value" ) #Tick sizes of sts xaxis relative to par()$tcl .Options$stsTickFactors <- list( default = c("%d"=0.33,"%W"=0.33,"%V"=0.33,"%m"=1,"%Q"=1.25,"%Y"=1.5,"%G"=1.5), check = function(x) is.vector(x, mode="numeric") && !is.null(names(x)), valid = "a named vector of relative tick sizes" ) #Colors for the prediction intervals in nowcast plots .Options$colors <- list( default = c(nowSymbol="springgreen4",piBars="orange"), check = function(x) is.character(x), valid = "a vector of color names" ) ## Function to activate the defaults reset.surveillance.options <- function () { opts <- sapply(ls(.Options, all.names=TRUE), function (option) { .Options[[option]]$value <- .Options[[option]]$default }, simplify=FALSE, USE.NAMES=TRUE) invisible(opts) } ## Internal function to query options get.surveillance.options <- function (x, drop = TRUE) { opts <- lapply(.Options, "[[", "value") if (drop && !missing(x) && length(x) == 1L) opts[[x]] else opts[x] } ## Exported function to modify and query options surveillance.options <- function (...) { knownOptions <- ls(.Options, all.names=TRUE) called <- list(...) if (length(called) == 0) return(get.surveillance.options()) if (is.null(names(called)) && length(called)==1) { x <- called[[1]] if (is.null(x)) return(get.surveillance.options()) if (is.list(x)) called <- x } if (is.null(names(called))) # case: surveillance.options("par1","par2",...) { ischar <- unlist(lapply(called, is.character)) if(all(ischar)) { choices <- unlist(called) ok <- choices %in% knownOptions if(!all(ok)) stop("unrecognised option(s): ", called[!ok]) return(get.surveillance.options(choices)) } else { wrong <- called[!ischar] offending <- unlist(lapply(wrong, deparse, nlines=1, control="delayPromises")) offending <- paste(offending, collapse=",") stop("unrecognised mode of argument(s) [", offending, "]:", "\n should be character string or name=value pair") } } else { # case: surveillance.options(name=value, name2=value2, ...) assignto <- names(called) if (!all(nzchar(assignto))) stop("options must all be identified by name=value") recog <- assignto %in% knownOptions if(!all(recog)) stop("unrecognised option(s): ", assignto[!recog]) ## validate and assign new values oldopts <- get.surveillance.options(assignto, drop=FALSE) for(i in seq_along(assignto)) { nama <- assignto[i] valo <- called[[i]] entry <- .Options[[nama]] if (!entry$check(valo)) stop("option ", dQuote(nama), " should be ", entry$valid) .Options[[nama]]$value <- valo } ## done invisible(oldopts) } } surveillance/R/plot_multi.R0000644000175100001440000004762611770111463015520 0ustar hornikusers################################################### ### chunk number 1: ################################################### create.disProg <- function(week, observed, state, start=c(2001,1), freq=52, neighbourhood=NULL, populationFrac=NULL,epochAsDate=FALSE){ namesObs <-colnames(observed) # check whether observed contains only numbers if(!all(sapply(observed, is.numeric))){ stop("\'observed\' must be a matrix with numbers\n") } #univariate timeseries ? if(is.vector(observed)){ observed <- matrix(observed,ncol=1) namesObs <- deparse(quote(observed)) } else { # ensure we have a matrix observed <- as.matrix(observed) } if(missing(state)){ state <- 0*observed } else if(is.vector(state)){ state <- matrix(state,ncol=1) } else { state <- as.matrix(state) } #check number of columns of observed and state nAreas <- ncol(observed) nObs <- nrow(observed) if(ncol(observed) != ncol(state)){ #if there is only one state-vector for more than one area, repeat it if(ncol(state)==1) { state <- matrix(rep(state,nAreas),ncol=nAreas,byrow=FALSE) } else { cat('wrong dimensions of observed and state \n') return(NULL) } } #check neighbourhood matrix # neighbourhood can be a matrix or an array of dimension c(nAreas,nAreas, nrow(observed)) if(!is.null(neighbourhood) ) { dimNhood <- dim(neighbourhood) if(length(dimNhood)==2 & any(dimNhood != nAreas)) { cat('wrong dimensions of neighbourhood matrix \n') return(NULL) } else if (length(dimNhood)==3 & (any(dimNhood[1:2] != nAreas) | (dimNhood[3] != nrow(observed)) )){ cat('wrong dimensions of neighbourhood matrix \n') return(NULL) } } else { # no neighbourhood specified neighbourhood <- matrix(NA,nrow=nAreas,ncol=nAreas) } if(is.null(populationFrac)) { populationFrac <- matrix(1/ncol(observed),nrow=nObs, ncol=ncol(observed)) } else { # make sure populationFrac is a matrix populationFrac <- as.matrix(populationFrac) # check dimensions if(nrow(populationFrac)!= nObs | ncol(populationFrac)!= nAreas) stop("dimensions of \'populationFrac\' and \'observed\' do not match\n") # check whether populationFrac contains only numbers if(!all(sapply(populationFrac, is.numeric))){ stop("\'populationFrac\' must be a matrix with real numbers\n") } } #labels for observed and state if(is.null(namesObs)){ namesObs <- paste(deparse(quote(observed)),1:nAreas,sep="") } colnames(observed) <- namesObs colnames(state) <- namesObs res <- list("week"=week, "observed"=observed, "state"=state, "start"=start, "freq"=freq, "neighbourhood"=neighbourhood, "populationFrac"=populationFrac,"epochAsDate"=epochAsDate) class(res) <- "disProg" return(res) } print.disProg <- function(x, ...) { cat( "-- An object of class disProg -- \n" ) cat( "freq:\t\t", x$freq,"\n" ) cat( "start:\t\t", x$start,"\n" ) cat( "dim(observed):\t", dim(x$observed), "\n\n") n <- 1 cat("Head of observed:\n") print(head(x$observed,n)) #cat("\nhead of neighbourhood:\n") #print( head(x$neighbourhood,n)) } ################################################### ### chunk number 2: ################################################### sumNeighbours <- function(disProgObj){ observed <- disProgObj$observed neighbours <- matrix(nrow=nrow(observed),ncol=ncol(observed)) for(i in 1:ncol(observed)){ #only one neighbour if(sum(disProgObj$neighbourhood[,i])==1) neighbours[,i] <- observed[,disProgObj$neighbourhood[,i]==1] #more than one neighbour else neighbours[,i] <- apply(observed[,disProgObj$neighbourhood[,i]==1], MARGIN=1, sum) } return(neighbours) } ################################################### ### chunk number 3: ################################################### aggregate.disProg <- function(x,...){ #aggregate observed counts observed <- apply(x$observed,MARGIN=1,sum) #aggregate states state <- apply(x$state,MARGIN=1,sum) state[state > 1] <- 1 #create univariate disProg object x <- create.disProg(week=x$week, observed=observed, state=state, freq=x$freq,start=x$start) return(x) } ################################################### ### chunk number 4: ################################################### plot.disProg.one <- function(x, title = "", xaxis.years=TRUE, quarters=TRUE, startyear = x$start[1], firstweek = x$start[2], ylim=NULL, xlab="time", ylab="No. infected",type="hh",lty=c(1,1),col=c(1,1), outbreak.symbol = list(pch=3, col=3),legend.opts=list(x="top", legend=c("Infected", "Outbreak"),lty=NULL,pch=NULL,col=NULL),...) { observed <- x$observed state <- x$state # width of the column tab <- 0.5 # left/right help for constructing the columns observedxl <- (1:length(observed))-tab observedxr <- (1:length(observed))+tab # control where the highest value is max <- max(observed) #if ylim is not specified if(is.null(ylim)){ ylim <- c(-1/20*max, max) } #Plot the results using one Large plot call matplot(x=cbind(observedxl, observedxr),y=cbind(observed, observed),xlab=xlab,ylab=ylab, type=type,lty=lty, col=col, ylim=ylim,axes = !(xaxis.years),...) #Show the outbreaks if (!is.null(outbreak.symbol)) { for(i in 1:length(observed)){ matlines( c(i-tab, i+tab), c(observed[i],observed[i]) ) if(state[i] == 1) matpoints( i, ylim[1], pch=outbreak.symbol$pch, col=outbreak.symbol$col) } } title(title) cex <- par()$cex.axis #Label of x-axis if(xaxis.years){ # get the number of quarters lying in range for getting the year and quarter order obsPerYear <- x$freq obsPerQuarter <- x$freq/4 myat.week <- seq(ceiling((obsPerYear-firstweek+1)/obsPerQuarter) * obsPerQuarter + 1, length(observed)+(floor((obsPerYear-firstweek + 1)/obsPerQuarter) * obsPerQuarter +1), by=obsPerQuarter) # get the right year order year <- (myat.week - obsPerYear) %/% obsPerYear + startyear # function to define the quarter order quarterFunc <- function(i) { switch(i+1,"I","II","III","IV")} # get the right number and order of quarter labels quarter <- sapply( (myat.week-1) %/% obsPerQuarter %% 4, quarterFunc) # get the positions for the axis labels myat.week <- myat.week - (obsPerYear - firstweek + 1) # construct the computed axis labels if (quarters) { if (cex == 1) { mylabels.week <- paste(year,"\n\n",quarter,sep="") } else { mylabels.week <- paste(year,"\n",quarter,sep="") } } else { mylabels.week <- paste(year,sep="") } axis( at=myat.week , labels=mylabels.week , side=1, line = 1 ) axis( side=2 ) } #should there be a legend? if(!is.null(legend.opts) && (class(legend.opts) == "list")) { #Fill empty (mandatory) slots in legend.opts list if (is.null(legend.opts$lty)) legend.opts$lty = c(lty[1],NA) if (is.null(legend.opts$col)) legend.opts$col = c(col[1],outbreak.symbol$col) if (is.null(legend.opts$pch)) legend.opts$pch = c(NA,outbreak.symbol$pch) if (is.null(legend.opts$x)) legend.opts$x = "top" if (is.null(legend.opts$legend)) legend.opts$legend = c("Infected", "Outbreak") #Create the legend do.call("legend",legend.opts) } invisible() } plot.disProg <- function(x, title = "", xaxis.years=TRUE, startyear = x$start[1], firstweek = x$start[2], as.one=TRUE, same.scale=TRUE, ...){ observed <- x$observed state <- x$state #univariate timeseries ? if(is.vector(observed)) observed <- matrix(observed,ncol=1) if(is.vector(state)) state <- matrix(state,ncol=1) nAreas <- ncol(observed) max <- max(observed) #check if x is multivariate or univariate #multivariate time series if(nAreas > 1){ #all areas in one plot -- not supported in sts if(as.one){ matplot(observed,type="l",lty=1:nAreas,col=1:nAreas,ylim=c(0, 1.1*max),xlab="time",ylab="No. of Infected", axes=!xaxis.years) #If no legend.opts is specified or not set to null if ((is.na(pmatch("legend.opts",names(list(...))))) | (!is.na(pmatch("legend.opts",names(list(...)))) & (!is.null(list(...)$legend.opts)))) { legend.opts <- list(...)$legend.opts if (is.null(legend.opts$x)) legend.opts$x = "topleft" if (is.null(legend.opts$legend)) legend.opts$legend = colnames(observed) if (is.null(legend.opts$col)) legend.opts$col = 1:nAreas if (is.null(legend.opts$lty)) legend.opts$lty = 1:nAreas if (is.null(legend.opts$ncol)) legend.opts$ncol = 5 if (is.null(legend.opts$bty)) legend.opts$bty = "n" do.call("legend",legend.opts) } title(title) if(xaxis.years){ #todo: move this as output of ONE function # get the number of quarters lying in range for getting the year and quarter order myat.week <- seq(ceiling((52-firstweek+1)/13) * 13 + 1, length(observed)+(floor((52-firstweek + 1)/13) * 13 +1), by=13) # get the right year order year <- (myat.week - 52) %/% 52 + startyear # function to define the quarter order quarterFunc <- function(i) { switch(i+1,"I","II","III","IV")} # get the right number and order of quarter labels quarter <- sapply( (myat.week-1) %/% 13 %% 4, quarterFunc) # get the positions for the axis labels myat.week <- myat.week - (52 - firstweek + 1) # construct the computed axis labels cex <- par()$cex.axis if (cex == 1) { mylabels.week <- paste(year,"\n\n",quarter,sep="") } else { mylabels.week <- paste(year,"\n",quarter,sep="") } axis( at=myat.week , labels=mylabels.week , side=1, line = 1 ) axis( side=2 ) } } else { #plot each area #set window size par(mfrow=magic.dim(nAreas),mar=c(2,1,1,1)) if(same.scale) ylim <- c(-1/20*max, max) else ylim <- NULL #plot areas k <- 1:nAreas sapply(k, function(k) { plot.disProg.one(create.disProg(x$week, observed[,k], state[,k], freq=x$freq,start=x$start), title = "", startyear = startyear, firstweek = firstweek, xaxis.years=xaxis.years, ylim=ylim, legend.opts=NULL, ... ) mtext(colnames(observed)[k],line=-1.3) }) #reset graphical params par(mfrow=c(1,1), mar=c(5, 4, 4, 2)+0.1) } } else { #univariate time series plot.disProg.one(x=x, title = title, startyear = startyear, firstweek = firstweek, xaxis.years=xaxis.years, ...) } invisible() } ################################################### ### chunk number 5: ################################################### plot.survRes.one <- function(x, method=x$control$name, disease=x$control$data, domany=FALSE,ylim=NULL,xaxis.years=TRUE,startyear = 2001, firstweek = 1, xlab="time", ylab="No. infected", main=NULL, type="hhs",lty=c(1,1,2),col=c(1,1,4), outbreak.symbol = list(pch=3, col=3),alarm.symbol=list(pch=24, col=2),legend.opts=list(x="top",legend=c("Infected", "Upperbound", "Alarm", "Outbreak"),lty=NULL,col=NULL,pch=NULL), ...) { ################## Handle the NULL arguments ######################################################## if (is.null(main)) main = paste("Analysis of ", as.character(disease), " using ", as.character(method),sep="") #No titles are drawn when more than one is plotted. if (domany) main = "" survResObj <- x observed <- survResObj$disProgObj$observed[survResObj$control$range] state <- survResObj$disProgObj$state[survResObj$control$range] #print(list(...)) # width of the column tab <- 0.5 # left/right help for constructing the columns observedxl <- (1:length(observed))-tab observedxr <- (1:length(observed))+tab upperboundx <- (1:length(survResObj$upperbound)) #-0.5 # control where the highest value is max <- max(max(observed),max(survResObj$upperbound)) #if ylim is not specified #if(is.null(ylim)){ # ylim <- c(-1/20*max, max) #} #~~~~~~~~~~~~~~~~~~~~~~~~~~ if (is.null(ylim)) { max <- max(max(observed), max(survResObj$upperbound)) ylim <- c(-1/20 * max, max) } else { max <- ylim[2] } #ensure that there is enough space for the alarm/outbreak symbols if(ylim[1]>=0) ylim[1] <- -1/20*max #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #Generate the matrices to plot xstuff <- cbind(observedxl, observedxr, upperboundx) #no adjusting + min(x$control$range) - 1 ystuff <- cbind(observed, observed, survResObj$upperbound) #Plot the results using one Large plot call (we do this by modifying #the call). matplot(x=xstuff,y=ystuff,xlab=xlab,ylab=ylab,main=main,ylim=ylim,axes = !(xaxis.years),type=type,lty=lty,col=col,...) if (!is.null(survResObj$aggr)) { points(upperboundx+tab,survResObj$aggr,col=1) } for(i in 1:length(observed)){ matlines( c(i-tab, i+tab), c(observed[i],observed[i]),col=col[1]) if(survResObj$alarm[i] == 1) matpoints( i, -1/40*max, pch=alarm.symbol$pch, col=alarm.symbol$col) if(state[i] == 1) matpoints( i, -1/20*max, pch=outbreak.symbol$pch, col=outbreak.symbol$col) } # check where to place the legend. If the left upper side is free place it there if (max * 2/3 >= max( max(observed[1:floor(1/4 * length(observed))]), max(survResObj$upperbound[1:floor(1/4 * length(survResObj$upperbound))]) )) { xlegpos <- 0 } #Label of x-axis if(xaxis.years){ # get the number of quarters lying in range for getting the year and quarter order myat.week <- seq(ceiling((52-firstweek+1)/13) * 13 + 1, length(observed)+(floor((52-firstweek + 1)/13) * 13 +1), by=13) # get the right year order year <- (myat.week - 52) %/% 52 + startyear # function to define the quarter order quarterFunc <- function(i) { switch(i+1,"I","II","III","IV")} # get the right number and order of quarter labels quarter <- sapply( (myat.week-1) %/% 13 %% 4, quarterFunc) # get the positions for the axis labels myat.week <- myat.week - (52 - firstweek + 1) # construct the computed axis labels #cex <- par()$cex.axis #if (cex == 1) { mylabels.week <- paste(year,"\n\n",quarter,sep="") #} else { # mylabels.week <- paste(year,"\n",quarter,sep="") #} axis( at=myat.week , labels=mylabels.week , side=1, line = 1 ) axis( side=2 ) } if(!is.null(legend.opts) && (class(legend.opts) == "list")) { #Fill empty (mandatory) slots in legend.opts list if (is.null(legend.opts$lty)) legend.opts$lty = c(lty[1],lty[3],NA,NA) if (is.null(legend.opts$col)) legend.opts$col = c(col[1],col[3],alarm.symbol$col,outbreak.symbol$col) if (is.null(legend.opts$pch)) legend.opts$pch = c(NA,NA,alarm.symbol$pch,outbreak.symbol$pch) if (is.null(legend.opts$x)) legend.opts$x = "top" if (is.null(legend.opts$legend)) legend.opts$legend = c("Infected", "Upperbound", "Alarm", "Outbreak") do.call("legend",legend.opts) } invisible() } #the main function -- cant we do better than this? plot.survRes <- function(x, method=x$control$name, disease=x$control$data, xaxis.years=TRUE,startyear = 2001, firstweek = 1, same.scale=TRUE,...) { observed <- x$disProgObj$observed state <- x$disProgObj$state alarm <- x$alarm #univariate timeseries ? if(is.vector(observed)) observed <- matrix(observed,ncol=1) if(is.vector(state)) state <- matrix(state,ncol=1) if(is.vector(alarm)) alarm <- matrix(alarm,ncol=1) nAreas <- ncol(observed) max <- max(max(observed),max(x$upperbound)) #multivariate time series if(nAreas > 1){ #all areas in one plot #set window size par(mfrow=magic.dim(nAreas),mar=c(2,1,1,1)) if(same.scale) { ylim <- c(-1/20*max, max) } else { ylim <- NULL } #plot areas k <- 1:nAreas sapply(k, function(k) { #Create the survRes dP <- create.disProg(x$disProgObj$week, observed[,k], state[,k],start=x$start) obj <- list(alarm=alarm[,k],disProgObj=dP,control=x$control,upperbound=x$upperbound[,k]) class(obj) <- "survRes" plot.survRes.one(obj,startyear = startyear, firstweek = firstweek, xaxis.years=xaxis.years, ylim=ylim, legend.opts=NULL,domany=TRUE,... ) mtext(colnames(observed)[k],line=-1.3) }) #reset graphical params par(mfrow=c(1,1), mar=c(5, 4, 4, 2)+0.1) } else { #univariate time series plot.survRes.one(x=x, startyear = startyear, firstweek = firstweek, xaxis.years=xaxis.years, domany=FALSE,...) } invisible() } ################################################### ### chunk number 6: ################################################### magic.dim <- function(k){ if(k==1) return(c(1,1)) #factorize k factors <- primeFactors(k) #find the best factorization of k into two factors res <- bestCombination(factors) #if k is a prime or the difference between the two factors of k is too large #rather use the roots of the next square number greater than k #up is root of the smallest square number >= k up <- ceiling(sqrt(k)) #low is root of the biggest square number < k low <- up -1 if(diff(res) >5){ # e.g. k=11 is a prime, the next square number is 16 so up=4 and low=3 # low^2 = 9 < 11 is naturally too small, up^2=16 > 11 so c(4,4) is a solution # but low*up = 3*4 = 12 > 11 is also adequate and a better solution if((k - low^2) < up) res <- c(low,up) else res <- c(up,up) } return(sort(res)) } ################################################### ### chunk number 7: ################################################### primeFactors <- function(x){ if(x==1) return(1) factors<- numeric(0) i<-1 #start with i=2 and divide x by i (as often as possible) then try division by i+1 #until all factors are found, i.e. x=1 while(i < x){ i <- i+1 while((x %% i)==0){ # each time a new factor i is found, save it and proceed with x = x/i # e.g. k=20: 2 is a factor of x=20, continue with x = 10 = 20/2 # 2 is a factor of x=10, continue with x = 5 = 10/2 # 3 and 4 are no factors of x = 5 # 5 is a factor of x = 5, continue with x = 1 # result: 20 = c(2, 2, 5) factors <- c(factors, i) x <- x/i } } return(factors) } ################################################### ### chunk number 8: ################################################### ###################################################################### # Given a prime number factorization of a number, e.g. 36 # yields x=c(2,2,3,3) # and parition x into two groups, such that the product of the numbers # in group one is as similar as possible to the product # of the numbers of group two. This is useful in magic.dim # # Params: # x - the prime number factorization # # Returns: # c(prod(set1),prod(set2)) ###################################################################### bestCombination <- function(x) { #Compute the power set of 0:1^length(x), i.e. a binary indicator for #variable stating whether to include it in set 1 or not. combos <- as.matrix(expand.grid(rep(list(0:1),length(x)))) mode(combos) <- "logical" #Small helper function, given a vector of length(x) stating whether #to include an element in set1 or not, compute the product #of set1 and set2=x\backslash set1 #set1: all those for which include is TRUE, set2: all those for which #include is FALSE setsize <- function(include) { c(prod(x[include]),prod(x[!include])) } #Compute the product of set1 and set2 for each possible combination sizes <- apply(combos,MARGIN=1,FUN=setsize) #Calculate the combination, where x is as close to y as possible bestConfig <- combos[which.min(abs(diff(sizes))),] #Return this setsize of this configuration return(setsize(bestConfig)) } surveillance/R/twinstim_step.R0000644000175100001440000001431012321067757016232 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Functions and methods to make step() work for twinstim objects ### (restricted to one component at a time) ### ### Copyright (C) 2013 Sebastian Meyer ### $Revision: 645 $ ### $Date: 2013-09-08 15:17:42 +0200 (Son, 08 Sep 2013) $ ################################################################################ ### To make step() work, we are dealing with modified twinstim objects: ### object$formula is replaced by the result of terms(object), which selects only ### one of the two components! The original full formula specification is ### retained in the new "formulae" component. ### We let this special class inherit from "twinstim" such that, e.g., ### extractAIC.twinstim is used for its objects. However, this is tricky since ### the classes are actually incompatible in the formula specification. Only ### methods which don't use the $formula part work, but this constraint holds ### for what is needed to run step(), if we define some additional specific ### methods for this class. twinstim_stependemic <- twinstim_stepepidemic <- function (object) { stepClass <- grep("twinstim_step", sys.call()[[1L]], value=TRUE) ##<- since sys.call()[[1L]] may also be surveillance:::... if (identical(class(object), "twinstim")) { component <- sub("twinstim_step", "", stepClass) object$formulae <- object$formula object$formula <- object$formulae[[component]] class(object) <- c(stepClass, "twinstim") } else if (!inherits(object, stepClass)) stop("unintended use") object } ## In the first step() loop, object$call$formula is set to terms(object). Since ## there is no "formula" argument to twinstim(), we must remove it from the call ## before update()ing. We also have to convert object$formula to the complete ## formula specification (a named list) and remove the original one ($formulae). .step2twinstim <- function (object) { ##if (identical(class(object), "twinstim")) return(object) component <- sub("^twinstim_step", "", class(object)[1]) stopifnot(component %in% c("endemic", "epidemic")) object$call$formula <- NULL object$formula <- modifyList( object$formulae, setNames(list(formula(object$formula)), component) ) object$formulae <- NULL class(object) <- "twinstim" object } ### special update- and terms-methods for use through stepComponent() below update.twinstim_stependemic <- function (object, endemic, ..., evaluate = TRUE) { object <- .step2twinstim(object) res <- NextMethod("update") # use update.twinstim() ## we need to keep the special class such that step() will keep invoking ## the special update- and terms-methods on the result stepClass <- sub("update.", "", .Method, fixed=TRUE) ##<- or: .Class[1L], or: grep("step", class(object), value=TRUE) if (evaluate) { do.call(stepClass, alist(res)) } else { as.call(list(call(":::", as.name("surveillance"), as.name(stepClass)), res)) ## the call will only be evaluated within stats:::drop1.default() or ## stats:::add1.default, where the "stepClass" constructor function ## (twinstim_stependemic or twinstim_stepepidemic) is not visible; ## we thus have to use ":::". } } update.twinstim_stepepidemic <- function (object, epidemic, ..., evaluate = TRUE) {} body(update.twinstim_stepepidemic) <- body(update.twinstim_stependemic) terms.twinstim_stependemic <- terms.twinstim_stepepidemic <- function (x, ...) terms(x$formula) ### Function to perform AIC-based model selection (component-specific) ### This is essentially a wrapper around stats::step() stepComponent <- function (object, component = c("endemic", "epidemic"), scope = list(upper=object$formula[[component]]), direction = "both", trace = 2, verbose = FALSE, ...) { component <- match.arg(component) ## Convert to special twinstim class where $formula is the component formula object_step <- do.call(paste0("twinstim_step", component), alist(object)) ## silent optimizations if (trace <= 2) object_step$call$optim.args$control$trace <- object_step$optim.args$control$trace <- 0 object_step$call$verbose <- verbose ## Run the selection procedure res <- step(object_step, scope = scope, direction = direction, trace = trace, ...) ## Restore original trace and verbose arguments if (trace <= 2) { res$call$optim.args$control <- object$call$optim.args$control res$optim.args$control <- object$optim.args$control } res$call$verbose <- object$call$verbose ## Convert back to original class .step2twinstim(res) } ### add1.default and drop1.default work without problems through the above ### implementation of stepComponent() using the tricky twinstim classes, ### where object$formula is replaced by the requested component's formula. ### However, for stand-alone use of add1 and drop1, we need specialised methods. add1.twinstim <- drop1.twinstim <- function (object, scope, component = c("endemic", "epidemic"), trace = 2, ...) { component <- match.arg(component) ## Convert to special twinstim class where $formula is the component formula object <- do.call(paste0("twinstim_step", component), alist(object)) ## Call the default method (unfortunately not exported from stats) ## Note that the next method chosen is "unchanged if the class of the ## dispatching argument is changed" (see ?NextMethod) ## (the "component" argument will be part of "..." and passed further on to ## extractAIC.twinstim() where it is unused) NextMethod(trace=trace) } add1.twinstim_stependemic <- drop1.twinstim_stependemic <- function (object, scope, ...) NextMethod(component="endemic") add1.twinstim_stepepidemic <- drop1.twinstim_stepepidemic <- function (object, scope, ...) NextMethod(component="epidemic") surveillance/R/algo_call.R0000644000175100001440000001706312035760223015234 0ustar hornikusers################################################### ### chunk number 1: ################################################### # 'algo.quality' calculates quality values # like specifity, sensitivity for a surveillance method # # Parameters: # survResObj: object of class survRes, which includes the state chain and # the computed alarm chain algo.quality <- function(survResObj, penalty = 20){ state <- survResObj$disProgObj$state[survResObj$control$range] alarm <- survResObj$alarm # go sure to get a complete confusion matrix state <- factor(state, levels = c(0,1)) alarm <- factor(alarm, levels = c(0,1)) # create a confusion matrix confusionTable <- table(state, alarm) # compute Sensitiviy (TP rate) and Specifity (TN rate) sens = confusionTable[2,2]/(confusionTable[2,2] + confusionTable[2,1]) spec = confusionTable[1,1]/(confusionTable[1,2] + confusionTable[1,1]) # get the TP, FN, TN, FP value TP = confusionTable[2,2] FN = confusionTable[2,1] TN = confusionTable[1,1] FP = confusionTable[1,2] # compute the Euclidean distance between (1-spec, sens) to (0,1) dist = sqrt(((1-spec) - 0)^2 + (sens - 1)^2) # compute the lag # match gets the first position of a symbol # check if the state vector contains at least one outbreak if( !(is.element(1,state)) ){ lag = 0 } else{ lag <- c() # outbreakbeginnings outbegins <- c() # find outbreakpositions varA <- which(state == 1) outbegins <- c(outbegins, varA[1]) # Are there more than one outbreak ? ;-) if(length(varA) > 1){ # get just the beginnings of the outbreakserieses #varB <- varA[2:length(varA)] - varA[1:(length(varA)-1) varB <- diff(varA) outbegins <- c(outbegins,varA[which(varB != 1)+1]) } count <- 1 for(i in outbegins){ # decide if it's the last outbreak if(count < length(outbegins)){ # check if the outbreak was found by the system before the # next outbreak took place pos <- match(1,alarm[i:min(i+penalty,(outbegins[count+1]-1))]) if (is.na(pos)){ # give a penalty if the outbreak wasn't found lag <- c(lag, penalty) } else{ # compute the lag for the current outbreak lag <- c(lag, pos-1) } } else{ # check if the outbreak was found by the system pos <- match(1, alarm[i:min(i+penalty, length(alarm))]) if (is.na(pos)){ # give a penalty if the outbreak wasn't found lag <- c(lag, penalty) } else{ # compute the lag for the current outbreak lag <- c(lag, pos-1) } } count <- count + 1 } lag <- mean(lag) } result <- list(TP = TP, FP = FP, TN = TN, FN = FN, sens = sens, spec = spec, dist = dist, mlag =lag) class(result) <- "algoQV" return(result) } ################################################### ### chunk number 2: ################################################### print.algoQV <- function(x,...) { qualityValues <- c("TP", "FP", "TN", "FN", "Sens", "Spec", "dist", "mlag" ) class(x) <- "list" result <- t(as.matrix(x)) #Give the result matrix names dimnames(result)[[2]] <- qualityValues #Print to screen print(result) invisible() } ################################################### ### chunk number 3: ################################################### xtable.algoQV <- function(x, caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, ...) { n <- names(x) x <- matrix(x,nrow=1) dimnames(x)[[2]] <- n xtable(x,caption, label, align, digits, display, ...) } ################################################### ### chunk number 4: ################################################### # 'algo.call' calls the defined surveillance algorithms for # a specified observed vector. # # Parameter # disProgObj: object of class survRes, which includes the state chain, the observed # control: specifies which surveillance systems should be used with their parameters. # The parameter funcName and range must be specified where funcName must be # the apropriate function (without 'algo.') # range (in control): positions in observed which should be computed algo.call <- function(disProgObj, control = list( list(funcName = "rki1", range = range), list(funcName = "rki", range = range, b = 2, w = 4, actY = TRUE), list(funcName = "rki", range = range, b = 2, w = 5, actY = TRUE) ) ) { #Function to apply one algorithm to the disProgObj onecall <- function(i) { do.call(paste("algo.",control[[i]]$funcName, sep=""), list(disProgObj = disProgObj, control = control[[i]])) } #Apply each algorithm in the control list to the disProgObj survResults <- lapply(1:length(control),onecall) #Create some fancy naming.. names(survResults) <- lapply(survResults,function(survObj) {survObj$control$name}) #Done return(survResults) } ################################################### ### chunk number 5: ################################################### algo.compare <- function(survResList){ return(t(sapply(survResList,algo.quality))) } ################################################### ### chunk number 6: ################################################### algo.summary <- function(compMatrices){ # check if the input is large enough for summing if(length(compMatrices) < 1){ stop("It's an empty list !") } if(length(compMatrices) == 1){ return(compMatrices[[1]]) } #Stupid conversion... compMatrices <- lapply(compMatrices,function(one) { n <- dimnames(one) one <- matrix(as.numeric(one),nrow=dim(one)[[1]]) dimnames(one) <- n return(one) }) # Compute the whole result wholeResult = compMatrices[[1]] lag = matrix(0,length(compMatrices),length(wholeResult[,1])) lag[1,] = wholeResult[,8] for(i in 2:length(compMatrices)){ wholeResult = wholeResult + compMatrices[[i]] lag[i,] = compMatrices[[i]][,8] } # Sens (TP) wholeResult[,5] = wholeResult[,1]/(wholeResult[,1]+wholeResult[,4]) # Spec (TN/(TN+FP)) wholeResult[,6] = wholeResult[,3]/(wholeResult[,2]+wholeResult[,3]) # dist wholeResult[,7] = sqrt((wholeResult[,6]-1)^2 + (wholeResult[,5]-1)^2) # median(lag) for(i in 1:length(wholeResult[,1])){ wholeResult[i,8] = mean(lag[,i]) } #class(wholeResult) <- "compMatrix" # comparison matrix return(wholeResult) } surveillance/R/nowcast.R0000755000175100001440000013120312502026556014774 0ustar hornikusers###################################################################### # Function to perform nowcast at a specific day "now" using a procedure # which takes truncation of the available observations into # account. The full documentation is available in the nowcast.Rd file. # # Author: Michael Hoehle # # Parameters: # now - a Date object representing today # when - a vector of Date objects representing the days to do the forecast for. # A requirement is that for all elements in when are smaller or equal # than "now". # data - the Database containing columns dEventCol and dReportCol, which # contain the date of the event and of when the report arrives in # the database. # dEventCol - name of column in data containing time of event occurence # dReportCol - name of column in data containing time of reprt arrival # method - which method to use # D - maximum delay to consider # m - moving window for delay estimation # control - a list containing the following arguments # * gd.prior.kappa - prior for delay is symmetric Dirichlet # with concentration parameter gd.prior.kappa # # Note: As predictions are done simultaneously the entire vector of observations # is casted. Then the subset specified in "when" is returned. # # Returns: # stsNC object with reporting triangle, delay estimate and prediction interval in the appropriate slots. # # Todo: # * yt.support to N.tInf support in nowcast?? # * bayes.notrunc and bayes.notrunc.bnb could become one code segment # * Enable user to provide reporting triangle directly. # * Function should work for weekly and monthly data as well ###################################################################### nowcast <- function(now,when,data,dEventCol="dHospital",dReportCol="dReport", method=c("bayes.notrunc","bayes.notrunc.bnb","lawless","bayes.trunc","unif","bayes.trunc.ddcp"), aggregate.by="1 day", D=15, m=NULL, control=list( dRange=NULL,alpha=0.05,nSamples=1e3, N.tInf.prior=c("poisgamma","pois","unif"), N.tInf.max=300, gd.prior.kappa=0.1, ddcp=list(ddChangepoint=NULL, logLambda=c("iidLogGa","tps","rw1","rw2"), tau.gamma=1,eta.mu=NULL, eta.prec=NULL, mcmc=c(burnin=2500,sample=10000,thin=1)), score=FALSE,predPMF=FALSE)) { #Check if the runjags package is available (required for bayes.trunc.ddcp to work! if ("bayes.trunc.ddcp" %in% method) { if (!requireNamespace("runjags",quietly=TRUE)) { stop("The \"bayes.trunc.ddcp\" method requires the runjags package to be installed, which is available from CRAN.") } } if ((!inherits(now,"Date")) | (length(now)>1)) { stop("The parameter 'now' has to be a single Date.") } #Check if all when_i<= now if (!all(when<=now)) { stop("Assertion when<=now failed.") } #Check that specified methods are all valid method <- match.arg(method,c("bayes.notrunc","bayes.notrunc.bnb","lawless","bayes.trunc","unif","bayes.trunc.ddcp"),several.ok=TRUE) ###################################################################### # Time aggregation. Make sure it's a valid aggregational level and # move all dates to the "first" of this level. # @hoehle: Should work for day, weeks and month. Quarter and year not atm. ###################################################################### aggregate.by <- match.arg(aggregate.by,c("1 day","1 week", "1 month"),several.ok=FALSE) epochInPeriodStr <- switch(aggregate.by, "1 day"="1","1 week"="%u", "1 month"="%d") if (aggregate.by != "1 day") { warning("Moving dates to first of each epoch.") #Move dates back to first of each epoch unit for (colName in c(dEventCol, dReportCol)) { data[,colName] <- data[,colName] - as.numeric(format(data[,colName],epochInPeriodStr)) + 1 } #Check now and when if (!all( format( c(now,when),epochInPeriodStr) == 1)) { stop("The variables 'now' and 'when' needs to be at the first of each epoch") } } #Choose the corect difference function if (aggregate.by == "1 day") { timeDelay <- function(d1,d2) {as.numeric(d2-d1)} } if (aggregate.by == "1 week") { timeDelay <- function(d1,d2) { floor(as.numeric(difftime(d2,d1,units="weeks"))) } #Count the number of full weeks } if (aggregate.by == "1 month") { timeDelay <- function(d1,d2) { #Helper function from http://stackoverflow.com/questions/1995933/number-of-months-between-two-dates monnb <- function(d) { lt <- as.POSIXlt(as.Date(d, origin="1900-01-01")) lt$year*12 + lt$mon } monnb(d2) - monnb(d1) #count the number of full months } } ###################################################################### #If there is a specification of dateRange set dMin and dMax accordingly #Otherwise use as limits the range of the data ###################################################################### if (is.null(control[["dRange",exact=TRUE]])) { dMin <- min(data[,dEventCol],na.rm=TRUE) dMax <- max(data[,dEventCol],na.rm=TRUE) } else { dMin <- control$dRange[1] dMax <- control$dRange[length(control$dRange)] } #@hoehle - check that dRange is proper if (!all( format( c(dMin,dMax), epochInPeriodStr) == 1)) { stop("The variables in dRange needs to be at the first of each epoch.") } dateRange <- seq(dMin,dMax,by=aggregate.by) ###################################################################### # Additional manipulation of the control arguments ###################################################################### #Check if alpha is specified if (is.null(control[["alpha",exact=TRUE]])) { control$alpha <- 0.05 } if (is.null(control[["N.tInf.prior",exact=TRUE]])) { control$N.tInf.prior <- "unif" } if (is.null(control[["N.tInf.max",exact=TRUE]])) { control$N.tInf.max <- 300 } if (is.null(control[["gd.prior.kappa",exact=TRUE]])) { control$gd.prior.kappa <- 0.1 } if (is.null(control[["nSamples",exact=TRUE]])) { control$nSamples <- 1e3 } if (is.null(control[["score",exact=TRUE]])) { control$score <- FALSE } #Checking for the bayes.trun.ddcp procedure. If so make sure params are set up. if ("bayes.trunc.ddcp" %in% method) { #If no parameters at all set to defaults. if (is.null(control[["ddcp",exact=TRUE]])) { control$ddcp <- list(ddChangepoint=NULL, logLambda=c("iidLogGa","tps","rw1","rw2"), tau.gamma=1, mcmc=c(burnin=2500,sample=10000,thin=1)) } #Check form og logLambda if (is.null(control[["ddcp",exact=TRUE]][["logLambda",exact=TRUE]])) { control[["ddcp"]] <- modifyList(control[["ddcp",exact=TRUE]],list(logLambda="iidLogGa")) } else { control[["ddcp"]]$logLambda <- match.arg(control[["ddcp"]][["logLambda"]],c("iidLogGa","tps","rw1","rw2")) } #Check breakpoint to use in case of bayes.trunc.ddcp (delay distribution with breakpoint) if (is.null(control[["ddcp",exact=TRUE]][["ddChangepoint",exact=TRUE]]) || (!class(control[["ddcp",exact=TRUE]][["ddChangepoint",exact=TRUE]]) == "Date")) { stop("Please specify a Date object as changepoint in control$ddChangepoint.") } else { if (any(control[["ddcp",exact=TRUE]][["ddChangepoint"]] > now)) { warning("Some of the elements in ddChangepoint are beyond 'now'. This might be problematic!") } } #Make this an accessible variable ddChangepoint <- control$ddcp$ddChangepoint #Precision parameter for gamma coefficients for hazard delay distribution if (is.null(control[["ddcp",exact=TRUE]][["tau.gamma",exact=TRUE]])) { control[["ddcp"]]$tau.gamma <- 1 } if (is.null(control[["ddcp",exact=TRUE]][["eta.mu",exact=TRUE]])) { control[["ddcp"]]$eta.mu <- rep(0,length(ddChangepoint)) } else { if (length(control[["ddcp"]]$eta.mu) != length(ddChangepoint)) { stop("length of eta.mu is different from the number of change points in 'ddChangepoint'.") } } if (is.null(control[["ddcp",exact=TRUE]][["eta.prec",exact=TRUE]])) { control[["ddcp"]]$eta.prec <- rep(1,length(ddChangepoint)) } else { if (length(control[["ddcp"]]$eta.prec) != length(ddChangepoint)) { stop("length of eta.prec is different from the number of change points in 'ddChangepoint'.") } } #Check MCMC options if (is.null(control[["ddcp",exact=TRUE]][["mcmc",exact=TRUE]])) { control[["ddcp"]][["mcmc"]] <- c(burnin=2500,sample=10000,thin=1) } else { if (!all(names(control[["ddcp",exact=TRUE]][["mcmc",exact=TRUE]]) %in% c("burnin","sample","thin"))) { stop("mcmc options need names 'burnin', 'sample' and 'thin'") } } } ###################################################################### # Do preprocessing of the data ###################################################################### #Create a column containing the reporting delay using the timeDelay #function data$delay <- timeDelay(data[,dEventCol],data[,dReportCol]) #Handle delays longer than D. #@hoehle - handle that the unit might not just be days #notThereButDThere <- (data[,dReportCol] > now) & ((data[,dEventCol]) + D <= now) notThereButDThere <- (timeDelay(data[,dReportCol],now) < 0) & (timeDelay(data[,dEventCol],now) >= D) if (sum(notThereButDThere,na.rm=TRUE)) { warning(paste(sum(notThereButDThere,na.rm=TRUE), " observations > \"now\" due to a delay >D. If delay cut to D they would be there."),sep="") } #Which observations are available at time s #@hoehle: data.sub <- data[ na2FALSE(data[,dReportCol] <= now),] data.sub <- data[ na2FALSE(timeDelay(data[,dReportCol],now) >= 0),] if (nrow(data.sub)==0) { stop(paste("No data available at now=",now,"\n")) } #Create an sts object containing the observed number of counts until s sts <- linelist2sts(data.sub,dEventCol,aggregate.by=aggregate.by,dRange=dateRange) sts <- as(sts,"stsNC") #Create an extra object containing the "truth" based on data sts.truth <- linelist2sts(data,dEventCol,aggregate.by=aggregate.by,dRange=dateRange) #List of scores to calculate. Can become an argument later on scores <- c("logS","RPS","dist.median","outside.ci") #Initialize scoring rule results - to be saved in control slot -- dirty SR <- array(0,dim=c(nrow(sts),length(method),length(scores))) #List for storing the predictive PMFs. if (is.null(control[["predPMF",exact=TRUE]])) { control$predPMF <- FALSE } #Prepare a list of different estimated of the delay CDF delayCDF <- list() ###################################################################### # Done manipulating the control list with default arguments ###################################################################### sts@control <- control #Save truth sts@truth <- sts.truth #Reserve space for returning the predictive PMFs sts@predPMF <- list() ###################################################################### # Consistency checks ###################################################################### #Check if support of N.tInf is large enough if (2*control$N.tInf.max < max(observed(sts),na.rm=TRUE)) { warning("N.tInf.max appears too small. Largest observed value is more than 50% of N.tInf.max, which -- in case this number is extrapolated -- might cause problems.\n") } #Create a vector representing the support of N.tInf N.tInf.support <- 0:control$N.tInf.max #====================================================================== #====================================================================== # Build reporting triangle and derived parameters for delay #====================================================================== #====================================================================== cat("Building reporting triangle...\n") #Time origin t_0 t0 <- min(dateRange) #Sequence from time origin until now (per day??) #@hoehle t02s <- seq(t0,now,by=aggregate.by) #Maximum time index T <- length(t02s)-1 #Check if the maximum delay is longer than the available time series if (D>T) { stop("D>T. Cannot estimate the long delays.") } #How many observations to take for estimating the delay distribution if (is.null(m)) { m <- T } if (m<1) { stop("Assertion m>=1 not fullfilled.") } #Define the observation triangle n <- matrix(NA,nrow=T+1,ncol=T+1,dimnames=list(as.character(t02s),NULL)) #Loop over time points. (more efficient that delay and then t) for (t in 0:T) { #Extract all reports happening at time (index) t. #@hoehle: data.att <- data.sub[na2FALSE(data.sub[,dEventCol] == t02s[t+1]), ] data.att <- data.sub[na2FALSE(timeDelay(data.sub[,dEventCol], t02s[t+1])) == 0, ] #Loop over all delays for (x in 0:(T-t)) { #Count number with specific delay n[t+1,x+1] <- sum(data.att[,"delay"] == x) } } cat("No. cases: ",sum(n,na.rm=TRUE),"\n") #Handle delays longer than D #@hoehle: Not done! nLongDelay <- apply(n[,(D+1)+seq_len(T-D)],1,sum,na.rm=TRUE) if (any(nLongDelay>0)) { warning(paste(sum(nLongDelay)," cases with a delay longer than D=",D," days forced to have a delay of D days.\n",sep="")) n <- n[,1:(D+1)] n[,(D+1)] <- n[,(D+1)] + nLongDelay } else { #No problems. Just extract up to D+1 n <- n[,1:(D+1)] } #Calculate n.x and N.x as in (2.7) and (2.8) and Fig.2 of Lawless (1994) #Note the different moving window definition as in the Lawless article. n.x <- rep(0,times=D+1) N.x <- rep(0,times=D+1) for (x in 0:D) { for (t in max(0,T-m):(T-x)) { #hoehle: Lawless definition is max(0,T-x-x) #cat("x=",x,"\tt=",t,":\n") n.x[x+1] <- n.x[x+1] + n[t+1,x+1] for (y in 0:x) { #cat("x=",x,"\tt=",t,"\ty=",y,":\n") N.x[x+1] <- N.x[x+1] + n[t+1,y+1] } } } cat("No. cases within moving window: ",sum(n.x,na.rm=TRUE),"\n") #Available observations at time T, definition of N(t;T) on p.17. N.tT <- sapply(0:T, function(t) sum(n[t+1, 0:min(D+1,(T-t)+1)])) #Truth - already in another object. Delete?? N.tInf <- table( factor(as.character(data[,dEventCol]),levels=as.character(t02s))) #Store results of the reporting triangle in the control slot together with additional #attributes for fast access of, e.g., summaries or defining variables. reportingTriangle <- n attr(reportingTriangle, "n.x") <- n.x attr(reportingTriangle, "N.x") <- N.x attr(reportingTriangle, "N.tT") <- N.tT attr(reportingTriangle, "N.tInf") <- N.tInf attr(reportingTriangle, "T") <- T attr(reportingTriangle, "D") <- D attr(reportingTriangle, "t02s") <- t02s sts@reportingTriangle <- reportingTriangle #====================================================================== # Calculations are jointly for all t values. #====================================================================== #List of casts each containing a table 0..N.tInf.max with the PMF Ps <- list() #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # # Lawless (1994) method without adjustment for overdispersion # #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if ("lawless" %in% method) { #Hazard function estimates, i.e. g-function estimate as in (2.9) #of Lawless (1994). NAs are set to zero (consequences??) g.hat <- ifelse( !is.na(n.x/N.x), n.x/N.x, 0) #Force g.hat(0)=1 as stated just below (2.1) g.hat[1] <- 1 #Check how the estimated CDF looks #F <- NULL ; for (d in 0:D) { i <- d+seq_len(D-d) ; F[d+1] <- prod(1-g.hat[i+1]) } #plot(0:D,F) #Compute weights Wt.hat as in eqn. (2.13). Use T1=Inf. #Note: Wt.hat estimates F_t(T-t). T1 <- Inf What.t <- sapply(0:T, function(t) { if (t 0) { CDF <- c(0,ltruncpnorm(N.tInf.support, mean=Nhat.tT1[i], sd=sqrt(Vhat.Zt[i]),at=N.tT[i])) PMFs[,i] <- diff(CDF) } else { #@hoehle: previous bug: c(1,rep(0,control$N.tInf.max)) ##all mass concentrated in zero, but it should be: Nhat.tT1 PMFs[,i] <- (N.tInf.support == Nhat.tT1[i])*1 } } Ps[["lawless"]] <- PMFs } #end lawless procedure #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% # # Bayesian method (simple model, clever sampling -> no MCMC) # #%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #Part jointly for both bayes and bayes.notrunc if (("bayes.trunc" %in% method) | ("bayes.notrunc" %in% method)) { cat("bayes prep...\n") ###################################################################### # Prior of N(t,\infty) ###################################################################### N.tInf.prior <- control$N.tInf.prior #Extract prior parameters from prior choice if (N.tInf.prior == "pois") { lambda <- attr(N.tInf.prior,"lambda",exact=TRUE) } else { if (N.tInf.prior == "poisgamma") { #Find size parameters such that mean variance is as target. var.prior <- function(size.prior) { mean.prior + mean.prior^2/size.prior } #If mean & var specified if (all(c("mean.lambda","var.lambda") %in% names(attributes(N.tInf.prior)))) { mean.prior <- attr(N.tInf.prior,"mean.lambda",exact=TRUE) var.prior.target <- attr(N.tInf.prior,"var.lambda",exact=TRUE) size.prior <- uniroot( function(size.prior) { var.prior(size.prior) - var.prior.target},interval=c(1e-12,50))$root #Check result cat("(E,V) of prior for lambda = (",paste(c(mean.prior,var.prior(size.prior)),collapse=","),")\n") } else { stop("mean.lambda and var.lambda not part of prior specification") } } else { if (N.tInf.prior == "unif") { N.tInf.prior.max <- attr(N.tInf.prior,"N.tInf.prior.max",exact=TRUE) } else { #No option applied stop("Not a valid prior!") } } } ###################################################################### # Define function to generate PMF for max(0,T-D),..,T by sampling. # # Parameters: # alpha.star, beta.star - vector containing the posterior GD params ###################################################################### pmfBySampling <- function(alpha.star, beta.star) { #Sample from posterior distribution, i.e. sample from the reverse distribution #and reverse result p.sample <- rgd(control$nSamples,alpha.star,beta.star)[,(length(alpha.star)+1):1] #All the time points where extrapolation is to be done tSet <- max(0,(T-D)):T ###################################################################### # Procedure to generate nowcasts of all time points up to T-D,...,T. # This is based on the posterior samples available in p.sample. # Current code adds up the PMF tables instead of a pure sample based # procedure and also prevents PMF=0 better than tabulating the samples. ###################################################################### N.tT1.pred <- array(NA, dim=c(dim(p.sample)[1],control$N.tInf.max+1,dim(p.sample)[2]),dimnames=list(NULL,seq_len(control$N.tInf.max+1)-1L,tSet)) for (j in 1:control$nSamples) { #Extract delay PMF from sample p <- p.sample[j,] #Proportion reported up to x, x=0,..,T F <- c(rep(1,T-D),rev(cumsum(p))) #Guard against numerical instability: ensure that not larger than 1. F <- ifelse(F>1,1,F) #Loop over all time points to nowcast for (i in 1:length(tSet)) { t <- tSet[i] N.tT1.pred[j,,i] <- switch(N.tInf.prior, "poisgamma"=dpost.bnb(N.tT[t+1],sumpd=F[t+1],mu=mean.prior,size=size.prior,N.tInf.max=control$N.tInf.max)) } } #Average the PMFs as in Step (2) of the algorithm PMF <- apply(N.tT1.pred,MARGIN=c(2,3),mean) #Add part, where no prediction needs to be done if (T-D>0) { #Empty PMFs determined <- matrix(0,nrow=control$N.tInf.max+1,ncol=T-D-1+1) #Add "1" entry at the observed for (t in 0:(T-D-1)) { determined[N.tT[t+1]+1,t+1] <- 1 } PMF <- cbind(determined,PMF) } return(PMF) } #done definition of pmfBySampling } if ("bayes.trunc" %in% method) { cat("bayes.trunc...\n") ###################################################################### #Prior of reporting delay as parameters of generalized Dirichlet prior ###################################################################### #Define symmetric dirichlet as prior, just as in the other case alpha.prior <- rep(control$gd.prior.kappa, D) beta.prior <- rep(0,D) beta.prior[D] <- control$gd.prior.kappa for (i in (D-1):1) { beta.prior[i] <- alpha.prior[i+1] + beta.prior[i+1] } ###################################################################### # Posterior section ###################################################################### #Deduce posterior distribution of delay distribution, i.e. it is again #a generalized Dirichlet alpha <- beta <- rep(NA,D) for (d in 0:(D-1)) { alpha[d+1] <- n.x[D-d+1] ##Note: +1 coz index 1 is delay 0. beta[d+1] <- N.x[D-d+1] - n.x[D-d+1] } #Check if there are any points without data and warn about it. if (any(alpha + beta == 0)) { warning("The delays ",paste(D-which(alpha+beta==0)-1,collapse=",")," have no observations. Results might be instable and depend all on prior.") } #Add up. Note: Delay zero (i.e. element D+1) is ignored as this is #not modelled explicitily by the GD distribution (sum to 1 constraints) alpha.star <- alpha.prior + alpha beta.star <- beta.prior + beta #Compute the expectation of the GD distribution and store this as the delay delayCDF[["bayes.trunc"]] <- cumsum(rev(Egd(alpha.star,beta.star))) #Save result Ps[["bayes.trunc"]] <- pmfBySampling(alpha.star, beta.star) } # end "bayes.trunc" %in% method #====================================================================== # Bayesian version which ignores truncation #====================================================================== if ("bayes.notrunc" %in% method) { cat("bayes.notrunc...\n") ###################################################################### # Prior section ###################################################################### alpha.prior <- rep(control$gd.prior.kappa, D) #symmetric dirichlet beta.prior <- rep(0,D) beta.prior[D] <- control$gd.prior.kappa for (i in (D-1):1) { beta.prior[i] <- alpha.prior[i+1] + beta.prior[i+1] } ###################################################################### # Posterior section ###################################################################### #Deduce posterior distribution of delay distribution, i.e. it is again #a generalized Dirichlet alpha <- beta <- rep(NA,D) for (d in 0:(D-1)) { alpha[d+1] <- n.x[D-d+1] beta[d+1] <- sum(n.x[D - (d+1):D + 1]) } #Check if there are any points without data and warn about it. if (any(alpha + beta == 0)) { warning("The delays ",paste(D-which(alpha+beta==0)-1,collapse=",")," have no observations. Results might be instable and depend all on prior.") } #Posterior parameters. alpha.star <- alpha.prior + alpha beta.star <- beta.prior + beta #Check that its a ordinary Dirichlet for (i in (D-1):1) { if (!all.equal(beta.star[i], alpha.star[i+1] + beta.star[i+1])) { warning("Posterior at i=",i," is not an ordinary Dirichlet as it's supposed to be.") } } #Save resulting delay distribution delayCDF[["bayes.notrunc"]] <- cumsum(rev(Egd(alpha.star,beta.star))) Ps[["bayes.notrunc"]] <- pmfBySampling(alpha.star,beta.star) } # end bayes.notrunc ###################################################################### # Unadjusted procedure using beta negative binomial. ToDo: # integrate code with other Bayesian procedures ###################################################################### if ("bayes.notrunc.bnb" %in% method) { cat("bayes.notrunc.bnb...\n") ###################################################################### # Prior section (same as for all methods) ###################################################################### alpha.prior <- rep(control$gd.prior.kappa, D) #symmetric dirichlet beta.prior <- rep(0,D) beta.prior[D] <- control$gd.prior.kappa for (i in (D-1):1) { beta.prior[i] <- alpha.prior[i+1] + beta.prior[i+1] } ###################################################################### # Posterior section ###################################################################### #Deduce posterior distribution of delay distribution, i.e. it is again #an ordinary Dirichlet alpha <- beta <- rep(NA,D) for (d in 0:(D-1)) { alpha[d+1] <- n.x[D-d+1] beta[d+1] <- sum(n.x[D - (d+1):D + 1]) } #Check if there are any points without data and warn about it. if (any(alpha + beta == 0)) { warning("The delays ",paste(D-which(alpha+beta==0)-1,collapse=",")," have no observations. Results might be instable and depend all on prior.") } #Posterior parameters. alpha.star <- alpha.prior + alpha beta.star <- beta.prior + beta #Check that its a ordinary Dirichlet for (i in (D-1):1) { if (!all.equal(beta.star[i], alpha.star[i+1] + beta.star[i+1])) { warning("Posterior at i=",i," is not an ordinary Dirichlet as it's supposed to be.") } } #Save resulting delay distribution (i.e. no truncation adjustment) delayCDF[["bayes.notrunc"]] <- cumsum(rev(Egd(alpha.star,beta.star))) #Allocate PMF to return PMF <- matrix(0,nrow=control$N.tInf.max+1,ncol=length(max(0,(T-D)):T)) #Concentration parameter vector of the ordinary Dirichlet distribution #Note. alpha.star vector is reversed (shortest delay last). alpha <- rev(c(alpha.star,beta.star[length(beta.star)])) #consistency check if (!all.equal(rev(Egd(alpha.star,beta.star)),alpha/sum(alpha))) { stop("Problem. GD and Dirichlet do not correspond...") } tSet <- max(0,(T-D)):T for (i in 1:length(tSet)) { t <- tSet[i] alpha.i <- cumsum(alpha)[T-t+1] beta.i <- sum(alpha) - alpha.i if (T-t==D) { PMF[,i] <- ifelse( N.tInf.support == N.tT[t+1], 1, 0) } else { #Calculate PMF knowing the q ~ Beta( , ) by the aggregation #property. #Note: Vector N.tT starts at time zero, i.e. time T corresponds to T+1 PMF[,i] <- dbnb( N.tInf.support - N.tT[t+1],n=N.tT[t+1]+1, alpha=alpha.i, beta=beta.i) } } #done looping over all time points #Add part, where no prediction needs to be done if (T-D>0) { #Empty PMFs determined <- matrix(0,nrow=control$N.tInf.max+1,ncol=T-D-1+1) #Add "1" entry at the observed for (t in 0:(T-D-1)) { determined[N.tT[t+1]+1,t+1] <- 1 } PMF <- cbind(determined,PMF) } Ps[["bayes.notrunc.bnb"]] <- PMF } # end bayes.notrunc.bnb ###################################################################### # Fully Bayes version with MCMC ###################################################################### if ("bayes.trunc.ddcp" %in% method) { #Allocate result PMF <- matrix( 0,ncol=(T+1),nrow=control$N.tInf.max+1) #Fix seed value of JAGS RNG for each chain n.chains <- 3 init <- lapply(1:n.chains,function(i) { list(.RNG.name="base::Mersenne-Twister",.RNG.seed=i*10) }) #Make design matrix for a quadratic TPS spline in time makeTPSDesign <- function(T,degree=2) { nbeta=degree + 1 X <- matrix(NA,ncol=nbeta, nrow=T+1) for (t in 0:T) { #Form a centered time covariate t.centered <- t - T/2 for(pow in 0:degree) { X[t+1,pow+1]<- t.centered^(pow) } } #Make the knot points evenly spaced between 0,T not including these points knots <- seq(0,T,length=min(round(T/6)+2,22)) knots <- knots[-c(1,length(knots))] #Remove knots which are beyond T-maxDelay/2 knots <- knots[knots <= T-D/2] knots <- knots - T/2 nknots <- length(knots) #Penalty as REs - setup design matrix Z <- matrix(NA,nrow=T+1,ncol=length(knots)) for (t in 0:T){ t.center <- t - T/2 for(k in 1:nknots){ Z[t+1,k]<- pmax((t.center-knots[k]),0)^degree } } return(list(X=X,Z=Z,knots=knots,nknots=nknots,nbeta=nbeta)) } tps <- makeTPSDesign(T=T,degree=2) #Design matrix for logistic discrete time hazard model containing #changepoints. Could be extended s.t. the user provides W. W <- array(NA,dim=c(T+1,length(ddChangepoint),D+1),dimnames=list(as.character(t02s),as.character(ddChangepoint),paste("delay",0:D,sep=""))) for (t in 0:T){ for (i in 1:length(ddChangepoint)) { W[t+1,i,] <- as.numeric( (t02s[t+1] + 0:D) >= ddChangepoint[i]) } } #Priors. Uniform on the delays D.prime <- round( D/2-0.4)+1 p.prior <- rep(1/(D.prime+1), D.prime+1) mu.gamma <- qlogis( p.prior[1]) for (d in 1:(D.prime-1)) { mu.gamma <- c(mu.gamma, qlogis( p.prior[d+1] / (1-sum(p.prior[1:d])))) } tau.gamma <- rep(control$ddcp$tau.gamma,times=D.prime) #Prepare data for JAGS jagsData <- list(#Data rT=n,T=T+1,m=m+1,maxDelay=D, #Time dependent logistic discrete hazard model W=W, eta.mu=control$ddcp$eta.mu, eta.prec=control$ddcp$eta.prec, mu.gamma=mu.gamma, tau.gamma=tau.gamma, #Epidemic curve alpha.lambda=2500/3000,beta.lambda=50/3000, #Spline related stuff X=tps$X,Z=tps$Z,nknots=tps$nknots,beta.mu=rep(0,tps$nbeta),beta.prec=1e-6*diag(tps$nbeta) ) #Select appropriate model (change this to be part of the options!!) logLambda.method <- control$ddcp$logLambda #"tps" #"rw2" #"iid" #"rw2" #"rw2" #"iid" #"rw" #"tps" ### browser() #Load the BUGS specification of the Bayesian hierarchical Poisson model bugsModel <- readLines(file.path(path.package('surveillance'),'jags',"bhpm.bugs")) bugsModel <- gsub(paste("#<",logLambda.method,">",sep=""),"",bugsModel) #Problem when eta is scalar (TODO: Improve!!) if (length(ddChangepoint) == 1) { #Make eta ~ dnorm( , ) instead of eta ~ dmnorm bugsModel <- gsub("(^[ ]*eta ~ )(dmnorm)","\\1dnorm",bugsModel) #Use eta[1] instead of eta for matrix multiplication bugsModel <- gsub("(eta)(.*%\\*%)","eta\\[1\\]\\2",bugsModel) } #cat(paste(bugsModel,collapse="\n")) bugsFile <- tempfile(pattern = "nowcast-") writeLines(bugsModel,bugsFile) ##browser() ## if (FALSE) { ## #Try to compile the model with ordinary rjags to see if there are any problems ## #before doing 3 chains parallelized using runjags. ## model <- jags.model(bugsFile, ## data = jagsData, ## init=init, #Fix seed value of JAGS as well ## n.chains = n.chains, n.adapt = 100) ## list.samplers(model) ## coda.samples(model,variable.names='logLambda',n.iter=100) ## } ###################################################################### # runjags way -- ToDo: parametrize using control options! ###################################################################### runjagsMethod <- 'rjparallel' #'rjags' monitor <- c('gamma','eta','logLambda','NtInf') samples.rj <- runjags::run.jags(bugsFile,#bugsModel, monitor = monitor, data=jagsData, n.chains=3, inits = init, burnin = control$ddcp$mcmc["burnin"], sample = control$ddcp$mcmc["sample"], thin = control$ddcp$mcmc["thin"], adapt=1000, summarise=FALSE,method=runjagsMethod) #Extract posterior median of discrete survival time delay distribution model parameters dt.surv.samples <- coda::as.mcmc.list(samples.rj, vars = c('gamma','^eta')) post.median <- dt.surv.pm <- apply( as.matrix(dt.surv.samples), 2, median) #Posterior median of the lambda's lambda.post <- exp(apply( as.matrix(coda::as.mcmc.list(samples.rj, vars = c('^logLambda'))), 2, quantile, prob=c(0.025,0.5,0.975))) #Extract posterior median of model parameters gamma.red <- post.median[grep("gamma",names(post.median))] eta <- matrix(post.median[grep("^eta",names(post.median))]) #Map from reduced set to full set gamma <- gamma.red[round( (0:(D-1))/2 - 0.4) + 1] #Compute the resulting PMF from the model. Possibly put this in separate function. pmf <- matrix(NA, nrow=nrow(W),ncol=D+1,dimnames=list(as.character(t02s),paste("delay",0:D,sep=""))) #Determine PMF for (t in 1:length(t02s)) { if (as.character(t02s[t]) %in% rownames(W)) { lin.pred <- ( gamma + t(eta) %*% W[t,,0:D]) pmf[t,] <- haz2pmf(c(plogis(lin.pred),1)) } } #Store result as CDF delayCDF[["bayes.trunc.ddcp"]] <- t(apply(pmf, 1, cumsum)) #Store model as attribute if(control$ddcp$logLambda != "tps") tps <- NULL attr(delayCDF[["bayes.trunc.ddcp"]],"model") <- list(post.median=dt.surv.pm,W=W,lambda.post=lambda.post,tps=tps) #Convert to coda compatible output. samples <- coda::as.mcmc.list(samples.rj) #Extract PMFs for (t in 0:T) { #Extract samples related to this time point vals <- as.matrix(samples[,paste("NtInf[",t+1,"]",sep="")]) #PMF PMF[,t+1] <- prop.table(table(factor(vals,levels=0:control$N.tInf.max))) } Ps[["bayes.trunc.ddcp"]] <- PMF } #====================================================================== #A really bad forecast -- the uniform #====================================================================== if ("unif" %in% method) { #Allocate result PMF <- matrix( 0,ncol=(T+1),nrow=control$N.tInf.max+1) #Loop over all time points to nowcast and put U(N.tT[t],Nmax) for (t in 0:T) { #How many values are there in N.tT .. Nmax noVals <- max(0,control$N.tInf.max - N.tT[t+1]) + 1 #PMF at t is 0,...0 (N.tT-1 times), 1/noVals,...,1/noVals PMF[,t+1] <- c(rep(0,N.tT[t+1]),rep(1/noVals,times=noVals)) } Ps[["unif"]] <- PMF } ###################################################################### #Loop over all time points in the vector "when". Only these are #returned. ###################################################################### idxt <- which(dateRange %in% when) for (i in idxt) { #Save PMFs if thats requested if (control$predPMF) { res <- list() for (j in 1:length(method)) { res[[method[j]]] <- Ps[[method[j]]][,i] } sts@predPMF[[as.character(dateRange[i])]] <- res } #Evaluate scoring rules, if requested if (control$score) { #Infer the true value ytinf <- observed(sts.truth)[i,] #Evaluate all scores for all predictive distributions for (i.P in 1:length(method)) { for (i.score in 1:length(scores)) { #cat("i=",i," i.P=",i.P," (",method[i.P],") i.score=",i.score,"\n") SR[i,i.P,i.score] <- do.call(scores[i.score],args=list(P=Ps[[method[i.P]]][,i],y=ytinf,alpha=control$alpha)) } } } #end if control$score #Add first nowcast & ci to stsBP slots sts@upperbound[i,] <- median(N.tInf.support[which.max( cumsum(Ps[[method[1]]][,i])>0.5)]) sts@pi[i,,] <- N.tInf.support[c(which.max(cumsum(Ps[[method[1]]][,i]) > control$alpha/2),which.max(cumsum(Ps[[method[1]]][,i]) > 1-control$alpha/2))] dimnames(sts@pi) <- list(as.character(dateRange),NULL,paste( c(control$alpha/2*100,(1-control$alpha/2)*100),"%",sep="")) } #end of loop over time points #Add scoring rule to output if (control$score) { dimnames(SR) <- list(as.character(dateRange),method,scores) sts@SR <- SR } ###################################################################### #Other arguments to save in control object ###################################################################### sts@control$N.tInf.support <- N.tInf.support sts@control$method <- sts@control$name <- method #Store variables relevant for the nowcast sts@control$D <- D sts@control$m <- m sts@control$now <- now sts@control$when <- when sts@control$timeDelay <- timeDelay #Store delayCDF object sts@delayCDF <- delayCDF #For backwards compatibility -- change this in the future TODODODODODO! sts@control$yt.support <- sts@control$N.tInf.support sts@control$y.prior.max <- sts@control$N.tInf.max #Done return(sts) } ###################################################################### # Helper functions ###################################################################### #Helper function na2FALSE <- function(x) {x[is.na(x)] <- FALSE ; return(x) } ###################################################################### # Logarithmic score # # Parameters: # P - predictive distribution, given as a vector containing the PMF # with support 0,...,N.prior.max # y - the actual observation. Can be a vector. # # Returns: # -log P(y). If y outside 0,..,N.prior.max then -Inf. ###################################################################### logS <- function(P, y, ...) { return(ifelse( y>=0 & y<=length(P)-1, -log(P[y+1]), -Inf)) } ###################################################################### # Ranked probability score # # Parameters: # P - predictive distribution, given as a vector containing the PMF # with support 0,...,N.prior.max # y - the actual observation. Can be a vector. # # Returns: # -log P(y). If y outside 0,..,N.prior.max then -Inf. ###################################################################### RPS <- function(P,y, ...) { N.support <- 0:(length(P)-1) sum( (cumsum(P) - (y <= N.support))^2) } #Some other scoring rules which are not proper. dist.median <- function(P,y, ...) { point.estimate <- which.max(cumsum(P)>=0.5) - 1 return(abs(point.estimate - y)) } #0/1 indicator of observed value outside equal tailed (1-alpha/2) CI outside.ci <- function(P,y,alpha) { N.support <- 0:(length(P)-1) ci <- N.support[c(which.max(cumsum(P) > alpha/2),which.max(cumsum(P) > 1-alpha/2))] ifelse( y>=ci[1] & y<=ci[2], 0, 1) } ###################################################################### # Helper functions for sampling the predictive distribution ###################################################################### #Unnormalized in Binomial-Negative-Binomial Hierarchy. Should work for vectors of N.tInf! #Only kernel parts for N.tInf need to be taken into account dpost.bnb.unorm <- function(N.tInf, N.tT, sumpd, mu, size) { dbinom(N.tT, size=N.tInf, prob=sumpd)*dnbinom(N.tInf, mu=mu,size=size) #Direct implementation - appears to be less stable... #ifelse(N.tInf >= N.tT, # exp(lgamma(N.tInf+size)-lgamma(N.tInf-N.tT+1) + N.tInf*log( (1-sumpd)*(mu/(mu+size)))),0) #Compare the 2 ## foo.a <- dbinom(N.tT, size=N.tInf, prob=sumpd)*dnbinom(N.tInf, mu=mu,size=size) ## foo.b <- ifelse(N.tInf >= N.tT, #& N.tInf <= size, ## exp(lgamma(N.tInf+size)-lgamma(N.tInf-N.tT+1) + N.tInf*log( (1-sumpd)*(mu/(mu+size)))),0) ## plot(foo.a/sum(foo.a)) ## points(foo.b/sum(foo.b),col="red") } #Sample in binomial-negative-binomial hierarchy rpost.bnb <- function(n=1, N.tT, sumpd, mu,size, N.tInf.max=1e4) { p <- dpost.bnb.unorm(0:N.tInf.max,N.tT=N.tT,sumpd=sumpd, mu=mu,size=size) #Set NA values to zero (why would they be NA?) #if (is.na(sum(p))) { warning("rpost.bnb: sum is NA") ; browser(p)} #Normalize the distribution - safe this for time reasons #p <- p/sum(p) #Sample sample(0:N.tInf.max, size=n, replace=TRUE, prob=p) } #PMF for the predictive distribution in binomial-negative-binomial hierarchy. #Returns entire vector for 0:N.tInf.max dpost.bnb <- function(N.tT, sumpd, mu,size, N.tInf.max=1e4) { p <- dpost.bnb.unorm(0:N.tInf.max,N.tT=N.tT,sumpd=sumpd, mu=mu,size=size) #Set NA values to zero (why would they be NA?) #if (is.na(sum(p))) { warning("rpost.bnb: sum is NA") ; browser(p)} #Normalize the distribution - safe this for time reasons return(p/sum(p)) } ###################################################################### # PMF of the beta-negatative binomial distribution # See Teerapabolarn (2008) # # Parameters: # k - where to evaluate. can be a vector. # # Returns: # PMF. ###################################################################### dbnb <- function(k,n,alpha,beta) { #Check if k's outside the support are requested. neg <- k<0 k[neg] <- 0 #Calculate the density of the beta-negbin. See Teerapabolarn (2008) num <- lgamma(n+alpha)+lgamma(k+beta)+lgamma(n+k)+lgamma(alpha+beta) den <- lgamma(n+k+alpha+beta)+lgamma(n)+lgamma(k+1)+lgamma(alpha)+lgamma(beta) res <- exp(num-den) res[neg] <- 0 return( res) } ###################################################################### # Convert discrete time hazard function on 0,...,Dmax to a probability # mass function. # # Parameters: # haz - vector with entries for (0,...,Dmax) # Returns: # vector with PMF on 0,...,Dmax. ###################################################################### haz2pmf <- function(haz) { PMF <- 0*haz for (i in 0:(length(haz)-1)) { PMF[i+1] <- haz[i+1] * (1-sum(PMF[seq(i)])) } return(PMF) } surveillance/R/twinstim_methods.R0000644000175100001440000007643112565633473016742 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Methods for objects of class "twinstim", specifically: ### vcov, logLik, print, summary, plot (intensity, iaf), R0, residuals, update ### ### Copyright (C) 2009-2015 Sebastian Meyer ### $Revision: 1459 $ ### $Date: 2015-08-21 16:35:39 +0200 (Fre, 21. Aug 2015) $ ################################################################################ ## extract the link function used for the epidemic predictor (default: log-link) .epilink <- function (x) { link <- attr(x$formula$epidemic, "link") if (is.null(link)) "log" else link } ## ## compare two "twinstim" fits ## all.equal.twinstim <- function (target, current, ..., ## ignore = c("runtime", "call")) ## { ## target[ignore] <- current[ignore] <- NULL ## NextMethod("all.equal") ## } ### don't need a specific coef-method (identical to stats:::coef.default) ## coef.twinstim <- function (object, ...) ## { ## object$coefficients ## } ## list coefficients by component coeflist.twinstim <- coeflist.simEpidataCS <- function (x, ...) { coeflist <- coeflist.default(x$coefficients, x$npars) ## rename elements and union "nbeta0" and "p" as "endemic" coeflist <- c(list(c(coeflist[[1L]], coeflist[[2L]])), coeflist[-(1:2)]) names(coeflist) <- c("endemic", "epidemic", "siaf", "tiaf") coeflist } ## asymptotic variance-covariance matrix (inverse of expected fisher information) vcov.twinstim <- function (object, ...) { if (!is.null(object[["fisherinfo"]])) { solve(object$fisherinfo) } else if (!is.null(object[["fisherinfo.observed"]])) { solve(object$fisherinfo.observed) } else { stop("Fisher information not available; use, e.g., -optimHess()") } } ## Extract log-likelihood of the model (which also enables the use of AIC()) logLik.twinstim <- function (object, ...) { r <- object$loglik attr(r, "df") <- length(coef(object)) attr(r, "nobs") <- nobs(object) class(r) <- "logLik" r } ## Also define an extractAIC-method to make step() work extractAIC.twinstim <- function (fit, scale, k = 2, ...) { loglik <- logLik(fit) edf <- attr(loglik, "df") penalty <- k * edf c(edf = edf, AIC = -2 * c(loglik) + penalty) } ## Number of events (excluding the pre-history) nobs.twinstim <- function (object, ...) length(object$fitted) ## print-method print.twinstim <- function (x, digits = max(3, getOption("digits") - 3), ...) { cat("\nCall:\n") print.default(x$call) cat("\nCoefficients:\n") print.default(format(coef(x), digits=digits), print.gap = 2, quote = FALSE) cat("\nLog-likelihood: ", format(logLik(x), digits=digits), "\n", sep = "") if (!isTRUE(x$converged)) { cat("\nWARNING: OPTIMIZATION ROUTINE DID NOT CONVERGE!", paste0("(",x$converged,")"), "\n") } cat("\n") invisible(x) } summary.twinstim <- function (object, test.iaf = FALSE, correlation = FALSE, symbolic.cor = FALSE, runtime = FALSE, ...) { ans <- unclass(object)[c("call", "converged", if (runtime) "counts")] npars <- object$npars nbeta0 <- npars[1]; p <- npars[2]; nbeta <- nbeta0 + p q <- npars[3] nNotIaf <- nbeta + q niafpars <- npars[4] + npars[5] est <- coef(object) ans$cov <- tryCatch(vcov(object), error = function (e) { warning(e) matrix(NA_real_, length(est), length(est)) }) se <- sqrt(diag(ans$cov)) zval <- est/se pval <- 2 * pnorm(abs(zval), lower.tail = FALSE) coefficients <- cbind(est, se, zval, pval) dimnames(coefficients) <- list(names(est), c("Estimate", "Std. Error", "z value", "Pr(>|z|)")) ans$coefficients.beta <- coefficients[seq_len(nbeta),,drop=FALSE] ans$coefficients.gamma <- structure( coefficients[nbeta+seq_len(q),,drop=FALSE], link = .epilink(object) ) ans$coefficients.iaf <- coefficients[nNotIaf+seq_len(niafpars),,drop=FALSE] if (!test.iaf) { ## usually, siaf and tiaf parameters are strictly positive, ## or parametrized on the logscale. In this case the usual wald test ## with H0: para=0 is invalid or meaningless. is.na(ans$coefficients.iaf[,3:4]) <- TRUE } # estimated parameter correlation if (correlation) { ans$correlation <- cov2cor(ans$cov) ans$symbolic.cor <- symbolic.cor } ans$loglik <- logLik(object) ans$aic <- AIC(object) if (runtime) { ans$runtime <- object$runtime } class(ans) <- "summary.twinstim" ans } ## additional methods to make confint.default work for summary.twinstim vcov.summary.twinstim <- function (object, ...) object$cov coef.summary.twinstim <- function (object, ...) with(object, { coeftab <- rbind(coefficients.beta, coefficients.gamma, coefficients.iaf) structure(coeftab[,1], names=rownames(coeftab)) }) ## print-method for summary.twinstim print.summary.twinstim <- function (x, digits = max(3, getOption("digits") - 3), symbolic.cor = x$symbolic.cor, signif.stars = getOption("show.signif.stars"), ...) { nbeta <- nrow(x$coefficients.beta) # = nbeta0 + p q <- nrow(x$coefficients.gamma) niafpars <- nrow(x$coefficients.iaf) cat("\nCall:\n") print.default(x$call) if (nbeta > 0L) { cat("\nCoefficients of the endemic component:\n") printCoefmat(x$coefficients.beta, digits = digits, signif.stars = signif.stars, signif.legend = (q==0L) && signif.stars, ...) } else cat("\nNo coefficients in the endemic component.\n") if (q + niafpars > 0L) { cat("\nCoefficients of the epidemic component", if (attr(x$coefficients.gamma, "link") != "log") paste0(" (LINK FUNCTION: ", attr(x$coefficients.gamma, "link"), ")"), ":\n", sep = "") printCoefmat(rbind(x$coefficients.gamma, x$coefficients.iaf), digits = digits, signif.stars = signif.stars, ...) } else cat("\nNo epidemic component.\n") cat("\nAIC: ", format(x$aic, digits=max(4, digits+1))) cat("\nLog-likelihood:", format(x$loglik, digits = digits)) runtime <- x$runtime if (!is.null(runtime)) { cat("\nNumber of log-likelihood evaluations:", x$counts[1L]) cat("\nNumber of score function evaluations:", x$counts[2L]) cores <- attr(runtime, "cores") elapsed <- if (length(runtime) == 1L) { # surveillance < 1.6-0 runtime } else { runtime[["elapsed"]] } cat("\nRuntime", if (!is.null(cores) && cores > 1) paste0(" (", cores, " cores)"), ": ", format(elapsed, digits = max(4, digits+1)), " seconds", sep = "") } cat("\n") correl <- x$correlation if (!is.null(correl)) { p <- NCOL(correl) if (p > 1L) { cat("\nCorrelation of Coefficients:\n") if (is.logical(symbolic.cor) && symbolic.cor) { correl <- symnum(correl, abbr.colnames = NULL) correlcodes <- attr(correl, "legend") attr(correl, "legend") <- NULL print(correl) cat("---\nCorr. codes: ", correlcodes, "\n", sep="") } else { correl <- format(round(correl, 2), nsmall = 2) correl[!lower.tri(correl)] <- "" colnames(correl) <- substr(colnames(correl), 1, 5) print(correl[-1, -p, drop = FALSE], quote = FALSE) } } } if (!isTRUE(x$converged)) { cat("\nWARNING: OPTIMIZATION ROUTINE DID NOT CONVERGE!", paste0("(",x$converged,")"), "\n") } cat("\n") invisible(x) } ### 'cat's the summary in LaTeX code toLatex.summary.twinstim <- function ( object, digits = max(3, getOption("digits") - 3), eps.Pvalue = 1e-4, align = "lrrrr", booktabs = getOption("xtable.booktabs", FALSE), withAIC = FALSE, ...) { ret <- capture.output({ cat("\\begin{tabular}{", align, "}\n", if (booktabs) "\\toprule" else "\\hline", "\n", sep="") cat(" & Estimate & Std. Error & $z$ value & $P(|Z|>|z|)$ \\\\\n", if (!booktabs) "\\hline\n", sep="") tabh <- object$coefficients.beta tabe <- rbind(object$coefficients.gamma, object$coefficients.iaf) for (tabname in c("tabh", "tabe")) { tab <- get(tabname) if (nrow(tab) > 0L) { rownames(tab) <- gsub(" ", "", rownames(tab)) tab_char <- capture.output( printCoefmat(tab, digits=digits, signif.stars=FALSE, eps.Pvalue = eps.Pvalue, na.print="NA") )[-1] ## remove extra space (since used as column sep in read.table) tab_char <- sub("< ", "<", tab_char, fixed=TRUE) # small p-values ## replace scientific notation by corresponding LaTeX code tab_char <- sub("( xtable.summary.twinstim must be exported } formals(xtable.twinstim) <- formals(xtable.summary.twinstim) ### Plot method for twinstim (wrapper for iafplot and intensityplot) plot.twinstim <- function (x, which, ...) { cl <- match.call() which <- match.arg(which, choices = c(eval(formals(intensityplot.twinstim)$which), eval(formals(iafplot)$which))) FUN <- if (which %in% eval(formals(intensityplot.twinstim)$which)) "intensityplot" else "iafplot" cl[[1]] <- as.name(FUN) if (FUN == "iafplot") names(cl)[names(cl) == "x"] <- "object" eval(cl, envir = parent.frame()) } ### Calculates the basic reproduction number R0 for individuals ### with marks given in 'newevents' R0.twinstim <- function (object, newevents, trimmed = TRUE, newcoef = NULL, ...) { ## check for epidemic component npars <- object$npars if (npars["q"] == 0L) { message("no epidemic component in model, returning 0-vector") if (missing(newevents)) return(object$R0) else { return(structure(rep.int(0, nrow(newevents)), names = rownames(newevents))) } } ## update object for use of new parameters if (!is.null(newcoef)) { object <- update(object, optim.args = list(par=newcoef, fixed=TRUE), cumCIF = FALSE, cores = 1L, verbose = FALSE) } ## extract model information t0 <- object$timeRange[1L] T <- object$timeRange[2L] typeNames <- rownames(object$qmatrix) nTypes <- length(typeNames) types <- seq_len(nTypes) form <- formula(object) siaf <- form$siaf tiaf <- form$tiaf coefs <- coef(object) tiafpars <- coefs[sum(npars[1:4]) + seq_len(npars["ntiafpars"])] siafpars <- coefs[sum(npars[1:3]) + seq_len(npars["nsiafpars"])] if (missing(newevents)) { ## if no newevents are supplied, use original events if (trimmed) { # already calculated by 'twinstim' return(object$R0) } else { # untrimmed version (spatio-temporal integral over R+ x R^2) ## extract relevant data from model environment if (is.null(modelenv <- environment(object))) { stop("need model environment for untrimmed R0 of fitted events\n", " -- re-fit or update() with 'model=TRUE'") } eventTypes <- modelenv$eventTypes eps.t <- modelenv$eps.t eps.s <- modelenv$eps.s gammapred <- modelenv$gammapred names(gammapred) <- names(object$R0) # for names of the result } } else { ## use newevents stopifnot(is.data.frame(newevents)) if (!"time" %in% names(newevents)) { stop("missing event \"time\" column in 'newevents'") } if (any(!c("eps.s", "eps.t") %in% names(newevents))) { stop("missing \"eps.s\" or \"eps.t\" columns in 'newevents'") } stopifnot(is.factor(newevents[["type"]])) ## subset newevents to timeRange .N <- nrow(newevents) newevents <- subset(newevents, time + eps.t > t0 & time <= T) if (nrow(newevents) < .N) { message("subsetted 'newevents' to only include events infectious ", "during 'object$timeRange'") } ## extract columns newevents$type <- factor(newevents[["type"]], levels = typeNames) eventTimes <- newevents[["time"]] eps.t <- newevents[["eps.t"]] eps.s <- newevents[["eps.s"]] ## calculate gammapred for newevents epidemic <- terms(form$epidemic, data = newevents, keep.order = TRUE) mfe <- model.frame(epidemic, data = newevents, na.action = na.pass, drop.unused.levels = FALSE) mme <- model.matrix(epidemic, mfe) gamma <- coefs[sum(npars[1:2]) + seq_len(npars["q"])] if (ncol(mme) != length(gamma)) { stop("epidemic model matrix has the wrong number of columns ", "(check the variable types in 'newevents' (factors, etc))") } gammapred <- drop(mme %*% gamma) # identity link if (.epilink(object) == "log") gammapred <- exp(gammapred) names(gammapred) <- rownames(newevents) ## now, convert types of newevents to integer codes eventTypes <- as.integer(newevents$type) } ## qSum qSumTypes <- rowSums(object$qmatrix) qSum <- unname(qSumTypes[eventTypes]) ## calculate remaining factors of the R0 formula, i.e. siafInt and tiafInt if (trimmed) { # trimmed R0 for newevents ## integral of g over the observed infectious periods .tiafInt <- .tiafIntFUN() gIntUpper <- pmin(T - eventTimes, eps.t) gIntLower <- pmax(0, t0 - eventTimes) tiafInt <- .tiafInt(tiafpars, from=gIntLower, to=gIntUpper, type=eventTypes, G=tiaf$G) ## integral of f over the influenceRegion bdist <- newevents[[".bdist"]] influenceRegion <- newevents[[".influenceRegion"]] if (is.null(influenceRegion)) { stop("missing \".influenceRegion\" component in 'newevents'") } noCircularIR <- if (is.null(bdist)) FALSE else all(eps.s > bdist) if (attr(siaf, "constant")) { iRareas <- sapply(influenceRegion, area.owin) ## will be used by .siafInt() } else if (! (is.null(siaf$Fcircle) || (is.null(siaf$effRange) && noCircularIR))) { if (is.null(bdist)) { stop("missing \".bdist\" component in 'newevents'") } } .siafInt <- .siafIntFUN(siaf, noCircularIR=noCircularIR) .siafInt.args <- c(alist(siafpars), object$control.siaf$F) siafInt <- do.call(".siafInt", .siafInt.args) } else { # untrimmed R0 for original events or newevents ## integrals of interaction functions for all combinations of type and ## eps.s/eps.t in newevents typeTcombis <- expand.grid(type=types, eps.t=unique(eps.t), KEEP.OUT.ATTRS=FALSE) typeTcombis$gInt <- with(typeTcombis, tiaf$G(eps.t, tiafpars, type)) - tiaf$G(rep.int(0,nTypes), tiafpars, types)[typeTcombis$type] Fcircle <- getFcircle(siaf, object$control.siaf$F) typeScombis <- expand.grid(type=types, eps.s=unique(eps.s), KEEP.OUT.ATTRS=FALSE) typeScombis$fInt <- apply(typeScombis, MARGIN=1, FUN=function (type_eps.s) { type <- type_eps.s[1L] eps.s <- type_eps.s[2L] Fcircle(eps.s, siafpars, type) }) ## match combinations to rows of original events or 'newevents' eventscombiidxS <- match(paste(eventTypes,eps.s,sep="."), with(typeScombis,paste(type,eps.s,sep="."))) eventscombiidxT <- match(paste(eventTypes,eps.t,sep="."), with(typeTcombis,paste(type,eps.t,sep="."))) siafInt <- typeScombis$fInt[eventscombiidxS] tiafInt <- typeTcombis$gInt[eventscombiidxT] if (any(is.infinite(eps.t) & !is.finite(tiafInt), is.infinite(eps.s) & !is.finite(siafInt))) { message("infinite interaction ranges yield non-finite R0 values ", "because 'trimmed = FALSE'") } } ## return R0 values R0s <- qSum * gammapred * siafInt * tiafInt R0s } ## calculate simple R0 (over circular domain, without epidemic covariates, ## for type-invariant siaf/tiaf) simpleR0 <- function (object, eta = coef(object)[["e.(Intercept)"]], eps.s = NULL, eps.t = NULL, newcoef = NULL) { stopifnot(inherits(object, c("twinstim", "simEpidataCS"))) if (object$npars[["q"]] == 0L) return(0) if (any(rowSums(object$qmatrix) != 1)) warning("'simpleR0' is not correct for type-specific epidemic models") if (!is.null(newcoef)) { # use alternative coefficients object$coefficients <- newcoef } coeflist <- coeflist(object) siaf <- object$formula$siaf tiaf <- object$formula$tiaf ## default radii of interaction if (is.null(eps.s)) { eps.s <- attr(siaf, "eps") if (length(eps.s) > 1L) stop("found non-unique 'eps.s'; please set one") } else stopifnot(isScalar(eps.s)) if (is.null(eps.t)) { eps.t <- attr(tiaf, "eps") if (length(eps.t) > 1L) stop("found non-unique 'eps.t'; please set one") } else stopifnot(isScalar(eps.t)) ## integral of siaf over a disc of radius eps.s Fcircle <- getFcircle(siaf, object$control.siaf$F) siafInt <- Fcircle(eps.s, coeflist$siaf) ## integral of tiaf over a period of length eps.t tiafInt <- tiaf$G(eps.t, coeflist$tiaf) - tiaf$G(0, coeflist$tiaf) ## calculate basic R0 (if (.epilink(object) == "log") exp(eta) else eta) * siafInt * tiafInt } ### Extract the "residual process" (cf. Ogata, 1988) of a twinstim, i.e. the ### fitted cumulative intensity of the ground process at the event times. ### "generalized residuals similar to those discussed in Cox and Snell (1968)" residuals.twinstim <- function (object, ...) { res <- object$tau if (is.null(res)) { if (is.null(modelenv <- environment(object))) { stop("residuals not available; re-fit the model with 'cumCIF = TRUE'") } else { message("'", substitute(object), "' was fit with disabled 'cumCIF'", " -> calculate it now ...") res <- with(modelenv, LambdagEvents(cumCIF.pb = interactive())) try({ objname <- deparse(substitute(object)) object$tau <- res assign(objname, object, envir = parent.frame()) message("Note: added the 'tau' component to object '", objname, "' for future use.") }, silent = TRUE) } } return(res) } ###################################################################### # Function to compute estimated and profile likelihood based # confidence intervals. Heavy computations might be necessary! # #Params: # fitted - output from a fit with twinstim # profile - list with 4D vector as entries - format: # c(index, lower, upper, grid size) # where index is the index in the coef vector # lower and upper are the parameter limits (can be NA) # grid size is the grid size of the equally spaced grid # between lower and upper (can be 0) # alpha - (1-alpha)% profile likelihood CIs are computed. # If alpha <= 0 then no CIs are computed # control - control object to use for optim in the profile loglik computations # # Returns: # list with profile loglikelihood evaluations on the grid # and highest likelihood and wald confidence intervals ###################################################################### profile.twinstim <- function (fitted, profile, alpha = 0.05, control = list(fnscale = -1, factr = 1e1, maxit = 100), do.ltildeprofile=FALSE,...) { warning("the profile likelihood implementation is experimental") ## the implementation below is not well tested, simply uses optim (ignoring ## optimizer settings from the original fit), and does not store the complete ## set of coefficients ## Check that input is ok profile <- as.list(profile) if (length(profile) == 0L) { stop("nothing to do") } lapply(profile, function(one) { if (length(one) != 4L) { stop("each profile entry has to be of form ", "'c(index, lower, upper, grid size)'") }}) if (is.null(fitted[["functions"]])) { stop("'fitted' must contain the component 'functions' -- fit using the option model=TRUE") } ## Control of the optim procedure if (is.null(control[["fnscale",exact=TRUE]])) { control$fnscale <- -1 } if (is.null(control[["maxit",exact=TRUE]])) { control$maxit <- 100 } if (is.null(control[["trace",exact=TRUE]])) { control$trace <- 2 } ## Estimated normalized likelihood function ltildeestim <- function(thetai,i) { theta <- theta.ml theta[i] <- thetai fitted$functions$ll(theta) - loglik.theta.ml } ## Profile normalized likelihood function ltildeprofile <- function(thetai,i) { #cat("Investigating theta[",i,"] = ",thetai,"\n") emptyTheta <- rep(0, length(theta.ml)) # Likelihood l(theta_{-i}) = l(theta_i, theta_i) ltildethetaminusi <- function(thetaminusi) { theta <- emptyTheta theta[-i] <- thetaminusi theta[i] <- thetai #cat("Investigating theta = ",theta,"\n") res <- fitted$functions$ll(theta) - loglik.theta.ml #cat("Current ltildethetaminusi value: ",res,"\n") return(res) } # Score function of all params except thetaminusi stildethetaminusi <- function(thetaminusi) { theta <- emptyTheta theta[-i] <- thetaminusi theta[i] <- thetai res <- fitted$functions$sc(theta)[-i] #cat("Current stildethetaminusi value: ",res,"\n") return(res) } # Call optim -- currently not adapted to arguments of control arguments # used in the fit resOthers <- tryCatch( optim(par=theta.ml[-i], fn = ltildethetaminusi, gr = stildethetaminusi, method = "BFGS", control = control), warning = function(w) print(w), error = function(e) list(value=NA)) resOthers$value } ## Initialize theta.ml <- coef(fitted) loglik.theta.ml <- c(logLik(fitted)) se <- sqrt(diag(vcov(fitted))) resProfile <- list() ## Perform profile computations for all requested parameters cat("Evaluating the profile logliks on a grid...\n") for (i in 1:length(profile)) { cat("i= ",i,"/",length(profile),"\n") #Index of the parameter in the theta vector idx <- profile[[i]][1] #If no borders are given use those from wald intervals (unconstrained) if (is.na(profile[[i]][2])) profile[[i]][2] <- theta.ml[idx] - 3*se[idx] if (is.na(profile[[i]][3])) profile[[i]][3] <- theta.ml[idx] + 3*se[idx] #Evaluate profile loglik on a grid (if requested) if (profile[[i]][4] > 0) { thetai.grid <- seq(profile[[i]][2],profile[[i]][3],length=profile[[i]][4]) resProfile[[i]] <- matrix(NA, nrow = length(thetai.grid), ncol = 4L, dimnames = list(NULL, c("grid","profile","estimated","wald"))) #Loop over all gridpoints for (j in 1:length(thetai.grid)) { cat("\tj= ",j,"/",length(thetai.grid),"\n") resProfile[[i]][j,] <- c(thetai.grid[j], #Do we need to compute ltildeprofile (can be quite time consuming) if (do.ltildeprofile) ltildeprofile(thetai.grid[j],idx) else NA_real_, ltildeestim(thetai.grid[j],idx), - 1/2*(1/se[idx]^2)*(thetai.grid[j] - theta.ml[idx])^2) } } } names(resProfile) <- names(theta.ml)[sapply(profile, function(x) x[1L])] ############################### ## Profile likelihood intervals ############################### # Not done, yet ciProfile <- NULL ####Done, return return(list(lp=resProfile, ci.hl=ciProfile, profileObj=profile)) } ### update-method for the twinstim-class ## stats::update.default would also work but is not adapted to the specific ## structure of twinstim: optim.args (use modifyList), two formulae, model, ... ## However, this specific method is inspired by and copies small parts of the ## update.default method from the stats package developed by The R Core Team update.twinstim <- function (object, endemic, epidemic, control.siaf, optim.args, model, ..., use.estimates = TRUE, evaluate = TRUE) { call <- object$call thiscall <- match.call(expand.dots=FALSE) extras <- thiscall$... if (!missing(model)) { call$model <- model ## Special case: update model component ONLY if (evaluate && all(names(thiscall)[-1] %in% c("object", "model", "evaluate"))) { return(.update.twinstim.model(object, model)) } } ## Why we no longer use call$endemic but update object$formula$endemic: ## call$endemic would be an unevaluated expression eventually receiving the ## parent.frame() as environment, cp.: ##(function(e) {ecall <- match.call()$e; eval(call("environment", ecall))})(~1+start) ## This could cause large files if the fitted model is saved. ## Furthermore, call$endemic could refer to some object containing ## the formula, which is no longer visible. call$endemic <- if (missing(endemic)) object$formula$endemic else update.formula(object$formula$endemic, endemic) call$epidemic <- if (missing(epidemic)) object$formula$epidemic else update.formula(object$formula$epidemic, epidemic) ## Note: update.formula uses terms.formula(...,simplify=TRUE), but ## the principle order of terms is retained. Offsets will be moved to ## the end and a missing intercept will be denoted by a final -1. if (!missing(control.siaf)) { if (is.null(control.siaf)) { call$control.siaf <- NULL # remove from call, i.e., use defaults } else { call$control.siaf <- object$control.siaf # =NULL if constantsiaf call$control.siaf[names(control.siaf)] <- control.siaf } } call["optim.args"] <- if (missing(optim.args)) object["optim.args"] else { list( # use list() to enable optim.args=NULL if (is.list(optim.args)) { modifyList(object$optim.args, optim.args) } else optim.args # = NULL ) } ## Set initial values (will be appropriately subsetted and/or extended with ## zeroes inside twinstim()) call$start <- if (missing(optim.args) || (!is.null(optim.args) && !"par" %in% names(optim.args))) { ## old optim.args$par probably doesn't match updated model, ## thus we set it as "start"-argument call$optim.args$par <- NULL if (use.estimates) coef(object) else object$optim.args$par } else NULL if ("start" %in% names(extras)) { newstart <- check_twinstim_start(eval.parent(extras$start)) call$start[names(newstart)] <- newstart extras$start <- NULL } ## CAVE: the remainder is copied from stats::update.default (as at R-2.15.0) if(length(extras)) { existing <- !is.na(match(names(extras), names(call))) ## do these individually to allow NULL to remove entries. for (a in names(extras)[existing]) call[[a]] <- extras[[a]] if(any(!existing)) { call <- c(as.list(call), extras[!existing]) call <- as.call(call) } } if(evaluate) eval(call, parent.frame()) else call } .update.twinstim.model <- function (object, model) { call <- object$call call$model <- model if (model) { # add model environment call$start <- coef(object) call$optim.args$fixed <- TRUE call$cumCIF <- FALSE call$verbose <- FALSE ## evaluate in the environment calling update.twinstim() message("Setting up the model environment ...") objectWithModel <- eval(call, parent.frame(2L)) ## add the model "functions" and environment object$functions <- objectWithModel$functions environment(object) <- environment(objectWithModel) } else { # remove model environment object["functions"] <- list(NULL) environment(object) <- NULL } object$call$model <- model object } ## a terms-method is required for stepComponent() terms.twinstim <- function (x, component=c("endemic", "epidemic"), ...) { component <- match.arg(component) terms.formula(x$formula[[component]], keep.order=TRUE) } surveillance/R/algo_glrnb.R0000644000175100001440000002272712601335002015420 0ustar hornikusers################################################### ### chunk number 1: ################################################### ###################################################################### # # Implementation of GLR -- documentation converted to Rd format. # # Author: Michael Hoehle (with contributions by Valentin Wimmer) # Date: 8 Jan 2008 # ###################################################################### algo.glrnb <- function(disProgObj, control = list(range=range,c.ARL=5, mu0=NULL, alpha=0, Mtilde=1, M=-1, change="intercept", theta=NULL,dir=c("inc","dec"), ret=c("cases","value"))) { #Small helper function either <- function(cond, whenTrue, whenFalse) { if (cond) return(whenTrue) else return(whenFalse) } # Set the default values if not yet set if(is.null(control[["c.ARL",exact=TRUE]])) control$c.ARL <- 5 if(is.null(control[["change",exact=TRUE]])) control$change <- "intercept" if(is.null(control[["Mtilde",exact=TRUE]])) control$Mtilde <- 1 if(is.null(control[["M",exact=TRUE]])) control$M <- -1 if(is.null(control[["dir",exact=TRUE]])) control$dir <- "inc" if(is.null(control[["ret",exact=TRUE]])) control$ret <- "value" if(!is.null(control[["theta",exact=TRUE]])) { if(control[["theta",exact=TRUE]] == 1) { stop("Error: theta has to be larger than 1!") } } #if(is.null(control[["alpha",exact=TRUE]])) # control$alpha <- 0 #GLM (only filled if estimated) m <- NULL ################################################ #Extract the important parts from the arguments ################################################ observed <- disProgObj$observed #range is fixed, but t is modified as we iterate the cusum t <- control$range ; range <- control$range control$mu0Model <- NULL control$dir <- match.arg(control$dir, c("inc","dec")) dir <- ifelse(control$dir=="inc",1,-1) control$ret <- match.arg(control$ret, c("value","cases")) ret <- pmatch(control$ret,c("value","cases")) mod <- list() # Estimate m (the expected number of cases), i.e. parameter lambda of a # poisson distribution based on time points 1:t-1 if (is.null(control[["mu0",exact=TRUE]]) | is.list(control[["mu0",exact=TRUE]])) { #Initialize if (is.null(control[["mu0",exact=TRUE]])) control$mu0 <- list() if (is.null(control[["mu0",exact=TRUE]][["S"]])) control$mu0$S <- 1 if (is.null(control[["mu0",exact=TRUE]][["trend"]])) control$mu0$trend <- FALSE if (is.null(control[["mu0",exact=TRUE]][["refit"]])) control$mu0$refit <- FALSE control$mu0Model <- control$mu0 #Estimate using a hook function (lazy evaluation) control$mu0 <- estimateGLRNbHook()$pred mod[[1]] <- estimateGLRNbHook()$mod # if it is necessary to estimate alpha. Note: glm.nb uses a different # parametrization of the negative binomial distribution, i.e. the # variance is 'mu + mu^2/size' (?dnbinom). # Hence the correct alpha is 1/theta if(is.null(control[["alpha",exact=TRUE]])) control$alpha <- 1/mod[[1]]$theta } #Postprocess if ((control$alpha>0) & (control$ret == "cases") & (is.null(control[["theta",exact=TRUE]]))) { stop("Return of cases is currently not implemented for the GLR detector based on the negative binomial distribution!") } #The counts x <- observed[control$range] mu0 <- control$mu0 #Reserve space for the results # start with cusum[timePoint -1] = 0, i.e. set cusum[1] = 0 alarm <- matrix(data = 0, nrow = length(t), ncol = 1) upperbound <- matrix(data = 0, nrow = length(t), ncol = 1) #Setup counters for the progress doneidx <- 0 N <- 1 xm10 <- 0 noofalarms <- 0 noOfTimePoints <- length(t) #Loop as long as we are not through the sequence while (doneidx < noOfTimePoints) { # cat("Doneidx === ",doneidx,"\n") # Call the C-interface -- this should depend on the type if (control$change == "intercept") { if (is.null(control[["theta",exact=TRUE]])) { if (control$alpha == 0) { #poisson if (control$M > 0 ){ # window limited res <- .C("glr_cusum_window",as.integer(x),as.double(mu0),length(x),as.integer(control$M),as.integer(control$Mtilde),as.double(control$c.ARL),N=as.integer(0),val=as.double(numeric(length(x))),cases=as.double(numeric(length(x))),as.integer(dir),as.integer(ret),PACKAGE="surveillance") } else { # standard res <- .C("glr_cusum",as.integer(x),as.double(mu0),length(x),as.integer(control$Mtilde),as.double(control$c.ARL),N=as.integer(0),val=as.double(numeric(length(x))),cases=as.double(numeric(length(x))),as.integer(dir),as.integer(ret),PACKAGE="surveillance") } } else { #negbin res <- .C("glr_nb_window",x=as.integer(x),mu0=as.double(mu0),alpha=as.double(control$alpha),lx=length(x),Mtilde=as.integer(control$Mtilde),M=as.integer(control$M),c.ARL=as.double(control$c.ARL),N=as.integer(0),val=as.double(numeric(length(x))),dir=as.integer(dir),PACKAGE="surveillance") } } else { ###################### !is.null(control$theta) if (control$alpha == 0) { #poisson res <- .C("lr_cusum",x=as.integer(x),mu0=as.double(mu0),lx=length(x),as.double(control$theta),c.ARL=as.double(control$c.ARL),N=as.integer(0),val=as.double(numeric(length(x))),cases=as.double(numeric(length(x))),as.integer(ret),PACKAGE="surveillance") } else { #negbin res <- .C("lr_cusum_nb",x=as.integer(x),mu0=as.double(mu0),alpha=as.double(control$alpha),lx=length(x),as.double(control$theta),c.ARL=as.double(control$c.ARL),N=as.integer(0),val=as.double(numeric(length(x))),cases=as.double(numeric(length(x))),as.integer(ret),PACKAGE="surveillance") } } } else { ################### Epidemic chart ####################### if (control$change == "epi") { if (control$alpha == 0) { #pois res <- .C("glr_epi_window",as.integer(x),as.double(mu0),length(x),as.integer(control$Mtilde),as.integer(control$M),as.double(xm10),as.double(control$c.ARL),N=as.integer(0),val=as.double(numeric(length(x))),PACKAGE="surveillance") } else { res <- .C("glr_nbgeneral_window",as.integer(x),as.double(mu0),alpha=as.double(control$alpha),lx=length(x),Mtilde=as.integer(control$Mtilde),M=as.integer(control$M),xm10=as.double(xm10),c.ARL=as.double(control$c.ARL),N=as.integer(0),val=as.double(numeric(length(x))),dir=as.integer(dir),PACKAGE="surveillance") } } } ##In case an alarm found log this and reset the chart at res$N+1 if (res$N <= length(x)) { #Put appropriate value in upperbound upperbound[1:res$N + doneidx] <- either(ret == 1, res$val[1:res$N] ,res$cases[1:res$N]) alarm[res$N + doneidx] <- TRUE #Chop & get ready for next round xm10 <- x[res$N] #put start value x_0 to last value x <- x[-(1:res$N)] ; t <- t[-(1:res$N)] #If no refitting is to be done things are easy if (!is.list(control$mu0Model) || (control$mu0Model$refit == FALSE)) { mu0 <- mu0[-(1:res$N)] } else { #Update the range (how to change back??) range <- range[-(1:res$N)] mu0 <- estimateGLRNbHook()$pred mod[[noofalarms+2]] <- estimateGLRNbHook()$mod control$mu0[(doneidx + res$N + 1):length(control$mu0)] <- mu0 #Note: No updating of alpha is currently done. } noofalarms <- noofalarms + 1 } doneidx <- doneidx + res$N } #fix of the problem that no upperbound-statistic is returned after #last alarm upperbound[(doneidx-res$N+1):nrow(upperbound)] <- either(ret == 1, res$val, res$cases) #fix of the problem that no upperbound-statistic is returned #in case of no alarm if (noofalarms == 0) { upperbound <- either(ret==1, res$val, res$cases) } # ensure upper bound is positive and not NaN upperbound[is.na(upperbound)] <- 0 upperbound[upperbound < 0] <- 0 # Add name and data name to control object algoName <- either(control$alpha == 0, "glrpois:", "glrnb:") control$name <- paste(algoName, control$change) control$data <- paste(deparse(substitute(disProgObj))) control$m <- m control$mu0Model$fitted <- mod # return alarm and upperbound vectors result <- list(alarm = alarm, upperbound = upperbound, disProgObj=disProgObj,control=control) class(result) = "survRes" # for surveillance system result return(result) } ################################################### ### chunk number 2: ################################################### estimateGLRNbHook <- function() { #Fetch control object from parent control <- parent.frame()$control #The period p <- parent.frame()$disProgObj$freq #Current range to perform surveillance on range <- parent.frame()$range #Define training & test data set (the rest) train <- 1:(range[1]-1) test <- range #Perform an estimation based on all observations before timePoint #Event better - don't do this at all in the algorithm - force #user to do it himself - coz its a model selection problem data <- data.frame(y=parent.frame()$disProgObj$observed[train],t=train) #Build the model equation formula <- "y ~ 1 " if (control$mu0Model$trend) { formula <- paste(formula," + t",sep="") } for (s in 1:control$mu0Model$S) { formula <- paste(formula,"+cos(2*",s,"*pi/p*t)+ sin(2*",s,"*pi/p*t)",sep="") } #Fit the GLM m <- eval(substitute(glm.nb(form,data=data),list(form=as.formula(formula)))) #Predict mu_{0,t} return(list(mod=m,pred=as.numeric(predict(m,newdata=data.frame(t=range),type="response")))) } surveillance/R/hhh4_plot.R0000644000175100001440000007524012612444652015217 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Plot-method(s) for fitted hhh4() models ### ### Copyright (C) 2010-2012 Michaela Paul, 2012-2015 Sebastian Meyer ### $Revision: 1504 $ ### $Date: 2015-10-23 16:52:26 +0200 (Fre, 23. Okt 2015) $ ################################################################################ plot.hhh4 <- function (x, type = c("fitted", "season", "maxEV", "maps", "ri", "neweights"), ...) { stopifnot(x$convergence) cl <- sys.call() # not match.call() because plotHHH4_season() has no 'x' ## remove the type argument from the call if (is.null(names(cl)) && nargs() > 1L) { # unnamed call plot(x, type) cl[[3L]] <- NULL # remove the second argument } else { cl$type <- NULL } cl[[1L]] <- as.name(paste("plotHHH4", match.arg(type), sep="_")) eval(cl, envir = parent.frame()) } ### ### Time series of fitted component means and observed counts for selected units ### plotHHH4_fitted <- function (x, units = 1, names = NULL, col = c("grey85", "blue", "orange"), pch = 19, pt.cex = 0.6, pt.col = 1, par.settings = list(), legend = TRUE, legend.args = list(), legend.observed = FALSE, decompose = NULL, meanHHH = NULL, ...) { if (is.null(units)) units <- seq_len(x$nUnit) if (!is.null(names)) stopifnot(length(units) == length(names)) col <- if (is.null(decompose) && length(col) == 4) { ## compatibility with surveillance < 1.10-0 pt.col <- col[4L] rev(col[-4L]) } else { if (isTRUE(decompose)) decompose <- colnames(x$stsObj) plotHHH4_fitted_check_col_decompose(col, decompose, colnames(x$stsObj)) } if (is.list(par.settings)) { par.defaults <- list(mfrow = sort(n2mfrow(length(units))), mar = c(4,4,2,0.5)+.1, las = 1) par.settings <- modifyList(par.defaults, par.settings) opar <- do.call("par", par.settings) on.exit(par(opar)) } ## legend options if (is.logical(legend)) legend <- which(legend) if (!is.list(legend.args)) { if (length(legend) > 0) warning("ignored 'legend' since 'legend.args' is not a list") legend <- integer(0L) } if (length(legend) > 0) { legendidx <- 1L + c( if (legend.observed && !is.na(pch)) 0L, if (is.null(decompose)) { which(c("ne","ar","end") %in% componentsHHH4(x)) } else seq_along(col)) default.args <- list( x="topright", col=c(pt.col,rev(col))[legendidx], lwd=6, lty=c(NA,rep.int(1,length(col)))[legendidx], pch=c(pch,rep.int(NA,length(col)))[legendidx], pt.cex=pt.cex, pt.lwd=1, bty="n", inset=0.02, legend=if (is.null(decompose)) { c("observed","spatiotemporal","autoregressive","endemic")[legendidx] } else c("observed", rev(decompose), "endemic")[legendidx] ) legend.args <- modifyList(default.args, legend.args) } ## get decomposed mean if (is.null(meanHHH)) { meanHHH <- if (is.null(decompose)) { meanHHH(x$coefficients, terms.hhh4(x)) } else { decompose.hhh4(x) } } ## plot fitted values region by region meanHHHunits <- vector(mode="list", length=length(units)) names(meanHHHunits) <- if (is.character(units)) units else colnames(x$stsObj)[units] for(i in seq_along(units)) { meanHHHunits[[i]] <- plotHHH4_fitted1(x, units[i], main=names[i], col=col, pch=pch, pt.cex=pt.cex, pt.col=pt.col, decompose=decompose, meanHHH=meanHHH, ...) if (i %in% legend) do.call("legend", args=legend.args) } invisible(meanHHHunits) } plotHHH4_fitted_check_col_decompose <- function (col, decompose, unitNames) { if (is.null(decompose)) { stopifnot(length(col) == 3) } else { nUnit <- length(unitNames) stopifnot(length(decompose) == nUnit, setequal(decompose, unitNames)) if (length(col) == nUnit) { col <- c("grey85", col) # first color is for "endemic" } else if (length(col) != 1L + nUnit) { warning("'col' should be of length ", 1L + nUnit) col <- c(col[1L], rep_len(col[-1L], nUnit)) } } col } ### plot estimated component means for a single region plotHHH4_fitted1 <- function(x, unit=1, main=NULL, col=c("grey85", "blue", "orange"), pch=19, pt.cex=0.6, pt.col=1, border=col, start=x$stsObj@start, end=NULL, xaxis=NULL, xlim=NULL, ylim=NULL, xlab="", ylab="No. infected", hide0s=FALSE, decompose=NULL, meanHHH=NULL) { stsObj <- x$stsObj if (is.character(unit) && is.na(unit <- match(.unit <- unit, colnames(stsObj)))) stop("region '", .unit, "' does not exist") if (is.null(main)) main <- colnames(stsObj)[unit] col <- if (is.null(decompose) && length(col) == 4) { ## compatibility with surveillance < 1.10-0 pt.col <- col[4L] rev(col[-4L]) } else { if (isTRUE(decompose)) decompose <- colnames(x$stsObj) plotHHH4_fitted_check_col_decompose(col, decompose, colnames(x$stsObj)) } ## get observed counts obs <- observed(stsObj)[,unit] ## time range for plotting start0 <- yearepoch2point(stsObj@start, stsObj@freq, toleft=TRUE) start <- yearepoch2point(start, stsObj@freq) tp <- start0 + seq_along(obs)/stsObj@freq # all observation time points if (start < start0 || start > tp[length(tp)]) stop("'start' is not within the time range of 'x$stsObj'") end <- if(is.null(end)) tp[length(tp)] else yearepoch2point(end,stsObj@freq) stopifnot(start < end) tpInRange <- which(tp >= start & tp <= end) # plot only those tpInSubset <- intersect(x$control$subset, tpInRange) # fitted time points ## use time indexes as x-values for use of addFormattedXAxis() if (is.list(xaxis)) { tp <- seq_along(obs) start <- tpInRange[1L] end <- tpInRange[length(tpInRange)] } ## get fitted component means meanHHHunit <- if (is.null(decompose)) { if (is.null(meanHHH)) meanHHH <- meanHHH(x$coefficients, terms.hhh4(x)) sapply(meanHHH, "[", i=TRUE, j=unit) } else { if (is.null(meanHHH)) meanHHH <- decompose.hhh4(x) meanHHH[,unit,c("endemic",decompose)] } stopifnot(is.matrix(meanHHHunit), !is.null(colnames(meanHHHunit)), nrow(meanHHHunit) == length(x$control$subset)) meanHHHunit <- meanHHHunit[x$control$subset %in% tpInRange,,drop=FALSE] if (any(is.na(meanHHHunit))) { # -> polygon() would be wrong ## could be due to wrong x$control$subset wrt the epidemic lags ## a workaround is then to set 'start' to a later time point stop("predicted mean contains missing values") } ## establish basic plot window if (is.null(ylim)) ylim <- c(0, max(obs[tpInRange],na.rm=TRUE)) plot(c(start,end), ylim, xlim=xlim, xlab=xlab, ylab=ylab, type="n", xaxt = if (is.list(xaxis)) "n" else "s") if (is.list(xaxis)) do.call("addFormattedXAxis", c(list(x = stsObj), xaxis)) title(main=main, line=0.5) ## draw polygons if (is.null(decompose)) { non0 <- which(c("end", "ar", "ne") %in% componentsHHH4(x)) plotComponentPolygons( x = tp[tpInSubset], y = meanHHHunit[,c("endemic", "epi.own", "epi.neighbours")[non0],drop=FALSE], col = col[non0], border = border[non0], add = TRUE) } else { non0 <- apply(X = meanHHHunit > 0, MARGIN = 2L, FUN = any) plotComponentPolygons(x = tp[tpInSubset], y = meanHHHunit[, non0, drop = FALSE], col = col[non0], border = border[non0], add = TRUE) } ## add observed counts within [start;end] ptidx <- if (hide0s) intersect(tpInRange, which(obs > 0)) else tpInRange points(tp[ptidx], obs[ptidx], col=pt.col, pch=pch, cex=pt.cex) ## invisibly return the fitted component means for the selected region invisible(meanHHHunit) } ### function which does the actual plotting of the polygons plotComponentPolygons <- function (x, y, col = 1:6, border = col, add = FALSE) { if (!is.vector(x, mode = "numeric") || is.unsorted(x, strictly = TRUE)) stop("'x' must be a strictly increasing sequence of time points") stopifnot(nrow(y <- as.matrix(y)) == (nTime <- length(x))) # y >= 0 yc <- if ((nPoly <- ncol(y)) > 1L) { apply(X = y, MARGIN = 1L, FUN = cumsum) # nPoly x nTime } else t(y) if (!add) { ## establish basic plot window plot(range(x), range(yc[nPoly,]), type = "n") } ## recycle graphical parameters col <- rep_len(col, nPoly) border <- rep_len(border, nPoly) ## draw polygons xpoly <- c(x[1L], x, x[length(x)]) for (poly in nPoly:1) { polygon(x = xpoly, y = c(0, yc[poly, ], 0), col = col[poly], border = border[poly]) } } ### ### Maps of the fitted mean components averaged over time ### plotHHH4_maps <- function (x, which = c("mean", "endemic", "epi.own", "epi.neighbours"), prop = FALSE, main = which, zmax = NULL, col.regions = hcl.colors(10), labels = FALSE, sp.layout = NULL, ..., map = x$stsObj@map, meanHHH = NULL) { which <- match.arg(which, several.ok = TRUE) ## extract district-specific mean components if (is.null(meanHHH)) { meanHHH <- meanHHH(x$coefficients, terms.hhh4(x)) } ## select relevant components and convert to an array meanHHH <- simplify2array( meanHHH[c("mean", "endemic", "epi.own", "epi.neighbours")], higher = TRUE) ## convert to proportions if (prop) { meanHHH[,,-1L] <- meanHHH[,,-1L,drop=FALSE] / c(meanHHH[,,1L]) } ## select only 'which' components meanHHH <- meanHHH[,,which,drop=FALSE] ## check map map <- as(map, "SpatialPolygonsDataFrame") if (!all(dimnames(meanHHH)[[2L]] %in% row.names(map))) { stop("'row.names(map)' do not cover all fitted districts") } ## average over time comps <- as.data.frame(colMeans(meanHHH, dims = 1)) ## attach to map data map@data <- cbind(map@data, comps[row.names(map),,drop=FALSE]) ## color key range if (is.null(zmax)) { zmax <- if (prop) { ceiling(10*sapply(comps, max))/10 } else ceiling(sapply(comps, max)) ## sub-components should have the same color range .idxsub <- setdiff(seq_along(zmax), match("mean", names(zmax))) zmax[.idxsub] <- suppressWarnings(max(zmax[.idxsub])) } ## add sp.layout item for district labels if (!is.null(layout.labels <- layout.labels(map, labels))) { sp.layout <- c(sp.layout, list(layout.labels)) } ## produce maps grobs <- mapply( FUN = function (zcol, main, zmax) spplot(map, zcol = zcol, main = main, at = seq(0, zmax, length.out = length(col.regions) + 1L), col.regions = col.regions, sp.layout = sp.layout, ...), zcol = names(comps), main = main, zmax = zmax, SIMPLIFY = FALSE, USE.NAMES = FALSE) if (length(grobs) == 1L) { grobs[[1L]] } else { mfrow <- sort(n2mfrow(length(grobs))) gridExtra::grid.arrange(grobs = grobs, nrow = mfrow[1L], ncol = mfrow[2L]) } } ### ### Map of estimated random intercepts of a specific component ### plotHHH4_ri <- function (x, component, labels = FALSE, sp.layout = NULL, gpar.missing = list(col="darkgrey", lty=2, lwd=2), ...) { ranefmatrix <- ranef(x, tomatrix=TRUE) if (is.null(ranefmatrix)) stop("model has no random effects") stopifnot(length(component) == 1L) if (is.na(comp <- pmatch(component, colnames(ranefmatrix)))) stop("'component' must (partially) match one of ", paste(dQuote(colnames(ranefmatrix)), collapse=", ")) map <- as(x$stsObj@map, "SpatialPolygonsDataFrame") if (length(map) == 0L) stop("'x$stsObj' has no map") map$ranef <- ranefmatrix[,comp][row.names(map)] if (is.list(gpar.missing) && any(is.na(map$ranef))) { sp.layout <- c(sp.layout, c(list("sp.polygons", map[is.na(map$ranef),]), gpar.missing)) } if (!is.null(layout.labels <- layout.labels(map, labels))) { sp.layout <- c(sp.layout, list(layout.labels)) } spplot(map[!is.na(map$ranef),], zcol = "ranef", sp.layout = sp.layout, ...) } ### ### Plot the course of the dominant eigenvalue of one or several hhh4-fits ### plotHHH4_maxEV <- function (..., matplot.args = list(), refline.args = list(), legend.args = list()) { objnams <- unlist(lapply(match.call(expand.dots=FALSE)$..., deparse)) objects <- getHHH4list(..., .names = objnams) ## get time points epoch <- attr(objects, "epoch") start <- attr(objects, "start") freq <- attr(objects, "freq") start0 <- yearepoch2point(start, freq, toleft=TRUE) tp <- start0 + seq_along(epoch) / freq ## compute course of dominant eigenvalue for all models maxEV <- sapply(objects, getMaxEV, simplify=TRUE, USE.NAMES=TRUE) ## line style matplot.args <- modifyList( list(type="l", col=c(1,2,6,3), lty=c(1,3,2,4), lwd=1.7, cex=1, pch=NULL, xlab="", ylab="dominant eigenvalue", ylim=c(0,max(2,maxEV))), matplot.args) ## main plot do.call("matplot", c(list(x=tp, y=maxEV), matplot.args)) ## add reference line if (is.list(refline.args)) do.call("abline", modifyList(list(h=1, lty=3, col="grey"), refline.args)) ## add legend if (missing(legend.args) && length(objects) == 1) legend.args <- NULL # omit legend if (is.list(legend.args)) { legend.args <- modifyList( c(list(x="topright", inset=0.02, legend=names(objects), bty="n"), matplot.args[c("col", "lwd", "lty", "pch")], with(matplot.args, list(pt.cex=cex, text.col=col))), legend.args) do.call("legend", legend.args) } ## done invisible(maxEV) } getMaxEV <- function (x) { Lambda <- createLambda(x) if (identical(type <- attr(Lambda, "type"), "zero")) { rep.int(0, nrow(x$stsObj)) } else { diagonal <- identical(type, "diagonal") vapply(X = seq_len(nrow(x$stsObj)), FUN = function (t) maxEV(Lambda(t), symmetric = FALSE, diagonal = diagonal), FUN.VALUE = 0, USE.NAMES = FALSE) } } ## generate a function that computes the Lambda_t matrix createLambda <- function (object) { nTime <- nrow(object$stsObj) nUnit <- object$nUnit if (identical(componentsHHH4(object), "end")) { # no epidemic components zeromat <- matrix(0, nUnit, nUnit) Lambda <- function (t) zeromat attr(Lambda, "type") <- "zero" return(Lambda) } meanHHH <- meanHHH(object$coefficients, terms(object), subset=seq_len(nTime)) W <- getNEweights(object) Wt <- if (is.null(W)) { NULL } else if (is.matrix(W)) { function (t) W } else { function (t) W[,,t] } type <- NULL Lambda <- if (is.null(Wt)) { # no neighbourhood component type <- "diagonal" function (t) { stopifnot(isScalar(t) && t > 0 && t <= nTime) diag(meanHHH$ar.exppred[t,], nUnit, nUnit) } } else { function (t) { stopifnot(isScalar(t) && t > 0 && t <= nTime) Lambda <- meanHHH$ne.exppred[t,] * Wt(t) diag(Lambda) <- diag(Lambda) + meanHHH$ar.exppred[t,] Lambda } } attr(Lambda, "type") <- type Lambda } ## determine the dominant eigenvalue of the Lambda matrix maxEV <- function (Lambda, symmetric = isSymmetric.matrix(Lambda), diagonal = FALSE) { maxEV <- if (diagonal) { max(Lambda) # faster than max(diag(Lambda)) } else { eigen(Lambda, symmetric = symmetric, only.values = TRUE)$values[1L] } ## dominant eigenvalue may be complex if (is.complex(maxEV)) { if (Im(maxEV) == 0) { # if other eigenvalues are complex Re(maxEV) } else { warning("dominant eigenvalue is complex, using its absolute value") abs(maxEV) } } else { maxEV } } ### ### Plot estimated seasonality (sine-cosine terms) of one or several hhh4-fits ### either as multiplicative effect on the 'components' (intercept=FALSE) ### or with intercept=TRUE, which only makes sense if there are no further ### non-centered covariates and offsets. ### plotHHH4_season <- function (..., components = NULL, intercept = FALSE, xlim = NULL, ylim = NULL, xlab = NULL, ylab = "", main = NULL, par.settings = list(), matplot.args = list(), legend = NULL, legend.args = list(), refline.args = list(), unit = 1) { objnams <- unlist(lapply(match.call(expand.dots=FALSE)$..., deparse)) objects <- getHHH4list(..., .names = objnams) freq <- attr(objects, "freq") components <- if (is.null(components)) { intersect(c("end", "ar", "ne"), unique(unlist( lapply(objects, componentsHHH4), use.names = FALSE))) } else { match.arg(components, choices = c("ar", "ne", "end", "maxEV"), several.ok = TRUE) } ## x-axis if (is.null(xlim)) xlim <- c(1,freq) if (is.null(xlab)) xlab <- if (freq==52) "week" else if (freq==12) "month" else "time" ## auxiliary function for an argument list "x" with named "defaults" list withDefaults <- function(x, defaults) { if (is.null(x)) defaults else if (is.list(x)) { if (is.null(names(x))) { # x must be complete stopifnot(length(x) == length(defaults)) setNames(x, names(defaults)) } else modifyList(defaults, x) # x might be a subset of parameters } else if (is.atomic(x)) { setNames(rep(list(x), length(defaults)), names(defaults)) } else stop("'", deparse(substitute(x)), "' is not suitably specified") } ## component-specific arguments ylim <- withDefaults(ylim, list(ar=NULL, ne=NULL, end=NULL, maxEV=NULL)) ylab <- withDefaults(ylab, list(ar=expression(hat(lambda)), ne=expression(hat(phi)), end=expression(hat(nu)), maxEV="dominant eigenvalue")) main <- withDefaults(main, list(ar="autoregressive component", ne="spatiotemporal component", end="endemic component", maxEV="dominant eigenvalue")) anyMain <- any(unlist(lapply(main, nchar), recursive=FALSE, use.names=FALSE) > 0) ## basic graphical settings if (is.list(par.settings)) { par.defaults <- list(mfrow=sort(n2mfrow(length(components))), mar=c(4,5,if(anyMain) 2 else 1,1)+.1, las=1) par.settings <- modifyList(par.defaults, par.settings) opar <- do.call("par", par.settings) on.exit(par(opar)) } ## line style matplot.args <- modifyList(list(type="l", col=c(1,2,6,3), lty=c(1,3,2,4), lwd=1.7, cex=1, pch=NULL), matplot.args) ## legend options if (is.null(legend)) legend <- length(objects) > 1 if (is.logical(legend)) legend <- which(legend) if (!is.list(legend.args)) { if (length(legend) > 0) warning("ignored 'legend' since 'legend.args' is not a list") legend <- integer(0L) } if (length(legend) > 0) { default.args <- c( list(x="topright", inset=0.02, legend=names(objects), bty="n"), matplot.args[c("col", "lwd", "lty", "pch")], with(matplot.args, list(pt.cex=cex, text.col=col)) ) legend.args <- modifyList(default.args, legend.args) } ## plot seasonality in individual model components seasons <- list() for(comp in setdiff(components, "maxEV")){ s2 <- lapply(objects, getSeason, component = comp, unit = unit) seasons[[comp]] <- exp(vapply(s2, FUN = if (intercept) { function (intseas) do.call("+", intseas) } else { function (intseas) intseas$season # disregard intercept }, FUN.VALUE = numeric(freq), USE.NAMES = TRUE)) do.call("matplot", # x defaults to 1:freq c(list(seasons[[comp]], xlim=xlim, ylim=ylim[[comp]], xlab=xlab, ylab=ylab[[comp]], main=main[[comp]]), matplot.args)) if (match(comp, components) %in% legend) do.call("legend", legend.args) } ## plot seasonality of dominant eigenvalue if ("maxEV" %in% components) { seasons[["maxEV"]] <- vapply(objects, FUN = function (obj) { getMaxEV_season(obj)$maxEV.season }, FUN.VALUE = numeric(freq), USE.NAMES = TRUE) do.call("matplot", c(list(seasons[["maxEV"]], xlim=xlim, ylim=if (is.null(ylim[["maxEV"]])) c(0,max(2,seasons[["maxEV"]])) else ylim[["maxEV"]], xlab=xlab, ylab=ylab[["maxEV"]], main=main[["maxEV"]]), matplot.args)) if (is.list(refline.args)) do.call("abline", modifyList(list(h=1, lty=3, col="grey"), refline.args)) if (4 %in% legend) do.call("legend", legend.args) } ## invisibly return the data that has been plotted invisible(seasons) } #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # get estimated intercept and seasonal pattern in the different components # CAVE: other covariates and offsets are ignored #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ getSeason <- function(x, component = c("end", "ar", "ne"), unit = 1) { stopifnot(inherits(x, c("hhh4","ah4"))) component <- match.arg(component) startseason <- getSeasonStart(x) freq <- x$stsObj@freq if (is.character(unit)) unit <- match(unit, colnames(x$stsObj)) ## return -Inf is component is not in the model (-> exp(-Inf) = 0) if (!component %in% componentsHHH4(x)) return(list(intercept=-Inf, season=rep.int(-Inf, freq))) ## get the intercept est <- fixef(x, reparamPsi=FALSE) intercept <- unname(est[grep(paste0("^", component, "\\.(1|ri)"), names(est))]) if (length(intercept) == 0) { intercept <- 0 # no intercept (not standard) } else if (length(intercept) > 1) { # unit-specific intercepts if (length(intercept) != ncol(x$stsObj)) stop(component,"-component has incomplete unit-specific intercepts") intercept <- intercept[unit] if (is.na(intercept)) stop("the specified 'unit' does not exist") } ## get seasonality terms (relying on sin(2*pi*t/52)-kind coefficient names) coefSinCos <- est[grep(paste0("^",component, "\\.(sin|cos)\\("), names(est))] if (unitspecific <- length(grep(").", names(coefSinCos), fixed=TRUE))) { if (unitspecific < length(coefSinCos)) stop("cannot handle partially unit-specific seasonality") coefSinCos <- coefSinCos[grep(paste0(").",colnames(x$stsObj)[unit]), names(coefSinCos), fixed=TRUE)] ## drop .unitname-suffix since non-syntactic (cannot reformulate()) names(coefSinCos) <- sub("\\)\\..+$", ")", names(coefSinCos)) } if (length(coefSinCos)==0) return(list(intercept=intercept, season=rep.int(0,freq))) fSinCos <- reformulate( sub(paste0("^",component,"\\."), "", names(coefSinCos)), intercept=FALSE) mmSinCos <- model.matrix(fSinCos, data=data.frame(t=startseason-1 + seq_len(freq))) ## Done list(intercept=intercept, season=as.vector(mmSinCos %*% coefSinCos)) } #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # compute dominant eigenvalue of Lambda_t # CAVE: no support for Lambda_it #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ getMaxEV_season <- function (x) { stopifnot(inherits(x, c("hhh4","ah4"))) nUnits <- x$nUnit freq <- x$stsObj@freq components <- componentsHHH4(x) ## CAVE: this function ignores epidemic covariates/offsets ## and unit-specific seasonality if (nUnits > 1L && any(c("ar", "ne") %in% components)) { compOK <- vapply(x$control[c("ar","ne")], FUN = function (comp) { terms <- terms(x)$terms epiterms <- terms[,terms["offsetComp",] %in% seq_len(2L),drop=FALSE] identical(as.numeric(comp$offset), 1) && length(all.vars(removeTimeFromFormula(comp$f))) == 0L && all(!unlist(epiterms["unitSpecific",])) }, FUN.VALUE = TRUE, USE.NAMES = FALSE) if (any(!compOK)) warning("epidemic components have (unit-specific) ", "covariates/offsets not accounted for;\n", " use getMaxEV() or plotHHH4_maxEV()") } ## global intercepts and seasonality s2.lambda <- getSeason(x, "ar") s2.phi <- getSeason(x, "ne") ## unit-specific intercepts ris <- ranef(x, tomatrix=TRUE) ri.lambda <- ris[,pmatch("ar.ri", colnames(ris), nomatch=0L),drop=TRUE] if (length(ri.lambda) == 0L) ri.lambda <- rep.int(0, nUnits) ri.phi <- ris[,pmatch("ne.ri", colnames(ris), nomatch=0L),drop=TRUE] if (length(ri.phi) == 0L) ri.phi <- rep.int(0, nUnits) ## get neighbourhood weights as a function of time W <- getNEweights(x) # NULL, matrix or 3-dim array if (!is.null(W) && !is.matrix(W)) stop("neighbourhood weights are time-varying; ", # and thus probably changing within or across seasons "use getMaxEV() or plotHHH4_maxEV()") ## create the Lambda_t matrix createLambda <- function (t) { Lambda <- if ("ne" %in% components) { exp(s2.phi$intercept + ri.phi + if(t==0) 0 else s2.phi$season[t]) * W } else matrix(0, nUnits, nUnits) if ("ar" %in% components) { diag(Lambda) <- diag(Lambda) + exp(s2.lambda$intercept + ri.lambda + if(t==0) 0 else s2.lambda$season[t]) } Lambda } ## do this for t in 0:freq diagonal <- !("ne" %in% components) .maxEV <- function (t) { maxEV(createLambda(t), symmetric = FALSE, diagonal = diagonal) } maxEV.const <- .maxEV(0) maxEV.season <- if (all(c(s2.phi$season, s2.lambda$season) %in% c(-Inf, 0))) { rep.int(maxEV.const, freq) } else { vapply(X = seq_len(freq), FUN = .maxEV, FUN.VALUE = 0, USE.NAMES = FALSE) } ## Done list(maxEV.season = maxEV.season, maxEV.const = maxEV.const, Lambda.const = createLambda(0)) } ## Determine the time point t of the start of a season in a hhh4() fit. ## If \code{object$stsObj@start[2] == 1}, it simply equals ## \code{object$control$data$t[1]}. Otherwise, the \code{stsObj} time series ## starts within a year (at sample \code{s}, say) and the beginning of ## the next season is ## \code{object$control$data$t[1] + object$stsObj@freq - s + 1}. getSeasonStart <- function (object) { if ((startsample <- object$stsObj@start[2]) == 1) { object$control$data$t[1L] } else { object$control$data$t[1L] + object$stsObj@freq-startsample + 1 } } ### ### plot neighbourhood weight as a function of distance (neighbourhood order) ### plotHHH4_neweights <- function (x, plotter = boxplot, ..., exclude = 0, maxlag = Inf) { plotter <- match.fun(plotter) ## orders of neighbourhood (o_ji) nbmat <- neighbourhood(x$stsObj) if (all(nbmat %in% 0:1)) { message("'neighbourhood(x$stsObj)' is binary; ", "computing neighbourhood orders ...") nbmat <- nbOrder(nbmat, maxlag=maxlag) } ## extract (estimated) weight matrix (w_ji) W <- getNEweights(x) if (is.null(W)) { # if no spatio-temporal component in the model W <- nbmat W[] <- 0 } ## draw the boxplot Distance <- factor(nbmat, exclude = exclude) notexcluded <- which(!is.na(Distance)) Distance <- Distance[notexcluded] Weight <- W[notexcluded] plotter(Weight ~ Distance, ...) } ### ### auxiliary functions ### yearepoch2point <- function (yearepoch, frequency, toleft=FALSE) yearepoch[1L] + (yearepoch[2L] - toleft) / frequency getHHH4list <- function (..., .names = NA_character_) { objects <- list(...) if (length(objects) == 1L && is.list(objects[[1L]]) && inherits(objects[[1L]][[1L]], c("hhh4","ah4"))) { ## ... is a single list of fits objects <- objects[[1L]] if (is.null(names(objects))) names(objects) <- seq_along(objects) } else { names(objects) <- if (is.null(names(objects))) .names else { ifelse(nzchar(names(objects)), names(objects), .names) } } if (!all(sapply(objects, inherits, what=c("hhh4","ah4")))) stop("'...' must consist of hhh4()-fits only") ## check common epoch, start and frequency and append them as attributes epoch <- unique(t(sapply(objects, function(x) x$stsObj@epoch))) if (nrow(epoch) > 1) stop("supplied hhh4-models obey different 'epoch's") attr(objects, "epoch") <- drop(epoch) start <- unique(t(sapply(objects, function(x) x$stsObj@start))) if (nrow(start) > 1) stop("supplied hhh4-models obey different start times") attr(objects, "start") <- drop(start) freq <- unique(sapply(objects, function(x) x$stsObj@freq)) if (length(freq)>1) stop("supplied hhh4-models obey different frequencies") attr(objects, "freq") <- freq ## done return(objects) } surveillance/R/sim_pointSource.R0000644000175100001440000000423311731650466016505 0ustar hornikusers################################################### ### chunk number 1: ################################################### # Programme to simulate epidemies which were # introduced by point sources. # The basis of this proagramme is a combination of # a Hidden Markov Modell (to get random dates # for outbreaks) and a simple Model to simulate # the epidemy. # # Parameters: # r - probability to get a new epidemy at time i if there was one # at time i-1 # p - probability to get no new epidemy at time i if there was none # at time i-1 # length - number of timesteps to visit # # Parameters for the background: # A - Amplitude, default = 1. # alpha - Incidence, default = 1. # beta - time dependent regression coefficient, default = 0. # phi - weeks of seaonal move, default = 0. # frequency - frequency of the sinus, default = 1. # state - a eventually given markov chain, # which defines the status at this time (outbreak or not) # K - additional weigth for an outbreak sim.pointSource <- function(p = 0.99, r = 0.01, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K){ if(is.null(state)){ # create a markov-chain state <- matrix(data = 0, ncol = 1, nrow = length) state[1] <- 0 #hoehle - fix: rbinom(1,1,0.5) # always begin with a zero # create the transition matrix transitionMatrix <- matrix(data = c(p, (1-r),(1-p), r), nrow = 2, ncol = 2) if(length(state) > 1){ # just do it if there is a preceding value for (i in 2:length){ # check the matrix for the correct line and take the right # probability. The last value of state is the newest. state[i] <- rbinom(1,1,transitionMatrix[state[i-1] + 1, 2]) } } } # go sure to have the rigth length as parameter length <- length(state) observed <-sim.seasonalNoise(A, alpha, beta, phi, length, frequency, state, K)$seasonalBackground result <- list(observed = observed, state = state, A = A, alpha = alpha, beta = beta, K = K, p = p, r = r, freq=52, start=c(2001,1)) class(result) = "disProg" # for disease progress return(result) } surveillance/R/calibration_null.R0000644000175100001440000001572412616616450016651 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Expectation and variance of proper scoring rules for Poisson and NegBin ### Reference: Wei and Held (2014), Test, 23, 787-805 ### ### Copyright (C) 2013-2014 Wei Wei, 2015 Sebastian Meyer ### $Revision: 1512 $ ### $Date: 2015-11-05 10:11:03 +0100 (Don, 05. Nov 2015) $ ################################################################################ ## wrapper function calling the necessary "EV" function for the selected score score_EV <- function (mu, size = NULL, tolerance = 1e-4, which = c("dss", "logs", "rps")) { which <- match.arg(which) if (which == "dss") return(dss_EV(mu, size)) ## for "logs" and "rps", the EV function only works with a single prediction ## -> apply to each mu (size) res <- if (is.null(size)) { # Poisson vapply(X = mu, FUN = paste0(which, "_EV_1P"), FUN.VALUE = c(E = 0, V = 0), tolerance = tolerance, USE.NAMES = FALSE) } else { # NegBin mapply(FUN = paste0(which, "_EV_1NB"), mu = mu, size = size, MoreArgs = list(tolerance = tolerance), SIMPLIFY = TRUE, USE.NAMES = FALSE) } ## 'res' has dimension 2 x length(mu) list(E = res[1L,], V = res[2L,]) } ########################## ### Dawid-Sebastiani Score ########################## dss_EV <- function (mu, size = NULL) { sigma2 <- if (is.null(size)) mu else mu * (1 + mu/size) E <- 1 + log(sigma2) V <- if (is.null(size)) { 2 + 1/sigma2 } else { 2 + 6/size + 1/sigma2 } list(E = E, V = V) } ##################### ### Logarithmic Score ##################### ## for a single Poisson prediction logs_EV_1P <- function (mu, tolerance = 1e-4) # tolerance is in absolute value { ## use the same kmax for expectation and variance -> shared computations ## K2 is always a bit larger than K1, so we use K2 kmax <- if (mu^3 < tolerance/.Machine$double.eps/2) { ## we can calculate K2 from Theorem 1 (b) qpois(1 - tolerance/(mu^3 + 6*mu^2 + 7*mu + 1), lambda = mu) + 3 } else { # very high quantile (e.g., 1 - 1e-16) would yield Inf mu + 10 * sqrt(mu) } kseq <- seq_len(kmax) ## compute values required by both E and V fseq <- dpois(kseq, lambda = mu) logfactseq <- lfactorial(kseq) ## expectation E <- if (mu > tolerance^(-1/4)) { # fast version for "large" mu ## approximation error is of order 1/mu^4 0.5 + 0.5*log(2*pi*mu) - 1/12/mu - 1/24/mu^2 - 19/360/mu^3 } else { ##kmax1 <- qpois(1 - tolerance/(mu^2 + 3*mu + 1), lambda = mu) + 2 seqq1 <- fseq * logfactseq mu * (1-log(mu)) + sum(seqq1) } ## variance (does it converge to 0.5 as mu -> Inf ?) seqq2 <- (logfactseq - kseq * log(mu))^2 * fseq V <- sum(seqq2) - (E - mu)^2 c(E = E, V = V) } ## for a single NegBin prediction logs_EV_1NB <- function (mu, size, tolerance = 1e-4) { ## TODO: replace simple kmax by formulae from the paper kmax <- qnbinom(1-tolerance/10, mu = mu, size = size) + 5 kseq <- 0:kmax ## compute values required by both E and V fseq <- dnbinom(kseq, mu = mu, size = size) lgammaseq <- lbeta(kseq + 1L, size) + log(kseq + size) ## expectation seqq1 <- lgammaseq * fseq E <- sum(seqq1) - size*log(size) - mu*log(mu) + (mu+size)*log(mu+size) ## variance con2 <- E - size * log(1 + mu/size) seqq2 <- (lgammaseq + kseq * log(1 + size/mu))^2 * fseq V <- sum(seqq2) - con2^2 ## check against formulation in the paper (Equation 11): ## con2paper <- E + size*log(size) - size*log(size+mu) - lgamma(size) ## seqq2paper <- (-lgamma(kseq+size) + lgamma(kseq+1L) + kseq*log(1+size/mu))^2 * fseq ## Vpaper <- sum(seqq2paper) - con2paper^2 ## => V and Vpaper are only identical for kmax -> Inf c(E = E, V = V) } ############################ ### Ranked Probability Score ############################ ## for a single Poisson prediction rps_EV_1P <- function (mu, tolerance = 1e-4) # tolerance is in absolute value { ## expectation if (requireNamespace("gsl", quietly = TRUE)) { ## faster and more accurate implementation (works for larger mu) E <- mu * gsl::bessel_I0_scaled(2*mu, give=FALSE, strict=TRUE) + mu * gsl::bessel_I1_scaled(2*mu, give=FALSE, strict=TRUE) } else { E <- mu * besselI(2*mu, 0, expon.scaled = TRUE) + mu * besselI(2*mu, 1, expon.scaled = TRUE) if (identical(E, 0)) { ## R's besselI() works fine for mu <= 50000 (on my .Machine) ## but returns 0 (buffer overflow) for larger arguments warning("'mu' is too large for besselI(), install package \"gsl\"") return(c(E = NA_real_, V = NA_real_)) } } ## variance kmax <- max(qpois(1 - tolerance/(10*mu^2 + mu), lambda = mu) + 2, 8) # cf. Theorem 2 (a) kseq <- 0:kmax fseq <- dpois(kseq, lambda = mu) Fseq <- cumsum(fseq) # = ppois(kseq, lambda = mu) psiseq <- (kseq - mu) * (2*Fseq - 1) + 2*mu * fseq seqq <- psiseq^2 * fseq V <- sum(seqq) - 4 * E^2 c(E = E, V = V) } ## for a single NegBin prediction rps_EV_1NB <- function (mu, size, tolerance = 1e-4) { ## determine kmax for Var0(RPS), which is always > kmax for E0(RPS), ## cf. Theorem 2 (c), here corrected (1-) and simplified l5 <- (mu + 1)^2 + 1 kmax2 <- max(qnbinom(1-tolerance/l5, mu = mu*(1+2/size), size = size+2) + 2, 8) ## the other listed terms seem to be always smaller than the first one: ## qnbinom(1-tolerance/l5, mu = mu, size = size) ## qnbinom(1-tolerance/l5, mu = mu*(1+1/size), size = size+1) + 1 kseq2 <- 0:kmax2 fseq2 <- dnbinom(kseq2, mu = mu, size = size) Fseq2 <- cumsum(fseq2) # = pnbinom(kseq2, mu = mu, size = size) ## expectation ghgz_part <- mu * (1 + mu/size) ghgz <- 4 * ghgz_part / size E <- if (ghgz < 1 && requireNamespace("gsl", quietly = TRUE)) { ghgz_part * gsl::hyperg_2F1(1+size, 0.5, 2, -ghgz, give = FALSE, strict = TRUE) } else { kmax1 <- max(qnbinom(1-tolerance/mu, mu = mu*(1+1/size), size = size+1) + 1, 8) # cf. Theorem 2 (b) kseq1 <- seq_len(kmax1) seqq1 <- vapply( X = kseq1, # we could use kmax2 (> kmax1) also here FUN = function (i) fseq2[i+1L] * sum((i:1) * fseq2[seq_len(i)]), FUN.VALUE = 0, USE.NAMES = FALSE) sum(seqq1) } ## variance psiseq <- kseq2 * (2 * Fseq2 - 1) + mu * (1 - 2 * pnbinom(kseq2 - 1, mu = mu + mu/size, size = size + 1)) seqq <- psiseq^2 * fseq2 V <- sum(seqq) - 4 * E^2 c(E = E, V = V) } surveillance/R/plot_xtable.R0000644000175100001440000000040212035760242015622 0ustar hornikusers################################################### ### chunk number 1: ################################################### compMatrix.writeTable <- function (compMatrix) { xtable(compMatrix, display = c("s", rep("d", 4), rep("G", 4)), vsep = "|") } surveillance/R/twinSIR.R0000644000175100001440000005315612420322611014652 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Function 'twinSIR' performs (penalized) maximum likelihood inference ### for the Hoehle (2009) model. Now with REML estimation of smoothing ### parameter lambda. ### ### Copyright (C) 2008-2009 Michael Hoehle, 2008-2009, 2014 Sebastian Meyer ### $Revision: 1079 $ ### $Date: 2014-10-18 01:26:00 +0200 (Sam, 18. Okt 2014) $ ################################################################################ ## ATTENTION: the .loglik and .score functions assume atRiskY == 1 data ###################################################################### # Log-Likelihood function # # PARAMS: # theta - parameter vector c(alpha,beta), where # beta also contains the baseline coefficients in the first place # X - covariate matrix related to alpha, i.e. the epidemic component # Z - covariate matrix related to beta, i.e. the Cox-like endemic component # survs - data.frame with columns id, start, stop and event # weights - vector of length nrow(X) indicating the number of individuals # with the same covariates. weights are allowed to change over time. # Note: it is assumed that none of the individuals covered by # "weights" can have an actual event, if so they need to have their # own row ###################################################################### .loglik <- function(theta, X, Z, survs, weights) { # Calculate epidemic (e) and endemic (h) component of the infection intensity eh <- .eh(theta, X, Z) # Calculate infection intensity assuming atRiskY == 1 for all rows lambdaNoY <- rowSums(eh) # dN Part of the loglik isEvent <- survs$event == 1 events <- which(isEvent) intdN <- numeric(length(isEvent)) # zeros intdN[events] <- weights[events] * log(lambdaNoY[events]) # here one might have got -Inf values in case of 0-intensity at an event time # lambda integral of the log-likelihood dt <- survs$stop - survs$start intlambda <- weights * lambdaNoY * dt # Return the log-likelihood loglik <- sum( intdN - intlambda ) return(loglik) } ###################################################################### # Penalized log-likelihood function # Additional Params: # lambda.smooth - smoothing parameter # K - penalty matrix on the beta component ###################################################################### .ploglik <- function(theta, X, Z, survs, weights, lambda.smooth, K) { loglik <- .loglik(theta, X, Z, survs, weights) if (lambda.smooth == 0) { return(loglik) } # Add penalty term and return the penalized log-likelihood beta <- theta[ncol(X) + seq_len(ncol(Z))] penalty <- lambda.smooth/2 * drop(t(beta) %*% K %*% beta) return(loglik - penalty) } ###################################################################### # Score function # Params: see .loglik ###################################################################### .score <- function(theta, X, Z, survs, weights) { dimX <- dim(X) nRows <- dimX[1] px <- dimX[2] pz <- ncol(Z) isEvent <- survs$event == 1 # event indicator for the dN integral events <- which(isEvent) dt <- survs$stop - survs$start # for the dt integral # Calculate epidemic (e) and endemic (h) component of the infection intensity eh <- .eh(theta, X, Z) h <- eh[,2,drop=TRUE] # Calculate infection intensity at event times lambdaEvents <- rowSums(eh[events,,drop=FALSE]) score <- if (px > 0L) { wX <- X * weights part1intdN <- matrix(0, nrow = nRows, ncol = px, dimnames = dimnames(X)) part1intdN[events,] <- wX[events,] / lambdaEvents part1intlambda <- wX * dt colSums(part1intdN - part1intlambda) } else NULL if (pz > 0L) { wZh <- Z * (h * weights) part2intdN <- matrix(0, nrow = nRows, ncol = pz, dimnames = dimnames(Z)) part2intdN[events,] <- wZh[events,] / lambdaEvents part2intlambda <- wZh * dt part2 <- colSums(part2intdN - part2intlambda) score <- c(score, part2) } return(score) } ###################################################################### # Penalized Score function # Additional Params: see .ploglik ###################################################################### .pscore <- function(theta, X, Z, survs, weights, lambda.smooth, K, ...) { score <- .score(theta, X, Z, survs, weights) if (lambda.smooth == 0) { return(score) } # Add penalty term and return the penalized Score function beta <- theta[ncol(X) + seq_len(ncol(Z))] penalty <- c(rep.int(0, ncol(X)), lambda.smooth * K %*% beta) return(score - penalty) } ###################################################################### # Fisher information matrix function # Params: see .loglik ###################################################################### .fisherinfo <- function(theta, X, Z, survs, weights) { px <- ncol(X) pz <- ncol(Z) isEvent <- survs$event == 1 # event indicator events <- which(isEvent) # Fisher matrix calculation only incorporates data at event times! Xevents <- X[events,,drop = FALSE] Zevents <- Z[events,,drop = FALSE] # Calculate epidemic (e) and endemic (h) component of the infection intensity eh <- .eh(theta, Xevents, Zevents) h <- eh[,2,drop=TRUE] # Calculate infection intensity lambda <- rowSums(eh) # calculate intdN of d/dtheta log(lambda_i(t)) for all individuals with events wpl <- weights[events] / lambda dloglambda <- if (px > 0L) Xevents * wpl else NULL if (pz > 0L) { dloglambda <- cbind(dloglambda, Zevents * (h * wpl)) } # Build the optional variation process (Martinussen & Scheike, p64) fisherinfo <- matrix(0, nrow=px+pz, ncol=px+pz) for (i in 1:nrow(dloglambda)) { x <- dloglambda[i,,drop=FALSE] # single-ROW matrix fisherinfo <- fisherinfo + crossprod(x) # t(x) %*% x } return(fisherinfo) } ###################################################################### # Fisher information matrix function # Additional Params: see .ploglik ###################################################################### .pfisherinfo <- function(theta, X, Z, survs, weights, lambda.smooth, K) { fisherinfo <- .fisherinfo(theta, X, Z, survs, weights) if (lambda.smooth == 0) { return(fisherinfo) } # Add penalty term and return the penalized Fisher information matrix penalty <- matrix(0, ncol=ncol(fisherinfo), nrow=nrow(fisherinfo)) zIndex <- ncol(X) + seq_len(ncol(Z)) penalty[zIndex,zIndex] <- lambda.smooth * K return(fisherinfo + penalty) } ###################################################################### # Marginal likelihood of the log(smoothing) parameter as given # by a Laplace approximation c.f. Kneib & Fahrmeir (2006), p.9. # or Cai et al (2002) # # Params: # log.lambda.smooth - log parametrization to ensure positive value of # lambda.smooth # theta - fixed regression parameters # X - design matrix of additive part # Z - design matrix of multiplicative part # survs - the data.frame containing the data in survs format # weights - for weighting individual entries # K - smoother matrix # # Returns: # value of lmarg ###################################################################### .lmarg.lambda <- function(log.lambda.smooth, theta, X, Z, survs, weights, K) { #Contribution of the penalized likelihood loglik <- .ploglik(theta, X, Z, survs, weights, exp(log.lambda.smooth), K) #Laplace approximation using TP representation H <- .pfisherinfo(theta, X, Z, survs, weights, exp(log.lambda.smooth), K) beta <- theta[ncol(X) + seq_len(ncol(Z))] #[Q]: Extract baseline terms from model and translate into #TP-spline setting, i.e. a B-spline of 0th order is assumed baselineIdx <- grep("cox\\(logbaseline.*\\)",dimnames(Z)[[2]]) b <- diff(beta[baselineIdx]) laplace <- 1/2*(length(b)-1)*log.lambda.smooth - 1/2*log(det(H)) return(loglik + laplace) } ###################################################################### # Model fitter. Prepares everything and uses optim's (L-)BFGS(-B) to # maximize the (penalized) log-likelihood. ###################################################################### twinSIR <- function (formula, data, weights, subset, knots = NULL, nIntervals = 1, lambda.smooth = 0, penalty = 1, optim.args = list(), model = TRUE, keep.data = FALSE) { cl <- match.call() ## Verify that 'data' inherits from "epidata" data <- eval(cl$data, parent.frame()) if (!inherits(data, "epidata")) { stop("'data' must inherit from class \"epidata\"") } ## Extract the time range of the epidemic timeRange <- attr(data, "timeRange") minTime <- timeRange[1L] maxTime <- timeRange[2L] # ## NOTE: modification of 'data' has no effect with the current evaluation # ## of model.frame in the parent.frame() as the original 'data' will # ## be used. # ## Impute blocks for 'knots', which are not existing stop times # if (is.vector(knots, mode = "numeric")) { # insideKnot <- (knots > minTime) & (knots < maxTime) # if (any(!insideKnot)) { # warning("only 'knots' inside the observation period are considered") # } # knots <- sort(knots[insideKnot]) # data <- intersperse(data, knots) # } ############################ ### Build up model.frame ### (this is derived from the coxph function) ############################ mfnames <- c("", "formula", "data", "weights", "subset") mf <- cl[match(mfnames, names(cl), nomatch = 0L)] mf$id <- as.name("id") mf$atRiskY <- as.name("atRiskY") mf$subset <- if (is.null(mf$subset)) { call("==", mf$atRiskY, 1) } else { call("&", mf$subset, call("==", mf$atRiskY, 1)) } if(length(formula) == 2L) { # i.e. no response specified formula[3L] <- formula[2L] formula[[2L]] <- quote(cbind(start, stop, event)) } mf$na.action <- as.name("na.fail") special <- c("cox") Terms <- terms(formula, specials = special, data = data, keep.order = FALSE) mf$formula <- Terms mf[[1]] <- as.name("model.frame") mf <- eval(mf, parent.frame()) ########################################################### ### Check arguments and extract components of the model ### ########################################################### ## Extract and check 'weights' weights <- model.extract(mf, "weights") if (is.null(weights)) { weights <- rep(1, nrow(mf)) names(weights) <- attr(mf, "row.names") } else { if (!is.vector(weights, mode="numeric")) { stop("'weights' must be a numeric vector") } if (any(weights < 0)) { stop("negative 'weights' not allowed") } } ## Extract the response response <- model.response(mf) survs <- data.frame(id = model.extract(mf, "id"), start = response[,1L], stop = response[,2L], event = response[,3L], check.names = FALSE, stringsAsFactors = FALSE) attr(survs, "eventTimes") <- attr(data, "eventTimes") attr(survs, "timeRange") <- timeRange ## Check specified baseline intervals if (is.null(knots) && isScalar(nIntervals)) { knots <- if (nIntervals == 1) { numeric(0) } else if (nIntervals > 1) { quantile(attr(survs, "eventTimes"), probs = seq(from=0, to=1, length.out=nIntervals+1)[-c(1,nIntervals+1)], type = 1, names = FALSE) } else { stop("'nIntervals' must be a single number >= 1") } } else if (is.vector(knots, mode = "numeric")) { isInsideKnot <- (knots > minTime) & (knots < maxTime) if (any(!isInsideKnot)) { warning("only 'knots' inside the observation period are considered") knots <- knots[isInsideKnot] } isStopKnot <- knots %in% unique(survs$stop) if (any(!isStopKnot)) { stop("ATM, 'knots' must be a subset of the 'stop' times where at least ", "one individual is susceptible") # nNonStopKnots <- sum(!isStopKnot) # warning( # sprintf(ngettext(nNonStopKnots, # paste("%d of 'knots' has been ignored due to no susceptible", # "individuals at this time point: "), # paste("%d 'knots' have been ignored due to no susceptible", # "individuals at those time points: ")), nNonStopKnots), # knots[!stopKnot] # ) # knots <- knots[stopKnot] } knots <- sort(knots) } else { stop("'knots' (a numeric vector) or 'nIntervals' (a single number) ", "must be specified") } intervals <- c(minTime, knots, maxTime) nIntervals <- length(intervals) - 1L message( sprintf(ngettext(nIntervals, "Initialized %d log-baseline interval: ", "Initialized %d log-baseline intervals: "), nIntervals), paste(format(intervals, trim = TRUE), collapse=" ") ) ## Extract the two parts of the design matrix: ## Z contains the Cox part, X contains the epidemic part, there's no intercept des <- read.design(mf, Terms) X <- des$X; px <- ncol(X) Z <- des$Z ## Add variables for the piecewise constant baseline to Z (if requested) if (nIntervals == 1L) { nEvents <- length(attr(survs, "eventTimes")) if (attr(Terms, "intercept") == 1) Z <- cbind("cox(logbaseline)" = 1, Z) } else { # we have more than one baseline interval/parameter intervalIndices <- findInterval(survs$start, intervals, rightmost.closed = FALSE) intervalNumbers <- seq_len(nIntervals) baselineVars <- sapply(intervalNumbers, function(i) intervalIndices == i) dimnames(baselineVars) <- list(NULL, paste("cox(logbaseline.", intervalNumbers, ")", sep="")) Z <- cbind(baselineVars, Z) nEvents <- as.vector(table(factor(intervalIndices[survs$event == 1], levels = seq_len(nIntervals)))) } pz <- ncol(Z) ## Check that we have at least one parameter if (pz == 0L && px == 0L) { stop("nothing to do: neither a baseline nor covariates have been specified") } ## Check lambda.smooth if (!isScalar(lambda.smooth)) { stop("'lambda.smooth' must be scalar") } if (lambda.smooth != 0 && pz == 0L) { lambda.smooth <- 0 message("Note: 'lambda.smooth' was set to 0, because there was no endemic ", "component in the formula.") } ## Setup penalty matrix if (isScalar(penalty)) { K <- matrix(0, ncol = pz, nrow = pz) if (lambda.smooth != 0 && nIntervals > 1L) { # do we have equidistant knots? knotSpacings <- diff(intervals) #equidistant <- all(sapply(knotSpacings[-1], function(x) isTRUE(all.equal(x,knotSpacings[1])))) equidistant <- isTRUE(all.equal(diff(knotSpacings), rep.int(0,nIntervals-1))) if (equidistant) { # K = D'D only works for equidistant knots # difference matrix of order 'penalty' D <- diff(diag(nIntervals), differences=penalty) K[intervalNumbers,intervalNumbers] <- crossprod(D) # t(D) %*% D } else { # special weighting scheme for the non-equidistant case if (penalty != 1) { stop("ATM, non-equidistant knots only work for 1st order penalty") } #Use Fahrmeir & Lang (2001), p.206 invdelta <- 1/diff(intervals) * mean(diff(intervals)) #Use Fahrmeir & Lang (2001), p.206 for (i in 1:(nIntervals)) { idx2 <- cbind(j=c(-1,1) + i, deltaidx=i+c(-1,0),fac=c(-1,-1)) idx2 <- idx2[idx2[,"j"] > 0 & idx2[,"j"] <= nIntervals,,drop=FALSE] #Off diagonal elements K[i, idx2[,"j"]] <- invdelta[idx2[,"deltaidx"]] * idx2[,"fac"] #Diagonal element K[i, i] <- sum(invdelta[idx2[,"deltaidx"]]) } message("Note: non-equidistant knots. Using penalization matrix ", "correcting for distance between knots.\n") # print(K) # browser() } } } else if (is.matrix(penalty) && ncol(penalty) == pz && nrow(penalty) == pz) { K <- penalty } else { stop("'penalty' must either be a single number or a square matrix of ", "dimension ", pz, "x", pz, ", fitting the number of unknown ", "parameters in the endemic component (baseline and covariates)") } ## Check that optim.args is a list if (!is.list(optim.args)) { stop("'optim.args' must be a list") } ## Check start value for theta if (!is.null(optim.args[["par"]])) { if (!is.vector(optim.args$par, mode="numeric")) { stop("'optim.args$par' must be a numeric vector or NULL") } if (length(optim.args$par) != px + pz) { stop(gettextf(paste("'optim.args$par' (%d) does not have the same length", "as the number of unknown parameters (%d + %d = %d)"), length(optim.args$par), px, pz, px + pz)) } } else { optim.args$par <- c(rep.int(1, px), rep.int(0, pz)) } message("Initial parameter vector: ", paste(optim.args$par, collapse=" ")) ## Set names for theta names(optim.args$par) <- c(colnames(X), colnames(Z)) #################### ### Optimization ### #################### ## Configuring the optim procedure (check optim.args) optimControl <- list(trace = 1, fnscale = -1, maxit = 300, factr = 1e7) optimControl[names(optim.args[["control"]])] <- optim.args[["control"]] optim.args$control <- optimControl optimArgs <- list(par = optim.args$par, fn = .ploglik, gr = .pscore, X = X, Z = Z, survs = survs, weights = weights, lambda.smooth = lambda.smooth, K = K, method = "L-BFGS-B", lower = c(rep(0,px), rep(-Inf,pz)), upper = rep(Inf,px+pz), control = list(), hessian = FALSE) namesOptimArgs <- names(optimArgs) namesOptimUser <- names(optim.args) optimValid <- namesOptimUser %in% namesOptimArgs optimArgs[namesOptimUser[optimValid]] <- optim.args[optimValid] if (any(!optimValid)) warning("unknown names in optim.args: ", paste(namesOptimUser[!optimValid], collapse = ", ")) if (! "method" %in% namesOptimUser && px == 0L) { optimArgs$method <- "BFGS" } if (optimArgs$method != "L-BFGS-B") { optimArgs$lower <- -Inf optimArgs$upper <- Inf } #Fit model using fixed smoothing parameter or use mixed model #representation to estimate lambda.smooth using marginal likelihood if (lambda.smooth == -1) { if (isScalar(penalty) && penalty == 1) { ################################################################### ##TODO: Need to check for B-spline (?). Move options into ctrl obj ################################################################### #Iterative procedure where we change between optimizing regression #parameters given fixed smoothing parameter and optimizing the #smoothing parameter given fixed regression parameters (Gauss-Seidel) #procedure. The tuning parameters (5) could go into the control object. lambda.smooth <- 5 reltol <- 1e-2 maxit <- 25 #Parameters for keeping track of the iterations lambda.smoothOld <- 1e99 iter <- 0 #Loop until relative convergence or max-iteration reached while ((abs(lambda.smooth-lambda.smoothOld)/lambda.smoothOld > reltol) & (iter < maxit)) { #Iteration begins iter <- iter + 1 if (optimControl$trace > 0) { cat("==> Iteration ",iter," of Gauss-Seidel maximization. lambda.smooth = ",lambda.smooth,"\n") } #Step 1 - maximize (alpha,beta) with fixed lambda optimArgs$lambda.smooth <- lambda.smooth optimRes <- do.call("optim", optimArgs) theta <- optimRes$par optimArgs$par <- theta #better start value the next time #Step 2 - maximize log(lambda) with fixed (alpha,beta) optimLambda <- optim(log(lambda.smooth), .lmarg.lambda, control=list(fnscale=-1,trace=1),method="BFGS", theta=theta, X=X, Z=Z, survs=survs, weights=weights, K=K) lambda.smoothOld <- lambda.smooth lambda.smooth <- exp(optimLambda$par) } #Done, update optimArgs with new smoothing parameter optimArgs$lambda.smooth <- lambda.smooth } else { stop("REML estimation using TP-splines only works for 1st order differences.") } } ## Call optim with the arguments above (including the news smoothing param) optimRes <- do.call("optim", optimArgs) ############## ### Return ### ############## ## Set up list object to be returned fit <- list(coefficients = optimRes$par, lambda.smooth = lambda.smooth, loglik = optimRes$value, counts = optimRes$counts, converged = (optimRes$convergence == 0)) ## If requested, add observed fisher info (= negative hessian at maximum) if (!is.null(optimRes$hessian)) { fit$fisherinfo.observed <- -optimRes$hessian } ## Add own (exact) fisher info computation fit$fisherinfo <- .pfisherinfo(theta = fit$coefficients, X = X, Z = Z, survs = survs, weights = weights, lambda.smooth = lambda.smooth, K = K) ## Add 'method' fit$method <- optimArgs$method ## Append further information fit$intervals <- intervals fit$nEvents <- nEvents if (model) { fit$model <- list( survs = survs, X = X, Z = Z, weights = weights, lambda.smooth = lambda.smooth, K = K, f = attr(data, "f")[match(colnames(X), names(attr(data, "f")), nomatch=0)], w = attr(data, "w")[match(colnames(X), names(attr(data, "w")), nomatch=0)] ) } if (keep.data) { fit$data <- data } fit$call <- cl fit$formula <- formula(Terms) fit$terms <- Terms ## Return object of class "twinSIR" class(fit) <- "twinSIR" return(fit) } surveillance/R/algo_rki.R0000644000175100001440000001056511734631673015121 0ustar hornikusers### R code from vignette source 'Rnw/algo_rki.Rnw' ### Encoding: ISO8859-1 ################################################### ### code chunk number 1: algo_rki.Rnw:96-214 ################################################### # Implementation of the Robert-Koch Institute (RKI) surveillance system. # The system evaluates specified timepoints and gives alarm if it recognizes # an outbreak for this timepoint. # # Features: # Choice between the different RKI sub-systems (difference in reference values). algo.rkiLatestTimepoint <- function(disProgObj, timePoint = NULL, control = list(b = 2, w = 4, actY = FALSE)){ observed <- disProgObj$observed freq <- disProgObj$freq # If there is no value in timePoint, then take the last value in observed if(is.null(timePoint)){ timePoint = length(observed) } # check if the vector observed includes all necessary data. if((timePoint-(control$b*freq)-control$w) < 1){ stop("The vector of observed is too short!") } # Extract the reference values from the historic time series basevec <- c() # if actY == TRUE use also the values of the year of timepoint if(control$actY){ basevec <- observed[(timePoint - control$w):(timePoint - 1)] } # check if you need more referencevalues of the past if(control$b >= 1){ for(i in 1:control$b){ basevec <- c(basevec, observed[(timePoint-(i*freq)-control$w):(timePoint-(i*freq)+control$w)]) } } # compute the mean. mu <- mean(basevec) if(mu > 20){ # use the normal distribution. # comupte the standard deviation. sigma <- sqrt(var(basevec)) # compute the upper limit of the 95% CI. upCi <- mu + 2 * sigma } else{ # use the poisson distribution. # take the upper limit of the 95% CI from the table CIdata.txt. #data("CIdata", envir=environment()) # only local assignment -> SM: however, should not use data() here #CIdata <- read.table(system.file("data", "CIdata.txt", package="surveillance"), header=TRUE) #SM: still better: use R/sysdata.rda (internal datasets being lazy-loaded into the namespace environment) # for the table-lookup mu must be rounded down. mu <- floor(mu) # we need the third column in the row mu + 1 upCi <- CIdata[mu + 1, 3] } # give alarm if the actual value is larger than the upper limit. alarm <- observed[timePoint] > upCi result <- list(alarm=alarm, upperbound=upCi) class(result) = "survRes" # for surveillance system result return(result) } # 'algo.rki' calls 'algo.bayesLatestTimepoint' for data points given by range. algo.rki <- function(disProgObj, control = list(range = range, b = 2, w = 4, actY = FALSE)){ # Set the default values if not yet set if(is.null(control$b)){ # value from rki 3 control$b <- 2 } if(is.null(control$w)){ # value from rki 3 control$w <- 4 } if(is.null(control$actY)){ # value from rki 3 control$actY <- FALSE } # initialize the necessary vectors alarm <- matrix(data = 0, nrow = length(control$range), ncol = 1) upperbound <- matrix(data = 0, nrow = length(control$range), ncol = 1) count <- 1 for(i in control$range){ #hoehle Debug: #print(i) # call algo.rki1LatestTimepoint result <- algo.rkiLatestTimepoint(disProgObj, i, control = control) # store the results in the right order alarm[count] <- result$alarm upperbound[count] <- result$upperbound count <- count + 1 } #Add name and data name to control object. control$name <- paste("rki(",control$w,",",control$w*control$actY,",",control$b,")",sep="") control$data <- paste(deparse(substitute(disProgObj))) # return alarm and upperbound vectors result <- list(alarm = alarm, upperbound = upperbound, disProgObj=disProgObj, control=control) class(result) = "survRes" # for surveillance system result return(result) } algo.rki1 <- function(disProgObj, control = list(range = range)) { algo.rki(disProgObj, control = list(range = control$range, b = 0, w = 6, actY = TRUE)) } algo.rki2 <- function(disProgObj, control = list(range = range)){ algo.rki(disProgObj, control = list(range = control$range, b = 1, w = 6, actY = TRUE)) } algo.rki3 <- function(disProgObj, control = list(range = range)){ algo.rki(disProgObj, control = list(range = control$range, b = 2, w = 4, actY = FALSE)) } surveillance/R/linelist2sts.R0000644000175100001440000000546212471172531015761 0ustar hornikusers###################################################################### # Takes a data frame with dates of individual # cases and create an aggregated sts time series object for these # data with aggregation occuring at the desired scale. # # Parameters: # linelist - a data frame containing individual case information, one per line # dateCol - a character string denoting the column name in case containing # the relevant date variable to aggregate # aggregate.by - aggregation block length given as a string compatible with # seq.Date -- see \link{seq.Date} for further details. # # Author: Michael Hoehle # Date LaMo: 04 Jan 2014 ###################################################################### linelist2sts <- function(linelist,dateCol,aggregate.by=c("1 day", "1 week", "7 day", "1 week", "1 month", "3 month", "1 year"),dRange=NULL, epochInPeriodStr=switch(aggregate.by, "1 day"="1","1 week"="%u", "1 month"="%d","3 month"="%q","1 year"="%j"), startYearFormat=switch(aggregate.by,"1 day"="%Y","7 day"="%G","1 week"="%G","1 month"="%Y","3 month"="%Y","1 year"="%Y"), startEpochFormat=switch(aggregate.by,"1 day"="%j","7 day"="%V","1 week"="%V","1 month"="%m","3 month"="%Q","1 year"="1") ) { ##Check aggregate.by argument aggregate.by <- match.arg(aggregate.by, c("1 day", "1 week", "7 day", "1 week", "1 month", "3 month", "1 year")) #If no dRange let it be the range of the dateCol if (is.null(dRange)) { dRange <- range(linelist[,dateCol],na.rm=TRUE) } if (aggregate.by != "1 day") { ##Move dates back to first of each epoch unit dRange <- dRange - as.numeric(formatDate(dRange,epochInPeriodStr)) + 1 } #Add exactly one time step to dRange to ensure that cut #contains the last level as well. We use 'seq' to ensure #that even weeks/days with no data are present in the factor. maxDate <- seq(max(dRange),length.out=2,by=aggregate.by)[-1] dates <- seq(min(dRange), maxDate, by=aggregate.by) #Make a table containing the specific number of cases. Note that this #needs to occur using a cut statement lvl <- cut(linelist[,dateCol], breaks=dates,right=FALSE) observed <- table(lvl) epoch <- as.Date(names(observed)) #Translate "by" to freq string freq <- switch(aggregate.by,"1 day"=365,"7 day"=52,"1 week"=52,"1 month"=12,"3 month"=4,"1 year"=1) startYear <- as.numeric(formatDate(min(dates),startYearFormat)) startEpoch <- as.numeric(formatDate(min(dates),startEpochFormat)) observed <- matrix(observed,ncol=1) #Create S4 object sts <- new("sts",epoch=as.numeric(epoch),observed=observed, alarm=0*observed, epochAsDate=TRUE,freq=freq,start=c(startYear,startEpoch)) #Return return(sts) } surveillance/R/twinstim_siaf_gaussian.R0000644000175100001440000001657512300355766020107 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Gaussian spatial interaction function for twinstim's epidemic component ### ### Copyright (C) 2009-2014 Sebastian Meyer ### $Revision: 771 $ ### $Date: 2014-02-17 10:52:54 +0100 (Mon, 17 Feb 2014) $ ################################################################################ ## nTypes: determines the number of parameters=(log-)standard deviations of the ## Gaussian kernel. In a multitype epidemic, the different types may share the ## same spatial interaction function (type-invariant), in which case nTypes=1. ## Otherwise nTypes should equal the number of event types of the epidemic, in ## which case every type has its own variance parameter. ## logsd: logical indicating if the gaussian kernel should be reparametrized ## such that the log-standard deviation is the parameter in question. This ## avoids constrained optimisation (L-BFGS-B) or the use of 'validpars'. ## density: logical. If TRUE, the isotropic Gaussian density (on R^2) will not ## be scaled to have maximum value of 1 at the mean c(0,0). ## effRangeMult: determines the effective range for numerical integration in ## terms of multiples of the parameter, i.e. with effRangeMult=6 numerical ## integration only considers the 6-sigma area around the event instead of the ## whole observation region W. ## validpars: If logsd = FALSE, you should either use ## constrained optimisation (L-BFGS-B) or set 'validpars' to function (pars) ## pars > 0. siaf.gaussian <- function (nTypes = 1, logsd = TRUE, density = FALSE, F.adaptive = TRUE, effRangeMult = 6, validpars = NULL) { nTypes <- as.integer(nTypes) stopifnot(length(nTypes) == 1L, nTypes > 0L) if (isScalar(F.adaptive)) { adapt <- F.adaptive F.adaptive <- TRUE } else adapt <- 0.1 f <- function (s, pars, types) {} # coordinate matrix s, length(types) = 1 or nrow(s) F <- if (F.adaptive) { as.function(c(alist(polydomain=, f=, pars=, type=), list(adapt=adapt), quote({}))) } else siaf.fallback.F Fcircle <- function (r, pars, type) {} # single radius and type effRange <- function (pars) {} deriv <- function (s, pars, types) {} # coordinate matrix s, length(types) = 1 or nrow(s) Deriv <- function (polydomain, deriv, pars, type, nGQ = 20L) {} # single "owin" and type simulate <- function (n, pars, type, ub) {} # n=size of the sample, # type=single type, # ub=upperbound (unused here) ## if there is only one type, we set the default type(s) argument to 1 ## (it is actually unused inside the functions) if (nTypes == 1L) { formals(f)$types <- formals(Fcircle)$type <- formals(deriv)$types <- formals(Deriv)$type <- formals(simulate)$type <- 1L } # helper expressions tmp1 <- if (logsd) expression(sds <- exp(pars)) else expression(sds <- pars) tmp1.1 <- if (nTypes==1L) expression(sd <- sds) else expression(sd <- sds[type]) tmp2 <- c( expression(sLengthSquared <- .rowSums(s^2, L <- nrow(s), 2L)), if (nTypes == 1L) expression(sdss <- sds) else expression( types <- rep_len(types, L), sdss <- sds[types] ) ) # spatial interaction function body(f) <- as.call(c(as.name("{"), tmp1, tmp2, expression(fvals <- exp(-sLengthSquared/2/sdss^2)), if (density) expression(fvals / (2*pi*sdss^2)) else expression(fvals) )) # numerically integrate f over a polygonal domain if (F.adaptive) { body(F) <- as.call(c(as.name("{"), tmp1, tmp1.1, expression( eps <- adapt * sd, intf <- polyCub.midpoint(polydomain, f, pars, type, eps=eps), intf ) )) } # calculate the integral of f over a circular domain around 0 body(Fcircle) <- as.call(c(as.name("{"), tmp1, tmp1.1, expression(val <- pchisq((r/sd)^2, 2)), # cf. Abramowitz&Stegun formula 26.3.24 if (!density) expression(val <- val * 2*pi*sd^2), expression(val) )) # effective integration range of f as a function of sd if (isScalar(effRangeMult)) { body(effRange) <- as.call(c(as.name("{"), tmp1, substitute(effRangeMult*sds) )) } else effRange <- NULL # derivative of f wrt pars derivexpr <- if (logsd) { # derive f wrt psi=log(sd) !! if (density) { quote(deriv[cbind(seq_len(L),colidx)] <- exp(-frac) / pi/sdss^2 * (frac-1)) } else { quote(deriv[cbind(seq_len(L),colidx)] <- exp(-frac) * 2*frac) } } else { # derive f wrt sd !! if (density) { quote(deriv[cbind(seq_len(L),colidx)] <- exp(-frac) / pi/sdss^3 * (frac-1)) } else { quote(deriv[cbind(seq_len(L),colidx)] <- exp(-frac) * 2*frac/sdss) } } derivexpr <- do.call("substitute", args=list(expr=derivexpr, env=list(colidx=if (nTypes==1L) 1L else quote(types)))) body(deriv) <- as.call(c(as.name("{"), tmp1, tmp2, expression( deriv <- matrix(0, L, length(pars)), frac <- sLengthSquared/2/sdss^2 ), derivexpr, expression(deriv) )) # integrate 'deriv' over a polygonal domain body(Deriv) <- as.call(c(as.name("{"), ## Determine a = argmax(abs(deriv(c(x,0)))) if (density) { expression(a <- 0) # maximum absolute value is at 0 } else { c(tmp1, tmp1.1, expression( xrange <- polydomain$xrange, # polydomain is a "owin" a <- min(max(abs(xrange)), sqrt(2)*sd), # maximum absolute value if (sum(xrange) < 0) a <- -a # is more of the domain left of 0? ) ) }, if (nTypes == 1L) { expression(deriv.type <- function (s) deriv(s, pars, 1L)[,1L,drop=TRUE]) } else { # d f(s|type_i) / d sigma_{type_j} is 0 for i != j expression(deriv.type <- function (s) deriv(s, pars, type)[,type,drop=TRUE]) }, expression(int <- polyCub.SV(polydomain, deriv.type, nGQ=nGQ, alpha=a)), if (nTypes == 1L) expression(int) else expression( res <- numeric(length(pars)), # zeros res[type] <- int, res ) )) ## sampler (does not obey the 'ub' argument!!) body(simulate) <- as.call(c(as.name("{"), tmp1, tmp1.1, expression(matrix(stats::rnorm(2*n, mean=0, sd=sd), nrow=n, ncol=2L)) )) ## set function environments to the global environment environment(f) <- environment(F) <- environment(Fcircle) <- environment(deriv) <- environment(Deriv) <- environment(simulate) <- .GlobalEnv if (is.function(effRange)) environment(effRange) <- .GlobalEnv ## return the kernel specification list(f=f, F=F, Fcircle=Fcircle, effRange=effRange, deriv=deriv, Deriv=Deriv, simulate=simulate, npars=nTypes, validpars=validpars) } surveillance/R/calibration.R0000644000175100001440000000511212551431237015601 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Calibration tests for count data based on proper scoring rules ### Reference: Wei and Held (2014), Test, 23, 787-805 ### ### Copyright (C) 2015 Sebastian Meyer ### $Revision: 1424 $ ### $Date: 2015-07-15 12:14:54 +0200 (Mit, 15. Jul 2015) $ ################################################################################ ## perform a calibration test given observations x ## with Poisson (size = NULL) or NegBin predictions calibrationTest.default <- function (x, mu, size = NULL, which = c("dss", "logs", "rps"), tolerance = 1e-4, method = 2, ...) { stopifnot(x >= 0, mu > 0, is.null(size) || size > 0) ## calculate scores which <- match.arg(which) score <- do.call(which, args = alist(x = x, mu = mu, size = size)) ## calculate z-statistic z <- calibrationZ(score, mu, size, which, tolerance, method) ## calculate two-sided p-value p <- 2 * pnorm(-abs(z)) ## construct an object of class "htest" res <- list( method = paste0("Calibration Test for Count Data (based on ", toupper(which), ")"), data.name = deparse(substitute(x)), statistic = c("z" = z), parameter = c("n" = length(x)), p.value = p ) class(res) <- "htest" res } ## compute the calibration z-statistic given the computed scores calibrationZ <- function (score, mu, size = NULL, which = c("dss", "logs", "rps"), tolerance = 1e-4, method = 2) { stopifnot(method %in% 1:2) ## expectation and variance of score for given predictive distribution EV <- score_EV(mu, size, tolerance, which) ## calculate the z-statistic z <- do.call(paste0("zScore", method), args = alist(score, EV[[1L]], EV[[2L]])) z } ## compute the calibration z-statistic and p-value ## from a set of scores and their null expectations and variances zScore1 <- function (score, E0, V0) { n <- length(score) ## emean <- mean(E0) ## varmean <- sum(V0) / n^2 ## (mean(score) - emean) / sqrt(varmean) sum(score - E0) / sqrt(sum(V0)) } ## alternative z-statistic Z* zScore2 <- function (score, E0, V0) { n <- length(score) sum((score - E0) / sqrt(V0)) / sqrt(n) } surveillance/R/untie.R0000644000175100001440000002021712404144277014443 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Spatial and temporal tie-breaking of events ### ### Copyright (C) 2012-2014 Sebastian Meyer ### $Revision: 1005 $ ### $Date: 2014-09-10 23:55:11 +0200 (Mit, 10. Sep 2014) $ ################################################################################ ## epidataCS-method ## makes use of untie.default (in time) and untie.matrix (in space) untie.epidataCS <- function (x, amount = list(t=NULL, s=NULL), minsep = list(t=0, s=0), direction = "left", keep.sources = FALSE, ..., verbose = FALSE) { stopifnot(is.list(amount), !is.null(names(amount)), is.list(minsep), !is.null(names(minsep))) minsep <- modifyList(list(t=0, s=0), minsep) do.spatial <- pmatch("s", names(amount), nomatch=0L) > 0L do.temporal <- pmatch("t", names(amount), nomatch=0L) > 0L if (!do.spatial && !do.temporal) { stop("no amounts specified, nothing to do") } ## Generate new events data frame events <- marks.epidataCS(x, coords=FALSE) newcoords <- if (do.spatial) { # untie spatial coordinates untie.matrix(coordinates(x$events), amount$s, minsep$s, constraint=x$W, ...) } else coordinates(x$events) if (do.temporal) { # untie event times ## by default, we shift event times (non-symmetrically) to the left such ## that the shifted versions potentially stay in the same BLOCK of ## endemic covariates (the CIF is left-continuous). events$time <- untie.default(events$time, amount$t, minsep$t, direction=direction, sort=TRUE, ...) ## FIXME: Does sort=TRUE always make sense? ## maybe only sort in untie.default if amount < minsep? } ## Generate epidataCS object with new events coordinates(events) <- newcoords # -> SpatialPointsDataFrame #proj4string(events) <- proj4string(x$W) # "proj4string<-" might change the # string e.g. add +towgs84=0,0,0,0,0,0,0 events@proj4string <- x$W@proj4string npoly <- attr(x$events$.influenceRegion, "nCircle2Poly") clipper <- attr(x$events$.influenceRegion, "clipper") if (is.null(clipper)) # epidataCS < 1.8-1 clipper <- "polyclip" res <- as.epidataCS(events=events, stgrid=x$stgrid[,-1L], W=x$W, qmatrix=x$qmatrix, nCircle2Poly=npoly, clipper=clipper, verbose=verbose) if (keep.sources) { res$events$.sources <- x$events$.sources } ## Done res } ## untie event times by uniform jittering untie.default <- function (x, amount = NULL, minsep = 0, direction = c("symmetric", "left", "right"), sort = NULL, giveup = 1000, ...) { stopifnot(is.numeric(x), is.vector(x)) distx <- dist(x) isPosDist <- distx > 0 if (all(isPosDist)) return(x) # no ties direction <- match.arg(direction) if (is.null(sort)) # sort if x was sorted sort <- identical(order(x, decreasing=FALSE), seq_along(x)) if (any(isPosDist)) { minsepx <- min(distx[isPosDist]) # smallest positive distance amount.bound <- if (direction=="symmetric") minsepx/2 else minsepx if (is.null(amount)) { amount <- amount.bound } else if (sort && abs(amount) > amount.bound) { warning("'amount' should not be greater than ", if (direction=="symmetric") "half of ", "the minimum separation (", format(amount.bound), ")") } } else if (is.null(amount)) { stop("default 'amount' does not work with completely tied 'x'") } shiftFUN <- switch(direction, symmetric = function (x) x + runif(length(x), -amount, amount), right = function (x) x + runif(length(x), 0, amount), left = function (x) x - runif(length(x), 0, amount)) res <- .untie(x, shiftFUN, minsep) if (sort) base::sort(res) else res } ## untie spatial coordinates by moving them by vectors drawn uniformly from a ## disc of radius 'amount', optionally respecting a region (constraint) ## inside which the jittered points should be located (of course, the initial ## points must also obey this constraint), and a minimum separation 'minsep' untie.matrix <- function (x, amount = NULL, minsep = 0, constraint = NULL, giveup = 1000, ...) { stopifnot(is.numeric(x), is.matrix(x)) dimx <- dim(x) if (dimx[2L] <= 1L) { untie.default(c(x), amount, minsep, giveup=giveup) } else if (dimx[2L] > 2L) { stop("spatial tie-breaking is only implemented for 2D coordinates") } if (is.null(amount)) { distx <- dist(x) isPosDist <- distx > 0 ## take half of smallest distance, which guarantees that new points ## will be closer to previously tied points than to others if (any(isPosDist)) amount <- min(distx[isPosDist]) / 2 else stop("default 'amount' does not work with a single location only") } if (!is.null(constraint)) { stopifnot(inherits(constraint, "SpatialPolygons")) proj4string(constraint) <- CRS(NA_character_) outOfConstraint <- function (x) { is.na(over(SpatialPoints(x), constraint)) } if (any(outOfConstraint(x))) stop("some points of the matrix 'x' don't respect the 'constraint'") } else outOfConstraint <- NULL shiftFUN <- function (x) x + runifdisc(nrow(x), amount) .untie(x, shiftFUN, minsep, outOfConstraint, giveup=giveup) } ## workhorse for both vector and matrix 'x' .untie <- function (x, shiftFUN, minsep = 0, outOfConstraintFUN = NULL, giveup = 1000) { x <- res <- as.matrix(x) move <- rep.int(TRUE, nrow(x)) # initially move _all_ points ntry <- 0L updateMoveExpr <- .updateMoveExpr(minsep>0, is.function(outOfConstraintFUN)) while((nleft <- sum(move)) > 0L && ntry < giveup) { res[move,] <- shiftFUN(x[move,,drop=FALSE]) ## determine for the moved points if they are too close to another point ## or fall out of constraint -> try again eval(updateMoveExpr) ntry <- ntry + 1L } if (ntry >= giveup) warning("could not obey 'constraint' and/or 'minsep' for some points") if (ncol(res) == 1) res[,1] else res } ## check if points with index 'idx' are too close (< minsep) to any other points ## (this function could probably be made more efficient, especially for ## length(idx) << nrow(pts), since we actually don't need all pairwise distances ## calculated by dist() but only those related to the idx-points) .tooClose <- function (pts, idx, minsep) { distpts <- as.matrix(dist(pts)) diag(distpts) <- Inf rowSums(distpts[idx,,drop=FALSE] < minsep) > 0 } ## generate expression which updates logical vector 'move' (points left to move) .updateMoveExpr <- function(doClose = FALSE, doConstraint = FALSE) { if (!doClose && !doConstraint) return(expression(move[move] <- FALSE)) exprClose <- expression(movedTooClose <- .tooClose(res, move, minsep)) exprConstraint <- if (doClose) { # only need to check those not too close expression( movedOutOfConstraint <- rep.int(FALSE, nleft), if (any(!movedTooClose)) movedOutOfConstraint[!movedTooClose] <- outOfConstraintFUN(res[move,,drop=FALSE][!movedTooClose,,drop=FALSE]) ) } else { expression( movedOutOfConstraint <- outOfConstraintFUN(res[move,,drop=FALSE]) ) } c(if (doClose) exprClose, if (doConstraint) exprConstraint, switch(doClose + 2*doConstraint, expression(move[move] <- movedTooClose), expression(move[move] <- movedOutOfConstraint), expression(move[move] <- movedTooClose | movedOutOfConstraint) ) ) } surveillance/R/twinSIR_simulation.R0000644000175100001440000006453312420322611017117 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Simulate from a "twinSIR" model as described in Hoehle (2009) ### ### Copyright (C) 2009 Michael Hoehle, 2009, 2012, 2014 Sebastian Meyer ### $Revision: 1079 $ ### $Date: 2014-10-18 01:26:00 +0200 (Sam, 18. Okt 2014) $ ################################################################################ ## Apart from simulation of SIR data, it is possible to simulate ## - SI: infPeriod = function(ids) rep(Inf, length(ids) ## - SIS: remPeriod = function(ids) rep(0, length(ids) ## - SIRS: remPeriod in (0;Inf) ## ## One can even simulate from a Cox model with the following settings: ## + no removal (i.e. infPeriod = function(ids) rep(Inf, length(ids)) ## + no epidemic component (i.e. no alpha, no f, no w). simEpidata <- function (formula, data, id.col, I0.col, coords.cols, subset, beta, h0, f = list(), w = list(), alpha, infPeriod, remPeriod = function(ids) rep(Inf, length(ids)), end = Inf, trace = FALSE, .allocate = NULL) { cl <- match.call() ####################### ### Check arguments ### ####################### ### Build up model.frame mfnames <- c("", "formula", "data", "subset") mf <- cl[match(mfnames, names(cl), nomatch = 0L)] mf$na.action <- as.name("na.fail") mf$drop.unused.levels <- FALSE mf$xlev <- list() data <- eval(mf$data, parent.frame()) if (!inherits(data, "data.frame")) { stop("'data' must inherit from class \"data.frame\"") } if (inherits(data, "epidata")) { id.col <- "id" I0.col <- "atRiskY" # but we need !atRiskY (will be considered below) coords.cols <- names(data)[attr(data, "coords.cols")] if(length(formula) == 2L) { # i.e. no response specified formula[3L] <- formula[2L] formula[[2L]] <- quote(cbind(start, stop)) } } else { for(colarg in c("id.col", "I0.col", "coords.cols")) { colidx <- get(colarg, inherits = FALSE) if (is.numeric(colidx)) { tmp <- names(data)[colidx] if (any(is.na(tmp))) { stop("'", colarg, " = ", deparse(cl[[colarg]]), "': ", "column index must be in [1; ", ncol(data), "=ncol(data)]") } assign(colarg, tmp, inherits = FALSE) } } mf$I0 <- if (is.null(I0.col)) { substitute(rep(0, N), list(N=nrow(data))) } else as.name(I0.col) } mf$id <- as.name(id.col) for(coords.col in coords.cols) { eval(call("$<-", quote(mf), coords.col, quote(as.name(coords.col)))) } special <- c("cox") Terms <- terms(formula, specials = special, data = data, keep.order = TRUE, simplify = FALSE) mf$formula <- Terms mf[[1]] <- as.name("model.frame") mf <- eval(mf, parent.frame()) ### Convert id to a factor (also removing unused levels if it was a factor) mf[["(id)"]] <- factor(mf[["(id)"]]) ids <- levels(mf[["(id)"]]) nObs <- length(ids) if (nObs == 0L) { stop("nothing to do: no individuals in 'data'") } idsInteger <- seq_len(nObs) ### Check start/stop consistency (response) .startstop <- model.response(mf) if (NCOL(.startstop) != 2L || !is.numeric(.startstop)) { stop("the lhs of 'formula' must be a numeric matrix with two columns ", "like 'cbind(start, stop)'") } timeIntervals <- unique(.startstop) timeIntervals <- timeIntervals[order(timeIntervals[,1L]), , drop = FALSE] nBlocks <- nrow(timeIntervals) if (any(timeIntervals[,2L] <= timeIntervals[,1L])) { stop("stop times must be greater than start times") } if (any(timeIntervals[-1L,1L] != timeIntervals[-nBlocks,2L])) { stop("inconsistent start/stop times: time intervals not consecutive") } ### Check .allocate if (is.null(.allocate)) { .allocate <- max(500, ceiling(nBlocks/100)*100) } else { if (!isScalar(.allocate) || .allocate < nBlocks) { stop("'.allocate' must be >= ", nBlocks) } } ### Check that all blocks are complete (all id's present) .blockidx <- match(.startstop[,1L], timeIntervals[,1L]) if (any(table(.blockidx) != nObs)) { stop("all time intervals must be present for all id's") } ### Define a vector containing the time points where covariates change # unique 'start' time points (=> includes beginning of observation period) externalChangePoints <- as.vector(timeIntervals[,1L]) ### SORT THE MODEL.FRAME BY BLOCK AND ID !!! mf <- mf[order(.blockidx, mf[["(id)"]]),] ### Extract the coordinates coords <- as.matrix(mf[idsInteger, tail(1:ncol(mf),length(coords.cols))]) colnames(coords) <- coords.cols rownames(coords) <- ids ### Extract the endemic part Z of the design matrix (no intercept) des <- read.design(mf, Terms) Z <- des$Z nPredCox <- ncol(Z) # number of endemic (cox) predictor terms ### Only include basic endemic variables in the event history output basicCoxNames <- rownames(attr(Terms,"factors"))[attr(Terms,"specials")$cox] basicVarNames <- sub("cox\\(([^)]+)\\)", "\\1", basicCoxNames) nBasicVars <- length(basicCoxNames) # this is necessary if some variables in 'formula' do not have main effects extraBasicVars <- as.matrix(mf[setdiff(basicCoxNames, colnames(Z))]) ### Build up 3-dim array [id x time x var] of endemic terms coxArray <- array(cbind(Z, extraBasicVars), dim = c(nObs, nBlocks, ncol(Z) + ncol(extraBasicVars)), dimnames = list(ids, NULL, c(colnames(Z), colnames(extraBasicVars)))) idxPredVars <- seq_len(nPredCox) idxBasicVars <- match(basicCoxNames, dimnames(coxArray)[[3]]) ### Check simulation parameters ## endemic (cox) part if (nPredCox > 0L) { if(missing(beta) || length(beta) != nPredCox || !is.numeric(beta)) { stop(gettextf(paste("'beta', a numeric vector of length %d", "(number of endemic terms), must be specified"), nPredCox)) } } else { beta <- numeric(0L) } ## epidemic part nPredEpi <- length(f) + length(w) if (nPredEpi > 0L) { ## check f if (length(f) > 0L) { if (ncol(coords) == 0L) { stop("need coordinates for distance-based epidemic covariates 'f'") } if (!is.list(f) || is.null(names(f)) || any(!sapply(f, is.function))) { stop("'f' must be a named list of functions") } distmat <- as.matrix(dist(coords, method = "euclidean")) } ## check w if (length(w) > 0L) { if (!is.list(w) || is.null(names(w)) || any(!sapply(w, is.function))) { stop("'w' must be a named list of functions") } wijlist <- compute_wijlist(w = w, data = mf[idsInteger, ]) } ## check alpha (coefficients for all of f and w) if (missing(alpha) || !is.numeric(alpha) || is.null(names(alpha))) { stop(gettextf(paste("'alpha', a named numeric vector of length %d", "(number of epidemic terms), must be specified"), nPredEpi)) } alpha <- alpha[c(names(f), names(w))] if (any(is.na(alpha))) { stop("'alpha' is incomplete for 'f' or 'w'") } stopifnot(alpha >= 0) } else { alpha <- numeric(0L) } ### Parse the generator function for the infectious periods if (missing(infPeriod)) { stop("argument 'infPeriod' is missing (with no default)") } infPeriod <- match.fun(infPeriod) ### Parse the generator function for the removal periods remPeriod <- match.fun(remPeriod) ### Parse the log baseline function h0spec <- paste("'h0' must be a single number or a list of functions", "\"exact\" and \"upper\"") if (missing(h0)) { stop(h0spec) } if (is.list(h0)) { if (!all(is.function(h0[["exact"]]), is.function(h0[["upper"]]))) { stop(h0spec) } if (!inherits(h0$upper, "stepfun")) { stop("function 'h0$upper' must be a 'stepfun'") } h0ChangePoints <- knots(h0$upper) } else if (isScalar(h0)) { h0func <- eval(parse(text = paste("function (t)", h0))) environment(h0func) <- parent.frame() h0 <- list(exact = h0func, upper = h0func) h0ChangePoints <- numeric(0L) } else { stop(h0spec) } if (!isScalar(h0$exact(0))) { stop("'h0$exact' must return a scalar") } ### Define function which decides if to reject a proposal during simulation exactEqualsUpper <- identical(h0$exact, h0$upper) mustReject <- if (exactEqualsUpper) { function () FALSE } else { function () lambdaStar/lambdaStarMax < runif(1) } ### Check simulation ending time if (!isScalar(end) || end <= 0) { stop("'end' must be a single positive numeric value") } ################### ### Preparation ### ################### ### Initialize set of infected and susceptible individuals infected <- which( mf[idsInteger,"(I0)"] == as.numeric(!inherits(data, "epidata")) ) # in case of "epidata", mf$(I0) equals data$atRiskY => infected = I0==0 susceptibles <- which(! idsInteger %in% infected) ### Initialize tables of planned R-events and S-events Revents <- if (length(infected) > 0) { cbind(infected, infPeriod(ids[infected])) } else { matrix(numeric(0), ncol = 2) } Sevents <- matrix(numeric(0), ncol = 2) ### Small hook to subsequently update the (time depending) Cox predictor ### based on the current time (ct) during the simulation loop if (nPredCox > 0L) { coxUpdate <- expression( predCox <- as.matrix( coxArray[,which(externalChangePoints == ct),idxPredVars] ) %*% beta ) } else { predCox <- numeric(nObs) # zeros } ### 'lambdaCalc' is the main expression for the calculation of the intensity ### values IMMEDIATELY AFTER the current time 'ct'. ### It will be evaluated during the while-loop below. lambdaCalc <- expression( # Endemic Cox predictor (no h0 here!) of susceptibles predCoxS <- predCox[susceptibles], # Epidemic component of susceptibles lambdaEpidemic <- numeric(length(susceptibles)), # zeros if (nPredEpi > 0L && length(infected) > 0L) { fCovars <- if (length(f) > 0L) { u <- distmat[,infected, drop = FALSE] vapply(X = f, FUN = function (B) rowSums(B(u)), FUN.VALUE = numeric(nObs), USE.NAMES = FALSE) } else NULL wCovars <- if (length(w) > 0L) { vapply(X = wijlist, FUN = function (wij) { rowSums(wij[, infected, drop = FALSE]) }, FUN.VALUE = numeric(nobs), USE.NAMES = FALSE) } else NULL epiCovars <- cbind(fCovars, wCovars, deparse.level=0) # epiCovars is a matrix [nObs x nPredEpi] also used by updateNextEvent if (length(susceptibles) > 0L) { lambdaEpidemic <- epiCovars[susceptibles,,drop=FALSE] %*% alpha } }, # Combined intensity lambdaS <- lambdaEpidemic + exp(h0$exact(ct) + predCoxS), # Ground intensity (sum of all lambdaS's) lambdaStar <- sum(lambdaS), # Upper bound on ground intensity lambdaStarMax <- if (exactEqualsUpper) { lambdaStar } else { sum(lambdaEpidemic) + sum(exp(h0$upper(ct) + predCoxS)) } ) # the following initializations are for R CMD check only ("visible binding") lambdaS <- numeric(length(susceptibles)) lambdaStarMax <- lambdaStar <- numeric(1L) # At current time (ct) we have: # lambdaS is a _vector of length the current number of susceptibles_ # containing the intensity of infection for each susceptible individual. # lambdaStar is the overall infection rate. # lambdaStarMax is the upper bound for lambdaStar regarding baseline. # 'susceptible' and 'infected' are the corresponding sets of individuals # immediately AFTER the last event # in theory, if a covariate changes in point t, then the intensity changes # at t+0 only. intensities are left-continuous functions. time interval of # constant intensity is (start;stop]. but in the implementation we need at # time ct the value of the log-baseline at ct+0, especially for # ct %in% h0ChangePoints, thus h0$upper should be a stepfun with right=FALSE ### Create a history object alongside the simulation epiCovars0 <- matrix(0, nrow = nObs, ncol = nPredEpi, dimnames = list(NULL, c(names(f), names(w)))) basicVars0 <- matrix(0, nrow = nObs, ncol = nBasicVars, dimnames = list(NULL, basicVarNames)) emptyEvent <- cbind(BLOCK = 0, id = idsInteger, start = 0, stop = 0, atRiskY = 0, event = 0, Revent = 0, coords, basicVars0, epiCovars0) # WARNING: if you change the column order, you have to adjust the # hard coded column indexes everywhere below, also in getModel.simEpidata ! .epiIdx <- tail(seq_len(ncol(emptyEvent)), nPredEpi) .basicIdx <- 7L + ncol(coords) + seq_len(nBasicVars) .nrowsEvHist <- .allocate * nObs # initial size of the event history evHist <- matrix(NA_real_, nrow = .nrowsEvHist, ncol = ncol(emptyEvent), dimnames = list(NULL, colnames(emptyEvent))) ## Hook - create new event and populate it with appropriate covariates updateNextEvent <- expression( nextEvent <- emptyEvent, # populate epidemic covariates if (nPredEpi > 0L && length(infected) > 0L) { nextEvent[,.epiIdx] <- epiCovars # was calculated in lambdaCalc }, # Which time is currently appropriate in (time varying) covariates tIdx <- match(TRUE, c(externalChangePoints,Inf) > ct) - 1L, if (nBasicVars > 0L) { nextEvent[,.basicIdx] <- coxArray[,tIdx,idxBasicVars] }, # At-risk indicator if (length(susceptibles) > 0) { nextEvent[susceptibles,5L] <- 1 }, # Block index nextEvent[,1L] <- rep.int(block, nObs), # Start time nextEvent[,3L] <- rep.int(ct, nObs) ) ## Hook function to add the event to the history addNextEvent <- expression( nextEvent[,4L] <- rep.int(ct, nObs), # stop time if (block*nObs > .nrowsEvHist) { # enlarge evHist if not big enough if (trace > 0L) { cat("Enlarging the event history @ block", block, "...\n") } evHist <- rbind(evHist, matrix(NA_real_, nrow = .allocate * nObs, ncol = ncol(emptyEvent)) ) .nrowsEvHist <- .nrowsEvHist + .allocate * nObs }, evHistIdx <- idsInteger + nObs * (block-1), # = seq.int(from = 1 + nObs*(block-1), to = nObs*block) evHist[evHistIdx,] <- nextEvent, block <- block + 1 ) ####################################################################### ### MAIN PART: sequential simulation of infection and removal times ### ####################################################################### ### Some indicators ct <- timeIntervals[1L,1L] # = externalChangePoints[1] # current time block <- 1 pointRejected <- FALSE loopCounter <- 0L trace <- as.integer(trace) hadNumericalProblemsInf <- hadNumericalProblems0 <- FALSE eventTimes <- numeric(0) ### Update (time depending) endemic covariates (if there are any) if (nPredCox > 0L) { eval(coxUpdate) } ### Let's rock 'n roll repeat { loopCounter <- loopCounter + 1L if (trace > 0L && loopCounter %% trace == 0L) { cat(loopCounter, "@t =", ct, ":\t|S| =", length(susceptibles), " |I| =", length(infected), "\trejected?", pointRejected, "\n") } if (!pointRejected) { ## Compute current conditional intensity eval(lambdaCalc) ## Update event history (uses epiCovars from lambdaCalc) eval(updateNextEvent) } pointRejected <- FALSE ## Determine time of next external change point changePoints <- c(externalChangePoints, h0ChangePoints, Revents[,2], Sevents[,2]) .isPendingChangePoint <- changePoints > ct nextChangePoint <- if (any(.isPendingChangePoint)) { min(changePoints[.isPendingChangePoint]) } else Inf ## Simulate waiting time for the subsequent infection T <- tryCatch(rexp(1, rate = lambdaStarMax), warning = function(w) { if (!is.na(lambdaStarMax) && lambdaStarMax < 1) { # rate was to small for rexp if (length(susceptibles) > 0L) { assign("hadNumericalProblems0", TRUE, inherits = TRUE) } if (nextChangePoint == Inf) NULL else Inf } else { # rate was to big for rexp 0 # since R-2.7.0 rexp(1, Inf) returns 0 with no warning! } }) ## Stop if lambdaStarMax too small AND no more changes in rate if (is.null(T)) { ct <- end eval(addNextEvent) break } ## Stop if lambdaStarMax too big meaning T == 0 (=> concurrent events) if (T == 0) { hadNumericalProblemsInf <- TRUE break } ## Stop at all costs if end of simulation time [0; end) has been reached if (isTRUE(min(ct+T, nextChangePoint) >= end)) { # ">=" because we don't want an event at "end" ct <- end eval(addNextEvent) break } if (ct + T > nextChangePoint) { ## Simulated time point is beyond the next time of intensity change ## (removal or covariate or upper baseline change point) ct <- nextChangePoint if (nPredCox > 0L && ct %in% externalChangePoints) { # update endemic covariates eval(coxUpdate) } if (.Reventidx <- match(ct, Revents[,2L], nomatch = 0L)) { # removal (I->R), thus update set of infected remover <- Revents[.Reventidx,1L] .remPeriod <- remPeriod(ids[remover]) Sevents <- rbind(Sevents, c(remover, ct + .remPeriod)) infected <- infected[-match(remover, infected)] nextEvent[remover,7L] <- 1 } if (.Seventidx <- match(ct, Sevents[,2L], nomatch = 0L)) { # this will also be TRUE if above .remPeriod == 0 (SIS-like with pseudo-R-event) # re-susceptibility (R->S), thus update set of susceptibles resusceptible <- Sevents[.Seventidx,1L] susceptibles <- c(susceptibles, resusceptible) } # update event history eval(addNextEvent) } else { ## Simulated time point lies within the thinning period ## => rejection sampling step ct <- ct + T if (length(h0ChangePoints) > 0L) {# i.e. if non-constant baseline # Update intensities for rejection probability at new ct eval(lambdaCalc) } if (mustReject()) { pointRejected <- TRUE next } # At this point, we have an actual event! => # Sample the individual who becomes infected with probabilities # according to the intensity proportions victimSindex <- sample(length(susceptibles), 1L, prob = lambdaS/lambdaStar) victim <- susceptibles[victimSindex] eventTimes <- c(eventTimes, ct) Revents <- rbind(Revents, c(victim, ct + infPeriod(ids[victim]))) susceptibles <- susceptibles[-victimSindex] infected <- c(infected, victim) # Add to history nextEvent[victim,6L] <- 1 eval(addNextEvent) } } ############## ### Return ### ############## if (hadNumericalProblemsInf) { warning("simulation ended due to an infinite overall infection rate") } if (hadNumericalProblems0) { warning("occasionally, the overall infection rate was numerically ", "equal to 0 although there were individuals at risk") } if (trace > 0L) { cat("Converting the event history into a data.frame (\"epidata\") ...\n") } epi <- as.data.frame(evHist[seq_len(nObs*(block-1)),,drop=FALSE]) epi$id <- factor(ids[epi$id], levels = ids) rownames(epi) <- NULL attr(epi, "eventTimes") <- eventTimes attr(epi, "timeRange") <- c(timeIntervals[1L,1L], ct) attr(epi, "coords.cols") <- 7L + seq_len(ncol(coords)) attr(epi, "f") <- f attr(epi, "w") <- w attr(epi, "config") <- list(h0 = h0$exact, beta = beta, alpha = alpha) attr(epi, "call") <- cl attr(epi, "terms") <- Terms class(epi) <- c("simEpidata", "epidata", "data.frame") if (trace > 0L) { cat("Done.\n") } return(epi) } ### We define no plot-method for simEpidata (as a wrapper for intensityPlot), ### because we want plot(simEpidataObject) to use the inherited method plot.epidata ### which shows the evolution of the numbers of individuals in states S, I, and R ################################################################################ # A 'simulate' method for objects of class "twinSIR". ################################################################################ simulate.twinSIR <- function (object, nsim = 1, seed = 1, infPeriod = NULL, remPeriod = NULL, end = diff(range(object$intervals)), trace = FALSE, .allocate = NULL, data = object$data, ...) { theta <- coef(object) px <- ncol(object$model$X) pz <- ncol(object$model$Z) nh0 <- attr(object$terms, "intercept") * length(object$nEvents) f <- object$model$f # contains only the f's used in the model formula w <- object$model$w # contains only the w's used in the model formula if (any(missingf <- !names(f) %in% colnames(object$model$X))) { stop("simulation requires distance functions 'f', missing for: ", paste(colnames(object$model$X)[missingf], collapse=", ")) } if (any(missingw <- !names(w) %in% colnames(object$model$X))) { stop("simulation requires functions 'w', missing for: ", paste(colnames(object$model$X)[missingw], collapse=", ")) } formulaLHS <- "cbind(start, stop)" formulaRHS <- paste(c(as.integer(nh0 > 0), # endemic intercept? names(theta)[px+nh0+seq_len(pz-nh0)]), collapse = " + ") formula <- formula(paste(formulaLHS, formulaRHS, sep="~"), env = environment(formula(object))) h0 <- if (nh0 == 0L) { if (pz == 0L) { -Inf # no endemic component at all (exp(-Inf) == 0) } else { 0 # endemic covariates act on 0-log-baseline hazard } } else { .h0 <- stepfun(x = object$intervals[1:nh0], y = c(0,theta[px+seq_len(nh0)]), right = FALSE) list(exact = .h0, upper = .h0) } if (!inherits(data, "epidata")) { stop("invalid 'data' argument: use function 'twinSIR' with ", "'keep.data = TRUE'") } if (is.null(infPeriod) || is.null(remPeriod)) { s <- summary(data) eventsByID <- s$byID if (is.null(infPeriod)) { infPeriod <- if (s$type == "SI") { function (ids) rep.int(Inf, length(ids)) } else { # SIR, SIRS or SIS eventsByID$infPeriod <- eventsByID$time.R - eventsByID$time.I meanInfPeriodByID <- if (s$type %in% c("SIRS", "SIS")) { c(tapply(eventsByID$infPeriod, list(eventsByID$id), mean, na.rm = TRUE, simplify = TRUE)) } else { structure(eventsByID$infPeriod, names = eventsByID$id) } meanInfPeriod <- mean(meanInfPeriodByID, na.rm = TRUE) if (is.na(meanInfPeriod)) { stop("'infPeriod = NULL' invalid: ", "no infection periods observed") } function (ids) { infPeriods <- meanInfPeriodByID # named vector infPeriods[is.na(infPeriods)] <- meanInfPeriod infPeriods[ids] } } } if (is.null(remPeriod)) { remPeriod <- if (s$type == "SIRS") { eventsByID$remPeriod <- eventsByID$time.S - eventsByID$time.R meanRemPeriodByID <- c(tapply(eventsByID$remPeriod, list(eventsByID$id), mean, na.rm = TRUE, simplify = TRUE)) meanRemPeriod <- mean(meanRemPeriodByID, na.rm = TRUE) function (ids) { remPeriods <- meanRemPeriodByID # named vector remPeriods[is.na(remPeriods)] <- meanRemPeriod remPeriods[ids] } } else if (s$type == "SIS") { function (ids) rep.int(0, length(ids)) } else { # SIR or SI function (ids) rep.int(Inf, length(ids)) } } } set.seed(seed) res <- replicate(nsim, simEpidata(formula, data = data, beta = theta[px + nh0 + seq_len(pz-nh0)], h0 = h0, f = f, w = w, alpha = theta[seq_len(px)], infPeriod = infPeriod, remPeriod = remPeriod, end = end, trace = trace, .allocate = .allocate), simplify = FALSE ) if (nsim == 1L) res[[1L]] else res } surveillance/R/algo_bayes.R0000644000175100001440000000755112601335002015415 0ustar hornikusers################################################### ### chunk number 1: ################################################### # Implementation of the Bayes system. # The system evaluates specified timepoints and gives alarm if it recognizes # an outbreak for this timepoint. # # Features: # Choice between different Bayes sub-systems (difference in reference values). algo.bayesLatestTimepoint <- function(disProgObj, timePoint = NULL, control = list(b = 0, w = 6, actY = TRUE, alpha=0.05)){ observed <- disProgObj$observed freq <- disProgObj$freq # If there is no value in timePoint, then take the last value in observed if(is.null(timePoint)){ timePoint = length(observed) } #If no level specified. # check if the vector observed includes all necessary data. if((timePoint-(control$b*freq)-control$w) < 1){ stop("The vector of observed is too short!") } # construct the reference values basevec <- c() # if actY == TRUE use also the values of the year of timepoint if(control$actY){ basevec <- observed[(timePoint - control$w):(timePoint - 1)] } # check if you need more referencevalues of the past if(control$b >= 1){ for(i in 1:control$b){ basevec <- c(basevec, observed[(timePoint-(i*freq)-control$w):(timePoint-(i*freq)+control$w)]) } } # get the parameter for the negative binomial distribution # Modification on 13 July 2009 after comment by C. W. Ryan on NAs in the # time series sumBasevec <- sum(basevec, na.rm=TRUE) lengthBasevec <- sum(!is.na(basevec)) # compute the upper limit of a one sided (1-alpha)*100% prediction interval. upPI <- qnbinom(1-control$alpha, sumBasevec + 1/2, (lengthBasevec)/(lengthBasevec + 1)) # give alarm if the actual value is larger than the upper limit. alarm <- observed[timePoint] > upPI result <- list(alarm=alarm, upperbound=upPI, disProgObj=disProgObj) class(result) = "survRes" # for surveillance system result return(result) } # 'algo.bayes' calls 'algo.bayesLatestTimepoint' for data points given by range. algo.bayes <- function(disProgObj, control = list(range = range, b = 0, w = 6, actY = TRUE,alpha=0.05)){ # Set the default values if not yet set if(is.null(control$b)){ # value from bayes 1 control$b <- 0 } if(is.null(control$w)){ # value from bayes 1 control$w <- 6 } if(is.null(control$alpha)){ # value from bayes 1 control$alpha <- 0.05 } if(is.null(control$actY)){ # value from bayes 1 control$actY <- TRUE } # initialize the necessary vectors alarm <- matrix(data = 0, nrow = length(control$range), ncol = 1) upperbound <- matrix(data = 0, nrow = length(control$range), ncol = 1) count <- 1 for(i in control$range){ # call algo.bayesLatestTimepoint result <- algo.bayesLatestTimepoint(disProgObj, i, control = control) # store the results in the right order alarm[count] <- result$alarm upperbound[count] <- result$upperbound count <- count + 1 } #Add name and data name to control object. control$name <- paste("bayes(",control$w,",",control$w*control$actY,",",control$b,")",sep="") control$data <- paste(deparse(substitute(disProgObj))) # return alarm and upperbound vectors result <- list(alarm = alarm, upperbound = upperbound, disProgObj=disProgObj,control=control) class(result) = "survRes" # for surveillance system result return(result) } algo.bayes1 <- function(disProgObj, control = list(range = range)){ algo.bayes(disProgObj, control = list(range = control$range, b = 0, w = 6, actY = TRUE,alpha=0.05)) } algo.bayes2 <- function(disProgObj, control = list(range = range)){ algo.bayes(disProgObj, control = list(range = control$range, b = 1, w = 6, actY = TRUE,alpha=0.05)) } algo.bayes3 <- function(disProgObj, control = list(range = range)){ algo.bayes(disProgObj, control = list(range = control$range, b = 2, w = 4, actY = FALSE,alpha=0.05)) } surveillance/R/twinSIR_helper.R0000644000175100001440000002204712401160566016214 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Auxiliary functions for twinSIR() ### and to compute one-sided AIC by simulation (in twinSIR_methods.R) ### ### Copyright (C) 2009-2014 Sebastian Meyer, contributions by Michael Hoehle ### $Revision: 991 $ ### $Date: 2014-09-01 23:13:26 +0200 (Mon, 01. Sep 2014) $ ################################################################################ ################################################################################ # The cox function is used in model formulae to indicate/capture the variables # which go into the cox part/endemic component of the model. # Also, with this "cox variables" it is possible to build up interactions # as usual: cox(var1):cox(var2)... (as if cox(...) was a normal variable) ################################################################################ cox <- function (x) { x } ################################################################################ # read.design extracts the two parts X and Z of the design matrix. # Z contains the endemic part (consisting of the cox(.) terms), # X contains the epidemic part (the rest). # The automatic intercept variable is excluded from these matrices! # # ARGS: # m - a model.frame # Terms - terms for this model.frame (used to extract the model.matrix from m) # RETURNS: # list of matrices X and Z. # If there is no variable in one part of the model the corresponding matrix has # 0 columns, e.g. ncol(Z) = 0, if there is no endemic (Cox) part. # NOTE: # This function is inspired from the timereg package by T. Scheike (available # under GPL2). See http://staff.pubhealth.ku.dk/~ts/timereg.html for details. # The function has been improved/modified to fit our purposes. ################################################################################ read.design <- function (m, Terms) { attr(Terms, "intercept") <- 1 # we will remove the intercept later on # we need this to ensure that we have a reference category # in case of factors (correct contrasts) XZ <- model.matrix(Terms, m) Zterms <- grep("cox\\([^)]+\\)", colnames(XZ), ignore.case = FALSE, perl = FALSE, value = FALSE, fixed = FALSE, useBytes = FALSE, invert = FALSE) # timereg 1.0-9 way: pattern="^cox[(][A-z0-9._]*[)]" with perl=TRUE X <- XZ[, -c(1L, Zterms), drop = FALSE] Z <- XZ[, Zterms, drop = FALSE] ud <- list(X = X, Z = Z) return(ud) } ## Alternative way to do the same thing as read.design. ## This approach is similar to that of coxph, but most often some milliseconds ## slower. # read.design <- function (m, Terms) # { # attr(Terms, "intercept") <- 1 # we will remove the intercept later on # # we need this to ensure that we have a reference category # # in case of factors (right contrasts) # nCoxTerms <- length(attr(Terms, "specials")[["cox"]]) # if (nCoxTerms > 0) { # dropX <- untangle.specials(Terms, "cox", order=1:3)$terms # } # if (length(dropX) > 0) { # X <- model.matrix(Terms[-dropX], m) # by subscripting a Terms object, # Z <- model.matrix(Terms[dropX], m) # one always gets an intercept term # Z <- Z[, -1, drop = FALSE] # } else { # X <- model.matrix(Terms, m) # Z <- X[, NULL, drop = FALSE] # } # X <- X[, -1, drop = FALSE] # # ud <- list(X = X, Z = Z) # return(ud) # } ################################################################################ # Little helper function which returns either summary(object) or simply object, # if it is already a summary. The function also verifies the 'class'. ################################################################################ getSummary <- function (object, class) { summaryClass <- paste("summary", class, sep=".") if (inherits(object, class)) { summary(object) } else if (inherits(object, summaryClass)) { object } else { stop("'object' must inherit from class \"", summaryClass, "\" or \"", class, "\"") } } ################################################################################ ############################## OSAIC function ################################## ################################################################################ # Two functions: # Ztilde.chibarsq <- function(Z,p,Winv,tR,s=1) # w.chibarsq.sim <- function(p, W, N=1e4) # # Both functions are only used internally, no need for documentation # they are used in function .OSAICpenalty (twinSIR_methods.R) ################################################################################ ########################################################################## # This function computes Ztilde # for one Z as specified in Simulation 3, Silvapulle & Sen (2005), p. 79. # See also p. 37 for the quadprog link. # # Params: # Z - px1 matrix or vector with specific Z value # p - dimension of the problem, where theta is restricted to R^{+p} # Winv - inverse of covariance matrix of Z # tR - transpose of constraint matrix R\theta \geq 0. In all cases equal to # diag(p), but to save time we deliver it to the function every time # s - rescale objective function (division by s) # # Returns: # Ztilde, the point at which (Z-\theta)' W^{-1} (Z-\theta) is the # minimum over \theta \geq 0. ########################################################################## Ztilde.chibarsq <- function(Z,p,Winv,tR,s=1) { #The solve.QP function minimizes #-d^T b + 1/2 b^T D b subject to the constraints A^T b >= b_0. #Thus using p. 37 we have d = t(Winv) %*% Z. d <- crossprod(Winv, Z) #Note: Winv and d can become quiet large (or small), but since the solution is #invariant to the scaling of the function being minimized, we can equivalently #call solve.QP using D/s and d/s (e.g., s=mean(D)) to avoid the error #"constraints are inconsistent, no solution!" theta <- quadprog::solve.QP(Dmat = Winv/s, dvec = d/s, Amat = tR, bvec = rep.int(0,p), meq = 0)$solution return(sum(theta > 0)) } ###################################################################### # Compute OSAIC by simulation weights as described in Silvapulle & Sen # (2005), Simulation 3, p.79. # # Params: # p - dimension of the problem, theta is constrained to R^{+p} # W - covariance matrix of the chibarsq distribution # N - number of simulations to use # # Returns: # vector of length p+1 containing the weights w_i, i=0, \ldots, p, # computed by Monte Carlo simulation ###################################################################### w.chibarsq.sim <- function(p, W, N=1e4) { #Draw Z's from multivariate normal distribution with covariance #matrix W Z <- mvrnorm(N, rep.int(0,p), W) if (is.vector(Z)) Z <- t(Z) # case N==1 #inverse of W Winv <- solve(W) #For each simulation calculate Ztilde sims <- apply(X=Z, MARGIN=1, FUN=Ztilde.chibarsq, p=p, Winv=Winv, tR=diag(p), s=mean(Winv)) w <- table(factor(sims, levels=0:p)) / N return(w) } ################################################################################ # The helper 'getModel.simEpidata' extracts the model of an object of class # "simEpidata" similar to the function 'twinSIR' with model = TRUE, # i.e. a list with components survs, X, Z and weights, where atRiskY == 1. # The log-baseline h0 is evaluated at start times of intervals only. # This function is used in function 'intensityPlot'. ################################################################################ getModel.simEpidata <- function (object, ...) { class(object) <- "data.frame" # avoid use of [.epidata (not necessary here) config <- attr(object, "config") alpha <- config$alpha beta <- config$beta atRiskY1 <- object$atRiskY == 1 simepi1 <- object[atRiskY1,] survs <- simepi1[c("id", "start", "stop", "event")] attr(survs, "eventTimes") <- attr(object, "eventTimes") attr(survs, "timeRange") <- attr(object, "timeRange") X <- as.matrix(simepi1[tail(1:ncol(simepi1), length(alpha))]) logbaseline <- sapply(survs$start, FUN = config$h0, simplify = TRUE) Terms <- attr(object, "terms") Z <- read.design(model.frame(Terms, simepi1), Terms)$Z Z <- cbind("cox(logbaseline)" = logbaseline, Z) model <- list(survs = survs, X = X, Z = Z, weights = rep.int(1,nrow(survs))) return(model) } ### Similar auxiliary method extracting the model component ### of a fitted 'twinSIR' getModel.twinSIR <- function (object, ...) { if (is.null(model <- object[["model"]])) { stop("'", deparse(substitute(object)), "' does not contain the 'model' ", "component (use 'model = TRUE' when calling 'twinSIR')") } return(model) } surveillance/R/hhh4_simulate.R0000644000175100001440000002365412576007100016056 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Simulate from a HHH4 model ### ### Copyright (C) 2012 Michaela Paul, 2013-2015 Sebastian Meyer ### $Revision: 1477 $ ### $Date: 2015-09-15 14:25:35 +0200 (Die, 15. Sep 2015) $ ################################################################################ ### Simulate-method for hhh4-objects simulate.hhh4 <- function (object, # result from a call to hhh4 nsim=1, # number of replicates to simulate seed=NULL, y.start=NULL, # initial counts for epidemic components subset=1:nrow(object$stsObj), coefs=coef(object), # coefficients used for simulation components=c("ar","ne","end"), # which comp to include simplify=nsim>1, # counts array only (no full sts) ...) { ## Determine seed (this part is copied from stats:::simulate.lm with ## Copyright (C) 1995-2012 The R Core Team) if(!exists(".Random.seed", envir = .GlobalEnv, inherits = FALSE)) runif(1) # initialize the RNG if necessary if(is.null(seed)) RNGstate <- get(".Random.seed", envir = .GlobalEnv) else { R.seed <- get(".Random.seed", envir = .GlobalEnv) set.seed(seed) RNGstate <- structure(seed, kind = as.list(RNGkind())) on.exit(assign(".Random.seed", R.seed, envir = .GlobalEnv)) } ## END seed cl <- match.call() theta <- if (missing(coefs)) coefs else checkCoefs(object, coefs) ## lags lag.ar <- object$control$ar$lag lag.ne <- object$control$ne$lag maxlag <- max(lag.ar, lag.ne) ## initial counts nUnits <- object$nUnit if (is.null(y.start)) { # set starting value to mean observed (in subset!) y.means <- ceiling(colMeans(observed(object$stsObj)[subset,,drop=FALSE])) y.start <- matrix(y.means, maxlag, nUnits, byrow=TRUE) } else { if (is.vector(y.start)) y.start <- t(y.start) if (ncol(y.start) != nUnits) stop(sQuote("y.start"), " must have nUnits=", nUnits, " columns") if (nrow(y.start) < maxlag) stop("need 'y.start' values for lag=", maxlag, " initial time points") } ## get fitted components nu_it (with offset), phi_it, lambda_it, t in subset model <- terms.hhh4(object) means <- meanHHH(theta, model, subset=subset) psi <- splitParams(theta,model)$overdisp ## weight matrix/array of the ne component neweights <- getNEweights(object, coefW(theta)) ## set predictor to zero if not included ('components' argument) stopifnot(length(components) > 0, components %in% c("ar", "ne", "end")) getComp <- function (comp) { sel <- if (comp == "end") "endemic" else paste(comp, "exppred", sep=".") res <- means[[sel]] if (!comp %in% components) res[] <- 0 res } ar <- getComp("ar") ne <- getComp("ne") end <- getComp("end") ## simulate simcall <- quote( simHHH4(ar, ne, end, psi, neweights, y.start, lag.ar, lag.ne) ) if (!simplify) { ## result template res0 <- object$stsObj[subset,] setObserved <- function (observed) { res0@observed[] <- observed res0 } simcall <- call("setObserved", simcall) } res <- if (nsim==1) eval(simcall) else replicate(nsim, eval(simcall), simplify=if (simplify) "array" else FALSE) if (simplify) { dimnames(res)[1:2] <- list(subset, colnames(model$response)) attr(res, "initial") <- y.start attr(res, "stsObserved") <- object$stsObj[subset,] class(res) <- "hhh4sims" } ## Done attr(res, "call") <- cl attr(res, "seed") <- RNGstate res } ### Internal auxiliary function, which performs the actual simulation simHHH4 <- function(ar, # lambda_it (nTime x nUnits matrix) ne, # phi_it (nTime x nUnits matrix) end, # nu_it (nTime x nUnits matrix, offset included) psi, # overdisp param(s) or numeric(0) (psi->0 = Poisson) neW, # weight matrix/array for neighbourhood component start, # starting counts (vector of length nUnits, or # matrix with nUnits columns if lag > 1) lag.ar = 1, lag.ne = lag.ar ) { nTime <- nrow(end) nUnits <- ncol(end) ## simulate from Poisson or NegBin model rdistr <- if (length(psi)==0 || isTRUE(all.equal(psi, 0, check.attributes=FALSE))) { rpois } else { psi.inv <- 1/psi # since R uses different parametrization ## draw 'n' samples from NegBin with mean vector 'mean' (length=nUnits) ## and overdispersion psi such that Variance = mean + psi*mean^2 ## where 'size'=1/psi and length(psi) == 1 or length(mean) function(n, mean) rnbinom(n, mu = mean, size = psi.inv) } ## if only endemic component -> simulate independently if (all(ar + ne == 0)) { return(matrix(rdistr(length(end), end), nTime, nUnits)) } ## weighted sum of counts of other (neighbouring) regions ## params: y - vector with (lagged) counts of regions ## W - nUnits x nUnits adjacency/weight matrix (0=no neighbour) wSumNE <- if (is.null(neW) || all(neW == 0)) { # includes the case nUnits==1 function (y, W) numeric(nUnits) } else function (y, W) .colSums(W * y, nUnits, nUnits) ## initialize matrices for means mu_i,t and simulated data y_i,t mu <- y <- matrix(0, nTime, nUnits) y <- rbind(start, y) nStart <- nrow(y) - nrow(mu) # usually just 1 for lag=1 ## simulate timeDependentWeights <- length(dim(neW)) == 3 if (!timeDependentWeights) neWt <- neW for(t in seq_len(nTime)){ if (timeDependentWeights) neWt <- neW[,,t] ## mean mu_i,t = lambda*y_i,t-1 + phi*sum_j wji*y_j,t-1 + nu_i,t mu[t,] <- ar[t,] * y[nStart+t-lag.ar,] + ne[t,] * wSumNE(y[nStart+t-lag.ne,], neWt) + end[t,] ## Sample from Poisson/NegBin with that mean y[nStart+t,] <- rdistr(nUnits, mu[t,]) } ## return simulated data without initial counts y[-seq_len(nStart),,drop=FALSE] } ### check compatibility of a user-specified coefficient vector with model checkCoefs <- function (object, coefs, reparamPsi=TRUE) { theta <- coef(object, reparamPsi=reparamPsi) #-> computes 1/exp(logpsi) if (length(coefs) != length(theta)) stop(sQuote("coefs"), " must be of length ", length(theta)) names(coefs) <- names(theta) coefs } ### aggregate predictions over time and/or (groups of) units aggregate.hhh4sims <- function (x, units = TRUE, time = FALSE, ..., drop = FALSE) { ax <- attributes(x) if (time) { ## sum counts over the whole simulation period res <- colSums(x) ## -> a nUnits x nsim matrix -> will no longer be "hhh4sims" if (isTRUE(units)) { # sum over all units res <- colSums(res) # now a vector of length nsim } else if (!identical(FALSE, units)) { # sum over groups of units stopifnot(length(units) == dim(x)[2]) res <- t(rowSumsBy.matrix(t(res), units)) } } else { if (isTRUE(units)) { # sum over all units res <- apply(X = x, MARGIN = c(1L, 3L), FUN = sum) if (!drop) { ## restore unit dimension conforming to "hhh4sims" class dim(res) <- c(ax$dim[1L], 1L, ax$dim[3L]) dnres <- ax$dimnames dnres[2L] <- list(NULL) dimnames(res) <- dnres ## restore attributes attr(res, "initial") <- as.matrix(rowSums(ax$initial)) attr(res, "stsObserved") <- aggregate(ax$stsObserved, by = "unit") class(res) <- "hhh4sims" } } else if (!identical(FALSE, units)) { # sum over groups of units stopifnot(length(units) == dim(x)[2]) groupnames <- names(split.default(seq_along(units), units)) res <- apply(X = x, MARGIN = 3L, FUN = rowSumsBy.matrix, by = units) dim(res) <- c(ax$dim[1L], length(groupnames), ax$dim[3L]) dnres <- ax$dimnames dnres[2L] <- list(groupnames) dimnames(res) <- dnres if (!drop) { ## restore attributes attr(res, "initial") <- rowSumsBy.matrix(ax$initial, units) attr(res, "stsObserved") <- rowSumsBy.sts(ax$stsObserved, units) class(res) <- "hhh4sims" } } else { return(x) } } ## done res } rowSumsBy.matrix <- function (x, by, na.rm = FALSE) { dn <- dim(x) res <- vapply(X = split.default(x = seq_len(dn[2L]), f = by), FUN = function (idxg) .rowSums(x[, idxg, drop = FALSE], dn[1L], length(idxg), na.rm = na.rm), FUN.VALUE = numeric(dn[1L]), USE.NAMES = TRUE) if (dn[1L] == 1L) t(res) else res } rowSumsBy.sts <- function (x, by, na.rm = FALSE) { ## map, neighbourhood, upperbound, control get lost by aggregation of units sts(epoch = x@epoch, freq = x@freq, start = x@start, observed = rowSumsBy.matrix(x@observed, by, na.rm), state = rowSumsBy.matrix(x@state, by, na.rm) > 0, alarm = rowSumsBy.matrix(x@alarm, by, na.rm) > 0, populationFrac = rowSumsBy.matrix(x@populationFrac, by, na.rm), epochAsDate = x@epochAsDate, multinomialTS = x@multinomialTS) } surveillance/R/twinstim_siaf_powerlawL.R0000644000175100001440000002031212300637416020224 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### _L_agged power-law kernel f(s) = (||s||/sigma)^-d for ||s|| >= sigma, else 1 ### Similar to the density of the Pareto distribution (but value 1 for < sigma) ### ### Copyright (C) 2013-2014 Sebastian Meyer ### $Revision: 777 $ ### $Date: 2014-02-18 12:07:58 +0100 (Die, 18 Feb 2014) $ ################################################################################ siaf.powerlawL <- function (nTypes = 1, validpars = NULL) { nTypes <- as.integer(nTypes) stopifnot(length(nTypes) == 1L, nTypes > 0L) ## for the moment we don't make this type-specific if (nTypes != 1) stop("type-specific shapes are not yet implemented") ## helper expression, note: logpars=c(logscale=logsigma, logd=logd) tmp <- expression( logsigma <- logpars[[1L]], # used "[[" to drop names logd <- logpars[[2L]], sigma <- exp(logsigma), d <- exp(logd) ) ## spatial kernel f <- function (s, logpars, types = NULL) {} body(f) <- as.call(c(as.name("{"), tmp, expression( sLength <- sqrt(.rowSums(s^2, L <- length(s)/2, 2L)), fvals <- rep.int(1, L), inPLrange <- which(sLength > sigma), fvals[inPLrange] <- (sLength[inPLrange]/sigma)^-d, fvals ))) ## numerically integrate f over a polygonal domain F <- function (polydomain, f, logpars, type = NULL, ...) .polyCub.iso(polydomain$bdry, intrfr.powerlawL, logpars, #type, center=c(0,0), control=list(...)) ## fast integration of f over a circular domain Fcircle <- function (r, logpars, type = NULL) {} body(Fcircle) <- as.call(c(as.name("{"), tmp, expression( ## trivial case: radius of integration domain < sigma (=> constant f) if (r <= sigma) return(pi * r^2), ## otherwise, if r > sigma, integration via f^-1 fofr <- (r/sigma)^-d, basevolume <- pi * r^2 * fofr, # cylinder volume up to height f(r) intfinvsq <- sigma^2 * if (d == 2) -d*log(sigma/r) else { d/(d-2) * (1 - (sigma/r)^(d-2)) }, basevolume + pi * intfinvsq ) )) ## derivative of f wrt logpars ## CAVE: the derivative of f wrt logsigma is mathematically NaN at x=sigma ## this non-differentiability at the treshhold causes false convergence ## warnings by nlminb but is otherwise not relevant (could use slow and ## robust Nelder-Mead instead) deriv <- function (s, logpars, types = NULL) {} body(deriv) <- as.call(c(as.name("{"), tmp, expression( sLength <- sqrt(.rowSums(s^2, L <- length(s)/2, 2L)), derivlogsigma <- derivlogd <- numeric(L), inPLrange <- which(sLength > sigma), fPL <- (sLength[inPLrange]/sigma)^-d, derivlogsigma[inPLrange] <- d * fPL, derivlogd[inPLrange] <- fPL * log(fPL), cbind(derivlogsigma, derivlogd) ))) ## Numerical integration of 'deriv' over a polygonal domain Deriv <- function (polydomain, deriv, logpars, type = NULL, ...) { res.logsigma <- .polyCub.iso(polydomain$bdry, intrfr.powerlawL.dlogsigma, logpars, #type, center=c(0,0), control=list(...)) res.logd <- .polyCub.iso(polydomain$bdry, intrfr.powerlawL.dlogd, logpars, #type, center=c(0,0), control=list(...)) c(res.logsigma, res.logd) } ## simulate from the lagged power law (within a maximum distance 'ub') ##simulate <- siaf.simulatePC(intrfr.powerlawL) # <- generic simulator ## faster implementation taking advantage of the constant component: simulate <- function (n, logpars, type, ub) { sigma <- exp(logpars[[1L]]) d <- exp(logpars[[2L]]) ## Sampling via polar coordinates and inversion method ## random angle theta <- stats::runif(n, 0, 2*pi) ## sampling radius r ## trivial case u < sigma: p(r) \propto r on [0;u] if (ub < sigma) { r <- ub * sqrt(stats::runif(n)) # inversion sampling ## now rotate each point by a random angle to cover all directions return(r * cbind(cos(theta), sin(theta))) } ## case u >= sigma: p(r) \propto r if r sample component unir <- stats::runif(n) <= mass1 / (mass1 + mass2) ## samples from the uniform short-range component: n1 <- sum(unir) r1 <- sigma * sqrt(stats::runif(n1)) # similar to the case u < sigma ## samples from power-law component: p2(r) \propto r^(-d+1) on [sigma;u] ## For d>2 only, we could use VGAM::rpareto(n,sigma,d-2), d=1 is trivial n2 <- n - n1 r2 <- if (d==1) stats::runif(n2, sigma, ub) else { # inversion sampling P2inv <- if (d == 2) { function (z) ub^z * sigma^(1-z) } else { function (z) (z*ub^(2-d) + (1-z)*sigma^(2-d))^(1/(2-d)) } P2inv(stats::runif(n2)) } ## put samples from both components together r <- c(r1, r2) ## now rotate each point by a random angle to cover all directions r * cbind(cos(theta), sin(theta)) } ## set function environments to the global environment environment(f) <- environment(Fcircle) <- environment(deriv) <- environment(simulate) <- .GlobalEnv ## in F and Deriv we need access to the intrfr-functions environment(F) <- environment(Deriv) <- getNamespace("surveillance") ## return the kernel specification list(f=f, F=F, Fcircle=Fcircle, deriv=deriv, Deriv=Deriv, simulate=simulate, npars=2L, validpars=validpars) } ## integrate x*f(x) from 0 to R (vectorized) intrfr.powerlawL <- function (R, logpars, types = NULL) { sigma <- exp(logpars[[1L]]) d <- exp(logpars[[2L]]) pl <- which(R > sigma) upper <- R upper[pl] <- sigma res <- upper^2 / 2 # integral over x*constant part xplint <- if (d == 2) log(R[pl]/sigma) else (R[pl]^(2-d)-sigma^(2-d))/(2-d) res[pl] <- res[pl] + sigma^d * xplint res } ## integrate x * (df(x)/dlogsigma) from 0 to R (vectorized) intrfr.powerlawL.dlogsigma <- function (R, logpars, types = NULL) { sigma <- exp(logpars[[1L]]) d <- exp(logpars[[2L]]) pl <- which(R > sigma) res <- numeric(length(R)) xplint <- if (d == 2) log(R[pl]/sigma) else (R[pl]^(2-d)-sigma^(2-d))/(2-d) res[pl] <- d * sigma^d * xplint res } ## local({ # validation via numerical integration -> tests/testthat/test-siafs.R ## p <- function (r, sigma, d) ## r * siaf.powerlawL()$deriv(cbind(r,0), log(c(sigma,d)))[,1L] ## Pnum <- function (r, sigma, d) sapply(r, function (.r) { ## integrate(p, 0, .r, sigma=sigma, d=d, rel.tol=1e-8)$value ## }) ## r <- c(1,2,5,10,20,50,100) ## dev.null <- sapply(c(1,2,1.6), function(d) stopifnot(isTRUE( ## all.equal(intrfr.powerlawL.dlogsigma(r, log(c(3, d))), Pnum(r, 3, d))))) ## }) ## integrate x * (df(x)/dlogd) from 0 to R (vectorized) intrfr.powerlawL.dlogd <- function (R, logpars, types = NULL) { sigma <- exp(logpars[[1L]]) d <- exp(logpars[[2L]]) pl <- which(R > sigma) res <- numeric(length(R)) res[pl] <- if (d == 2) -(sigma*log(R[pl]/sigma))^2 else (sigma^d * R[pl]^(2-d) * (d-2)*d*log(R[pl]/sigma) - d*(sigma^2 - R[pl]^(2-d)*sigma^d)) / (d-2)^2 res } surveillance/R/sts_coerce.R0000644000175100001440000000646212571307135015455 0ustar hornikusers###################################################################### #Conversion between ts objects and sts objects ###################################################################### setAs(from="ts", to="sts", def = function (from) { #Extract date attributes from ts object fromtsp <- tsp(from) #Extract core data of the object theData <- unclass(from) attr(theData, "tsp") <- NULL #Check that the elemtns are actually counts if (!is.integer(as.vector(from))) { stop("Elements of the ts object need to be integer valued.") } #Create the sts object sts(observed = theData, start = c(trunc(fromtsp[1]), abs(fromtsp[1]-trunc(fromtsp[1]))*fromtsp[3]), freq = fromtsp[3]) }) ### Convert an "sts" object to a simple "ts" object as.ts.sts <- function (x, ...) { ts(data = x@observed, start = x@start, frequency = x@freq) } setAs(from = "sts", to = "ts", def = function (from) as.ts.sts(from)) ### Convert an "sts" object to an eXtensible Time Series "xts" as.xts.sts <- function (x, order.by = epoch(x, as.Date = TRUE), ...) { if (!missing(order.by) || x@freq %in% c(52, 365)) { xts::xts(x = x@observed, order.by = order.by, ...) } else { ## frequencies 4 and 12 are nicely handled by the as.xts.ts method xts::as.xts(as.ts.sts(x), ...) } } ###################################################################### #Method to convert sts object to a data frame suitable for regression #Params: # row.names - from generic R function # optional - from generic R function # freqByWeek -- if TRUE use information in week (supposed to be Dates) # to freq (e.g. used for regression model) ###################################################################### setMethod("as.data.frame", signature(x="sts"), function(x,row.names = NULL, optional = FALSE, ...) { #Convert object to data frame and give names res <- data.frame("observed"=x@observed, "epoch"=x@epoch, "state"=x@state, "alarm"=x@alarm,"population"=x@populationFrac) if (ncol(x) > 1) { colnames(res) <- c(paste("observed.",colnames(x@observed),sep=""),"epoch", paste("state.",colnames(x@observed),sep=""), paste("alarm.",colnames(x@observed),sep=""), paste("population.",colnames(x@observed),sep="")) } else { colnames(res) <- c("observed","epoch","state","alarm","population") } #Add a column denoting the number of week if (x@epochAsDate) { #Convert to date date <- as.Date(x@epoch, origin="1970-01-01") epochStr <- switch( as.character(x@freq), "12" = "%m", "52" = "%V", "365" = "%j") #Find out how many epochs there are each year years <- unique(as.numeric(formatDate(date,"%Y"))) dummyDates <- as.Date(paste(rep(years,each=6),"-12-",26:31,sep="")) maxEpoch <- tapply( as.numeric(formatDate(dummyDates, epochStr)), rep(years,each=6), max) #Assign this to result res$freq <- maxEpoch[pmatch(formatDate(date,"%Y"),names(maxEpoch),duplicates.ok=TRUE)] res$epochInPeriod <- as.numeric(formatDate(date,epochStr)) / res$freq } else { #Otherwise just replicate the fixed frequency res$freq <- x@freq res$epochInPeriod <- x@epoch %% res$freq } return(res) }) surveillance/R/glm_epidataCS.R0000644000175100001440000000473712376573340016031 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Formulation of an endemic-only twinstim as a Poisson-GLM with response the ### number of events per space-time cell of stgrid and offset log(dt*ds) ### ### Copyright (C) 2013-2014 Sebastian Meyer ### $Revision: 967 $ ### $Date: 2014-08-25 10:42:07 +0200 (Mon, 25. Aug 2014) $ ################################################################################ utils::globalVariables("area") # in glm(), the 'offset' is evaluated in 'data' glm_epidataCS <- function (formula, data, ...) { if (missing(formula)) { covariates <- c("start", setdiff(names(data$stgrid), c( reservedColsNames_stgrid, obligColsNames_stgrid))) formula <- as.formula(paste0("~", paste0(covariates, collapse=" + "))) } ## for a type-specific model, we really have to set up the full ## "stkappagrid", i.e. with nBlocks*nTiles*nTypes rows typeSpecificModel <- "type" %in% all.vars(formula) typeNames <- levels(data$events@data$type) nTypes <- length(typeNames) ## aggregated number of events in each cell of the stgrid if (typeSpecificModel) { .stgrid <- do.call("rbind", lapply(typeNames, function (type) { cbind(data$stgrid, type=type, deparse.level=0) })) eventsByCell <- c(table(with(data$events@data, { interaction(tile, BLOCK, type, drop=FALSE, sep=".", lex.order=FALSE) }))) .stgrid$nEvents <- eventsByCell[paste( .stgrid$tile, .stgrid$BLOCK, .stgrid$type, sep=".")] } else { .stgrid <- data$stgrid eventsByCell <- c(table(with(data$events@data, { interaction(tile, BLOCK, drop=FALSE, sep=".", lex.order=FALSE) }))) .stgrid$nEvents <- eventsByCell[paste( .stgrid$tile, .stgrid$BLOCK, sep=".")] } .stgrid$nEvents[is.na(.stgrid$nEvents)] <- 0L stopifnot(sum(.stgrid$nEvents) == nobs(data)) ## Fit corresponding Poisson-GLM environment(formula) <- environment() # to see typeSpecificModel and nTypes glm(update.formula(formula, nEvents ~ .), family = poisson(link="log"), data = .stgrid, offset = log((if(typeSpecificModel) 1 else nTypes)*(stop-start)*area), ...) } surveillance/R/plot_graphics.R0000644000175100001440000001003211731650466016153 0ustar hornikusers################################################### ### chunk number 1: ################################################### plot.survRes <- function(x, method=x$control$name, disease=x$control$data, startyear = 2001, firstweek = 1, legend=TRUE,...){ survResObj <- x observed <- survResObj$disProgObj$observed[survResObj$control$range] state <- survResObj$disProgObj$state[survResObj$control$range] # width of the column tab <- 0.5 # left/right help for constructing the columns observedxl <- (1:length(observed))-tab observedxr <- (1:length(observed))+tab upperboundx <- (1:length(survResObj$upperbound))-0.5 ###################################################################### # Generate the axis labelling ###################################################################### #Compute how much has been cut off by the specification of range start <- min(survResObj$control$range)-1 startyear <- startyear + start %/% 52 firstweek <- firstweek + start %% 52 # get the number of quarters lying in range myat.week <- seq(ceiling((52-firstweek+1)/13) * 13 + 1, length(observed)+(floor((52-firstweek + 1)/13) * 13 +1), by=13) # get the right year order year <- (myat.week - 52) %/% 52 + startyear # function to define the quarter order quarterFunc <- function(i) { switch(i+1,"I","II","III","IV")} # get the right number and order of quarter labels quarter <- sapply( (myat.week-1) %/% 13 %% 4, quarterFunc) # get the positions for the axis labels myat.week <- myat.week - (52 - firstweek + 1) #Find out how much the axes are scaled cex <- par()$cex.axis # construct the compute axis label if (cex == 1) { mylabels.week <- paste(year,"\n\n",quarter,sep="") } else { mylabels.week <- paste(year,"\n",quarter,sep="") } #Remove NaNs from upperbound (real problem: where do they come from) #survResObj$upperbound[is.nan(survResObj$upperbound)] <- 0 # control where the highest value is max <- max(max(observed),max(survResObj$upperbound)) #Generate the matrices to plot xstuff <- cbind(observedxl, observedxr, upperboundx) ystuff <-cbind(observed, observed, survResObj$upperbound) #Plot the results using one Large plot call matplot(xstuff,ystuff , t="hhs", lty=c(1,1,1), col=c(1,1,4), ylim=c(-1/20*max, max), xlab = "time", ylab = "No. of infected", axes = FALSE)#hoehle, ...) if (!is.null(survResObj$aggr)) { points(upperboundx+tab,survResObj$aggr,col=1) } for(i in 1:length(observed)){ matlines( c(i-tab, i+tab), c(observed[i],observed[i]) ) if(survResObj$alarm[i] == 1) matpoints( i, -1/40*max, pch=24, col=2) if(state[i] == 1) matpoints( i, -1/20*max, pch=24, col=3) } if (disease != "") { disease <- paste("of ",disease," ",sep="") } title(paste("Analysis ", as.character(disease), "using ", as.character(method),sep="")) # parameters for the legend placement to the right upper side xlegpos <- 1/4 ylegpos <- 1 # check where to place the legend. If the left upper side is free place it there if (max * 2/3 >= max( max(observed[1:floor(1/4 * length(observed))]), max(survResObj$upperbound[1:floor(1/4 * length(survResObj$upperbound))]) )) { xlegpos <- 0 } if (legend) { legend(xlegpos*length(observed)/sqrt(cex), ylegpos*max, legend=c("Infected", "Threshold", "Computed Alarm", "Defined Alarm"), lty=c(1,1,NA,NA), col=c(1,4,2,3), pch=c(NA,NA,24,24),cex=cex) } axis( at=myat.week , labels=mylabels.week , side=1, line = 1 ) axis( side=2 ) invisible() } surveillance/R/AllGeneric.R0000644000175100001440000001503712616225440015325 0ustar hornikusers ### Define some functions to be S3 generic animate <- function (object, ...) UseMethod("animate") R0 <- function (object, ...) UseMethod("R0") as.epidata <- function (data, ...) UseMethod("as.epidata") intensityplot <- function (x, ...) UseMethod("intensityplot") untie <- function (x, amount, ...) UseMethod("untie") fixef <- function (object, ...) UseMethod("fixef") ranef <- function (object, ...) UseMethod("ranef") intersectPolyCircle <- function (object, center, radius, ...) UseMethod("intersectPolyCircle") calibrationTest <- function (x, ...) UseMethod("calibrationTest") scores <- function (x, ...) { if (identical(class(x), "list")) { ## backward compatibility with surveillance < 1.10-0 scores.oneStepAhead(x, ...) } else { UseMethod("scores") } } pit <- function (x, ...) UseMethod("pit") ## internal function with methods for "twinSIR" and "simEpidata" getModel <- function (object, ...) UseMethod("getModel") ## list coefficients by component coeflist <- function (x, ...) UseMethod("coeflist") coeflist.default <- function (x, npars, ...) { if (is.null(groupnames <- names(npars))) { stop("'npars' must be named") } f <- factor(rep.int(groupnames, npars), levels = groupnames) split.default(x = x, f = f, drop = FALSE) } ### Declare some existing R functions (which we import) to be S4-generic. ### This is not strictly necessary, but considered better programming style, and ### it avoids messages noting the creation of the generics during package build ### and installation, see the section "Basic Use" in help("setGeneric"). setGeneric("plot") setGeneric("aggregate") setGeneric("toLatex") ## data frame-like methods defined in sts.R setGeneric("dim") setGeneric("dimnames") ###################################################################### # Conversion to and from sts objects ###################################################################### #setGeneric("as.sts") setGeneric("as.data.frame") ###################################################################### # Accessing and replacing slots of the "sts" class ###################################################################### #epoch slot setGeneric("epoch", function(x, as.Date=x@epochAsDate) standardGeneric("epoch")) setMethod("epoch", "sts", function(x, as.Date=x@epochAsDate) { if (!as.Date) { # return numeric vector x@epoch } else { # convert to Date format if (x@epochAsDate) { as.Date(x@epoch, origin = "1970-01-01") } else if (x@freq == 12) { # use the first day of every month as.Date(strptime(paste(year(x), epochInYear(x), 1, sep = "-"), format = "%Y-%m-%d")) } else if (x@freq == 52) { # use Mondays firstMonday <- strptime(x = paste0(x@start[1L], "-W", x@start[2L], "-1"), format = "%Y-W%W-%u") seq(from = as.Date(firstMonday), by = 7L, length.out = nrow(x)) } else if (x@freq == 365) { # use day of the year (incorrect in leap years) as.Date(strptime(paste0(year(x), "-D", epochInYear(x)), format = "%Y-D%j")) } else { stop("date conversion only implemented for daily, weekly and monthly data") } } }) setGeneric("epoch<-", function(x, value) standardGeneric("epoch<-")) setReplaceMethod("epoch", "sts", function(x, value) { x@epoch <- value x }) # observed slot setGeneric("observed", function(x) standardGeneric("observed")) setMethod("observed", "sts", function(x) { return(x@observed) }) setGeneric("observed<-", function(x, value) standardGeneric("observed<-")) setReplaceMethod("observed", "sts", function(x, value) { x@observed <- value x }) # alarms slot setGeneric("alarms", function(x) standardGeneric("alarms")) setMethod("alarms", "sts", function(x) { return(x@alarm) }) setGeneric("alarms<-", function(x, value) standardGeneric("alarms<-")) setReplaceMethod("alarms", "sts", function(x, value) { x@alarm <- value x }) # upperbound slot setGeneric("upperbound", function(x) standardGeneric("upperbound")) setMethod("upperbound", "sts", function(x) { return(x@upperbound) }) setGeneric("upperbound<-", function(x, value) standardGeneric("upperbound<-")) setReplaceMethod("upperbound", "sts", function(x, value) { x@upperbound <- value x }) # population slot (actually its populationFrac) setGeneric("population", function(x) standardGeneric("population")) setMethod("population", "sts", function(x) { return(x@populationFrac) }) setGeneric("population<-", function(x, value) standardGeneric("population<-")) setReplaceMethod("population", "sts", function(x, value) { x@populationFrac <- value x }) ##control slot setGeneric("control", function(x) standardGeneric("control")) setMethod("control", "sts", function(x) { return(x@control) }) setGeneric("control<-", function(x, value) standardGeneric("control<-")) setReplaceMethod("control", "sts", function(x, value) { x@control <- value x }) ###multinomial Time series slot ##control slot setGeneric("multinomialTS", function(x) standardGeneric("multinomialTS")) setMethod("multinomialTS", "sts", function(x) { return(x@multinomialTS) }) setGeneric("multinomialTS<-", function(x, value) standardGeneric("multinomialTS<-")) setReplaceMethod("multinomialTS", "sts", function(x, value) { x@multinomialTS <- value x }) ### neighbourhood matrix slot setGeneric("neighbourhood", function(x) standardGeneric("neighbourhood")) setMethod("neighbourhood", "sts", function(x) { return(x@neighbourhood) }) setGeneric("neighbourhood<-", function(x, value) standardGeneric("neighbourhood<-")) setReplaceMethod("neighbourhood", "sts", function(x, value) { x@neighbourhood <- value x }) ###################################################################### # Miscellaneous access methods ###################################################################### setGeneric("epochInYear", function(x, ...) standardGeneric("epochInYear")) setGeneric("year", function(x, ...) standardGeneric("year")) ###################################################################### # For stsNC class ###################################################################### ### access function for repotringTriangle slot setGeneric("reportingTriangle", function(x) standardGeneric("reportingTriangle")) setMethod("reportingTriangle", "stsNC", function(x) { return(x@reportingTriangle) }) ### access function for delayCDF slot setGeneric("delayCDF", function(x) standardGeneric("delayCDF")) setMethod("delayCDF", "stsNC", function(x) { return(x@delayCDF) }) ### access function for SR slot setGeneric("score", function(x) standardGeneric("score")) setMethod("score", "stsNC", function(x) { return(x@SR) }) surveillance/R/sim_HHH.R0000644000175100001440000001363511731650466014610 0ustar hornikusers################################################### ### chunk number 1: ################################################### ############################################ # Simulates multivariate count data based on the model described in Held et.al (2005) # Note: trend is omitted ###################################### simHHH.default <- function(model=NULL,control=list(coefs=list(alpha=1, gamma=0, delta=0, lambda=0, phi=NULL,psi=NULL,period=52), neighbourhood=NULL,population=NULL,start=NULL), length){ ################################################# #Help functions ################################################ # draws n random numbers from a NB(mean, psi) distribution rNB<-function(n,mean,size=control$coefs$psi){ rnbinom(n, mu=mean, size=size) } # returns formula for the seasonal part of \nu_t formulaSeason <- function(mod="~-1",S=1,period){ for(i in 1:S){ mod <- paste(mod,"+sin(",2*i,"*pi*t/",period,")+cos(",2*i,"*pi*t/",period,")",sep="") } return(as.formula(mod)) } # sum of all neighbours # params: x - vector with counts # nhood - adjacency matrix, 0= no neighbour # returns a vector with the sum of "neighbouring counts" for all areas sumN <- function (x,nhood) { n<- length(x) if(any(nhood>0)){ nhood <- nhood >0 res <- sapply(1:n,function(i) sum(x[nhood[i,]])) } else { res<- rep(0,n) } return(res) } ################################################## ################################## # set default values if not specified ##################################### if(is.null(control$coefs$alpha)) stop("alpha needs to be specified") nAreas <- length(control$coefs$alpha) # define neighbourhood-matrix, assume there are no neighbours if(is.null(control$neighbourhood)) control$neighbourhood <- matrix(0,nAreas,nAreas) # set population (i.e. n_i,t) to 1 if not specified if(is.null(control$population)){ control$population <- matrix(1, ncol=nAreas,nrow=length) } else { #assumption: n_i,t = n_i pop <-control$population[1,] control$population <- matrix(pop,ncol=nAreas,nrow=length,byrow=TRUE) } #determine number of seasons if(is.null(control$coefs$gamma)){ control$coefs$gamma <-0 control$coefs$delta <- 0 S <- 1 } else { if(length(control$coefs$gamma) != length(control$coefs$delta)) stop("gamma and delta must have the same length") S <- length(control$coefs$gamma) } if(is.null(control$coefs$period)) control$coefs$period <- 52 # is there a autoregressive (epidemic) part if(is.null(control$coefs$lambda)){ control$coefs$lambda <- 0 } if(is.null(control$coefs$phi)){ control$coefs$phi <- 0 } if(!is.null(control$start)){ if(length(control$start)!=nAreas) stop("wrong dimension of start\n") } # simulate from Poisson or NegBin model if(is.null(control$coefs$psi)){ rdistr<-rpois } else{ rdistr<-rNB } # computation of seasonal part of nu_i,t: season <- model.frame(formula=formulaSeason(S=S,period=control$coefs$period), data=data.frame("t"=1:length)) #rearrange the sinus and cosinus parts season <- season[,c(seq(1,2*S,by=2),seq(2,2*S,by=2))] # this computes \sum_{s=1}^S [gamma_s*sin(omega_s*t) + delta_s*cos(omega_s*t) ] season<- as.matrix(season)%*%c(control$coefs$gamma,control$coefs$delta) # compute endemic part: nu_t = exp( alpha_i + season_t ) nu<-exp(sapply(1:nAreas,function(i) control$coefs$alpha[i]+season)) # initialize matrices for the mean mu_i,t and the simulated data x_i,t # x_i,0 is set to the mean of n_it*\nu_it mu <- matrix(0,ncol=nAreas,nrow=length) x <- matrix(0,ncol=nAreas,nrow=length+1) x[1,] <- ifelse(is.null(control$start),colMeans(control$population*nu),start) #print(x[1,]) if(control$coefs$lambda == 0 && control$coefs$phi ==0){ mu <- control$population*nu x <- matrix(rdistr(nAreas*(length+1),mu),ncol=nAreas,byrow=FALSE) } else { # simulate data for(t in 1:length){ #mu_i,t = lambda*x_i,t-1 +phi*\sum_j~i x_j,t-1 mu[t,] <- control$coefs$lambda *x[t,] + control$coefs$phi*sumN(x[t,],control$neighbourhood) + control$population[t,]*nu[t,] x[t+1,] <- rdistr(nAreas,mu[t,]) } } #remove first time point dp <- create.disProg(week=1:length,observed=x[-1,],state=rep(0,length), neighbourhood=control$neighbourhood, populationFrac=control$population) return(list(data=dp,mean=mu,endemic=control$population*nu,coefs=control$coefs)) } ################## simHHH <- function(model,control,length){ UseMethod("simHHH") } ################################ # simulates data using the estimated parameter values of a model fitted with algo.hhh # Note: NO trend simHHH.ah <- function(model,control=model$control, length){ #hoehle: removed this to make simHHH.ah consistent with simHHH.default # control <- model$control #number of areas nAreas <- ncol(model$disProgObj$observed) #number of seasons S <- control$nseason cntrl <- list(lambda=NULL,phi=NULL,gamma=NULL,delta=NULL, psi=NULL,period=model$control$period) #extract coefficients coefs <- coef(model) if(control$neighbours) cntrl$phi <- coefs["phi"] if(control$negbin) cntrl$psi <- coefs["psi"] if(control$lambda) cntrl$lambda <- coefs["lambda"] if(S > 0){ cntrl$gamma <- coefs[paste("gamma",1:S,sep="")] cntrl$delta <- coefs[paste("delta",1:S,sep="")] } cntrl$alpha <- coefs[paste("alpha",1:nAreas,sep="")] result <- simHHH(length,control=list(coefs=cntrl, neighbourhood=model$disProgObj$neighbourhood, populationFrac=model$disProgObj$populationFrac )) return(result) } surveillance/R/sim_background.R0000644000175100001440000000414011731650466016307 0ustar hornikusers################################################### ### chunk number 1: ################################################### # 'sim.seasonalNoise' generates a cyclic model of a poisson distribution # as background data for a simulated timevector. # # Parameters: # A - amplitude (range of sinus), default = 1 # alpha - parameter to move along the y-axis # (negative values not allowed) # d.h alpha > = A, default = 1, # beta - regression coefficient, default = 0 # season - factor to create seasonal moves # (moves the curve along the x-axis), default = 0 # length - number of weeks to model # frequency - factor to determine the oscillation-frequency, default = 1 # state - if a state chain is given, it is weighted by the parameter K # and influences mu # K - weight for outbreaks sim.seasonalNoise <- function(A = 1, alpha = 1, beta = 0, phi = 0, length, frequency = 1, state = NULL, K = 0){ t <- 1:length # constant factor to transform weeks to the appropriate pi-value. omega <- 2 * pi/ 52 # season moves the sin along the x-axis. if(is.null(state)){ # no state chain mu <- exp(A * sin( frequency * omega * (t + phi)) + alpha + beta * t) } else{ # encounter the state chain mu <- exp(A * sin( frequency * omega * (t + phi)) + alpha + beta * t + K * state) } # create the noise as random numbers of the Poisson distribution # with parameter mu seasonalBackground <- rpois(length, mu) # get random numbers result <- list(seasonalBackground = seasonalBackground, t = t, mu = mu, A = A, alpha = alpha, beta = beta, phi = phi, length = length, frequency = frequency, K = K) class(result) = "seasonNoise" return(result) } surveillance/R/pit.R0000644000175100001440000001151512610205047014104 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Non-randomized version of the PIT histogram as discussed in: ### Predictive model assessment for count data ### Czado, C., Gneiting, T. & Held, L. (2009) ### Biometrics 65:1254-1261 ### ### Copyright (C) 2010-2012 Michaela Paul, 2013-2015 Sebastian Meyer ### $Revision: 1495 $ ### $Date: 2015-10-16 16:31:03 +0200 (Fre, 16. Okt 2015) $ ################################################################################ ## x - observed count data ## pdistr - predictive CDF or a list of such predictive CDF's, ## one for each data point x. If evaluated at x=-1 it must return 0 ## J - number of bins ## ... - additional arguments for pdistr(), recycled to the length of x. ## Ignored if pdistr is a list. ## plot - a list of arguments for plot.histogram (otherwise no plot is produced) pit.default <- function (x, pdistr, J=10, relative=TRUE, ..., plot = list()) { PxPxm1 <- pitPxPxm1(x, pdistr, ...) breaks <- (0:J)/J Fbar_seq <- vapply(X = breaks, FUN = pit1, FUN.VALUE = 0, Px = PxPxm1[1L,], Pxm1 = PxPxm1[2L,], USE.NAMES = FALSE) scale <- if (relative) J else 1 f_j <- scale * diff.default(Fbar_seq) res <- list(breaks = breaks, counts = f_j, density = f_j, mids = breaks[-(J+1)] + 1/J/2, xname = "PIT", equidist = TRUE) class(res) <- c("pit", "histogram") if (is.list(plot)) do.call("plot", c(list(x = res), plot)) else res } pitPxPxm1 <- function (x, pdistr, ...) { if (is.list(pdistr)) { # list of functions, not necessarily vectorized stopifnot(length(pdistr) == length(x)) vapply(X = seq_along(x), FUN = function (i) { stopifnot(isTRUE( all.equal.numeric(0, pdistr[[i]](-1), check.attributes = FALSE) )) c(pdistr[[i]](x[i]), pdistr[[i]](x[i]-1)) }, FUN.VALUE = c(0,0), USE.NAMES = FALSE) # 2 x length(x) } else { # pdistr is (the name of) a function pdistr <- match.fun(pdistr) if (nargs() == 2L) { # no dots, same pdistr for every data point # and assumed to be vectorized stopifnot(isTRUE(all.equal.numeric(0, pdistr(-1)))) rbind(pdistr(x), pdistr(x-1), deparse.level = 0) } else { # ... arguments for pdistr, recycled to the length of x # pdistr is called by mapply, so no need to be vectorized stopifnot(isTRUE(all.equal.numeric( 0, do.call("pdistr", c(list(-1), lapply(list(...), "[", 1L))), check.attributes = FALSE))) rbind(mapply(pdistr, x, ..., SIMPLIFY = TRUE, USE.NAMES = FALSE), mapply(pdistr, x-1, ..., SIMPLIFY = TRUE, USE.NAMES = FALSE), deparse.level = 0) } } } ## calculate \bar{F}(u) for scalar u pit1 <- function (u, Px, Pxm1) { if (u <= 0) return(0) else if (u >= 1) return(1) F_u <- (u-Pxm1) / (Px-Pxm1) ## If Px=Pxm1, this means that predict. prob. of observed x is exactly zero. ## We get NaN for F_u. Our predictive model is bad if that happens. ## We could assign either 0 or 1 to express that and issue a warning. if (any(is.nan(F_u))) { warning("predictive distribution has 0 probability for observed 'x'") F_u[is.nan(F_u)] <- 0 } F_u[F_u < 0] <- 0 F_u[F_u > 1] <- 1 mean(F_u) } ## plot the PIT histogram plot.pit <- function (x, main = "", ylab = NULL, ...) { relative <- !isTRUE(all.equal(1, sum(x$density))) if (is.null(ylab)) ylab <- if (relative) "Relative Frequency" else "Density" ## call plot.histogram NextMethod("plot", main = main, ylab = ylab, ...) ## add reference line abline(h = if (relative) 1 else 1/length(x$mids), lty = 2, col = "grey") invisible(x) } ## a convenient wrapper for Poisson and NegBin predictions .pit <- function (x, mu, size = NULL, ...) { if (is.null(size)) { pit.default(x = x, pdistr = "ppois", lambda = mu, ...) } else { pit.default(x = x, pdistr = "pnbinom", mu = mu, size = size, ...) } } ## pit-methods for oneStepAhead() predictions and "hhh4" fits ## (similar to the scores-methods) pit.oneStepAhead <- function (x, ...) { .pit(x = x$observed, mu = x$pred, size = psi2size.oneStepAhead(x), ...) } pit.hhh4 <- function (x, subset = x$control$subset, units = seq_len(x$nUnit), ...) { .pit(x = x$stsObj@observed[subset, units, drop = FALSE], mu = x$fitted.values[match(subset, x$control$subset), units, drop = FALSE], size = psi2size.hhh4(x, subset, units), ...) } surveillance/R/hhh4_W_np.R0000644000175100001440000001407512410025776015141 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Non-parametric specification of neighbourhood weights in hhh4() ### ### Copyright (C) 2014 Sebastian Meyer ### $Revision: 1024 $ ### $Date: 2014-09-22 16:02:37 +0200 (Mon, 22. Sep 2014) $ ################################################################################ ### non-parametric estimation of weight function, i.e., provide each ### neighbourhood order up to 'maxlag' with its own (unconstrained) weight ### for identifiability: ### - first order is fixed to weight=1 ### - usually maxlag < max(nborder) (since only few pairs with highest orders), ### and to0 indicates which weight is assumed for orders > maxlag, either zero ### or the same as for order 'maxlag' W_np <- function (maxlag, to0 = TRUE, normalize = TRUE, initial = log(zetaweights(2:maxlag))) { if (missing(maxlag)) { stop("'maxlag' must be specified (usually < max. neighbourhood order)") } else stopifnot(isScalar(maxlag), maxlag > 1) # at least one parameter ## auxiliary expression used in 'dw' and 'd2w' below indicatormatrixExpr <- if (to0) { quote(nbmat==nbOrder) } else { quote(if(nbOrder==1L+npars) nbmat>=nbOrder else nbmat==nbOrder) } ## weights as a function of parameters and a matrix of neighbourhood orders w <- function (logweights, nbmat, ...) {} body(w) <- substitute( { weights <- exp(logweights) npars <- length(weights) # only used if 'to0=FALSE' and in derivs W <- c(0,1,weights)[1L+nbmat] ## repeat last coefficient for higher orders without separate estimate W[is.na(W)] <- .HOWEIGHT # substituted according to 'to0' dim(W) <- dimW <- dim(nbmat) # nUnits x nUnits dimnames(W) <- dimnames(nbmat) .RETVAL # substituted according to 'normalize' }, list( .HOWEIGHT = if (to0) 0 else quote(weights[npars]), .RETVAL = if (normalize) quote(W / (norm <- .rowSums(W, dimW[1L], dimW[2L]))) else quote(W) )) ## version of w with assignment of its return value (for use in normalized ## versions of dw and d2w) .w <- w body(.w)[[length(body(.w))]] <- substitute(Wnorm <- x, list(x=body(.w)[[length(body(.w))]])) ## derivative of w(logweights) -> a list of matrices (one for each param.) if (normalize) { dw <- .w ## append code to calculate first derivatives body(dw) <- as.call(c(as.list(body(dw)), eval(substitute( expression( FUN <- function (nbOrder, weight) { ind <- .INDICATORMATRIX (ind - Wnorm*.rowSums(ind,dimW[1L],dimW[2L])) * weight/norm }, mapply(FUN, 1L+seq_len(npars), weights, SIMPLIFY=FALSE, USE.NAMES=FALSE) ), list(.INDICATORMATRIX = indicatormatrixExpr) )))) } else { dw <- function (logweights, nbmat, ...) {} body(dw) <- substitute( { weights <- exp(logweights) npars <- length(weights) FUN <- function (nbOrder, weight) weight * (.INDICATORMATRIX) mapply(FUN, 1L+seq_len(npars), weights, SIMPLIFY=FALSE, USE.NAMES=FALSE) }, list(.INDICATORMATRIX = indicatormatrixExpr)) } ## result of d2w must be a list of matrices of length npars*(npars+1L)/2L if (normalize) { d2w <- .w body(d2w) <- as.call(c(as.list(body(d2w)), eval(substitute( expression( seqnpars <- seq_len(npars), inds <- lapply(1L+seqnpars, function (nbOrder) { ind <- .INDICATORMATRIX indrs <- .rowSums(ind, dimW[1L], dimW[2L]) list(indterm = ind - Wnorm * indrs, indrs = indrs) }), k <- rep.int(seqnpars, npars), # row index l <- rep.int(seqnpars, rep.int(npars,npars)), # column index ##<- 12x faster than expand.grid(seqnpars,seqnpars) lowertri <- k >= l, ##<- and 2.5x faster than ##kl <- which(lower.tri(matrix(,npars,npars), diag=TRUE), arr.ind=TRUE) norm2 <- norm^2, mapply(function (k, l) weights[k] / norm2 * if (k==l) { inds[[k]][[1L]] * (norm - 2*weights[k]*inds[[k]][[2L]]) } else { -weights[l] * (inds[[k]][[1L]] * inds[[l]][[2L]] + inds[[l]][[1L]] * inds[[k]][[2L]]) }, k[lowertri], l[lowertri], # inds[k[lowertri]], inds[l[lowertri]], SIMPLIFY=FALSE, USE.NAMES=FALSE) ), list(.INDICATORMATRIX = indicatormatrixExpr) )))) } else { # for k=k', second derivative = first derivative, otherwise 0 d2w <- dw if (maxlag > 2) { # i.e. npars > 1 ## add assignment for the return value of dw body(d2w)[[length(body(d2w))]] <- substitute(dW <- x, list(x=body(d2w)[[length(body(d2w))]])) ## append code to generate the list of second derivatives body(d2w) <- as.call(c(as.list(body(d2w)), expression( d2wlength <- (npars^2+npars)/2, ## indices of diagonal elements in x[lower.tri(x,diag=TRUE)] d2wdiag <- c(1L,1L+cumsum(seq.int(npars,2L))), d2wlist <- rep.int(list(0*nbmat), d2wlength), d2wlist[d2wdiag] <- dW, d2wlist ))) } } ## Done environment(w) <- environment(dw) <- environment(d2w) <- .GlobalEnv list(w = w, dw = dw, d2w = d2w, initial = initial) } surveillance/R/algo_twins.R0000644000175100001440000002200311731650466015464 0ustar hornikusers###################################################################### # Experimental version -- integrating the twins program into # the surveillance package ###################################################################### algo.twins <- function(disProgObj, control= list(burnin=1000, filter=10, sampleSize=2500, noOfHarmonics=1, alpha_xi=10, beta_xi=10, psiRWSigma=0.25, alpha_psi=1, beta_psi=0.1, nu_trend=FALSE, logFile="twins.log")) { if (ncol(disProgObj$observed)>1) { stop("Error: algo.twins only handles univariate time series of counts.") } ## Determine period from data T <- as.integer(disProgObj$freq) ## Convert sts objects if (class(disProgObj) == "sts") disProgObj <- sts2disProg(disProgObj) ## set default values (if not provided in control) if(is.null(control[["burnin",exact=TRUE]])) control$burnin <- 1000 if(is.null(control[["filter",exact=TRUE]])) control$filter <- 10 if(is.null(control[["sampleSize",exact=TRUE]])) control$sampleSize <- 2500 if(is.null(control[["alpha_xi",exact=TRUE]])) control$alpha_xi <- 10 if(is.null(control[["beta_xi",exact=TRUE]])) control$beta_xi <- 10 if(is.null(control[["psiRWSigma",exact=TRUE]])) control$psiRWSigma <- 0.25 if(is.null(control[["alpha_psi",exact=TRUE]])) control$alpha_psi <- 1 if(is.null(control[["beta_psi",exact=TRUE]])) control$beta_psi <- 0.1 if(is.null(control[["nu_trend",exact=TRUE]])) control$nu_trend <- FALSE if(is.null(control[["logFile",exact=TRUE]])) control$logFile <- "twins.log" if(is.null(control[["noOfHarmonics",exact=TRUE]])) control$noOfHarmonics <- 1 nfreq <- control$noOfHarmonics control$logFile2 <- paste(control$logFile,"2",sep="") ## Call the C code x <- disProgObj$observed n <- as.integer(dim(x)[1]) I <- as.integer(dim(x)[2]) ## with(control, res <- .C(...)) is not valid R syntax!! res <- with(control, .C("twins", x=as.integer(x), n=n, I=I, logFile=logFile, logFile2=logFile2, burnin=as.integer(burnin), filter=as.integer(filter), sampleSize=as.integer(sampleSize), alpha_xi=as.double(alpha_xi), beta_xi=as.double(beta_xi), T=as.integer(T), nfreq=as.integer(nfreq), psiRWSigma=as.double(0.25), alpha_psi=as.double(alpha_psi), beta_psi=as.double(beta_psi), nu_trend=as.integer(nu_trend), PACKAGE="surveillance")) ## Log files results <- read.table(control$logFile,header=T,na.strings=c("NaN","-NaN")) results2 <- read.table(control$logFile2,header=T,na.strings=c("NaN","-NaN")) acc <- read.table(paste(control$logFile,".acc",sep=""),col.names=c("name","RWSigma","acc")) rownames(acc) <- acc[,1] acc <- acc[,-1] ## Nothing is returned by the function - result is not a ## standard survObj result <- structure(list(control=control, disProgObj=disProgObj, logFile=results, logFile2=results2), class="atwins") return(result) } ###################################################################### # Adapted the functions form figures.R ###################################################################### ## Helper functions to make list of Z and the means of X,Y and omega make.pois <- function(obj) { n <- nrow(obj$disProgObj$observed) m<-list() m$n <- n m$Z <- obj$disProgObj$observed m$X <- numeric(n) m$Y <- numeric(n) m$omega <- numeric(n) ## Read means at each time instance Vars <- c("X","Y","omega") for (t in 1:n) { for (v in Vars) { m[[v]][t] <- obj$logFile2[,paste(v,".",t,".",sep="")] } } return(m) } pois.plot <- function(m.results,...) { plotorder <- c(expression(Z),expression(Y),expression(X)) plotcols <- c(1,"red","blue") lwd <- c(1,3,3) sts <- disProg2sts(m.results$disProgObj) ## Make default legend if nothing else is specified. if (is.null(list(...)[["legend.opts",exact=TRUE]])) { ## plot(sts,legend.opts=list(x="topleft",legend=paste(plotorder),lwd=lwd,col=plotcols,horiz=TRUE,y.intersp=0,lty=1),...) ## There is a bug here, but atm I do not have the time to fix it. plot(sts,legend.opts=NULL,...) } else { plot(sts,...) } ## Add Y and X lines for (i in 2:length(plotorder)) { lines(1:(m.results$n)+0.5,m.results[[paste(plotorder[i])]][c(2:m.results$n,m.results$n)],type="s",col=plotcols[i],lwd=lwd[i]) } } ## makes list of gamma, zeta and nu make.nu <- function(obj) { n <- nrow(obj$disProgObj$observed) samplesize <- obj$control$sampleSize frequencies <- obj$control$noOfHarmonics # instead of just always "1" ! season <- obj$disProgObj$freq basefrequency <- 2 * pi / season ## optionally also get the linear time trend coefficient withTrend <- obj$control$nu_trend ## this list will be returned at the end m<-list() ## first get all the gamma's from the logFile matrix into nicer elements of ## the list m for (j in 0:(2*frequencies + withTrend)) { m$gamma[[j+1]] <- numeric(samplesize) m[["gamma"]][[j+1]] <- obj$logFile[,paste("gamma",".",j,".",sep="")] } ## zeta is a list which has one element for each time point (vector of samples) m$zeta<-list() ## for all time points: for (t in 1:n) { ## start with the intercept m$zeta[[t]]<-m$gamma[[1]] ## add all harmonic terms for(j in 1:frequencies){ m$zeta[[t]] <- m$zeta[[t]] + m$gamma[[2*j]]*sin(basefrequency*j*(t-1)) + m$gamma[[2*j+1]]*cos(basefrequency*j*(t-1)) } ## and (optionally) finally add the linear trend if(withTrend) { m$zeta[[t]] <- m$zeta[[t]] + m$gamma[[2*frequencies + 2]] * (t - n/2) } } ## nu is the analogous list with the exponentiated zeta's m$nu<-list() for (t in 1:n) { m$nu[[t]]<-exp(m$zeta[[t]]) } ## also copy the number of harmonics m$frequencies <- frequencies ## and return return(m) } ## Function to plot median, and quantiles over time for m.par (m.par is list of n vectors, x is time) tms.plot <-function(x,m.par,xlab="",ylab="",ylim=FALSE,...){ m<-list() n<-length(m.par) m$median<-numeric(n) for (t in 1:n) { m$median[t]<- median(m.par[[t]]) m$q025[t]<- quantile(m.par[[t]],0.025) m$q975[t]<- quantile(m.par[[t]],0.975) } if(!ylim){ ymin<-min(m$q025) ymax<-max(m$q975) ylim=c(ymin,ymax) } plot(x-1,m$q975[x],type="l",col="red",main="",xlab=xlab,ylab=ylab,ylim=ylim,...) lines(x-1,m$median[x],type="l") lines(x-1,m$q025[x],type="l",col="red") } ###################################################################### # Function to plot an atwins object -- currently not # properly documented ###################################################################### plot.atwins <- function(x, which=c(1,4,6,7), ask=TRUE,...) { ## Extract from the 3 dots if(is.null(which)) { which <- c(1,4,6,7) } if(is.null(ask)) { ask <- TRUE } ## Make list of X,Y,Z,omega means of results2 m.results <-make.pois(x) m.results$disProgObj <- x$disProgObj ## Make list of results of gamma, zeta and nu nu<-make.nu(x) ## Plots show <- rep(FALSE,7) show[which] <- TRUE par(ask=ask) if (show[1]) { par(mfcol=c(1,1)) pois.plot(m.results,...) } if (show[2]) { ## make room for 2 * (frequencies + 1) panels par(mfcol=c(2,nu$frequencies+1)) ## and plot all gamma coefficients (possibly including the linear time ## trend coef) for(j in seq_along(nu$gamma)) { plot(nu$gamma[[j]],type="l",ylab=paste("gamma",j - 1,sep="")) } } if (show[3]) { par(mfcol=c(1,1)) plot(x$logFile$K,type="l",ylab=expression(K)) plot(x$logFile$xilambda,type="l",ylab=expression(xi)) plot(x$logFile$psi,type="l",ylab=expression(psi)) } if (show[4]) { par(mfcol=c(1,2)) acf(x$logFile$K,lag.max = 500,main="",xlab=expression(K)) acf(x$logFile$psi,lag.max = 500,main="",xlab=expression(psi)) } if (show[5]) { par(mfcol=c(1,1)) tms.plot(2:m.results$n,nu$nu,xlab="time") } if (show[6]) { par(mfcol=c(1,2)) hist(x$logFile$K,main="",xlab=expression(K),prob=TRUE,breaks=seq(-0.5,max(x$logFile$K)+0.5,1)) hist(x$logFile$psi,main="",xlab=expression(psi),prob=TRUE,nclass=50) } if (show[7]) { par(mfcol=c(1,1)) hist(x$logFile$Znp1,main="",xlab=expression(Z[n+1]),prob=TRUE,breaks=seq(-0.5,max(x$logFile$Znp1)+0.5,1)) } } surveillance/R/algo_hmm.R0000644000175100001440000001145312375717147015115 0ustar hornikusers################################################### ### chunk number 1: ################################################### algo.hmm <- function(disProgObj, control = list(range=range, Mtilde=-1, noStates=2, trend=TRUE, noHarmonics=1,covEffectEqual=FALSE, saveHMMs = FALSE, extraMSMargs=list() )){ # check if the msm package is available if (!requireNamespace("msm")) { stop("the HMM method requires package ", sQuote("msm")) } # Set the default values if not yet set if(is.null(control$Mtilde)){ control$Mtilde <- -1 } if(is.null(control$noStates)){ control$noStates <- 2 } if(is.null(control$trend)){ control$trend <- TRUE } if(is.null(control$noHarmonics)){ control$noHarmonics <- 1 } if(is.null(control$covEffectEqual)){ control$covEffectEqual <- FALSE } if(is.null(control$saveHMMs)){ control$saveHMMs <- FALSE } if(is.null(control$extraMSMargs)){ control$extraMSMargs <- list() } #Stop if not enough for estimation if(min(control$range) < 2) { stop("Error: Too few values as reference values") } # initialize the necessary vectors alarm <- matrix(data = 0, nrow = length(control$range), ncol = 1) upperbound <- matrix(data = 0, nrow = length(control$range), ncol = 1) control$hmms <- list() ############################################## #Repeat for each time point to monitor on-line ############################################## for (i in 1:length(control$range)) { #Function is so slow some sort of perfomance indicator is usually necessary cat(paste("i=",i," (out of ",length(control$range),")\n",sep="")) #Initialize observations for each round -- can be done sequentally first <- ifelse(control$Mtilde== -1, 1, max(control$range[i]-control$Mtilde+1,1)) t <- first:control$range[i] observed <- disProgObj$observed[t] #Init data counts <- data.frame(observed, t) names(counts) <- c("observed","t") #Initialize formula formulaStr <- ifelse(control$trend, "~ 1 + t ", "~ 1 ") #Create formula and add harmonics as covariates -- this could be done recursively? for (j in seq_len(control$noHarmonics)) { counts[,paste("cos",j,"t",sep="")] <- cos(2*j*pi*(t-1)/disProgObj$freq) counts[,paste("sin",j,"t",sep="")] <- sin(2*j*pi*(t-1)/disProgObj$freq) formulaStr <- paste(formulaStr,"+ cos",j,"t + sin",j,"t ",sep="") } #Obtain crude inits q <- quantile(observed,seq(0,1,length=control$noStates+1)) lvl <- cut(observed,breaks=q,include.lowest=TRUE) crudeMean <- as.numeric(tapply(observed, lvl, mean)) hcovariates <- list() hmodel <- list() for (j in seq_len(control$noStates)) { hcovariates[[j]] <- as.formula(formulaStr) val <- crudeMean[j] #Substitution necessary, as hmmPois does lazy evaluation of rate argument hmodel[[j]] <- eval(substitute(msm::hmmPois(rate=val),list(val=crudeMean[j]))) } #Any constraints on the parameters of the covariates for the different states hconstraint <- list() if (control$covEffectEqual) { hconstraint <- list(t=rep(1,control$noStates)) for (j in seq_len(control$noHarmonics)) { hconstraint[[paste("sin",j,"t",sep="")]] <- rep(1,control$noStates) hconstraint[[paste("cos",j,"t",sep="")]] <- rep(1,control$noStates) } } #Prepare object for msm fitting msm.args <- list(formula = observed ~ t, data = counts, #HMM with "noStates" states having equal initial values qmatrix = matrix(1/control$noStates,control$noStates,control$noStates), #y|x \sim Po( \mu[t] ) with some initial values hmodel = hmodel, #Models for \log \mu_t^1 and \log \mu_t^2 hcovariates = hcovariates, #Force the effects of the trend and harmonics to be equal for all states hconstraint=hconstraint) #Add additional msm arguments msm.args <- modifyList(msm.args, control$extraMSMargs) # fit the HMM hmm <- do.call(what=msm::msm, args=msm.args) #In case the model fits should be saved. if (control$saveHMMs) { control$hmms[[i]] <- hmm } #If most probable state of current time point (i.e. last obs) equals the #highest state then do alarm # print(observed) # print(matrix(viterbi.msm(hmm)$fitted,ncol=1)) alarm[i] <- msm::viterbi.msm(hmm)$fitted[length(t)] == control$noStates #Upperbound does not have any meaning -- compute posterior probability! upperbound[i] <- 0 } #Add name and data name to control object. control$name <- paste("hmm:", control$trans) control$data <- paste(deparse(substitute(disProgObj))) #no need for hmm object -- control$hmm <- hmm # return alarm and upperbound vectors result <- list(alarm = alarm, upperbound = upperbound, disProgObj=disProgObj,control=control) class(result) = "survRes" # for surveillance system result return(result) } surveillance/R/newtonRaphson.R0000644000175100001440000001450212166473572016174 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Michaela's own implementation of a Newton-Raphson optimizer ### ### Copyright (C) 2010-2012 Michaela Paul ### $Revision: 589 $ ### $Date: 2013-07-08 10:25:30 +0200 (Mon, 08 Jul 2013) $ ################################################################################ ##################### # x - initial parameter values # control arguments: # scoreTol - convergence if max(abs(score)) < scoreTol # paramTol - convergence if rel change in theta < paramTol # F.inc - eigenvalues of the hessian are computed when the Cholesky factorization # fails, and a constant added to the diagonal to make the smallest # eigenvalue= F.inc * largest # fn must return loglikelihood with score and fisher as attributes # fn <- function(theta,...){ # ll <- loglik(theta,...) # attr(ll,"score") <- score(theta,...) # attr(ll,"fisher") <- fisher(theta,...) # return(ll) # } newtonRaphson <- function(x,fn,..., control=list(), verbose=FALSE){ # set default values control.default <- list(scoreTol=1e-5, paramTol=1e-8, F.inc=0.01, stepFrac=0.5, niter=30) control <- modifyList(control.default, control) # number of step reductions, not positive definite Fisher matrices during iterations steph <- notpd <- 0 convergence <- 99 i <- 0 rel.tol <- function(x,xnew){ sqrt(sum((xnew-x)^2)/sum(x^2)) } score <- function(fn){ return(attr(fn,"score")) } fisher <- function(fn){ return(attr(fn,"fisher")) } ll0 <- c(fn(x,...)) if(verbose>1) cat("initial loglikelihood",ll0,"\n\n") # fn cannot be computed at initial par if(!is.finite(ll0) | is.na(ll0)){ cat("fn can not be computed at initial parameter values.\n") return(list(convergence=30, notpd = notpd, steph = steph)) } while(convergence != 0 & (i< control$niter)){ i <- i+1 ll <- fn(x,...) if(max(abs(score(ll))) < control$scoreTol){ convergence <- 0 break } # get cholesky decompositon F <- fisher(ll) F.chol <- try(chol(F),silent=TRUE) # could still give a nearly singular matrix # => could also check condition number if(inherits(F.chol,"try-error")){ if(verbose>1) cat("fisher is not pd\n") # fisher is not pd notpd <- notpd +1 ev <- eigen(F,symmetric=TRUE, only.values=TRUE)$values # add a constant to diag(F) diag(F) <- diag(F) + (control$F.inc*(max(abs(ev))) - min(ev))/(1-control$F.inc) # compute cholesky decomposition of modified fisher F.chol <- chol(F) } direction <- chol2inv(F.chol)%*% score(ll) if(max(abs(direction)) < control$paramTol*(max(abs(x))+1e-8) ){ convergence <- 0 break } # do Newton-Raphson step x.new <- c(x + direction) ll.new <- fn(x.new,...) if(verbose>1) cat("iteration",i,"\trel.tol =",rel.tol(x,x.new),"\tabs.tol(score) =",max(abs(score(ll.new))),"\n") if(verbose>2) cat("theta =",round(x.new,2),"\n") if(verbose>1) cat("loglikelihood =",ll.new,"\n") ## Backtracking: reduce stepsize until we really improve the loglikelihood # ll(x1,lambda) = ll(x0) + lambda * fisher(x0)^-1 %*% score(x0) i.backstep <- 0 ## Gray (2001) Ch 3: Unconstrained Optimization and Solving Nonlinear Equations # It is technically possible to construct sequences where ll(x1) > ll(x0) # at each step but where the sequence never converges. # For this reason a slightly stronger condition is usually used. # Dennis and Schnabel (1983): Numerical Methods for Unconstrained # Optimization and Nonlinear Equations. SIAM. (ch 6,3.2, p.126) # recommend requiring that lambda satisfy # ll(x1) > ll(x0) + 1e-4 *(x1-x0)' %*% score(x0) while((is.na(ll.new) || (ll.new < c(ll)+ (1e-4)*sum(direction*score(ll)))) & (i.backstep <= 20)){ if(verbose>1 & i.backstep==0) cat("backtracking: ") i.backstep <- i.backstep +1 steph <- steph +1 # reduce stepsize by a fixed fraction stepFrac direction <- control$stepFrac*direction x.new <- c(x + direction) ll.new <- fn(x.new,...) if(verbose>1) cat("*") } if(verbose & i.backstep>0) cat("\n") if(i.backstep >20){ if(verbose>1)cat("backtracking did not improve fn\n") #cat("ll: ",ll,"\tll.new: ",ll.new,"\n") convergence <- 10 break } x <- c(x.new) if(verbose>1) cat("\n") } ll <- fn(x,...) # max number of iterations reached, but check for convergence if(max(abs(score(ll))) < control$scoreTol){ convergence <- 0 } # convergence if # 1) relative difference between parameters is small # 2) absolute value of gradient is small # 3) stop after niter iterations if(i==control$niter & convergence !=0){ if(verbose>1) cat("Newton-Raphson stopped after",i,"iterations!\n") # iteration limit reached without convergence convergence <- 10 } if(verbose>1) cat("iteration",i,"\trel.tol =",rel.tol(x,x.new),"\tabs.tol(score) =",max(abs(score(ll))),"\n") if(verbose>2) cat("theta =",round(x.new,2),"\n") if(verbose>1) cat("loglikelihood =",c(ll),"\n\n") # loglikelihood loglik <- c(ll) # fisher info F <- fisher(ll) if(inherits(try(solve(F),silent=TRUE),"try-error")){ cat("\n\n***************************************\nfisher not regular!\n") #print(summary(x)) return(list(coefficients=x, loglikelihood=loglik, fisher=FALSE, convergence=22, notpd = notpd, steph = steph)) } # check if solution is a maximum (i.e. if fisher is pd ) eps <- 1e-10 if(!all(eigen(F,symmetric=TRUE, only.values=TRUE)$values > eps)){ if(verbose>1) cat("fisher information at solution is not pd\n") return(list(coefficients=x, loglikelihood=loglik, fisher=FALSE, convergence=21, notpd = notpd, steph = steph)) } if(verbose>0) cat("number of iterations = ",i," coverged = ", convergence ==0," log-likelihood = ",loglik, " notpd = ", notpd, " steph = ", steph, "\n") result <- list(coefficients=x, loglikelihood=loglik, fisher=FALSE, convergence=convergence, notpd=notpd, steph=steph,niter=i) return(result) } surveillance/R/algo_cusum.R0000644000175100001440000002060312237000434015442 0ustar hornikusers################################################### ### chunk number 1: ################################################### algo.cusum <- function(disProgObj, control = list(range=range, k=1.04, h=2.26, m=NULL, trans="standard",alpha=NULL)){ # Set the default values if not yet set if(is.null(control$k)) control$k <- 1.04 if(is.null(control$h)) control$h <- 2.26 if(is.null(control$trans)) control$trans <- "standard" if(is.null(control$alpha)) control$alpha <- 0.1 alpha <- control$alpha observed <- disProgObj$observed timePoint <- control$range[1] # Estimate m (the expected number of cases), i.e. parameter lambda of a # poisson distribution based on time points 1:t-1 if(is.null(control$m)) { m <- mean(observed[1:(timePoint-1)]) } else if (is.numeric(control$m)) { m <- control$m } else if (control$m == "glm") { #Fit a glm to the first observations training <- 1:(timePoint-1) #Set the time index t <- disProgObj$start[2] + training - 1 #Set the observations x <- observed[training] #Set period p <- disProgObj$freq df <- data.frame(x=x,t=t) control$m.glm<- glm(x ~ 1 + cos(2*pi/p*t) + sin(2*pi/p*t) ,family=poisson(),data=df) #predict the values in range t.new <- disProgObj$start[2] + control$range - 1 m <- predict(control$m.glm,newdata=data.frame(t=t.new),type="response") } #No transformation #standObs <- observed[control$range] x <- observed[control$range] standObs <- switch(control$trans, # compute standardized variables z3 (proposed by Rossi) "rossi" = (x - 3*m + 2*sqrt(x*m))/(2*sqrt(m)), # compute standardized variables z1 (based on asympotic normality) "standard" = (x - m)/sqrt(m), # anscombe residuals "anscombe" = 3/2*(x^(2/3)-m^(2/3))/m^(1/6), # anscombe residuals as in pierce schafer based on 2nd order approx of E(X) "anscombe2nd" = (x^(2/3)-(m^(2/3)-m^(-1/3)/9))/(2/3*m^(1/6)), # compute Pearson residuals for NegBin "pearsonNegBin" = (x - m)/sqrt(m+alpha*m^2), # anscombe residuals for NegBin "anscombeNegBin" = anscombeNB(x,mu=m,alpha=alpha), # don't do anything "none" = x, stop("invalid 'trans'formation") ) # initialize the necessary vectors # start with cusum[timePoint -1] = 0, i.e. set cusum[1] = 0 cusum <- matrix(0,nrow=(length(control$range)+1), ncol=1) alarm <- matrix(data = 0, nrow = (length(control$range)+1), ncol = 1) for (t in 1:length(control$range)){ # compute cumulated sums of standardized observations corrected with the # reference value k for all time points in range cusum[t+1]<- max(0, cusum[t]+(standObs[t]-control$k)) # give alarm if the cusum is larger than the decision boundary h alarm[t+1] <- cusum[t+1] >= control$h } #Backtransform h <- control$h k <- control$k Ctm1 <- cusum[1:length(control$range)] upperbound <- switch(control$trans, # standardized variables z3 (proposed by Rossi) "rossi" = 2*h*m^(1/2)+2*k*m^(1/2)-2*Ctm1*m^(1/2)+5*m-2*(4*m^2+2*m^(3/2)*h+2*m^(3/2)*k-2*m^(3/2)*Ctm1)^(1/2), # standardized variables z1 (based on asympotic normality) "standard" = ceiling(sqrt(m)*(h+k-Ctm1)+ m), # anscombe residuals "anscombe" = ifelse( ((2/3)*m^(1/6)*(h+k-Ctm1)+m^(2/3))<0, 0, (2/3*m^(1/6)*(h+k-Ctm1)+m^(2/3))^(3/2) ), # anscombe residuals ? "anscombe2nd" = ifelse( ((2/3)*m^(1/6)*(h+k-Ctm1)+(m^(2/3)-m^(1/3)/9))<0, 0, (2/3*m^(1/6)*(h+k-Ctm1)+(m^(2/3)-m^(1/3)/9))^(3/2) ), # Pearson residuals for NegBin "pearsonNegBin" = sqrt(m+alpha*m^2)*(h+k-Ctm1)+ m, # anscombe residuals for NegBin ? "anscombeNegBin" = h-cusum[-1], # don't do anything "none" = h-cusum[-1] ) # ensure upper bound is positive and not NaN upperbound[is.na(upperbound)] <- 0 upperbound[upperbound < 0] <- 0 # discard cusum[1] and alarm[1] cusum <- cusum[-1] alarm <- alarm[-1] #Add name and data name to control object. control$name <- paste("cusum:", control$trans) control$data <- paste(deparse(substitute(disProgObj))) control$m <- m # return alarm and upperbound vectors result <- list(alarm = alarm, upperbound = upperbound, disProgObj=disProgObj,control=control, cusum=cusum) class(result) = "survRes" # for surveillance system result return(result) } ################################################### ### chunk number 2: ################################################### ###################################################################### # Program to test the transformation of NegBin variables # using the transformation similar to Anscombe residuals ###################################################################### ##################################################################### # function to evaluate hypgeom_2F1(1/3,2/3, 5/3, x) # "exact" values for x = -(0:10) and linear interpolation for x = -(10:100) #################################################################### hypgeom2F1special <- function(x) { #Return the z (the approximation grid), which is closest to x idx <- which.min(abs(surveillance.gvar.z-x)) if(x >= -10) return(surveillance.gvar.hyp[idx]) else{ # find out interval that contains x if((x-surveillance.gvar.z[idx]) < 0){ idxLow <- idx +1 idxUp <- idx } else { idxLow <- idx idxUp <- idx -1 } #linear interpolation: f(x)=f(x0)+(f(x1)-f(x0))/1*(x-x0) return(surveillance.gvar.hyp[idxLow]+(surveillance.gvar.hyp[idxUp]-surveillance.gvar.hyp[idxLow])*(x-surveillance.gvar.z[idxLow])) } } ##################################################################### # compute anscombe residuals for Y ~ NegBin(mu, alpha) using hypgeom2F1 function # E(Y)= \mu, Var(Y) = \mu + \alpha*\mu^2 ################################################################# anscombeNB <- function(y,mu,alpha=0.1) { hypgeom.mu <- 3/2*mu^(2/3)*hypgeom2F1special(-alpha*mu) one <- function(y){ up <- 3/2*y^(2/3) * hypgeom2F1special(-alpha*y) - hypgeom.mu down <- (mu+alpha*mu^2)^(1/6) return(up/down) } return(sapply(y,one)) } ################################################### ### chunk number 3: ################################################### ###################################################################### # Given a specification of the average run length in the (a)cceptance # and (r)ejected setting determine the k and h values in a standard # normal setting. # # Description: # Functions from the spc package are used in a simple univariate # root finding problem. # # Params: # ARLa - average run length in acceptance setting (i.e. number before # false alarm # ARLw - average run length in rejection state (i.e. number before # an increase is detected (i.e. detection delay) # method - optim method to use, see ?optim # # Returns: # list( k - reference value, h - decision interval) ###################################################################### find.kh <- function(ARLa=500,ARLr=7,sided="one",method="BFGS",verbose=FALSE) { if (!requireNamespace("spc")) stop("find.kh() requires package ", dQuote("spc")) #Small helper function which is to be minimized fun <- function(k) { if (k>0) { #Compute decision interval h <- spc::xcusum.crit(L0=ARLa,k=k,r=50,sided=sided) #Check if xcusum.crit managed to find a solution if (is.nan(h)) stop("spc::xcusum.crit was not able to find a h corresponding to ", "ARLa=",ARLa," and k=",k) if (h > 0) { #Compute ARLr given the above computed h arlr <- spc::xcusum.arl(k,h,mu=2*k,r=50,sided=sided) #Deviation from the requested ARLr if (verbose) { cat("k=",k," score = ",(arlr-ARLr)^2,"\n") } return( (arlr-ARLr)^2 ) } else { return(1e99) } } else { return( 1e99) } } k <- optim(1,fun,method=method)$par return(list(k=k,h=spc::xcusum.crit(L0=ARLa,k=k,r=50,sided=sided))) } surveillance/R/stsplot_space.R0000644000175100001440000001435412440327363016206 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Snapshot map (spplot) of an sts-object or matrix of counts ### ### Copyright (C) 2013-2014 Sebastian Meyer ### $Revision: 1125 $ ### $Date: 2014-12-05 14:11:14 +0100 (Fre, 05. Dez 2014) $ ################################################################################ ## x: "sts" or (simulated) matrix of counts ## tps: one or more time points. The unit-specific _sum_ of time points "tps" is ## plotted. tps=NULL means cumulation over all time points in x. ## at: number of levels for the grouped counts or specific break points to ## use, or list(n, data, trafo) passed to getCountIntervals(), ## where data and trafo are optional. ## CAVE: intervals are closed on the left and open to the right. ## From panel.levelplot: zcol[z >= at[i] & z < at[i + 1]] <- i ## i.e. at=0:1 will have NA (=also white) for counts=1, thus we have to ## ensure max(at) > max(counts) stsplot_space <- function (x, tps = NULL, map = x@map, population = NULL, # nUnits-vector of population counts main = NULL, labels = FALSE, at = 10, col.regions = NULL, colorkey = list(space="bottom", labels=list(at=at)), total.args = NULL, gpar.missing = list(col="darkgrey", lty=2, lwd=2), sp.layout = NULL, xlim = bbox(map)[1, ], ylim = bbox(map)[2, ], ...) { counts <- if (inherits(x, "sts")) observed(x) else x if (length(map) == 0L) stop("no map") ## compute data to plot ncases <- getCumCounts(counts, tps) total <- sum(ncases) if (!is.null(population)) { # plot prevalence stopifnot(is.vector(population, mode="numeric"), length(population) == length(ncases)) ncases <- ncases / population total <- total / sum(population) } ## add ncases to map@data map <- as(map, "SpatialPolygonsDataFrame") map$ncases <- NA_real_ map$ncases[match(colnames(x),row.names(map))] <- ncases ## default main title if (is.null(main) && inherits(x, "sts")) main <- stsTimeRange2text(x, tps) ## check/determine color break points 'at' at <- checkat(at, ncases) ## default color palette if (is.null(col.regions)) { separate0 <- at[1] == 0 & at[2] <= 1 col.regions <- c( if (separate0) "white", hcl.colors(ncolors=length(at)-1-separate0, use.color=TRUE)) } ## colorkey settings if (!missing(colorkey) && is.list(colorkey)) colorkey <- modifyList(eval(formals()$colorkey), colorkey) ## automatic additions to sp.layout (region labels and total) if (is.list(gpar.missing) && any(is.na(map$ncases))) { layout.missing <- c(list("sp.polygons", obj=map[is.na(map$ncases),]), gpar.missing) sp.layout <- c(sp.layout, list(layout.missing)) } if (!is.null(layout.labels <- layout.labels(map, labels))) { sp.layout <- c(sp.layout, list(layout.labels)) } if (is.list(total.args)) { total.args <- modifyList(list(label="Overall: ", x=1, y=0), total.args) if (is.null(total.args$just)) total.args$just <- with (total.args, if (all(c(x,y) %in% 0:1)) { c(c("left", "right")[1+x], c("bottom","top")[1+y]) } else "center") total.args$label <- paste0(total.args$label, round(total,1)) layout.total <- c(grid::grid.text, total.args) ## "grid.text" wouldn't work since package "sp" doesn't import it sp.layout <- c(sp.layout, list(layout.total)) } ## generate the spplot() args <- list(quote(map[!is.na(map$ncases),]), "ncases", main=main, col.regions=col.regions, at=at, colorkey=colorkey, sp.layout=sp.layout, xlim=xlim, ylim=ylim, quote(...)) do.call("spplot", args) } ####################################################### ### Auxiliary functions for the "sts" snapshot function ####################################################### ## sum of counts by unit over time points "tps" ## the resulting vector has no names getCumCounts <- function (counts, tps=NULL, nUnits=ncol(counts)) { if (!is.null(tps)) counts <- counts[tps,,drop=FALSE] ntps <- nrow(counts) if (ntps == 1) c(counts) else .colSums(counts, ntps, nUnits) } checkat <- function (at, data) { # "data" should be on the original scale if (isScalar(at)) at <- list(n=at) at <- if (is.list(at)) { at <- modifyList(list(n=10, data=data), at) do.call("getCountIntervals", at) } else sort(at) if (any(data >= max(at) | data < min(at), na.rm=TRUE)) stop("'at' (right-open!) does not cover the data (range: ", paste0(format(range(data)), collapse=" - "), ")") structure(at, checked=TRUE) } getCountIntervals <- function (nInt, data, trafo=scales::sqrt_trans(), ...) { maxcount <- max(data, na.rm=TRUE) if (maxcount < nInt) { # no aggregation of counts necessary at <- 0:ceiling(maxcount+sqrt(.Machine$double.eps)) # max(at) > maxcount } else { at <- if (requireNamespace("scales", quietly=TRUE)) { scales::trans_breaks(trafo$trans, trafo$inv, n=nInt+1, ...)(data) } else pretty(sqrt(data), n=nInt+1, ...)^2 if (at[1] == 0 & at[2] > 1) # we want 0 counts separately ("white") at <- sort(c(1, at)) if (at[length(at)] == maxcount) # ensure max(at) > maxcount at[length(at)] <- at[length(at)] + 1 } at } stsTime2text <- function (stsObj, tps=TRUE, fmt="%i/%i") { sprintf(fmt, year(stsObj)[tps], epochInYear(stsObj)[tps]) } stsTimeRange2text <- function (stsObj, tps=NULL, fmt="%i/%i", sep=" - ") { tpsRange <- if (is.null(tps)) c(1, nrow(stsObj)) else range(tps) tpsRangeYW <- stsTime2text(stsObj, tps=tpsRange, fmt=fmt) paste0(unique(tpsRangeYW), collapse=sep) } surveillance/R/algo_cdc.R0000644000175100001440000000677312003566242015060 0ustar hornikusers################################################### ### chunk number 1: ################################################### # Implementation of the CDC surveillance system. # The system evaluates specified timepoints and gives alarm if it recognizes # an outbreak for this timepoint. # algo.cdcLatestTimepoint <- function(disProgObj, timePoint = NULL, control = list(b = 5, m = 1, alpha=0.025)){ observed <- disProgObj$observed freq <- disProgObj$freq # If there is no value in timePoint, then take the last value in observed if(is.null(timePoint)){ timePoint = length(observed) } # check if the vector observed includes all necessary data. if((timePoint-(control$b*freq)-control$m*4) < 1){ stop("The vector of observed is too short!") } ###################################################################### #Find which weeks to take -- hoehle 27.3.2007 - fixed bug taking #things in the wrong time order (more recent values) ###################################################################### midx <- seq(-control$m*4-3,control$m*4) yidx <- ((-control$b):(-1))*freq baseidx <- sort(rep(yidx,each=length(midx)) + midx) months <- rep(1:((2*control$m+1)*control$b),each=4) basevec <- as.integer(by(observed[timePoint + baseidx ],months,sum)) # Create a normal distribution based upper confidence interval # (we will use the prediction interval described in # Farrington & Andrew (2003)) upCi <- mean(basevec)+qnorm(1-control$alpha/2)*sd(basevec)*sqrt(1+1/length(basevec)) #Counts for the current mounth yt0 <- sum(observed[timePoint:(timePoint-3)]) # Alarm if the actual value is larger than the upper limit. alarm <- yt0 > upCi # Save aggregated score for later visualisation. aggr <- yt0 result <- list(alarm=alarm, upperbound=upCi,aggr=aggr) class(result) = "survRes" # for surveillance system result return(result) } # 'algo.cdc' calls 'algo.bayesLatestTimepoint' for data points given by range. algo.cdc <- function(disProgObj, control = list(range = range, b=5, m=1, alpha=0.025)){ if(disProgObj$freq != 52) { stop("algo.cdc only works for weekly data.") } # initialize the necessary vectors alarm <- matrix(data = 0, nrow = length(control$range), ncol = 1) aggr <- matrix(data = 0, nrow = length(control$range), ncol = 1) upperbound <- matrix(data = 0, nrow = length(control$range), ncol = 1) #Set control options (standard CDC options) if (is.null(control$range)) { control$range <- (disProgObj$freq*control$b - control$m):length(disProgObj$observed) } if (is.null(control$b)) {control$b=5} if (is.null(control$m)) {control$m=1} #bug fixed if (is.null(control$alpha)) {control$alpha=0.025} count <- 1 for(i in control$range){ # call algo.cdcLatestTimepoint result <- algo.cdcLatestTimepoint(disProgObj, i,control=control) # store the results in the right order alarm[count] <- result$alarm aggr[count] <- result$aggr upperbound[count] <- result$upperbound count <- count + 1 } #Add name and data name to control object. control$name <- paste("cdc(",control$m*4,"*,",0,",",control$b,")",sep="") control$data <- paste(deparse(substitute(disProgObj))) # Return the vectors- # as a special feature CDC objects contain an "aggr" identifier # containing the aggregated counts for each week. result <- list(alarm = alarm, upperbound = upperbound, disProgObj=disProgObj, control=control, aggr=aggr) class(result) = "survRes" # for surveillance system result return(result) } surveillance/R/sts_animate.R0000644000175100001440000001427112574335324015634 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Animated map (and time series chart) of an sts-object (or matrix of counts) ### ### Copyright (C) 2013-2015 Sebastian Meyer ### $Revision: 1469 $ ### $Date: 2015-09-10 19:16:04 +0200 (Don, 10. Sep 2015) $ ################################################################################ ### Corresponding to the S3-generic function animate(), ### we define a method for the S4-class "sts" and omit the recommended ### setGeneric("animate"); setMethod("animate", "sts", animate.sts) ### [see Section "Methods for S3 Generic Functions" in help("Methods")] animate.sts <- function (object, tps = NULL, cumulative = FALSE, population = NULL, at = 10, ..., timeplot = list(height = 0.3), sleep = 0.5, verbose = interactive(), draw = TRUE) { if (draw && dev.interactive()) message("Advice: use facilities of the \"animation\" package, e.g.,\n", " saveHTML() to view the animation in a web browser.") ## determine color breaks (checkat() is defined in stsplot_space.R) at <- checkat(at, data=.rangeOfDataToPlot(object, tps, cumulative, population)) ## style of the additional temporal plot if (is.list(timeplot)) { timeplot <- modifyList(eval(formals()$timeplot), timeplot) timeplot_height <- timeplot$height timeplot$height <- NULL # no parameter of stsplot_timesimple() stopifnot(timeplot_height > 0, timeplot_height < 1) } if (is.null(tps)) tps <- seq_len(nrow(object)) if (verbose) pb <- txtProgressBar(min=0, max=length(tps), initial=0, style=3) grobs <- vector(mode = "list", length = length(tps)) for(i in seq_along(tps)) { cti <- if (cumulative) seq_len(i) else i ls <- stsplot_space(object, tps=tps[cti], population=population, at=at, ...) if (is.list(timeplot) && requireNamespace("gridExtra")) { ## For gridExtra 0.9.1, loading its namespace is not sufficient ## since it does not register its S3 methods, especially ## "drawDetails.lattice". The consequence: The below call of ## gridExtra::grid.arrange would produce an empty plot. ## Since CRAN now disallows require("gridExtra") in package code, ## the user has to manually attach the package beforehand, or we ## register the relevant S3 method here: if (packageVersion("gridExtra") == "0.9.1" && !"gridExtra" %in% .packages()) { registerS3method(genname = "drawDetails", class = "lattice", method = "drawDetails.lattice", envir = getNamespace("gridExtra")) } ## NOTE: in gridExtra's development version, S3 methods are properly ## registered, see https://github.com/baptiste/gridextra lt <- do.call("stsplot_timeSimple", c( list(x=object, tps=tps, highlight=cti), timeplot)) lt$aspect.fill <- FALSE lt$aspect.ratio <- timeplot_height * ls$aspect.ratio grobs[[i]] <- gridExtra::arrangeGrob( ls, lt, heights=c(1-timeplot_height, timeplot_height)) ## alternative using package "gtable": ## drawDetails.lattice <- function (x, recording = FALSE) ## plot(x$p, newpage = FALSE) ## heights <- c(1-timeplot_height, timeplot_height) ## gt <- gtable::gtable(widths = grid::unit(1, units = "null"), ## heights = grid::unit(heights, units = "null")) ## gt <- gtable::gtable_add_grob(gt, list(grid::grob(p = ls, cl = "lattice"), ## grid::grob(p = lt, cl = "lattice")), ## t = 1:2, l = 1) if (draw) { grid::grid.newpage() grid::grid.draw(grobs[[i]]) } } else { grobs[[i]] <- ls if (draw) print(ls) } if (verbose) setTxtProgressBar(pb, i) if (dev.interactive()) Sys.sleep(sleep) } if (verbose) close(pb) invisible(grobs) } ### additional time plot below the map stsplot_timeSimple <- function (x, tps = NULL, highlight = integer(0), inactive = list(col="gray", lwd=1), active = list(col=1, lwd=4), ...) { observed <- if (inherits(x, "sts")) observed(x) else x if (is.null(tps)) { tps <- seq_len(nrow(observed)) } else { observed <- observed[tps,,drop=FALSE] } ## build highlight-specific style vectors (col, lwd, ...) stopifnot(is.list(inactive), is.list(active)) stylepars <- intersect(names(inactive), names(active)) styleargs <- sapply(stylepars, function (argname) { res <- rep.int(inactive[[argname]], length(tps)) res[highlight] <- active[[argname]] res }, simplify=FALSE, USE.NAMES=TRUE) xyplot.args <- modifyList(c(list(x=rowSums(observed) ~ tps, type="h", ylab="", xlab=""), styleargs), list(...)) do.call(lattice::xyplot, xyplot.args) } ### determine data range for automatic color breaks 'at' .rangeOfDataToPlot <- function (object, tps = NULL, cumulative = FALSE, population = NULL) { observed <- if (inherits(object, "sts")) observed(object) else object if (!is.null(tps)) { observed <- observed[tps,,drop=FALSE] } if (!is.null(population)) { # compute prevalence stopifnot(is.vector(population, mode="numeric"), length(population) == ncol(object)) observed <- observed / rep(population, each=nrow(observed)) } range(if (cumulative) c(observed[1L,], colSums(observed)) else observed) } surveillance/R/spatial_tools.R0000644000175100001440000002301412573360045016172 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Auxiliary functions for operations on spatial data ### ### Copyright (C) 2009-2015 Sebastian Meyer ### $Revision: 1463 $ ### $Date: 2015-09-07 21:06:12 +0200 (Mon, 07. Sep 2015) $ ################################################################################ ### Polygonal Approximation of a Disc/Circle discpoly <- function (center, radius, npoly = 64, class = c("Polygon", "owin", "gpc.poly"), hole = FALSE) { class <- match.arg(class) if (class == "owin") { # use spatstat::disc res <- disc(radius=radius, centre=center, mask=FALSE, npoly=npoly) if (hole) { res$bdry[[1]]$x <- rev(res$bdry[[1]]$x) res$bdry[[1]]$y <- rev(res$bdry[[1]]$y) res$bdry[[1]]$hole <- TRUE } return(res) } ## do it myself for the "Polygon" and "gpc.poly" classes stopifnot(radius > 0, isScalar(npoly), npoly > 2) theta <- seq(2*pi, 0, length = npoly+1)[-(npoly+1)] # for clockwise order if (hole) theta <- rev(theta) # for anticlockwise order x <- center[1] + radius * cos(theta) y <- center[2] + radius * sin(theta) switch(class, "Polygon" = Polygon(cbind(c(x,x[1]),c(y,y[1])), hole=hole), "gpc.poly" = { pts <- list(list(x=x, y=y, hole=hole)) if (isClass("gpc.poly") || requireNamespace("rgeos")) { new("gpc.poly", pts = pts) } else { warning("formal class \"gpc.poly\" not available") pts } } ) } ### Wrapper for polyclip or rgeos::gUnaryUnion or maptools::unionSpatialPolygons unionSpatialPolygons <- function (SpP, method = c("rgeos", "polyclip", "gpclib"), ...) { method <- match.arg(method) W <- switch( method, "polyclip" = { tiles_xylist <- xylist(SpP, reverse=FALSE) W_xylist <- polyclip::polyclip(tiles_xylist, tiles_xylist, "union", fillA = "nonzero", fillB = "nonzero", ...) ## FIXME: polyclip() seems to return owin-type vertex order? W_Polygons <- Polygons( lapply(W_xylist, function(p) Polygon(cbind(p$x,p$y)[c(1L,length(p$x):1L),])), ID="1") SpatialPolygons(list(W_Polygons)) }, "rgeos" = rgeos::gUnaryUnion(SpP, ...), "gpclib" = { ## rgeosStatus needed by maptools::unionSpatialPolygons is only ## set in maptools:::.onAttach. Since it is bad practice to do ## library("maptools") in package code (cf. R-exts 1.1.3.1), ## the user has to attach "maptools" manually beforehand if (!"maptools" %in% .packages()) { stop("need 'library(\"maptools\")'; ", "then call surveillance::unionSpatialPolygons") } gpclibCheck() && maptools::gpclibPermit() maptools::unionSpatialPolygons( SpP, IDs = rep.int(1,length(SpP@polygons)), avoidGEOS = TRUE, ...) }) ## ensure that W has exactly the same proj4string as SpP W@proj4string <- SpP@proj4string W } ### Compute distance from points to a polygonal boundary ## nncross.ppp() is about 20 times faster than the previous bdist.points() ## approach [-> distppl()], since it calls C-code [-> distppllmin()] ## minor drawback: the polygonal boundary needs to be transformed to "psp" bdist <- function (xy, poly) { if (nrow(xy) > 0L) { nncross.ppp( X = ppp(x = xy[,1L], y = xy[,2L], check = FALSE), Y = if (is.polygonal(poly)) edges(poly, check = FALSE) else poly, what = "dist" ) } else { ## spatstat 1.41-1 returns a 0-row _data.frame_ for the trivial case numeric(0L) } } ### sample n points uniformly on a disc with radius r runifdisc <- function (n, r = 1, buffer = 0) { stopifnot(buffer <= r) rangle <- runif(n, 0, 2*pi) rdist <- r * sqrt(runif(n, (buffer/r)^2, 1)) rdist * cbind(cos(rangle), sin(rangle)) } ### Count number of instances at the same location of a SpatialPoints object ## NOTE: the default multiplicity-method has been integrated into the spatstat ## package which we import multiplicity.Spatial <- function (x) multiplicity(coordinates(x)) ### determines which polygons of a SpatialPolygons object are at the border, ### i.e. have coordinates in common with the spatial union of all polygons polyAtBorder <- function (SpP, snap = sqrt(.Machine$double.eps), method = "rgeos", ...) { SpP <- as(SpP, "SpatialPolygons") W <- unionSpatialPolygons(SpP, method = method, ...) if (length(W@polygons) > 1) warning("unionSpatialPolygons() produced >1 Polygons-components") Wcoords <- unique(do.call("rbind", lapply(W@polygons[[1]]@Polygons, coordinates))) atBorder <- sapply(SpP@polygons, function (x) { coords <- unique(do.call("rbind", lapply(x@Polygons, coordinates))) res <- FALSE for (i in seq_len(nrow(coords))) { if (any(spDistsN1(Wcoords, coords[i,], longlat=FALSE) < snap)) { res <- TRUE break } } res }) names(atBorder) <- row.names(SpP) atBorder } ### sp.layout items for spplot() ## draw labels for Spatial* objects layout.labels <- function (obj, labels = TRUE, plot = FALSE) { stopifnot(inherits(obj, "Spatial")) ## get region labels getLabels <- function (labels) { if (isTRUE(labels)) { row.names(obj) } else if (length(labels) == 1L && (is.numeric(labels) | is.character(labels))) { if (!"data" %in% slotNames(obj)) stop("no data slot to select labels from") obj@data[[labels]] } else labels } ## convert labels argument to a list labels.args <- if (is.list(labels)) { labels } else if (!is.null(labels) && !identical(labels, FALSE)) { list(labels = getLabels(labels)) } else { # labels = FALSE or labels = NULL return(NULL) } ## set default coordinates for panel.text() and parse labels labels.args <- modifyList(list(x = coordinates(obj), labels = TRUE), labels.args) labels.args$labels <- getLabels(labels.args$labels) if (plot) { ## plot labels in the traditional graphics system do.call("text", labels.args) } else { ## return layout item for use by spplot() c("panel.text", labels.args) } } ## draw a scalebar with labels layout.scalebar <- function (obj, corner = c(0.05, 0.95), scale = 1, labels = c(0, scale), height = 0.05, pos = 3, ..., plot = FALSE) { stopifnot(inherits(obj, "Spatial")) BB <- bbox(obj) force(labels) # the default should use the original 'scale' value in km if (identical(FALSE, is.projected(obj))) { ## 'obj' has longlat coordinates, 'scale' is interpreted in kilometres scale <- .scale2longlat(t(rowMeans(BB)), scale) } offset <- BB[, 1L] + corner * apply(BB, 1L, diff.default) textfun <- if (plot) "text" else "panel.text" lis <- list( list("SpatialPolygonsRescale", layout.scale.bar(height = height), offset = offset, scale = scale, fill = c(NA, 1), plot.grid = !plot), list(textfun, x = offset[1L], y = offset[2L], labels = labels[1L], pos = pos, ...), list(textfun, x = offset[1L] + scale[1L], y = offset[2L], labels = labels[2L], pos = pos, ...) ) if (plot) { for (li in lis) eval(do.call("call", li)) } else { lis } } .scale2longlat <- function (focusLL, distKM) { ## .destPoint() is copied from the "raster" package by Robert J. Hijmans ## 'p' is a longlat coordinate matrix, 'd' is a vector of distances in metres .destPoint <- function (p, d, b=90, r=6378137) { toRad <- pi/180 lon1 <- p[, 1] * toRad lat1 <- p[, 2] * toRad b <- b * toRad lat2 <- asin(sin(lat1) * cos(d/r) + cos(lat1) * sin(d/r) * cos(b)) lon2 <- lon1 + atan2(sin(b) * sin(d/r) * cos(lat1), cos(d/r) - sin(lat1) * sin(lat2)) lon2 <- (lon2 + pi)%%(2 * pi) - pi cbind(lon2, lat2)/toRad } rightLL <- .destPoint(focusLL, distKM * 1000) rightLL[,1L] - focusLL[,1L] } ### determine the total area of a SpatialPolygons object ## CAVE: sum(sapply(obj@polygons, slot, "area")) ## is not correct if the object contains holes areaSpatialPolygons <- function (obj, byid = FALSE) { if (requireNamespace("rgeos", quietly = TRUE)) { rgeos::gArea(obj, byid = byid) } else { areas <- vapply( X = obj@polygons, FUN = function (p) sum( vapply(X = p@Polygons, FUN = function (x) (1-2*x@hole) * x@area, FUN.VALUE = 0, USE.NAMES = FALSE) ), FUN.VALUE = 0, USE.NAMES = FALSE ) if (byid) setNames(areas, row.names(obj)) else sum(areas) } } surveillance/R/isoWeekYear.R0000644000175100001440000001073412500404444015541 0ustar hornikusers###################################################################### # Extract ISO week from Date object # # Details: # Code by Gustaf Rydevik , revised 2010 # http://tolstoy.newcastle.edu.au/R/e10/help/10/05/5588.html # This is a platform independent way of doing # format.Date(x,"%G") or format.Date(x,"%G") # which unfortunately does not work on windows platforms. # # Note: The function is vectorized. # # Parameters: # Y -- Inputs a date object (POSIX) or Year # M -- month (NULL if Y is a Date object) # D -- day (NULL if Y is a Date object) # # Returns: # ISO year and wek of the date ###################################################################### isoWeekYear<-function(Y,M=NULL,D=NULL){ #Format the date. But whatts the difference between the two statements? if(!class(Y)[1]%in%c("Date","POSIXt")) { date.posix<-strptime(paste(Y,M,D,sep="-"),"%Y-%m-%d") } if(class(Y)[1]%in%c("POSIXt","Date")){ date.posix<-as.POSIXlt(Y) Y<-as.numeric(format(date.posix,"%Y")) M<-as.numeric(format(date.posix,"%m")) D<-as.numeric(format(date.posix,"%d")) } #LY LY <- (Y%%4==0 & !(Y%%100==0))|(Y%%400==0) LY.prev <- ((Y-1)%%4==0 & !((Y-1)%%100==0))|((Y-1)%%400==0) date.yday<-date.posix$yday+1 jan1.wday<-strptime(paste(Y,"01-01",sep="-"),"%Y-%m-%d")$wday jan1.wday<-ifelse(jan1.wday==0,7,jan1.wday) date.wday<-date.posix$wday date.wday<-ifelse(date.wday==0,7,date.wday) ####If the date is in the beginning, or end of the year, ### does it fall into a week of the previous or next year? Yn<-ifelse(date.yday<=(8-jan1.wday)&jan1.wday>4,Y-1, ifelse(((365+LY-date.yday)<(4-date.wday)),Y+1,Y)) ##Set the week differently if the date is in the beginning,middle or ##end of the year Wn<-ifelse( Yn==Y-1, ifelse((jan1.wday==5|(jan1.wday==6 &LY.prev)),53,52), ifelse(Yn==Y+1,1,(date.yday+(7-date.wday)+(jan1.wday-1))/7-(jan1.wday>4)) ) return(list(ISOYear=Yn,ISOWeek=Wn)) } ###################################################################### # Not very beautiful function implementing a platform independent # format.Date function. See format.Date, which for the %V and %G # format strings does not work on windows. # Added format string %Q for formatting of the quarter (1-4) the month # belongs to. # # Params: # x - An object of type Date to be converted. # format - A character string. Note that only "%V and %G" are # processed on Windows. Otherwise the call is sent to format.Date ###################################################################### #Small helper function - vectorized gsub, but disregarding names of x gsub2 <- function(pattern, replacement, x) { len <- length(x) mapply(FUN = gsub, pattern = rep_len(as.character(pattern), len), replacement = rep_len(as.character(replacement), len), x = x, MoreArgs = list(fixed = TRUE), SIMPLIFY = TRUE, USE.NAMES = FALSE) } #More general version also handling a mix of several formats formatDate <- function(x, format) { ##Anything to do? if (!grepl( "%G|%V|%Q|%OQ|%q", format)) { #nope return(format(x,format)) } #Replicate string. formatStr <- rep_len(format,length(x)) ##If days within quarter requested (this is kind of slow) if (grepl("%q",format)) { ##Loop over vectors of dates dateOfQuarter <- sapply(x, function(date) { ##Month number in quarter modQ <- (as.numeric(format(date,"%m"))-1) %% 3 dateInMonth <- seq(date,length.out=2,by=paste0("-",modQ," month"))[2] ##Move to first of month return(dateInMonth - as.numeric(format(dateInMonth,"%d")) + 1) }) dayInQuarter <- as.numeric(x - dateOfQuarter) + 1 formatStr <- gsub2("%q",as.character(dayInQuarter),formatStr) } if (grepl("%Q|%OQ",format)) { Q <- (as.numeric(format(x,"%m"))-1) %/% 3 + 1 #quarter formatStr <- gsub2("%Q",as.character(Q),formatStr) formatStr <- gsub2("%OQ",as.roman(Q),formatStr) } if (.Platform$OS.type == "windows") { ##Year/week isoYear <- isoWeekYear(x)$ISOYear isoWeek <- sprintf("%.2d",isoWeekYear(x)$ISOWeek) formatStr <- gsub2("%G",isoYear,formatStr) formatStr <- gsub2("%V",isoWeek,formatStr) } ##The rest of the formatting - works normally as defined by strptime res <- character(length(x)) for (i in 1:length(x)) { res[i] <- format(x[i],formatStr[i])} return(res) } surveillance/R/hhh4_W.R0000644000175100001440000002477612536027070014453 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Helper functions for neighbourhood weight matrices in hhh4() ### ### Copyright (C) 2012-2015 Sebastian Meyer ### $Revision: 1374 $ ### $Date: 2015-06-10 14:31:52 +0200 (Mit, 10. Jun 2015) $ ################################################################################ checkNeighbourhood <- function (neighbourhood) { ## setValidity() in sts.R only guarantees correct 'dim' and 'dimnames' ## we also assert numeric or logical matrix with non-NA entries ## FIXME: However, we currently don't check for symmetry and for zeros on ## the diagonal... stopifnot(is.matrix(neighbourhood), nrow(neighbourhood) == ncol(neighbourhood), is.numeric(neighbourhood) | is.logical(neighbourhood), is.finite(neighbourhood)) invisible(TRUE) } ### calculate the weighted sum of counts of adjacent (or all other) regions ### i.e. the nTime x nUnit matrix with elements ne_ti = sum_j w_jit * y_jt ## W is either a nUnits x nUnits matrix of time-constant weights w_ji ## or a nUnits x nUnits x nTime array of time-varying weights weightedSumNE <- function (observed, weights, lag) { dimY <- dim(observed) nTime <- dimY[1L] nUnits <- dimY[2L] tY <- t(observed) # -> nUnits x nTime res <- apply(weights, 2L, function (wi) ## if dim(weights)==2 (time-constant weights), length(wi)=nUnits, ## if dim(weights)==3, wi is a matrix of size nUnits x nTime .colSums(tY * wi, nUnits, nTime, na.rm=TRUE)) rbind(matrix(NA_real_, lag, nUnits), res[seq_len(nTime-lag),,drop=FALSE]) } ### normalize weight matrix such that each row sums to 1 (at each time point) normalizeW <- function (W) { dimW <- dim(W) if (length(dimW) == 2L) { W / .rowSums(W, dimW[1L], dimW[2L]) } else { # time-varying weights res <- apply(W, 3L, normalizeW) dim(res) <- dimW res } } ### scale and/or normalize a weight matrix/array scaleNEweights.default <- function (weights, scale = NULL, normalize = FALSE) { if (!is.null(scale)) weights <- scale * weights if (normalize) weights <- normalizeW(weights) weights } ## update parametric weights functions w, dw, d2w scaleNEweights.list <- function (weights, scale = NULL, normalize = FALSE) { if (is.null(scale) && !normalize) return(weights) if (normalize) { dprod <- function (u, v, du, dv) du * v + u * dv dfrac <- function (u, v, du, dv) (du * v - u * dv) / v^2 w <- function (...) scaleNEweights.default(weights$w(...), scale, TRUE) dw <- function (...) { W <- scaleNEweights.default(weights$w(...), scale) dW <- clapply(X = weights$dw(...), # matrix or list thereof FUN = scaleNEweights.default, scale = scale) # always returns a list dimW <- dim(W) normW <- .rowSums(W, dimW[1L], dimW[2L]) normdW <- lapply(X = dW, FUN = .rowSums, m = dimW[1L], n = dimW[2L]) mapply(FUN = dfrac, du = dW, dv = normdW, MoreArgs = list(u = W, v = normW), SIMPLIFY = FALSE, USE.NAMES = FALSE) } ## for d2w() we need all the stuff from dw() -> substitute d2w <- as.function(c(alist(...=), substitute({ dWnorm <- DWBODY d2W <- clapply(X = weights$d2w(...), # matrix or list thereof FUN = scaleNEweights.default, scale = scale) # always returns a list normd2W <- lapply(X = d2W, FUN = .rowSums, m = dimW[1L], n = dimW[2L]) ## order of d2w is upper triangle BY ROW dimd <- length(dW) ri <- rep.int(seq_len(dimd), rep.int(dimd, dimd)) # row index ci <- rep.int(seq_len(dimd), dimd) # column index uppertri <- ci >= ri mapply(FUN = function (k, l, d2W, normd2W) { dfrac(dW[[k]], normW, d2W, normdW[[l]]) - dprod(W/normW, normdW[[k]]/normW, dWnorm[[l]], dfrac(normdW[[k]], normW, normd2W, normdW[[l]])) }, k = ri[uppertri], l = ci[uppertri], d2W = d2W, normd2W = normd2W, SIMPLIFY = FALSE, USE.NAMES = FALSE) }, list(DWBODY = body(dw))))) } else { w <- function (...) scaleNEweights.default(weights$w(...), scale) dw <- function (...) clapply(X = weights$dw(...), FUN = scaleNEweights.default, scale = scale) d2w <- function (...) clapply(X = weights$d2w(...), FUN = scaleNEweights.default, scale = scale) } ## return list with updated functions list(w = w, dw = dw, d2w = d2w, initial = weights$initial) } ################################## ### check ne$weights specification ################################## ### checks for a fixed matrix/array checkWeightsArray <- function (W, nUnits, nTime, name = deparse(substitute(W)), check0diag = FALSE, islands = FALSE) { if (!is.array(W) || !(length(dim(W)) %in% 2:3)) stop("'", name, "' must return a matrix or 3-dim array") if (any(dim(W)[1:2] != nUnits) || isTRUE(dim(W)[3] != nTime)) stop("'", name, "' must conform to dimensions ", nUnits, " x ", nUnits, " (x ", nTime, ")") if (any(is.na(W))) { if (islands) # normalization of parametric weights yields division by 0 warning("neighbourhood structure contains islands") stop("missing values in '", name, "' are not allowed") } if (check0diag) { diags <- if (is.matrix(W)) diag(W) else apply(W, 3, diag) if (any(diags != 0)) warning("'", name, "' has nonzeros on the diagonal", if (!is.matrix(W)) "s") } } ### check parametric weights specification consisting of a list of: ## - three functions: w, dw, and d2w ## - a vector of initial parameter values checkWeightsFUN <- function (object) { fnames <- paste0(c("","d","d2"), "w") if (any(!sapply(object[fnames], is.function))) stop("parametric weights require functions ", paste0("'", fnames, "'", collapse=", ")) if (any(!sapply(object[fnames], function(FUN) length(formals(FUN)) >= 3L))) stop("parametric weights functions must accept (not necessarily use)", "\n at least 3 arguments (parameter vector, ", "neighbourhood order matrix, data)") if (!is.vector(object$initial, mode="numeric") || length(object$initial) == 0L) stop("parametric weights require initial parameter values") TRUE } ### entry function for checks in hhh4() checkWeights <- function (weights, nUnits, nTime, nbmat, data, # only used for parametric weights check0diag = FALSE) { name <- deparse(substitute(weights)) # "control$ne$weights" ## check specification testweights <- if (is.array(weights)) weights else { if (is.list(weights) && checkWeightsFUN(weights) && checkNeighbourhood(nbmat)) { if (all(nbmat %in% 0:1)) warning("'", deparse(substitute(nbmat)), "' is binary (should contain", " general neighbourhood orders)") weights$w(weights$initial, nbmat, data) } else { stop("'", name, "' must be a matrix/array or a list of functions") } } ## apply matrix/array checks if (is.list(weights)) { # parametric weights if (length(dim(testweights)) > 2L) warning("time-varying parametric weights are not fully supported") checkWeightsArray(testweights, nUnits, nTime, name = paste0(name, "$w"), check0diag = check0diag, islands = any(.rowSums(nbmat, nUnits, nUnits) == 0)) dim.d <- length(weights$initial) dw <- weights$dw(weights$initial, nbmat, data) d2w <- weights$d2w(weights$initial, nbmat, data) if (dim.d == 1L && !is.list(dw) && !is.list(d2w)) { checkWeightsArray(dw, nUnits, nTime, name=paste0(name, "$dw")) checkWeightsArray(d2w, nUnits, nTime, name=paste0(name, "$d2w")) } else { if (!is.list(dw) || length(dw) != dim.d) stop("'", name, "$dw' must return a list (of matrices/arrays)", " of length ", dim.d) if (!is.list(d2w) || length(d2w) != dim.d*(dim.d+1)/2) stop("'", name, "$d2w' must return a list (of matrices/arrays)", " of length ", dim.d*(dim.d+1)/2) lapply(dw, checkWeightsArray, nUnits, nTime, name=paste0(name, "$dw[[i]]")) lapply(d2w, checkWeightsArray, nUnits, nTime, name=paste0(name, "$d2w[[i]]")) } } else checkWeightsArray(testweights, nUnits, nTime, name = name, check0diag = check0diag) ## Done invisible(TRUE) } ############################################# ### Utility functions for fitted hhh4-objects ############################################# ### extract the (final) weight matrix/array from a fitted hhh4 object getNEweights <- function (object, pars = coefW(object), scale = ne$scale, normalize = ne$normalize) { ne <- object$control$ne weights <- if (is.list(ne$weights)) { # parametric weights nd <- length(ne$weights$initial) if (length(pars) != nd) stop("'pars' must be of length ", nd) ne$weights$w(pars, neighbourhood(object$stsObj), object$control$data) } else { # NULL or fixed weight structure ne$weights } if (is.null(normalize)) normalize <- FALSE # backward compatibility < 1.9-0 scaleNEweights.default(weights, scale, normalize) } ### extract parameters of neighbourhood weights from hhh4-object or coef vector coefW <- function (object) { coefs <- if (inherits(object, c("hhh4","ah4"))) object$coefficients else object coefW <- coefs[grep("^neweights", names(coefs))] names(coefW) <- sub("^neweights\\.", "", names(coefW)) coefW } surveillance/R/ks.plot.unif.R0000644000175100001440000001343412424244423015650 0ustar hornikusers################# # Plot the empirical distribution function of a sample from U(0,1) # together with a confidence band of the corresponding K-S-test. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ # # Parts of the code are taken from stats::ks.test, which has # copyright 1995-2012 by The R Core Team under GPL-2 (or later). # Furthermore, the C function calls are taken from # http://svn.r-project.org/R/trunk/src/library/stats/src/ks.c (as at 2012-08-16), # which similarly is Copyright (C) 1999-2009 by the R Core Team # and available under GPL-2. Somewhat disguised in their code is a reference # that parts of their code uses code published in # George Marsaglia and Wai Wan Tsang and Jingbo Wang (2003), # "Evaluating Kolmogorov's distribution". # Journal of Statistical Software, Volume 8, 2003, Issue 18. # URL: http://www.jstatsoft.org/v08/i18/. # # # Parameters: # U - numeric vector containing the sample (NA's are silently removed) # conf.level - confindence level for the K-S-test, # can also be a vector of multiple levels # exact - see ks.test # col.conf - colour of the confidence band # col.ref - colour of the reference line ################# ks.plot.unif <- function (U, conf.level = 0.95, exact = NULL, col.conf = "gray", col.ref = "gray", xlab = expression(u[(i)]), ylab = "Cumulative distribution") { stopifnot(is.vector(U, mode="numeric")) U <- U[!is.na(U)] n <- length(U) TIES <- FALSE if (anyDuplicated(U)) { warning("ties should not be present for the Kolmogorov-Smirnov test") TIES <- TRUE } if (is.null(exact)) exact <- (n < 100) && !TIES ## Helper function to invert the K-S test. The function ## pkolmogorov2x is the CDF of the Kolmogorov test statistic ## and is taken from the R project sources, which ## is (C) 1995-2009 by The R Core Team under GPL-2 f <- if (exact) { function (x, p) { # x is the test statistic PVAL <- 1 - .C("pkolmogorov2x", p = as.double(x), as.integer(n), PACKAGE = "surveillance")$p PVAL - p } } else { pkstwo <- function(x, tol = 1e-06) { # x is the test statistic ## stopifnot(length(x) == 1L) #Same copyright as above applies to the C code. if (is.na(x)) NA_real_ else if (x == 0) 0 else { .C("pkstwo", 1L, p = as.double(x), as.double(tol), PACKAGE = "surveillance")$p } } function (x, p) { PVAL <- 1 - pkstwo(sqrt(n) * x) PVAL - p } } ## Test inversion Dconf <- sapply(conf.level, function (level) { uniroot(f, lower=0, upper=1, p=1-level)$root }) ## Small helper function to draw a line myabline <- function (a, b, x.grid = seq(0,1,length.out=101), ...) { lines(x.grid, a + b * x.grid, ...) } ## Figure 10 in Ogata (1988) plot(c(0,1), c(0,1), type="n", xlab=xlab, ylab=ylab) myabline(a=0, b=1, col=col.ref, lwd=2) rug(U) lines(ecdf(U), verticals=TRUE, do.points=FALSE) sapply(Dconf, function (D) { myabline(a=D, b=1, col=col.conf, lty=2) myabline(a=-D, b=1, col=col.conf, lty=2) }) #legend(x="topleft", col=col.conf, lty=2, # legend=paste(100*conf.level,"% KS error bounds", sep="")) invisible() } ###################################################################### # Check the residual process of fitted twinstim or twinSIR # using ks.plot.unif on 1-exp(-diff(tau)) # and a scatterplot of u_i vs. u_{i+1} to inspect serial correlation # # Parameters: # object - a fitted twinSIR or twinstim model # # Draws the ECDF of the transformed residuals together with backtransformed # 95% Kolmogorov-Smirnov error bounds. ###################################################################### checkResidualProcess <- function (object, plot = 1:2, mfrow = c(1,length(plot)), ...) { stopifnot(inherits(object, c("twinSIR", "twinstim", "simEpidataCS"))) ## check plot argument if (is.logical(plot)) plot <- which(rep(plot, length.out = 2)) else { stopifnot(is.vector(plot, mode="numeric"), plot %in% 1:2) } ## extract residual process tau <- do.call("residuals", args = list(substitute(object)), envir = parent.frame()) ## Transform to uniform variable Y <- diff(c(0,tau)) U <- 1 - exp(-Y) ## Calculate KS test ks <- ks.test(U, "punif", alternative = "two.sided", exact = match.call()[["exact"]]) ## return value ret <- list(tau=tau, U=U, ks=ks) ## 2 types of plots plotcalls <- alist( ## Investigate uniform distribution of U ks.plot.unif(U, ...), ## Investigate serial correlation between U_t and U_{t+1} which ## corresponds to Figure 11 in Ogata (1988) plot(tail(U,n=-1), head(U,n=-1), xlab=expression(u[i]), ylab=expression(u[i+1])) ) ## eval selected plot calls if (length(plot) > 0L) { opar <- par(mfrow = mfrow); on.exit(par(opar)) for (i in plot) eval(plotcalls[[i]]) invisible(ret) } else { ret } } surveillance/R/hhh4_methods.R0000644000175100001440000005276612607677315015724 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Standard methods for hhh4-fits ### ### Copyright (C) 2010-2012 Michaela Paul, 2012-2015 Sebastian Meyer ### $Revision: 1490 $ ### $Date: 2015-10-15 12:24:11 +0200 (Don, 15. Okt 2015) $ ################################################################################ ## NOTE: we also apply print.hhh4 in print.summary.hhh4() print.hhh4 <- function (x, digits = max(3, getOption("digits")-3), ...) { if (!x$convergence) { cat('Results are not reliable! Try different starting values.\n') return(invisible(x)) } if (!is.null(x$call)) { cat("\nCall: \n", paste(deparse(x$call), sep = "\n", collapse = "\n"), "\n\n", sep = "") } if (x$dim["random"] > 0) { cat('Random effects:\n') .printREmat(if (is.null(x$REmat)) .getREmat(x) else x$REmat, digits = digits) cat("\nFixed effects:\n") } else if (x$dim["fixed"] > 0) { cat("Coefficients:\n") } if (x$dim["fixed"] > 0) { print.default( format(if (is.null(x$fixef)) fixef.hhh4(x, ...) else x$fixef, digits=digits), quote = FALSE, print.gap = 2) } else cat("No coefficients\n") cat("\n") invisible(x) } ## get estimated covariance matrix of random effects .getREmat <- function (object) { ## return NULL if model has no random effects if (is.null(REmat <- object$Sigma)) return(NULL) ## hhh4()$Sigma is named since r791 only -> derive names from Sigma.orig if (is.null(dimnames(REmat))) dimnames(REmat) <- rep.int( list(sub("^sd\\.", "", names(object$Sigma.orig)[seq_len(nrow(REmat))])), 2L) attr(REmat, "correlation") <- cov2cor(REmat) attr(REmat, "sd") <- sqrt(diag(REmat)) REmat } .printREmat <- function (REmat, digits = 4) { V <- round(diag(REmat), digits=digits) corr <- round(attr(REmat, "correlation"), digits=digits) corr[upper.tri(corr,diag=TRUE)] <- "" V.corr <- cbind(V, corr, deparse.level=0) colnames(V.corr) <- c("Var", "Corr", rep.int("", ncol(corr)-1L)) print.default(V.corr, quote=FALSE) } summary.hhh4 <- function (object, maxEV = FALSE, ...) { ## do not summarize results in case of non-convergence if (!object$convergence) { cat('Results are not reliable! Try different starting values.\n') return(invisible(object)) } ret <- c(object[c("call", "convergence", "dim", "loglikelihood", "margll", "lags", "nTime", "nUnit")], list(fixef = fixef.hhh4(object, se=TRUE, ...), ranef = ranef.hhh4(object, ...), REmat = .getREmat(object), AIC = AIC(object), BIC = BIC(object), maxEV_range = if (maxEV) unique(range(getMaxEV(object))))) class(ret) <- "summary.hhh4" return(ret) } print.summary.hhh4 <- function (x, digits = max(3, getOption("digits")-3), ...) { ## x$convergence is always TRUE if we have a summary print.hhh4(x) # also works for summary.hhh4-objects if (!is.null(x$maxEV_range)) cat("Epidemic dominant eigenvalue: ", paste(sprintf("%.2f", x$maxEV_range), collapse = " -- "), "\n\n") if(x$dim["random"]==0){ cat('Log-likelihood: ',round(x$loglikelihood,digits=digits-2),'\n') cat('AIC: ',round(x$AIC,digits=digits-2),'\n') cat('BIC: ',round(x$BIC,digits=digits-2),'\n\n') } else { cat('Penalized log-likelihood: ',round(x$loglikelihood,digits=digits-2),'\n') cat('Marginal log-likelihood: ',round(x$margll,digits=digits-2),'\n\n') } cat('Number of units: ', x$nUnit, '\n') cat('Number of time points: ', x$nTime, '\n') if (!is.null(x$lags)) { # only available since surveillance 1.8-0 if (!is.na(x$lags["ar"]) && x$lags["ar"] != 1) cat("Non-default autoregressive lag: ", x$lags[["ar"]], "\n") if (!is.na(x$lags["ne"]) && x$lags["ne"] != 1) cat("Non-default neighbor-driven lag: ", x$lags[["ne"]], "\n") } cat("\n") invisible(x) } terms.hhh4 <- function (x, ...) { if (is.null(x$terms)) interpretControl(x$control,x$stsObj) else x$terms } nobs.hhh4 <- function (object, ...) { if (object$convergence) object$nObs else NA_real_ } logLik.hhh4 <- function(object, ...) { val <- if (object$convergence) object$loglikelihood else { warning("algorithm did not converge") NA_real_ } attr(val, "df") <- if (object$dim["random"]) NA_integer_ else object$dim[["fixed"]] # use "[[" to drop the name attr(val, "nobs") <- nobs.hhh4(object) class(val) <- "logLik" val } coef.hhh4 <- function(object, se=FALSE, reparamPsi=TRUE, idx2Exp=NULL, amplitudeShift=FALSE, ...) { if (identical(object$control$family, "Poisson")) reparamPsi <- FALSE coefs <- object$coefficients coefnames <- names(coefs) idx <- getCoefIdxRenamed(coefnames, reparamPsi, idx2Exp, amplitudeShift, warn=!se) ## transform and rename if (length(idx$Psi)) { coefs[idx$Psi] <- exp(-coefs[idx$Psi]) # -log(overdisp) -> overdisp coefnames[idx$Psi] <- names(idx$Psi) } if (length(idx$toExp)) { coefs[idx$toExp] <- exp(coefs[idx$toExp]) coefnames[idx$toExp] <- names(idx$toExp) } if (length(idx$AS)) { coefs[idx$AS] <- sinCos2amplitudeShift(coefs[idx$AS]) coefnames[idx$AS] <- names(idx$AS) } ## set new names names(coefs) <- coefnames if (se) { cov <- vcov.hhh4(object, reparamPsi=reparamPsi, idx2Exp=idx2Exp, amplitudeShift=amplitudeShift) cbind("Estimate"=coefs, "Std. Error"=sqrt(diag(cov))) } else coefs } vcov.hhh4 <- function (object, reparamPsi=TRUE, idx2Exp=NULL, amplitudeShift=FALSE, ...) { if (identical(object$control$family, "Poisson")) reparamPsi <- FALSE idx <- getCoefIdxRenamed(names(object$coefficients), reparamPsi, idx2Exp, amplitudeShift, warn=FALSE) newcoefs <- coef.hhh4(object, se=FALSE, reparamPsi=reparamPsi, idx2Exp=idx2Exp, amplitudeShift=amplitudeShift) ## Use multivariate Delta rule => D %*% vcov %*% t(D), D: Jacobian. ## For idx2Exp and reparamPsi, we only transform coefficients independently, ## i.e. D is diagonal (with elements 'd') d <- rep.int(1, length(newcoefs)) if (length(idx$Psi)) # h = exp(-psi), h' = -exp(-psi) d[idx$Psi] <- -newcoefs[idx$Psi] if (length(idx$toExp)) # h = exp(coef), h' = exp(coef) d[idx$toExp] <- newcoefs[idx$toExp] ## For the amplitude/shift-transformation, D is non-diagonal vcov <- if (length(idx$AS)) { D <- diag(d, length(d)) D[idx$AS,idx$AS] <- jacobianAmplitudeShift(newcoefs[idx$AS]) D %*% object$cov %*% t(D) } else t(t(object$cov*d)*d) # 30 times faster than via matrix products dimnames(vcov) <- list(names(newcoefs), names(newcoefs)) vcov } getCoefIdxRenamed <- function (coefnames, reparamPsi=TRUE, idx2Exp=NULL, amplitudeShift=FALSE, warn=TRUE) { ## indexes of overdispersion parameters idxPsi <- if (reparamPsi) { idxPsi <- grep("-log(overdisp", coefnames, fixed=TRUE) ## change labels from "-log(overdisp.xxx)" to "overdisp.xxx" names(idxPsi) <- substr(coefnames[idxPsi], start=6, stop=nchar(coefnames[idxPsi])-1L) if (length(idxPsi) == 0L) { # backward compatibility (internal psi coef # was named "overdisp" prior to r406) idxPsi <- grep("^overdisp", coefnames) names(idxPsi) <- coefnames[idxPsi] } idxPsi } else NULL ## indexes of sine-cosine coefficients idxAS <- if (amplitudeShift) { idxAS <- sort(c(grep(".sin(", coefnames, fixed=TRUE), grep(".cos(", coefnames, fixed=TRUE))) names(idxAS) <- sub(".sin", ".A", coefnames[idxAS], fixed=TRUE) names(idxAS) <- sub(".cos", ".s", names(idxAS), fixed=TRUE) idxAS } else NULL ## indexes of coefficients to exp()-transform if (isTRUE(idx2Exp)) { idxLogCovar <- grep(".log(", coefnames, fixed = TRUE) idx2Exp <- setdiff(seq_along(coefnames), c(idxLogCovar, idxPsi, idxAS)) } else if (length(idx2Exp)) { stopifnot(is.vector(idx2Exp, mode = "numeric")) ## index sets must be disjoint if (length(idxOverlap <- intersect(c(idxPsi, idxAS), idx2Exp))) { if (warn) warning("following 'idx2Exp' were ignored due to overlap: ", paste(idxOverlap, collapse=", ")) idx2Exp <- setdiff(idx2Exp, idxOverlap) } } if (length(idx2Exp)) names(idx2Exp) <- paste0("exp(", coefnames[idx2Exp], ")") ## done list(Psi=idxPsi, AS=idxAS, toExp=idx2Exp) } fixef.hhh4 <- function (object,...) { if (object$dim[1L] > 0) { head(coef.hhh4(object, ...), object$dim[1L]) } else NULL } ranef.hhh4 <- function (object, tomatrix = FALSE, ...) { if (object$dim[2L] > 0){ ranefvec <- tail(coef.hhh4(object, ...), object$dim[2L]) } else return(NULL) if (!tomatrix) return(ranefvec) ## transform to a nUnits x c matrix (c %in% 1:3) model <- terms.hhh4(object) idxRE <- model$indexRE idxs <- unique(idxRE) names(idxs) <- model$namesFE[idxs] mat <- sapply(idxs, function (idx) { RE <- ranefvec[idxRE==idx] Z <- model$terms["Z.intercept",][[idx]] "%m%" <- get(model$terms["mult",][[idx]]) Z %m% RE }) rownames(mat) <- colnames(model$response) return(mat) } ## adaption of stats::confint.default authored by the R Core Team confint.hhh4 <- function (object, parm, level = 0.95, reparamPsi=TRUE, idx2Exp=NULL, amplitudeShift=FALSE, ...) { cf <- coef.hhh4(object, se=TRUE, reparamPsi=reparamPsi, idx2Exp=idx2Exp, amplitudeShift=amplitudeShift, ...) ## CAVE: random intercepts have no names (all "") if (missing(parm)) parm <- seq_len(nrow(cf)) pnames <- if (is.numeric(parm)) rownames(cf)[parm] else parm a <- (1 - level)/2 a <- c(a, 1 - a) pct <- paste(format(100*a, trim=TRUE, scientific=FALSE, digits=3), "%") fac <- qnorm(a) ci <- array(NA, dim = c(length(parm), 2L), dimnames = list(pnames, pct)) ses <- cf[parm,2] ci[] <- cf[parm,1] + ses %o% fac ci } ## mean predictions for a subset of 1:nrow(object$stsObj) predict.hhh4 <- function(object, newSubset = object$control$subset, type = "response", ...) { if (type == "response" && all((m <- match(newSubset, object$control$subset, nomatch=0L)) > 0)) { ## we can extract fitted means from object object$fitted.values[m,,drop=FALSE] } else { ## means for time points not fitted (not part of object$control$subset) predicted <- meanHHH(coef.hhh4(object, reparamPsi=FALSE), terms.hhh4(object), subset=newSubset) if (type=="response") predicted$mean else { type <- match.arg(type, names(predicted)) predicted[[type]] } } } ### refit hhh4-model ## ...: arguments modifying the original control list ## S: a named list to adjust the number of harmonics of the three components ## subset.upper: refit on a subset of the data up to that time point ## use.estimates: use fitted parameters as new start values update.hhh4 <- function (object, ..., S = NULL, subset.upper = NULL, use.estimates = TRUE, evaluate = TRUE) { control <- object$control ## first modify the control list according to the components in ... extras <- list(...) control <- modifyList(control, extras) ## adjust start values control$start <- if (use.estimates) { # use parameter estimates hhh4coef2start(object) } else local({ # re-use previous 'start' specification ## for pre-1.8-2 "hhh4" objects, ## object$control$start is not necessarily a complete list: template <- eval(formals(hhh4)$control$start) template[] <- object$control$start[names(template)] template }) ## and update according to an extra 'start' argument if (!is.null(extras[["start"]])) { if (!is.list(extras$start) || is.null(names(extras$start))) { stop("'start' must be a named list, see 'help(\"hhh4\")'") } control$start[] <- mapply( FUN = function (now, extra) { if (is.null(names(extra))) { extra } else { # can retain non-extra values now[names(extra)] <- extra now } }, control$start, extras$start[names(control$start)], SIMPLIFY = FALSE, USE.NAMES = FALSE ) } ## update initial values of parametric weight function if (use.estimates && length(coefW <- coefW(object)) && ! "weights" %in% names(extras$ne)) { # only if function is unchanged control$ne$weights$initial <- coefW } ## adjust seasonality if (!is.null(S)) { stopifnot(is.list(S), !is.null(names(S)), names(S) %in% c("ar", "ne", "end")) control[names(S)] <- mapply(function (comp, S) { comp$f <- addSeason2formula(removeSeasonFromFormula(comp$f), period = object$stsObj@freq, S = S) comp }, control[names(S)], S, SIMPLIFY=FALSE, USE.NAMES=FALSE) } ## restrict fit to those epochs of control$subset which are <=subset.upper if (isScalar(subset.upper)) control$subset <- control$subset[control$subset <= subset.upper] ## fit the updated model or just return the modified control list if (evaluate) { hhh4(stsObj = object$stsObj, control = control) } else { control } } ## remove sine-cosine terms from a formula ## f: usually a model "formula", but can generally be of any class for which ## terms() and formula() apply removeSeasonFromFormula <- function (f) { fterms <- terms(f, keep.order = TRUE) ## search sine-cosine terms of the forms "sin(..." and "fe(sin(..." idxSinCos <- grep("^(fe\\()?(sin|cos)\\(", attr(fterms, "term.labels")) formula(if (length(idxSinCos)) fterms[-idxSinCos] else f) } ## remove all temporal terms from a formula removeTimeFromFormula <- function (f, timevar = "t") { fterms <- terms(f, keep.order = TRUE) containsTime <- vapply(attr(fterms, "variables")[-1L], FUN = function (x) timevar %in% all.vars(x), FUN.VALUE = TRUE, USE.NAMES = FALSE) formula(if (any(containsTime)) fterms[!containsTime] else f) } ## convert fitted parameters to a list suitable for control$start hhh4coef2start <- function (fit) { res <- list(fixed = fit$coefficients[seq_len(fit$dim[1L])], random = fit$coefficients[fit$dim[1L]+seq_len(fit$dim[2L])], sd.corr = fit$Sigma.orig) if (any(!nzchar(names(res$random)))) { # no names pre 1.8-2 names(res$random) <- NULL } res } ## extract coefficients in a list coeflist.hhh4 <- function (x, ...) { ## determine number of parameters by parameter group model <- terms.hhh4(x) dim.fe.group <- unlist(model$terms["dim.fe",], recursive = FALSE, use.names = FALSE) dim.re.group <- unlist(model$terms["dim.re",], recursive = FALSE, use.names = FALSE) nFERE <- lapply(X = list(fe = dim.fe.group, re = dim.re.group), FUN = function (dims) { nParByComp <- tapply( X = dims, INDEX = factor( unlist(model$terms["offsetComp",], recursive = FALSE, use.names = FALSE), levels = 1:3, labels = c("ar", "ne", "end")), FUN = sum, simplify = TRUE) nParByComp[is.na(nParByComp)] <- 0 # component not in model nParByComp }) ## extract coefficients in a list (by parameter group) coefs <- coef.hhh4(x, se = FALSE, ...) list(fixed = coeflist.default(coefs[seq_len(x$dim[1L])], c(nFERE$fe, "neweights" = model$nd, "overdisp" = model$nOverdisp)), random = coeflist.default(coefs[x$dim[1L] + seq_len(x$dim[2L])], nFERE$re), sd.corr = x$Sigma.orig) } ## extract estimated overdispersion in dnbinom() parametrization (and as matrix) psi2size.hhh4 <- function (object, subset = object$control$subset, units = NULL) { size <- sizeHHH(object$coefficients, terms.hhh4(object), subset = subset) if (!is.null(size) && !is.null(units)) { if (is.null(subset)) { warning("ignoring 'units' (not compatible with 'subset = NULL')") size } else { size[, units, drop = FALSE] } } else { size } } ## character vector of model components that are "inModel" componentsHHH4 <- function (object) names(which(sapply(object$control[c("ar", "ne", "end")], "[[", "inModel"))) ## deviance residuals residuals.hhh4 <- function (object, type = c("deviance", "response"), ...) { type <- match.arg(type) obs <- observed(object$stsObj)[object$control$subset,] fit <- fitted(object) if (type == "response") return(obs - fit) ## deviance residuals ## Cf. residuals.ah, it calculates: ## deviance = sign(y - mean) * sqrt(2 * (distr(y) - distr(mean))) ## pearson = (y - mean)/sqrt(variance) dev.resids <- if (identical(object$control$family, "Poisson")) { poisson()$dev.resids } else { size <- if (identical(object$control$family, "NegBin1")) { psi2size.hhh4(object, subset = NULL) } else { psi2size.hhh4(object) # CAVE: a matrix -> non-standard "size" } negative.binomial(size)$dev.resids } di2 <- dev.resids(y=obs, mu=fit, wt=1) sign(obs-fit) * sqrt(pmax.int(di2, 0)) } ## extract the formulae of the three log-linear predictors formula.hhh4 <- function (x, ...) { lapply(x$control[c("ar", "ne", "end")], "[[", "f") } ## decompose the fitted mean of a "hhh4" model returning an array ## with dimensions (t, i, j), where the first j index is "endemic" decompose.hhh4 <- function (x, coefs = x$coefficients, ...) { ## get three major components from meanHHH() function meancomps <- meanHHH(coefs, terms.hhh4(x)) ## this contains c("endemic", "epi.own", "epi.neighbours") ## but we really want the mean by neighbour neArray <- c(meancomps$ne.exppred) * neOffsetArray(x, coefW(coefs)) ##<- ne.exppred is (t, i) and recycled for (t, i, j) stopifnot(all.equal(rowSums(neArray, dims = 2), meancomps$epi.neighbours, check.attributes = FALSE)) ## add autoregressive part to neArray diagidx <- cbind(c(row(meancomps$epi.own)), c(col(meancomps$epi.own)), c(col(meancomps$epi.own))) ## usually: neArray[diagidx] == 0 neArray[diagidx] <- neArray[diagidx] + meancomps$epi.own ## add endemic component to the array res <- array(c(meancomps$endemic, neArray), dim = dim(neArray) + c(0, 0, 1), dimnames = with(dimnames(neArray), list(t=t, i=i, j=c("endemic",j)))) stopifnot(all.equal(rowSums(res, dims = 2), meancomps$mean, check.attributes = FALSE)) res } ## get the w_{ji} Y_{j,t-1} values from a hhh4() fit ## (i.e., before summing the neighbourhood component over j) ## in an array with dimensions (t, i, j) neOffsetArray <- function (object, pars = coefW(object), subset = object$control$subset) { ## initialize array ordered as (j, t, i) for apply() below res <- array(data = 0, dim = c(object$nUnit, length(subset), object$nUnit), dimnames = list( "j" = colnames(object$stsObj), "t" = rownames(object$stsObj)[subset], "i" = colnames(object$stsObj))) ## calculate array values if the fit has an NE component if ("ne" %in% componentsHHH4(object)) { W <- getNEweights(object, pars = pars) Y <- observed(object$stsObj) tm1 <- subset - object$control$ne$lag is.na(tm1) <- tm1 <= 0 tYtm1 <- t(Y[tm1,,drop=FALSE]) res[] <- apply(W, 2L, function (wi) tYtm1 * wi) offset <- object$control$ne$offset res <- if (length(offset) > 1L) { offset <- offset[subset,,drop=FALSE] res * rep(offset, each = object$nUnit) } else { res * offset } ## stopifnot(all.equal( ## colSums(res), # sum over j ## terms.hhh4(object)$offset$ne(pars)[subset,,drop=FALSE], ## check.attributes = FALSE)) } ## permute dimensions as (t, i, j) aperm(res, perm = c(2L, 3L, 1L), resize = TRUE) } ## compare two hhh4 fits ignoring at least the "runtime" and "call" elements all.equal.hhh4 <- function (target, current, ..., ignore = NULL) { ignore <- unique.default(c(ignore, "runtime", "call")) for (comp in ignore) target[[comp]] <- current[[comp]] <- NULL NextMethod("all.equal") } surveillance/R/zzz.R0000644000175100001440000001027012536543550014155 0ustar hornikusers####################################### ### Hook functions for package start-up ####################################### gpclibCheck <- function (fatal = TRUE) { gpclibOK <- surveillance.options("gpclib") if (!gpclibOK && fatal) { message("Note: The gpclib license is accepted by ", sQuote("surveillance.options(gpclib=TRUE)"), ".") stop("acceptance of the gpclib license is required") } gpclibOK } .onLoad <- function (libname, pkgname) { ## initialize options reset.surveillance.options() } .onAttach <- function (libname, pkgname) { ## Startup message VERSION <- packageVersion(pkgname, lib.loc=libname) packageStartupMessage("This is ", pkgname, " ", VERSION, ". ", "For overview type ", sQuote(paste0("help(", pkgname, ")")), ".") ## decide if we should run all examples (some take a few seconds) allExamples <- if (interactive()) { TRUE } else { # R CMD check ## only do all examples if a specific environment variable is set ## (to any value different from "") nzchar(Sys.getenv("_R_SURVEILLANCE_ALL_EXAMPLES_")) ## CAVE: testing for _R_CHECK_TIMINGS_ as in surveillance < 1.9-1 ## won't necessarily skip long examples for daily checks on CRAN (see ## https://stat.ethz.ch/pipermail/r-devel/2012-September/064812.html ## ). For instance, the daily Windows checks run without timings. } surveillance.options(allExamples = allExamples) } ########################### ### Little helper functions ########################### ### checking if x is scalar, i.e. a numeric vector of length 1. isScalar <- function (x) { length(x) == 1L && is.vector(x, mode = "numeric") } ### _c_onditional lapply, which only uses lapply() if X really is a list object ### and otherwise applies FUN to X. The result is always a list (of length 1 in ### the latter case). Used for neOffset in hhh4 models. clapply <- function (X, FUN, ...) { if (is.list(X)) lapply(X, FUN, ...) else list(FUN(X, ...)) } ### pretty p-value formatting formatPval <- function (pv, eps = 1e-4, scientific = FALSE, ...) { format1 <- function (p) format.pval(p, digits = if (p < 10*eps) 1 else 2, eps = eps, nsmall = 2, scientific = scientific, ...) vapply(X = pv, FUN = format1, FUN.VALUE = "", USE.NAMES = TRUE) } ### determines multiplicities in a matrix (or data frame) ### and returns unique rows with appended column of counts countunique <- function (x) unique(cbind(x, COUNT = multiplicity(x))) ### generate a color vector (via the colorspace package) hcl.colors <- function (ncolors=100, use.color=TRUE) { GYR <- if (requireNamespace("colorspace", quietly=TRUE)) { ## the Zeil-ice colors colorspace::heat_hcl(ncolors, h=c(0,120), c=if (use.color) c(90,30) else c(0,0), l=c(50,90), power=c(0.75, 1.2)) } else { if (use.color) heat.colors(ncolors) else grey.colors(ncolors) } return(rev(GYR)) } ############################################################### ### backwards-compatibility for old class name "ah4" (<= 1.7-0) ############################################################### local({ methods17 <- c("print", "summary", "print.summary", "terms", "logLik", "coef", "fixef", "ranef", "confint", "predict", "update", "plot", "simulate") for (generic in methods17) { methodname <- paste(generic, "hhh4", sep=".") method <- get(methodname) ## mark ah4-method as deprecated (as of next major release) ## body(method) <- as.call(append( ## as.list(body(method)), ## substitute( ## .Deprecated(new, ## msg=c( ## "Since surveillance 1.8-0, hhh4()-results are of", ## " class \"hhh4\" instead of \"ah4\".", ## "\nOld \"ah4\"-methods will be removed.")), ## list(new=methodname)), ## after=1L)) assign(paste(generic, "ah4", sep="."), method, pos=parent.frame(2L)) } }) surveillance/R/epidata_plot.R0000644000175100001440000001567112420561350015765 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### The plot-method for "epidata" (via plot.summary.epidata) shows the evolution ### of the numbers of susceptible, infectious and recovered individuals. ### The extra function "stateplot" shows the event history of one individual. ### ### Copyright (C) 2008-2009, 2013-2014 Sebastian Meyer ### $Revision: 1080 $ ### $Date: 2014-10-19 00:00:08 +0200 (Son, 19. Okt 2014) $ ################################################################################ plot.epidata <- function(x, ...) { sx <- summary(x) plot.summary.epidata(sx, ...) } plot.summary.epidata <- function (x, lty = c(2,1,3), lwd = 2, col = c("#1B9E77", "#D95F02", "#7570B3"), col.hor = col, col.vert = col, xlab = "Time", ylab = "Number of individuals", xlim = NULL, ylim = NULL, legend.opts = list(), do.axis4 = NULL, panel.first = grid(), rug.opts = list(), which.rug = c("infections", "removals", "susceptibility", "all"), ...) { counters <- x[["counters"]] type <- x[["type"]] n <- counters[1L,"nSusceptible"] m <- counters[1L,"nInfectious"] N <- n + m times <- counters[-1L,"time"] if (missing(lty)) { lty <- c(2, 1, 3 * (type %in% c("SIR","SIRS"))) } recycle3 <- function (xnam) assign(xnam, rep(get(xnam), length.out = 3), inherits = TRUE) for(varname in c("lty", "lwd", "col", "col.hor", "col.vert")) recycle3(varname) if (is.null(xlim)) { xlim <- attr(x, "timeRange") if (xlim[2] == Inf) xlim[2] <- times[length(times)] } if (is.null(ylim)) ylim <- c(0, max( (lty[1] > 0) * {if (type %in% c("SIRS", "SIS")) N else n}, (lty[2] > 0) * max(counters$nInfectious), (lty[3] > 0) * max(counters$nRemoved) )) # basic plotting frame plot(xlim, ylim, type = "n", xlab = xlab, ylab = ylab, panel.first = panel.first, ...) abline(h = c(0, N), col = "grey") # for real xlim in lines.stepfun (see 'dr' adjustment in plot.stepfun code) fakexlim <- c(1,2) * (xlim[2] + 2*xlim[1])/3 - c(0,xlim[1]) # this isn't nice, a user argument 'dr' in plot.stepfun would be appreciated # add #Susceptibles if (all(counters$nSusceptible == n)) { lines(x = xlim, y = c(n,n), lty = lty[1], lwd = lwd[1], col = col.hor[1], ...) } else { lines(stepfun(times, counters$nSusceptible), xlim = fakexlim, lty = lty[1], lwd = lwd[1], col.hor = col.hor[1], col.vert = col.vert[1], do.points = FALSE, ...) } # add #Infected if (all(counters$nInfectious == m)) { lines(x = xlim, y = c(m,m), lty = lty[2], lwd = lwd[2], col = col.hor[2], ...) } else { lines(stepfun(times, counters$nInfectious), xlim = fakexlim, lty = lty[2], lwd = lwd[2], col.hor = col.hor[2], col.vert = col.vert[2], do.points = FALSE, ...) } # add #Removed if (all(counters$nRemoved == 0)) { lines(x = xlim, y = c(0,0), lty = lty[3], lwd = lwd[3], col = col.hor[3], ...) } else { lines(stepfun(times, counters$nRemoved), xlim = fakexlim, lty = lty[3], lwd = lwd[3], col.hor = col.hor[3], col.vert = col.vert[3], do.points = FALSE, ...) } # add special annotations if (is.null(do.axis4)) do.axis4 <- type == "SIR" if (do.axis4) { finalvalues <- counters[nrow(counters), c("nSusceptible", "nRemoved")] axis(4, at = finalvalues[lty[c(1,3)] > 0], font = 2, ...) } if (is.list(rug.opts)) { if (is.null(rug.opts$ticksize)) rug.opts$ticksize <- 0.02 if (is.null(rug.opts$quiet)) rug.opts$quiet <- TRUE which.rug <- match.arg(which.rug) if (is.null(rug.opts$col)) rug.opts$col <- switch(which.rug, all = 1, infections = col.hor[2], removals = col.hor[3], susceptibility = col.hor[1]) rugLocations <- switch(which.rug, all = times, infections = attr(x, "eventTimes"), removals = counters$time[counters$type == "R"], susceptibility = counters$time[counters$type == "S"] ) if (length(rugLocations) > 0) { do.call(rug, c(list(x = rugLocations), rug.opts)) } } if (is.list(legend.opts)) { legend.opts <- modifyList( list(x = "topright", bty = "n", inset = c(0,0.02), legend = c("susceptible", "infectious", "removed")[lty>0], lty = lty[lty>0], lwd = lwd[lty>0], col = col.hor[lty>0]), legend.opts) do.call(legend, legend.opts) } invisible(as.matrix( counters[c("time", "nSusceptible", "nInfectious", "nRemoved")] )) } ################################################################################ # PLOT THE STATE CHANGES OF ONE INDIVIDUAL OF "epidata" # ... will be passed to the plot function (stepfun or curve), # e.g. add, xlim, ylim, main, xlab, ylab, ... ################################################################################ stateplot <- function(x, id, ...) { sx <- getSummary(x, class = "epidata") .id <- as.character(id) if (length(.id) != 1) { stop ("'id' must have length 1") } initiallyInfected <- sx[["initiallyInfected"]] if (! .id %in% levels(initiallyInfected)) { stop ("invalid 'id', does not exist in 'x'") } isInitiallyInfected <- .id %in% initiallyInfected counters <- sx[["counters"]] states <- levels(counters[["type"]]) path <- counters[which(counters$id == .id), c("time", "type")] # remove pseudo-R-events, which come before S-event directSevents <- which(duplicated(path[["time"]])) path_noPseudoR <- if (length(directSevents)) { path[-(directSevents-1), ] } else { path } pathfunc <- if (nrow(path_noPseudoR) > 0) { stepfun( x = path_noPseudoR[["time"]], y = c(1+isInitiallyInfected, unclass(path_noPseudoR[["type"]])), right = FALSE ) } else { function(t) rep(1+isInitiallyInfected, length(t)) } # plot it dotargs <- list(...) nms <- names(dotargs) if(! "xlab" %in% nms) dotargs$xlab <- "time" if(! "ylab" %in% nms) dotargs$ylab <- "state" if(! "main" %in% nms) dotargs$main <- "" if(! "xlim" %in% nms) dotargs$xlim <- attr(sx, "timeRange") if(! "xaxs" %in% nms) dotargs$xaxs <- "i" if(! "do.points" %in% nms && inherits(pathfunc, "stepfun")) { dotargs$do.points <- FALSE } do.call("plot", args = c(list(x = pathfunc, yaxt = "n"), dotargs)) axis(2, at = seq_along(states), labels = states) invisible(pathfunc) } surveillance/R/stsplot_spacetime.R0000644000175100001440000001407112320020271017042 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Old implementation of (animated) maps of an sts-object ### ### Copyright (C) 2007-2013 Michael Hoehle ### $Revision: 883 $ ### $Date: 2014-04-05 17:26:48 +0200 (Sam, 05 Apr 2014) $ ################################################################################ stsplot_spacetime <- function( x, type, legend=NULL, opts.col=NULL, labels=TRUE, wait.ms=250, cex.lab=0.7, verbose=FALSE, dev.printer=NULL, ...) { #Extract the mappoly if (length(x@map) == 0) stop("The sts object has an empty map.") map <- x@map maplim <- list(x=bbox(map)[1,],y=bbox(map)[2,]) #Check colnames, otherwise no need to continue if (is.null(colnames(x@observed))) stop("The sts observed slot does not have any colnames to match with the shapefile.") #Check for color options if (is.null(opts.col)) { opts.col <- list(ncolors=100,use.color=TRUE) } #Check for legend options if (is.null(legend)) { legend <- list(dx=0.4,dy=0.04,x=maplim$x[1],y=maplim$y[1],once=TRUE) } #Process dev.printer options if (!is.null(dev.printer)) { #Device if (is.null(dev.printer$device)) dev.printer$device <- png #File extension if (is.null(dev.printer$extension)) dev.printer$extension <- ".png" #Width and height if (is.null(dev.printer$width)) dev.printer$width <- 640 if (is.null(dev.printer$height)) dev.printer$height <- 480 } #Extract the data o <- x@observed alarm <- x@alarm #Formula is of type "observed ~ 1|unit" (i.e. no time) aggregate <- type[[3]][[3]] == "unit" if (aggregate) { o <- t(as.matrix(apply(o,MARGIN=2,sum))) alarm <- t(as.matrix(apply(alarm,MARGIN=2,sum)))>0 } #Number of time points maxt <- dim(o)[1] #Get color vector gyr <- hcl.colors(ncolors=length(o), use.color=TRUE) theCut <- cut(o, length(gyr)) #Cut into specified number of colors o.cut <- matrix(as.numeric(theCut),nrow=nrow(o),ncol=ncol(o)) o.col <- matrix(gyr[o.cut],ncol=ncol(o.cut)) o.col[is.na(o.col)] <- gray(1) dimnames(o.col) <- dimnames(o) #Sort the o according to the names in the map region.id <- row.names(map) o.col.id <- dimnames(o.col)[[2]] #Make the columns of o as in the map object o.col <- o.col[,pmatch(region.id,o.col.id),drop=FALSE] alarm.col <- alarm[,pmatch(region.id,o.col.id),drop=FALSE] #Screen processing screen.matrix <- matrix(c(0,1,0,1,0,1,0.8,1),2,4,byrow=TRUE) split.screen(screen.matrix) #Loop over all time slices for (t in 1:maxt) { #Status information if (verbose) { cat(paste("Processing slice",t,"of",maxt,"\n")) } #Clean screen (title area) screen(n=2) par(bg=gray(1)) erase.screen() par(bg="transparent") #Plot the map on screen 1 screen(n=1) plot(map,col=o.col[t,],xlab="",ylab="",...) #Indicate alarms as shaded overlays if (!all(is.na(alarm.col))) { #Plotting using density "NA" does not appear to work #anymore in the new sp versions alarm.col[is.na(alarm.col)] <- 0 plot(map,dens=alarm.col*15,add=TRUE) } if (labels) #getSpPPolygonsLabptSlots is deprecated. Use coordinates method insteas text(coordinates(map), labels=as.character(region.id), cex.lab=cex.lab) if (!aggregate) { title(paste(t,"/",maxt,sep="")) } #In case a legend is requested if (is.list(legend) && !(legend$once & t>1) | (t==1)) { add.legend(legend, maplim, list(col=gyr, min=min(o), max=max(o), trans=identity)) } #Is writing to files requested? if (!is.null(dev.printer)) { #Create filename fileName <- paste(dev.printer$name,"-",insert.zeroes(t,length=ceiling(log10(maxt))), dev.printer$extension,sep="") cat("Creating ",fileName,"\n") #Save the current device using dev.print dev.print(dev.printer$device, file=fileName, width=dev.printer$width, height=dev.printer$height) } wait(wait.ms) } close.screen(all.screens = TRUE) } ####################### ### auxiliary functions ####################### ### wait a specific amount of milliseconds (via "while" and "proc.time") wait <- function (wait.ms) # number of milliseconds to wait { #Initialize start.time <- proc.time()[3]*1000 ellapsed <- proc.time()[3]*1000 - start.time #Loop as long as required. while (ellapsed < wait.ms) { ellapsed <- proc.time()[3]*1000 - start.time } } ### add the color key add.legend <- function(legend, maplim, theColors) { #Preproc dy <- diff(maplim$y) * legend$dy dx <- diff(maplim$x) * legend$dx #Add legend -- i.e. a slider xlu <- xlo <- legend$x xru <- xro <- xlu + dx yru <- ylu <- legend$y yro <- ylo <- yru + dy step <- (xru - xlu)/length(theColors$col) for (i in 0:(length(theColors$col) - 1)) { polygon(c(xlo + step * i, xlo + step * (i + 1), xlu + step * (i + 1), xlu + step * i), c(ylo, yro, yru, ylu), col = theColors$col[i + 1], border = theColors$col[i + 1]) } #Write info about min and max on the slider. black <- grey(0) lines(c(xlo, xro, xru, xlu, xlo), c(ylo, yro, yru, ylu, ylo), col = black) #Transformation function for data values, e.g., exp or identity trans <- theColors$trans text(xlu, ylu - 0.5*dy, formatC(trans(theColors$min)), cex = 1, col = black,adj=c(0,1)) text(xru, yru - 0.5*dy, formatC(trans(theColors$max)), cex = 1, col = black,adj=c(1,1)) } ### Insert leading zeros so integers obtain a fixed length. ### Useful for filenames so they are all of same length (for sorting). insert.zeroes <- function (x, length=3) # x is an integer { for (i in 1:(length-1)) { if (x<10^i) return(paste(paste(rep(0,length-i),collapse=""),x,sep="")) } #If x has more digits than length then just return x return(paste(x)) } surveillance/R/testcalls.R0000644000175100001440000000413011731650466015315 0ustar hornikusers################################################### ### chunk number 1: ################################################### test <- function(data = c("k1", "m5"), range = 157:339){ res <- list() for(i in data){ disProgObj <- readData(i,week53to52=TRUE) disProgObj <- enlargeData(disProgObj) survResults <- algo.call(disProgObj, control = list( list(funcName = "rki1", range = range), list(funcName = "rki2", range = range), list(funcName = "rki3", range = range), list(funcName = "bayes", range = range,alpha=0.05))) res[[i]] <- algo.compare(survResults) cat("\n\n\n", i, " Res:\n") print(compMatrix.writeTable(res[[i]])) } sum <- algo.summary(res) cat("\n\nSummary:\n") print(compMatrix.writeTable(sum)) } ################################################### ### chunk number 2: ################################################### testSim <- function(p = 0.99, r = 0.01, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K, range = 200:400){ disProgObj <- sim.pointSource(p, r, length, A, alpha, beta, phi, frequency, state, K) survResults <- algo.call(disProgObj, control = list(list(funcName = "rki1", range = range))) res <- algo.compare(survResults) plot(survResults[[1]], "RKI 1", "Simulation") print(compMatrix.writeTable(res)) } ################################################### ### chunk number 3: ################################################### makePlot <- function(outputpath, data = "k1", method = "rki1", name, disease, range = 157:339){ disProgObj <- readData(data,week53to52=TRUE) disProgObj <- enlargeData(disProgObj) res <- algo.call(disProgObj, control = list(list(funcName = method, range = range))) pdf(paste(outputpath, data, "_", method, "_plot.pdf", sep=""), width = 10) plot(res[[1]],name,disease) dev.off() } surveillance/R/epidataCS_aggregate.R0000644000175100001440000001701412571311233017154 0ustar hornikusers################################################################################ ### Part of the surveillance package, http://surveillance.r-forge.r-project.org ### Free software under the terms of the GNU General Public License, version 2, ### a copy of which is available at http://www.r-project.org/Licenses/. ### ### Convert "epidataCS" to the (aggregated) classes "epidata" or "sts" ### ### Copyright (C) 2009-2015 Sebastian Meyer ### $Revision: 1461 $ ### $Date: 2015-09-01 13:57:15 +0200 (Die, 01. Sep 2015) $ ################################################################################ ###################################### ### Transform "epidataCS" to "epidata" ###################################### ## CAVE: this only generates a SIS epidemic, i.e. atRiskY is set to 1 ## immediately after recovery ## length of infectious period is taken from epidataCS$events$eps.t ## fcols are not generated here. these must be generated by a second call to ## twinSIR's as.epidata with desired f. (for safety) ## tileCentroids is a coordinate matrix whose row names are the tile levels as.epidata.epidataCS <- function (data, tileCentroids, eps = 0.001, ...) { if (!requireNamespace("intervals")) stop("conversion from ", dQuote("epidataCS"), " to ", dQuote("epidata"), " requires the ", dQuote("intervals"), " package") ### generate twinSIR's epidata object from stgrid (no events) centroidIdx <- match(levels(data$stgrid$tile), rownames(tileCentroids), nomatch = NA_integer_) if (any(is.na(centroidIdx))) { stop("some levels of 'data$stgrid$tile' are not available from 'tileCentroids'") } centroids <- tileCentroids[centroidIdx,] if (any(c("xCent", "yCent") %in% names(data$stgrid))) { stop("'data$stgrid' already has columns \"xCent\" and \"yCent\"") } stgrid <- cbind(data$stgrid, atRiskY = 1L, event = 0L, Revent = 0L, xCent = centroids[,1], yCent = centroids[,2] # relies on ordering of stgrid by first BLOCK, then tile ) names(stgrid)[names(stgrid)=="tile"] <- "id" timeRange <- with(stgrid, c(start[1], stop[length(stop)])) ### now determine "events" with respect to the tiles # individual data indItimes <- data$events$time if (anyDuplicated(indItimes)) stop("'data$events' has concurrent event times") indRtimes <- indItimes + data$events$eps.t indInts <- intervals::Intervals(cbind(indItimes, indRtimes, deparse.level = 0L)) indTiles <- data$events$tile # tile data tileRows <- tapply(seq_along(indTiles), indTiles, c, simplify = FALSE) tileInts <- lapply(tileRows, function (rows) { if (length(rows)==0L) { matrix(0,0,2) } else if (length(rows)==1L) { as.matrix(indInts[rows]) } else as.matrix(intervals::reduce(indInts[rows])) }) tileNames <- rep.int(names(tileInts), sapply(tileInts, nrow)) tileItimes <- unlist(lapply(tileInts, function(ints) ints[,1]), use.names=FALSE) tileRtimes <- unlist(lapply(tileInts, function(ints) ints[,2]), use.names=FALSE) # there are possibly Rtimes which equal Itimes of other individuals # => break ties by considering Rtime shortly before Itime (arbitrary choice) while(length(dup <- which(tileRtimes %in% tileItimes)) > 0L) { tileRtimes[dup] <- tileRtimes[dup] - eps } # now there could be duplicated Rtimes... grml (choose another 'eps' in this case) if (anyDuplicated(tileRtimes)) { stop("breaking ties introduced duplicated Rtimes") } ### add additional stop times to stgrid for tile infections and recoveries requiredStopTimes <- sort(c(tileItimes,tileRtimes[tileRtimes stopTimes[nBlocks]) nBlocks else match(.Rtime, stopTimes) .atRiskY[idxsTileInEpi[first0block:last0block]] <- 0L } evHist$atRiskY <- .atRiskY ### Return final epidata object of twinSIR-type cat("Generating final \"epidata\" object for use with twinSIR ... ") epi <- as.epidata(evHist[-grep("BLOCK", names(evHist))], id.col="id", start.col="start", stop.col="stop", atRiskY.col="atRiskY", event.col="event", Revent.col="Revent", coords.cols=c("xCent","yCent") ) cat("Done.\n") epi } #################################################################### ### Transform "epidataCS" to "sts" by aggregation of cases on stgrid #################################################################### epidataCS2sts <- function (object, freq, start, neighbourhood, tiles = NULL, popcol.stgrid = NULL, popdensity = TRUE) { stopifnot(inherits(object, "epidataCS")) tileLevels <- levels(object$stgrid$tile) if (!is.null(tiles)) { stopifnot(inherits(tiles, "SpatialPolygons"), tileLevels %in% row.names(tiles)) tiles <- tiles[tileLevels,] } ## prepare sts components epoch <- unique(object$stgrid$BLOCK) # epidataCS is sorted eventsByCell <- with(object$events@data, table(BLOCK=factor(BLOCK, levels=epoch), tile)) if (missing(neighbourhood)) { # auto-detect neighbourhood from tiles if (is.null(tiles)) stop("'tiles' is required for auto-generation of 'neighbourhood'") neighbourhood <- poly2adjmat(tiles, zero.policy=TRUE) if (nIslands <- sum(rowSums(neighbourhood) == 0)) message("Note: auto-generated neighbourhood matrix contains ", nIslands, ngettext(nIslands, " island", " islands")) } populationFrac <- if (is.null(popcol.stgrid)) NULL else { stopifnot(is.vector(popcol.stgrid), length(popcol.stgrid) == 1) popByCell <- object$stgrid[[popcol.stgrid]] if (popdensity) popByCell <- popByCell * object$stgrid[["area"]] totalpop <- sum(popByCell[seq_along(tileLevels)]) matrix(popByCell/totalpop, nrow=length(epoch), ncol=length(tileLevels), byrow=TRUE, dimnames=dimnames(eventsByCell)) } ## initialize sts object sts(epoch=epoch, freq=freq, start=start, observed=unclass(eventsByCell), neighbourhood=neighbourhood, populationFrac=populationFrac, map=tiles, epochAsDate=FALSE) } surveillance/R/algo_hhh.R0000644000175100001440000016445512024073436015101 0ustar hornikusers################################################### ### chunk number 1: ################################################### # lag - which lag for observation-driven part? # y_i,t = lambda*y_i,t-lag NOTE: lag=-1 means y_i,t+1 # lag.range =c(lag.neg, lag.pos) # i.e. (1,0) for t-1,t (DEFAULT) # (2,2) for t-2,t-1,t,t+1,t+2 algo.hhh <- function(disProgObj, control=list(lambda=TRUE, neighbours=FALSE, linear=FALSE, nseason=0, negbin=c("none", "single", "multiple"), proportion=c("none", "single", "multiple"), lag.range=NULL), thetastart=NULL, verbose=TRUE){ #Convert sts objects if (class(disProgObj) == "sts") disProgObj <- sts2disProg(disProgObj) #set default values (if not provided in control) if(is.null(control[["linear",exact=TRUE]])) control$linear <- FALSE if(is.null(control[["nseason",exact=TRUE]])) control$nseason <- 0 if(is.null(control[["neighbours",exact=TRUE]])) control$neighbours <- NA if(is.null(control[["negbin",exact=TRUE]])) control$negbin <- "none" if(is.null(control[["lambda",exact=TRUE]])) control$lambda <- 1 if(is.null(control[["proportion",exact=TRUE]])) control$proportion <- "none" control$negbin <- match.arg(control$negbin, c("single","multiple","none")) control$proportion <- match.arg(control$proportion, c("single","multiple","none")) # convert logical values to numerical values, FALSE corresponds to NA # to allow for lag == 0 if(is.logical(control[["lambda", exact=TRUE]])){ control$lambda <- as.numeric(control$lambda) control$lambda[control$lambda==0] <- NA } if(is.logical(control[["neighbours", exact=TRUE]])){ control$neighbours <- as.numeric(control$neighbours) control$neighbours[control$neighbours==0] <- NA } # determine range of observations y_i,t if(is.null(control[["lag.range",exact=TRUE]])){ lags <- c(control$lambda, control$neighbours) control$lag.range <- c(max(c(lags,1),na.rm=TRUE), max(c(-lags,0), na.rm=TRUE)) } # check if observed is a vector and convert to matrix if necessary if(is.vector(disProgObj$observed)) disProgObj$observed <- as.matrix(disProgObj$observed) n <- nrow(disProgObj$observed) nareas <- ncol(disProgObj$observed) #univariate if(nareas ==1){ control$neighbours <- NA control$proportion <- "none" control$nseason <- control$nseason[1] } # model with (lambda, pi) ? if(control$proportion != "none"){ control$neighbours <- NA # no lambda specified or lambda not specified for each area if(sum(!is.na(control$lambda)) == 0 | sum(!is.na(control$lambda))!= nareas) control$lambda <- 1 } # check neighbourhood matrix if neighbours=TRUE or proportion!="none" if(sum(!is.na(control$neighbours))>0 | control$proportion != "none"){ # is there a neighbourhood matrix? if(is.null(disProgObj$neighbourhood)) stop("No neighbourhood matrix is provided\n") if(any(is.na(disProgObj$neighbourhood))) stop("No correct neighbourhood matrix given\n") } #make "design" matrices designRes<- make.design(disProgObj=disProgObj, control=control) # check if there are neighbours if(designRes$dim$phi > 0){ nOfNeighbours <- designRes$nOfNeighbours if((designRes$dim$phi==1) & (sum(nOfNeighbours)==0)) stop("Specified model is not in line with neighbourhood matrix\n") # if((designRes$dim$phi==nareas) & (any(nOfNeighbours[!is.na(control$neighbours)]==0))) if((length(control$neighbours) == nareas) & (any(nOfNeighbours[!is.na(control$neighbours)]==0))) stop("Specified model is not in line with neighbourhood matrix\n") } else if(designRes$dim$proportion > 0){ nOfNeighbours <- designRes$nOfNeighbours if((designRes$dim$proportion==1) & (sum(nOfNeighbours)==0)) stop("Specified model is not in line with neighbourhood matrix\n") if((designRes$dim$proportion==nareas) & (any(nOfNeighbours==0))) stop("Specified model is not in line with neighbourhood matrix\n") } dimtheta <- designRes$dimTheta$dim dimLambda <- designRes$dimTheta$lambda dimPhi <- designRes$dimTheta$phi #starting values for optim areastart <- log(colMeans(designRes$Y)/designRes$populationFrac[1,]) if(!is.null(thetastart)){ #check dimension of thetastart # must be either of length dimtheta or of length dimtheta-nareas if(all(length(thetastart) != c(dimtheta, dimtheta-nareas)) ){ cat('thetastart must be of length', dimtheta, 'or ',dimtheta-nareas,'\n') return(NULL) } theta <- thetastart if(length(theta) == dimtheta) areastart <- NULL } else { #set starting values for theta #lambda = log(0.5), phi = log(0.1), beta = gamma = delta = 0, psi = 1 theta <- c(rep(log(0.5),designRes$dimTheta$lambda), rep(log(0.1),designRes$dimTheta$phi), rep(0.5,designRes$dimTheta$proportion), rep(0, designRes$dimTheta$trend + designRes$dimTheta$season), rep(2,designRes$dimTheta$negbin) ) } #starting values for intercepts if(!is.null(areastart)){ if(dimLambda + dimPhi >0){ #cat("theta",theta[1:(dimLambda + dimPhi)],"\n") Lambda <- getLambda(theta[1:(dimLambda + dimPhi)], designRes) expAlpha <- expAlpha.mm(Lambda,designRes$Y) expAlpha[expAlpha <=0] <- (colMeans(designRes$Y)/designRes$populationFrac[1,])[expAlpha <=0] areastart <- log(expAlpha) #areastart <- log(expAlpha.mm(Lambda,designRes$Y)) } theta <- c(areastart,theta) #cat("initial values",theta,"\n") } #check if initial values are valid mu<-meanResponse(theta,designRes)$mean if(any(mu==0) | any(!is.finite(mu))) stop("invalid initial values\n") # maximize loglikelihood mycontrol <- list(fnscale=-1, type=3, maxit=1000) suppressWarnings(myoptim <- optim(theta, fn=loglikelihood, gr=gradient, control=mycontrol, method="BFGS", hessian=TRUE, designRes=designRes)) if(myoptim$convergence==0){ convergence <- TRUE } else { if(verbose) cat("Algorithm has NOT converged. \n") res <- list(convergence=FALSE) class(res) <- "ah" return(res) } loglik <- myoptim$value if(loglik==0){ if(verbose){ cat('loglikelihood = 0\n') cat('Results are not reliable! Try different starting values. \n') } res <- list(convergence=FALSE) class(res) <- "ah" return(res) } thetahat <- myoptim$par fisher <- -myoptim$hessian # fitted values fitted <- meanResponse(thetahat,designRes)$mean #psi, lambda and phi are on log-scale #-> transformation of estimates, standard errors and fisher (using delta rule) #labels for results D <- jacobian(thetahat, designRes)$D thetahat <- jacobian(thetahat, designRes)$theta #Approximation to the inverted fisher info matrix # cov <- try(D %*% solve(fisher) %*% D, silent=TRUE) cov <- try(D %*% solve(fisher) %*% t(D), silent=TRUE) #fisher info is singular if(class(cov) == "try-error"){ if(verbose){ cat("Fisher info singular \t loglik=",loglik," \n") cat("theta",round(thetahat,2),"\n") cat('Results are not reliable! Try different starting values. \n') } res <- list(convergence=FALSE) class(res) <- "ah" return(res) } if(any(!is.finite(diag(cov))) | any(diag(cov)<0)){ if(verbose){ cat("infinite or negative cov\t loglik=",loglik,"\n") cat("theta",round(thetahat,2),"\n") cat('Results are not reliable! Try different starting values. \n') } res <- list(convergence=FALSE) class(res) <- "ah" return(res) } se <- sqrt(diag(cov)) if(convergence & verbose) cat("Algorithm claims to have converged \n") result <- list(coefficients=thetahat, se=se, cov=cov, call=match.call(), loglikelihood=loglik, convergence=convergence, fitted.values=fitted, control=control,disProgObj=disProgObj, lag=designRes$lag, nObs=designRes$nObs) class(result) <- "ah" return(result) } ################################################### ### chunk number 2: ################################################### algo.hhh.grid <- function(disProgObj, control=list(lambda=TRUE,neighbours=FALSE, linear=FALSE, nseason=0, negbin=c("none", "single", "multiple"), proportion=c("none", "single", "multiple"),lag.range=NULL), thetastartMatrix, maxTime=1800, verbose=FALSE){ #convert disProgObj if necessary if (class(disProgObj) == "sts") disProgObj <- sts2disProg(disProgObj) #set default values (if not provided in control) if(is.null(control[["linear",exact=TRUE]])) control$linear <- FALSE if(is.null(control[["nseason",exact=TRUE]])) control$nseason <- 0 if(is.null(control[["neighbours",exact=TRUE]])) control$neighbours <- NA if(is.null(control[["negbin",exact=TRUE]])) control$negbin <- "none" if(is.null(control[["lambda",exact=TRUE]])) control$lambda <- 1 if(is.null(control[["proportion",exact=TRUE]])) control$proportion <- "none" control$negbin <- match.arg(control$negbin, c("single","multiple","none")) control$proportion <- match.arg(control$proportion, c("single","multiple","none")) # convert logical values to numerical values, FALSE corresponds to NA # to allow for lag == 0 if(is.logical(control[["lambda", exact=TRUE]])){ control$lambda <- as.numeric(control$lambda) control$lambda[control$lambda==0] <- NA } if(is.logical(control[["neighbours", exact=TRUE]])){ control$neighbours <- as.numeric(control$neighbours) control$neighbours[control$neighbours==0] <- NA } # determine range of observations y_i,t if(is.null(control[["lag.range",exact=TRUE]])){ lags <- c(control$lambda, control$neighbours) control$lag.range <- c(max(c(lags,1),na.rm=TRUE), max(c(-lags,0), na.rm=TRUE)) } n <- nrow(disProgObj$observed) nareas <- ncol(disProgObj$observed) # check parameter specification for season #univariate if(nareas ==1){ control$neighbours <- NA control$proportion <- "none" control$nseason <- control$nseason[1] } # model with (lambda, pi) ? if(control$proportion != "none"){ control$neighbours <- NA # no lambda specified or lambda not specified for each area if(sum(!is.na(control$lambda)) == 0 | sum(!is.na(control$lambda))!= nareas) control$lambda <- 1 } # check neighbourhood matrix if neighbours=TRUE or proportion!="none" if(sum(!is.na(control$neighbours))>0 | control$proportion != "none"){ if(any(is.na(disProgObj$neighbourhood))) stop("No correct neighbourhood matrix given\n") } designRes<- make.design(disProgObj=disProgObj, control=control) # check if there are neighbours if(designRes$dim$phi > 0){ nOfNeighbours <- designRes$nOfNeighbours if((designRes$dim$phi==1) & (sum(nOfNeighbours)==0)) stop("Specified model is not in line with neighbourhood matrix\n") # if((designRes$dim$phi==nareas) & (any(nOfNeighbours[!is.na(control$neighbours)]==0))) if((length(control$neighbours) == nareas) & (any(nOfNeighbours[!is.na(control$neighbours)]==0))) stop("Specified model is not in line with neighbourhood matrix\n") } else if(designRes$dim$proportion > 0){ nOfNeighbours <- designRes$nOfNeighbours if((designRes$dim$proportion==1) & (sum(nOfNeighbours)==0)) stop("Specified model is not in line with neighbourhood matrix\n") if((designRes$dim$proportion==nareas) & (any(nOfNeighbours==0))) stop("Specified model is not in line with neighbourhood matrix\n") } dimthetaStart <- designRes$dimTheta$dim -nareas if(dimthetaStart == 0){ #only intercepts, grid search not necessary return(algo.hhh(disProgObj=disProgObj,control=control)) } #check dimension of thetastartMatrix if(!is.matrix(thetastartMatrix)){ cat('thetastart must be a matrix with', designRes$dimTheta$dim, 'or ', dimthetaStart, 'columns\n') return(NULL) } if(all(ncol(thetastartMatrix) != c(designRes$dimTheta$dim, dimthetaStart))){ cat('thetastart must be a matrix with', designRes$dimTheta$dim, 'or ', dimthetaStart,'columns\n') return(NULL) } #try multiple starting values and return the result with highest likelihood #stop search once time limit is exceeded i<-0 nOfIter <- nrow(thetastartMatrix) gridUsed <- nOfIter if(verbose) cat('The size of grid is', nOfIter, '\n') bestLoglik <- list(loglikelihood = -1e99) allLoglik <- matrix(NA,nrow=nOfIter,ncol=designRes$dimTheta$dim+1) time <- maxTime while((time > 0) & (i < nOfIter)){ i <- i+1 #run algo.hhh with the i-th row of thetastartMatrix as initial values time.i <- system.time(res<-try(algo.hhh(disProgObj=disProgObj,control=control,thetastart=thetastartMatrix[i,],verbose=verbose),silent=!verbose))[3] #how much time is left now time <- time - time.i #print progress information if(verbose){ if(class(res)== "try-error") print(c(niter=i,timeLeft=time,loglik=NULL)) else print(c(niter=i,timeLeft=time,loglik=res$loglikelihood)) } #don't consider "useless" results for the search of the best loglikelihood if(class(res)!= "try-error" && res$convergence){ #save loglik allLoglik[i,] <- c(res$loglikelihood,coef(res)) #keep it as bestLoglik if loglikelihood improved if(res$loglikelihood > bestLoglik$loglikelihood){ bestLoglik <- res } } } if(time < 0){ if(verbose) cat('Time limit exceeded, grid search stopped after', i, 'iterations. \n') allLoglik <- as.matrix(allLoglik[1:i,]) gridUsed <- i } timeUsed <- ifelse(time>0, maxTime-time,maxTime+abs(time)) #algo.hhh did not converge or produced useless results for all starting values, #i.e. there is no result if(is.null(coef(bestLoglik))) { #convergence <- FALSE #cat('Algorithms did not converge, please try different starting values! \n') bestLoglik <- list(loglikelihood=NULL,convergence=FALSE) } else{ #give names to all Loglik-matrix colnames(allLoglik) <- c("loglik",names(coef(bestLoglik))) } result <- list(best = bestLoglik, allLoglik = allLoglik,gridSize=nOfIter,gridUsed=gridUsed, time=timeUsed,convergence=bestLoglik$convergence) class(result) <- "ahg" return(result) } ################################################### ### chunk number 3: ################################################### create.grid <- function(disProgObj, control, params = list(epidemic = c(0.1, 0.9, 5), endemic=c(-0.5,0.5,3), negbin = c(0.3, 12, 10))) { #convert S4 sts to S3 if necessary if (class(disProgObj) == "sts") disProgObj <- sts2disProg(disProgObj) designRes <- make.design(disProgObj, control) control <- designRes$control dimParams <- designRes$dimTheta dimLambda <- dimParams$lambda dimPhi <- dimParams$phi dimProp <- dimParams$proportion dimEndemic <- dimParams$trend + dimParams$season dimNegbin <- dimParams$negbin # check if initial values are provided if((dimLambda +dimPhi > 0) & is.null(params$epidemic)) stop("Please provide initial values for the epidemic component \n") if((dimEndemic > 0) & is.null(params$endemic)) stop("Please provide initial values for the endemic component \n") if((dimNegbin > 0) & is.null(params$negbin)) stop("Please provide initial values for the dispersion parameter psi \n") # check if initial values are specified correctly if(!is.null(params$epidemic)){ if( params$epidemic[3]%%1 !=0 | params$epidemic[3]<1 | sign(params$epidemic[3])== -1) stop("Last component of params$epidemic must be a positive integer\n") } if(!is.null(params$endemic)){ if( params$endemic[3]%%1 !=0 | params$endemic[3]<1 | sign(params$endemic[3])== -1) stop("Last component of params$endemic must be a positive integer\n") } if(!is.null(params$negbin)){ if( params$negbin[3]%%1 !=0 | params$negbin[3]<1 | sign(params$negbin[3])== -1) stop("Last component of params$negbin must be a positive integer\n") } grid <- list() if(dimNegbin >0){ psi <- seq(params$negbin[1], params$negbin[2], length = params$negbin[3]) if(any(psi<=0)) stop("Initial values for psi must be positive\n") log.psi <- log(psi[psi >0]) grid$psi <- log.psi } if(dimLambda >0){ epidemic <- seq(params$epidemic[1], params$epidemic[2], length = params$epidemic[3]) if(any(epidemic<=0)) stop("Iinitial values for lambda must be positive\n") log.lambda <- log(epidemic[epidemic >0]) grid$lambda <- log.lambda } if(dimPhi >0){ epidemic <- seq(params$epidemic[1], params$epidemic[2], length = params$epidemic[3]) if(any(epidemic<=0)) stop("Initial values for phi must be positive\n") log.lambda <- log(epidemic[epidemic >0]) grid$phi <- log.lambda } if(dimProp >0){ if(any(epidemic<=0 | epidemic >=1)) stop("initial values for pi must be in (0,1)\n") logit.prop <- log(epidemic[epidemic > 0 & epidemic < 1]) - log(1-epidemic[epidemic > 0 & epidemic < 1]) grid$prop <- logit.prop } if(dimEndemic >0){ endemic <- seq(params$endemic[1], params$endemic[2], length = params$endemic[3]) grid$endemic <- endemic } grid <- expand.grid(grid) grid <- as.matrix( grid[c(rep("lambda",dimLambda), rep("phi",dimPhi), rep("prop",dimProp), rep("endemic",dimEndemic), rep("psi",dimNegbin))] ) gridSize <- nrow(grid) cat("Matrix with ",gridSize, " initial values\n") return(grid) } ################################################### ### chunk number 4: ################################################### loglikelihood <- function(theta, designRes){ control <- designRes$control Y <- designRes$Y mean <- meanResponse(theta=theta, designRes=designRes)$mean dimNegbin <- designRes$dimTheta$negbin dimTheta <- designRes$dimTheta$dim #loglikelihood poisson if(dimNegbin==0){ result <- colSums(dpois(Y, lambda=mean, log=TRUE)) } else if(dimNegbin==1){ #loglikelihood negbin #ensure psi (on last position in vector theta) ist positive psi <- exp(theta[dimTheta]) result <- colSums(dnbinom(Y, size=psi, mu=mean, log=TRUE)) } else if(dimNegbin>1){ #loglikelihood negbin, multiple dispersion params #ensure psi (on last positions) is positive psi <- exp(theta[(dimTheta-dimNegbin+1):dimTheta]) psi <- matrix(psi,ncol=dimNegbin, nrow=nrow(Y), byrow=TRUE) result <- colSums(dnbinom(Y, size=psi, mu=mean, log=TRUE)) } res <- sum(result) attr(res, "colsums") <- result return(res) } ################################################### ### chunk number 5: ################################################### meanResponse <- function(theta, designRes){ # unpack design matrices Y <- designRes$Y nareas <- ncol(Y) n <- nrow(Y) X.trendSeason <- designRes$X.trendSeason Ym1 <- designRes$Ym1 Ym1.neighbours <- designRes$Ym1.neighbours nhood <- designRes$disProgObj$neighbourhood nOfNeighbours <- designRes$nOfNeighbours pop <- designRes$populationFrac #check dimension of theta if(designRes$dimTheta$dim != length(theta)){ cat('theta must be of length',designRes$dimTheta$dim,'\n') return(NULL) } #unpack parameters and ensure lambda and phi are positive params <- unpackParams(theta,designRes) ################################################################### ## calculation of mean #autoregressive part # model with lambda and phi ? if(designRes$control$proportion == "none"){ #auto=0 if lambda and phi are not used in model lambda <- params$lambda phi <- params$phi # no autoregression if(is.null(lambda)) auto.lambda<- 0 else { # multiple lambda if(length(designRes$control$lambda)==nareas){ # create vector lambda with elements 0 if control$lambda=FALSE lambda <- rep(0,nareas) lambda[!is.na(designRes$control$lambda)] <- params$lambda } auto.lambda <- Ym1*matrix(lambda,ncol=nareas,nrow=nrow(Y), byrow=TRUE) } if(is.null(phi)) auto.phi <- 0 else { # multiple phi if(length(designRes$control$neighbours)==nareas){ # create vector phi with elements 0 if control$neighbours=FALSE phi <- rep(0,nareas) phi[!is.na(designRes$control$neighbours)] <- params$phi } auto.phi <- Ym1.neighbours*matrix(phi,ncol=nareas,nrow=nrow(Y), byrow=TRUE) } auto<- auto.lambda + auto.phi } else { ################################################# ## model with lambda and proportion pi ################################################# # helper function weightedSumEpidemic <- function(prop,lambda){ # ensure region id is not included diag(nhood) <- 0 # compute sum_j~i {pi_ji * Y_j,t-1} for unit id # where pi_ji = pi_i for j=i # pi_ji =(1-pi_j)/|k~j| for j~i one <- function(id){ # nOfNeighbours is number of Neigbours for each unit id=1,..,m i.e. |k~id| nOfNeighbours[id]<-1 pi.ij <- matrix(lambda*(1-prop)/nOfNeighbours,ncol=length(prop),nrow=nrow(Ym1),byrow=TRUE) # select pi_ij with j~i piYm1 <- as.matrix((Ym1*pi.ij)[,nhood[,id]>0]) rowSums(piYm1) } sapply(1:length(prop),one) } lambda <- matrix(params$lambda,ncol=nareas,nrow=n,byrow=TRUE) if(designRes$control$proportion == "single") prop <- rep(params$pi,nareas) else prop <- params$pi # lambda*pi_ji*Y_j,t-1 auto.phi <- weightedSumEpidemic(prop=prop,lambda=lambda[1,]) auto.lambda <- Ym1*lambda*matrix(prop,ncol=nareas,nrow=n,byrow=TRUE) auto <- auto.lambda+auto.phi } ################ #trend and seasonal components nSeason <- designRes$control$nseason dimSeason <- designRes$dimTheta$season dimTrend <- designRes$dimTheta$trend # trend if(dimTrend >0){ if(length(designRes$control$linear) == 1) beta <- rep(params$beta,nareas) else { beta <- rep(0,nareas) beta[designRes$control$linear] <-params$beta } predTime <- as.matrix(X.trendSeason[,1])%*%beta } else predTime <- 0 # season if( dimSeason >0){ # discard design matrix for trend X.Season <- X.trendSeason[,(1+ (dimTrend>0) ):ncol(X.trendSeason)] maxSeason <- max(nSeason) #construct a suitable matrix for seasonal parameters gamma_i # same number of Fourier frequencies S for all areas i: if(length(nSeason)==1){ gammaMat <- matrix(params$gamma,ncol=nareas,nrow=2*maxSeason,byrow=FALSE) } else if(length(nSeason)==nareas){ # different number of frequencies S_i for each area gammaMat <- matrix(0,ncol=nareas,nrow=2*maxSeason) index <- rep(1:nareas,2*nSeason) for(i in 1:nareas) gammaMat[0:(2*nSeason[i]),i] <- params$gamma[index==i] } else stop("nseason must be a vector of length 1 or",nareas,"\n") predSeason <- X.Season%*%gammaMat } else predSeason <- 0 #intercepts for areas #matrix with columns (alpha_1,...,alpha_nareas) predarea <- matrix(params$alpha, byrow=TRUE, ncol=nareas, nrow=nrow(Y)) #endemic part endemic <- pop*exp(predarea+predTime+predSeason) #results mean <- auto + endemic #Done return(list(mean=mean,epidemic=auto,endemic=endemic,epi.own=auto.lambda,epi.neighbours=auto.phi)) } ################################################### ### chunk number 6: ################################################### make.design <- function(disProgObj, control=list(lambda=TRUE, neighbours=FALSE, linear=FALSE, nseason=0, negbin=c("none", "single", "multiple"), proportion=c("none", "single", "multiple"), lag.range=NULL) ){ #Convert sts objects if (class(disProgObj) == "sts") disProgObj <- sts2disProg(disProgObj) #set default values (if not provided in control) if(is.null(control[["linear",exact=TRUE]])) control$linear <- FALSE if(is.null(control[["nseason",exact=TRUE]])) control$nseason <- 0 if(is.null(control[["neighbours",exact=TRUE]])) control$neighbours <- NA if(is.null(control[["negbin",exact=TRUE]])) control$negbin <- "none" if(is.null(control[["lambda",exact=TRUE]])) control$lambda <- 1 if(is.null(control[["proportion",exact=TRUE]])) control$proportion <- "none" control$proportion <- match.arg(control$proportion, c("single","multiple","none")) control$negbin <- match.arg(control$negbin, c("single","multiple","none")) # convert logical values to numerical values, FALSE corresponds to NA # to allow for lag == 0 if(is.logical(control[["lambda", exact=TRUE]])){ control$lambda <- as.numeric(control$lambda) control$lambda[control$lambda==0] <- NA } if(is.logical(control[["neighbours", exact=TRUE]])){ control$neighbours <- as.numeric(control$neighbours) control$neighbours[control$neighbours==0] <- NA } # determine range of observations y_i,t if(is.null(control[["lag.range",exact=TRUE]])){ lags <- c(control$lambda, control$neighbours) control$lag.range <- c(max(c(lags,1),na.rm=TRUE), max(c(-lags,0), na.rm=TRUE)) } data <- disProgObj$observed n <- nrow(data) nareas <- ncol(data) # check parameters if(length(control$lambda)>1 & length(control$lambda)!=nareas) stop("parameter lambda is not specified correctly\n") if(length(control$neighbours)>1 & length(control$neighbours)!=nareas) stop("parameter phi is not specified correctly\n") if(length(control$linear)>1 & length(control$linear)!=nareas) stop("parameter beta is not specified correctly\n") #univariate if(nareas ==1){ control$neighbours <- NA control$proportion <- "none" control$nseason <- control$nseason[1] } # maximum number of seasonal Fourier frequencies maxSeason <- max(control$nseason) # model with (lambda, pi) ? if(control$proportion != "none"){ control$neighbours <- NA # no lambda specified or lambda is not specified for each area if(sum(!is.na(control$lambda)) == 0 |sum(!is.na(control$lambda)) !=nareas) control$lambda <- 1 } dimLambda <- sum(!is.na(control$lambda)) dimPhi <- sum(!is.na(control$neighbours)) dimProportion <- switch(control$proportion , "single" = 1, "multiple"= nareas, "none" = 0) dimTrend <- sum(control$linear) dimSeason <- sum(2*control$nseason) dimIntercept <- nareas dimNegbin <- switch(control$negbin, "single" = 1, "multiple"= nareas, "none" = 0) #theta = (alpha_i, lambda, phi (or pi), beta,gamma_i,delta_i,..., psi) dim <- dimLambda+dimPhi+dimTrend+dimSeason+dimIntercept+dimProportion+dimNegbin dimTheta <- list(lambda=dimLambda, phi=dimPhi, trend=dimTrend, season=dimSeason, intercept=dimIntercept, proportion=dimProportion, negbin=dimNegbin ,dim=dim) #################################################################### # arrange response as matrix #Y, Ym1, Ym1.neighbours and population are (nOfobs)x(nOfareas) matrices #where nOfareas is the number of areas/units and # nOfobs is determined by control$lag.range with default nOfObs=n-1 # Thus, lag.range can be used to ensure that models with different lags # are based on the same observations. t.min <- 1+control$lag.range[1] t.max <- n-control$lag.range[2] Y <- matrix(data[t.min:t.max,],nrow=length(t.min:t.max),ncol=nareas) # population sizes n_{i,t} if(is.null(disProgObj$populationFrac)){ population <- matrix(1, nrow=length(t.min:t.max),ncol=nareas) } else { population <- matrix(disProgObj$populationFrac[t.min:t.max,],nrow=length(t.min:t.max),ncol=nareas) } # observed counts at time point t-lag # NOTE: the same lag (the maximum lag) is used for all areas if(dimLambda >0){ lag.lambda <- control$lambda[which.max(abs(control$lambda))] Ym1 <- matrix(data[(t.min:t.max)-lag.lambda,],nrow=length(t.min:t.max),ncol=nareas) } else { lag.lambda<- NA Ym1 <- matrix(0,nrow=length(t.min:t.max),ncol=nareas) } Ym1.neighbours <- matrix(0,nrow=length(t.min:t.max),ncol=nareas) nOfNeighbours <- 0 # now matrix for neighbours if(dimPhi>0){ lag.phi <- control$neighbours[which.max(abs(control$neighbours))] Ym1.neighbours <- weightedSumNeighbours(disProgObj)$neighbours[(t.min:t.max)-lag.phi,] nOfNeighbours <- weightedSumNeighbours(disProgObj)$nOfNeighbours # Ym1.neighbours <- sumNeighbours(disProgObj)[-n,] } else lag.phi <- NA if(dimProportion >0){ Ym1.neighbours <- weightedSumNeighbours(disProgObj)$neighbours[(t.min:t.max)-lag.lambda,] #not really needed nOfNeighbours <- weightedSumNeighbours(disProgObj)$nOfNeighbours } #################################################################### # now define design matrix (for trend and seasonality) for each time point #t<- disProgObj$week[t.min:t.max] # if no $week is given if(is.null(disProgObj$week)){ t <- (t.min:t.max)-1 } else { t<- disProgObj$week[(t.min:t.max)-1] } #t <- t - mean(t) form<-function(mod=ifelse(dimTrend == 0,"~-1","~-1+t"), S=maxSeason, period=disProgObj$freq){ if(S>0){ for(i in 1:S){ mod <- paste(mod,"+sin(",2*i,"*pi*t/",period,")+cos(",2*i,"*pi*t/",period,")",sep="") } } return(as.formula(mod)) } if(dimTrend +dimSeason >0) X.trendSeason<-model.matrix(form(),data.frame(t=t)) else X.trendSeason <-NULL result <- list("Y"=Y, "Ym1"=Ym1, "Ym1.neighbours"=Ym1.neighbours,"nOfNeighbours"=nOfNeighbours, "X.trendSeason"=X.trendSeason, "populationFrac"=population, "dimTheta"=dimTheta, "control"=control,"disProgObj"=disProgObj, "lag"=c(lag.lambda,lag.phi),"nObs"=prod(dim(Ym1))) return(result) } ################################################### ### chunk number 7: ################################################### print.ah <- function(x,digits = max(3, getOption("digits") - 3), amplitudeShift=TRUE,reparamPsi=TRUE,...){ if(!x$convergence) cat('Results are not reliable! Try different starting values. \n') else { if(!is.null(x$call)){ cat("Call: \n") print(x$call) } cat('\nEstimated parameters and standard errors: \n\n') coefs <- coefficients(x, se=TRUE, amplitudeShift=amplitudeShift,reparamPsi=reparamPsi) print(round(cbind("Estimates"=coefs[,"Estimates"], "Std.Error"=coefs[,"Std. Error"]),digits=digits),print.gap=2) cat('\nlog-likelihood: ',round(x$loglik,digits=digits-2),'\n') cat('AIC: ',round(AIC(x),digits=digits-2),'\n') cat('BIC: ',round(AIC(x,k=log(x$nObs)),digits=digits-2),'\n\n') if(!is.na(x$lag[1])) cat('lag used for lambda: ',x$lag[1],'\n') if(!is.na(x$lag[2])) cat('lag used for phi: ',x$lag[2] ,'\n') cat('number of observations: ',x$nObs,'\n\n') } } print.ahg <- function (x, digits = max(3, getOption("digits") - 3), amplitudeShift=TRUE,reparamPsi=TRUE, ...){ cat("\nsize of grid: ", x$gridSize, "\n") if (x$gridSize != x$gridUsed) cat("grid search stopped after", x$gridUsed, "iterations \n") cat("convergences: ",sum(!is.na(x$all[,1])),"\n") cat("time needed (in seconds)",x$time,"\n\n") if (!x$convergence) cat("\nAlgorithms did not converge, please try different starting values! \n") else { x$best$call <- NULL cat("values of log-likelihood:") print(table(round(x$all[,1],0))) # cat("\n") print.ah(x$best, digits = digits, amplitudeShift=amplitudeShift,reparamPsi=reparamPsi) } } ################################################### ### chunk number 8: ################################################### ################################# # obtain predictions from the fitted algo.hhh model # # params: # object - a fitted object of class "ah" # newdata - optionally, a disProgObject with which to predict; # if omitted, the fitted mean is returned. # type - the type of prediction required. The default is on the scale of the response # variable (endemic and epidemic part) # the alternative "endemic" returns only the endemic part (i.e. n_it * \nu_it) ################################ predict.ah <- function(object,newdata=NULL,type=c("response","endemic","epi.own","epi.neighbours"),...){ type <- match.arg(type,c("response","endemic","epi.own","epi.neighbours")) control <- object$control if(is.null(newdata)) newdata <- object$disProgObj if(!inherits(newdata, "disProg")) stop("data must be an object of class disProg\n") coefs <- coefficients(object) design <- make.design(newdata,control=control) # in meanResponse the params lambda, phi are "exp()'ed" # log() them to obtain the correct predictions if(sum(!is.na(control$lambda)) >0 | sum(!is.na(control$neighbours)) >0){ indexL <- design$dimTheta$intercept+1 indexU <- indexL +design$dimTheta$lambda +design$dimTheta$phi -1 coefs[indexL:indexU] <- log(coefs[indexL:indexU]) #cat("lambda,phi: indexL",indexL,"indexU",indexU,"\n") # pi is on logit-scale if(control$proportion != "none"){ indexL <- design$dimTheta$intercept+design$dimTheta$lambda+1 indexU <- indexL +design$dimTheta$proportion -1 #cat("indexL",indexL,"indexU",indexU,"\n") coefs[indexL:indexU] <- log(coefs[indexL:indexU]/(1-coefs[indexL:indexU])) } } predicted <- meanResponse(coefs,design) if(type=="response") return(predicted$mean) else if(type=="endemic") return(predicted$endemic) else if(type=="epi.own") return(predicted$epi.own) else if(type=="epi.neighbours") return(predicted$epi.neighbours) } predict.ahg <- function(object, newdata=NULL, type=c("response","endemic","epi.own","epi.neighbours"),...){ predict(object$best,newdata=newdata,type=type) } ################################################### ### chunk number 9: ################################################### ########################## ## residuals ################## residuals.ah <- function (object, type = c("deviance", "pearson"), ...){ type <- match.arg(type, c("deviance", "pearson")) # fitted values mean<- object$fitted.values #discard 1st observation (to obtain same dimension as mean) y <- as.matrix(object$disProgObj$observed[-1,]) # poisson or negbin model if(object$control$negbin!="none"){ coefs <- coefficients(object) psi <- matrix(coefs[grep("psi",names(coefs))],ncol=ncol(y),nrow=nrow(y),byrow=TRUE) distr <- function(mu){ dnbinom(y, mu=mu, size=psi, log=TRUE) } variance <- mean*(1+mean/psi) } else { distr <- function(mu){ dpois(y, lambda=mu,log=TRUE) } variance <- mean } res <- switch(type, deviance = sign(y-mean)*sqrt(2*(distr(y)-distr(mean))), pearson = (y-mean)/sqrt(variance) ) return(res) } residuals.ahg <- function(object, type = c("deviance", "pearson"), ...){ residuals.ah(object$best,type=type) } ################################################### ### chunk number 10: ################################################### ############################################ # extract estimates and standard errors (se=TRUE) # if amplitudeShift=TRUE, the seasonal params are transformed # if reparamPsi=TRUE, the overdispersion param psi is transformed to 1/psi # ############################################ coef.ah <- function(object,se=FALSE, amplitudeShift=FALSE, reparamPsi=FALSE,...){ coefs <- object$coefficients stdErr <- object$se if(amplitudeShift & max(object$control$nseason)>0){ #extract sin, cos coefficients index <- grep(" pi ",names(coefs)) sinCos.names <- names(coefs)[index] # change labels names(coefs)[index] <- paste(c("A","s"),substr(sinCos.names,4,100),sep="") #transform sin, cos coefficients coefs[index] <- sinCos2amplitudeShift(coefs[index]) # se's using Delta rule D <- diag(1,length(coefs)) D[index,index]<- jacobianAmplitudeShift(coefs[index]) cov <- D %*% object$cov %*% t(D) stdErr <- sqrt(diag(cov)) } if(reparamPsi & object$control$negbin!="none"){ #extract psi coefficients index <- grep("psi",names(coefs)) psi.names <- names(coefs)[index] # change labels names(coefs)[index] <- paste("1/",psi.names,sep="") #transform psi coefficients coefs[index] <- 1/coefs[index] # se's using Delta rule: se[h(psi)] = se[psi] * |h'(psi)| # h = 1/psi, h' = -1/psi^2 D <- diag(coefs[index]^2,length(index)) stdErr[index] <- sqrt(diag(D %*% object$cov[index,index] %*% t(D))) } if(se) return(cbind("Estimates"=coefs,"Std. Error"=stdErr)) else return(coefs) } coef.ahg <- function(object,se=FALSE, amplitudeShift=FALSE, reparamPsi=FALSE,...){ return(coef(object$best,se=se, amplitudeShift=amplitudeShift,reparamPsi=reparamPsi)) } ################################################### ### chunk number 11: ################################################### ## convert between sin/cos and amplitude/shift formulation ################################################### # y = gamma*sin(omega*t)+delta*cos(omega*t) # = A*sin(omega*t + phi) # with Amplitude A= sqrt(gamma^2+delta^2) # and shift phi= arctan(delta/gamma) ################################################# sinCos2amplitudeShift <- function(params){ # number of sin+cos terms lengthParams <- length(params) if(lengthParams %% 1 !=0) stop("wrong number of params") index.sin <- seq(1,lengthParams,by=2) one <- function(i=1,params){ coef.sin <- params[i] coef.cos <- params[i+1] amplitude <- sqrt(coef.cos^2+coef.sin^2) shift <- atan2(coef.cos, coef.sin) return(c(amplitude,shift)) } return(c(sapply(index.sin,one,params=params))) } amplitudeShift2sinCos <- function(params){ lengthParams <- length(params) if (lengthParams%%1 != 0) stop("wrong number of params") index.A <- seq(1, lengthParams, by = 2) one <- function(i = 1, params) { coef.A <- params[i] coef.shift <- params[i + 1] coef.cos <- -coef.A*tan(coef.shift)/sqrt(1+tan(coef.shift)^2) coef.sin <- -coef.A/sqrt(1+tan(coef.shift)^2) return(c(coef.sin,coef.cos)) } return(c(sapply(index.A, one, params = params))) } ############################################## # y = gamma*sin(omega*t)+delta*cos(omega*t) # g(gamma,delta) = [sqrt(gamma^2+delta^2), arctan(delta/gamma) ]' # compute jacobian (dg_i(x)/dx_j)_ij ############################################# jacobianAmplitudeShift <- function(params){ # number of sin+cos terms lengthParams <- length(params) if(lengthParams %% 1 !=0) stop("wrong number of params") index.sin <- seq(1,lengthParams,by=2) # function to compute jacobian of the transformation sinCos2AmplitudeShift() one <- function(i=1,params){ coef.sin <- params[i] coef.cos <- params[i+1] dAmplitude.dcoef.sin <- coef.sin/sqrt(coef.cos^2+coef.sin^2) dAmplitude.dcoef.cos <- coef.cos/sqrt(coef.cos^2+coef.sin^2) dShift.dcoef.sin <- - coef.cos/(coef.cos^2+coef.sin^2) dShift.dcoef.cos <- coef.sin/(coef.cos^2+coef.sin^2) return(c(dAmplitude.dcoef.sin,dShift.dcoef.sin,dAmplitude.dcoef.cos,dShift.dcoef.cos)) } jacobi<-sapply(index.sin,one,params=params) res <- matrix(0,nrow=lengthParams,ncol=lengthParams) j<-0 for (i in index.sin){ j<-j+1 res[i:(i+1),i:(i+1)] <- jacobi[,j] } return(res) } ################################################### ### chunk number 12: ################################################### ## additional (undocumented) functions needed for algo.hhh ###################################################################### # Function to unpack params and ensure that autoregressive parameters # lambda and phi are positive # and proportion parameter is 0 < pi < 1 # # theta - (alpha_i, lambda, phi, prop, beta, gamma_i, delta_i, psi) # designRes - result of a call to make.design ###################################################################### unpackParams <- function(theta, designRes){ dimIntercept <- designRes$dimTheta$intercept dimLambda <- designRes$dimTheta$lambda indexLambda <- dimIntercept+dimLambda dimPhi <- designRes$dimTheta$phi indexPhi <- indexLambda +dimPhi dimProportion <- designRes$dimTheta$proportion indexProportion <- indexPhi+dimProportion dimTrend <- designRes$dimTheta$trend indexTrend <- indexProportion+dimTrend dimSeason <- designRes$dimTheta$season indexSeason <- indexTrend +dimSeason dimNegbin <- designRes$dimTheta$negbin # params set to NULL if not specified # intercept always alpha <- theta[1:dimIntercept] if(dimLambda >0) lambda <- exp(theta[(dimIntercept+1):indexLambda]) else lambda <- NULL if(dimPhi >0) phi <- exp(theta[(indexLambda+1):(indexPhi)]) else phi <- NULL if(dimProportion >0){ prop <- theta[(indexPhi+1):indexProportion] # ensure that proportion is 00) beta <- theta[(indexProportion+1):indexTrend] else beta <- NULL if(dimSeason >0) gamma <- theta[(indexTrend+1):indexSeason] else gamma <- NULL if(dimNegbin >0) psi <- exp(theta[(indexSeason+1):(indexSeason+dimNegbin)]) else psi <- NULL return(list(alpha=alpha,lambda=lambda, phi=phi,pi=prop,beta=beta, gamma=gamma, psi=psi)) } ############################################# # function to compute gradient of loglikelihood # -> used in optim ################################################ gradient <- function(theta,designRes){ if(any(is.na(theta) | !is.finite(theta))) return(rep(NA,length(theta))) Y<-designRes$Y Ym1 <-designRes$Ym1 control <- designRes$control mean <- meanResponse(theta=theta, designRes=designRes) params <- unpackParams(theta,designRes) nOfNeighbours <- designRes$nOfNeighbours nhood <- designRes$disProgObj$neighbourhood nareas <- ncol(Y) endemic <- mean$endemic meanTotal <- mean$mean ## helper function for derivatives: # negbin model or poisson model if(control$negbin!="none"){ psi <- matrix(params$psi,ncol=nareas,nrow=nrow(Y),byrow=TRUE) psiPlusMu <- psi + meanTotal # helper function for derivatives: negbin derivHHH <- function(dmu){ # if(any(dim(dmu)!=dim(Y))) # cat("warning: dimensions wrong \n") (-psi/psiPlusMu +Y/meanTotal -Y/psiPlusMu)*dmu } } else { # helper function for derivatives: poisson derivHHH <- function(dmu){ # if(any(dim(dmu)!=dim(dmu))) # cat("warning: dimensions wrong \n") Y *(dmu/meanTotal) - dmu } } ########################################### ## epidemic part ########################################## # model with lambda and phi if(designRes$dimTheta$proportion == 0){ # gradient for lambda if(designRes$dimTheta$lambda >0){ lambda <- params$lambda if(length(control$lambda)>1){ # create vector lambda with elements 0 if control$lambda=FALSE lambda <- rep(0,nareas) lambda[!is.na(designRes$control$lambda)] <- params$lambda } lambda <- matrix(lambda,ncol=nareas,nrow=nrow(Y),byrow=TRUE) dLambda <- derivHHH(lambda*designRes$Ym1) # multiple lambda_i's or single lambda ? if(length(control$lambda) > 1) grLambda <- colSums(dLambda)[!is.na(designRes$control$lambda)] else grLambda <- sum(dLambda) if(any(is.na(grLambda))){ warning("derivatives for lambda not computable\n") return(rep(NA,length(theta))) } } else grLambda <- NULL # gradient for phi if(designRes$dimTheta$phi >0){ phi <- params$phi if(length(control$neighbours)>1){ # create vector phi with elements 0 if control$neighbours=FALSE phi <- rep(0,nareas) phi[!is.na(designRes$control$neighbours)] <- params$phi } phi <- matrix(phi,ncol=nareas,nrow=nrow(Y),byrow=TRUE) if(any(is.na(phi))) stop("phi contains NA\'s\n") dPhi <- derivHHH(phi*designRes$Ym1.neighbours) # multiple phi_i's or single phi ? if(length(control$neighbours)>1) grPhi <- colSums(dPhi)[!is.na(designRes$control$neighbours)] else grPhi<- sum(dPhi) if(any(is.na(grPhi))){ warning("derivatives for phi not computable\n") return(rep(NA,length(theta))) } } else grPhi <- NULL # gradient for proportion pi grPi <- NULL } else { ################################################ ## model with lambda and proportion pi ############################################### ## gradient for lambda gradLambda <- function(prop,lambda){ # ensure region id is not included diag(nhood) <- 0 # compute lambda_id* [pi_id*Ym1_id + sum_j~id {(1-pi_id )/|j~id|* Ym1_id}] for unit id dLambda.id <- function(id){ # number of Neigbours for unit id, i.e. |k~id| n<-nOfNeighbours[id] lambdaYm1.id <- Ym1[,id]*lambda[id] pi.id.j <- rep(0,nareas) pi.id.j[id]<- prop[id] pi.id.j[nhood[,id]>0] <-(1-prop[id])/n lambdaYm1pi.id <-lambdaYm1.id*matrix(pi.id.j,ncol=nareas,nrow=nrow(Ym1),byrow=TRUE) # d/dpi log L(mu_i,t) return(rowSums(derivHHH(lambdaYm1pi.id))) } return(sapply(1:nareas,dLambda.id)) } ## gradient for pi gradPi <- function(prop,lambda){ # ensure region id is not included diag(nhood) <- 0 # compute (pi_id-pi_id^2)* [lambda_id*Ym1_id - sum_j~id {lambda_id/|j~id|* Ym1_id}] for unit id dPi.id <- function(id){ # number of Neigbours for unit id, i.e. |k~id| n<-nOfNeighbours[id] dPiYm1.id <- Ym1[,id]*(prop[id]-prop[id]^2) lambda.id.j <- rep(0,nareas) lambda.id.j[id]<- lambda[id] lambda.id.j[nhood[,id]>0] <-(-lambda[id])/n dPiYm1lambda.id <-dPiYm1.id*matrix(lambda.id.j,ncol=nareas,nrow=nrow(Ym1),byrow=TRUE) # d/dpi log L(mu_i,t) return(rowSums(derivHHH(dPiYm1lambda.id))) } return(sapply(1:nareas,dPi.id)) } # gradient for lambda if(designRes$dimTheta$lambda ==0) cat("no lambda\n") lambda <- rep(params$lambda,length=nareas) prop <- rep(params$pi, length=nareas) dLambda <- gradLambda(prop=prop,lambda=lambda) # multiple lambda_i's or single lambda ? if(designRes$dimTheta$lambda > 1) grLambda <- colSums(dLambda) else grLambda <- sum(dLambda) if(any(is.na(grLambda))){ warning("derivatives for lambda not computable\n") return(rep(NA,length(theta))) } # gradient for phi grPhi <- NULL # gradient for proportion pi dPi <- gradPi(prop=prop,lambda=lambda) if(designRes$dimTheta$proportion >1) grPi <- colSums(dPi) else grPi <- sum(dPi) if(any(is.na(grPi))){ warning("derivatives for pi not computable\n") return(rep(NA,length(theta))) } } ############################################ ## endemic part ############################################ # gradient for intercepts grAlpha <- colSums(derivHHH(endemic)) if(any(is.na(grAlpha))){ warning("derivatives for alpha not computable\n") return(rep(NA,length(theta))) } # gradient for trend if(designRes$dimTheta$trend >0){ dTrend <- derivHHH(endemic*designRes$X.trendSeason[,1]) if(designRes$dimTheta$trend >1) grTrend <- colSums(dTrend)[designRes$control$linear] else grTrend <- sum(dTrend) if(any(is.na(grTrend))){ warning("derivatives for trend not computable\n") return(rep(NA,length(theta))) } } else grTrend <- NULL # gradient for season grSeason <- NULL if(designRes$dimTheta$season >0){ ## single or multiple seasonal params if(length(control$nseason)==1){ for (i in ((designRes$dimTheta$trend>0) +1):ncol(designRes$X.trendSeason) ){ grSeason <- c(grSeason, sum(derivHHH(endemic*designRes$X.trendSeason[,i]))) } if(any(is.na(grSeason))){ warning("derivatives for seasonal parameters not computable\n") return(rep(NA,length(theta))) } } else if(length(control$nseason)==nareas){ #maximum number of Fourier frequencies S.max=max_i{S_i} maxSeason <- 2*max(control$nseason) grSeason <- matrix(NA,nrow=maxSeason,ncol=ncol(Y)) for (j in ((designRes$dimTheta$trend>0) +1):(maxSeason+(designRes$dimTheta$trend>0) ) ){ # compute derivatives of gamma_{ij}, j= 1, ..., 2*S.max grSeason[j-(designRes$dimTheta$trend>0),] <- colSums(derivHHH(endemic*designRes$X.trendSeason[,j])) # set gradients for gamma_{ij} to NA if j > S_i grSeason[j-(designRes$dimTheta$trend>0),(j > (2*control$nseason)+(designRes$dimTheta$trend>0))] <- NA } # gradient now is in order sin(omega_1)_A, sin(omega_1)_B, sin(omega_1)_C, ... # cos(omega_1)_A, cos(omega_1)_B, cos(omega_1)_C, ... # sin(omega_2)_A, sin(omega_2)_B, sin(omega_2)_C, ... # ... # and needs to be in the following order: # sin(omega_1)_A, cos(omega_1)_A, sin(omega_2)_A, ..., cos(omega_S.max)_A # sin(omega_1)_B, cos(omega_1)_B, sin(omega_2)_B, ..., cos(omega_S.max)_B # remove NA's, i.e. only derivatives for {gamma_{ij}: j <=2*S_i} # check if there are any NaN's if(any(is.nan(grSeason))){ warning("derivatives for seasonal parameters not computable\n") return(rep(NA,length(theta))) } grSeason <- grSeason[!is.na(grSeason)] } # end multiple params } # end gradient season # gradient for psi if(designRes$dimTheta$negbin>0){ dPsi <- psi*(digamma(Y+psi)-digamma(psi) +log(psi)+1 - log(psiPlusMu) -psi/psiPlusMu -Y/psiPlusMu) # multiple psi_i's or single psi? if(designRes$dimTheta$negbin >1) grPsi <- colSums(dPsi) else grPsi <- sum(dPsi) if(any(is.na(grPsi))){ warning("derivatives for psi not computable\n") return(rep(NA,length(theta))) } } else grPsi <- NULL res <- c(grAlpha,grLambda,grPhi,grPi,grTrend,grSeason,grPsi) return(res) } ################################ # Calculates the weighted sum of counts of adjacent areas # weights are specified in neighbourhood-matrix of the disProgObj # (experimental atm) # # \nu_i,t = \lambda_y_i,t-1 + \phi*\sum_(j~i) [w_ji*y_j,t-1] # # disProgObj$neighbourhood can either be a matrix with weights w_ji (in columns) # or an array (for time varying weights) # # if the neighbourhood-matrix has elements 1 if i~j and 0 otherwise # weightedSumNeighbours() = sumNeighbours() ########################################### weightedSumNeighbours <- function(disProgObj){ observed <- disProgObj$observed ntime<-nrow(observed) narea<-ncol(observed) neighbours <- matrix(nrow=ntime,ncol=narea) nhood <- disProgObj$neighbourhood #check neighbourhood if(any(is.na(nhood))) stop("No correct neighbourhood matrix given\n") ## constant neighbourhood (over time)? if(length(dim(nhood))==2){ # ensure only neighouring areas are summed up diag(nhood) <- 0 nhood <- array(nhood,c(narea,narea,ntime)) } else if(length(dim(nhood))==3){ if(any(dim(nhood)[1:2]!= narea) | dim(nhood)[3] != ntime) stop("neighbourhood info incorrect\n") } # number of neighbours nOfNeighbours <-colSums(nhood[,,1]>0) for(i in 1:ncol(observed)){ #weights <- matrix(as.numeric(nhood[,i]),nrow=nrow,ncol=ncol,byrow=TRUE) weights <- t(nhood[,i,]) neighbours[,i] <- rowSums(observed*weights) } return(list(neighbours=neighbours, nOfNeighbours=nOfNeighbours)) } ################################################# # params psi, lambda and phi are on log-scale # -> transformation of estimates, standard errors and fisher (using delta rule) # labels for results # # g(theta) = (exp(lambda), exp(phi), beta, gamma, delta, exp(psi), alpha) # D is the Jacobian of g # D = diag(exp(lambda), exp(phi), 1, 1, 1, exp(psi), 1) ######################################### jacobian <- function(thetahat, designRes){ dimtheta <- designRes$dimTheta$dim nareas <- ncol(designRes$disProgObj$observed) thetaNames <- NULL D <-diag(1,ncol=dimtheta,nrow=dimtheta) dimLambda <- designRes$dimTheta$lambda dimPhi <- designRes$dimTheta$phi dimPi <- designRes$dimTheta$proportion dimTrend <- designRes$dimTheta$trend dimPsi <- designRes$dimTheta$negbin dimSeason <-designRes$dimTheta$season nseason <- designRes$control$nseason alpha <- colnames(designRes$disProgObj$observed) if(is.null(alpha)) alpha <- paste("obs",1:nareas, sep="") thetaNames <- c(thetaNames, alpha) if(dimLambda >0){ if(length(designRes$control$lambda)==1) lambda <- "lambda" else { lambda <- paste("lambda", alpha, sep="_")[!is.na(designRes$control$lambda)] } thetaNames <- c(thetaNames, lambda) index <-(nareas+1):(nareas+dimLambda) thetahat[index] <- exp(thetahat[index]) diag(D)[index] <- thetahat[index] } if(dimPhi >0){ if(length(designRes$control$neighbours)==1) phi <- "phi" else { phi <- paste("phi", alpha, sep="_")[!is.na(designRes$control$neighbours)] } thetaNames <- c(thetaNames, phi) index <- (nareas+dimLambda+1):(nareas+dimLambda+dimPhi) thetahat[index] <- exp(thetahat[index]) diag(D)[index] <- thetahat[index] } if(dimPi>0){ prop <- switch(designRes$control$proportion, "single"="pi", "multiple"=paste("pi", alpha, sep="_")) thetaNames <- c(thetaNames, prop) index <- (nareas+dimLambda+dimPhi+1):(nareas+dimLambda+dimPhi+dimPi) exp.pi <- exp(thetahat[index]) diag(D)[index] <- exp.pi/((1+exp.pi)^2) thetahat[index] <- exp.pi/(1+exp.pi) } if(dimTrend >0){ beta <- colnames(designRes$X.trendSeason)[1] if(length(designRes$control$linear)>1) beta <- paste(beta,alpha,sep="_")[designRes$control$linear] thetaNames <- c(thetaNames, beta) } if(dimSeason > 0){ maxSeason <- 2*max(nseason) sinCos <- rep(colnames(designRes$X.trendSeason)[(1+ (dimTrend>0) ):((dimTrend>0) +maxSeason)], length=maxSeason) if(length(nseason)==1){ gammaDelta <- sinCos } else if(length(nseason==nareas)){ gammaDelta <- matrix(NA,ncol=nareas,nrow=maxSeason) for(i in 1:nareas){ gammaDelta[0:(2*nseason[i]),i] <- paste(sinCos,alpha[i],sep="_")[0:(2*nseason[i])] } gammaDelta <- gammaDelta[!is.na(gammaDelta)] } thetaNames <- c(thetaNames, gammaDelta ) } if(dimPsi >0){ psi <- switch(designRes$control$negbin, "single"="psi", "multiple"=paste("psi",alpha,sep="_")) thetaNames <- c(thetaNames, psi) index <- (dimtheta-dimPsi+1):dimtheta thetahat[index] <- exp(thetahat[index]) diag(D)[index] <- thetahat[index] } dimnames(D) <- list(thetaNames,thetaNames) names(thetahat) <- thetaNames return(list(D=D,theta=thetahat)) } # theta.epidemic = c(lambda,phi) # Note: lambda and phi are on log-scale getLambda <- function(theta.epidemic, designRes, t.weights=1){ # check dimension of theta.epidemic dimLambda <- designRes$dimTheta$lambda dimPhi <- designRes$dimTheta$phi if(designRes$dimTheta$proportion>0) stop("proportions currently not supported\n") if(length(theta.epidemic)!= (dimLambda+dimPhi)) stop("vector with parameters must be of length ", dimLambda+dimPhi,"\n") # is there an autoregression? if(sum(!is.na(designRes$control$lambda))==0 & sum(!is.na(designRes$control$neighbours)) ==0) return(NULL) if(dimLambda>0){ coef.lambda <- exp(theta.epidemic[1:dimLambda] ) } else coef.lambda <- 0 if(dimPhi>0){ coef.phi <- exp(theta.epidemic[(dimLambda+1):length(theta.epidemic)] ) } else coef.phi <- 0 #univariate? if(ncol(designRes$disProgObj$observed)==1){ if(sum(!is.na(designRes$control$lambda))==1) return(coef.lambda) else return(NULL) } nareas <- ncol(designRes$Y) #ncol(nhood) if(designRes$control$proportion=="none"){ # no lambda if(sum(!is.na(designRes$control$lambda))==0){ lambda <- rep(0,nareas) # single lambda for all units } else if(sum(!is.na(designRes$control$lambda))==1 & length(designRes$control$lambda)==1){ lambda <- rep(coef.lambda,nareas) # multiple lambda } else{ lambda <- rep(0, nareas) lambda[designRes$control$lambda] <- coef.lambda } Lambda <- diag(lambda,nareas) if(dimPhi>0){ # extract neighbourhood, i.e. weight matrix nhood <- designRes$disProgObj$neighbourhood # time-varying weights w_ji if(length(dim(nhood))==3) nhood <- nhood[,,t.weights] # ensure the diagonal is zero diag(nhood) <- 0 nOfNeighbours <- colSums(nhood>0) # single phi for all units if(length(designRes$control$neighbours)==1 & sum(!is.na(designRes$control$neighbours))==1){ phi <-rep(coef.phi,nareas) } else if(length(designRes$control$neighbours)>1 & sum(!is.na(designRes$control$neighbours))>0){ phi <- rep(0,nareas) phi[!is.na(designRes$control$neighbours)] <- coef.phi } phi.weights <- matrix(phi,nrow=nareas,ncol=nareas,byrow=FALSE)*nhood Lambda[nhood>0] <- phi.weights[nhood>0] } } else { #todo: check return(NULL) #hoehle 14 Oct 2008 - commented, coz it contains warnings for R CMD check # lambdaMatrix <- matrix(lambda,ncol=nareas,nrow=nareas,byrow=TRUE) # nOfNeighbours <- rowSums(nhood) # piMatrix <- matrix((1-prop)/nOfNeighbours,ncol=nareas,nrow=nareas,byrow=TRUE) # piMatrix[nhood==0] <-0 # diag(piMatrix)<-prop # Lambda <- lambdaMatrix*piMatrix } return(Lambda) } ## moment estimator of exp(alpha) ## alpha.hat(lambda,phi) = mean(y)' %*% (I - Lambda) expAlpha.mm <- function(Lambda,Y){ mean.obs <- colMeans(Y) mean.obs %*% (diag(1,length(mean.obs))-Lambda) } ######## logLik.ah <- function(object,...){ if(!inherits(object, "ah")) stop("expected object to be an object of class ah\n") if(!object$convergence) stop("algorithm did not converge\n") val <- object$loglikelihood attr(val, "df") <- length(coef(object)) attr(val, "nobs") <- object$nObs class(val) <- "logLik" return(val) } logLik.ahg <- function(object, ...){ logLik.ah(object$best) } surveillance/R/algo_glrpois.R0000644000175100001440000001642011731650466016005 0ustar hornikusers################################################### ### chunk number 1: ################################################### ###################################################################### # # Implementation of GLR -- documentation converted to Rd format. # # Author: Michael Hoehle (with contributions by Valentin Wimmer) # Date: 8 Jan 2008 # ###################################################################### algo.glrpois <- function(disProgObj, control = list(range=range,c.ARL=5, mu0=NULL, Mtilde=1, M=-1, change="intercept", theta=NULL,dir=c("inc","dec"), ret=c("cases","value"))) { if (is.null(control$alpha)) { control$alpha <- 0 } else { if (control$alpha != 0) { stop("Error: algo.glrpois has to operate with control$alpha = 0.") } } return(algo.glrnb(disProgObj, control)) ## # Set the default values if not yet set ## if(is.null(control$c.ARL)) ## control$c.ARL <- 5 ## if(is.null(control$change)) ## control$change <- "intercept" ## if(is.null(control$Mtilde)) ## control$Mtilde <- 1 ## if(is.null(control$M)) ## control$M <- -1 ## if(is.null(control$dir)) ## control$dir <- "inc" ## if(is.null(control$ret)) ## control$ret <- "value" ## #GLM (only filled if estimated) ## m <- NULL ## #Extract the important parts from the arguments ## observed <- disProgObj$observed ## t <- control$range ## control$mu0Model <- NULL ## range <- control$range ## control$dir <- match.arg(control$dir, c("inc","dec")) ## dir <- ifelse(control$dir=="inc",1,-1) ## control$ret <- match.arg(control$ret, c("value","cases")) ## ret <- pmatch(control$ret,c("value","cases")) ## # Estimate m (the expected number of cases), i.e. parameter lambda of a ## # poisson distribution based on time points 1:t-1 ## if (is.null(control$mu0) | is.list(control$mu0)) { ## #Initialize ## if (is.null(control$mu0)) control$mu0 <- list() ## if (is.null(control$mu0$S)) control$mu0$S <- 1 ## if (is.null(control$mu0$trend)) control$mu0$trend <- FALSE ## if (is.null(control$mu0$refit)) control$m0$refit <- FALSE ## control$mu0Model <- control$mu0 ## #Estimate using a hook function (lazy evaluation) ## control$mu0 <- estimateGLRPoisHook() ## } ## #The counts ## x <- observed[control$range] ## mu0 <- control$mu0 ## #Reserve space for the results ## # start with cusum[timePoint -1] = 0, i.e. set cusum[1] = 0 ## alarm <- matrix(data = 0, nrow = length(t), ncol = 1) ## upperbound <- matrix(data = 0, nrow = length(t), ncol = 1) ## #If no restarting set threshold to infinity and compute alarms manually ## #afterwards ## if (!control$restart) { c.ARL.saved <- control$c.ARL ; control$c.ARL <- 1e99} ## #Setup counters for the progress ## doneidx <- 0 ## N <- 1 ## xm10 <- 0 ## noofalarms <- 0 ## noOfTimePoints <- length(t) ## #Loop as long as we are not through the sequence ## while (doneidx < noOfTimePoints) { ## #cat("Doneidx === ",doneidx,"\n") ## #Call the C-interface -- this should depend on the type and the distribution ## ###################################################################### ## # Poisson ## ###################################################################### ## if (control$change == "intercept") { ## if (is.null(control$theta)) { ## res <- .C("glr_cusum",as.integer(x),as.double(mu0),length(x),as.integer(control$Mtilde),as.double(control$c.ARL),N=as.integer(0),val=as.double(x),cases=as.integer(x),as.integer(dir),as.integer(ret),PACKAGE="surveillance") ## } else { ## res <- .C("lr_cusum",as.integer(x),as.double(mu0),length(x),as.double(control$theta),as.double(control$c.ARL),N=as.integer(0),val=as.double(x),cases=as.double(x),PACKAGE="surveillance") ## } ## } else { ################### Epidemic chart ####################### ## if (control$change == "epi") { ## res <- .C("glr_epi_window",as.integer(x),as.double(mu0),length(x),as.integer(control$Mtilde),as.integer(control$M),as.double(xm10),as.double(control$c.ARL),N=as.integer(0),val=as.double(x),PACKAGE="surveillance") ## } ## } ## #In case an alarm found log this and reset the chart at res$N+1 ## if (res$N < length(x)) { ## #Put appropriate value in upperbound ## upperbound[1:res$N + doneidx] <- ifelse(ret==1, res$val[1:res$N], res$cases[1:res$N]) ## alarm[res$N + doneidx] <- TRUE ## #Chop & get ready for next round ## xm10 <- x[res$N] #put start value x_0 to last value ## x <- x[-(1:res$N)] ; t <- t[-(1:res$N)] ## #If no refitting is to be done things are easy ## if (!is.list(control$mu0Model) || (control$mu0Model$refit == FALSE)) { ## mu0 <- mu0[-(1:res$N)] ## } else { ## #Update the range (how to change back??) ## range <- range[-(1:res$N)] ## mu0 <- estimateGLRPoisHook() ## control$mu0[(doneidx + res$N + 1):length(control$mu0)] <- mu0 ## } ## noofalarms <- noofalarms + 1 ## } ## doneidx <- doneidx + res$N ## } ## # fix of the problem that no upperbound-statistic is returned after ## #last alarm ## upperbound[(doneidx-res$N+1):length(range)] <- ifelse (ret==1, res$val, res$cases) ## #fix of the problem that no upperbound-statistic ss returned ## #in case of no alarm ## if (noofalarms == 0) { ## upperbound <- ifelse( ret == 1, res$val, res$cases) ## } ## #Manually generate the alarms ## if (!control$restart) { alarm <- upperbound > c.ARL.saved} ## # ensure upper bound is positive and not NaN ## upperbound[is.na(upperbound)] <- 0 ## upperbound[upperbound < 0] <- 0 ## #Add name and data name to control object. ## control$name <- paste("glrpois: ", control$change) ## control$data <- paste(deparse(substitute(disProgObj))) ## control$m <- m ## # return alarm and upperbound vectors ## result <- list(alarm = alarm, upperbound = upperbound, ## disProgObj=disProgObj,control=control) ## class(result) = "survRes" # for surveillance system result ## return(result) } ################################################### ### chunk number 2: ################################################### estimateGLRPoisHook <- function() { #Fetch control object from parent control <- parent.frame()$control #The period p <- parent.frame()$disProgObj$freq #Current range to perform surveillance on range <- parent.frame()$range #Define training & test data set (the rest) train <- 1:(range[1]-1) test <- range #Perform an estimation based on all observations before timePoint #Event better - don't do this at all in the algorithm - force #user to do it himself - coz its a model selection problem data <- data.frame(y=parent.frame()$disProgObj$observed[t],t=train) #Build the model equation formula <- "y ~ 1 " if (control$mu0Model$trend) { formula <- paste(formula," + t",sep="") } for (s in 1:control$mu0Model$S) { formula <- paste(formula,"+cos(2*",s,"*pi/p*t)+ sin(2*",s,"*pi/p*t)",sep="") } #Fit the GLM m <- eval(substitute(glm(form,family=poisson(),data=data),list(form=as.formula(formula)))) #Predict mu_{0,t} return(as.numeric(predict(m,newdata=data.frame(t=range),type="response"))) } surveillance/vignettes/0000755000175100001440000000000012617067300014776 5ustar hornikuserssurveillance/vignettes/surveillance-cache.RData0000644000175100001440000014536012004061670021453 0ustar hornikusersý7zXZi"Þ6!ÏXÌå<ʱ])TW"änRÊŸãXg€ÆqÅjnç]üLâËUJÆÎŽ+[Òܯ׼Ú½»•è…}Ð\Äø˜ëÈáô—F7º‰Ú¦Šž4´Z"ü¢òPÞIkÇxMÜ{dõLbÌÙŸ 'šÔÑýs„!›…p?ŠL˜úù÷,ùÁ¶Ä+”5Gë÷<èÿÍêÍÁãeF ø°Á‚¦ç£ÀöZ‡©X¹ |ø\št0`}¶ßb%Y§LH-ç ¨ýÞDµ ôL‡QðbÞxØ#MÒ¥ X‚1Xæ }˜­õÞÅödkº^~I³® ›«2{š·ð@Ú'ì&ß½Myµ iµöçm%a%Ò†‹V§”Ó4ÐŽÀ¥ŠÞ6†èÜ``œ<®î^✃‰gíÇ› Ó§;ª»AâÂÈŒãz~Š9] ‰ImŸ³ëׯòL w™Q§Pë¤6ÜéÙËKãÉ(ʯx \Î$03#ÇiRooÔÜÌdW?‹c÷Î äò¦$Ü·L8ÈD¶W±Î«~¾5ßC»Ý)*‹òÏÐÇZÿƒ¿zßBÿÍ$©ù½,Öýñþ»ªâˈ°x¢ÁÆ,3Xhƒ<ð„Ùr÷+‘èjràA<Ù7²=ikL£.˜Æš³}ÝÛrüÃ×þÁÿÊD}@’1<€Œ;ÒÂqõª0(|x‘s×P°j '\yý¥uò[Ï®¢6}ûïŠL‘ÑØU‡@Þ~iFŸ&ÅŒÊXßomûtúÌ|ÈŽœ£Px=Võ²µqx’KC U~ŒÈÞÍ®éNé“»ÆB' ? ‘—H«êaà™boÂÖŠJÀ•©ª ‘“¼YŽCIlÏeѽ@ÀŸ­)£ ýYלuä 5âà³£õÅ7¶% Fþ—Û°\¢)„BÒk; }‚ìõOèV8ÎU/út™’° l:1Á˜À—²Øl™êú>'àÇß›“³1þSÔ™þHKj(8ã0äL0UÇ=N)¢Žÿ´eغOØ 4ëŠÓÑô÷¯íüÈG^×jÝÀØdü2V#Œ_ pM®¥Ì1n9öv`…FÐèç°ã÷_8œB)É!V+Yö^LjŸbÏ.H¾L&ÿ S³‰<ýR³&FUþdÐPª²l ã«ð‰Ö’øÁÓI ‚ê?Lß06vº:Ör'ÉGÎ"’ðÅ—‡iöG˜þaè(üÇK® /Ì^6·ˆdO›ÃÇ~ñ„*8ð<.p;±±fQÍàŽ“À–…$Si.Š Ö.^!ú–\FʸvɧÙ~$$6tï5ø 骈hv'aº±[©t7³2˾¾:‰>Po°N×pi]fË^P@!Œ…ÁÂuÝôb‰ZC)À§ª©ttFôt0…´–Â'µ#W©P)%x’áNN%Åóü—`v¢5~¼å¤R×jðgàh½u¥7Í,3'­8I¹¼q­3d%8 iæ°T™ºl}8Aó…¬4›ËM¥'†„$ݧ4ptš—çB/ð'úGT¸kQWdòFbŽ5 6-ì׃„D{I¹Çû/ÊGæH…ôøñâøP¹@ö|Ù—'¡ï¿¹FÏ*$χÐ5£×.J=~…Õ\œr.ŒT=©÷Bµ ÆŠèš‹5?tjDºƒÖm`âÆð‰|« .ŽìÜ0à–/E§³‘i'Rô•líóš×èµeÓâ¨NÕ0wÄ„M©wç9\îÿRƒ–9&L»"ûy@Òƒý0î6þnŸë¢ðÌt²P)–®‰‚*JCK- çzC¥‘A„bÚÀ‘7Œ3'jUïRJM­£›Xž.Ãg’u+ˆåÖ8㣑 J1J_–Ñü³XPG­ tW¡lÙCŸüK9{â§ÞÒã%VFRSÜ\»tj°ø5쑱¸ÎX¨ÎÑm+}íÜ ¤C-0©Rb-†KiŸVïßÑ=E¤µooe ÔÃÛá®òëM”©>ó@Vy΢0.Ø) ¡“˜ §©RV…¤•^¥@yÅ'Qà`†Ön§¸&½~<›´¨xóS¶Àh«Îò¶?õ÷¢l²J=wbŒ3°þÓÕ·²‚Ãdò-I1òEÂù$´ÓµÊ]o‰AÜú4‰ˆ«úgÎiK—ÿ1]‚ƒ_r­Þ^dcxg¬;»¬+9"mþòb§0ù9`§šAúV*„y5 ¥$É ‡ß‡>-ûB]@“ fhîùnÂÑÔƒAX¾xÇ|é’µ<„âroX)-ÓZ¾ cìRõd‰|j^Ñ.C—çgÇ /Ñ^ç½Ë]y¯ÔÅCŽÅʱIQOØÕøbôh`Ò†¢– ö[xMìAÄŒÁdg†Ÿ ëVý3-Wwß ’§\–oÜ i/Éîßf0{Æê˜J"u9ˆG\·ˆ¤xŸUT§€/WÎÚЦmïãsõY5dç¯1[€mé6ØÄ]4)ÕnðQ u©c6/Âý®û?5]ÏÑì [Ly«W¹„ÌÆ›m['¶Â%޼€¸ J¢SÌB¹ê'Y#Ïo¸Z’ýÎ?£,šx)Us @Ù»„Heó/ÉEsõvˆÄ’ÖéO½|¢Èmi-‘˜¬ôÎÉéÀ„‹Ìöó›ãB"9{K.qJÞ©ÙHS…ÕøHx½rFSi%$©«‹êgÐ8¶ÕÈ?ÚºVyŸéŠ ¾C­„Ö$þдJ›¹U”`ÂÍYb „±®ÒåÚz±éËpšóŽÆ¾3Å(o©æµÛ±”ôkŒðþ~8Š´KA-Þ­>ùB¤ÿ˜±µÇ°Ü»J;DJ"'Rh¼Ýæ'«œNÙûS¿3Ä 9Œ‡ØfRžàÚu…6Ê•äö™a.p3Ä\!ßaNKé°¯ÔúZÕÀ<½"K“*i‰µ à…Òü¶áŽ<.É’—«#èÎL¹ANÉäw]˜¹–v­}oêy’ÊLehò…Zü¢Ø•ý„ºl —ª77­^rOö;º †ÅkÔκW³ Iuà ±Í÷ê<¤ýÁ¤X»{$ÚøQº^bïaYc{IŸ÷…¾HÕ‡pŽiÖ.qÇ}±zMÂ^ÒܬS¾8¾ƒfo¡Èjž“û烔ö%V/ÆÚt6nþwY`çsN Ö|ŒO­Ž–{òƒ˜Bd-™ç9º_Áã„T½È°g¦u{šJ‹I»L¬Š²ŒKÓbÄ,x*Ï×þçZ°-*\…Y–¦—oü&ë9—xÉ Eã±&7º¾úq`L·.ò ©”<•Ö°ó6›©ŸB*Hžš$½ò KÙ#S¼7:.ú yœ4 †{R8{€…âEþ_†ã®…£8VQ‡É¦8ÛÈÓø)s -¨$S¸Èê¡2?eø4>äþvj£hTÒÃ8{\‰´¶PËh:hÊ„–ë?ô.MŒwŸ¶mÛð”–ÓQr³U6@·Ö} ” øõØÎ–‡5Ð"… u71Ã׬)Tú±­ðæþÆ®¿Ó×Má€L¨Vu€Æ„Õ¬7{ƒ\ ¥–ÅÀ}®û6½Ÿlôý 0~ž4èóy¡¹«?GîSâZ¤¨©pŠ¥/ò^ÙÛK]kíˆÓ’~…%¢¢vEP7&=+·õ±·Õ¹ío:ÁØðKëÿD…¦±šî‚¸`ÈI´µ–¡|ʉ.’}pÀ°rÎ9 C›t¼œnÙj;G•šþ9ÃÈ®¶ë zÙ)½G܃õÅõhêý÷÷S’ŸS]ÀÄl’ÆMG˜._¹/k(vvâ5z¾i?˜„I[Û^g„•}¼æ[Î"^Æ„éh>=Äî{ƒbE$?öâ„ü>büÃNàî½é‡3RÒ-Ä·õ³í¨Fœ¥l¥•‹æuMºR1j­C0˜r[ÿx*ÉÀr¦¯&×vFÍqµßäíc£b­¥‘Мެ°füñ WGÑŸ˜Ä‹éßL N&@»@’±ÿÃ%НkZž‚1È®³šiªÌ9-,Zq[Æžn’¯O©‘®ÎÅVòÒÚÒI×Þ]¸âzM‰þ·aVCׇ»´ÃÃÑ©–òge‘klþJ£¹CÅleœ <—¿nл„âY ,ž˜ó”äCøÛ̽lüÏVN,‰Ýâ-¾¯H+íÑzò¸;dHä³÷Ҷ grpŠÁ/¾£Ð)À-œ„´X;¾ßS˜üÑýá²b¡ýK€lU\õîgQ'0CNöFõ3˜ÉË2A®–m÷Õ²»_£Á¦Š:Æ^+ñ7 $ч›m~©Üt6•ïfÍ>¬‚©ôM®1Ùïíùr'ž“oæß}މgï¥Äâ†[-¥ ò°ûTʲ¿R™¾U=ƒy8Ó“`^¦‹27SpÝõ8‚„«…C‹E»€²¶Z ¢–M»"ÿ²8);ÂÔð¯öåh¯ÏÕÕÐí~µá-ìæ›ñ©}-lBo˜³£ž^b`¬Éž^N.«“ìI½ûÆGÀK m:9Nâw>"Ýð¨9’¤§¾7:Ÿœ³?S~I H.«Ãc9êÛkc̆!“;7ƒ¤P2¾¥zY…R® ¢ ª†•mWŽý1zû½|f÷‡è9Ø“^ÖÆ\´#6_ôy:f‰æìó0ßçÑɳô¾š›Ë=O¨Áúž!íü°[н…K†ƒ£®§•èßT¯š¹“Ö‰£°Ýf±Çþ­Z¸¤‹¤žæl@hàq L›Uë×&\ž+úxÔ(H†Zq‡˜»y»ìÙêüT½ˆO’Þ2¦û>Ÿp>gñäÿRÿ¢öLÄku{ÝAb¿çü+š&÷`ËpõlƒÐ[ô EðšŒvÁzmölSXùÁáÁN¶Ÿ¡]ZF—öÞÉ,ÝX~ñ‚OŽó\ö‹âÊj}¬Ä÷¼4ͺ~yPÜÚI!ÿTFƱ‘‘ÍZFN¹ßˆíñ¶•ëø9Òó`tˆé'`¿’(<d…¦ GÈBiUUƒ¸…«¾m‹M'I*y¨]ˆÙPç÷‰aòDâÖ8š®-Ø@öCøõÚwž9u>h  ðkÌÄø9^Ö¥n;„4‚m?q]Ý\‚üÿà{M‡‘£ö%}a‰’Éë׈v`æéàÄ;d‹Èèá†{/w0ºô€h²TK¬AÇã°Ó“Õ¯uÎøÎÿôZCÀ—]›y”Wšð«=©I+2¬Y˜Ô¹ó*`mÈ-éUÞžÎܬKk;„#Ê‚*~ªÁãå;úôÕ‹&Õˆà_KÒúÃoØ:®=H1ßF2déÔÿg¬ldòÚ‚íIJ6ònú®ûÓbö6Ááñ”ç„›PiÇ:ÐiLNO+%p8¼wáhC”?Rò¿©’Ÿ^"§`Ï|ðéË׺ºÍöÂñGpé´=qù5Çm<1Òs¤Í'[õƒæ¶‚Éj±Tê ùZ‚KØ‘bº+šÒ¬7­ÀLrI¯£Ê`D¨'ïWðl†NÄ}Œ&'\«¢(aï~±®áÍæh ìwÏšûð‡X›% k6ÕqÄA‚ÊA@½õ.tWÁŠF¿*pUNËüƪôAO•¯Ú†/í²ï6>ãX^LÆô;„2 Âý{Eb÷µ_{7ú(SZÇtœÐ º+ª¨œØ‚é!"ƒÎ!TÅl饼A#äVðx×0‘XÆ gûÁØOØê6Ý!Ñz³aÕ›+*µ–?°ÍOã¿7‚x ž,õÐÀÝO\ÕÙ{XüOG¸¦­ñd³"½S ¡»÷ŽaYÔD5!ù0Îç¥fM-æ»R\Ó/++™®Bn‚õ÷å eÓ/þçø-Ö9@€"²EBÄ•X±+ÙlÊ´¹Xv`n¾‹W»Ö‡Ñ€®ã>\Ô6ê25?Q—`áÉ,š;·sírÙi° ×UH)ðòÿ5-,È×øho‹‡,‰f1GØxA‹lå‹ o»ßŸ×Bç0iB9f} ܧçƒ~)q%^m Æ8äc¡ö¬3m£ˆŽÔwL[×oÊÓ” s dnÍ®-&·ԹK©jؤYüL†‰Äȃ>X{ù–FõS®w:®;te‚;­EDP?rÿ¡¨z‘UD${Íe83<`ÅP»Áø(ö±éƤ¿ ¸ý¥øncsçd2ögABêù娘ð«q/äÔaJñ5ÄÓ+¹'L'£Ìfýšˆˆ%Ûlº O#&-,†ç{ò™ÕOÏ긋¹!DYry…Ñ­Š@ m®GMå<4½ûO|¨P|{Z„ZP0¢qýã½%4ô[À5…'tI~íŠktêxö•Ü^“ÃÓ°#Š9…Y¯"™@ ´ŽÂÞÌ_ÿdí’¡SÐ÷[ÀpNΕ[slW(éý:Œsñþ*¥àÛ‚Øc¸Û%×–%WêAM÷U‹(k•OkCŠŒ¶ÂúæC^6¦ðUŸª–åm] ‹w\ÿ>#!ä"]軺''Á¯¢©ÍsQ¨s'̳¾ý 3¥èìƒUǾ˜³ë™Ñ3T²%JŸ š¾Ì4 ¸äHDÊ©€ÛÁß§x¾XR ´¤%¡‚¨É[ ÇHXr|úáI,Dé*!(-[ÍãfÅŸº–ƒ@>Ãú8º1„|ì~C­„¢ † ŒÊgúÁ@ša«ãÎÖXáoà½!‘ÅZÔ]lÀyO _4^ûMfÀÂO|jÎÅ­Ÿ ðËÈŽãfÔ_ ø³‰Ùèõ,³ –ôG‡"I‚ñ§œ,HýÿC¬ ¹žr«¿ž¬™ØýK™¿läkÂ9Á¼`ˆ¡9·Gö5TT±yWy.tÁ_÷ÎÔ7ç_”ÖF¥ÂÐü¦[Ïî*¤û—RƒÞ+¶2Ì×TÆR¦ùb½4†püÑy>i£ÆK"ÞçÐhÄ‘’*³G.Ÿ4~¢¨H¾²ë¼”KËÂŒ9Ù"Rc5r¤ÚTo&å/iˆ1Ëêå6¾¢@ÑŽ•ˆ­ÜÑüH2²cb ¢Â‘+º$I­ò%£t”Ýtu––b5Þ¤e·}ýoµææeuý»ÊèZ/¨—ÔG’x£Ú¤Ø¶§»’aÀžIÚÁ›áXoR݇ù› R³Í¸:èƒ¹Ñ ýPCuQE²³æ*R60§é†…‚{ÅP 8g;ø´Ñ¤wڈߕ̋47?ïŽ4›¦q­4qîùlW8\ šuÙÜJd%MÏ]ñYhˆ™]ð̇"Q(­á¸Ï¸K`nÛöƒä'\´ºhl#+b‡øFõÕ\¹ÿuyØ Iv²PUðï“iP¡{Ò/[ÉÀófEQ htûwÞCÈüɨ”I&ù§ÞcÈ'.‚zik=WäÛÎ@áL ¨mL7¨#ø]º¸r&¼ƒm+9NRENß-’…Íæ\0/L?>ÍÇŸ«‡WœßíËæe6uà ÛEMVÀ?ŠÍ@ô:þ︲2•O³úu6:ùÜ…Ö˜ Ë”c®`ùòôX3—Iß8ïÅŸ l¿ @÷°yj^«.Ã<Þd×¼s#¤Ó 5bôY] ”EÝ%<¥!zÃøŸOk¹áÞê38j…C}íœH¥H/ª'Þì4ÂËv¨Àa:-0OÊCMämAªØ¼L¦Å=C.îUPèxþ[ÞãÊ»¶»·PŽ#ð¿}—å_åϨ¾¶ A? l=…ØW†}lÔŒ Ó1ò£úõ°º™ÊSS¸LÆf– UâÑæó}v;0)u~#õ>xæ$Á„Xj©ç¸TYãûH¾,È+îÃMt™²ób­ÜäÁo0 ;·–‚:×dÐa·ï™0i"}Aê!`¯_éûø¾>‚j3J Õ¤O³«ï Çdž‘ñ€•È»®cA}(IÁÝPåf$£ÜÛŒ6ˆ*Äi…p][<Ä‘äætš¼ÇjŒ–‘UâùPËþ“>ÍÇ£å̹ë Ái$“Ñèƒñ3·…œæ| ³úûšhÞmÅÄ ~Ìß}¯¯Õ>›^ÍG–¿U Y)õrìoáýŸ¶kžëm쎸›íذ:·"ƒ¸ßÚ¹ÊÃ}3šç!/6ã­ÏŸø{…®Uw@› Nã”!<ÐeÝl…F/,Õ¸s‡D­ÒÈ„>üsôÌnl¯Gî{à”_ÝÂëû!)·Ô÷ËcQš[9üTÉÀ¯FjF¹ÄCðé7ΡV±ÄV¼ïp=ÉP~RbTy± ZpSRDÄÏM냈ãž>Km×DäÂKƒ¦0‘f·²š!4D÷ãC®*­kÂ3°i£jÆV⼜ÐN“/»R6‚{ J[ý3qú¶& ã?Ý,šÂ±½·±\+LU‹NLû“Z•dÕEÄß%Ô5Æ)nÝ2©ÒÂõ{Ã…7†À„L¹°*J³Æ”áš;wÜ£”[F?4vñŠÁi%©)Tó+Ã@ñgÌR×hín(+í6•÷U›Ú a†ó¦%04­{‘0$R³“ 'ý­H¡åŸ`ç“ÓñjO‡b-åôÅ­<` *¦qòôÄ•/;àㇹòs¹X¿µ§C¬ƒp«¢a‘³¬( n†:”QÊA½AAgOI¶žuÍd;DÁBtÀ•¨çŸPjx:Á)2Ï |ÓêÀr¦×3w. &ROÆDy4ïˆu¸ÏÀ©-RñbÑZ23HS醯d I ìíâÒ®ôZÐà2½™aØï=‰C õ®_š—gµulÔZ$·×÷!&5ü~# E¦æ!óÂh˜Á&òÝu”…Žq×4; ¬òp¯È‚û·Áè©Æñ$u÷“áÿOã¨+nBöñ•4T꣛3÷kº÷¹òPHGJuÔ};ÃöbÐ,ÇBo|”Rïø"þÄ.f¸o¦:ÐíË–˜µOÁ^ÌŸ(—%¯Ê$mæƒc´ñý‚ßµU«±ŽÇÄJŒ®ð„°ò¬¸(ÄŽ·M}"›>Y§>s|„Å!¿ý§VVº~dþûliGh<††±·ïVÕz\o£ß}ƒmç•-ú½˜#r_©YLFÀÞ{F±lcBÛw‹M&’G潓*ÞË}#Puèäã,Ú ×]´Ò°à”zæ{Lü±¬._Óᓾ¹=ÞâZÎ5¥ÔfÔñ¼ÜŸÛºù9ÖŰýùÐ11q³ˆ…ˆÿšvßžÔÞf“Îé,µü¿ÒC¸È9D¹Þž7åŸbšÐÔZ éûã›!ª<¢,8Ÿ=ïŒ2ä'aš®7m†"Æþð”¢Ý…?胭0‡ÒèsW&D¬Í=i9|sÈÖ¾à”yjN‚ü#ÒÑkŸ] TèÁyÊ RL½ÃË| & ÆY›hq·|ì€x{æ_‚H. ”oŽ‹§:A!ˆ/­€ú±x_sšXÙ„½›Ì3’¥?-U ±‰æ{oqIJOLj]|7âÔ›¿2q6(ô|†yƒ³&(·ýS˪ŒkŒf´ñ/’þnc“ +rÅ3‹«¼¢Á>"”ý˜Å)ÊÁP”nw^Ü}K•ð#©nž« Q™£-ìž®Ø`XœÌéÈôô–íÈ«þÀN©¿9§Š+ÖõžÎÊ O®Â‡xøûã¢G§–Ë&8>¶ÀÿnlÕÜ“·® WìÖ—ôO ½~ÊU Ç¿cK@vÓ«¬ñÿ'"Ætg›ŽO ÚÊ//i!ÿ‡Æ~…KThG|C¹[ùÆÚM@çJüt1éó+LÐê{¿è„¡çT‰Œ¯—ö8NL§DA;œ,žsE}ëk“Òqc¼YØ+DsÄ™ºn Mß™ð)U%ðê„n|[Ÿ& ¡`s,¼¯æ*„Ç,˜ô_ÌmBJ«‹ËÁã%6Êl]Ì<ÿ:À5Ÿ0ñ^ßX²ˆZ`‘3%4(ÂÆÒXàuâ)O+~·üFhK§¿¬›yzQ†„âžrð£³â9µ õ9=‹j¶¡MÏM%Qö‚]ÞüjžÆé¿è ¼*­ñD꤃çLÿ_ë,Y½]c­æuùÕ+Ú~™7î :Šdž“(÷ÅÄ‹qëŽ.ÃÛ¼ÉEϤæÈ‰¸Ôî÷uÄ|uèøÓØ•¯1XÙ/´ø®‡•ˆjÁmÞž¨–›vñ£´®)rŽ?®d QȾp|B]”{uŸêìÙ?žÛžÎ;šÎ+ E—ôÜö°ã£>Y•Öf¥ØÎjE¿8 „„á³ Öƒa/¤Ôqve—~$¼“ Ëóf±QÃXIqO80U°Ê:IŸ©IÉ%ýÊ·sƒEU` ì4™iÍ#õ¶—¡Ñ $¦^[ÅÉû±¥wdB§yõ¥p(¸Ks# ù1‹<éxëp"c‡m§]:ܰG«ßå,«‰’;ú¨»Jæ?4»Zϸ¬‰ôŸÖúåˆè€zLB­w s<#´£$*Ó Égþ”J©bÆ'Žü}~”ÉC‹ '[Mlũ߂˜ÒÕùI²Ž0Êrƒ-¯wÔË «Æ* DWò3Á¶Éô߉Km÷ÏäïÛ‹Ê…=Y˜Ñ“ÈA3+”‡ŒPk´&AŠª¡‰ šöš0Uc†4”Å0f6ô›ô…<¤sô7j[FÃÅßéÞ  V‹åéÙ¥„¥h” H¹LbõÉñÊZÄô]å N¾Q˜wÌ,…­öVã<ÁR‚m ö#tÁiÃáqùĹ.Ó»H¶A 7mFÊÈ‘ Î=š.]bSîÿ%Ý;ÀA?‚ãÊâ5 éÍ­µÓÄBÉ!nøe2 ²¥j4*FˆíF–T”<'üð'Å?j‡*J¹ ]vΩ1—Õ"–ò§æ•XH¾SÅ„áŸR@ªrñfÕÌf¥FVó»‚&EIÌô™¢eº]¶“| î‰GyÒÈî­ÙKÔ=¨Ç« Fý€ÁÚÙ6á¬å+¶cPÕ‰vO »·ÇsƒÒa(†”Öÿ}E]À†ì•tñù‚£ž-»°dœ…ØÏuý°²P³Ü6Óüšhú/Ú4‡,¡`1¯r÷¼µYœa9+w¯p¾äZÖ£'5½$õ¡üecš—­nì$ÙD‘SpKKÚEd–)–íÛ\®ÿKðІk÷R̾Ç©Žå×å¤Qú\_A¬ç=Wšjv]­ ß\ûÓw)ÜÖÝŸ`¼UÔ2ËÖ7Žæ›î?éØ$f¥0´–}P žq ®×è÷ÕX#äÉ¥¢I;"œf.3ˆcõ1Ð#‰JjÀÅÕë~ÆDþ }Ë‘^«{ÊËæ¤QJŽâõ N¥F¡éÐ\nú˧%=y¶j¬¨¦Rs-9õÍM#^µfι»+•…ΜTÁêó«lÿãŸèYî[IÍ)†Éõá·Ú6,¡D]ÈêÂlŠD;³…¨gtÒàîàVä=߉NCÜüæå)A©^”øšËnÅàÆµDxƒa•ÚÑ c.Xî‰~ßµ}ùæ!Y=H‡œÇj{ò`%qˆ€c›CÕæ¢°ØXËçŽn_s©ª¶¦kžq±Ÿ>)ÃÒs¦ê™2ÛRà=x¶ÀhÇ4®!>“«ì‚!ÕI‘ÎØOàZŸˆQÔÿx&¿õë¿~hPó·¿ÄËQ‡ÄPÉØNt]ì7°e(¹(_«„›å O˜ÁOµ@F’PñŒù%Æh`«ÜÎjÓZ‰Æ|º6$ ðŠuÖqo„©²=ˆ¢øb讹dÍÐЈ.`nƒ[ÃÍ*£½G¿dIæð’½"àÁ ]¦&²(Éy]â6oLðPÊJ]Ûÿ‰nn¼z65 ´ž \x~Áϸ HÀ[ÅÉŠé“úëi°¢Óó4÷‡»(hzF~ï½üß¡·èÿ{‡¡/ƒG)|>EûÆšŠsÝ÷')EóW‘œúkye´(«ÄŽÔ‡¬°4wYP¥MÌ`M:´™þICÁ÷-ÅÁtP£ƒAêLɈeêÀâÂû¼?Y ÏÝ^qxË¡Sê*&ä`QðÌs Ä…rY¶¼q;Ú ‰³ËKÀ‹õO(!iýAœEŠ .ÐIÅ…ôb'¿ß?ºÂÄ& ÂY…MKÂ?¸–cá1Þc[ÆGò^˜%?‚”ˆV†D¾ ª \ó"nAÎ%5üc5Døj'©¹bS[s ŸŸ•j¼¬?YWµæ/ŽÒ už»”r;ÔÞ™Ñ9*yù³EnùPpÀÃãªÕœâ<¥‘ò¼&ÆÝ|¹ÚC5¯9ã¤[Êp=Jzƒ§&„¥ijßiv7tˆ`U-³BùÏwäa¼š&¥zDÿ˯èþ¬ 3É~E@´u›ÓSdô*ú*í¡]Hý<™=,Øx É`&/YcÈæ¼q¥™ùŠ>2 Žœ$p®IÇ—Æhâò‘£È`ðoâ¯EË£ˆRÆB^;.E{8¬A¢‰0ˆzôæ}ã4…+¯EfàÎO .”7 x«'±3zQvm7v»•*Œ*ßÖµZ,Qm2^ ùu”øe†íäajEkÔd®v‘ÐÁÀ×=T!>`”„n'KE扺,¼ú nU³Àó¸çÆã+´\ã*þ•G'°´Å‚9Dް޼Œ\Ä5ŧ_¿¼S·]°´Áº&'ÃÙ‚à =K•h•qMñy²ÏÚŠjÀ³ìÄ[ÅP°Ë]ÑP;ñ?tñoÖÊfÓ¦ùk_Á¨Gñ³®q»u¹öë‘-9S\j6E{lˆ‹ŠK²$Wó˜à”ó>mèJÀ[h7ç<¹ò@GQ­¦>!Bk8­µ‰Ñ4z-€ ÜŒövê^Uïæ ‡[ÇE{2 ö»(,ª6)Þî$ÉÂXꀨAH$M´Ê—ÓŒ¤¢öT.HÞb<™#ÙøwŸëO ¡é²€ ;›¶ó5¦¤¡ß¢3?jõ4áæ °.÷•qâ—À•t½É¶öÆÙ9."\¡Þ ºh=Äý0áÑå Ì΋_P3MÈêòc¬kÁ nT&ˆòîDæ¾9ïÏ}øµ„NÆÂ>˜¶ Å>ÌŸ P¹=ò”X½qJ5Ò$m“id{qlÁ+¾ iÇØBû’“¸’„¸î±²Kc,.RÒ8 ¾kë½x'(gÔX¡o{=hÕNFñìáµ4|i!aøòJÁØéê +wE³Óœ/ kÛDTµÉÑwÙX@Q ‘f+äî\w¯È$6æK¦bóÈËí¡ƒ² [Œÿg/ÉTÞ×tÍZX®!¶ÂîÈvQQIJ@øíЇTXàѸmÿ8Ë ¢]‡3·½ô{CúárRœŸÆîYA]Ÿ*®Ï=Í4OKg?å]9&;øÂ.‰i(Ú*lXa6‘GÎy+;ûäBnŒ–Aõ7øtL˜`7šÇ˜2ë>'¯ÞY$µ¸íTÍvÄÀd6Ž$5s„ì"' HT1òlD­È ñ?)d® †¢1^j»7^n÷,ìlt¡Z’¡S·lò°[+% ½-n×\ðÒ©cÑÔˆ´0Ü!Ío†Ó¯ˆ†N[D'zjåiÚ)ØD&© D!`;€VüÑ¿·°FžñìÑó¯r!oÊ8ÆÓ' ‰J¯“Š;aÜ.dÉüµýšŠû±ªÆ&¼¾2ù{ºW³ê 㯯àU¹m X#ÔìÞ)Fm³õE<¯o{y² 5@âT›®/¤ï…X²²9ËóqÍmÆûÖí¼Sï“”mƒ)caA 7ĆÊì0yð×E]£?`Í Á¿zŽ,ü@OÓÙ(ä¹a ·ƒ¹ÿûß=‚róŠX´{Ôo»@ÕG=']ƒB¢þªæ‰×kºš‰²·3núG> I\¹È5$ÿ̱­ôkÑ€'¸c;¨½]ž+¹{h«1¯8¡;4NtªhÉ:}ƒLC‚NÔ}\å8MÛ9”¢‡qñïF¢}—·òGMW—·³4iìÂó1ý[ !LJ4ɆâØIåñÄ¼È b¯˜šJPälccXáuk)‰ók~ÄCƒÄj±L#vÜÈráþ¾s‹Ÿ 2ý·½ “T‘Jy3m¥G!ªÚZ|¿Á®¬…YœÕAÉGpÀÝa÷dÄ*eÕs¹ít ^"ÊØ áÚ ÙQcylèHLl ;4üè~ßcDÆ8¨‡ˆ™­YZI;oÈäÍjLœ}n4p;CüÊŸE½p¼¼Ìü=œÆuw—ÜbÜ‘‚Aë®\žÏÀ/©h¯B@Cæô 5i Éü¯$M ÀÊAàW.Û4Φz*¨@j%ñì kY¢nÑcð_Q¾oºÙ§‹È.GŽ„ïæðUø¨Ÿ8bÕáÝ(s‚¿Âãi;ô¤=‡å›ûT}5ãQ8Ýj—q›’W®aôªÜe̬ »–ðcøë‚ø\…àO­yúA»ƒ8JjOšª1$ÌK ¹uÞ·æó”Χ×ï£í–{0TP›™0­Û{Í[§ª2>¯¶Ã²;‡-ËrÆ#w:¸Èd’˜ì&@Ä«E›¡y÷Ñå4Œ(ÏÖy:k?`\!´òd ÛÁS<ŒÄ¨ð“ÞQw‹zÚlWÉÈfÐu´pÂÔµu|ù!êØ´Û®›ç:1€ȤAµ9í[t "Ћmx”Ã|w:S¯jüŽÝ[ ÓGÀòæR°ëŽÚ@š¦ÿ£? >:˜´xa‡öˆNhEºè­óä•bCôÕÙÒ-ÌðÊj¢®ãˆœ̨B«=àá‚Ü W/\~A¹u±Ì`ḄÖ=Ñ #ål·0·›mcð¬ŸàêýQÒɼ;o )ªgç¼3 oÝš°*ᲄ ©ƒñÁµê¾\Ž1hQÍŸ‘p‡*n^=šV×n¸»ie& e)èÌpQÓ²’ŽQ<ŒS™ú6ŠUH0÷eat`´lãc´qdœ¦’fTnuñªá±ÛC<ð;Þ­ÂAÅ…„õqXD’«rH¶‰tA5— é fÇ™"p‚,)¹–§É[D²³ø›ù>Ë»»B‰^w:_FÃÅݎ쨌²»²}tó‰:û#‡%qŽ3ʦc<ÊöŽ ÉTrSS+•晆îîôÆá.çZQ”sIóX÷är'ù;2.ñ9‹H®µÚLÔBÓ;úñ÷×wk—n—Kø½|ןM¸ßìœì­0¦í*Ø Ì[…+)"¡ÿⶬÛÞSû3\ eÓ`¶ªÒšz”£ŽÙUGGçY²¼¼Pé_é¡òûœg“þú/wÕî‚t2qÀ 3HÞ@|¡Õ‘«5‡‡²R’ÿ—yiîœT5Øžj~ÊÀÊÝsnKÍôyµ0(à ø|Ç@t^½òýŒŠÞ‡¦<„4¯ÑyTm ‹Â_¶Júùó<×ãüH±ô8øêÖÄjö“<¬oqÔ¬Ö-æ‡Àò½çÏÁÎFš€©Ï +Ùüí:XvÖV½³Ô%ºšHƒF Ê_¬·®6»¾‚øÁÈõ/ ×2èA{óU Jgþ1F6ò¢òƒ‹~%…IèÃÔ„´õKvõÑÉÈãÜ€-L>Jµ+„ •-ƒp“ÎshX‡iÀ:`$Á,…,¬îÝÄïžÍ~ä"Í{„Y}ÝBÀÜÜð_ÿ¸`رJï¦R¥âqº[LI ~ªß¥«Þ …Ô{L@WçˆóÂ#Q]Gó$´×<Œ£«œ9Ò!¬2 Âìºc1;ß8Æ W*/̵ÞÝAÊø5úKáê¡-dþñU¬¯ ¡Í…ÀzVæ3È»;æµò`"{ž@Üà\Ü[Š ¿†­Í•\PoOmTøÂ5j˜RÅm(±ÎÙc$vƒuX0)ï¹gò©sü3Ødå)mÙ„øl8Á+IÄyN8ìù•ÛM£úDq4|tœÎä5CL†{µ.Gã#±^”BqŒê÷ªnÙ}¤Ë.=¸š×¯Fj€åõdÛ˜}8ãu…1O~Só͇»ßIŠÅ pXI8¨ÐôQ#"rgþ¸¥ q³¨Á‚þoW&^w²oõùóæaGãTà`^•,w2‹OxcŠô¤—~òz›†Ð@GÚCT!œ7TÔrÊñ¦tY#pÀÈ}¨¯–ÖÒgeý¸×zEôÖâ²DáJ8*á-~ _9¥F a±ÓT4‚mÝ© ¶Gæ…ZŽ.½iQSˆ¡³£µ+eäc§¢rþˆû97zX¢Á·RçU^‡é± „cªÞyóíµ8K6²-‹Ø^»ô7=.ùô×1|ežÐQÒªFÜÙÄ}÷@«XHÊ©µ³vøŸHé(‘ò 3CÓ3¤Ç(‘Œ ÆÅgáæ‹›Ò%mïêq¬îòoT1Ô¡Ú»qõŸRì/VuâËO¼§9,èýe ¸[¬×$%aV´ìÚÌ…†ÚÙë*¸.Øé÷ìÑÀ1žIïûÝÆi3Óôb4©éó4ˆ.`e0sm;åÝâ'€,d·eþ‹„àì¡r‡61#ˆå´Ñ™7Bê¤Z’k{ûÖÈç,R¬YÜöÍ©öv#£Š¡»”DXÒr?«÷NÀõ]ÒŽYæ—ûq ‡ùœ /kÊG{Å,|á;曯ý˜Zù/DoJpÆec.QNª½É©e3l¾JY»ûýÎ3©Oã4E <*•?Áè³Ù‡÷^÷J\Æ_^1IÒ {uV`Þ?ߘm*=çÙ2š7Vl+h= 'ñôõ+´Qùñ=Ò¨Î=Ï©ý×Uçù5>Î%"C4âÕòúG“}ñ0-K?À¯•9þ6ä¢ÜÌ~jfßd¦äÉJŠÁßAX³|€C¶×¦ÂÈ•ðá‘iy4VýËß{ª¡s/K¤RLXp•Rˆ¹2}Œì˜D—T_”ºû¼qk‰ pÀÛ˜+Ý!¢Û"22¸˜Ýe"rÖÇwÛ#2 ¾‹¦–†Y~çžÝÄAá©ÂfÒ-ͨ fbÿ‰+’Ö­Í¿OU×wYLwÑk9Qo°5Z|×GÅf±fT¡qLùÐU %S¤2¿ñ»7ì¨7vÝHYz»S¡o®"“É ¤$A¤…Þ¨b…†ÁØR–íæÊ²Þõq6ª.ó>¼s f¯%Ön×Wkø>0t¡h&ü<[Ǫä ç–×|Lý„™Ì Æ×ç[pòüí;%Ï{ ß2²éÁñ$ ,ÿûaƒ´ë–xÌq$s{=ÒäRB…Gú•3R¤|ÿY3쟰{¯~ݾeüO;»GC«x{˜éÛùVþsꙘ٦ÿäç ¨.†ûÑN˜Ô{¯Óœù¢ Ò[lzd¢ŸjÙx÷9ÝŽõ?¿”d“E"iÊÆ£-âb´])^¸î‚¦½ž·øýt…¾c"–î-F`P{XÕWõ ŒÿZYŽ8qTãÕÛ~¤(_Çlùù‚"1Àp“ïü$Ïê0 |DAÖ½4|!DœÒÉáYÖÏt¯>Il•w[ã„ ì"°ñŒáɪBÉ-B:>\gf&Õ1T2‚†Ö[!uixÇ;ÆÄ[ëÚßßà⇠¬ç½RÓ†ùw:.7mÊªÕØnf*Iq°£ ÎÅt0ïb\úÈv¿<ÒÜF-Jú³RéÇAÌûóNÞœ£å©/ü}=£"˜ŸjT4ò‘‡'p•¼}H䜊`ó¶_Zð.7ÈÂ3ßÁÐyƒÜ9ªùò^œ‚ókËøC¨}¼ ʲ]m‚åjO0Iˆl³úÚ¸—ž I¿­ë²»Ë—çÅ ë ¥ö×À"ö“\kœ£aþÌÙ½1/˜ÈŽLînÉÄt0€¦W—ZœëDÞÂi Œ¾B›n–Òæè¥øEI±(ªÅÕ¯®|)'+c&5B{"ìøµ•Ü;P%h¢Å|4,A+E!¬mYýCG¹çšµž&È<÷’Q¿m‹©·äÊ=Z$y…gÒ§E2™˜Ù Áƒb07‡-2OK¯âs¸ÈöXËÂËÿ*³s7&4:Ú¥[Ë&„Q$~Fî ´}(éÈÉá{¾öúâĸÿÆâz3qâ6!*³£»z[¦1Àlc”׎ø§Õ—ß4Û€âšk·XŒ-\¼a&y9¬kxîËM†HŽq¥sy>Z U=5%KXjPµ¢€É¼@ø.t^ñœx%ÊôžUw'I9B6±¾Ó¥?˜AÆk_M¼§ôi­9Ž Äs„°K9r»C’»é‡dÚð¢ïÍ>IGIh§€\íPÂ_Ti¯…[m¾D¸Y4F@Nw]³º‹ZŠÛ§â$¼Yé³Ï ó¿:ÎA`ð}žåj L4ÂêŒàãjÏSO¬×%çÁKIoQó³mÓ§xìDXT»Íس.]L‰5f+“ ¹RÆs8ª]  YÏ´õK}£³YP”õÉâ{!Y£×É»Ê ¯M#55å‹Ôc¤ÑþÇul·=zª+˜­uÜ8™º}áý¡ç~@d×üy®½¿À0[,-â)ÐAÞí/eÛ^’|?†‰}yÛ¡Œ½Î*}Á¯BÿïݤöyçnDûֆÂÂ(w!Fì^§ôaÿZ:9­A>B/-» °ò¶²×!¾Ü56ï5ÒITñÉÜÖužI <ƒÃVIJu˜£há‘ —Áäø8AeØE¶»þfµµ7Rp“{ôC؈Ã_“0ï±kʧҺP0Á»#„¤ò.®ä×¢_¤“¡Ó ×\JFäöy{y5’ÆÂÒj¼þz>¯ô)Þ.†˜eõŠ"0»¸í†P'^ãÓ# Ä'fï;'D72ïl}tGTUÑO1‘CCÀh™iWuòÂT Ø’f© n| ozȤ 'à|<¼Æ{¹Î×Á'`«ùn(} wž¤S=JàqV< ÷rb§°ý¶0yÅZ’é»D—[ýHn.EréÏ\TÌÀ8¼h^ÿ%ËÖ˜­%Y ÃTNгæ}½îY¤š–×”z %“!eWÞ’N¤û¯¤ïL7[H‡B–‹+j©ÿšñ·ý "­:õ:—û¦û4ˆ3w´X»:DŒE¶@ä õdnùJ²y$šÞW.]óÜÚ£eâXåïÎ8œÒw¤P¨ŠêŒo&Ü·U çX×Ai4L°ž„W˜ÚǬW•ýŒÚ:C™«Gzí71‘È÷Ïh^ÙLò¥—ó\lŠV‹Ôóäq<Ý´v¥Ï¼9?Õ×ô';?ëȃ„îú]`«F‘˜rÔ˜Æ ¡äŒ2>ý2 ˜?l86wi{=º™íJd Ì7«ÖŸ…ß^7¨êN ­‹R&¤h{®+Æ•¬ˆ×Ì9ë>8y>ãqÓc YÜ Ë‚iy&¥5tÄìM,²1Œ Ô‰jÆÀ_)úÌ/qÞ”Þ—rtoÜoƒ±nyk©iܹAÿõ˜/Ä’ÀU 6::ähcŸÒ“Ä莮OäöK´PÎoH„¾1$êö&8DÔæ²lQûc–œãÁ Õ—…‡‰6ÿµŸÕVXç6ÁÏs´˜¦Ó ¡†ù‚§V(`$êò7Ž —S¥ûÛ¼0T&¨J ìN`þ×"ÀƒÌée­IY¬£¨Œd³ç'ñ#´h;•IÄb‚EÞYMßñf(F>ÌÄanp’ÎìÇ¥ªTnùÏ_{É¢R@Ê‚˜ÅÑÈ ¥¬ŽE³Y  pz¢£^Rȇ¬~& Ô\Äš`OÖ!4HÛk‘ôž‘hB¾?…[¯„§X(¤ÄÝFWåäöDaþŒeÕLoô0´ôvxÇÉ"ŽN>NŒ&6Iþ÷™§øóÂO×ÊNŠ ›_ÖM)¹ŒȬ5·Ç&ê¯øÀ,;q ÒµÙâ¤7­Ô ¾X|v;­ ÌÙª¡ë^ 1XÑ4¬Ä;Sœ#+l„9®Sòø· 9Á²I÷@5þÃoâ\!8vG½Hu1ޤ{H ”DßJùÈowqëËsU-áõaºŸZUlÈ‚6÷Œ#U[Á“Œ# ®ìlìg}LeÕS_ù·rªÆ<¼—$h‘ÙSCTA_‹¶)ÂÙè °K$iŒqEÆ(W^\[-k@3W0øˆÇgªäÎPr­°~·=jê;LnáQ&í^*ÿ1sûÔŽhÂâíDš_qëe%—À »ÁÂõ}«{ê'_§»Ã’pLÆa$èíœKð§iuæ˜]õ%* ß¶Í[³š8 ³œkŒÑGA’á˜V]NÅäÃyÇÊ _iµš•M+ ÃÆJà„µñA%;›óë «èb8X»õÈM_Yaºßí›åR0“fu«Od*$:G³§=²Êz½î´Loäâ3îÍÈåmo5Èþ¼suD[ÿzôu¯®x#߃Jðú³¿ñÛC\ÜHAºZT¼€ç'bU½úÅÿZ|L§ðåh&Ü&;f¸*ø*-‘{àNî…L¤–Í Oÿ1–éž4KJ¼JœuI]RaìfA„pŽ‚o¢%áSõ3ñ©á»ÁœàEšƒâ-…þxÌNÇV/Õ½­Ù™§ “!À¨Œ5¿£ˆNã?¨M‰0ÏÝ„1ÓŸN)ÿˆÓ´AV ÖªNýÔòfq¬¢ˆnYIeôg—Dìñcã]4¦êgi`–W¤SÉùË—É€z¬Ý‘W<Èp-pʹl·t8¹Äh#¤PÅ=£a®éæ4Ñ# aôô +ì1”•êlW3¢4Æžž«5:è”j´ÄlaLu¬‹)J†/`P#³jÿ™‘n“ÅðÜõ¯S?¼Ð“IEˆ]Ÿ‚õ`¹-’3s!/Úê ¡VLnOrÄ…ú£î¨éèjûÅßä=œéJ™wR>”3#.‡\0ª?“²M^ƒÓs ÏÎoBQÀ„†ûªì¥®qà»[LdEXø>M¾y£.¸¤¬$â]³Ø-—ÀD­yhŽ}è<ˆ(IT¡»ÄßÕ„{#ì‚SÇìcŸmÐáÌ©…­"¨xøœÐHE›\ÉùD*Ξ@´SdiE·ÅÇnª šÖ/åÎ*ʈßÎâ™T8Þ ;Ü&¸° cg6…-I€\IŠR¾{Ó$mûkY†'<%Ö}”«—)¤¹©æà/V«ÍJ¤Î±:˜&ã­«’‚˜W12úÜ™kïÜ'+Å‘4Wß÷-·7¶êW¹oJïpûˆäÌÇ´ã€"!á‚Kå.Ï ?Qß Ûfû4ÊS@]ë‚-2:BŠæ™×& ¯ì¾®ˆâfJA)£’•¬Aybd«¯^*ñ zÊ2©LóÕO¨-¿½¼0·T«õÇciHU³Ýæo¯ÙTÒ,ôu•ð.¦DùZõzƒàˆÆç›ÊSbñÕÊU`­Î”(^i×Z'Õ­,óMøþÉ|QË])ÿ3t¨ çX •ébԤ׮Aÿ™?Dm`€Ñ°éÊ[õhx Áüäuy/¤SZ¡û\(Q(=;ÂÉ87±ìížÀVèý¼7¾=q §²ó*NJ>P² I+KF0vªNf1B~ Ò¢ qó> rOqš3"Ô÷h5ÇS6ÃÓÎÛÐÌ`\Çmž°Fr nïi1 yqÑ ®µâ0[oÉ–µÿ¨,Ú—×§Ë“¬çQw$Àgo>ÅEîÖ‡wP—¾–¬N]iñ¼1(ˆvï-ä"™z0‘˜w»Š' 5u½æ»4±´ðÔsÜ3‚fO>ýŠì¦Âþrp°ÈE˜´`#?¤”w:ÿ¶‚„ñ”Å[‘E3Ý'¼»z"œMuçTR£³Lkä´ßÖ æÛ«niÜLc©c.®¾ö{Üž×ͧ÷Èõ’¢ÎœÚî·_lšÂsEq ¬dé9WÖA!ò¤»þ((ÅûÐØ°"´†»Ì{‰Àn)tZ7–µè'»àæz·bˆa Ù%ûÄm5_XM[—$ÐÝ­¡+IÚ¬\§ü;W6ÅòKÒã<¾§m[68“—ÀñHÙ’í³ÊJbúňȖYÔió&_±,›îÿtËÜm{¨qÐ(ðø^?,ÎgZ'ñÝñÔšQ.¿‘ÚvC dÔ¯Ò_脲ŽQŒ¬ã>D0Ÿa„I|HH£û×ÿÀãÒžÝÓ©š¿Œxó×·7¿:ïÒ;MÅq‘‚ô+Ê&†”Á H³\ ë Ò†¥F§ao¹ -‘POƒÉÂÓUr;7Tz¢ $Ý#ñÔ‘NçIö5ñ]wÙfZ6;¯@t õV¦ V2&:1I ˜FBð;^ª4zá€VœõÊ0Š6YêǾɲG69ŒAA“ˆ?ÚÒè²Ò¹ÓæÙá)F²ž¡‰‹€k'ã®JÔ?¯ÃVÖŽý¥.­Zýy!høw'p3“Ú¼K|Š ØÀuÌÆk ø/±®äòŠÊËDmi*S ¤Ÿd¬«òyÒ§˜9§Å3âWjûvJZœŽsÄHrïõ8»`õ­†Ù½E'Tj¥Áãäõ#ýj)™ƒÆ­­2–f"÷Ù¶u|ÇåÉ—–€èE)I‹Üc÷ÿ_ã–é±wŽ/jú…tãë|¢#+ õ³Ž×ÎÓÕǶhHy7·ê3æ'7u*¾­Â““±ŒM&À] uбÂCx9r¹çá"õ÷{ùzºù”Ç·ey®Å)…ì8¬Œìù«ÅýâÀ¶ Îß| # ¾ƒø®–à>›…® zºöî„oxïh ±ÇÛI'ÒØ¹ÿ’&½v~N4â)…¿KÖÁ‰Òo? _ò{gáš‚½#sã¬ØÚoÈ€ß ¦ríL*©òï•zzÿe°ÈÄËé#Ñö£·10×ÌgË{û…ÂjÇ: n3…Ê©tpêá AÕ-оŽy˜î'ÀêŸÕiÆãˆaž­œâ:éSq(tlS«p®iv‘È[0& ƒº…J«hNÁ©¨¾ýÆcMšŒôBš¨ãšTâVM(Ý…qóåчyàBI!’^w!!ž^¨Ig†¦å "ò¬ºÜØC3Rš± ›Y(¦,ƒ4Ú<©6é8¶tê} ðÁر땸3ÿŠ'Ô:û±`¿J*ïA ÖºBsÀú#šzÍdúâUÉ›#|5Q#Ïúâ$¨“£!Ù¥7 *† mô¥çÊÖôá€ÕÙ…&û7Œ‘‰!È·ÿTSdi™És€!3ºüjk±vT5Çóò“†è¹ç›“Ð £n>| öŸ™§ €”ø¹þoÈöÖ}EÅ{;ô誕º(_­EœÓ˜I( ¸U~¼qëë™é¦ºþíjÊ„%Þªâ˜%âÆr-Ñ81ž*ùÃÓ«w¥Òâ&ß8(‡ ;lÛz@‘®A òÀH 6¤”c¾àô† >LŽù¯S'†ÚRº¡þöÍ}‘—šÊ4•¨ð—Á²Á$žu®xÚ`-½\ù,׫»ãC• ŽÖ EÔ‘Rh¯ô“c¶è GùÖk¨ î[U|lSðIO)ŒO¶áâÝu“JóÍ7(å7Ðì\Î竦LiË B ±µÏ†bãqbºeÓËÑÏaH´°–ø¦•ZÙÙ³µÐ?TrCðƃrS»"KIÅ}Só_%›h5~ï(ÊHgÙHgËÇHØéÑûY$~'y=è (g†íÏîˆaƒøøCô2p1Ëh¸‡&Ó¤ e¢É¤²­rÉ´uáÞG]~ü†iËTš¤Å^Áüx:Ä*lüƒ“×·Å㫲§=æ´½ŸÂ>¥ Щ€²˜ûDôòl¸œ±4ö†)§„Ž…½©Â5úíí§«¿‘TšW (+$UIQQ‘{M£ª}þh’»¨¢¡Y©¦'‚ÖRs.ò=hd€”†?ª–í( x.—ï£jß´MÌåÀˆ†°6Ïö†Ç©]Ÿí£iõéWòQŸ:õ4r„‚ÞBÁF™#p³Ú*I7ë!¼*TAÔ ²L+kÅ.Ïp¯œ$##ö"¼!‹é!Œo^5z,ÎÍ“½$óÿdlâð£s´¶DÊÞüqEO¤6)…ÕÈÞ$¨ A*לƒ• ž%ƒ¼£œä´I?oœˆ«ÏÎ²ÙæÆQ$•zÕx gÉFÿ"ïBõL£ˆ4_”ö^X{÷ª•V6˜XwÒÁ%hŸ¸maªPÅÉ™V”­©Õ·tÛ³¡ &0$u¤°9²è òÔÎËE Ø Ç¯ë “…Ê!©*àæ¬ë?7«^tFtŽ .}«¾@ž©P€² µONÅV` A2¸“¡¸xÙÚ5~™ˆw@–‡†c÷ -­ÂZ2|CÙ¯¡X¼eÎJÙ1Jè©P~àÌÀûx5ów>CL ’Ò)ï@ Y´2m"ú¬âg;Å{§ù3`ك׶-žÀÀ^ƬCï—%AAÏ¡QjL×HÃ¥;ˆ^ǘLœúg[Ž~Z0‰sæH×_˽ 2Q3*ò¬ùÙÜò2_±Ÿû¤,wT¯Y2W¦)p¤Ù¦ [;6 ÀÈ£2F¼O»è&çé”O£úy™u] ³º¢½4t¯bÿ*TÓb㚬nß>…F7'ʼNZ¹¯ =T1üKõ“ª´F5@<…Ø K°öŠÿ'ýHùm@{ÚkI´P°üØ UÅ…âÙ„ÐUM&)ØWÁÙ" ©¨–t(·ç§yßt{:âXÿЖìLødLŸö¥g* ½u0¨`Áµ®üüÊä@ÑÆûôS[Úï;‚ß°ãa)"2ð\Kì6yãè|y 7WŸ•‰¾†m:_B%y¤ôʨXpxfõÍüìÌÍÌ4DDÃ0‚æ©·~Ü|7ÿž£µ‡±‡GïxenϹŸž” âljÖ 4ˆcÃö]UHE‰rh󎰛ÖßÔÂ,¦I3dYúE¶ß_½ý -ŠžR`‘ ÆF6 ¤¢Hƒã‰Õs%Ÿu@²Š€Å>‘‹ÐGcuöX™†#‘_3yb‡ë<Êç½$ì%Ã& ˆƒQ(Æ„Ü%xû¢ü#¨øµ=é¡ë;i]£¿†ðÇÖýgöq[‰73ðjE-à7s‡\ëãÖæâÍ(3 3Ý‚!Èua>Ø\Áñ½ Ã…ãMÕê×ç“¼ÖØC`ƒfqî*ÃzK+ýQ *?÷²´jÈÒMgÈ‹cå\]D[·ÖÜÔÕÃNaÓOÚÑÛ=%ÁþUÃFUÂÁAÚ¥Ao”1ˆ®î/c6¬¿©hÏÌ=.çÖZ˳Sé ºß`±DòÓ- Ýiš!@f»Åq¡;sωžL0)Ãc: º&+ãœøné×C]D4&žßèŒUäAõù›E¾É&dAY»ß‘›VMYŒ­fØGysƒŸh¶%L~mæ†0¬—?[|d¯ì¼€¥S^è/–mfÖ•EŸ¯w÷*áø5#gq´û‚d»«Tñ±U YüŸ k¦‚5¤ÍU•ÇŽÍ%*~A?mj˜C„ë“5‚¹LnX,äü“^ñ–§ŠÏ>t´ZJ6¶}ÓZ¾¾¿UHLqSÇmzôøoÀüÖòíl8‡•tê‘ü›Ÿ¥êRÜüÀøTVã`¾âE8½ŒSfÁõ²ñ•Ì/>¢„ãÕoGýïQÏàñŠBþCXCÌ%ö)©Ådju¬“1ȵI¨Â‡wØn¤›¤òr0ùöúòM¯¹@o%7V«¨ÉsuÔË2î.Èg3ïý(špÕÑdÀ’Ó}alb ¢;'h·FÃ’NФÅ{‹¡ô^ÿB)ùÕp<ÛáNËU<"¼8ηÌ;½ƒŒc®‰ˆ#£žné¯á=G*4üãë+˜Åw3{ùÂ×ÀUª°!r³yÚ+ŸÚÜA{µ1üæ@Af7lgDþ ËiQ4µ¢ÅÊò¼ÚVÌbèƒO ’ƒ'»ìÛ©añÐg­k/sð“U‹1m¼–Ž¥£‡»ýp¢ˆåô\FD ÷!ž×~Ÿ÷캗”ªôÎ÷Ÿ\ÌšìEŸh^Å"Ç@LÃZ÷È‹£3Lȼa‡sëÄ‘× ±ßwŒI¡kÿ'a[Ö8/ñÖè‡Äâ íŸ~ÏI[ù<Û%ÿ™¨]¸n /õ}¦NÖ±ÆË5­÷•„_üò’fª‹TT·À clÝ]H¿Ž¾!p=v.æ$íš,æ÷ÚMç'~üÛ8¤Ôo‹ÖzÌÇx‰À(,‰2†cQö×Ì('+„„NuîÇóì<§×šeB±ÆÞ—˜…br©™'Äî šC~ÙªÀ_ÏžÝzebݘ•ûyœú–hHÓ_‚»ö”whÞyþJ 3= É´5ÜEˆ»`nøü3uÕè.AC¨†Ý& [«û‚¶Ø¦„eÌç=¹ƒ™vÙBŠôKLy“]¤c€Öҹż²ªAtîÒ¿É|‰ÙNF[Ý®uXâdxfx‚•a:‡ÓÚœbD^F”ç!•V©ø'Ã@lªF—ñƒ³fø3Ècz¼ß¿¿ìfž!¤ò>Õ#^ø—ð»f@+5 ÔÒ}G¦ß¶VâI²ôiHÎ,œ–Ð]ýÿ&š8‘ë£OôÒyßû]&xçlH£ÂDv8ÞËMê߃H*;âA?Ý4%ÊÃÅAñ ¥,düñ"Ã7JàõPÿOEÐ÷»{B™¤7¯BŠ;øe–ñÇ0¼ QCOüHç8f/~w¥\l’žLâ²½º½6OAŽ,hŒ»õɳb%‡‘·]Ú Èéúj¬ëX£. níÕåñ1òŽ~&Ð4ZŒ«8л@¦¿œù²jB¬éa°"¿ ’»P{O$Y—ý\6˜æW³:éÌï§õó=Ež”k½¸Aç=âðš£DTa÷VÙ¤„fMüãÒiDDËØ¢ja i’ú÷MRÉ„lÿ숀”}“tâòJ>®™q:ڨ˹ØÑ´_]™‡¹ çÔ@ ïãñb¬^ öœâq(’¨¾Nl.R‘F3ÞŒsA¿àˆ5s Ùk¦Ý€+dÛÁV³Õ4»Bâ`'7j¹ "dæáÍhèªàðµÖy.´qÜ%r«>–§’'4]g ¹'hB,Ï6žŸÑE¡µëùéÐÙœnø»EëÔ ÀGL=…¤Ív_œ „§4d@¥SÇ^ûŸòu¿ÎRò]?!]~¹ðÞã„ë‚?."{.ÅaÓǰ‹_¦q×UÖ‚Àâ)@"¯ä,fpˆ²9mz¬6°½™4 PŽNƒRÓ¢dmýÉ2I§ #$LmY_^b*÷Úêð´kL^ó:!Ó%‚ ËCô¹H?ìJ1§{£Y·É‹%/%ô¾ädIe01ß42„°Åìù–~x·4.8>Îtn‹aS€“Öú…”œ;Š9“ôÐŽœƒYcÖg{…Â!››•À`Çüꆽžnz ó=»[,x#“êBÕ^˜ Z©Og0' KÛZâ,GŠbLy«F3 «)|R!pÛ¨¼ß(7B€+1¢,¼þ•³2ïho0”+?E»CÎÝàrÊ…?-2åˆ:”KÅ0dõàE•BÅ4m‚Ís¥T±Aù"±ú†âÙG•öIê¡XˆÖŽVS¾å¥Ð}k‰`u£À…jï‰cΨd¯½LE®™eŽèçÊ2Ô›:ÖêFNX×éQø¯о;ÄšHøjÿ."M~3›#žgÝC…7ZÄ?+“\9Üu§æiJù\Y-Oèê:nh“Ê[Úéçs§ñan–|lj›ºÝø)üeE±+T‰æ~XWЋêP%UHìABw¡•)1áN”,>®Œ*ÜE G»…Vò§8€“|W¥ËA@„XÈ|…ÝͬBfÐ)^«M¥qwºs6Ó{âõ»´ý f¿uìùS“䲦êûº·ªf|/ºJA‹øÁ—^3ÔÕä‚^$ÀYK“BØg E¾Òã‚Ú¢©z†5§è…‰Æ_Úñquð|ïnÚ¥¯álwM[›j€* X¤×ð-ªÍUG„]"­ú—)MÚ’Ã'fÿÞtoÀ€ëöOY |¦ØðHäLküÎbÐé>FGúøó&ZM¦­±F…Ìá™mfYço}~ñy ëô÷ÕXœÖ²Ž ÿÓ~ŸªÎid[Á{Î÷Å*J ñTl‰Zl½ôׯ¦Ð#Wéû$[*™Õ×ÙÇ’=ŒNÞŒ&kˆì ¦ñæ1é®>—ÝôöE”eŠ >§V2‚Zæú¤¥eѲ´”œY…>»ú€Cd¯‚% •¢„C¦ÿÌé¬xÍ6L‚ɨ©E–%¿AïP‘2|r‹Ö¦)½ãI™³Gö[ÅÕ ²ÍâyùÕØ£-lʯ—£H†ÕMž»a`Õad å!ýÿ\j,x˜˜ø™—X#¼Y(ˆ„»ºÜo\!ô4ŸØ†#$äºy£½™²3äàJ|2(%¶EÆ/ÖîZTÚÿdäuH\v£ubüÆÌv°µ†%ºY ئpð໵æ¨Ï™½›ÆñöþþQó¿‡A y—y¯”C%špÿÜ‚g±°m•u[f⊔æÇЕd†~dg\Ãu±=ŠKU%ãîÓ]m~(ÿ2ÈòGq8²"ãn³rþ"›Î´éBÝøÉLåýô9Õ<°u%JÕ0X!‘oËÓ‘×¼#žéŸ=òÌ ;Ô]€ æÅɨè’0¼K]†¡I“rZO ™O´©z­ îÖø«÷‡ŸüºU0ÕÉ™½kïU\ê;q®«€µÚŠæ¶^8"ŠŠ <ž¸ÓöO¢¥£;A¦l®˜³›6ûAÎKÜ„jhª¿Þ2dsá=ý.˜#<Ì̵P+_XK å+bxt¸%&é"T»„`€33Gý›k{çsø)u‹s§Ëë„Â5¶w*Ø›kŠÇ=¯” ðøñ“¹×­L:hÚ K~çž—‡iÂWèÜ1΢ͨ™°/Ÿ7ÀHÓ;©¶5>gk›µÉ0O'³[Ù°Çýþšèìt×[í]K<2>ŸJëD ³cJ‡ t8ò¢Í:ý“†xöaƒe¿¯vØ?`ƒ„ŸÂôZj¹"%ˆ×€ìBÁ™Iúæe²Ýy†4ç&:߱ńL\ðýº¢ÿ•)õÝ8¶v{hªÄÿÞmO¹‡LNQWâhOâ+¡ÍŒ_‡g'&ýå”d‰ö|o©Ü.‡!e–é‰PZ|¥^PGÊAW‚ÿL&"Öà•ûêKÊ~@vòÂÿ™Æ¸ËÀa´;ïh¡¹Ú"¦ UÈ÷Fæ`DOŒ²uZë·÷wî8—Wä&y¬HB±Øpk}#Û Ðº²•27‘%|ú}±K2(~ÐÆ“H¦Z, …ý¬ÌœÓÛÉmÎdp,-Ó{’¢qâ8ê8Ÿ¥‹Jžm°V«m[]™üêUQ£ÕüÚ®E³,s|o ¥Â1L‘œC¾ŸzáOCá{ËùpÑ'5j­°Ã¨­Á4ñ@uë4ë¨C G¦ch#}K£%œÞÝÆ0nø¨0CzB}$)¹²BÛOÒeå½wš'`(Ã’OLòtãJÑ ˜ÿ[O—kõîùñGŸàæÁsÐÁÕ¶J`5ñä*²ô.×DÿMÔ„ƒÎŽf0.íù‚\\=åûÍx¼hÆ+H¡D±±lðfïE NìMõ²õ„~èMi/ ¨¡™Ã|ÉŽÕ8 Äû"]Rá*yË›îÆ¾ŽÍÃô:u·TzŸÅ™©\ðâ9\0üáH~Ä;bögd/šm—MJ¯“K?É+èÂöÝ»•,„¸‰f³Ù„¦œÁ¥Â“yµ(zQâS©×Æ/ FÍ;õçsÏÉý'k&°eCF–»M™ž¿ç½GÏ&.ö¤Gà!­Ú£nÃÊD³À¯ bcâ{½Ï¬vÏ"çqï5Ÿ@¼¿ô%uc{gõ^"ðëür‡fåÞÇ]÷:`˜ö9ñ0Î aˆUâ‘Çv\ÅÃË»S|›Ëæ®ás¡W;К•BÂkÙª¯ŒÅЬף"öd~·tÁ¤!oŽ,î?äjƒ¹l•iï}½!8’ü©ñ>¬ùÞçÔ¾$E? aG®°ò™—±¥XðñøuñP>ŽþÈ}!ܽHÏ,’á^[8Ö êä£_k9=f®•öàeÏW|­ª³ƒíó`"ìkKf `ªhFç_LåÈ¢,l! óý}/2=zõž®n׆iw²y`gêý–Êν¹NÙ0ið³lgÉšdÈÞ(ÙZôŠ.zt⇅yµòßRWšMŇ ûo<餗v‰­s´œÒj[Þ×4d˜•¦§€4j³CXV i? †’"ÔSÖÍûýTH![,‹ÅŽXgømû‹É烛ýj3&è¡Dpw#^Jza=ß<)²Ú| åðеõŸ…2„Ð5MFFÖÎÈÄzòÙ©<7ŸîÙT PÑO©+^PM”Í)\/?(¾êK4n\² úeÜb…ãUwÓ ­F5‚§@Q§ä¡ -œ¢lÄèU5ÍQ=ô:u€ë§çô»9¯¿ ßð³`#un²þ:Q‹Y‚Å~C‡},lüéÁÑX¼Lwó¦/ä9—¦¶/„%·üÞã¼Ls >àÀ[üD*þ€Œ¶”9Íß>ð^µyûÇܧï 4Uýqîì5êÇLâ¸ÆÏÀ…ƒ{ùÈã°Ä¾«üêéñú”=2jŽü ¶H" mh ¼ì|‡3pFO8çùk'™öv¯5-Áê»îléºFs­¶eÝpmÈÁ@xZ:²*ðë7àßÑâ°®FÀ{þ–Z—õ j9¤½8›T??980™ Ú£~Œÿf|Ï¿°w”|ǯôãà0yœuÞÁ3½êjùÙÈûÎ.B‰tN¦ÉŸW™}Wà 8ŒDü—uˆn?޼½sÈNJÍ5·ŽwȽlFbñê¬&Š2î-ü2gdPX,ÙF(™uÑÃïbéÙôŠr‹nÏ”ƒþ[drM›¶p곯Y1ÍÅ}-Î#–;ت®Q£* –c*”,Tdz]© !¢ò¼$"{TÃk?Š 4m"°ÝF€ñò€ûç-iSj†‘—ŸNýJ2PÕ¬…Ûí+D`0ì°ÓÖTûïaT.RRð/QñC“|Aûõ3Ãczð°½ZžÈ×0á5 ŒBK·¢i£läU…¦ÏPP9t_BsÅã()q\¾JLû&H”¼ö¹6–Ðúî«“ÅûsáØž2Uúbž½oçûÂ2‰çEü»¾Äc[ýÆn9_šbšu®ø8 qûˆb¹;íÙ@— MmÚd‚šÓr?NÀw‹õúùžÉ4N¢rÐòÄmJ¤ØAÏ©hbl€êZ?ÃBAu G²/{’é<1÷Šñ´Y¹é¡{½ú'ÐA”cBLÝ ×IЫú=MÔü³mƒ) 9~)48,TKg÷ÐÎCQ.l´'`ÅÁ ˜Ì,žF$ÈTã_¤zí>ÊlµÀ&c­ÇC sÃ"`µYcRd@²”—çŒE Y;ÞõºGG¤Ó TêJ^ž ÄÊèÜÅš ›ôÔUœ úOªT×»Âü³I³GYȲ˜VuÏ4!fø‹ï‡ôüÿ›æfÚë>Fà®{N*[$ß™öDÏË –t$0êDN îCãK~ýüUê¡-5úAQ—ýu—wVᛀEøòƒRÎåkû·„ Ú&¤=“ÓŒ7s‡«U7²É­ƒÙ²F3“ͪÿÛx9 õèÀcÓÍ<­j½ßœàl-j½;áëO;v¹ý‡iÓXŠd@tc–Ÿ‰sVÓ’(¢S½"(ž÷Mþ •~1ÛæäEœðR¤mzük£bˆgù…¥^$úD‹ºâÓ›ÙW³×mp¹ŸÜ m¿ ÖôZ, ±Äš‘[Û2}7“ó/,=üÅpÙ©CÈÔUS;1ô‰ì1ÏÄbÿ·Ç6²3ðRÄÉúo»yY3%ÿ ó ßÊmž¹\$3­È9jBªÉ“+ô¤ÌÀŽg‘phdÙ܃QºƒÑkÒ¯7·d.éHÛöÆûn‹µ2QJ‡ÊÝ>Þz´º˜{ë¢#öI^Ó¢1e†“]âý寧‘]Í kmoJjæ9+Ð=‰PôãÃRLÌò¾§G1¼ÅJ‚* CÚf²ùg/åNqþ¦ Íç.ãÉŠØ3—å‡åƒß_¶^Cí~2€[?ªih—¥|›ëg¨¦_H€w¤„QÛü¹”í-©«á…‚t-¥2ÔQü2,;6ãÑ3OÍFã¢îÝÈuæ`õ+_¥^+ŠW›læG³Z˜Œ;‡ξ¯cGÎ*Fb=Ó?õ(sž&q*hÆîYìÍÉ?‚9¯pÞ<%å\9¦‡0j½*7è¡Ìl¦QÒÇmÀcî‚QµG•S8ŸÍî¶Ø[¯øL06ˆºß"†’Ûé<Ö©¢{(Á;` D´e]ñ“*%vëݰyCƃhÏ m€+d°+¯ xÕss¯A©5MVw=:<Éç?GÓü'×óÛm%÷"-…7ï£ímárì×Y5Þƒ·ˆš  'Ú¶ø^)zÆ!˜‡x£”„#.ªÛÀÙ°…º6QP+Q—BÖ¼ÿÎÓ3¼Ëܬ„< ¿àŒ®Œj$Šc΄¸$˜NCKS©Ô0%p Œ€’߆¹ñï$9G¢˜¨¨)oá«¶&rDZÆZke,‘Ô<ÝuÒÐìà °–Q„('ízõà*üTÿ"YÑŒå@5E9Cÿ[*öx%òÏ‹~& ø„Í;ðCKU„pgÖ8Ÿ™=H·ëð€ KÃh^0ä~ ŠÇ-¾¨jÿ£Q›¾„“n¼œ¾‡´o¾-a ·ÙèÁ2’.Á.gýï ”Î(iÕšs㊛Øôþ±:ßWÓš"Ô}8:É(S²OÿXcÛùEDÞ³~µç«ýNTÒ8Ë™^”@Öµq<•x‡[ë5èjë¼³÷/Œ¹¯}-E0ñî{Pî¤:M{¹úRE™Í~Õ|) ÐótS£kŽÿ4ÖщD¹Gi"<kG±gå˜$HEùŽ€ÈL~£Ô6Î'£} _Mk.ÔðÓòT¯Ø63ñ°îQ¨›Ò¿šÿ°ÂÏc«P¿4á­¼ŽäAË0Üûýâ ]ž¹1ÛWXŽŠ¹ Ã' ·ŽEذptø7ܪ×y2²߈‚Ìʬú”ø–œª½¸¿¯FT‘€væqäÖõï½?9~ G„Í*¥¯åêÑ×¶UWDI<‹Ý¢dÌ”±a°¤t9ªè´véPk_„óE~.FRþÊ_´€¢¥ËÐH¦Éu:™;ú×áÂÛ]ÞÁ{`o\Ø™OU×\«Ë©Ç"]Îæ!#è;HøtUЛ+ž<|_äH5 õζÒÕ²‡ÆS±py($}”[uÁ¥MàRÈå“E£g+®òäˆ9¬dÕUr y³ÁÙ8”n0èÖùNP Ó~äašæeí]<®Gþê`F&ºµ•är5µòús&ÿüîo‹Ñ<»H¬›x(³ó™¾CÙ‘˜µûÃ:²ºùÓåâADú›®&·„âD2ñì|(ni!öA(ÀzW\}IS®–~vv¼Íð6гÈ$¸Aðè"Ó¹%i€WÌ@)j»2Td5hÜÂ]਩EŠÒ¶¯Ð‘5‘\æ§ïVÍ%ƒ=ão¬ ™m³²U‡­aæn‰j ¤xSó{DçéSÒ„ ×¤Ü HÖ0¨Mþv‘½…³mqG[F¢§Rw™ëSzA¢3äSþ?º¬W×*)õÞ't©RªÒîNÑ^Žw¢UtÂöÉ´é‰ (¤@‘¦‘ ¾Ù‹2'ŒåÔº8Ž_’¯îœT²ï‹¦xój>~œãõ(†V&ÎºŽ¿Žh¬”13a²°Æâ©€àãt8K)u äµzk$`ÌmÓÙ‚UEñC0 é™5(‹u+kçfó„<êŠZx9Ãï† Qx"a<Θ_Ù&¯pJ7»s$áÛb"®,e ÐäAFžÀM:Òñð…m™äÓê“àžˆ¦zœBÌ™Š_4J06¿¼Ám¯ WLò¡jæ0¸–[èÍúgÓÜä/¸å©æòau夫=i°ã¼ }ø–!M¤^I ýþW¸œù¹û‡t)cÜã½ØVj„³­š%Îêç&­„Íe½( ÔŠ1`ø1tç¥‰ÎÆ<8àM‡P:nŰkP–Šö؃G0þMN<84·¨Í¼n%̣ݳȜCýélAA#j?žûŽ]‹3$hËã¡ÑÞW:g6ii-o&&&ñÓ6S+ÅH‡jiÌÁ7ßXKO¯Ì9ΰ˜ Ò'$Úyþ-·ZDùéNâûô*D÷+¶ÛѬÒîÛ†5üý{B™¢ÖÑ”¾ Ÿp¬%'ð{Ö ádÇæÔ,œ&J–”‰¯t-ærЀñj¼Í›æñ½Æ  |­Õ‚aý øZìÜ¡eÏêÎ\â¹ÂYGx’‡ …”C ëb ?É Eç ø¦Ñ\átz™ƒWø?I¢œ²!I—*ïÄÉD—½Þ˜B>ü\[æs«ßgÝó!Îßýƒ|ÀôõL¸1„E||¦N¦/ë–ûvÓØÌ".ÿäùª“·iíøC»E›¡¾3‰/§‡k[`r&Ô4p[Ñp1 *4ù+²åÏyK£Ÿìµ±ÿ§À:5ˆ®rdžU+õìê\lÀw­`ç¹¾X¢|€jõ0›öP:—…P°~MŽ¿iñhÛ4ËŸ[vúÄ îì@†è㉩NÊrtÙ\h솮ÿÖdZš†„ôš:­xS.0ã~äùƒ0ôÎòD•ž"ìü·û•Avô^;Ô—„<$ª‚î—o$'\"€‹™¨P8«†ˆ3<ýeéQž/™,0w\·°@x' '†v΃Ÿö±¯òš…‡´ZÌ{ªnê¢E”ÙæèØ5˜©\HG؈ƒ¨Wú´ß›48# £fA(a>¬®ê6"ø¼9´ø c¥¤aÃÂ&öÒ‰|À}&mQÄ0B'tWþÿ$öp”ðbï$g¸Æm>Ðó$ÿ¶ü’@êƒiëe½òÊžoÛŠ.[û':o°®˜¯ΤM'äH K¹'…ùÚ#~/3Š$n¥£áé—AÀ÷Ù‹oS¥ ÿ=ÀÞ—ç«57¦(FšD [Krmh©(MELÊš ‡E§Q>„©;66 |µï-+æA å·†vÚ88¶šé1¸¾˜ Rz¡Å„°™5°-ËÛA½ ¥é´Vïÿ/8|X |FÛd¡yZ Ò”ô¿Mõy´Ó%¥TÆ5Bó”èô p#‡!‰ 9Kñ,àÂÛ>¥9ŒtšJDæz[¨bÜÂcºöf5f{Ë|T|Fºƒ“:|#IŒ¨ãœ}%Î-@'ˆƒ§üíØ*Ùæ×dl³½ÈÅÜŽi,‡kI²Lÿ{ØŸ†P©«ù’ Õ*@s(CäòìžÏ¥9Év®ÈðŠê©4äÄ.‰×ðsä-ã€É†Ž gŒÃ¬|MIáæbóˆ~~®ôÙ6…–îùÝÏJün.2.C ܺϦ;Xí/éµge<£ø·Â”$ø¯Æ\¾r-žbbg” ¸¤Ñó ‹:´ýv8 ²•Z»’ÜÕª 5›à:"0åq‚?h ~F¼Þó©‰á›5–luS'"g:qC°9Åü¾*£<æØdx­æÄ"wå`3ò&À„¹-Ñ|žo™ûŽ¡Åu¯Ã*TyÜ3 Šõh* ^¦Ãº!-¥±ÂK¢WÝôƒÍ¬{/2œ¢½}ERp7óÝe¨5&Ak5½ ¯´!I›FD}¶ŽO#.^¶‹"Þ>½²ð¨WÐ|ì+é¯ñ˜/Á¼PE½3GêkµNË]Ÿ¶Öí]säNxz’[— ÞtÔ1´¥|Ð_s'¯?µ!êÒ¯^ð\£×È¢9è'} ö¥²õµJcvçÃñÁ[uG/ùÍF¨õà^î® ¯RcÐtˬWo"•ÃŪÉ|g Šâ¦GJ`·£=zÝÛ¢Ÿ/ëWŸ£X+Lt½*Òk M%ÆûùÈäR,èµ&gíªàÜÓ•²Õô¨ìÞi€?úüǸ4Yô‡û_› X«¿x]ºD±Â<Ç.næ8Õr;z‘Zd%'[%Ðñ¸_Šø¾‹á²{¸º±]žK´ô}‚ílý0¶»iãÃñŒN·0B× —Å#3\ ž^ßà(/…½’¥‹K#J B{ SXÓ`Oý‡T“ÿ©èËYPT¤,.Ç{¹n Ϥúï >ê9Ñ*¡Ä•ìß«,£ºlÿà„B“?vJ12ß#KÉ ¡Êhû#èdB:§Jðd}¹øL!‡ Åà ÍISH¸„wMÈùŠþ"] 7—¿IëçX‘¦øä×Ïà­1€lR¡T °ÀÒ¤½jÕ×é±PPhÌQŽ”¶·CÙR£ SŸþÙ…¼²PÉÅÄcmÝ}€ŽéQ¼n<×0žÅoXô“òu¶I¡ÄéÆ eÕKrê#Ôþ{Tލ £Ê0ZåÞ+ñÕrP¹-»¹!ßj!W”iÉôïüåÃÒÈ…\2d9é  [ÁbÚÀ"„Òûâ‡ûRzMU7hm¬B=pT+G 6@_‘£–#†NÜ¿œª6oçRmNiÞÙ43ýKÈò%6E! ë !Âí̪%ûÚµjÛÁ>[ÅBdwÿ„0ùz»mO$>ã'-öJ–HSè' ‹59‡MLí!õíÏ©ª6îb’¨ ½¦¿½X®Þ¼¸¶?RÑãx|æeYÉ œ]å#Þ¼z Îÿ¥RGÀUÿ )ÂíJ{E)ÚÀÌ?Øî.îÄ“ 09‚œ瀘¶Rò* v"“ßlÙ ‘´àÂA¦rþ<ÙEwŒ\”ßtY¬Pì¢ SÛžxo0bß)OŠa?Ú-ô D@è†ø U”ß^Æx.k Žy:GíØË2¸øì!MÃÎŽdÞK)]˜‡ƒXÙq D÷nmg ƒ#~'O’z’dùÓ›(D˜È¦¿p#Sx´žLì÷æùdÀßžëMëäLy€?Ä_g¯ZÍIü•-Å÷&×³Žž¶îËÓ[g¤ïc¡Î„ðòL‹ƒ;Ü‘ªW¹" úÜ(ó £äŸ°O09<}†,`¦©vêrzNT¾Å ÷»>Üêh/Y"ˆ¡¸/1¢ˆ= èíÌ̵]n£ôÌ5j^(¬·Ïƒtï¦F,ÁÀ[—™Ùà~ž³ï8ĆX8éê{~“ôÍÖç€bX½ï-—B*_@Ù§^1µ¾ÒÏ»³/²üicXÙÎC4¹ÜHL (õ]pºðkÍ·èß·Û¶é>Ñ›yçqåø|%ûÆbû–Áø9ÿ‚ƪWý Ï|:ÉPÜ„ŠJ’°˜Î’–GÓÁŠú‰Û¿¦ƒÝðÐéîKOÐö<;ªNF¥uš&"#9íA`ýOÌ=!¥þ©‰Û¡HµÕÁAb¨ÂC!©¶ú¦üÌêºXkÌPæ|´‘ú‡ÌžŒ} #úyF-¿H-4,‡:‚):Mèµ@ô™j|(ÿ’Û‹1‰z¾ÂZ§B/Õ´YŒð;P‡”ƒ¡$ÁLb 0>­Â˜NîRƒj#èÄ:eT1/fM6V[þ…þm=¼ ñм›ÚP#Ù ¢%W_7„\>îÓpÀOZFÝñ›\!å·Ö6 Æ=wœÑ­ }X$r¶Œ_Æ©W»@˜ç‡Ï¸s=âŽù q„mÍÓn2ñüΩ]•Xh‡–’t¯] ²y4:5ø/laEw`®Ry$§)¶« ¤³Æ¬ót :°#· ²‘#ÅÃû•XýÙäoNé7ój²äz¸LcaÐð‚Œ|9²D!ÑÝŒÿÄ&Þ»GÚshX…YöÂ!›ðOyߎ0“~÷–ç¶4ý”й,.W^û¨+×Ò¨ïtQcUKSœÏÙ¥@;öÖõŽ+¾S#ôÂ#ñF§Ðÿ®VZJ'Sâ˜ÀYøÔ2«Q™O60yjá÷5¥à‰+y)¸ÚzkXžU¨ÿ.€·v¥ÌA†„gMc60ûˆBRg#èYùkVÝ×NClžÌvCZSg›òÞ -înìÛähëhSé`·‹õÆ$\^Ks-8‹ýõ%²â\›#mJ©s™k%‚l#ZRoô·ÎàÉaxD³j7¾é ³½º«RItš9°ü(„\üo¿¢TîR }Ó :Ï—û=šwºq¬þ$¬ÐáL¦O wÖ?ÑM(Èú:ưÀJmÄä`aì•?«cTYJ1GñÜga³ƒˆèWDàa¸ù¢,î¾&´r(Âûø<0êr©æÝ “Ÿ 4¢‰ˆ÷-Ö¾Þ—IÍ‚O†s3­d¸ËÎÄ$oO5û‹h¾Ƕ0Ãí8 âŸ„³@ï¡«5X l-ןâIɳñÞ¤#o›}dzàòöQ/©ÚmáJ4Ôç«®îÎAMEsó@wÒËÂøhÞ­¤Y¥yr‡9P81€I,µÞò6¬#kð,æ˜4¾Q±°à®äT9וÓaI(….ëд.8C2Ež&³åEß[oŒ¦£0›Á'"û®36WBœ“aß»*vŠK`3yÎÀhØõèï3«£¹?רÍûm¤óü*r´¯%B5ìšÛ—ùž«™Ù¢$ùâ1§L\ñ3­(Z¾äJ]Žãì:Môùêë½Ø/<hüæ±ì B組HM¥ðØî(ª4“Ûë—_&·wåÕÝCôb‘™f†NPãôÓñÇ”H[öøAäÓ¦ V-þ¶Øs[ˆYÈŠŒ©e‘ÍÉ ï¡øª|_ê ù})gP_Ñ>}+J­ðÁÐçTj@¡„·xA"Ñ¢Ԃ×Qg!“ü)¡É ÜÞñæ¥Oe¶„–æôl!€ãÒ}ƽò3ÅÃX1jÍŒïÒ¾ÕYV¬Ê·‹ãèJ.NSF_ºŽ£$\Ò28ÏÔh9ïQüE„äèêÆo&@ù¤µ^a޵Wp¾m\En£ö0‘@º R!ß’ÓR5§:osx”oåâx[wpΟÜn§ÐªÓò9³Äfm¢^ãžfP9J{7>Ÿˆ”›•W·7XÜŒ M,^/¬]lèwMïÑlã õôçüSˆýL/{ä.ö˜‰¥ öÊm]WÃü - :JÞ”L¡¥%uYécçsöZœæ9šU6z”"ýÒ‰âTcÞc]ó½Îµ*¾»•ÜR¢Ä"!õFïýgªŒÇÿ×V.MÞÈଵ‚Ó£Ýâ’~ÎæÑqÎ’ëqŦ×ô<Šn›Ndä¡®øÍ,†ˆßônÁÙNÃ\æI+œqZØOfzFúÒŒ¡f)2´‹ŸêÈG ƒ®A.©ó«=/Ñéio ;[X '5ÅšIÅ+'í¦f{¨fËÄ2Nœf4’‰`èVéæP?ií?¹‹jmOGdWúØá‰Ág0\míìÂC7÷öM‘!(áôeHÒ1Xœî ¬IÁΖv2fC§$lgl€7­FBxÀ5çÛ¿°WH‰Ž‹u…Ò­ÔpÔÁ5BJçZË#­êƒ(xË1â¢ðˆ–R7ý‰5.üá™WÆrå5´àš‡öZé2zÔ^\QwÖñµÛgßÊŸ8ÃPr™) Xݻͥt+ÄFhÖ *ócËéý=_é¤á¶zVâz¼îka¿V:ÖV‹žÅ¾“Ѩsi—©Ê;‚ø¢yò¯äÿ?ò€CtèBÜ `€©,7?3tŠ^jÄdÍÓž©Ú;mòCæZF‡*'…ô¬™/Ygߨèís óI÷«â“Òƒ\¤ÈDlc/µ5¸HmÅ—¿Ú lF«mèVkœlã5Ø|ݺîȳO_SBË«ÀÜ2/ì ÇI)™1˜Y}¸ãÏÇŸÚó ìùˆJŠÓg‚¼ÃŒÐÞ8Þ»]Ýeéê\’qäˤÒ‚ûß«ó‹È|øÐsPðoaè¨[߃›T\óÀ¢™#ðÖØeEûÿùúßÄ}†»j¡œeµötmSãÏÈÀ¢T²´ùV+Ac¾ÕC»K­ ÃázL ‘CHRñuÜQMoôž;'doïÅEêÔÙÛ¬Vy&í’\‰vŒÒ™‡¤#øÏì>„Ñ&ùäy•+@úŽ @/~”U–#“_&\˜0šBêמ{]ÊT WݾBÕ}%U¨ÅœŽÆÙ#ø•Ù›üÜ+p?jÑõL®n“9’G ‘S° ýÜÆF±ÿGåP°rÈ9kÆ)C“É-öŸÙ@ÕÁ¼ù /¢@;E r´ÁMºß­JÖj˜iIÚâþË•ï'-5ù“§A\+ÑDKª«¹k‰\´]·´¦ (\`!Qx­Ö¹†%ºžÛò 8]Ô¥A)ßµŽÉ~Oâñ}1~}éçÐÓÌçSÙŽŽê£·[ÝàÃQ¤€´ÐBNÀ±aFΦoiÛòÏAeByîÁÔwrý0Š¡jrk¿íL!ùÅd¹«:¤¸Œu¶³‰NJ™z– ÃõúÙSK­Ñâ:ð–ˆö66¾]ŠI”».  ™¸Ÿi?릡µ– Öž ÈàùÃ.ÄÞœÕ*pÈ#?¼ñõk£}5µâlÆÒ/FÍLN<~\iµáMü`Táìvz •pVØiø©,È i] òòÝĀ÷QO7EOßA¢íåCåMÓçÿy€~ŸI?÷:;¿Žr•±-ä3;C«û2+sÀºq1£ô—(8Ã$Ìžì7¤Z©zò{(Á)T(,.ñ ج ²ƒOìÁ»ØÜ Ë(v2Mì*'Ó‰™6»ˆá‡wäBgòÌnîÊ5[ ®Mâ¢ßNM}ó>á¶!éëÙOÁq£Uµ€”2˜^,`ÓÈRñõ&aø©ºÛ#œøÞ¥kwÑÉÝ•8 þl±žvÖVZ໚Ï'F:"×”Â^õOü7îbz{lct­Nó<Ž® £ŠÀªÞ°ý9Îϧ Š!lJU<›g .÷i£IUíd²:!yXÞf¬—ƒ*ßø°ñèéý†5¨Á»8JŽ ²A´MPwçE0XyXµ?íÐbÝó¢¦FÚ2VÇï$ÐÛ ª­œ­;]&?j_®8là¿´ÙJÔ×Ùe”똯æö€=ðõõwÍ « z# §Ë ¨Ú4‹`ðؼîsóœqèØóÅálEvdÊm3ŽôIMaSžv7 ÒUÙw“ B"EÃ6¢ñWÞÞ“|Æ)jö»_@FÈDÀÅ,o¦]‡$rP¡èïWÕ!…sN©©}úŰ²Iú#¢"Ö¥“–DÙu,)Iäχô ¦ H—|LšÐ\ä@GО^¼Ã÷„æ(té .ªkPçÕ1uí-U³F‡Ü]òB†+ U@Ùê'о9Ä—”FVý9¬0¾ÔªlíE]œÁ÷¸;#Òeá û'ÄLÍÐH‡¥–|Ý\_T/ZR«eÚåîWè¤ãSξƒ[Æ®Mî)·€7`x^­š$WÐi Ò±Eº¸ äa‘ù{»¬zl¼WéóJO¹Ø†-À/{MmfvêsZ1´fv‚ÁÐsÔ¤ÅЕY4,-©Øtã®4ý¶g@G¤}u8ôÉv­²ñd_­y±¿û‰Îs÷‹Â{\†<\g{Gƒ­údÏ«ÞÿœDò O1bŠééô¨cD×ù^;æÝxßt˜£Ÿ*`ÿà‘Vnï6átü¤‡ÉÑ©èÝ`Äé5¨d@·Jß‡ï ˜§‰•l%$û†ˆ„ˆ<µ[`íqnƃgIe]‘D$`îxùQÊx«T{ÙŒv¹Ãr›¥0Ò÷y(v("í¹ˆ©4¬»¯|_•€ßËÝXôj¿6)ÜÉ&ÊyÜjÃo82¦ý9µ~€Å²4µpP²`¢Ì+§qÇ[âíZoNÚ™QpóÅL‘Ï/0{À6s‹68°ìáÖ ÿNÚüÀĈÕé³ÓVÅúÒ‹ÃäX³®„z¼Y!ð+Rÿ½Ý2_Ò¼yå«—`f©šo…•ëX†å ×.e»É ôC·E"g=\à9¬ŸB©4AQÖ’ž=áx4Ú`bÏâ©“:ý"k³/ ND4Ââ"»›Mþ@š!‰¡oéÃѳò-3Ÿ©Hñ,,f›£da¹g1H…’D­ùðÆøåñ(²î¡‘@¼›£jç MG˜¬AYˆ}“oaמªì#ü>j¶þcȶ5ÂÙZï¬Å£dWÚg.á9 S+•ÊÃóØ«ÄÜ—‡X†¼BT¦/»…!á/'¯Uõ`P D…jbG€šC‡\ÿVÓ]F}¥>F©&ˆr7ÿMÌ*I®CÞÞø…{‘_Ð9ËiÔ=¼e•—öóè³Eêó5U¯UŘëÝ%ñÊ+æÆõNs–ÜX÷þùe¤(E±×í ²µÇî>*=ï"–T=•Än›Šb¼8¢]n°%ÕÍu"ÂÔÔ/Fêï$ ®ê LÈ02npCB•òÐVÚè—‹/z¼³[@äãø¶#qSÛ,A}¡kÑ'èÇ£”1Ì¢Ñ} ¨Ý×~rh:¶õºÖ<[_ÓE׬,3GòS„Uäz{±€Òƒ¨z5t©…æº17ϯ@ÄD=31—Fÿe™ÈQ·ß覆®¥ÜJ§*¹ W©¼6}ìI“Ó[Ë8©œA½tT;%…y>K9]Iåó5¦j ý*RmÇöÑ[FgØA8{½Kƒd ¼1_UÉP§†ŠÊ£§ÊÚ|Ë<»{,cEG?À‚x¡ïx™U´õŠÌ~&Ù }}€TçU€Æ7%…7‡™à£'ä°M$ãá{eo,ö ÓÀ¯¾qˆ¶Àô9“ò/$¡^‰†Ž¤Í/ž·òúm7ˆý›ØXa,í›ÁÄ ¬²GL\Nq(ôcq+?GJ̘Þ<¿à²äŽ]Åí&k1ÔY´@…2qHslë-pœ…0¬×3gÉ“²k¤Ú^ïVÎLN7/¸†X]´.Ò…çuèÜŒ¥>[V³­@Š+ƒe—†Wi©§ÕG°ÌEXÏns‹ÓÅr¦±>0î—¬ñmô³T#Fij¸¤f”‹HP ½ 4†öÄm<~X3íØ‹6aé“0B&'>fvÖ üa±ÄN¼ªØ“pý2h!aÂq†äD·@Ç€ö3¹d«#,:hzú‡÷û4xY†+°„rA1Ü®%FÌœt23m¶9Älýyl1lã!tÇü¯/¶áLYãògÇw‰ZÞİ_ÍÅÐŽP¦úHðM|}Lð6MùΨ*X—u—œª jrúügÄvOÎä®FtU%¹IV†Ì¼¨I¡|øCê x s‚ÐF>‘‹zHíáÙúØê¶PD&ÖÊ‹Êt'ÁO]pÉ kÁµlýOB¤V£¾#`º¶èSÀ½I{LkÙÈ!NÜFàÓ¦{A|óŠºüžîÂùÞwD®Þ†Tb]+±ROƒ7&Ÿ)Y>c€¨¯´÷§ZⵉËOéœ+TÖÑ%íߥ9€Ñ¸äÞE#ÛW3ÌžÕh¡€î¢žXun+I 7ÄÔ“×J¸©Z“jNÌžho«UEØŠøáÚÔcN0Í=×{Â\Ž$ewp™€Ò­ýôƒ$;îñsUH³‡ÓןhúµçogÃ1.@RÀàiª˜.-²·¶évø¨³U+¾„¯0Ë6ž{KâÈñïÇŒB" O±'jÑ‘èvÙüÏ^ÔG²*sZW5 jöl:hhÆO>ÇQ|!LTÁO­#^óÅdu³z%)ïÈîH†þúæö‡§c¦~c¿ÖET#$Ùå<ò+P/(h&ó ÀÌHi‰:òD2W!˜;|vPÞÑ–é'+µhŸ½\Aøv.¥‡úõFÄ¡ùw¾·åFmþ÷Ã…åÀáûúÑùæË¸›k·ÈZu'3LÍh”O¶l¬˜åTy‘h¡hž?òµÍý„–/¥¥ß±[õ–­:‰²KÆ`˜Ðgxî{ÈÕ'±³ðÑ)û–—‡GYÛ¢?z«máòé·æiÀB?VÁ5Šßýï9rÑ)O¦¸x@ÖZø”99™¢ÌôÈa¥Àz-WŸ`³š:P¶]².˜Õ¶ KIŠˆ’r€PQ§05Âp§sÿœ"t{'369Z¹kuùºàÙp LjDdE+íEÿÝwIqµLÂ×ß;1ŸRPfFㄳ›?ÁàHN¢¶QJÕÙ3©Þ~Q h7 ;ã`èsáÙ¨ñ®0P”Òÿ¶¯†;´#Åÿ~H~YË¢@‚}.áFÙ-•&d…Ä{çšuÈœècsw~þ~—%×IAgQïŽbQÿåéyÀcÔ0À€ç$ˆ®ë+£‚Í¥Áw=¢ËÉBMµöW ?pÂÝt¯‚açSŒ+ø}¬yPõ¢~ÌÃJÂ’T¾ýq¦v}¿¦“òÕ½†}²%œ, c1ÊþSü Õg}y=•élx`(L—Ì^«.êåÑó›»8@Û³<9‰øn ‘žEG.ͦ¥*¡ßšb ã lú‡sý4pjã «‚ÌYnhF!œï³Ä‡0†Œ…¿ÁÖ'ò*W•esiªô†tÇh[ûïK@ÚFX°¦BP„ÅktŠZ³¯b­ ˆúhTòŒ³â­×‘r¥rak)ç7éÑ-¬œø¯^ÑL…Ð'ygxí$F$PaÔŒ;çÚÖÊû<ô—‹4í‡5Ä…ÝF€Qö¬ï2MÄd#ód!ÃP¥Ûß–NÖ}ùqe—ÿ´ ¿&MÞ@j&e]ÉÕšÜ'mLÃÃqÀ‚]KÀVS˜‚(ð:WŽâŠÃsDâõÅX|©ô”éÍî ÖÖ>ÆZÏw=cŒõqNËäò«M™?ÖÊ|”l¤§jµËå³ñI]8ŽvÖКˆ˜5±4G ùò~›ÿH55Jç@½5D‹_3M+öÇÎÄÀ45¡qÁµüê7G±~·†ÜÊwµî,Ó Èë@_&£Œ|)®ïf»åv¹6v¯*%(V çºKÎpi¦²Iäsq¥F¿KõuMùÌýZ®§6½•á+¬Š‹‚áô-ÐÐÀÊ®®§âý?#±\cÐ ¡LÅ*` ¸=éIîgô="·•'Þqß,J‡Q8錤Úÿ¾ ض¬¤%XÇÄgC\ÎÔ“û<êH+™ý DGZÔÐXÙŠ[,=*š‰³Uû><ÒxBþâÛ_« ùÎ@3”©õ°ŒƒÐÿ¼aOh@JDÒ}¸¶)»0b,’ºMÍY5È{:9\Jó²qÒ}(g¼ë¬L¡“²#ì—Õð—¾#ƒÇ=©H"@%ûìûÓacÃÍ3‡ ¤…×~›4þ—û·Í™;‰X"©çúÆ *£õ!Vu™æMû;“€Ý_ÜrÌ-Q‚ÄstYM¿ªíÜ „ì×lÐçŒ9KËõÂÈV[{¤ÅD0æ¬tjÎ8Õ “QÿDu5“+ØuNc=JÏÓÂÝyKxÕÜ;_¼Cɵ‚e±ÅŒ‘ÌY;*h8„ò³œŽÅ7—ƒIö[ðÈó„‰Nfë´?h©*éõp‹›«™4Ûú`ÙÏ- L•¢d´v Ú ù† úX$ÑÑÒ½+8O;é jC²ÇB%ï$|ßZjë9#K¾‰³Ë.ö2gϕؿ˜ÎGy!°ùË©ã—ÐUÛ÷3Íš‹Èëø5˜<Õ˜/ýwÔÇ<•C+·+Ò€ÈrgÊ0O˾¹Ÿ#WCœ;­ÐLŸvÝxëôˆÌålW¶ÿÇòÄPPôÑL—p¥bo½z†«ˆüõ©õ‡Þ¤îEص£ ë‹ÆßÖaDïáqËÇ õö à§[K»É Ýq+²€æYˆûÞࣄñ®&~ÑX§æS Ñ³ÐmÇ|srCFú ^\ϵ[+<ÇëN1OëMü†ÕLâòWqYô¨YH m¨e˜ûô;£­ÂJUPEMâ[ŰÓN0S1BÂ7wxQ-·&„ëûÃFUWµá¸ÄuOaùä}>]LóÓ «‹£$è =þ7”u™²`â£æ@çì±o.ÝS!ÉIJ›a¬jNâþ÷…Š ~±üšüêÛ³3µh%ÃRXs.æ{+q˜‚¯'ß%âvë^Þy@ ¬y”Ecì-Ëí`6…¯îk¯£y`Ñú4wjåw§¤4™í‚ÐÚI íÒý2¢ ý ÐÍÿœÒÄqV“f7$%@“O‚ X· UÅÈöÊŒ©éf;L®á*±îÙ1ì#¹>v¢_ sNZž<ÌÀ˜R¸Rÿø•‰hP3E|ƒ"!Î<·õUbjêW<Ɇ›£ÅàžºZO_)W·ö"»ë†*2")ŒËÉ$“*@žbf–¨mäQL»þìÐc¬M6ÉÈa Æ YáTûÅâ>îqI™/¡MU—›T!¡"²œÁº”UûçÆÞ%È{Î$Õ†®#_û¨¸e(¢q"&½ñã3=¿7Õãõ˜ŸÕ&5Û• ã²Àõ@ðÿÄ‘—quu¬¼!l°ô_PlÕ ¯@¯šàÑô†•…·ÆÆ~0*¹Ä)fOH?¬±Ï”øa$"óc›`stºý.½LŠD{×0Q¡:`Ñ!ºX@|þG¥ˆ|3_„“„aíâmÀÎÀòÏR+m8“ Ä¢™|»XÃÇ„Bú`û‘ [«Íóê>?ÛŽf›rÄýò—¬e®ÐСÙx;ß2õ“—œjÖHüÁ†}×½ááº6¾$}{p‡tç4`ÙhÞÎÝ2$!»ÞLüî°<ü¢´#K]ØaƒÖ蓵u´>óæ ©ÌµÅvýTçžßœ.ÛYMÕÝ~_›–Ï8ÿý=B´ö{wŠgŒRÏÓfdÇÅíâ¿ÃˆWNÂ#8·£~Ø6r¥¨ùë¢V7÷¢I–üb¢˜z=º:¥Öß—û Rë 5dz.Þý=Û‘0”œå"Êukð©Ü*\è™àvgW·u "ú?°_¦XObÝ`=ôZHt1ŠÈÈ,½¡FIO’y÷O£K¿’•GXWS¡aÜZ7WæÆî*Ԩǧ°m‚gvÖ_zfPÑ»úN†0•^T 2p ç…"ç>Ebý«•g7AnÇÌ®Þá†ýÑ”ûBRØ œ³¾-g`ØØa5N©¯+++ðÆ`šFvqS&Ó&MSÎ|Yñ¾JõP[Q¿d$XÁBÒ„PI.¢pú6‘le3ƒºXoˆ˜QUNË^"‘ŽJ´O5aÏ‚êëÄNëØ!ø¨oY¹ê#a¾ µ`Öm¢Ü‚±,ub¯†B…ƒÛ„tzŘ»¦V†t‚ÆÊG—8fw׳3.ÒÖ\šŒy÷‰2Ü­ûAÒ˜ (NÑÃOIšÛ?F8³”ïÚ™QÚZ+AΓƒ,Û&cK[1â½÷%¯üPÖ1žŒ ­T="^×’°KOîó¨*J2 4óñlm‹ðHeWfnkðÑ^¾.èà›´½^|ÐÐÙ xW´Œ¶xù6óôMömæõŒâùÛÏ%ýó=ÖàD¤x<†J@D„öhÔ2BgFýh[WשŒ”ø9ÔàÂÓs-êóËeìÆöìv øI„%³Ÿ ‡=,0iFAx?:avu탕_~ëg©< Ž0a©ìÍC#ý¦d€D…÷`0MÞ¨!ÌV õ*=6¡”=B”ˆ¥¨)ÆÌ¶jïÜÖüßF* ?£äÆÊ¡!ìÓN^ÜâÐhÎ…/][µÞðgcëhÁÙXÕÛXD´7îè9Púö£É¸ª—÷Ýʵ;4 s×lG‰ª†CM5>ØË5±(¢ÊðÔ¹Ü#íl¥’ Ú„í½øÄÍf¹^±vûªê{#Tã”Ô†În£‡ìúTB¶´Á6WBh#ÒE¢zÍŸ^­•­c½ÑgZ¡—û–Ȥp< 2"D+˽CŽÀЭ 5od­˜VÚM £B…Z;?õ#Ь[YÒJFžÿš¨´^¹Ñ ®‰»<éÉ(äèî€W(ŠÑ›šy ßãeÁ°¨qPÓ³)Ý9á—\&L»y†¨|„'L‡1ˆúW>LŒ""¸Y´ìdº8z‚8’„ ˆýiò÷óHTE¬&á5Çôe|w¶ÿ¸ä6h{H2ú– i8[‰&_>¢;õà uQtu¬QÜ#SŽÍÆïoN¹g.¥¿PfSï¬z[OuKqôsœAôϨébg+Ôì”ç:Yk¥¦r‰òì„‘N.qöy„ޝ¬Ã"ÍýÚl‘úðÐeêkÙ\–¯þþz5ÇYµ½Ñó]btß´ä@›Lqrö`Y@›ÈÛÕ»™/x>ø-xËk@‘>•’@uu‡l7c1mZ4žŸ5‘˜å4Cû.g't0¶ŠKú°ù­»†Ñ$lî9¢bŸŸÄ‡1[E)åN²ÈL‚$šª€fŒO¸8èoB”Ù>»’Ü¢-ç\ȈÜR°¨Pw,¢õMb¤òMº’¿Y/Ký%**Ù~â Øv»@”Uv¬Z=6|ÚÞÍ”†È—nMÙmÏÏ_%¦Òãö\ÁHŒ±Ý€7kÅgs~§ê5ÊˆÍ \µŠ¾f—Yõ¦=ÏêŸë —ºŒ‰ Š&’S!±ªÁ¤’f¡¼K3µÿ~qص®Î±¾c5èOÛ»vž'Ö6Ê™Jƒ…JÕK(Τ;¸3ÒuÉèëFc ôb@®€>n(ܰß'ð›Ëìb›§„[®ÛÒQv8ARWkúšÿqž‘²óýŸV ÒØÕöNⓃ{9ûÍÞûœšÂI|/‹oŒ1TÁ–×€©¸X29À/þAZù1ØW¢b?JXªºð‚¬Û Õ«æšXHHr¦Ý^î ׯpDÏzðü lj:=¾]{òâ6‡|ÉÅ&`Æ£»í×Aý2ƈWEç„°DN¯Ûüí^XWd ã´oÖxlvÖ´Z `$Ë6Œ°ƒ³KAª¿’Š"Q¾\¤Tµ²äá>9>P|»ÃVáLîKÇ tXÈE”K¯(ÝrRß¶¶ÐûãÖ`û*ëL²ò6Ÿm×2R· Q( nså*z!PÞe¬~•úvÎÊÓÀ·X÷¯½Ë‰³9·ít0{ü—ó1yg¨ Tz» ®ÝòÂpý¥~Éœtƒö†'…àµ'±î3ʯDù£ß±²w³»m„ŸS>Êî Ó=¢ eŸÕÁ] h'h,„wb _ƒˆÒ< ñàµD=+ãò#:Š ÓG]ý@½Ã„“’yç.©ŽMŽØVy9ViïÀÔˆ;éh*ûʱ޶ÔÄá•%U–ï¤þ7€»!Ù8%ºI™|@ŸØÕ!ã}ãÚJµ%(ŒT«¾Žþl¼ÛŃSÕð‹2ÁùC‰©déaqçÖ›•ªœÑ»Qÿè2—˜”`ªƒ{@—èÝý ‹Ÿá†võJ"‰…تnæI×·Þß-P~¶ Ü[ÿ$ïÑ7Uˆ“EÎMý›©vè=xWn;^x ÷®ØU âw e¦Í¿ _ÜTS*šU»³Å<™ùÙ¬¡H5›ÁH@%ÂÞÓV/6»pÏdJ ó‚ÿ¶s÷èûGãð¨—6þG±’¥h$Gñ!£r€¿¬~àw\¦zÐÄwO«:ù88v|ŒöâoÀñ?´å|úÑÎI÷åС«JéœÑèÔÐcÛ‡h$©²XO±sï§Cý¥Î%Á¸²ÑÄêsù'œµÖ 4›” Ró­®«cb¶œÊ´x'|BãÆÄTX0JJ‡ˆ™À`=V!ýÓÑIC æØÊiA8VÑ}Saq´êÂHÇ• yE„N¨K?Ÿ;êî[§Ò6u Lˆ=[ `zñE‹ì‹!ȺÇ2µ·Í!§2«%›eÀBJP÷eÕnUІÞä'FÁáÄ2Ç©uÞñ÷O©ë[i3Ħָ&ʨ阆A(‚¨V‹5TËû1 õLs+•-êsCwo?]1ô`)=§ÕpÊòþ½ªf½Êâ»Æ8s†87hCe¾ªóxPÛš‚9/5ç¿Þ°ÿ\‘—´éÅLP"V7À?”± Tª»…o¸çÏÏVÓ&2üÏÀó6‚ë=`ZÆÆ $Bp@É!WªoÛBdy9í ÅÛˉ¯A½SO›í&ð’‡ÄœLNzTø08ž.þz&Ç•˜ÈÊ-ŸVHsèÖýÁUå\kÉÎŽ†£¦ wŠ˜nþh½~ä]áËTÝ<;'Ü{?qáÑŠÉHÎG?ƒ>rÔ«ÞËÞ2ĬÑãèÜü'Òlê^ä³Mp:#— ÖÇŠÜ{ÛD™“ ¾š‰·à$3¸žðYጚ’ô÷FBã^žPRW—áeÊæYÝ!•þ|bŒóÃ3tÝŽ2+w6ò-áØ“þ®O{^[][Gûˆ ·jB¤úšõ¨½"{±×k2–C›][Óp”åÙbôÀ_´ëÑI;Ø—ÁW*|ÈÀŸÖ°F‚˶æTÁ{6usž­ið'Ä}­FøîYh<È7JÈiLô œÿ⺥\‡Mx|Gÿ$1†3C÷ƒ¿mµ‰{ä¶ŸÇ9Qgc«#ªcp´è—¾¤cŽ›<¢?!i¡áxUÉ­~œœ¢ÖKø²Y@}$œ!¥ò·0€É0|©AEÀ?‚ípÂ]WK!º‡ˆmòµÙ~j–8Õ^PÕC*€¿.ÅñÇ|uYÈ]¥p{KšGï PCOár §nœ ÷Þ¯]vº'· ØãÞ¡‹]ÏžWÐDaÌ(G=EEKHéˆÀ‘ÍbÑÜ Pôé앃^,[±²oŽÜ¿ÀýÝ™Öùäà\RÉÐËÙ)&%* */Ô•Œ…¹\ž¾Èòðê)£#z§zó™(øïØ®–pƒ¶)392‘I>]ç}ž t¯âÀ¥[’Ev¯Óu~b±ŸŽõÕ¶ ¤F1F´wñ†™¦tÛܹopŒuI&ýý‘&˜QÑý ž©7ô&ÏAà$§)'Õh×E—âºP˜¸ö7$¤È›@ƒì4’GìMˆˆ—ªFÖ+;W5=˜Å†?lçZŒzÅø…Ç"<† 7NλÜdÞø²ÿòÔJäº:YnµÅ±œ‰qà=`>‘Àö¾XË3±éGR¦ùRÒжšz%(c–w·ºŽì# è“ßp 너TJìòTÆÂVl‰¶Jw'Òaìe06>ºÂ-c´WtzG_†ƒ"Œô@ÂJ}Ù·J ˆA3æÿ>ÝÝwÃ*’ô0âXt>$è£öЦLþ!‡¤“£‰ê½_ÐÆ<¦xïó/dÆ-ûݦMœ·ïà¢ï1l q…‡ýAà¾çàÕWM;fÐÔÀ«êÿ"~RE 7‰á0tÌ} Æj‡>Z|“Z8j&AûàÀë>€<€#PÈ!i ǼM¼“jåòÐïéâfí1Jî½ñjxâR§Z+ÇPÓñÊÏøßÚwR Ùí¹|,qò#À{¼Ç:çLjҸ&æ' ˜$@Ól²Y†ý‰¶'Ïpœ>\jó¨ \æP€°åœw•Ä¢»½0X‰üW;çŸ=þ,é ehzE`zsKnC’:¯Îà°ÊõžÍë>â\,œÈ ’yqX£5±Kè"^GÄÞÁ#,î`¦U[¬ÖãÔèN±$B³øT ™~ÄÆò,B¬øº1v¿~Xå¬Ñ•òa˜žûî>ÂòS»7=¸Ï@´4À¯ªÂßÙ1Þh%š™ÒÉØ¤‰#ôynôõò†]4ßËõÉÜ¥'…1Ærôy‰/æ}¬q›‘õ vqL äâ>Ò %9n¨Lv^³9­PÕV1L¡ggOLýGjÁ ŽÎ½ÏÅômxêØ™6 :¼®è™oq¥Øâ¸»`Åp#Q²°6¾Rgo!œÒù‹‹´ï^5ZØÎˆ«q†ö1ÀfùA½»¹?›ýQ¯ÂAù*Ðu9äí’„×%nqyð¶›%ÞÈ΂C•[d_±èOfÔ=øúIüð½ÇÜ-³¦¦ öFË4ºå/¨I3_ÞjBÚïÜ=G Ë:ro‘ôÙŠŽ2îλ;ev|L'aáã.?Í~cOÆ7?ËËô‹Hø¤ŠñÓt£ö"]=™FŸåsÓ«¯çÒ+ rçƒ>î€eiC›Ú|Þ*“•Þ¶ubõf%s «üéžvJà«<":rEh¦8t žÁU+7Ë?¾· Šqiû2Øquú*â%4È#ÎëŠPäl*ÝÌÈþ¸)R{ß$Q{ö/Šì;²îsEjH¤(ž8îSVG£EœOÏ=‹•¼Ÿk– Ó¸ˆs.û¯ÐðvJª·Mÿ¤ÛÄ  h Ñ{ZÿvwØ q•QgåÖb÷ã1áiU³Ú¡^Ò¼Æaö·/ŒIPkù–e^¸¦Î’:’+à…̶‹ñeÇꯙšÞÙê€ßзÖq| ”®EOͤ•î+A'HT»uFH§˜h\O€îCf'*°’”O Q7ÿÔ}X|Hb®ðçΞg#ùñ7¾¤2.†=zé Vo¡{²4ŒZè¡ýˆ‚Œ¡š Ù:&yÀV‹‚Ó·­¥n@*Øþ'úo­?4Xß9½*O«yÆ?—ô°ùxJmܸ}•÷ìÁ »c«€ca_k'uõTŠõ*ZpÔPuØ6e²É–m šÈCëŸ4²µ ca¢4?º"Ç‚wGñ·°{dÂYÿ¨;åæ9§D:o µúÄ‚Ø ìÀH´>Ìݪ¢Q`kÊA‰økeè’ñgÊ%NÌ©dI°ŸÞV°lso5|Ê23ÄÃî,3·€äoB4*ôÝö#äÿçå‘-Î|íí¶ôÑ3Ê"`LZHÖÕÿÄqP³ŸïC7Qýà¤G–¨e2É|Ïzí”1$”7YÏãô¢Ê³Ø âX<Þfk¡ÇÛ‡ëÚUæÕ|½9CÖp¿_4òü!n”·Cbó Ö]Cï¡è±ç‘§Òצ Aµø]ºFÐa@œWZgD: -:æáð…ëO—½X–¼QUQðÞaÒçYÂéY(¯¡©CÚ¶ŸLE,ñ?~Á Ì VÃ*Qr0RîuŠdØXn1Ïxš pË{¶.Ò–ëj*xaT3‹;`íň~ ²ÁÞ²­F öÿ*«¸& ÷ê2A— ʪŸBp¿bsÅCÃãI‘…Úþlaå€giè?ÿËÄDA—›Žô°™Ì Tëò! ýÅÖ~mú*Ôyæ¨ DÅZGä„ÞÇÙ¥ÁטÀD›èÕ@ÜTÉ;±sx³>‚Þ ‚# ¹Ûš…×4ÙŠõÐ%^&V apSÈÉ tpz›Í€ø¯²}^3ì}„•ÐõÁMª‰”[L‘ÏõÏø¢Çú[¼„{¦À†y_(«Ñ¢~Cà »p¥S¡½ª‡¯wK¦º@YXt­ìÏðödî󳞥{VÓÆ±™Se”¿dI‡H:v3{±Ù:³•É;Δs&ôuD$ ™ï7fS{ÚGœ fåÖõ8:jO—îâNnÒZ`ñoíª”zãWù$¢37N}–cª­Ü{þªx­Ú¸6&ކÿ%·f~C1Fù‰” ÚÏÜóFD_\R¤¶ §ãõøC%9©ÄzÉOD¥{E16¶ÇG9ï}õ“ek–zÎÓÕEDŽýŸ(XéD—¶lä8/:¾SìÚ>òî…|·ÅéëÊÇ"ðR÷x=]·C¨Ò £&íó Œ `hOú$#Ñ2É®IEdÊzn·n> \×AiòL£Ã„êÚ¬|¬IÝ+¤Äÿb„C–›¨›S<Aät›™ôP¹hwâ>÷FåÖ]SªEºÅ2ê8¬ã ùd†·¾¹P©§=õ+|È©ômqqýÑ*ìÚ>±±—1²nšHÄnGš“Gø%?B¹ø·ùûþ T«ç™®›X’i*:¢Åé[ÃXª¾QBUA ÃtÎw/q7A{Šo1Vî¼aÊe@+ºÈNóõÙŒhÞ·š!‹ô w/X Ή_”˜•Ƙm<¸ÅõÂÚRÐ)‡½³•zá›hxŠˆbË\.ä^ ¼ƒøDtk2÷ßíz'5HºnÀ Á¹fuÜ ¯ú—5õs†ÙÓcì¾ÛjoÓ¥‰ÀfwÀ™r‰|}ë×5•7au¿´K¢ô9Kd¯—úÖ&ÕÈŠ¼«P”ÊFà+x>ý´y¼›aR0kgc˜$”¦7ˉ=#ÿÒÍÞ£kwœš»—€ ýš†SŸ»y"ÁÂA]Žö 36ÞA˸t’ÈbeÓò ¬Mlopk^Ô+)¤…|PX¼¯éÅ:©ŠÙ¥‰¾ìÄØ7/÷â8š`?• †íh”du•gŒn7>à¡ ©¥N¦Y‡KrùGw1KÍâÿßX&¥ hÑ.j¡BP@E°}¬‡ˆû¯“@È£óKðöBÃàÇ4?«*-¨“Ü7ä; 5œ îBè$ÄÑ6Ïd[Ü$®®ì/Åñ>s‰êèGpvÙ¢ÝÉA䖹Н¿‚ŽkÞͰÏhLÁhþþ XQ)+ i†Óý1$•ª½/“^Uf›G„ÈÆÎ„ùÈš]ÑûïÌ(ybp5¸ºdïê75j—óTßÈ‹un‹rTiXòêVnäM)WKÄGê¼ÁPï©®\ ë= fÂRBß“ 柙3¥îö‚½u•ø‘Jaá²{Á)ñĚۆł­¢ÌbºLCÞÖÜ;÷µ.&`ÚÊQ¡!ÅÎ&2à6ªF±È³QÖsåxÊa³ü\ÞuNÂ|Ϧƒ²íaߥðšŸ^C§…쌂X5è1ZI:U#=HÉ•ùVªVÜ>0 ‹YZsurveillance/vignettes/hhh4.Rnw0000644000175100001440000007575012553441050016334 0ustar hornikusers%\VignetteIndexEntry{Additional documentation of the function hhh4} %\VignetteDepends{surveillance, maptools, Matrix} %\VignetteKeyword{getting started} %\VignettePackage{surveillance} \documentclass[a4paper,11pt]{article} \usepackage{natbib} \bibliographystyle{apalike} % Preamble parts \usepackage[T1]{fontenc} % Make it possible to use danish characters !! \usepackage[utf8]{inputenc} \usepackage{hyperref} \newcommand{\email}[1]{\href{mailto:#1}{\normalfont\texttt{#1}}} \usepackage{times} \renewcommand{\sfdefault}{ptm} \usepackage{bm} \usepackage{amsmath} \usepackage{amssymb} \usepackage{latexsym} \usepackage{verbatim} \usepackage{relsize} \usepackage{epsfig} \usepackage{comment} \usepackage[english]{babel} \usepackage{pdfpages} \setlength{\parindent}{0pt} \setcounter{secnumdepth}{1} \newcommand{\Po}{\operatorname{Po}} \newcommand{\NegBin}{\operatorname{NegBin}} \newcommand{\n}{{\cal N}} \newcommand{\pkg}[1]{{\fontseries{b}\selectfont #1}} \newcommand{\surveillance}{\pkg{surveillance}} \newcommand{\code}[1]{\texttt{#1}} \newcommand{\hhh}{\texttt{hhh4}} \newcommand{\R}{\textsf{R}} \newcommand{\sts}{\texttt{sts}} \newcommand{\example}[1]{\textit{Example: #1}} \title{The function \code{hhh4} in the \R-package \surveillance} %' \author{ Michaela Paul and Sebastian Meyer\thanks{Author of correspondence: \email{Sebastian.Meyer@ifspm.uzh.ch}}\\ Division of Biostatistics\\ Institute of Social and Preventive Medicine\\ University of Zurich, Switzerland } \begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Sweave %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \SweaveOpts{prefix.string=figs/hhh4, width=10,height=4.5, keep.source=T, strip.white=true} \setkeys{Gin}{width=1\textwidth} \definecolor{Sinput}{rgb}{0,0,0.56} \definecolor{Scode}{rgb}{0,0,0.56} \definecolor{Soutput}{rgb}{0,0,0} \DefineVerbatimEnvironment{Sinput}{Verbatim}{formatcom={\color{Sinput}},fontshape=sl,fontsize=\relsize{-1}} \DefineVerbatimEnvironment{Soutput}{Verbatim}{formatcom={\color{Soutput}},fontfamily=courier, fontshape=it,fontsize=\relsize{-2}} \DefineVerbatimEnvironment{Scode}{Verbatim}{formatcom={\color{Scode}},fontshape=sl,fontsize=\relsize{-1}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Initial R code %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <>= library("surveillance") options(width=70) set.seed(247) ##################################################################### # create directory figs if it does not exist ##################################################################### if(!file.exists("figs/")) dir.create("figs/") ###################################################################### #Do we need to compute or can we just fetch results ###################################################################### compute <- !file.exists("hhh4-cache.RData") #load computed results if(!compute) load("hhh4-cache.RData") print(paste("Doing computations: ",compute,sep="")) @ \maketitle \begin{abstract} \noindent This document gives an introduction to the use of the function \hhh\ for modelling univariate and multivariate time series of infectious disease counts. The function is part of the \R-package \surveillance, which provides tools for the visualization, modelling and monitoring of surveillance time series. The basic functionality of \surveillance\ is introduced in the package vignette \citep{vignette} and in \cite{hoehle-2007} with main focus on outbreak detection methods. The following illustrates the use of \hhh\ as estimation and prediction routine for the modelling framework proposed by \citet{held-etal-2005}, and extended in \citet{paul-etal-2008}, \citet{paul-held-2011} and \citet{herzog-etal-2010}. \end{abstract} \section{Introduction}\label{sec:intro} To meet the threats of infectious diseases, many countries have established surveillance systems for the reporting of various infectious diseases. The systematic and standardized reporting at a national and regional level aims to recognize all outbreaks quickly, even when aberrant cases are dispersed in space. Traditionally, notification data, i.e.\ counts of cases confirmed according to a specific definition and reported daily, weekly or monthly on a regional or national level, are used for surveillance purposes. The \R-package \surveillance\ provides functionality for the retrospective modelling and prospective change-point detection in the resulting surveillance time series. A recent introduction to the package with focus on outbreak detection methods is given by \cite{hoehle-mazick-2010}. This document illustrates the functionality of the function \hhh\ for the modelling of univariate and multivariate time series of infectious disease counts. It is part of the \surveillance\ package as of version 1.3. Section~\ref{sec:data} introduces the S4 class data structure used to store surveillance time series data within the package. Access and visualization methods are outlined by means of built-in data sets. In Section~\ref{sec:model}, the statistical modelling approach by \cite{held-etal-2005} and further model extensions are described. After the general function call and arguments are shown, the detailed usage of \hhh\ is demonstrated in Section~\ref{sec:hhh} using data introduced in Section~\ref{sec:data}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% DATA %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Surveillance data}\label{sec:data} Denote by $\{y_{it}; i=1,\ldots,I,t=1,\ldots,T\}$ the multivariate time series of disease counts for a specific partition of gender, age and location. Here, $T$ denotes the length of the time series and $I$ denotes the number of units (e.g\ geographical regions or age groups) being monitored. Such data are represented using objects of the S4 class \sts\ (surveillance time series). This class contains the $T\times I$ matrix of counts $y_{it}$ in a slot \code{observed}. An integer slot \code{epoch} denotes the time index $1\leq t \leq T$ of each row in \code{observed}. The number of observations per year, e.g.\ 52 for weekly or 12 for monthly data, is denoted by \code{freq}. Furthermore, \code{start} denotes a vector of length two containing the start of the time series as \code{c(year, epoch)}. For spatially stratified time series, the slot \code{neighbourhood} denotes an $I \times I$ adjacency matrix with elements 1 if two regions are neighbors and 0 otherwise. For map visualizations, the slot \code{map} links the multivariate time series to geographical regions of an ESRI shapefile (using functionality from the package \pkg{maptools}~\citep{maptools}). Additionally, the slot \code{populationFrac} contains a $T\times I$ matrix representing population fractions in unit $i$ at time $t$. The package \surveillance\ contains a number of time series in the \code{data} directory. Most data sets originate from the SurvStat@RKI database\footnote{\url{http://www3.rki.de/SurvStat}}, maintained by the Robert Koch Institute (RKI), Germany. Selected data sets will be analyzed in Section~\ref{sec:hhh} and are introduced in the following. Note that many of the built-in datasets are stored in the S3 class data structure \mbox{\code{disProg}}. They can be easily converted into the S4 \sts\ data structure using the function \code{disProg2sts}. The resulting \sts\ object can be accessed similar as standard \code{matrix} objects and allows easy temporal and spatial aggregation as will be shown in the remainder of this section. \\ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \example{Influenza and meningococcal disease in Germany 01/2001--52/2006} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% As a first example, the weekly number of influenza and meningococcal disease cases in Germany is considered. <>= # load data data("influMen") # convert to sts class and print basic information about the time series print(fluMen <- disProg2sts(influMen)) @ The univariate time series of meningococcal disease counts can be obtained with <>= meningo <- fluMen[, "meningococcus"] dim(meningo) @ The \code{plot} function provides an interface to the visual representation of the multivariate time series in time, space and space-time which is controlled by the \code{type} argument: <>= plot(fluMen, type = observed ~ time | unit, # type of plot same.scale = FALSE, # unit-specific ylim ? col = "grey" # color of bars ) @ See \cite{hoehle-mazick-2010} for a detailed description of the plot routines.\\ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \example{Influenza in Southern Germany, 01/2001-52/2008} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The spatio-temporal spread of influenza in the 140 Kreise (districts) of Bavaria and Baden-W\"urttemberg is analyzed using the weekly number of cases reported to the RKI~\citep{survstat-fluByBw} in the years 2001--2008. An \sts\ object containing the data is created as follows: <>= # read in observed number of cases flu.counts <- as.matrix(read.table(system.file("extdata/counts_flu_BYBW.txt", package = "surveillance"))) # remove 'X' in column names colnames(flu.counts) <- substring(colnames(flu.counts),first = 2, last = 5) # read in adjacency matrix with elements 1 if two regions share a common border nhood <- as.matrix(read.table(system.file("extdata/neighbourhood_BYBW.txt", package = "surveillance"))) @ <>= # visualize adjacency matrix library("Matrix") print(image(Matrix(nhood))) @ \begin{center} \vspace*{-2em} \includegraphics[width=0.5\textwidth]{figs/hhh4-nhoodByBw} \end{center} <>= # read in a shapefile of the districts in Bavaria and Baden-Wuerttemberg map <- maptools::readShapePoly( system.file("shapes/districts_BYBW.shp", package = "surveillance"), IDvar = "id" ) # read in population fractions p <- matrix( read.table(system.file("extdata/population_2001-12-31_BYBW.txt", package = "surveillance"), header = TRUE)$popFrac, nrow = nrow(flu.counts), ncol = ncol(flu.counts), byrow = TRUE) # create sts object flu <- new("sts", epoch = 1:nrow(flu.counts), observed = flu.counts, start = c(2001, 1), freq = 52, neighbourhood = nhood, map = map, population = p ) @ This \sts\ object is already included in \surveillance\ and may be loaded with \code{data(fluBYBW)}. A map of the total number of cases in the year 2001 may be obtained as follows: \setkeys{Gin}{width=.5\textwidth} %\vspace*{-2em} \begin{center} <>= par(mar=c(0,0,0,0)) plot(flu[year(flu) == 2001, ], # select year 2001 type = observed ~ 1 | unit, # map of counts aggregated over times t labels = FALSE # suppress region labels in map ) @ \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \example{Measles in Germany, 01/2005--52/2007} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The following data set contains the weekly number of measles cases in the 16 German Bundesl\"ander (federal states), in the years 2005--2007. These data are analyzed in~\cite{herzog-etal-2010} after aggregation into successive bi-weekly periods. \setkeys{Gin}{width=1\textwidth} \begin{center} <>= data("measlesDE") # aggregate into successive bi-weekly periods measles2w <- aggregate(measlesDE, nfreq = 26) plot(measles2w, type = observed ~ time, # plot aggregated over all units i main = "Bi-weekly number of measles cases in Germany") @ \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Model %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Model formulation}\label{sec:model} Retrospective surveillance aims to identify outbreaks and (spatio-)temporal patterns through statistical modelling. Motivated by a branching process with immigration, \cite{held-etal-2005} suggest the following model for the analysis of univariate time series of infectious disease counts $\{y_{t}; t=1,\ldots,T\}$. The counts are assumed to be Poisson distributed with conditional mean \begin{align*} \mu_{t} = \lambda y_{t-1}+ \nu_{t}, \quad(\lambda,\nu_{t}>0) \end{align*} where $\lambda$ and $\nu_t$ are unknown quantities. The mean incidence is decomposed additively into two components: an epidemic or \emph{autoregressive} component $\lambda y_{t-1}$, and an \emph{endemic} component $\nu_t$. The former should be able to capture occasional outbreaks whereas the latter explains a baseline rate of cases with stable temporal pattern. \cite{held-etal-2005} suggest the following parametric model for the endemic component: \begin{align}\label{eq:nu_t} \log(\nu_t) =\alpha + \beta t + \left\{\sum_{s=1}^S \gamma_s \sin(\omega_s t) + \delta_s \cos(\omega_s t)\right\}, \end{align} where $\alpha$ is an intercept, $\beta$ is a trend parameter, and the terms in curly brackets are used to model seasonal variation. Here, $\gamma_s$ and $\delta_s$ are unknown parameters, $S$ denotes the number of harmonics to include, and $\omega_s=2\pi s/$\code{freq} are Fourier frequencies (e.g.\ \code{freq = 52} for weekly data). For ease of interpretation, the seasonal terms in \eqref{eq:nu_t} can be written equivalently as \begin{align*} \gamma_s \sin(\omega_s t) + \delta_s \cos(\omega_s t)= A_s \sin(\omega_s t +\varphi_s) \end{align*} with amplitude $A_s=\sqrt{\gamma_s^2+\delta_s^2}$ describing the magnitude, and phase difference $\tan(\varphi_s)=\delta_s/\gamma_s$ describing the onset of the sine wave. To account for overdispersion, the Poisson model may be replaced by a negative binomial model. Then, the conditional mean $\mu_t$ remains the same but the conditional variance increases to $\mu_t (1+\mu_t \psi)$ with additional unknown overdispersion parameter $\psi>0$. The model is extended to multivariate time series $\{y_{it}\}$ in \cite{held-etal-2005} and \cite{paul-etal-2008} by including an additional \emph{neighbor-driven} component, where past cases in other (neighboring) units also enter as explanatory covariates. The conditional mean $\mu_{it}$ is then given by \begin{align} \label{eq:mu_it} \mu_{it} = \lambda y_{i,t-1} + \phi \sum_{j\neq i} w_{ji} y_{j,t-1} +e_{it} \nu_{t}, \end{align} where the unknown parameter $\phi$ quantifies the influence of other units $j$ on unit $i$, $w_{ji}$ are suitably chosen known weights and $e_{it}$ corresponds to an offset (such as population fractions at time $t$ in region $i$). A simple choice for the weights is $w_{ji}=1$ if units $j$ and $i$ are adjacent and 0 otherwise. See \cite{paul-etal-2008} for a discussion of alternative weights. When analyzing a specific disease observed in, say, multiple regions or several pathogens (such as influenza and meningococcal disease), the assumption of equal incidence levels or disease transmission across units is questionable. To address such heterogeneity, the unknown quantities $\lambda$, $\phi$, and $\nu_t$ in \eqref{eq:mu_it} may also depend on unit $i$. This can be done via \begin{itemize} \item unit-specific fixed parameters, e.g.\ $\log(\lambda_i)=\alpha_i$ \citep{paul-etal-2008}; \item unit-specific random effects, e.g\ $\log(\lambda_i)=\alpha_0 +a_i$, $a_i \stackrel{\text{iid}}{\sim} \n(0,\sigma^2_\lambda)$ \citep{paul-held-2011}; \item linking parameters with known (possibly time-varying) explanatory variables, e.g.\ $\log(\lambda_i)=\alpha_0 +x_i\alpha_1$ with region-specific vaccination coverage $x_i$ \citep{herzog-etal-2010}. \end{itemize} A call to \hhh\ fits a Poisson or negative binomial model with conditional mean \begin{align*} \mu_{it} = \lambda_{it} y_{i,t-1} + \phi_{it} \sum_{j\neq i} w_{ji} y_{j,t-1} +e_{it} \nu_{it} \end{align*} to a multivariate time series of counts. Here, the three unknown quantities are decomposed additively on the log scale \begin{align} \log(\lambda_{it}) &= \alpha_0 + a_i +\bm{u}_{it}^\top \bm{\alpha} \tag{\code{ar}}\\ \log(\phi_{it}) &= \beta_0 + b_i +\bm{x}_{it}^\top \bm{\beta} \tag{\code{ne}}\\ \log(\nu_{it}) &= \gamma_0 + c_i +\bm{z}_{it}^\top \bm{\gamma}\tag{\code{end}} \end{align} where $\alpha_0,\beta_0,\gamma_0$ are intercepts, $\bm{\alpha},\bm{\beta},\bm{\gamma}$ are vectors of unknown parameters corresponding to covariate vectors $\bm{u}_{it},\bm{x}_{it},\bm{z}_{it}$, and $a_i,b_i,c_i$ are random effects. For instance, model~\eqref{eq:nu_t} with $S=1$ seasonal terms may be represented as $\bm{z}_{it}=(t,\sin(2\pi/\code{freq}\;t),\cos(2\pi/\code{freq}\;t))^\top$. The stacked vector of all random effects is assumed to follow a normal distribution with mean $\bm{0}$ and covariance matrix $\bm{\Sigma}$, see \cite{paul-held-2011} for further details. Inference is based on (penalized) likelihood methodology as proposed in \cite{paul-held-2011}. In applications, each component (\code{ar})--(\code{end}) may be omitted in parts or as a whole. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Function call and arguments %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Function call and control settings}\label{sec:hhh} The estimation procedure is called with <>= hhh4(sts, control) @ where \code{sts} denotes a (multivariate) surveillance time series and the model is specified in the argument \code{control} in consistency with other algorithms in \surveillance. The \code{control} setting is a list of the following arguments: <>= control = list( ar = list(f = ~ -1), # formula: exp(u'alpha) * y_i,t-1 ne = list(f = ~ -1, # formula: exp(x'beta) * sum_j {w_ji * y_j,t-1} weights = neighbourhood(stsObj)), # matrix of weights w_ji end = list(f = ~ 1, # formula: exp(z'gamma) * e_it offset = 1), # optional offset e_it family = "Poisson", # Poisson or NegBin model subset = 2:nrow(stsObj), # subset of observations to be used optimizer = list(), # control optimization procedure verbose = FALSE, # no progress information is printed start = list(fixed = NULL, # list with initial values for fixed, random = NULL, # random, and sd.corr = NULL), # variance parameters data = list(t=epoch(stsObj)-1), # named list of covariates keep.terms = FALSE # do not keep the model terms ) @ The first three arguments \code{ar}, \code{ne}, and \code{end} specify the model components using \code{formula} objects. As default, the counts $y_{it}$ are assumed to be Poisson distributed. A negative binomial model is obtained with \code{family = "NegBin1"}. By default, both the penalized and marginal log-likelihoods are maximized using the optimization routine implemented in \code{nlminb}. The methods implemented in \code{optim} may also be used, e.g.\ \code{optimizer = list(variance = list(method="Nelder-Mead")} is an attractive alternative for maximization of the marginal log-likelihood with respect to the variance parameters (see \code{?hhh4}). Initial values for the fixed, random, and variance parameters are passed on in the \code{start} argument. If the model contains covariates, these have to be specified in the \code{data} argument. When covariates do not vary across units, they may be passed on as a vector of length $T$. Otherwise, covariate values have to be stored and passed on in a matrix of size $T \times I$. In the following, the functionality of \hhh\ is demonstrated using the data sets introduced in Section~\ref{sec:data} and previously analyzed in \cite{paul-etal-2008}, \cite{paul-held-2011} and \cite{herzog-etal-2010}. Selected results are reproduced. For a thorough discussion we refer to these papers. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsubsection{Univariate modelling} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% As a first example, consider the univariate time series of meningococcal infections in Germany, 01/2001--52/2006 \citep[cf.~Tab.~1 in ][]{paul-etal-2008}. A Poisson model without autoregression and $S=1$ seasonal term is specified as follows: <>= # specify formula object for endemic component ( f_S1 <- addSeason2formula(f = ~ 1, S = 1, period = 52) ) # fit Poisson model summary(hhh4(meningo, control = list(end = list(f = f_S1), family = "Poisson"))) @ A corresponding negative binomial model is obtained via <>= result1 <- hhh4(meningo, control = list(end = list(f = f_S1), family = "NegBin1")) @ As default, the autoregressive component is omitted with \code{$\sim$ -1} in the formula specification. In can be included in the model with <>= m2 <- list(ar = list(f = ~ 1), # log(lambda) = alpha end = list(f = f_S1), family = "NegBin1", # use estimates from previous model as initial values start = list(fixed = c(log(0.1), # initial values for alpha, coef(result1)) # and remaining parameters ) ) # fit model result2 <- hhh4(meningo, control = m2) # extract ML estimates round(coef(result2, se = TRUE, # also return standard errors idx2Exp = 1 # exponentiate 1st param [-> exp(alpha)] ),2) # get AIC AIC(result2) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsubsection{Bivariate modelling} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Now, the weekly numbers of both meningococcal disease (\textsc{MEN}) and influenza (\textsc{FLU}) cases are analyzed to investigate whether influenza infections predispose meningococcal disease \citep[cf.~Tab.~2 in][]{paul-etal-2008}. This requires disease-specific parameters which are specified in the formula object with \code{fe(\ldots)}. In the following, a negative binomial model with mean \begin{align*} \binom{\mu_{\text{men},t}} {\mu_{\text{flu},t}}= \begin{pmatrix} \lambda_\text{men} & \phi \\ 0 & \lambda_\text{flu} \\ \end{pmatrix} \binom{\text{\sc men}_{t-1}}{\text{\sc flu}_{t-1}} + \binom{\nu_{\text{men},t}}{\nu_{\text{flu},t}}\,, \end{align*} where the endemic component includes $S=3$ seasonal terms for the \textsc{FLU} data and $S=1$ seasonal terms for the \textsc{MEN} data is considered. Here, $\phi$ quantifies the influence of past influenza cases on the meningococcal disease incidence. This model corresponds to the second model of Tab.~2 in \cite{paul-etal-2008} and is fitted as follows: <>= # no "transmission" from meningococcus to influenza neighbourhood(fluMen)["meningococcus","influenza"] <- 0 neighbourhood(fluMen) @ <>= # create formula for endemic component f.end <- addSeason2formula(f = ~ -1 + fe(1, which = c(TRUE, TRUE)), # disease-specific intercepts S = c(3, 1), # S = 3 for flu, S = 1 for men period = 52) # specify model m <- list(ar = list(f = ~ -1 + fe(1, which=c(TRUE, TRUE))), ne = list(f = ~ -1 + fe(1, which=c(FALSE, TRUE))), end = list(f = f.end), family = "NegBinM" ) # fit model summary(result <- hhh4(fluMen, control = m)) @ A plot of the estimated mean for the meningococcal disease data, decomposed into the three components, is obtained with \setkeys{Gin}{width=.8\textwidth} \begin{center} <>= plot(result, units = "meningococcus") @ \end{center} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsubsection{Multivariate modelling} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% For disease counts observed in a large number of regions, say, (i.e.\ highly multivariate time series of counts) the use of region-specific parameters to account for regional heterogeneity is no longer feasible, as estimation and identifiability problems may occur. \cite{paul-held-2011} propose a random effects formulation to analyze the weekly number of influenza cases in \Sexpr{ncol(flu)} districts of Southern Germany. For example, consider a model with random intercepts in the endemic component: $c_i \sim \n(0,\sigma^2_\nu), i=1,\ldots,I$. Such effects are specified in a formula object as <>= f.end <- ~ -1 + ri(type = "iid", corr = "all") @ Setting \code{type = "car"} would assume that the random effects are spatially correlated instead of uncorrelated. See \cite{paul-held-2011} for further details. The argument \code{corr = "all"} allows for correlation between region-specific random effects in different components, e.g.\ random incidence levels $c_i$ in the endemic component and random effects $b_i$ in the neighbor-driven component. The following call to \hhh\ fits such a random effects model with linear trend and $S=3$ seasonal terms in the endemic component and a fixed autoregressive parameter $\lambda$ to the influenza data \citep[cf. model B2 in Tab.~3 in][]{paul-held-2011}. <>= # weight matrix w_ji = 1/(No. neighbors of j) if j ~ i, and 0 otherwise wji <- neighbourhood(flu)/rowSums(neighbourhood(flu)) f.end <- addSeason2formula(f = ~ -1 + ri(type = "iid", corr="all") +I((t-208)/100) , S = 3, period = 52) model.B2 <- list(ar = list(f = ~ 1), ne = list(f = ~ -1+ ri(type = "iid", corr="all"), weights = wji), end = list(f = f.end, offset = population(flu)), family = "NegBin1", verbose = 1, start=list(fixed=c(-0.9,-1.53,0.56,2.45,2.05,0.33,-0.49,0.21,-0.36,0.21,-0.09), sd.corr=c(-0.02,-0.34,0.68)) ) if(compute){ # this is time-consuming... result.B2 <- hhh4(flu, model.B2) s.B2 <- summary(result.B2) system.time(pred.B2 <- oneStepAhead(result.B2,tp=nrow(flu)-2*52)) meanSc.B2 <- colMeans(scores(pred.B2)) save(s.B2, meanSc.B2, file="hhh4-cache.RData") } @ <>= # weight matrix w_ji = 1/(No. neighbors of j) if j ~ i, and 0 otherwise wji <- neighbourhood(flu)/rowSums(neighbourhood(flu)) # endemic component: iid random effects, linear trend, and S=3 seasonal terms f.end <- addSeason2formula(f = ~ -1 + ri(type = "iid", corr="all") + I((t-208)/100), S = 3, period = 52) model.B2 <- list(ar = list(f = ~ 1), ne = list(f = ~ -1+ ri(type = "iid", corr="all"), weights = wji), end = list(f = f.end, offset = population(flu)), family = "NegBin1" ) # fit model summary(result.B2 <- hhh4(flu, model.B2)) @ <>= s.B2 @ Model choice based on information criteria such as AIC or BIC is well explored and understood for models that correspond to fixed-effects likelihoods. However, in the presence of random effects their use can be problematic. For model selection in time series models, the comparison of successive one-step-ahead forecasts with the actually observed data provides a natural alternative. In this context, \cite{gneiting-raftery-2007} recommend the use of strictly proper scoring rules, such as the logarithmic score or the ranked probability score. See \cite{czado-etal-2009} and \cite{paul-held-2011} for further details. One-step-ahead predictions for the last 2 years for model B2 are obtained as follows: <>= pred.B2 <- oneStepAhead(result.B2, tp = nrow(flu) - 2 * 52) @ The mean logarithmic and mean ranked probability score are then computed with <>= colMeans(scores(pred.B2)[, c("logs", "rps")]) @ <>= meanSc.B2[ c("logs", "rps")] @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Measles data <>= data(MMRcoverageDE) cardVac1 <- MMRcoverageDE[1:16,3:4] adjustVac <- function(cardVac, p=0.5,nrow=1){ card <- cardVac[,1] vac <- cardVac[,2] vacAdj <- vac*card + p*vac*(1-card) return(matrix(vacAdj,nrow=nrow, ncol=length(vacAdj), byrow=TRUE)) } vac0 <- 1-adjustVac(cardVac1,p=0.5,nrow=measles2w@freq*3) colnames(vac0) <- colnames(measles2w) @ As a last example, consider the number of measles cases in the 16 federal states of Germany, in the years 2005--2007. There is considerable regional variation in the incidence pattern which is most likely due to differences in vaccination coverage. In the following, information about vaccination coverage in each state, namely the log proportion of unvaccinated school starters, is included as explanatory variable in a model for the bi-weekly aggregated measles data. See \cite{herzog-etal-2010} for further details. Vaccination coverage levels for the year 2006 are available in the dataset \code{data(MMRcoverageDE)}. This dataset can be used to compute the $\Sexpr{nrow(vac0)}\times \Sexpr{ncol(vac0)}$ matrix \code{vac0} with adjusted proportions of unvaccinated school starters in each state $i$ used by \cite{herzog-etal-2010} <<>>= vac0[1:2, 1:5] @ A Poisson model which links the autoregressive parameter with this covariate and contains $S=1$ seasonal term in the endemic component \citep[cf.~model A0 in Tab.~3 in ][]{herzog-etal-2010} is obtained with <>= # endemic component: Intercept + S = 1 sine/cosine pair f.end <- addSeason2formula(f = ~ 1, S = 1, period = 26) # autoregressive component: Intercept + vaccination coverage information model.A0 <- list(ar = list(f = ~ 1 + logVac0), end = list(f = f.end, offset = population(measles2w)), data = list(t = epoch(measles2w), logVac0 = log(vac0))) # fit model result.A0 <- hhh4(measles2w, model.A0) # parameter estimates round(coef(result.A0, se = TRUE, # also return standard errors amplitudeShift = TRUE # transform sin/cos terms to ), 2) # Amplitude/shift formulation @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Summary %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 \section{Summary} As part of the \R-package \surveillance, the function \hhh\ provides a flexible tool for the modelling of multivariate time series of infectious disease counts. The discussed count data model is able to account for serial and spatio-temporal correlation, as well as heterogeneity in incidence levels and disease transmission. The functionality of \hhh\ was illustrated using several built-in data sets. \bibliography{references} \end{document} surveillance/vignettes/glrnb.Rnw0000644000175100001440000005470112303577443016607 0ustar hornikusers%\VignetteIndexEntry{Additional documentation of the function algo.glrnb} %\VignetteKeywords{getting started} %\VignettePackage{surveillance} %\VignetteDepends{surveillance} \documentclass[a4paper,11pt]{article} \usepackage{natbib} \bibliographystyle{apalike} % Preabmle parts \usepackage[T1]{fontenc} % Make it possible to use danish characters !! \usepackage{url} \usepackage{hyperref} \usepackage{times} \renewcommand{\sfdefault}{ptm} % Brug times som font - vigtigt i % pdflatex? \usepackage{bm} \usepackage{amsmath} \usepackage{amssymb} \usepackage{latexsym} \usepackage{verbatim} \usepackage{relsize} \usepackage{epsfig} \usepackage{comment} \newcommand{\surveillance}{\texttt{surveillance}} \usepackage{pdfpages} \setlength{\parindent}{0pt} \title{The function 'algo.glrnb' in the R-Package 'surveillance'} \author{ Valentin Wimmer$^{(1,2)}$\thanks{Author of correspondence: Email: \texttt{Valentin.Wimmer@gmx.de}}$\>\>$ and Michael H\"{o}hle$^{(1,2)}$ \\ (1) Department of Statistics\\ University of Munich, Germany\\ (2) MC-Health - Munich Center of Health Sciences } \date{\today} \begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Sweave %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Put all in another directory \SweaveOpts{prefix.string=figs/vignette_glrnb} \setkeys{Gin}{width=1\textwidth} \DefineVerbatimEnvironment{Sinput}{Verbatim}{fontshape=sl,fontsize=\relsize{-1}} \DefineVerbatimEnvironment{Soutput}{Verbatim}{fontshape=s1,fontsize=\relsize{-1}} \DefineVerbatimEnvironment{Scode}{Verbatim}{fontshape=sl,fontsize=\relsize{-1}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Initial R code %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <>= library(surveillance) library(xtable) options(SweaveHooks=list(fig=function() par(mar=c(5,4,4,0),cex.axis=1.5,cex.lab=1.5,cex.main=1.5))) options(width=70) set.seed(247) ##################################################################### # create directory figs if it does not exist ##################################################################### if(!file.exists("figs/")) dir.create("figs/") @ \maketitle %\mbox{}\hrulefill\\ \begin{abstract} \noindent The aim of this document is to show the use of the function \verb+algo.glrnb+ for a type of count data regression chart, the generalized likelihood ratio (GLR) statistic. The function is part of the R-Package '\texttt{surveillance}' \citep{hoehle2007R}, which provides outbreak detection algorithms for surveillance data. For an introduction to this package, the vignette for the package can be used \citep{vignette}. There one can find information about the data structure of the \verb+disProg+ and \verb+SurvRes+ objects. Furthermore tools for outbreak detection, such as a Bayesian approach, procedures described by \citet{stroup89}, \citet{farrington96} and the methods used at the Robert Koch Institut, Germany, are explained. The function \verb+algo.glrnb+ is the implementation of the control charts for poisson and negative binomial distributions for monitoring time series of counts described in \citet{hoehle2008}. This document gives an overview of the different features of the function and illustrations of its use are given for simulated and real surveillance data. \\ \noindent{\bf Keywords:} change-point detection, generalized regression charts, poisson and negative binomial distribution, increase and decrease \end{abstract} \section{Introduction}\label{sec:intro} For the monitoring of infectious diseases it is necessary to monitor time series of routinely collected surveillance data. Methods of the statistic process control (SPC) can be used for this purpose. Here it is important, that the methods can handle the special features of surveillance data, e.g.\ seasonality of the disease or the count data nature of the collected data. It is also important, that not only the number of counts of one time point (week, month) are regarded but instead the cases of previous time points are considered, because beside abrupt changes also small constant changes should be detected. CUSUM-methods (function \verb+algo.cusum+), LR-charts or GLR-methods as described by \citet{lai95} and \citet{hoehle2008} can afford this. With the function \verb+algo.glrnb+ these methods can easily applied to surveillance data. A typical assumption for time series of counts is, that the observed counts at each time point follow a Poisson distribution. If overdispersion is likely, the negative binomial distribution provides a better alternative. Both distributions are provided by \verb+algo.glrnb+. In the GLR-scheme, an outbreak can be defined as a change in the intercept. The function \verb+algo.glrnb+ allows the user to specify whether increases or decreases in mean should be regarded. For each time point a GLR-statistic is computed, if this statistic exceeds a threshold value, an alarm is given. The function also provides the possibility to return the number of cases that would have been necessary to produce an alarm. This vignette is organized as follows: First, in Section \ref{sec:prel} the data structure is explained, in Section \ref{sec:glr} a short introduction in the theory of the GLR-charts is given and Section \ref{sec:control} shows the different \verb+control+-settings. % In Section \ref{sec:extensions} some possible extensions are presented. \section{Preliminaries}\label{sec:prel} Consider the situation, where a time series of counts is collected for surveillance purpose. In each interval, usually one week, the number of cases of the interesting disease in an area (country, district) is counted. The resulting time series is denoted by $\{y_t\>;t=1,\ldots,n\}$. Usually the data are collected on line, so that the time point $n$ is the actual time point. Our aim is to decide with the aid of a statistic for each time point $n$ if there is an outbreak at this or any former time point. If an outbreak is detected, the algorithm gives an alarm. Observed time series of counts are saved in a \verb+disProg+ object, a list containing the time series of counts, the number of weeks and a state chain. The state is 1, if e.g. the Robert Koch Institut declares the week to be part of an outbreak and 0 otherwise ~\citep{survstat}. By using the state chain the quality of the surveillance algorithm can be tested. %The 'surveillance'-package provides standard plot routines for the surveillance objects. As an first example the number of cases of salmonella hadar in the years 2001-2006 is examined. \\ \textit{Example 1:} <>= data(shadar) plot(shadar,main="Number of salmonella hadar cases in Germany 2001-2006") @ The package provides the possibility to simulate surveillance data with the functions \verb+sim.pointSource+, \verb+sim.seasonalNoise+ and \verb+sim.HHH+. See \citep{hoehle2007R} and the vignette for further information. \\ \textit{Example 2:} <>= # Simulate data simData <- sim.pointSource(length=300,K=0.5,r=0.6,p=0.95) @ <>= plot(simData) @ \section{LR and GLR-charts}\label{sec:glr} Our aim is to detect a significant change in the number of cases. This is done as follows. One assumes, that there is a number of cases that is usual, the in control mean $\mu_0$. The in-control mean is defined in \citet{hoehle2008} to be \begin{equation} \label{mu0} \operatorname{log}(\mu_{0,t})=\beta_0 + \beta_1t + \sum_{s=1}^S(\beta_{2s} \cos(\omega s t) + \beta_{2s+1}\sin(\omega s t)). \end{equation} If an outbreak occurs, the number of cases increases and the situation is out-of control and the algorithm should produce an alarm. The change is assumed to be an additive increase on log scale, \begin{equation} \label{interceptchange} \operatorname{log}(\mu_1)= \operatorname{log}(\mu_0) + \kappa . \end{equation} If $\mu_0$ is unknown one could use a part of the data to estimate it with a generalized linear model (GLM). If $\kappa$ is known, LR-charts can be used, if not, $\kappa$ has to be estimated, which is the GLR-scheme setting. For each time point, the likelihood ratio statistic is computed as follows \begin{equation} \label{cusum} GLR(n)=\max_{1 \leq k \leq n} \sup_{\theta \in \Theta} \left[ \sum_{t=k}^n \log \left\{ \frac{f_{\theta}(y_t)}{f_{\theta_0}(y_t)} \right\} \right] . \end{equation} Now $N=\inf \{n \geq 1 : GLR(n) \geq c_{\gamma} \}$ is the first time point where the GLR-statistic is above a threshold $c_{\gamma}$. For this time point $N$ an alarm is given. If the parameter $\kappa$ and hence $\theta=\kappa$ is known, the maximation over $\theta$ can be omitted. With the function \verb+algo.glrnb+ one can compute the the GLR-statistic for every time point. If the actual value extends the chosen threshold $c_{\gamma}$, an alarm is given. After every alarm, the algorithm gets reset and the surveillance starts again. The result of a call of \verb+algo.glrnb+ is an object of class \verb+SurvRes+. This is basically a list of several arguments. The most important one is the \verb+upperbound+ statistic, which is a vector of length $n$ containing the likelihood-ratio-statistic for every time point under surveillance. The \verb+alarm+-vector contains a boolean for every time point whether there was an alarm or not. \\ At this point in the vignette we move more into the applied direction and refer the user to \citet{hoehle2008} for further theoretical details about the GLR procedure. The next example demonstrates the surveillance with the \verb+algo.glrnb+ in a learning by doing type of way. The example should demonstrate primarily the result of the surveillance. More details to the control-options follow in the next section. All control values are set here on default and the first two years are used to find a model for the in-control mean and so surveillance is starting in week 105. A plot of the results can be obtained as follows <>= survObj <- algo.glrnb(shadar,control=list(range=105:295,alpha=0)) plot(survObj,startyear=2003) @ The default value for $c_{\gamma}$ is 5. The upperbound statistic is above this value several times in the third quarter of 2006 (time points marked by small triangles in the plot). In the next section follow a description of the control-setting for tuning the behavior of the algorithm, e.g.\ one can search not only for increases in mean as shown in the example but also for decreases. \section{Control-settings}\label{sec:control} In this section, the purpose and use of the control settings of the \verb+algo.glrnb+ function are shown and illustrated by the examples from Section \ref{sec:prel}. The control-setting is a list of the following arguments. <>= control=list(range=range,c.ARL=5, mu0=NULL, alpha=0, Mtilde=1, M=-1, change="intercept",theta=NULL, dir=c("inc","dec"),ret=c("cases","value")) @ \begin{itemize} \item \verb+range+ \\ The \verb+range+ is a vector of consecutive indices for the week numbers in the \verb+disProg+ object for which surveillance should be done. If a model for the in-control parameter $\mu_0$ is known (\verb+mu0+ is not \verb+NULL+), the surveillance can start at time point one. Otherwise it is necessary to estimate the values for \verb+mu0+ with a GLM. Thus, the range should not start at the first time point but instead use the first weeks/months as control-range. (Note: It is important to use enough data for estimating $\mu_0$, but one should be careful that these data are in control) With the following call one uses the first 2 years (104 weeks) for estimating $\mu_0$ and the the years 2003 to 2006 will be on line monitored. <>= control=list(range=105:length(shadar$observed)) algo.glrnb(disProgObj=shadar,control=control) @ \item \verb+alpha+ \\ This is the (known) dispersion parameter $\alpha$ of the negative binomial distribution. If \verb+alpha+=0, modeling corresponds to the Poisson distribution. In this case, the call of \verb+algo.glrnb+ is similar to a call of \verb+algo.glrpois+. If $\alpha$ is known, the value can be specified in the \verb+control+-settings. <>= control=list(range=105:295,alpha=3) algo.glrnb(disProgObj=shadar,control=control) @ If overdispersion is present in the data, but the dispersion parameter $\alpha$ is unknown, an estimation $\hat{\alpha}$ is calculated as part of the in-control model estimation. Use \verb+alpha=NULL+ to get this estimation. The estimated value $\hat{\alpha}$ is saved in the \verb+survRes+-Object in the \verb+control+-list. Use <>= control=list(range=105:295,alpha=NULL) surv <- algo.glrnb(shadar,control=control) surv$control$alpha @ to get the estimated dispersion parameter for the salmonella data. \item \verb+mu0+ \\ This vector contains the values for $\mu_0$ for each time point in the \verb+range+. If it has the value \verb+NULL+ the observed values with indices 1 to \verb+range+-1 are used to fit a GLM. If there is no knowledge about the in-control parameter, one can use the values before the range to find an seasonal model as in equation \ref{mu0}. \verb+mu0+ is at the moment a list of three argument: \verb+S+ is the number of harmonics to include in the model, \verb+trend+ is Boolean whether a linear trend $\beta_1t$ should be considered. The default is to use the same model of $\mu_0$ for the whole surveillance. An alternative is, to fit a new model after every detected outbreak. If refitting should be done, choose \verb+refit=TRUE+ in the \verb+mu0+ list. In this case, the observed value from time point 1 to the time point of the last alarm are used for estimating a GLM. Then we get a new model after every alarm. In the following example a model with \verb+S+=2 harmonics and no linear trend is fitted for the Salmonella data. The observed cases from the first two years are used for fitting the GLM. <>= control=list(range=105:295,mu0=list(S=2,trend=FALSE)) algo.glrnb(disProgObj=shadar,control=control) @ <>= control=list(range=105:295,mu0=list(S=2,trend=F,refit=T)) surv <- algo.glrnb(disProgObj=shadar,control=control) @ The predicted values for the in-control mean in the range are shown as a dashed line in the following plot. <>= plot(shadar) with(surv$control,lines(mu0~range,lty=2,lwd=4,col=4)) @ The information about the used model is saved in the \verb+survRes+-object, too. <>= surv$control$mu0Model @ The $\mu_0$ model is fitted by a call of the function \verb+estimateGLRNbHook+. Instead of using the standard seasonal negative binomial model from equation \ref{mu0}, one can change the \texttt{R}-code of the function \verb+estimateGLRNbHook+ to get any desired model. The standard code is the following <>= estimateGLRNbHook @ To include own models in the \verb+estimateGLRNbHook+ function, the code of the function has to be changed. In the following code chunk \verb+estimateGLRNbHook+ is modified so that weights are included in the model. \begin{small} \begin{verbatim} estimateGLRPoisHook <- function() { control <- parent.frame()$control p <- parent.frame()$disProgObj$freq range <- parent.frame()$range train <- 1:(range[1]-1) test <- range #Weights of training data - sliding window also possible weights <- exp(-0.3 * ((max(train)-train)) %/% 12) data <- data.frame(y=parent.frame()$disProgObj$observed[train],t=train) formula <- "y ~ 1 " if (control$mu0Model$trend) { formula <- paste(formula," + t",sep="") } for (s in 1:control$mu0Model$S) { formula <- paste(formula,"+cos(2*",s,"*pi/p*t)+ sin(2*",s,"*pi/p*t)",sep="") } m <- eval(substitute(glm(form,family=poisson(),data=data,weights=weights), list(form=as.formula(formula)))) return(list(mod=m,pred=as.numeric(predict(m,newdata=data.frame(t=test), type="response")))) } \end{verbatim} \end{small} Additionally the fitted model from the call of \verb+estimateGLRNbHook+ is saved. The result of a call of \verb+glm.nb+ is in the standard setting an object of class \verb+negbin+ inheriting from class \verb+glm+. So methods as \verb+summary+, \verb+plot+ of \verb+predict+ can be used on this object. If refitting is done, the list of the used models is saved. Use <>= coef(surv$control$mu0Model$fitted[[1]]) @ to get the estimated values of the first (and in case of \verb+refit=FALSE+ only) model for the parameter vector $\beta$ given in (\ref{mu0}). \item \verb+c.ARL+ \\ This is just the threshold $c_{\gamma}$ for the GLR-test (see equation \ref{cusum}). The smaller the value is chosen, the more likely it is to detect an outbreak but on the other hand false alarms can be produced. <>= control=list(range=105:295,alpha=0) surv <- algo.glrnb(disProgObj=shadar,control=control) table(surv$alarm) @ For a choice of $c_{\gamma}$ we get \Sexpr{table(surv$alarm)[2]} alarms. In the following table the results for different choices of the threshold are shown. <>= num <- rep(NA) for (i in 1:6){ num[i] <- table(algo.glrnb(disProgObj=shadar,control=c(control,c.ARL=i))$alarm)[2] } @ \begin{table}[h] \begin{center} \caption{Number of alarms for salmonella hadar data in dependence of c.ARL} \label{c.ARL} \begin{tabular}{l|cccccc} \verb+c.ARL+ & 1 & 2 & 3 & 4 & 5 & 6 \\ \hline no. of alarms & \Sexpr{num[1]} & \Sexpr{num[2]} & \Sexpr{num[3]} & \Sexpr{num[4]} & \Sexpr{num[5]} & \Sexpr{num[6]} \end{tabular} \end{center} \end{table} \item \verb+change+ \\ There are two possibilitys to define an outbreak. The intercept-change is described in Section \ref{sec:glr} and equation \ref{interceptchange}. Use \verb+change="intercept"+ to choose this possibility. The other alternative is the epidemic chart, where an auto-regressive model is used. See \citet{held2005} and \citet{hoehle2008} for more details. A call with \verb+change="epi"+ in the control-settings leads to this alternative. Note that in the epidemic chart not every feature of \verb+algo.glrnb+ is available. \item \verb+theta+ \\ If the change in intercept in the intercept-charts is known in advance, this value can be passed to the function (see Section \ref{sec:glr}). These LR-charts are faster but can lead to inferior results if a wrong value of \verb+theta+ is used compared to the actual out-of-control value (\citet{hoehle2008}). If an increase of 50 percent in cases is common when there is an outbreak which corresponds to a $\kappa$ of $\log(1.5)=0.405$ in equation \ref{interceptchange} use <>= control=list(range=105:295,theta=0.4) algo.glrnb(disProgObj=shadar,control=control) @ If there is no knowledge about this value (which is the usual situation), it is not necessary to specify \verb+theta+. In the GLR-charts, the value for $\kappa$ is calculated by a maximation of the likelihood. Use the call <>= control=list(range=105:295,theta=NULL) algo.glrnb(disProgObj=shadar,control=control) @ in this situation. \item \verb+ret+ \\ The \verb+upperbound+-statistic of a \verb+survRes+-object is usually filled with the LR- or GLR-statistic of equation \ref{cusum}. A small value means, that the in-control-situation is likely, a big value is a hint for an outbreak. If you choose \verb+ret="value"+, the upperbound slot is filled with the GLR-statistic. These values are plotted then, too. The alternative return value is \verb+"cases"+. In this case, the number of cases at time point $n$ that would have been necessary to produce an alarm are computed. The advantage of this option is the easy interpretation. If the actual number of cases is more extreme than the computed one, an alarm is given. With the following call, this is done for the salmonella data. <>= control=list(range=105:295,ret="cases",alpha=0) surv2 <- algo.glrnb(disProgObj=shadar,control=control) @ <>= plot(surv2,startyear=2003) @ Of course, the alarm time points are the same as with \verb+ret="cases"+. \item \verb+dir+ \\ In the surveillance of infectious diseases it is regular to detect an increase in the number of infected persons. This is also the standard setting for \verb+algo.glrnb+. But in other applications it could be of interest to detect a decrease of counts. For this purpose, the \verb+dir+-option is available. If \verb+dir+ is set to \verb+"inc"+, only increases in regard to the in-control mean are taken into account in the likelihood-ratio-statistic. With \verb+dir="dec"+, only decreases are considered. As an example we take the salmonella data again, but know we look at the number of cases that would have been necessary if a decrease should be detected. <>= control=list(range=105:295,ret="cases",dir="dec",alpha=0) surv3 <- algo.glrnb(disProgObj=shadar,control=control) @ <>= plot(surv3,startyear=2003) @ The observed number of cases is below the computed threshold several times in 2005 to 2006 and alarms are given. \item \verb+Mtilde+ and \verb+M+ \\ These parameters are necessary for the so called ''window-limited'' GLR scheme. Here the maximation is not performed for all $1 \leq k \leq n$ but instead only for a window $k \in \{n-M,...,n-\tilde{M}+1 \}$ of values. Note that $1 \leq \tilde{M} \leq M$, where the minimum delay $\tilde{M}$ is the minimal required sample size to obtain a sufficient estimate of $\theta_1=(\mu_0,\kappa)$ ~\citep{hoehle2008}. The advantage of using a window of values instead of all values is the faster computation, but in the setup with intercept-charts and $\theta_1=\kappa$ this doesn't bother much and $\tilde{M}=1$ is sufficient. \end{itemize} \section{Discussion} As seen, the function \verb+algo.glrnb+ allows many possibilities for doing surveillance for a time series of counts. In order to achieve fast computations, the function is implemented in C. An important issue in surveillance is the quality of the used algorithms. This can be measured by the sensitivity and the specificity of the result. The aim of our future work is to provide the possibility for computing the quality and in the next step to include a ROC-approach in order to have a more formal framework for the choice of threshold $c_{\gamma}$. %\include{extensions} %\renewcommand{\bibsection}{\section{REFERENCES}} \bibliography{references} \end{document} surveillance/vignettes/.install_extras0000644000175100001440000000005412004056304020022 0ustar hornikusershhh4-cache.RData$ surveillance-cache.RData$ surveillance/vignettes/surveillance.Rnw0000644000175100001440000007306612245724062020200 0ustar hornikusers%\VignetteIndexEntry{Getting started with the package} %\VignetteKeywords{getting started} %\VignettePackage{surveillance} %\VignetteDepends{surveillance} \documentclass[a4paper,11pt]{article} \usepackage{natbib} \bibliographystyle{apalike} % Preabmle parts \usepackage[T1]{fontenc} % Make it possible to use danish characters !! \usepackage{url} \usepackage{hyperref} \usepackage{times} \renewcommand{\sfdefault}{ptm} % Brug times som font - vigtigt i % pdflatex? %PSTricks \usepackage{pdftricks} \begin{psinputs} \usepackage{pst-all} \end{psinputs} \usepackage{bm} \usepackage{amsmath} \usepackage{amssymb} \usepackage{latexsym} \usepackage{verbatim} \usepackage{epsfig} \usepackage{comment} \newcommand{\surveillance}{\texttt{surveillance}} \usepackage{pdfpages} \title{The R-Package 'surveillance'} \author{ Michael H{\"o}hle\thanks{Author of correspondance: Department of Statistics, University of Munich, Ludwigstr.\ 33, 80539 M{\"u}nchen, Germany, Email: \texttt{hoehle@stat.uni-muenchen.de}}$\>\>$, Andrea Riebler and Michaela Paul\\ Department of Statistics\\ University of Munich\\ Germany } \date{\today} \begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Sweave %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Put all in another directory \SweaveOpts{prefix.string=figs/vignette} \setkeys{Gin}{width=1\textwidth} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Initial R code %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% <>= library("surveillance") options(SweaveHooks=list(fig=function() par(mar=c(5,4,4,0),cex.axis=1.5,cex.lab=1.5,cex.main=1.5))) options(width=70) set.seed(1234) ##################################################################### # create directory figs if it does not exist ##################################################################### if(!file.exists("figs/")) dir.create("figs/") ###################################################################### #Do we need to compute or can we just fetch results ###################################################################### CACHEFILE <- "surveillance-cache.RData" compute <- !file.exists(CACHEFILE) #load computed results if(!compute) load(CACHEFILE) print(paste("Doing computations:", compute)) @ \maketitle %\mbox{}\hrulefill\\ \begin{abstract} \noindent This document gives an introduction to the R-Package 'surveillance' containing tools for outbreak detection in routinely collected surveillance data. The package contains an implementation of the procedures described by~\citet{stroup89}, \citet{farrington96} and the system used at the Robert Koch Institute, Germany. For evaluation purposes, the package contains example data sets and functionality to generate surveillance data by simulation. To compare the algorithms, benchmark numbers like sensitivity, specificity, and detection delay can be computed for a set of time series. Being an open-source package it should be easy to integrate new algorithms; as an example of this process, a simple Bayesian surveillance algorithm is described, implemented and evaluated.\\ \noindent{\bf Keywords:} infectious disease, monitoring, aberrations, outbreak, time series of counts. \end{abstract} {\large Disclaimer}: This vignette reflects package state at version 1.2 and is hence somewhat outdated. New functionality has been added to the package: this includes the \texttt{hhh4}, \texttt{twinSIR} and \texttt{twinstim} modelling and the \texttt{glrnb} outbreak detection. A description of the \texttt{hhh4} modelling can be found in its own vignette \verb+vignette("hhh4")+, \texttt{glrnb} is described in \verb+vignette("glrnb")+. Furthermore, use of the new S4 class \texttt{sts} instead of \texttt{disProg} is encouraged to encapsulate the data. \section{Introduction}\label{sec:intro} Public health authorities have in an attempt to meet the threats of infectious diseases to society created comprehensive mechanisms for the collection of disease data. As a consequence, the abundance of data has demanded the development of automated algorithms for the detection of abnormalities. Typically, such an algorithm monitors a univariate time series of counts using a combination of heuristic methods and statistical modelling. Prominent examples of surveillance algorithms are the work by~\citet{stroup89} and~\citet{farrington96}. A comprehensive survey of outbreak detection methods can be found in~\citep{farrington2003}. The R-package \texttt{surveillance} was written with the aim of providing a test-bench for surveillance algorithms. From the Comprehensive R Archive Network (CRAN) the package can be downloaded together with its source code. It allows users to test new algorithms and compare their results with those of standard surveillance methods. A few real world outbreak datasets are included together with mechanisms for simulating surveillance data. With the package at hand, comparisons like the one described by~\citet{hutwagner2005} should be easy to conduct. The purpose of this document is to illustrate the basic functionality of the package with R-code examples. Section~\ref{sec:data} contains a description of the data format used to store surveillance data, mentions the built-in datasets and illustrates how to create new datasets by simulation. Section~\ref{sec:algo} contains a short description of how to use the surveillance algorithms and illustrate the results. Further information on the individual functions can be found in the on-line documentation of the package, which is also provided in printed form as an Appendix of this document. \section{Surveillance Data}\label{sec:data} Denote by $\{y_t\>;t=1,\ldots,n\}$ the time series of counts representing the surveillance data. Because such data typically are collected on a weekly basis, we shall also use the alternative notation $\{y_{i:j}\}$ with $j=\{1,\ldots,52\}$ being the week number in year $i=\{-b,\ldots,-1,0\}$. That way the years are indexed such that most current year has index zero. For evaluation of the outbreak detection algorithms it is also possible for each week to store -- if known -- whether there was an outbreak that week. The resulting multivariate series $\{(y_t,x_t)\>; t=1,\ldots,n\}$ is in \texttt{surveillance} given by an object of class \texttt{disProg} (disease progress), which is basically a \texttt{list} containing two vectors: the observed number of counts and a boolean vector \texttt{state} indicating whether there was an outbreak that week. A number of time series are contained in the \texttt{data} directory, mainly originating from the SurvStat@RKI database at \href{http://www3.rki.de/SurvStat/}{http://www3.rki.de/SurvStat/} maintained by the Robert Koch Institute, Germany~\citep{survstat}. For example the object \texttt{k1} describes Kryptosporidosis surveillance data for the German federal state Baden-W\"{u}rttemberg 2001-2005. The peak in 2001 is due to an outbreak of Kryptosporidosis among a group of army-soldiers in boot-camp~\citep{bulletin3901}. In \surveillance\ the \texttt{readData} function is used to bring the time series on \texttt{disProg} form. The SurvStat@RKI database at \href{http://www3.rki.de/SurvStat/}{http://www3.rki.de/SurvStat/} maintained by the Robert Koch Institute, Germany, uses a 53 weeks a year format; therefore a conversion with \texttt{correct53to52} is necessary. <>= data(k1) plot(k1,main="Kryptosporidiosis in BW 2001-2005") @ For evaluation purposes it is also of interest to generate surveillance data using simulation. The package contains functionality to generate surveillance data containing point-source like outbreaks, for example with a Salmonella serovar. The model is a Hidden Markov Model (HMM) where a binary state $X_t, t=1,\ldots,n$, denotes whether there was an outbreak and $Y_t$ is the number of observed counts, see Fig.~\ref{fig:hmm}. \begin{figure}[htbp] \centering \begin{pdfpic} \input pst-eps \TeXtoEPS \SpecialCoor \begin{pspicture}(0,0)(10,3) %lower y -2.5 would be better %\psgrid \psset{arrowsize=7pt,arrowinset=0} \rput(1,2.5){\ovalnode{X1}{$X_1$}} \rput(3,2.5){\ovalnode{X2}{$X_2$}} \rput(5,2.5){\ovalnode{X3}{$X_3$}} \rput(6.5,2.5){\ovalnode[linestyle=none]{Xinv1}{}} \rput(7,2.5){$\ldots$} \rput(7.5,2.5){\ovalnode[linestyle=none]{Xinv2}{}} \rput(9,2.5){\ovalnode{Xn}{$X_n$}} \rput(1,0.5){\ovalnode{Y1}{$Y_1$}} \rput(3,0.5){\ovalnode{Y2}{$Y_2$}} \rput(5,0.5){\ovalnode{Y3}{$Y_3$}} \rput(9,0.5){\ovalnode{Yn}{$Y_n$}} \ncline{->}{X1}{X2} \ncline{->}{X2}{X3} \ncline{->}{X3}{Xinv1} \ncline{->}{Xinv2}{Xn} \ncline{->}{X1}{Y1} \ncline{->}{X2}{Y2} \ncline{->}{X3}{Y3} \ncline{->}{Xn}{Yn} \end{pspicture} \endTeXtoEPS \end{pdfpic} \caption{The Hidden Markov Model} \label{fig:hmm} \end{figure} The state $X_t$ is a homogenous Markov chain with the following transition matrix \begin{center} \begin{tabular}{c|cc} $X_t\backslash X_{t+1}$ & 0 & 1\\ \hline $0$ & $p$ & $1 - p$ \\ $1$ & $1 - r$ & $r$ \end{tabular} \end{center} Hence $1-p$ is the probability to switch to an outbreak state and $1-r$ is the probability that $X_t=1$ is followed by $X_{t+1}=1$. Furthermore, the observation $Y_t$ is Poisson-distributed with log-link mean depending on a seasonal effect and time trend, i.e.\ \[ \log \mu_t = A \cdot \sin \, (\omega \cdot (t + \varphi)) + \alpha + \beta t. \] In case of an outbreak $(X_t=1)$ the mean increases with a value of $K$, altogether \begin{equation}\label{eq:hmm} Y_t \sim \operatorname{Po}(\mu_t + K \cdot X_t). \end{equation} The model in (\ref{eq:hmm}) corresponds to a single-source, common-vehicle outbreak, where the length of an outbreak is controlled by the transition probability $r$. The daily numbers of outbreak-cases are simply independently Poisson distributed with mean $K$. A physiologically better motivated alternative could be to operate with a stochastic incubation time (e.g.\ log-normal or gamma distributed) for each individual exposed to the source, which results in a temporal diffusion of the peak. The advantage of (\ref{eq:hmm}) is that estimation can be done by a generalized linear model (GLM) using $X_t$ as covariate and that it allows for an easy definition of a correctly identified outbreak: each $X_t=1$ has to be identified. More advanced setups would require more involved definitions of an outbreak, e.g.\ as a connected series of time instances, where the number of outbreak cases is greater than zero. Care is then required in defining what a correctly identified outbreak for time-wise overlapping outbreaks means. In \surveillance\ the function \verb+sim.pointSource+ is used to simulate such a point-source epidemic; the result is an object of class \verb+disProg+. \label{ex:sts} <>= sts <- sim.pointSource(p = 0.99, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) plot(sts) @ \section{Surveillance Algorithms}\label{sec:algo} Surveillance data often exhibit strong seasonality, therefore most surveillance algorithms only use a set of so called \emph{reference values} as basis for drawing conclusions. Let $y_{0:t}$ be the number of cases of the current week (denoted week $t$ in year $0$), $b$ the number of years to go back in time and $w$ the number of weeks around $t$ to include from those previous years. For the year zero we use $w_0$ as the number of previous weeks to include -- typically $w_0=w$. Altogether the set of reference values is thus defined to be \[ R(w,w_0,b) = \left(\bigcup\limits_{i=1}^b\bigcup\limits_{j=\,-w}^w y_{-i:t+j}\right) \cup \left(\bigcup_{k=-w_0}^{-1} y_{0:t+k}\right) \] Note that the number of cases of the current week is not part of $R(w,w_0,b)$. A surveillance algorithm is a procedure using the reference values to create a prediction $\hat{y}_{0:t}$ for the current week. This prediction is then compared with the observed $y_{0:t}$: if the observed number of cases is much higher than the predicted number, the current week is flagged for further investigations. In order to do surveillance for time $0:t$ an important concern is the choice of $b$ and $w$. Values as far back as time $-b:t-w$ contribute to $R(w,w_0,b)$ and thus have to exist in the observed time series. Currently, we have implemented four different type of algorithms in \surveillance. The Centers for Disease Control and Prevention (CDC) method~\citep{stroup89}, the Communicable Disease Surveillance Centre (CDSC) method~\citep{farrington96}, the method used at the Robert Koch Institute (RKI), Germany~\citep{altmann2003}, and a Bayesian approach documented in~\citet{riebler2004}. A detailed description of each method is beyond the scope of this note, but to give an idea of the framework the Bayesian approach developed in~\citet{riebler2004} is presented: Within a Bayesian framework, quantiles of the predictive posterior distribution are used as a measure for defining alarm thresholds. The model assumes that the reference values are identically and independently Poisson distributed with parameter $\lambda$ and a Gamma-distribution is used as Prior distribution for $\lambda$. The reference values are defined to be $R_{\text{Bayes}}= R(w,w_0,b) = \{y_1, \ldots, y_{n}\}$ and $y_{0:t}$ is the value we are trying to predict. Thus, $\lambda \sim \text{Ga}(\alpha, \beta)$ and $y_i|\lambda \sim \text{Po}(\lambda)$, $i = 1,\ldots,{n}$. Standard derivations show that the posterior distribution is \begin{equation*} \lambda|y_1, \ldots, y_{n} \sim \text{Ga}(\alpha + \sum_{i=1}^{n} y_i, \beta + n). \end{equation*} Computing the predictive distribution \begin{equation*} f(y_{0:t}|y_1,\ldots,y_{n}) = \int\limits^\infty_0{f(y_{0:t}|\lambda)\, f(\lambda|y_1,\ldots,y_{n})}\, d\lambda \end{equation*} we get the Poisson-Gamma-distribution \begin{equation*} y_{0:t}|y_1,\ldots,y_{n} \sim \text{PoGa}(\alpha + \sum_{i=1}^{n} y_i, \beta + n), \end{equation*} which is a generalization of the negative Binomial distribution, i.e.\ \[ y_{0:t}|y_1,\ldots,y_{n} \sim \text{NegBin}(\alpha + \sum_{i=1}^{n} y_i, \tfrac{\beta + n}{\beta + n + 1}). \] Using the Jeffrey's Prior $\text{Ga}(\tfrac{1}{2}, 0)$ as non-informative Prior distribution for $\lambda$ the parameters of the negative Binomial distribution are \begin{align*} \alpha + \sum_{i=1}^{n} y_i &= \frac{1}{2} + \sum_{y_{i:j} \in R_{\text{Bayes}}}\!\! y_{i:j} \quad % \intertext{and} \quad\text{and}\quad \frac{\beta + n}{\beta + n + 1} = \frac{|R_{\text{Bayes}}|}{|R_{\text{Bayes}}| + 1}. \end{align*} Using a quantile-parameter $\alpha$, the smallest value $y_\alpha$ is computed, so that \begin{equation*} P(y \leq y_\alpha) \geq 1-\alpha. \end{equation*} Now \begin{equation*} A_{0:t} = I(y_{0:t} \geq y_\alpha), \end{equation*} i.e. if $y_{0:t}\geq y_\alpha$ the current week is flagged as an alarm. As an example, the \verb+Bayes1+ method uses the last six weeks as reference values, i.e.\ $R(w,w_0,b)=(6,6,0)$, and is applied to the \texttt{k1} dataset with $\alpha=0.01$ as follows. <>= k1.b660 <- algo.bayes(k1, control = list(range = 27:192,b=0,w=6,alpha=0.01)) plot(k1.b660, disease="k1", firstweek = 1, startyear = 2001) @ Several extensions of this simple Bayesian approach are imaginable, for example the inane over-dispersion of the data could be modeled by using a negative-binomial distribution, time trends and mechanisms to correct for past outbreaks could be integrated, but all at the cost of non-standard inference for the predictive distribution. Here simulation based methods like Markov Chain Monte Carlo or heuristic approximations have to be used to obtain the required alarm thresholds. In general, the \verb+surveillance+ package makes it easy to add additional algorithms -- also those not based on reference values -- by using the existing implementations as starting point. The following call uses the CDC and Farrington procedure on the simulated time series \verb+sts+ from page~\pageref{ex:sts}. Note that the CDC procedure operates with four-week aggregated data -- to better compare the upper bound value, the aggregated number of counts for each week are shown as circles in the plot. <>= cntrl <- list(range=300:400,m=1,w=3,b=5,alpha=0.01) sts.cdc <- algo.cdc(sts, control = cntrl) sts.farrington <- algo.farrington(sts, control = cntrl) @ <>= if (compute) { <> } @ <>= par(mfcol=c(1,2)) plot(sts.cdc, legend.opts=NULL) plot(sts.farrington, legend.opts=NULL) @ Typically, one is interested in evaluating the performance of the various surveillance algorithms. An easy way is to look at the sensitivity and specificity of the procedure -- a correct identification of an outbreak is defined as follows: if the algorithm raises an alarm for time $t$, i.e.\ $A_t=1$ and $X_t=1$ we have a correct classification, if $A_t=1$ and $X_t=0$ we have a false-positive, etc. In case of more involved outbreak models, where an outbreak lasts for more than one week, a correct identification could be if at least one of the outbreak weeks is correctly identified, see e.g.\ \citet{hutwagner2005}. To compute various performance scores the function \verb+algo.quality+ can be used on a \verb+SurvRes+ object. <<>>= print(algo.quality(k1.b660)) @ This computes the number of false positives, true negatives, false negatives, the sensitivity and the specificity. Furthermore, \texttt{dist} is defined as \[ \sqrt{(Spec-1)^2 + (Sens - 1)^2}, \] that is the distance to the optimal point $(1,1)$, which serves as a heuristic way of combining sensitivity and specificity into a single score. Of course, weighted versions are also imaginable. Finally, \texttt{lag} is the average number of weeks between the first of a consecutive number of $X_t=1$'s (i.e.\ an outbreak) and the first alarm raised by the algorithm. To compare the results of several algorithms on a single time series we declare a list of control objects -- each containing the name and settings of the algorithm we want to apply to the data. <>= control = list( list(funcName = "rki1"), list(funcName = "rki2"), list(funcName = "rki3"), list(funcName = "bayes1"), list(funcName = "bayes2"), list(funcName = "bayes3"), list(funcName = "cdc",alpha=0.05), list(funcName = "farrington",alpha=0.05)) control <- lapply(control,function(ctrl) { ctrl$range <- 300:400;return(ctrl)}) @ % In the above, \texttt{rki1}, \texttt{rki2} and \texttt{rki3} are three methods with reference values $R_\text{rki1}(6,6,0)$, $R_\text{rki2}(6,6,1)$ and $R_\text{rki3}(4,0,2)$ all called with $\alpha=0.05$. The methods \texttt{bayes1}-\texttt{bayes3} is the Bayesian algorithm using the same setup of reference values. The CDC Method is special, since it operates on aggregated four-week blocks. To make everything comparable a common $\alpha=0.05$ level is used for all algorithms. All algorithms in \texttt{control} are applied to \texttt{sts} using: <>= algo.compare(algo.call(sts,control=control)) @ <>= if (compute) { acall <- algo.call(sts,control=control) } algo.compare(acall) @ %res <- algo.compare(algo.call(sts,control=control)) %xtable(res,digits=c(0,0,0,0,0,2,2,2,2)) A test on a set of time series can be done as follows. Firstly, a list containing 10 simulated time series is created. Secondly, all the algorithms specified in the \texttt{control} object are applied to each series. Finally the results for the 10 series are combined in one result matrix. <>= #Create 10 series ten <- lapply(1:10,function(x) { sim.pointSource(p = 0.975, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7)}) @ <>= #Do surveillance on all 10, get results as list ten.surv <- lapply(ten,function(ts) { algo.compare(algo.call(ts,control=control)) }) @ <>= if (compute) { <> } @ <>= #Average results algo.summary(ten.surv) @ <>= res <- algo.summary(ten.surv) res[,5:8] <- round(res[,5:8]*100)/100 res @ %xtable(algo.summary(ten.surv),digits=c(0,0,0,0,0,2,2,2,2)) A similar procedure can be applied when evaluating the 14 surveillance series drawn from SurvStat@RKI~\citep{survstat}. A problem is however, that the series after conversion to 52 weeks/year are of length 209 weeks. This is insufficient to apply e.g.\ the CDC algorithm. To conduct the comparison on as large a dataset as possible the following trick is used: The function \texttt{enlargeData} replicates the requested \texttt{range} and inserts it before the original data, after which the evaluation can be done on all 209 values. <>= #Update range in each - cyclic continuation range = (2*4*52) + 1:length(k1$observed) control <- lapply(control,function(cntrl) { cntrl$range=range;return(cntrl)}) #Outbreaks outbrks <- c("m1", "m2", "m3", "m4", "m5", "q1_nrwh", "q2", "s1", "s2", "s3", "k1", "n1", "n2", "h1_nrwrp") #Load and enlarge data. outbrks <- lapply(outbrks,function(name) { #Load with data eval(substitute(data(name),list(name=name))) enlargeData(get(name),range=1:(4*52),times=2) }) #Apply function to one one.survstat.surv <- function(outbrk) { algo.compare(algo.call(outbrk,control=control)) } @ <>= algo.summary(lapply(outbrks,one.survstat.surv)) @ <>= if (compute) { res.survstat <- algo.summary(lapply(outbrks,one.survstat.surv)) } print(res.survstat,digits=3) @ In both this study and the earlier simulation study the Bayesian approach seems to do quite well. However, the extent of the comparisons do not make allowance for any more supported statements. Consult the work of~\citet{riebler2004} for a more thorough comparision using simulation studies. \section{Multivariate surveillance} As of version 0.9-2 \surveillance\ supports the visualization of multivariate time series of counts. An (multivariate) object of class \texttt{disProg} contains matrices with the observed number of counts and the respective state chains, where each column represents an individual time series. Additional elements of the \texttt{disProg}-object are a neighbourhood matrix and a matrix with population counts. However, only modelling of the time series as by~\citet{held2005} is currently available. In the near future the surveillance algorithms will also be extended to handle these multivariate data. For example, consider the weekly counts of new measles cases for each ``Kreis'' (area) of the administrative district ``Weser-Ems'' in Lower Saxony, Germany, in 2001 and 2002~\citep{survstat}. Figure~\ref{fig:map} shows a map of the $m=15$ areas. The corresponding $m \times m$ neighbourhood matrix has elements 1 if two areas share a common border and is 0 otherwise. \begin{figure}[htb] \centering \setkeys{Gin}{width=0.5\textwidth} <>= data("measlesWeserEms") par(mar=c(0,0,0,0)) plot(measlesWeserEms@map[-c(1,5),], col=grey.colors(15,start=0.4,end=1)) text(coordinates(measlesWeserEms@map[-c(1,5),]), labels=row.names(measlesWeserEms@map)[-c(1,5)], font=2) @ \caption{Map of the administrative district ``Weser-Ems''} \label{fig:map} \end{figure} In the package \texttt{surveillance} the measles data are already available in the form of a \texttt{disProg}-object. <>= data(measles.weser) plot(measles.weser, title="measles in Weser-Ems 2001-2002", xaxis.years=TRUE, startyear= 2001, firstweek=1) @ The number of counts for each area can also be looked at and plotted as individual time series. Here, the x-axis is the week number since 1st of January 2001 and the y-axis is the number of measles cases. <>= plot(measles.weser,as.one=FALSE,xaxis.years=FALSE) @ \vspace{1em} The data are analysed using the model proposed by \citet{held2005}. A call to the function \texttt{algo.hhh} fits a Poisson or negative binomial model with mean \[ \mu_{it} = \lambda y_{i,t-1} + \phi \sum_{j \sim i} y_{j,t-1} + n_{it} \nu_{it}\, , \quad i=1,\ldots,m, \, t=1,\ldots,n \, , \] where $j \sim i$ denotes all neighbours of $i$, to a multivariate time series of counts. It is estimated by maximum likelihood using numerical optimization methods. The $n_{it}$ are standardized population counts and $\log \nu_{it} = \alpha_i + \beta t + \sum_{s=1}^{S}\big(\gamma_s sin(\omega_s t) + \delta_s cos(\omega_s t)\big)$ with Fourier frequencies $\omega_s$. <>= ##################################################### # measles if(compute){ # algo.hhh cntrl <- list(linear=TRUE, nseason=1, neighbours=FALSE, negbin="single", lambda=TRUE) measles.hhh.neF <- algo.hhh(measles.weser,control=cntrl) cntrl$neighbours <- TRUE measles.hhh <-algo.hhh(measles.weser,cntrl) # algo.hhh.grid grid <- create.grid(measles.weser, cntrl, params=list(endemic=c(lower=-0.5, upper=0.5, length=3), epidemic=c(0.1,0.9,5), negbin=c(0.3,12,5))) cat("running a grid search for up to 900 seconds.\n") measles.hhh.grid <- algo.hhh.grid(measles.weser, control=cntrl, thetastartMatrix=grid, maxTime=900) } @ For the weekly measles data $\omega_s=2s\pi/52$ (i.e.\ \texttt{period}=52). In the following, the model specified in \texttt{cntrl} is fitted to the data. The counts are assumed to be negative binomial distributed with mean $\mu_{it}$ and variance $\mu_{it} +\mu_{it}^2/\psi$. A linear time trend $\beta$, seasonal parameters $\gamma_1$ and $\beta_1$ (i.e.\ $S=1$) as well as the autoregressive parameters $\lambda$ and $\phi$ are included to specify the mean. All in all, there are %21 parameters to be estimated. $2S+m+4$ parameters to be estimated for the negative binomial model. In case of a Poisson model, the number of parameters reduces by one as the overdispersion parameter $\psi$ is omitted. <>= cntrl <- list(linear=TRUE, nseason=1, neighbours=TRUE, negbin="single", lambda=TRUE) measles.hhh <- algo.hhh(measles.weser,control=cntrl) @ Depending on the inital values for the parameters, the optimization algorithm might not converge or only find a local maximum as the parameter space is high-dimensional. It is therefore reasonable to try multiple starting values. The function \texttt{create.grid} takes a \texttt{list} with elements in the form of \texttt{param = c(lower,upper,length)} to create a matrix of starting values. For each parameter a sequence of length \texttt{length} from \texttt{lower} to \texttt{upper} is built and the resulting grid contains all combinations of these parameter values. A call to \texttt{algo.hhh.grid} conducts a grid search until either all starting values are used or a time limit \texttt{maxTime} (in seconds) is exceeded. The result with the highest likelihood is returned. %algo.hhh.grid <>= grid <- create.grid(measles.weser, cntrl, params = list(endemic = c(lower = -0.5, upper = 0.5, length = 3), epidemic = c(0.1, 0.9, 5), negbin = c(0.3,12,5))) algo.hhh.grid(measles.weser, control=cntrl, thetastartMatrix=grid, maxTime=900) @ <>= print(measles.hhh.grid,3) @ <>= if (compute) { # save computed results save(list=c("sts.cdc","sts.farrington","acall","res","res.survstat", "control","ten.surv",ls(pattern="measles")), file=CACHEFILE) tools::resaveRdaFiles(CACHEFILE) } @ \section{Discussion and Future work} Many extensions and additions are imaginable to improve the package. For now, the package is intended as an academic tool providing a test-bench for integrating new surveillance algorithms. Because all algorithms are implemented in R, performance has not been an issue. Especially the current implementation of the Farrington Procedure is rather slow and would benefit from an optimization possible with fragments written in C. One important improvement would be to provide more involved mechanisms for the simulation of epidemics. In particular it would be interesting to include multi-day outbreaks originating from single-source exposure, but with delay due to varying incubation time~\citep{hutwagner2005} or SEIR-like epidemics~\citep{andersson2000}. However, defining what is meant by a correct outbreak identification, especially in the case of overlapping outbreaks, creates new challenges which have to be met. \section{Acknowledgements} We are grateful to K.\ Stark and D.\ Altmann, RKI, Germany, for discussions and information on the surveillance methods used by the RKI. Our thanks to C.\ Lang, University of Munich, for his work on the R--implementation and M. Kobl, T. Schuster and M. Rossman, University of Munich, for their initial work on gathering the outbreak data from SurvStat@RKI. The research was conducted with financial support from the Collaborative Research Centre SFB 386 funded by the German research foundation (DFG). %\renewcommand{\bibsection}{\section{REFERENCES}} \bibliography{references} \end{document} surveillance/vignettes/hhh4-cache.RData0000644000175100001440000000603412245731645017621 0ustar hornikusers‹íXwT“WOÂ’¡%©‚(XE´ ’ 8Ї!(¥("Êr1DBB¢¬"TPQ"­((‚{+âôa ˆm€†²—°(»Õ~í9ߟß9æœûþ~ϸÏï}OîùY¬³¦HYKAd¸‘D†©(iøA$ˆ$‡QÒjÏØâ¨n@Ι6ì¸ái;ó&xÕÊU'œiÒ“KµˆºÚ_ŠƒÞ'dá™eõsUð³Bb {w*{˜ÈŽãNQ:Ó…=ÎEX“”M¤Nì *Ê`øøYeQöèìD¦s™á&þט««ëòÏòÅÙžìM{þâq¦s>K’pd2¦øÖzæ&lÁÜ¢+1æ™bA°Mtÿ×ÈR°tëõ&‚°rþ7Äs"˜Ps±Ì|ÿ¨²™“j„-«¯HN¿O(ÓîÕ4^À¡ƒŒ,a? üT?ÚÇÛA§èùiG8ø<Ý­¡ÿúOÀï¿’zI°¶Äí¤24ªmž¼ Ô˜ïÌÃ÷?/µ 2Є.Ñ`÷ŠöXûW{ÙÌ€Ú™…{6ßÄòË Éïà᎞þ­-QØ“[jS‰Ýú{…׿Áöœ°û+§ÔBÛöº?¶úëC³â®gJÍǧûívjÅ]|u;\eÅÐËßåB^ŽÎk*;ÅzáaPLpÂakh~q˶7‡dÄ“k÷ˆaçVÂîÅ4 H¹Ã‘ ÅF…ß‚wYØ•ä°×J`†EÄ™ÌoˆøÚͬ;ÃÇ—ûMïžïš¯Ú꜡ìŒö‚ÊìÒ82ÕvOðMrL¯wea•”Áh-4nèmõz}2ÞÎ>1MVêDš"v6ùA{ål/—÷+ñBÞ‘ÎÕ)t|>r¼4z_Má„èñá½ÎiriO¾º»B7G‹-ûýmÓ#05Œr•¿ ê{¾ÍŒ9«M‰|¹âÁ¹Ø-\8¿(œ e».æhÙÍK7œLŸ®ý-³Ù ©„ã ùI À»²ô—ªÌ“PA~žF¾i¡ž {°ujqòW¯=°Hu‘ö•Ð~調à⳯KÜNeÏ»t?Pˆ‰eü°Q}õèõ`,u5õãîè†"nw¡Õ ìVÿ¤³Xqá^îœ'ü¤y”¬ Ý2V ­ùd옣êOzç„ghyõC”±µHµN› Q¡ŠïsÀ³K£•b90°Ïºýú»r(Øð±íÉ9]hòT©Á²‰ßø;ÄK›å0]ehï†Í¥VR UR¢îFL®á)wG_Hò„·ç-gCãJš§‡.@ËŒƒ¼ÎcÊÀ_u²?lC”ß4ô]\ÍÄ&¯Ùæ¬Ú«Psó«…‡gj@9\Ûî©>¸ÆzG)ØsãôÜŽÃW±ÅçÕ•¡6?¯±RµÖÅ>KOýCÚØ'µ±ÿ–¾ >‡:ÂCè‘Ï9õñ÷Ç(˜K¿oþ-´Üž–¦M‚;ÜJ9Ç'±DJ7_…X5eéªkİË(Ì|Á>6~ÿëòéÆÅÀ{¸ÉDqP„sºLŒ OAàsŒ×…Þó7g@æëµŽÒÊ™˜Ñg*[ü>:"ÊãÍ¢€wYYjÀ\|鵕°.W•ÙJ \,qéòu wÞ”×; |Ánî÷Á)˜–"piuä@'ç1¿Þ8[;]ü9àk¸¦˜±+.~k„/œåý{(Bàí×bû¬ƒ×Jf+ªžB™V~Ïl¹HhHÎ&ùßHÀò J–›k9Ð`™²â’ «7‹¤ [±¦ªeÉ^g+ÌY¥nº¿ï82•,aÊAldΊæùâd:åý½œëP-­“¢SúÚd¥›Í_‹½’²;¤¬xPzÀOÁðe 6©È[$øÞ…‚9Ýá·Nmƒó³ž}wCS*2žë°4vArÙcBèlzÈÔ ˆmΤÔA™È´5Xµût ý¶2“Y‚s‚dŽ6vÍR®| =K8K–Ýy±6©´ª7Ðf©ǹ|µ ‹.ká»´„ü«¿ÎÀz/Ê)Ç[(Uyph÷µblT:W²JÄO×þ®ã{ ÊãZ¸Û­°¬@ÚF3שÀÿ°¦³¯V_äÆwÌ¥ëÂÀ¥€7S–fÁ«)ólÔ#ó ¯¹QÚúY'–'/v2h‡t)ëô 3b¡2zy‡c1$gPj¢íà´æW´#!ëÑvùoS¡¼#œâ’…ƒ?®ÿ:ßõ'®•9S I•Ä_°ôºÚ¥rß¹Xcæa³U– ™ñ•Ã[%m¡J½8曥eû‘ ±;]7vyD Ư«&|%Ü£jêg7…À3«]æ×îb±¤gª"ÿ±­~(1߸g(чÿ'_>ûýÄÊ_¿eclEc!üjz3éIˆ:8ïܶ' ùo™î¦ð°Á-wts 6„g˜{Ï;æ†Z¡ï‘u³Ý­KÐ^TpL"ãÛ~ÖÊf@»ÎËÌ,ää=wö¿¥û £úW`yÐa­,¥Ûð²ä¬uà5¾p¯¿¿ùr"tïú!ŽL¾Ë¢?ÚŶà€çæ·®Ñ7 }pÛ’*µiPãvb›]¾Qd„\-¯fùxûfÞ…*޲¦Ãô!¸z"çi8yø\±úEáBe+îDÄJÈ[?¨Ì]” ïëe[÷A‰D°¨†WΦm;y3g|Ó¼ç; hPXqÿº JšÊâ’l#óÆ2¥FªüU¼›Ð¨þ.Ø}"pýÉÿlŸˆ°2ã颎ötúŸ[ÂØKe¹PŽÔqר9F§Ò™.tš•Nse2'e[w{–Ëd1†%Í:ileÐ<'Œ­×yÂ`Ù3þ4,ŒÜí'ÒDôM '¨Á0ýL:w¤Û³'¤óÉ÷Èæ¸OÂ[Ý~Dà[ëG3>Ïsurveillance/vignettes/references.bib0000644000175100001440000002271712003565743017611 0ustar hornikusers@BOOK{andersson2000, title = {Stochastic Epidemic Models and their Statistical Analysis}, publisher = {Springer-Verlag}, year = {2000}, author = {H. {Andersson} and T. {Britton}}, volume = {151}, series = {Springer Lectures Notes in Statistics}, owner = {hoehle}, pdf = {Z:\Literature\Infectious Diseases\andersson2000.ps}, } @MastersThesis{riebler2004, author = {A. {Riebler}}, title = {{Empirischer Vergleich von statistischen Methoden zur Ausbruchserkennung bei Surveillance Daten}}, year = {2004}, note = {Bachelor's thesis}, owner = {hoehle}, school = {Department of Statistics, University of Munich}, } @UNPUBLISHED{altmann2003, author = {D. {Altmann}}, title = {{The Surveillance System of the Robert Koch Institute, Germany}}, note = {Personal Communication}, year = {2003}, owner = {hoehle}, } @MISC{bulletin3901, author = {{Robert Koch Institute}}, title = {{Epidemiologisches Bulletin 39}}, howpublished = {Available from http://www.rki.de}, year = {2001}, owner = {hoehle}, } @MISC{survstat, author = {{Robert Koch-Institut}}, title = {{SurvStat@RKI}}, howpublished = {http://www3.rki.de/SurvStat}, year = {2004}, note = {Date of query: September 2004}, } @ARTICLE{hutwagner2005, author = {L. {Hutwagner} and T. {Browne} and G.M {Seeman} and A.T. {Fleischhauer}}, title = {Comparing Abberation Detection Methods with Simulated Data}, journal = {Emerging Infectious Diseases}, year = {2005}, volume = {11}, pages = {314--316}, owner = {hoehle}, } @INCOLLECTION{farrington2003, chapter = {Outbreak Detection: Application to Infectious Disease Surveillance}, pages = {203--231}, booktitle = {Monitoring the Health of Populations}, publisher = {Oxford University Press}, year = {2003}, editor = {R. {Brookmeyer} and D.F. {Stroup}}, author = {C.P. {Farrington} and N. { Andrews}}, owner = {hoehle}, } @ARTICLE{stroup89, author = {D.F. {Stroup} and G.D. {Williamson} and J.L {Herndon} and J.M {Karon}}, title = {Detection of aberrations in the occurence of notifiable diseases surveillance data}, journal = {Statistics in Medicine}, year = {1989}, volume = {8}, pages = {323--329}, owner = {hoehle}, } @Article{held2005, author = {L. {Held} and M. {Höhle} and M. {Hofmann}}, title = {A statistical framework for the analysis of multivariate infectious disease surveillance counts}, journal = {Statistical Modelling}, year = {2005}, volume = {5}, pages = {187--199}, } @Article{rossi99, author = {G. {Rossi} and L. {Lampugnani} and M. {Marchi}}, title = {An approximate {CUSUM} procedure for surveillance of health events}, journal = {Statistics in Medicine}, year = {1999}, volume = {18}, pages = {2111--2122}, } @Article{ewanKemp60, author = {W. D. {Ewan} and K. W. {Kemp}}, title = {Sampling Inspection of Continuous Processes with no autocorrelation between successive results}, journal = {Biometrika}, year = {1960}, volume = {47}, number = {3/4}, pages = {363--380}, } @Article{pierceSchafer86, author = {D. A. {Pierce} and D. W. {Schafer}}, title = {Residuals in Generalized Linear Models}, journal = {Journal of the American Statistical Association}, year = {1986}, number = {396}, volume = {81}, pages = {977--986}, } @BOOK{hardin, author = {J. {Hardin} and J. {Hilbe}}, title = {Generalized Linear Models and Extensions}, publisher = {Stata Press}, year = {2001}, } @BOOK{montgomery, author = {D. C. {Montgomery}}, title = {Introduction to statistical quality control}, publisher = {John Wiley \& Sons}, year = {2005}, } @Misc{hypgeom, author = {E. W. {Weisstein}}, year = {2006}, title = {{"Hypergeometric Function". From \textit{MathWorld} -- A Wolfram Web Resource}}, note = {\url{http://mathworld.wolfram.com/HypergeometricFunction.html}}, } @Article{farrington96, author = {C. P. {Farrington} and N. J. {Andrews} and A. D. {Beale} and M. A. {Catchpole}}, title = {A Statistical Algorithm for the Early Detection of Outbreaks of Infectious Disease}, journal = {Journal of the Royal Statistical Association. Series A}, year = {1996}, volume = {159}, pages = {547--563}, } @Misc{packageSpc, title = {spc: Statistical Process Control}, author = {S. {Knoth}}, year = {2004}, note = {R package version 0.1. \url{http://www.cran.r-project.org/src/contrib/Descriptions/spc.html}}, } @Article{lucas85, author = {J. M. {Lucas}}, title = {Counted Data {CUSUM}'s}, journal = {Technometrics}, year = {1985}, volume = {27}, number = {2}, pages = {129--144}, } @TECHREPORT{hoehle2008, author = {M. {Höhle} and M. {Paul}}, title = {Count data regression charts for the monitoring of surveillance time series}, institution = {To appear in Computational Statistics and Data Analysis}, year = {2008}, note = {accepted in 14 February 2008, doi:10.1016/j.csda.2008.02.015 } } @article{hoehle2007R, author = {M. {Höhle}}, title = {{surveillance: An R package for the monitoring of infectious diseases}}, year = {2007}, journal = {Computational Statistics}, } @ARTICLE{lai95, author = {T. L. {Lai}}, title = {Sequential Changepoint Detection in Quality Control and Dynamical Systems}, journal = {Journal of the Royal Statistical Society. Series B}, year = {1995}, volume = {57}, pages = {613--658}, number = {4}, } @ARTICLE{kleinmannAbrams, author = {K. P. {Kleinman} and A. M. {Abrams}}, title = {Assessing surveillance using sensitivity, specificity and timeliness}, journal = {Statistical Methods in Medical Research}, year = {2006}, volume = {15}, pages = {445--464}, } %%from michaela @article{gneiting-raftery-2007, author={Tilmann Gneiting and Adrian E. Raftery}, title={Strictly proper scoring rules, prediction, and estimation}, journal={Journal of the American Statistical Association}, year=2007, volume={102}, number=477, pages={359--378} } @Manual{maptools, title = {maptools: Tools for reading and handling spatial objects}, author = {Nicholas J. Lewin-Koh and Roger Bivand and contributions by Edzer J. Pebesma and Eric Archer and Adrian Baddeley and Hans-Jörg Bibiko and Stephane Dray and David Forrest and Michael Friendly and Patrick Giraudoux and Duncan Golicher and Virgilio Gomez Rubio and Patrick Hausmann and Thomas Jagger and Sebastian P. Luque and Don MacQueen and Andrew Niccolai and Tom Short and Ben Stabler}, year = {2010}, note = {R package version 0.7-34}, url = {http://CRAN.R-project.org/package=maptools}, } @article{czado-etal-2009, author = {Claudia Czado and Tilmann Gneiting and Leonhard Held}, title = {Predictive model assessment for count data}, journal = {Biometrics}, year = 2009, volume = {65}, number = 4, pages = {1254--1261}, } @article{held-etal-2006, author = {L Held and M Hofmann and M {H\"ohle} and V Schmid}, title = {A two-component model for counts of infectious diseases}, journal = {Biostatistics}, year = 2006, volume = {7}, number = 3, pages = {422--437}, } @article{held-etal-2005, author = {Held, Leonhard and H\"ohle, M and Hofmann, M}, title = {A statistical framework for the analysis of multivariate infectious disease surveillance counts}, journal = {Statistical Modelling}, year = 2005, volume = {5}, number = 3, pages = {187--199}, } @article{paul-etal-2008, author = {M. Paul and L. Held and A. M. Toschke}, title = {Multivariate modelling of infectious disease surveillance data}, journal = {Statistics in Medicine}, year = 2008, volume = {27}, number = 29, pages = {6250--6267}, doi = {10.1002/sim.3440}, } @article{paul-held-2011, author={Paul, M. and Held, L.}, title={Predictive assessment of a non-linear random effects model for multivariate time series of infectious disease counts}, journal={Statistics in Medicine}, volume = {30}, number = 10, pages = {1118--1136}, year=2011, doi={10.1002/sim.4177}, } @article{herzog-etal-2010, author = {Herzog ,S. A. and Paul, M. and Held, L.}, title = {Heterogeneity in vaccination coverage explains the size and occurrence of measles epidemics in {German} surveillance data}, journal = {Epidemiology and Infection}, year = 2011, volume = {139}, issue = 4, pages = {505--515}, doi={10.1017/S0950268810001664} } @article{hoehle-2007, author = {H{\"o}hle, M}, title = {Surveillance: an {R} package for the monitoring of infectious diseases}, journal = {Computational Statistics}, year = 2007, volume = {22}, number = 4, pages = {571-582}, } @incollection{hoehle-mazick-2010, author = {H{\"o}hle, M. and Mazick, A.}, title = {Aberration detection in {R} illustrated by {Danish} mortality monitoring}, booktitle = {Biosurveillance: A Health Protection Priority}, publisher = {CRC Press}, year = 2010, editor = {Kass-Hout, T. and Zhang, X}, } @misc{vignette, author = {M. {H{\"o}hle} and A. {Riebler} and M. {Paul}}, title = {The {R}-Package 'surveillance'}, year = 2007, } @MISC{survstat-fluByBw, author = {{Robert Koch-Institut}}, title = {{SurvStat@RKI}}, howpublished = {\url{http://www3.rki.de/SurvStat}}, year = {2009}, note = {Accessed March 2009}, } surveillance/MD50000644000175100001440000005377612617103073013316 0ustar hornikusersd2930e632c0f5c8d8c8209a59748827b *DESCRIPTION 321589b380b9a6ec81b2ae71609160ea *NAMESPACE 674d6a27f7b95bc0bbb823b27608ab08 *R/AllClass.R 21ae564f485bf384546102f59180d086 *R/AllGeneric.R 4ec748a4ab0a6dcd79134333a1eee9d4 *R/LRCUSUM.runlength.R 951f4bdade59d4cfc61e5c16d584f64c *R/addSeason2formula.R aa76ffe9106f413caeca6e046077b167 *R/algo_bayes.R dada40fcd3e3c27368cd9069641ba5ba *R/algo_call.R be214ec6475829e4205744ac732af81a *R/algo_cdc.R c9ca07b4861c4273ff8331615a435e82 *R/algo_cusum.R 2f2f2f54604d1b33742346e1f747f7b9 *R/algo_farrington.R 1acf74762ec684109f1d47ee047df0ba *R/algo_glrnb.R 3db79eef3951132cc41d05eb095dc766 *R/algo_glrpois.R 3b039ab8fbd280448ea8ab18cfc842d0 *R/algo_hhh.R 32bbac6af87327df5953f881a46158fb *R/algo_hmm.R 54a7ff43ff4ec43f830a636ef4f38677 *R/algo_outbreakP.R 7e59e5a1fd0c57754e6f123e04014da9 *R/algo_rki.R e33c4e91fcaec7731e2b9f48b3c0042f *R/algo_rogerson.R 851baf7f0ca3f4a3d32a52a749e51fdf *R/algo_twins.R 88172bb94a613e34c473ccfb218e1c92 *R/backprojNP.R 0d2e044eb0e5b6b46c20574299fb247a *R/boda.R 07fa860d9193bdfedcde3246af34eb15 *R/bodaDelay.R a3767aeb34de3b1ab63d4fda6cc4f761 *R/calibration.R e9c0d56c6af923077683b772eb3d2899 *R/calibration_null.R 63e3a2a17fbad4a1c6ec48875ba83f39 *R/catCUSUM.R 45c35382b502db42fde4f6c29028a106 *R/checkDerivatives.R c65e9c1ed5054d3ab72e8e96d4151eae *R/earsC.R 6a624713a7bc868214ec50c18e477d0e *R/epidata.R d80d30bf6fc511b9037790ae5a695a99 *R/epidataCS.R 90924fe01ee848b87ab805f0644cafba *R/epidataCS_aggregate.R ee2164c20d9f007bcd423c8934adbeca *R/epidataCS_animate.R 25865d8ba97051816fbe353ce4400066 *R/epidataCS_methods.R 7f5b23876808f4939f526aa5e5893e55 *R/epidataCS_plot.R df3d5c384a0656ad404cc0101d8fdd00 *R/epidata_animate.R a69ba7873b84eb0a9fd8bf758fc92de5 *R/epidata_plot.R 35ce768de049a55404dd31a59af18041 *R/farringtonFlexible.r 9f7ac36012ccb60b1aaed07dd8d69ff1 *R/gd.R 3ca2a3350552438778d972bdf9f4e336 *R/glm_epidataCS.R 499516a69f9535c3d423e20fff7089b5 *R/gpc.poly-methods.R 984ace8e2de655000f9b7796d8eff099 *R/graphs.R 16a6ed8e9c992048de794573970330e0 *R/hhh4.R 10dd50c60d41c146a769f803470091f8 *R/hhh4_W.R 2e29adf62fc0fb8d436917580b4a2a43 *R/hhh4_W_np.R 207b5bce3c14a1ea8570f3a2583ecdc4 *R/hhh4_W_powerlaw.R 7caed8262d4375655463a1f4093893ac *R/hhh4_calibration.R 8b8612892376b2047779e7decab2663d *R/hhh4_methods.R 0eb484e53510faacd45d2d385bb34022 *R/hhh4_oneStepAhead.R 9b5299549f6853b7e8b4c3bc72af14d1 *R/hhh4_plot.R 5c238e58252556b17eb53974b4b630f8 *R/hhh4_simulate.R aeabcf844d197172352ef7ed156918d5 *R/hhh4_simulate_plot.R fb7d2588cebd3f30a4f01b496afa3f3e *R/hhh4_simulate_scores.R 75379748a214a5e927e46d29fbd4d6a6 *R/intersectPolyCircle.R a88f139b35ea30b5c3239aa02fbcef24 *R/isoWeekYear.R 43de6844ecc53b369136c2053fcf0de0 *R/knox.R 9dfa1650025a4ef8cf774960c750b12b *R/ks.plot.unif.R 497c59cfb53217f850f7b74a1ae8ddf1 *R/linelist2sts.R 54b4e5a8c54769aa9952173f7f4beeec *R/misc_dataProcessing.R d422246b5d50244224cf20c9e3801cee *R/modifyListcall.R 97dc655b61a75fe9c57bb39e2f5013a6 *R/newtonRaphson.R 404cf92987cf9ea4c7da4da69492a55a *R/nowcast.R 830047121f13634016fd49f29e1eb9bc *R/options.R 6ef55423957a51d580307775bd4520bb *R/pairedbinCUSUM.R b66d060a9e1c8fb0891a12e1c1fee0e0 *R/permutationTest.R cf7ba639447e6e93f1651cad2e144284 *R/pit.R 77bcd54892b3ab21848fea808a9e00f5 *R/plapply.R ce260573344c25b486aed2d9a7f2cd43 *R/plot_graphics.R b8f1263487a1a4c00fca3489e54d004b *R/plot_multi.R 09197f8ab423db066604ab32d9417970 *R/plot_xtable.R ffd5865f135e6fc047252491ccc9c8dd *R/qlomax.R b98c9871428394448a9d13425e26b195 *R/scores.R 7a05e6653d764f127813157b00f1f576 *R/sim_HHH.R d76738240acf75767e17440185a3503a *R/sim_background.R 064d3a73fdd755280188e83d8f858945 *R/sim_pointSource.R 242755258433d782a7fa795806c18e8e *R/spatial_tools.R a3282a593bcc45033a3d3e9a73173659 *R/stK.R 586867dd964e87bae8dc1a276c4ef094 *R/stcd.R fb1fb7a4864552d046ca934b64afdf7b *R/sts.R 6c830501f2f3655580a08cf50dd6ecfd *R/stsBP.R 4633912e6b914c3e67710f4a1fd5dcc0 *R/stsNC.R 143d92425985057f94fc7c1899db3f31 *R/sts_animate.R 53f0785856251057a59cb7ec0517dcdb *R/sts_coerce.R c777f4369f689861980f40d8554657fd *R/sts_creation.R 0e4fcbe1170e878d419515cd1b0f8ef2 *R/sts_observation.R a57c41f5604e440ae6040767b34b8aa4 *R/stsplot_space.R 4686519cb1bb06c5ac9b06b798f3eb3b *R/stsplot_spacetime.R 64be15fe82c5668572352b47832332b1 *R/stsplot_time.R 837eefa65010f2dd43829ab5f773c867 *R/sysdata.rda 692aa77b1ee65f1269d73aaf2ea9905a *R/testcalls.R 1c843971840d20ced297ffc056686bfc *R/twinSIR.R b9b75d193bf403aac831669a2b6c7975 *R/twinSIR_helper.R 0c251c18648b2a2b03eff1a432d49698 *R/twinSIR_intensity.R 3354c3a24ff8769e0fb16cf979292856 *R/twinSIR_methods.R 429c3c3b0134b5c30b0db41b3b6552fe *R/twinSIR_profile.R 1f462dbeeef8d205cae58978fda2c454 *R/twinSIR_simulation.R 1acbd851e9f90fe7761ba7e30751111b *R/twinstim.R 10c338679ceac4d27274402a25132bfe *R/twinstim_epitest.R b9e200c484c4ad9534ddafd53fb52826 *R/twinstim_helper.R e3045c2a39af7023e9fde2ccb8eabd2a *R/twinstim_iafplot.R 1ae190de4ab835116e11be2f709cd432 *R/twinstim_intensity.R cc6c8f41a97646c937059aed81eaa781 *R/twinstim_methods.R e7748dbb005c4e5b21804dec3d37de73 *R/twinstim_siaf.R 83dac90d0f291f39e946338335fdaa8a *R/twinstim_siaf_gaussian.R a29c381498d9c352ec9b14ba912cf42f *R/twinstim_siaf_powerlaw.R 732393af520c9548387a4bf746b748ee *R/twinstim_siaf_powerlawL.R 234509d7dd8de0aa26042914e72f3627 *R/twinstim_siaf_step.R 288b5fe38da4f01c329a3cd7969d352d *R/twinstim_siaf_student.R 80992d1079de20282e278c8d6527547b *R/twinstim_simulation.R 6c130c853f64a111b359f76961d6bade *R/twinstim_step.R 41873e7e265772bbf754843638b44141 *R/twinstim_tiaf.R 4386e88e8d8494da55b5d5b23c6d15de *R/twinstim_tiaf_exponential.R 6e5232e1cef48ab0a33c05610abbed17 *R/twinstim_tiaf_step.R dde1fe166f77b85c9734d118ee0c47f4 *R/untie.R 339a9b5872a2d937bb4404e1c4b5472b *R/wrap_univariate.R 1a349c6cc522d1617493df58a0646b07 *R/zzz.R f55082744bf05c5beb754163c6e9d4f9 *build/partial.rdb 40f9369718493a35617a85365f8f52ae *build/vignette.rds 39cd4adbe3c05e3bed5a29e962a30724 *data/MMRcoverageDE.RData bc57ed2de6c59d625e8ff1dc4bcc534d *data/abattoir.RData 8f11226dce910b95b8ef780e1e087340 *data/campyDE.RData a5d19dc926e0079295e7bbb807b71183 *data/deleval.RData 39d04cde4be2c6f0722e7516ead4f5ce *data/fluBYBW.RData 1a1a9a313becf102d191c6c80809df21 *data/foodata.RData 7f00d8ec6194adc54678c9ad5aa684a4 *data/fooepidata.RData 9f87d4b730164ab5cb0c7cbcf1b22670 *data/foofit.RData 154bd5f0caec21664a3b42caf7990582 *data/h1_nrwrp.RData 731c70fffa23b3683391557f47000132 *data/ha.RData f13e5e8fff2b55cb8df0169792c821eb *data/ha.sts.RData 836e9f6eb2993c4dbf7f4b975d78eb35 *data/hagelloch.RData d86889b540c46c9b9ea2b42e5dfd3bcc *data/hepatitisA.RData 2aa9e24781d83436f2daaf4db6b788b5 *data/husO104Hosp.RData 355646c5dc107c6eec18360c7d4ff67e *data/imdepi.RData b2143657132c1d0c6dee57dfa3d62a90 *data/imdepifit.RData 3723c7f472e9782de2011d7885218586 *data/influMen.RData d7e124e76fd06d35ac3de97cfb3ca0d8 *data/k1.RData 1173ed2c8b616486e274967c6a97ce8f *data/m1.RData f4ae714001625bb89963fe0e4e2e9a77 *data/m2.RData b21b89d9b8dab8750e93f944fc30cac1 *data/m3.RData ec915cd8e2ce14bfd9a8de11bdba92ad *data/m4.RData 728cf151f5516831158588b57d194cd9 *data/m5.RData b1313db9d37f054c5185cea5fc215ca0 *data/measles.weser.RData 9b38f5dd970f407ef6eb0197c9f428f8 *data/measlesDE.RData 7943fdaa82eaf979ee250b184d86ab65 *data/measlesWeserEms.RData 6e88fa261848741a2927e8a0208c176c *data/meningo.age.RData 32eef47d250194f5decca9c2e78126ae *data/momo.RData 0c08f2d5d556db1d91f1c6a3d3125d70 *data/n1.RData 029fff2b44242b6fc032dd4abb839207 *data/n2.RData 9b33e305674dc2bd24e465592a88e4e1 *data/q1_nrwh.RData f19779c068198733db7f1c95cecc19db *data/q2.RData 8f41ddc82674072f51517b573007112f *data/rotaBB.RData 66338d480d9d6f7541d6b7f5690f1c94 *data/s1.RData 08135e0c5091d08becc0ceb7bb3bb3c4 *data/s2.RData a24280cb563d545fa1f547b5c0959962 *data/s3.RData 40aaef3e199050b65e56c11086bda336 *data/salmAllOnset.RData 9936b098fc80b9477d114e4f169ba2fb *data/salmHospitalized.RData 177f82cfd139402fd4c68014c65faf46 *data/salmNewport.RData d499ba8320a459963385a51782b4b0b4 *data/salmNewportTruncated.RData ebc818bb58803591f7ade0b04d956926 *data/salmonella.agona.RData f976fafb219fc04b750e0e4117ba054c *data/shadar.RData 97c92287e08fb4908e6e1e5377ce4f03 *demo/00Index e159b5d6c0721a2cdf1a70d5214fbff9 *demo/biosurvbook.R 4d6bd14dd3ec931e3c6dec21828fca21 *demo/cost.R df47f43daa0ffe60153e8aa104e3b322 *inst/CITATION 038cd7ddbfff1e4220b4ceca4da0b242 *inst/NEWS.Rd afacf9268dddd41c9676c76948bff266 *inst/THANKS f5d3f6d9e3a99510209bd5258a9f5e86 *inst/doc/glrnb.R 1bfc7cad083555b735e52ee8b86ba5a7 *inst/doc/glrnb.Rnw dde4385cd18ef4cd8fe42b8ed2698bcc *inst/doc/glrnb.pdf 734129adb40801b5d8ed25041e28935f *inst/doc/hhh4-cache.RData deb25285000698d4051bb602958ae4ac *inst/doc/hhh4.R 036777cf6a290e139315346c9f02c29d *inst/doc/hhh4.Rnw 3daffc20744dc6e0c194f0afe074c5fe *inst/doc/hhh4.pdf b1eda1570ac0b890180ee15fbd697485 *inst/doc/surveillance-cache.RData ec62407c9462e8214f7ac130084f7ead *inst/doc/surveillance.R e36dcecb8213ccac733a1835a8b9a34f *inst/doc/surveillance.Rnw 7e1e608b5bbfc898ea7ca1d8a4717425 *inst/doc/surveillance.pdf e2e3d5a2b56513964a64fe6476d52818 *inst/extdata/counts_flu_BYBW.txt 7475135b03ccdf173429ee21b85ca4f8 *inst/extdata/h1_nrwrp.txt 6b1da7976e5a3a83fa4aef34a85fbc3b *inst/extdata/k1.txt 8df0eec6b4370d8fb4474939bd468f75 *inst/extdata/m1.txt 36acb8eadf4088b4df254363e491c93e *inst/extdata/m2.txt 7dcfecd167561244cce073f26508cc65 *inst/extdata/m3.txt fa4c5c3940fadaa326d71e557c0fa769 *inst/extdata/m4.txt 987da7f7150baa5224cf002ff433cedf *inst/extdata/m5.txt 695773a46addc3189753d7b00bf2cec9 *inst/extdata/n1.txt d1cfd8d70ad90c0588b5ecab843d6a44 *inst/extdata/n2.txt 7368155ea8525f22a4039c99101fa209 *inst/extdata/neighbourhood_BYBW.txt 57facd5cc2cdaadf18538e6742158b88 *inst/extdata/population_2001-12-31_BYBW.txt 242a2683b7480faf8755ecee88e640f2 *inst/extdata/q1_nrwh.txt fc7bf5a597d4ddaab36faa6b02f682c5 *inst/extdata/q2.txt cbe1b1190400f7029f24c761c100fddb *inst/extdata/s1.txt a8cf8716b32896d394ce1a1528763d2d *inst/extdata/s2.txt 403ff1cd7ad4649f141448b45c244036 *inst/extdata/s3.txt 3cfa159d1f9810e948068fb7831fdc2c *inst/extdata/salmonella.agona.txt f4730e000238c07501367e4aa0ffd42c *inst/jags/bhpm.bugs 61faaa303d7c5e4e88278dc1026f1463 *inst/shapes/berlin.dbf 6d61b4a4e2ba0197aed611390250f5a8 *inst/shapes/berlin.sbn 4215c8c5fc9aa22fa9277267cbe20746 *inst/shapes/berlin.sbx 57a46753e569f12f8aa48540429444d4 *inst/shapes/berlin.shp 2a29a0fdf04dc5a01a3614ef1096f7e5 *inst/shapes/berlin.shx aaba0229b93bd6fac056f5081a3e1f35 *inst/shapes/districtsD.RData a1ad825549f8d4aa6b6a5cecb5755b1b *inst/shapes/districts_BYBW.dbf e05bceaa0e4dcea2fe3effa1dcddd2da *inst/shapes/districts_BYBW.shp 9962ddcf28b7eea0ea31c1720d14e77b *inst/shapes/districts_BYBW.shx f57304050e5f7426989f2dac453b6861 *man/LRCUSUM.runlength.Rd 68047c0b43e002d3d783324d1dee07ed *man/MMRcoverageDE.Rd 4219680c7ccf4f10ff8a393f589bdc3b *man/R0.Rd da8720710ea889050ea057019e2a17b6 *man/abattoir.Rd 82fa37555bcd0c6eeeaf74eda3bfddfe *man/addFormattedXAxis.Rd 4928aca648ea7539b80ede7e2055eb17 *man/addSeason2formula.Rd 83d43d0ff309d2f2d2061769f051c73d *man/aggregate.disProg.Rd 85b2aedb900efa03116659050d5a8bec *man/algo.bayes.Rd dbd5719a4b67d4de1fab1825f9a8ab65 *man/algo.call.Rd 6b3204c2302105e121daa0c6f6fef403 *man/algo.cdc.Rd 7c77206eab8e761a1f1cbcb2c2383e86 *man/algo.compare.Rd 2e165517bf4d7c227f5c40e0e0d69411 *man/algo.cusum.Rd 68db75b26253074d2e04baf1ba42893a *man/algo.farrington.Rd 43b5e5c1d6ec4e0cc7efa582d4a1f047 *man/algo.farrington.assign.weights.Rd 5bc4e2f69607461bce07378ae4cd1e71 *man/algo.farrington.fitGLM.Rd 5c26bb44dd9f7b4ba6ea36aa12c223d4 *man/algo.farrington.threshold.Rd 2820251cad83070a9a6a5c382dd14a4a *man/algo.glrnb.Rd 3acbda9096665c1c194e7d5564591c5b *man/algo.glrpois.Rd 172a0613d9ea8c41249465b71b1b402d *man/algo.hhh.Rd c558c05d835279f4c34433b9b0739cd0 *man/algo.hhh.grid.Rd a374d8c18d1a8fbdd4b8ce1a37d8405b *man/algo.hmm.Rd c62fdc5bc3aefdde79704119341edfa2 *man/algo.outbreakP.Rd 5bb563fa48de712e102f0fae75b36117 *man/algo.quality.Rd a8d32e124ec656138b4d95b18ba01864 *man/algo.rki.Rd 7b4d8231127a12bad082bb9e978ba51a *man/algo.rogerson.Rd 153a9f225b8d231fa67e36f9b277cb9d *man/algo.summary.Rd 11aa92b671d6ec4da4c8d9b0fa29838d *man/algo.twins.Rd d3822596ea8c07c0ba128f7f70f2140f *man/animate.Rd 4a498092a4dc6f05aab28dbadd9fecbf *man/anscombe.residuals.Rd af4a2443f164cb0761ab003ede106ce6 *man/arlCusum.Rd 812a5d199e8fed3e016926f0e43fe43c *man/backprojNP.Rd 69323cec2352af38c3c91c2bb4e0f0ac *man/bestCombination.Rd dc9280028824aa4af93afda068a3d2fe *man/boda.Rd b4413de2089fb22e038a6fda94c7f268 *man/bodaDelay.Rd 55c1c52dbe2f9227b76df24d43f590b2 *man/calibration.Rd dd213f85cd35bda79e56b8365f16641a *man/campyDE.Rd f4b3fd5a4089aa1569e2878a1e864b04 *man/categoricalCUSUM.Rd df6455aa6be9dfc476040bf1b9fb999c *man/checkResidualProcess.Rd 27ef79270ab1c247cc00247a25d96b65 *man/coeflist.Rd 2aa23e12ccfff25d1f3fa7ea1a061503 *man/compMatrix.writeTable.Rd 319d40887d73a27cc8f4c5029cabff75 *man/correct53to52.Rd 1aea752efd836eb3fab5164b3c6c483a *man/create.disProg.Rd fa32f0323061e36744a6ba031a5a8469 *man/create.grid.Rd a09a1f8d94afb6f99365294cb3c59390 *man/deleval.Rd f19f6e9be0bfcc9a6e08adbf958c6b7a *man/disProg2sts.Rd 80329fe7efe094d8833545c66af03bae *man/discpoly.Rd ff1f4ba162982f12db8d92af84e84289 *man/earsC.Rd e27fcca6f14c93e3e26d98ffaa5363a1 *man/enlargeData.Rd 0a5655e37039526bedcb0d3977ec8b74 *man/epidata.Rd b5a9061024de0e72cf1dd0e120fc0efa *man/epidataCS.Rd 84f262ed2bd30d05529caba023cd9f2f *man/epidataCS_aggregate.Rd 1540323ccbc72f075fd7a3fde0953975 *man/epidataCS_animate.Rd 13db8505c5a7bcf6b345fb2d17529412 *man/epidataCS_permute.Rd 1ef31457ac61c3f6630e20bd16878953 *man/epidataCS_plot.Rd 7bcbfeb759bc26af095d44f5f91b4352 *man/epidataCS_update.Rd e242b8cbcbfb4d1fd4b1dd821ebddaff *man/epidata_animate.Rd 29c85a80c872cf6a2875c973b27e2bb7 *man/epidata_intersperse.Rd 310f5611a7bf4b84ff4b7f512a3e508d *man/epidata_plot.Rd b1c1a7796cdca7984d7d0a1091f9ab1d *man/epidata_summary.Rd b7db2bc364bc5e070d0422d235026807 *man/estimateGLRNbHook.Rd 6cdfcb41cbf1187608b9ce530e4a2bad *man/estimateGLRPoisHook.Rd 90252b345f9f2df81c7a13677602e884 *man/farringtonFlexible.Rd 08907427c5e4283cebd965c020e5c314 *man/find.kh.Rd f9e50061341a8bb2edcf9f97db60b6ad *man/findH.Rd 81fa90d421a1125feb41851f896e3e2b *man/findK.Rd 6fed2bd513fc5b900ee47f48a7851085 *man/fluBYBW.Rd c5abd4fb24364663f13b98295ac4c169 *man/formatPval.Rd a09153f7f82a39eafc90268e1ffd8c7c *man/glm_epidataCS.Rd 78241ec03b9e2219be5194ac8d58eec6 *man/ha.Rd 9af6e734f6d461c0061383fe7c4517cf *man/hagelloch.Rd 361794e70ecf193a1fb2878ed63532f8 *man/hepatitisA.Rd af940fbd667ca7d9a9f620cd42b54557 *man/hhh4.Rd 92c6255729ceb9790421297cfce57186 *man/hhh4_W.Rd 547365a50260a16f978fe8ffa30dbb16 *man/hhh4_calibration.Rd f88d9d1065edf53afff88f1cd2ba3e11 *man/hhh4_formula.Rd 73295e0c655db73ef97cbadb7529b26a *man/hhh4_methods.Rd ed775c289130ec72a4de4f0d76d5f079 *man/hhh4_plot.Rd 4a4fa202f05de5855e78a9fa2269ade1 *man/hhh4_predict.Rd 62f5c7765bd90e5f1fa36de3f81bca82 *man/hhh4_simulate.Rd 7965b7cc2cde43404367962040693916 *man/hhh4_simulate_plot.Rd ba7950445596ac0eaafd87768eaedbe4 *man/hhh4_update.Rd 3ab46895779532c54bea460afe34aa01 *man/hhh4_validation.Rd d0d32f0fb5ce379ec1f73f8863ba449a *man/husO104Hosp.Rd 9b1851d1e757d451ac1ef0c972c9beb1 *man/imdepi.Rd 7c6c7d7f79f9570fbc7acdf91af9462a *man/influMen.Rd 0a357ea0865d70111f7baee6b09d5f7e *man/inside.gpc.poly.Rd df35457995a21853415e9af9e3ada813 *man/intensityplot.Rd 2b609124840577c36396c103047b97f9 *man/intersectPolyCircle.Rd 9d04dc30b863d2a5961247f906ec770c *man/isScalar.Rd 7f7aa11ba9faa653ef4020f1ef5c76d9 *man/isoWeekYear.Rd 3367913f8708b545d0f1d414779f7364 *man/knox.Rd 679aeaee52f1b1a521cf846ebf1f8ec9 *man/ks.plot.unif.Rd 11a9c37d74443482dfc40621e25a9bee *man/layout.labels.Rd bdfc62f0d6ed4e16bacc9ac41fd44ef7 *man/linelist2sts.Rd d52f3c41b3587f148b71c942af1e278d *man/loglikelihood.Rd 1a1d99966006b6998b726869180a1bc0 *man/m1.Rd d3447ea171121378eb39f6a79b4e5203 *man/magic.dim.Rd 0871650fbdd650fc46df7c8762b2508c *man/make.design.Rd 2801e72dae8ef4b33672b9922e8293cd *man/makePlot.Rd 098c1e1193138d967f8f56321dc0b2ff *man/marks.Rd f665aea89a14a094010e5b880e18f582 *man/meanResponse.Rd 6eb45920bb2cd6c7b07bf55ecc7fbbad *man/measles.weser.Rd 69fdba5f7fcbd2a12497c033d4d5d073 *man/measlesDE.Rd 76dd10c0fd87ada9a7bafb1b1146dc6d *man/meningo.age.rd 830007b42af55db87531cca4b1f33c4c *man/momo.Rd bec2e83ec1953e0fe360232444e9467c *man/multiplicity.Rd 958c292482aa20849b325fdf8405e80d *man/multiplicity.Spatial.Rd 0c66f14de0b9d7713536fbc4d621319b *man/nbOrder.Rd 52c5016a48d5cd91bd78e25f17c755a4 *man/nowcast.Rd 01aa4c75d7e14f1b4d5352ab5819d936 *man/pairedbinCUSUM.Rd 897395823d1a865d57bf5c2be2b6bb4d *man/permutationTest.Rd a539b555e335b3a8569abd948dc05513 *man/pit.Rd 44d63f2f2c26cedc8ad8870cee11f5d3 *man/plapply.Rd 4c0c93b8260967a505aceb7cd519cccc *man/plot.atwins.Rd 7696c53856163ddbc06fef5dfb23859c *man/plot.disProg.Rd 9637d3e9c2cc5be63e4617f163ca232a *man/plot.survRes.Rd 41a6f183cc51a1bcac4a03243cf8ee05 *man/poly2adjmat.Rd 48cdc7c2ff6188011fdd8d2b80c0b1af *man/polyAtBorder.Rd e208f167886c6ccfe22cfaf2a4ea0731 *man/predict.ah.Rd 607bc9e8b1624f1415019417f6e0d9b7 *man/primeFactors.Rd 928eff1f1e598de4176175af89560fa3 *man/print.algoQV.Rd 78f3fabce93aef267799a0528c84ed69 *man/qlomax.Rd 312512ae8945e7acb44f8e3f4e0efb39 *man/readData.Rd 98fd54bb56a99b006f43750ea6f4a94d *man/refvalIdxByDate.Rd a0785182c551f53e6a8936d3ceb60ee4 *man/residuals.ah.Rd 0b2c3b85fab34b5d43b04c887234ed7a *man/residualsCT.Rd a5a8329b25bca06bcd36b7555f21c2c6 *man/rotaBB.Rd 8e2f897034179b074dfc583386fa89eb *man/runifdisc.Rd ea410f2dbb60d1e41401b9ed61ea9e64 *man/salmAllOnset.Rd 0ce27cdac9e92a01d12a4b2e5d482e5e *man/salmHospitalized.Rd 927528f27c3ff3ef8c50539910e62e81 *man/salmNewport.Rd c370c11f08bc7cb22bad6c846ce924e7 *man/salmNewportTruncated.Rd 079678c075a737515b89fdef444a0715 *man/salmonella.agona.Rd 13b2a4a417b50c7b4dbb1903dfab6f68 *man/scale.gpc.poly.Rd 2a0f8870abea1924431c9c7488b734e0 *man/shadar.Rd f956e4d3ce5dda9f025737d7ef043a6f *man/sim.pointSource.Rd 59cbca3d776400f8e5bf94cda309904c *man/sim.seasonalNoise.Rd 14923989e97e84fdce22e2f71f13d744 *man/simHHH.Rd 2928daff0fc24657fefad6b4fd319ca5 *man/stK.Rd bb60b62230fdc91b7f6ad6a09d9bfc02 *man/stcd.Rd f8bebdddff422e7afb93e134287a1d80 *man/sts-class.Rd a91c50f082b59f28a76b8a6a1505c0ce *man/stsAggregate.Rd 35c3ddc633a082fa29522ba7e75f3c17 *man/stsBP-class.Rd 008d989e61a4c495e15f5214de21aec4 *man/stsNC-class.Rd 12f381b8971e40942556064737297adb *man/stsSlots.Rd f3a5c440990e678b3507e1276034e679 *man/stsXtrct.Rd 1821443f807821d736c23886b7b004ce *man/sts_animate.Rd 157630a0b5e470b8b4f2050223909ef8 *man/sts_creation.Rd 1edb3a0998d110941339fda0c0e17c94 *man/sts_observation.Rd 3281c5636e2cbf792caeb084dd52a580 *man/stsplot.Rd d16b7f11082f8f9c2264091daa05779a *man/stsplot_space.Rd 67fbb0bbda4364068ab2ca24cb9f4af5 *man/stsplot_spacetime.Rd def4c2748de09952bef47106e7cb9c91 *man/stsplot_time.Rd 7a51052cfe961bb040b176c81339441b *man/sumNeighbours.Rd 44b4287d9d17768c1dbc45533d06bd10 *man/surveillance-package.Rd f630ff7277dc3556bef3d06b770d8725 *man/surveillance.options.Rd f9d253c0ab49b0057febd30f9c36203b *man/test.Rd 7f40863d854dacf0cc18ff9bcf98a7c5 *man/testSim.Rd 12fb515e2c77bbb76ecf237f8b1ee1cd *man/toFileDisProg.Rd 7f42c8c291e3448e2b04fb324a2785d3 *man/toLatex.sts.Rd 285859a6b9e4101ee5a01973c844c4ae *man/twinSIR.Rd 52c55bd23b27f40474997747638a9490 *man/twinSIR_cox.Rd 98050ca89a2d7c4c2c49118ae5b082b6 *man/twinSIR_exData.Rd 8f533c093d85d4cd3c3352019ecf5879 *man/twinSIR_intensityplot.Rd 853cd4d7acce33f3154157e7f3abcfb7 *man/twinSIR_methods.Rd 0c0d0fa28350f1dd4f9f8318b4f5a0e0 *man/twinSIR_profile.Rd 92b187b936c18485f5d6cfe074c16a1d *man/twinSIR_simulation.Rd 214f77ccb980aff8b91d51f30e04e5bc *man/twinstim.Rd 769b690e71a42372e9d57fdb46167c03 *man/twinstim_epitest.Rd 2e990a567d14112877f8122fbb48d08e *man/twinstim_iaf.Rd 726edb0c34fe0c95f9fcbeda1fdab10c *man/twinstim_iafplot.Rd 12de6bc78d5c95e7aea345ec4b481b3b *man/twinstim_intensity.Rd 51a3e203694b7156b9e99c68a7f9b163 *man/twinstim_methods.Rd 30954d87702654fac94fb92a7170e848 *man/twinstim_plot.Rd d28088c7a58a21f0fe5c457c1e156632 *man/twinstim_profile.Rd 629fef295d8c9449a58aef6a23c3a0f5 *man/twinstim_siaf.Rd 915638d0d0866d5baa65c760c942e937 *man/twinstim_siaf_simulatePC.Rd 48a022fd0d54e797eb67cdae3ace418f *man/twinstim_simulation.Rd fbe1dba9b0d30afdeda1e42773c3394d *man/twinstim_step.Rd 3977925a2d40feb47561093bd350f57b *man/twinstim_tiaf.Rd f2c66d064b8d81b3b07c10464c338120 *man/twinstim_update.Rd 6df6bf11745b7358ca3c3d9a3f5ecd13 *man/unionSpatialPolygons.Rd 36611d9eb434c9f30b7aed888a497971 *man/untie.Rd 230d12d5ee090a66b428939d10aa2383 *man/wrap.algo.Rd 827e035f4597ade0783da616b100fd1b *man/xtable.algoQV.Rd 382c0cb7667e12641bbe5fd11a082880 *man/zetaweights.Rd b03b552e9456a164ef4b99a3a73f1e24 *src/backproj.cc 591f53f4e940f79fae3422b45238e815 *src/gsl_wrappers.h d250bee682f538b62e1211abb0c6508a *src/ks.c b88cfaeae45fcb3d8c9d4a5e3e2a27ed *src/stcd-assuncaocorrea.cc c7e10733c5a4a27293f72ae939935163 *src/stcd-assuncaocorrea.h 03a0735693df581df0ff1da9b3de050d *src/surveillance.c 669662da4a89999b6a37b1fb9c32505f *src/twins.cc 5a28241871cff7fab9986a4be9bc5c7d *tests/testthat.R 0a5ff8b81a012b221245d3ed117e00f9 *tests/testthat/test-algo.glrnb.R 60ef91ae1644f77a78421bc167836b0a *tests/testthat/test-bodaDelay.R 7483837368c545b7aeac23cb02475d53 *tests/testthat/test-calibration.R 50d327d505769853ce3efe712b7a4471 *tests/testthat/test-farringtonFlexible.R 9815b459b6e7a451cc98e4fedf2d7bbd *tests/testthat/test-formatDate.R 54f7e2d4384b24dafa6f3fb1b42cdf27 *tests/testthat/test-hhh4+algo.hhh.R b395815d92dd6ad1c112ef1cab023447 *tests/testthat/test-hhh4+derivatives.R e14fb292c7c8d198cdb4ba419ca1ec0b *tests/testthat/test-hhh4_ARasNE.R a6f6fff340fca776c959b05066b4c8cb *tests/testthat/test-hhh4_NegBinGrouped.R 96ca6abb7df9823cf14ca582882c5db8 *tests/testthat/test-nbOrder.R 2859de753c985ea8a85bfc1ee268c804 *tests/testthat/test-plapply.R 16d866934864baed2f9c6cf3f1de458a *tests/testthat/test-siafs.R 463185a9e92a84cfbb818a36bb3ae020 *tests/testthat/test-tiafs.R 8e3f86ab6f83cc1479feb44ef5ca36aa *tests/testthat/test-toLatex.sts.R f5039e0e9ee9b4464dc74b789bc85cf5 *tests/testthat/test-twinstim_score.R 1bfc7cad083555b735e52ee8b86ba5a7 *vignettes/glrnb.Rnw 734129adb40801b5d8ed25041e28935f *vignettes/hhh4-cache.RData 036777cf6a290e139315346c9f02c29d *vignettes/hhh4.Rnw 63a7b963e2b9d494c031451bdc25f761 *vignettes/references.bib b1eda1570ac0b890180ee15fbd697485 *vignettes/surveillance-cache.RData e36dcecb8213ccac733a1835a8b9a34f *vignettes/surveillance.Rnw surveillance/build/0000755000175100001440000000000012617067300014065 5ustar hornikuserssurveillance/build/vignette.rds0000644000175100001440000000050312617067300016422 0ustar hornikusers‹¥RMO„0íË.?6Ù?Ð? ý&›õ`LŒñ°×‘h,-)EôæW,lQJ6ÑÄ¥ofÞ̼—îW!ùž‡<ß\ý9Bó­;€™”q%žâÑØÀ2Ïó«^Wµz¡Œs íãnƒËkB˜fRÇD&uA…†c™bSœÖ"é1ðLÆý8K½ø3µÛÉ’ð Õš‰ W”¦7Lç}u É3dô¸À’¤ŽÀì ìânƒ…uÈÂðàEg®;&²é©‡3[u2®š´wsvÅJ-%¯†™w {ý¥ë±Éç™ëÖÓ7JÏ´²œÐƒノù#ÓßÀ¿ßîìu6Ø·ØÒ’ 2è\ÞÒ·F*ƒÝA‘’M< ;í^õ»9Ú¶ý˜n”p¨ª‰Š qª ß Ï/B%/surveillance/build/partial.rdb0000644000175100001440000001612312617067267016231 0ustar hornikusers‹Í=isG–â4‡ÛŒsÄ0H¸»%°A¶¡˜–8ÆÓ6ÎîÊV—U]ÕS‡ä†õÆ~™ßâØý¶1ûÕß7b6bþÇÆü€™Í—õª:«ºJ¨º‡ˆä¥º²2ß/Ïz5^(† ÃCC…¡aÈžæÿ(†–øß'Åß#…î^&O ›‘»¤B®—gÊ׿És½a˜¶£S›i"±˜m«ú©V”§mÛzkÙt‹-ÔUS~$[šQ£šÖ)F†¤ZV”×¼ÏÉm-=]__y².l™u“58‚Çà/Y?­vaà­1þVCÕÏŽÜ ^Ñë!FŸo®–n†ÊbzÝP8¡Â5Ê)Ÿ •>l«-Æ™ÐjóŽÃƒÅ¿.UþëÅ·Û¡‚£uZÖ9ä¡ýìéÆÚ«ºí5!þ´yîïa¤€8¶X©GÓv«=]áÿ-ªönçþtEˆâÆìõÚ\cîÖµë5:m9æS5êu6Ý¢zà‡R›Ö·¹Ë%ÔäЮjl:ac.-‡þV€®ÌâŠøÊàUÐÖãîk¯l®¼B½úGH“îK”æåFþ‘ åËD1˜EtÃ&»†¹M¨EØmV·™Â Æ »Œ4é#¶A,þ³ÚèÕ&ªN­7Iuƒ6c( I€˜!$à2æ—3“˜§ÐüŠ1õaä€1¥@ýc€íï'ðDGžÄüÉ48E¶z¸ÚuT‘M@øæ?è¿T ùSÄ”“TÎD9²8 _¬TîE`8 F†ð#Ì”›ŒF«®ÏŽlöÂ1ÿqÿåÍ"ALÿDòtáǘOŨÈVV©¦R+¦Ý?Á|:Îd¤‹Ä”“€Ž{ëD‚Ca<ùÓ}Ì àÌŸé¿` ù³Ä”“`ÆÞa,1H ÆžÄüÉÜdr¨ªõÍN;ÊŸBI`ÍŸ’`úþ&‡‘ÌŒŒgEÇS bÊÈ•!BâqYPŠ^3âñp“µÚ†I5Bu…l´y¤f”üßÖ …i0`…‡ë†®Ú†  ²ÒVÖRëäY“éF‹¯RÐ3Œ°Šùjÿµ šÿF‚˜ú.Þ£(Ò£¹Š÷ùe²Ö ¿T­²N'½ˆwªÈ‡\D­úÎäi˜F‹L¸!ú™\^ÙXª¬=Û\{údž¬xoÀèëŠ÷þ•ÒönE|‰ù—ý64ÿJ‚˜ú.ìc(àc¹ ûõe²,ÆË&ƒy$¢3¦ð|É“[‘¨eV.ïïOêEo‹nóAv“áúŠåÇ ¼TuÅØµî$û15@ŠyÚ±¬ISnÑ–­ÚZT¿>Ž¢=^ÈГ¦•Ž(>&R뫚˜ôôè`\:ŽÊèÁ¡\”21'&fëþG²¢s9âAL}wR\˜‹Ë(üzè?×ZmñÞÛ†Ž_‡ŽÝ‚¬e«uÞÿ·˜Ý4‹4 S¸†–ŒüWoR}‹P U·‰ÂlVU©:Ù]b1SeÔ\7Ý¶Š¤m<¼€BV°"j³-`@Ë µiæw™¦ìAAT¨sÿåŽU‚¦üŠ˜›´½Ø„;½òw}Šjqnجdñ1àf;m‹XN½ m@ý„@à>»µé¥&w¥ŽUgm[­i¬´òCÛ°˜RZÓ‚^ŽB…Õfò‚“+k•)U«èWÄ)0v1p¹Æ9Rg–%¨–±é¾Z¯;¦É7ºU¿Q ˆQ‹Ye²N9ÇFÿ¨Zà¶ Ç®ñž`Û¯$ ! ·Á€˜LuKÕ©X¥‘AÛ©iœ“MÞ¥ØM¿*yèëJ¢Õrt.9Χ"©96¡í6¯€ºâæ­j ùÞ±lO¶wÜ–™Û.ÓwTÓйrîóªL.uZS5Õîðg¼$c¦èÓ8×AÆ¢¯¤‹¢Qçr$V]¶YeÿÁ’ठë1 p, ÑprîLBhn‹êbwÚ š]„‘¿_…Çd]Z¥&ài󧌭‘ÉÙ[·>ŸêjÅÃiP•w×øøÚÌìµ)‚Ú®³-ŽÅ#5• ô<®”–žo<_GÛ”„Ë5[­qíãÂ}ðóŸš\µ?£Ž¨tææT™,«¨FܸdL&ѹôxýK¿6ÍØ>@TÑr4ÛkÞ ”["×6ªY< Ô뚣0¥ËéUÇäD˜-ÃdE¡´®‡½ 7HÓ€¹}AiW¹»´¹ …%d\|†ÍÜà!mè'™Å‚ÝG7yiñ'^¦ÏzuÈ\ã¢èV#A¬ÃÌà‹sS„š d¿£ù¤«i¾µsóÒ%öC]–e¹ã,Ûg¼W^Ÿ_‰ š‹Õnš†³ÅuJQT`TIˆmkGè/<0tIEy­L·ø¯P§©#À[Sdòн«êk•+]'Ù5%pUSýUu_åJÑâïÖ%’Å[]mØŒ26‹q—É낵ÄNÎS× 2è)@;Ðèýj`Hå´ƒ§èš è.vTË¡šú†¡ZYœCÂ~eWÚêc¡‹B=Ç–OƒZMÎØòøaXß'Ï-xÚ¸R3z…3ú-»ÙâþÞQÁþÅÓµ'¯ø-#ñE²Ûä ±šÂÖ@åy§«©c-*:_î<‘Ëè»k`*/»¨xò~m2Þ ªÀëª Â}±_§ÂÚLW¸åñ‡]]æ+¬f– z»Xskn©[M»» çð—Mòtƒ¼"ªÝe£(TJKÍŽ;ˆÐ:6/±Á—=µ"ˆ¡6ùªiÛíùééÝÝݲYRu– skš=tÍ ÊírŠˆiáÌ_é< ÍOJSNƒ£Uר۠ 1á+„Ч²DÓPâ”Øk¼1D’r憲§P8C.ì·€p Ù‡Ù YÑiùq bêû€ã,²âl!ë€ã4Ö5W?¤i)ð:Šðæ¥ÆëbVqÅrÄ”Q\ÇܰE8Ìù¤’û¥õa!0Ó”’C…¸Ö«6­Å´~á˜Ïa1# NISF4öµæ·F§^ÇüõÜÅ2\­›1Ï!üóŸ÷ß×Bó_HSÖò‚™ï[Ë9´s±–sh!çk-çÐB<˜µœ-ÏΔfRàraßíäÚÆ¹ÁÚÉ9´ æh'Õ:&ïUΣmœˆœGÛ8?X;9¶áÁ|ìdôþ³Ç¥k)P9°ïfrMãü`Íä<š†s4“ç•ÇóbŒš¥ hb&Ð4. ÖL. ix0½™D®âD‹•ÍRÃ0·¶Mã{V·ÅäAÞ1Û². .\Äüb¼c„æ˜ZL«§ÞÃü½~Y24º„póØ Í¯JSF4FRðG®Æ (mΈɣˤNu˜Ss,o‰ìªvSÕ ¨Å—bv§,LE<#Ux6QjSËf0Ñ^s¶¶:1í±´x{tŸbþiÿ… Í?“ ¦¾OmH{†³Mm@©¨‰±HlÏv4e…0{0Œ wS2Œâ°É&´Ñ<8’‹= “ÄÓ…ÒFbùÀBßµç"¶}1«ö¤ßU¼f‡æ¿«x¤ÚÞŽ:-qåð æ³ï)ëŠzáœEø1æÓ Ø«/ªVbÚþ¤ÐÝjŽùŒŒ¸ê/œø Ób ±w›FRƒð>æ³èz@bvåÍ#°Öé?ˆÞ@’”š_ )|€ù™©¹Oö¿‘¥gKY¬y¶¨š˜˜O‘€O 3w‰Y%òn 00 £ØÝÁÀ©£5fš¸÷?7 ‡+,Ùjš8•—”‚ø\Å|öÐŽ«Y`kŠ·lÌtXévtu‡š*¬û;¼‚ÂLJÍ/‘‚_æªf\2®RÁò³0„’¿ L»°L^|ç^š„´L þ¹Jfå{yB[vz¶êÅľì¢póÙ‡1ËÄÝúãíX1™Ö­U²óõönÁ–Ó𜱡[”ü ±˜ßÉÔ%ÒíF`™ß±¼åíPîwmƒü6OØŸwDâo»JJÈeDàæ—2r‚ÈÛ¿ÊI‘ú5"ðæOô$t›ö`ú5gùéw“MÃÑ*6°ièmÓ©ÛŽÉp/Œ¬ <ÄÚ˜#âx}R"&q€w0gù¶ 0ÿ€|ز­„F+KO—Wb0:ŒðæäˆVë<”Šiv¡tâ"£@È®É;±ç¶ÆûÍ·ÿ)Ê;©¼½Và2ðû<¤S ØKªS€ú1„k˜_ËÃ0 & ÊÝ=¡‘[B“q•ðj®†ñôlMÅ-©ûÜŠºÁ½ºÓ&ÌNJÏgHÀ‡˜˜GhMµ2쇽ykªØ³Q¶\ô¶Ê’ŠaY*þ*~¼%~Üb¦•|œPDæZæný-mQ…ŠM•°Ÿ”’{´Ã,•;Y³í䃄—ÉRP)Ý8È ›' C?ÿ)^³¯a~6 ^уŒ¤³€Ç „ÞšÔÜœî\Ójá˜Ï¾v´©±"áZôÅT1©‚&7.!V÷2cô+±]Þ‰n%×ì2j3@)ì¸f>W~†ù«Ôì²”¦Q²å÷®ÙÐÚe„3˜ŸÎ¬G½ƒ ëôZßJî~¢IUP›E¸Žh>ÎŒâœwT†‡ 5j1†|[L‡êêþ§¦nóaQÓ0øøzâª?êpósÿªøÌ#üóóT}Àã6B¥ܿ߳êCk7ÞÅ|ön„«~R  .#6ÙÑkÄ?å" Îu'™`^@xöî¸éÚ¤äÌ ª\Ã|öð~5t¶Í럊¤ÆlZò»«ða&y&PMåÏ"þó›=» 3î1Âߣ3jv_•aÌ/frÅé«ÄT\C̯¡rpaF*qà’¤TA‰ªÃ7\èžBªuø˜„q‚Ì`p/&AÅ›I©¹ŽÌovö:È¤ÕæG>Þ ÷Lªh¬SÚd&§©{.xº*!âR 1ðþð¹…pó·Ø ¡_øÊýû=÷sRºÓm}ýÁš)À%Ä&{pÏÍóÍL•Òë=¤—š¨é7r5ש &¥æs¤àó\©™! )&Äú ÄàLÁïž3bxFü&6íÁ|fÄo‡!GøŽ;™œ”†[ˆ÷-×=ˆ|v7ÁÕ9î„tðdtð`tÙ?ÇŸ“R3ÌçªÎ+ÄÇíæ™œ€£³åf³91Õ=x:—ÍKñs¼DÚYå/}€ù­ò°s…e\Ð-÷*`òÞÌ`RZ¾Bü溜îÏP‚öK è‘d¹ »amû|*)5 HÁBÞJ69!N¥s¥ñï'ð&Ïá¬óÆ»Ïã'%E²ø|— ÷¤º !%w{€ù-AúŽû"y·àVäí2˜ŸËùËŒ˜)„0‘9éþýž#fh ü ó©¦PÔ,ßX17V¸=GRÄŠWÉìÖz‰DÞ1áÝ11•8>[DÝ(íréw|v›ö`>ñÙ"!‹šml1è!ƒáÕ4c×êÞùäolÉ÷P&%CÚˆ"s6#w¢îœ’¯ˆ‡{@Ùä¡%æ+4¿&AL)»ûÓYÑN– ¦Œ\I¾÷IšDÏñ&ÑB ,†>Æ|öu¸ÄBæ×%ˆ©ïB‘öÈ P(Qÿ‚ù¿ô_(ÐüÿJSß…òñ('¡¸ãƒòºZoR¦áujE>°¬QéQÝ ‹ P1µ‘ça„÷1Ÿ}¯RbBó$ˆ©ßhx0Ý8NÄ}¦0?ËÌÄWU¥†ð`6Ÿ6œÃþVÅ„hÕ î<'ÀS˜?•›†ªn³Î®a*1-@(}ö¨ßræÏHS¿ÑP̦ãûE'Öqr¯&n‹ò ¦¬Ó)—–`zYŒyðϨ©uÜïwv5mµ÷1Ô Ç–wßÎó1ó6[{ª#–”²`~ó)_^¢;TÕÄGF=û¿>1[ˆ5@éøPN¾c\a-c’Íì¸î5îŠú¦«j¢ÚåxÇ‹NT ÛD.4 Ý}ÀïÑjc%ퟕ ¦¾ã¡"<˜O_»*›+Pb²:LéÔ c._hÛðRa±Žÿ!J¯+zÇÉÅXb¾G®b~531w/6ë‹é}« TÙîU“âzÂIô5Á[aà4rb2¶u€w177«ý@XmM5Àá€8’¯† ð#ÌÔãÕ¥ëïûn4Ðþ'L½ÀÙìá*ûÂ1¿¨Ø˜!Ù­\í5qÔÍI0ulYj¨÷yÿt$»†ô¨éø­[ºEë¦aíØFþ ±ãú.ôöhÕâ¢ëVàhT¿ û!¿Øñˆ"x*Í/s:ô\Ö¿Ðh¨ÐѪ¦êÛsânT©Ü‘È·kJ÷Ðsî®{i ”«6Ô-ÇdR±3aWmÕÖä#=\t‡Ç~C=tÃÞ«†ÃUïX¦T胮,zð­²V»ÙË ¨xq¼ZQvܯöIo‡µêHÕrjþÌZ¬HGªJCïE"Pf蜒‹ ¸æOE;\µ:ºÑ¶T+HAOÁ#UíÖV‹wrRÑs½Ìç.÷á±j›¥8d³½´n¬ê^hd[n«;TsdqŸˆ*u‰éŠÚJ]аºhÞ—>ŒrÍû½,ðú‡>v'ÃˆŠ¹šÕö4Ï*û”#=ŒôvF†Û 1’Â"Í;TÛ¹Ý;*­º[ø¢Ì*ìÌüU¾X««Z¶iŠÄ˜iˆ1â“UïôÉÒÜ·_vlõ¬jŠaË;Þã$¨¹åàÖ2YAêÓSMOcǪ&Û—JS({¸É¹}Yç¼á˜õ½¶N[r°ç"æ<€U<©ÔÉ´U›µÔ7¡2½]RºÂdSžèÁ¨i œTŸžàÐß¾…‹ à4Žýö_üñ-‰¢êRpó3YåIºÞt§òêíäÞOLjÄû=ùÃÒVÓ|ô{Oþœðø³Æ‡¾":˃Cw“sHuÛç‘üU‹o1ÿmÅôžÝfùð"E_)áÏùÛD}åþùàÃq‹8 î$g;OýR PÚ˜ƒ?὚ÝWxMóè^ÿ]xðú ñR–?°&íeÈÙ/†¢ê~§à0£¢`Ô&Óó(alÈcN=ðC ¹î‡ŸÝ€§m²6T½"*¾óï_Ïx&q¬nçbÛ)üýÿ,|T©]®surveillance/DESCRIPTION0000644000175100001440000001166612617103073014504 0ustar hornikusersPackage: surveillance Title: Temporal and Spatio-Temporal Modeling and Monitoring of Epidemic Phenomena Version: 1.10-0 Date: 2015-11-04 Authors@R: c(MH = person("Michael", "Höhle", email = "hoehle@math.su.se", role = c("aut", "ths")), SM = person("Sebastian", "Meyer", email = "Sebastian.Meyer@ifspm.uzh.ch", role = c("aut", "cre")), MP = person("Michaela", "Paul", role = "aut"), LH = person("Leonhard", "Held", email = "Leonhard.Held@uzh.ch", role = c("ctb", "ths")), person("Thais", "Correa", role = "ctb"), person("Mathias", "Hofmann", role = "ctb"), person("Christian", "Lang", role = "ctb"), person("Juliane", "Manitz", role = "ctb"), person("Andrea", "Riebler", role = "ctb"), person("Daniel", "Sabanés Bové", role = "ctb"), person("Maëlle", "Salmon", role = "ctb"), person("Dirk", "Schumacher", role = "ctb"), person("Stefan", "Steiner", role = "ctb"), person("Mikko", "Virtanen", role = "ctb"), person("Wei", "Wei", role = "ctb"), person("Valentin", "Wimmer", role = "ctb"), person("R Core Team", role = "ctb", comment = "A few code segments are modified versions of code from base R")) Author: Michael Höhle [aut, ths], Sebastian Meyer [aut, cre], Michaela Paul [aut], Leonhard Held [ctb, ths], Thais Correa [ctb], Mathias Hofmann [ctb], Christian Lang [ctb], Juliane Manitz [ctb], Andrea Riebler [ctb], Daniel Sabanés Bové [ctb], Maëlle Salmon [ctb], Dirk Schumacher [ctb], Stefan Steiner [ctb], Mikko Virtanen [ctb], Wei Wei [ctb], Valentin Wimmer [ctb], R Core Team [ctb] (A few code segments are modified versions of code from base R) Maintainer: Sebastian Meyer Depends: R (>= 3.0.2), methods, grDevices, graphics, stats, utils, sp (>= 1.0-15), xtable, polyCub (>= 0.4-3) Imports: Rcpp (>= 0.11.0), MASS, Matrix, spatstat (>= 1.36-0) LinkingTo: Rcpp Suggests: parallel, grid, xts, gridExtra, lattice, colorspace, scales, animation, msm, spc, quadprog, memoise, polyclip, rgeos, gpclib, maptools, intervals, spdep, numDeriv, maxLik, gsl, testthat, coda, splancs, gamlss, INLA, runjags Description: Implementation of statistical methods for the modeling and change-point detection in time series of counts, proportions and categorical data, as well as for the modeling of continuous-time epidemic phenomena, e.g., discrete-space setups such as the spatially enriched Susceptible-Exposed-Infectious-Recovered (SEIR) models, or continuous-space point process data such as the occurrence of infectious diseases. Main focus is on outbreak detection in count data time series originating from public health surveillance of communicable diseases, but applications could just as well originate from environmetrics, reliability engineering, econometrics or social sciences. Currently, the package contains implementations of many typical outbreak detection procedures such as Farrington et al (1996), Noufaily et al (2012) or the negative binomial LR-CUSUM method described in Höhle and Paul (2008). A novel CUSUM approach combining logistic and multinomial logistic modelling is also included. Furthermore, inference methods for the retrospective infectious disease models in Held et al (2005), Held et al (2006), Paul et al (2008), Paul and Held (2011), Held and Paul (2012), and Meyer and Held (2014) are provided. Continuous self-exciting spatio-temporal point processes are modeled through additive-multiplicative conditional intensities as described in Höhle (2009) ('twinSIR', discrete space) and Meyer et al (2012) ('twinstim', continuous space). The package contains several real-world data sets, the ability to simulate outbreak data, visualize the results of the monitoring in temporal, spatial or spatio-temporal fashion. Note: Using the 'boda' algorithm requires the 'INLA' package, which should be installed automatically through the specified Additional_repositories, if uninstalled dependencies are also requested. As this might not work under OS X it might be necessary to manually install the 'INLA' package as specified at . License: GPL-2 URL: http://surveillance.r-forge.r-project.org/ Additional_repositories: http://www.math.ntnu.no/inla/R/stable BugReports: https://r-forge.r-project.org/tracker/?group_id=45 Encoding: latin1 NeedsCompilation: yes Packaged: 2015-11-06 09:11:33 UTC; sebastian Repository: CRAN Date/Publication: 2015-11-06 11:51:39 surveillance/man/0000755000175100001440000000000012617067305013546 5ustar hornikuserssurveillance/man/hhh4_methods.Rd0000644000175100001440000001277312601737514016424 0ustar hornikusers\encoding{latin1} \name{hhh4_methods} \alias{print.hhh4} \alias{summary.hhh4} \alias{nobs.hhh4} \alias{formula.hhh4} \alias{logLik.hhh4} \alias{coef.hhh4} \alias{vcov.hhh4} \alias{ranef} \alias{fixef} \alias{fixef.hhh4} \alias{ranef.hhh4} \alias{coeflist.hhh4} \alias{confint.hhh4} % FIXME: functions without documentation atm %% \alias{print.summary.hhh4} %% \alias{terms.hhh4} %% \alias{residuals.hhh4} \title{ Print, Summary and other Standard Methods for \code{"hhh4"} Objects } \description{ Besides \code{print} and \code{summary} methods there are also some standard extraction methods defined for objects of class \code{"hhh4"} resulting from a call to \code{\link{hhh4}}. } \usage{ \method{print}{hhh4}(x, digits = max(3, getOption("digits") - 3), ...) \method{summary}{hhh4}(object, maxEV = FALSE, ...) \method{coef}{hhh4}(object, se = FALSE, reparamPsi = TRUE, idx2Exp = NULL, amplitudeShift = FALSE, ...) \method{fixef}{hhh4}(object, ...) \method{ranef}{hhh4}(object, tomatrix = FALSE, ...) \method{coeflist}{hhh4}(x, ...) \method{formula}{hhh4}(x, ...) \method{nobs}{hhh4}(object, ...) \method{logLik}{hhh4}(object, ...) \method{vcov}{hhh4}(object, reparamPsi = TRUE, idx2Exp = NULL, amplitudeShift = FALSE, ...) \method{confint}{hhh4}(object, parm, level = 0.95, reparamPsi = TRUE, idx2Exp = NULL, amplitudeShift = FALSE, ...) } \arguments{ \item{x, object}{an object of class \code{"hhh4"}.} \item{digits}{the number of significant digits to use when printing } \item{maxEV}{logical indicating if the summary should contain the (range of the) dominant eigenvalue as a measure of the importance of the epidemic components. By default, the value is not calculated as this may take some seconds depending on the number of time points and units in \code{object$stsObj}.} \item{\dots}{ For the \code{print}, \code{summary}, \code{fixef}, \code{ranef}, and \code{coeflist} methods: arguments passed to \code{coef}.\cr For the remaining methods: unused (argument of the generic). } \item{reparamPsi}{ logical. If \code{TRUE} (default), the overdispersion parameter from the negative binomial distribution is transformed from internal scale (-log) to standard scale, where zero corresponds to a Poisson distribution. } \item{se}{logical switch indicating if standard errors are required} \item{idx2Exp}{integer vector selecting the parameters which should be returned on exp-scale. Alternatively, \code{idx2Exp = TRUE} will exp-transform all parameters except for those associated with \code{log()} covariates or already affected by \code{reparamPsi} or \code{amplitudeShift}.} \item{amplitudeShift}{logical switch indicating whether the parameters for sine/cosine terms modelling seasonal patterns (see \code{\link{addSeason2formula}}) should be transformed to an amplitude/shift formulation.} \item{tomatrix}{logical. If \code{FALSE} (default), the vector of all random effects is returned (as used internally). However, for random intercepts of \code{type="car"}, the number of parameters is one less than the number of regions and the individual parameters are not obviously linked to specific regions. Setting \code{tomatrix} to \code{TRUE} returns a more useful representation of random effects in a matrix with as many rows as there are regions and as many columns as there are random effects. Here, any CAR-effects are transformed to region-specific effects.} \item{parm}{a vector of numbers or names, specifying which parameters are to be given confidence intervals. If missing, all parameters are considered.} \item{level}{the confidence level required.} } \value{ The \code{\link{coef}}-method returns all estimated (regression) parameters from a \code{\link{hhh4}} model as proposed by Paul and Held (2011). If the model includes random effects, those can be extracted with \code{ranef}, whereas \code{fixef} returns the fixed parameters. The \code{coeflist}-method extracts the model coefficients in a list (by parameter group). The \code{\link{formula}}-method returns the formulae used for the three log-linear predictors in a list with elements \code{"ar"}, \code{"ne"}, and \code{"end"}. The \code{\link{nobs}}-method returns the number of observations used for model fitting. The \code{\link{logLik}}-method returns an object of class \code{"logLik"} with \code{"df"} and \code{"nobs"} attributes. For a random effects model, the value of the \emph{penalized} log-likelihood at the MLE is returned, but degrees of freedom are not available (\code{NA_real_}). As a consequence, \code{\link{AIC}} and \code{\link{BIC}} are only well defined for models without random effects; otherwise these functions return \code{NA_real_}. The \code{\link{vcov}}-method returns the estimated variance-covariance matrix of the \emph{regression} parameters. The estimated variance-covariance matrix of random effects is available as \code{object$Sigma}. The \code{\link{confint}}-method returns Wald-type confidence intervals (assuming asymptotic normality). } \seealso{ the \code{\link[=plot.hhh4]{plot}} and \code{\link[=update.hhh4]{update}} methods for fitted \code{"hhh4"} models. } \author{ Michaela Paul and Sebastian Meyer } \references{ Paul, M. and Held, L. (2011) Predictive assessment of a non-linear random effects model for multivariate time series of infectious disease counts. Statistics in Medicine, \bold{30}, 1118--1136. } \keyword{methods} \keyword{print} surveillance/man/twinSIR_intensityplot.Rd0000644000175100001440000001403712420274050020373 0ustar hornikusers\encoding{latin1} \name{twinSIR_intensityplot} \alias{plot.twinSIR} \alias{intensityplot.twinSIR} \alias{intensityplot.simEpidata} \title{ Plotting Paths of Infection Intensities for \code{twinSIR} Models } \description{ \code{\link{intensityplot}} methods to plot the evolution of the total infection intensity, its epidemic proportion or its endemic proportion over time. The default \code{plot} method for objects of class \code{"twinSIR"} is just a wrapper for the \code{intensityplot} method. } \usage{ \method{plot}{twinSIR}(x, which = c("epidemic proportion", "endemic proportion", "total intensity"), ...) \method{intensityplot}{twinSIR}(x, which = c("epidemic proportion", "endemic proportion", "total intensity"), aggregate = TRUE, theta = NULL, plot = TRUE, add = FALSE, rug.opts = list(), ...) \method{intensityplot}{simEpidata}(x, which = c("epidemic proportion", "endemic proportion", "total intensity"), aggregate = TRUE, theta = NULL, plot = TRUE, add = FALSE, rug.opts = list(), ...) } \arguments{ \item{x}{ an object of class \code{"\link{twinSIR}"} (fitted model) or \code{"\link{simEpidata}"} (simulated \code{twinSIR} epidemic), respectively. } \item{which}{ \code{"epidemic proportion"}, \code{"endemic proportion"}, or \code{"total intensity"}. Partial matching is applied. Determines whether to plot the path of the total intensity \eqn{\lambda(t)} or its epidemic or endemic proportions \eqn{\frac{e(t)}{\lambda(t)}}{e(t)/lambda(t)} or \eqn{\frac{h(t)}{\lambda(t)}}{h(t)/lambda(t)}. } \item{aggregate}{ logical. Determines whether lines for all individual infection intensities should be drawn (\code{FALSE}) or their sum only (\code{TRUE}, the default). } \item{theta}{ numeric vector of model coefficients. If \code{x} is of class \code{"twinSIR"}, then \code{theta = c(alpha, beta)}, where \code{beta} consists of the coefficients of the piecewise constant log-baseline function and the coefficients of the endemic (\code{cox}) predictor. If \code{x} is of class \code{"simEpidata"}, then \code{theta = c(alpha, 1, betarest)}, where 1 refers to the (true) log-baseline used in the simulation and \code{betarest} is the vector of the remaining coefficients of the endemic (\code{cox}) predictor. The default (\code{NULL}) means that the fitted or true parameters, respectively, will be used. } \item{plot}{ logical indicating if a plot is desired, defaults to \code{TRUE}. Otherwise, only the data of the plot will be returned. Especially with \code{aggregate = FALSE} and many individuals one might e.g. consider to plot a subset of the individual intensity paths only or do some further calculations/analysis of the infection intensities. } \item{add}{ logical. If \code{TRUE}, paths are added to the current plot, using \code{lines}. } \item{rug.opts}{ either a list of arguments passed to the function \code{\link{rug}}, or \code{NULL} (or \code{NA}), in which case no \code{rug} will be plotted. By default, the argument \code{ticksize} is set to 0.02 and \code{quiet} is set to \code{TRUE}. Note that the argument \code{x} of the \code{rug()} function, which contains the locations for the \code{rug} is fixed internally and can not be modified. The locations of the rug are the time points of infections. } \item{\dots}{ For the \code{plot.twinSIR} methode, arguments passed to \code{intensityplot.twinSIR}. For the \code{intensityplot} methods, further graphical parameters passed to the function \code{\link{matplot}}, e.g. \code{lty}, \code{lwd}, \code{col}, \code{xlab}, \code{ylab} and \code{main}. Note that the \code{matplot} arguments \code{x}, \code{y}, \code{type} and \code{add} are implicit and can not be specified here. } } \value{ numeric matrix with the first column \code{"stop"} and as many rows as there are \code{"stop"} time points in the event history \code{x}. The other columns depend on the argument \code{aggregate}: if \code{TRUE}, there is only one other column named \code{which}, which contains the values of \code{which} at the respective \code{"stop"} time points. Otherwise, if \code{aggregate = FALSE}, there is one column for each individual, each of them containing the individual \code{which} at the respective \code{"stop"} time points. } \references{ \enc{Höhle}{Hoehle}, M. (2009), Additive-Multiplicative Regression Models for Spatio-Temporal Epidemics, Biometrical Journal, 51(6):961-978. } \author{ Sebastian Meyer } \seealso{ \code{\link{twinSIR}} or \enc{Höhle}{Hoehle} (2009) for a more detailed description of the intensity model. \code{\link{simulate.twinSIR}} for the simulation of epidemic data according to a \code{twinSIR} specification. } \examples{ data("fooepidata") data("foofit") # an overview of the evolution of the epidemic plot(fooepidata) # overall total intensity plot(foofit, which="total") # overall epidemic proportion epi <- plot(foofit, which="epidemic") # look at returned values head(epi) # add the inverse overall endemic proportion = 1 - epidemic proportion ende <- plot(foofit, which="endemic", add=TRUE, col=2) legend("right", legend="endemic proportion \n(= 1 - epidemic proportion)", lty=1, col=2, bty="n") # individual intensities tmp <- plot(foofit, which="total", aggregate=FALSE, col=rgb(0,0,0,alpha=0.1), main=expression("Individual infection intensities " * lambda[i](t) == Y[i](t) \%.\% (e[i](t) + h[i](t)))) # return value: matrix of individual intensity paths str(tmp) # plot intensity path only for individuals 3 and 99 matplot(x=tmp[,1], y=tmp[,1+c(3,99)], type="S", ylab="Force of infection", xlab="time", main=expression("Paths of the infection intensities " * lambda[3](t) * " and " * lambda[99](t))) legend("topright", legend=paste("Individual", c(3,99)), col=c(1,2), lty=c(1,2)) } \keyword{hplot} \keyword{aplot} \keyword{dplot} \keyword{methods} surveillance/man/backprojNP.Rd0000644000175100001440000002601612314276313016066 0ustar hornikusers\encoding{latin1} \name{backprojNP} \alias{backprojNP} %Internal functions \alias{backprojNP.fit} \alias{naninf2zero} \alias{em.step.becker} \title{ Non-parametric back-projection of incidence cases to exposure cases using a known incubation time as in Becker et al (1991). } \description{ The function is an implementation of the non-parametric back-projection of incidence cases to exposure cases described in Becker et al. (1991). The method back-projects exposure times from a univariate time series containing the number of symptom onsets per time unit. Here, the delay between exposure and symptom onset for an individual is seen as a realization of a random variable governed by a known probability mass function. The back-projection function calculates the expected number of exposures \eqn{\lambda_t}{lambda_t} for each time unit under the assumption of a Poisson distribution, but without any parametric assumption on how the \eqn{\lambda_t}{lambda_t} evolve in time. Furthermore, the function contains a boostrap based procedure, as given in Yip et al (2011), which allows an indication of uncertainty in the estimated \eqn{\lambda_t}{lambda_T}. The procedure is equivalent to the suggestion in Becker and Marschner (1993). However, the present implementation in \code{backprojNP} allows only a univariate time series, i.e. simulteneous age groups as in Becker and Marschner (1993) are not possible. The method in Becker et al. (1991) was originally developed for the back-projection of AIDS incidence, but it is equally useful for analysing the epidemic curve in outbreak situations of a disease with long incubation time, e.g. in order to qualitatively investigate the effect of intervention measures. } \usage{ backprojNP(sts, incu.pmf, control = list(k = 2, eps = rep(0.005,2), iter.max=rep(250,2), Tmark = nrow(sts), B = -1, alpha = 0.05, verbose = FALSE, lambda0 = NULL, eq3a.method = c("R","C"), hookFun = function(stsbp) {}), \dots) } \arguments{ \item{sts}{ an object of class \code{"\linkS4class{sts}"} (or one that can be coerced to that class): contains the observed number of symptom onsets as a time series. } \item{incu.pmf}{Probability mass function (PMF) of the incubation time. The PMF is specified as a vector or matrix with the value of the PMF evaluated at \eqn{0,...,d_max}{0,...,d_max}, i.e. note that the support includes zero. The value of \eqn{d_max}{d_max} is automatically calculated as \code{length(incu.pmf)-1} or \code{nrow(incu.pmf)-1}. Note that if the sts object has more than one column, then for the backprojection the incubation time is either recycled for all components or, if it is a matrix with the same number of columns as the sts object, the \eqn{k}{k}'th column of \code{incu.pmf} is used for the backprojection of the \eqn{k}{k}'th series. } \item{control}{A list with named arguments controlling the functionality of the non-parametric back-projection. \describe{ \item{\code{k}}{An integer representing the smoothing parameter to use in the smoothing step of the EMS algorithm. Needs to be an even number. } \item{\code{eps}}{A vector of length two representing the convergence threshold \eqn{\epsilon}{epsilon} of the EMS algorithm, see Details for further information. The first value is the threshold to use in the \eqn{k=0}{k=0} loop, which forms the values for the parametric bootstrap. The second value is the threshold to use in the actual fit and bootstrap fitting using the specified \code{k}. If \code{k} is only of length one, then this number is replicated twice. } \item{\code{Tmark}}{Numeric with \eqn{T'\leq T}. Upper time limit on which to base convergence, i.e. only the values \eqn{\lambda_1,\ldots,\lambda_{T'}} are monitored for convergence. See details. } \item{\code{iter.max}}{ The maximum number of EM iterations to do before stopping. } \item{\code{B}}{ Number of parametric bootstrap samples to perform from an initial k=0 fit. For each sample a back projection is performed. See Becker and Marschner (1993) for details. } \item{\code{alpha}}{(1-\eqn{\alpha}{alpha})*100\% confidence intervals are computed based on the percentile method. } \item{\code{verbose}}{(boolean). If true show extra progress and debug information. } \item{\code{lambda0}}{Start values for lambda. Vector needs to be of the length \code{nrow(sts)}. } \item{\code{eq3a.method}}{A single character being either \code{"R"} or \code{"C"} depending on whether the three nested loops of equation 3a in Becker et al. (1991) are to be executed as safe R code (can be extremely slow, however the implementation is not optimized for speed) or a C code (can be more than 200 times faster!). However, the C implementation is experimental and can hang R if, e.g., the time series does not go far enough back. } \item{\code{hookFun}}{ Hook function called for each iteration of the EM algorithm. The function should take a single argument \code{stsbp} of class \code{"\linkS4class{stsBP}"} class. It will be have the lambda set to the current value of lambda. If no action desired just leave the function body empty (default). Additional arguments are possible. } } } \item{\dots}{Additional arguments are sent to the hook function. } } \details{ Becker et al. (1991) specify a non-parametric back-projection algorithm based on the Expectation-Maximization-Smoothing (EMS) algorithm. In the present implementation the algorithm iterates until \deqn{\frac{||\lambda^{(k+1)} - \lambda^{(k)}||}{||\lambda^{(k)}||} < \epsilon} This is a slight adaptation of the proposals in Becker et al. (1991). If \eqn{T} is the length of \eqn{\lambda} then one can avoid instability of the algorithm near the end by considering only the \eqn{\lambda}{lambda}'s with index \eqn{1,\ldots,T'}. See the references for further information. } \value{ \code{backprojNP} returns an object of \code{"\linkS4class{stsBP}"}. } \references{ Becker NG, Watson LF and Carlin JB (1991), A method for non-parametric back-projection and its application to AIDS data, Statistics in Medicine, 10:1527-1542. Becker NG and Marschner IC (1993), A method for estimating the age-specific relative risk of HIV infection from AIDS incidence data, Biometrika, 80(1):165-178. Yip PSF, Lam KF, Xu Y, Chau PH, Xu J, Chang W, Peng Y, Liu Z, Xie X and Lau HY (2011), Reconstruction of the Infection Curve for SARS Epidemic in Beijing, China Using a Back-Projection Method, Communications in Statistics - Simulation and Computation, 37(2):425-433. Associations of Age and Sex on Clinical Outcome and Incubation Period of Shiga toxin-producing Escherichia coli O104:H4 Infections, 2011 (2013), Werber D, King LA, Müller L, Follin P, Buchholz U, Bernard H, Rosner BM, Ethelberg S, de Valk H, Höhle M, American Journal of Epidemiology, 178(6):984-992. } \author{ Michael \enc{Höhle}{Hoehle} with help by Daniel \enc{Sabanés Bové}{Sabanes Bove} for the \pkg{Rcpp} interface } \note{ The method is still experimental. A proper plot routine for \code{stsBP} objects is currently missing. } %\seealso{ %} \examples{ #Generate an artificial outbreak of size n starting at time t0 and being of length n <- 1e3 ; t0 <- 23 ; l <- 10 #PMF of the incubation time is an interval censored gamma distribution #with mean 15 truncated at 25. dmax <- 25 inc.pmf <- c(0,(pgamma(1:dmax,15,1.4) - pgamma(0:(dmax-1),15,1.4))/pgamma(dmax,15,1.4)) #Function to sample from the incubation time rincu <- function(n) { sample(0:dmax, size=n, replace=TRUE, prob=inc.pmf) } #Sample time of exposure and length of incubation time set.seed(123) exposureTimes <- t0 + sample(x=0:(l-1),size=n,replace=TRUE) symptomTimes <- exposureTimes + rincu(n) #Time series of exposure (truth) and symptom onset (observed) X <- table( factor(exposureTimes,levels=1:(max(symptomTimes)+dmax))) Y <- table( factor(symptomTimes,levels=1:(max(symptomTimes)+dmax))) #Convert Y to an sts object sts <- new("sts", epoch=1:length(Y),observed=matrix(Y,ncol=1)) #Plot the outbreak plot(sts, xaxis.labelFormat=NULL, legend=NULL) #Add true number of exposures to the plot lines(1:length(Y)+0.2,X,col="red",type="h",lty=2) #Helper function to show the EM step plotIt <- function(cur.sts) { plot(cur.sts,xaxis.labelFormat=NULL, legend=NULL,ylim=c(0,140)) } #Call non-parametric back-projection function with hook function but #without bootstrapped confidence intervals bpnp.control <- list(k=0,eps=rep(0.005,2),iter.max=rep(250,2),B=-1,hookFun=plotIt,verbose=TRUE) #Fast C version (use argument: eq3a.method="C")! system.time(sts.bp <- backprojNP(sts, incu.pmf=inc.pmf, control=modifyList(bpnp.control,list(eq3a.method="C")), ylim=c(0,max(X,Y)))) #Show result plot(sts.bp,xaxis.labelFormat=NULL,legend=NULL,lwd=c(1,1,2),lty=c(1,1,1),main="") lines(1:length(Y)+0.2,X,col="red",type="h",lty=2) #Do the convolution for the expectation mu <- matrix(0,ncol=ncol(sts.bp),nrow=nrow(sts.bp)) #Loop over all series for (j in 1:ncol(sts.bp)) { #Loop over all time points for (t in 1:nrow(sts.bp)) { #Convolution, note support of inc.pmf starts at zero (move idx by 1) i <- seq_len(t) mu[t,j] <- sum(inc.pmf[t-i+1] * upperbound(sts.bp)[i,j],na.rm=TRUE) } } #Show the fit lines(1:nrow(sts.bp)-0.5,mu[,1],col="green",type="s",lwd=3) #Non-parametric back-projection including boostrap CIs. B=10 is only #used for illustration in the documentation example #In practice use a realistic value of B=1000 or more. bpnp.control2 <- modifyList(bpnp.control, list(hookFun=NULL,k=2,B=10,eq3a.method="C")) \dontrun{ bpnp.control2 <- modifyList(bpnp.control, list(hookFun=NULL,k=2,B=1000,eq3a.method="C")) } sts.bp2 <- backprojNP(sts, incu.pmf=inc.pmf, control=bpnp.control2) ###################################################################### # Plot the result. This is currently a manual routine. # ToDo: Need to specify a plot method for stsBP objects which also # shows the CI. # # Parameters: # stsBP - object of class stsBP which is to be plotted. ###################################################################### plot.stsBP <- function(stsBP) { maxy <- max(observed(stsBP),upperbound(stsBP),stsBP@ci,na.rm=TRUE) plot(upperbound(stsBP),type="n",ylim=c(0,maxy), ylab="Cases",xlab="time") if (!all(is.na(stsBP@ci))) { polygon( c(1:nrow(stsBP),rev(1:nrow(stsBP))), c(stsBP@ci[2,,1],rev(stsBP@ci[1,,1])),col="lightgray") } lines(upperbound(stsBP),type="l",lwd=2) legend(x="topright",c(expression(lambda[t])),lty=c(1),col=c(1),fill=c(NA),border=c(NA),lwd=c(2)) invisible() } #Plot the result of k=0 and add truth for comparison. No CIs available plot.stsBP(sts.bp) lines(1:length(Y),X,col=2,type="h") #Same for k=2 plot.stsBP(sts.bp2) lines(1:length(Y),X,col=2,type="h") } \keyword{models} \keyword{optimize} surveillance/man/epidata_intersperse.Rd0000644000175100001440000000316712417463045020075 0ustar hornikusers\name{epidata_intersperse} \alias{intersperse} \title{ Impute Blocks for Extra Stops in \code{"epidata"} Objects } \description{ This function modifies an object inheriting from class \code{"epidata"} such that it features the specified stop time points. For this purpose, the time interval in the event history into which the new stop falls will be splitted up into two parts, one block for the time period until the new stop -- where no infection or removal occurs -- and the other block for the time period from the new stop to the end of the original interval.\cr Main application is to enable the use of \code{knots} in \code{twinSIR}, which are not existing stop time points in the \code{"epidata"} object. } \usage{ intersperse(epidata, stoptimes, verbose = FALSE) } \arguments{ \item{epidata}{ an object inheriting from class \code{"epidata"}. } \item{stoptimes}{ a numeric vector of time points inside the observation period of the \code{epidata}. } \item{verbose}{ logical indicating if a \code{\link{txtProgressBar}} should be shown while inserting blocks for extra \code{stoptimes}. } } \value{ an object of the same class as \code{epidata} with additional time blocks for any new \code{stoptimes}. } \author{ Sebastian Meyer } \seealso{ \code{\link{as.epidata.epidataCS}} where this function is used. } \examples{ data("fooepidata") subset(fooepidata, start < 25 & stop > 25, select = 1:7) nrow(fooepidata) moreStopsEpi <- intersperse(fooepidata, c(25,75)) nrow(moreStopsEpi) subset(moreStopsEpi, stop == 25 | start == 25, select = 1:7) } \keyword{spatial} \keyword{manip} surveillance/man/addSeason2formula.Rd0000644000175100001440000000530312505254173017404 0ustar hornikusers\encoding{latin1} \name{addSeason2formula} \alias{addSeason2formula} \title{ Function that adds a sine-/cosine formula to an existing formula. } \description{ This function helps to construct a \code{\link{formula}} object that can be used in a call to \code{\link{hhh4}} to model seasonal variation via a sum of sine and cosine terms. } \usage{ addSeason2formula(f = ~1, S = 1, period = 52, timevar = "t") } \arguments{ \item{f}{ formula that the seasonal terms should be added to, defaults to an intercept \code{~1}. } \item{S}{ number of sine and cosine terms. If \code{S} is a vector, unit-specific seasonal terms are created. } \item{period}{ period of the season, defaults to 52 for weekly data. } \item{timevar}{ the time variable in the model. Defaults to \code{"t"}. } } \details{ The function adds the seasonal terms \deqn{ \sum_{s=1}^\code{S} \gamma_s \sin(\frac{2\pi s}{\code{period}} t) +\delta_s \cos(\frac{2\pi s}{\code{period}} t), }{ sum_s gamma_s * sin(2*pi*s/period * t) + delta_s * cos(2*pi*s/period * t), } where \eqn{\gamma_s}{gamma_s} and \eqn{\delta_s}{delta_s} are the unknown parameters and \eqn{t}, \eqn{t = 1, 2, \ldots} denotes the time variable \code{timevar}, to an existing formula \code{f}. Note that the seasonal terms can also be expressed as \deqn{\gamma_{s} \sin(\frac{2\pi s}{\code{period}} t) + \delta_{s} \cos(\frac{2\pi s}{\code{period}} t) = A_s \sin(\frac{2\pi s}{\code{period}} t + \epsilon_s)}{% \gamma_s sin(2*pi*s/period * t) + \delta_s cos2*pi*s/period * t) = A_s sin(2*pi*s/period * t + \epsilon_s)} with amplitude \eqn{A_s=\sqrt{\gamma_s^2 +\delta_s^2}}{A_s=sqrt{\gamma_s^2 +\delta_s^2}} and phase difference \eqn{\tan(\epsilon_s) = \delta_s / \gamma_s}. % The amplitude and phase shift can be obtained from model fitted with % \code{\link{hhh4}} by specifying \code{amplitudeShift = TRUE} % in the respective \code{coef} method. } \value{ Returns a \code{\link{formula}} with the seasonal terms added and its environment set to \code{\link{.GlobalEnv}}. Note that to use the resulting formula in \code{\link{hhh4}}, a time variable named as specified by the argument \code{timevar} must be available. } \author{ M. Paul, with contributions by S. Meyer } \seealso{ \code{\link{hhh4}}, \code{\link{fe}}, \code{\link{ri}} } \examples{ # add 2 sine/cosine terms to a model with intercept and linear trend addSeason2formula(f = ~ 1 + t, S = 2) # the same for monthly data addSeason2formula(f = ~ 1 + t, S = 2, period = 12) # different number of seasons for a bivariate time series addSeason2formula(f = ~ 1, S = c(3, 1), period = 52) } surveillance/man/twinSIR_methods.Rd0000644000175100001440000001536312401162436017117 0ustar hornikusers\encoding{latin1} \name{twinSIR_methods} \alias{print.twinSIR} \alias{summary.twinSIR} \alias{AIC.twinSIR} \alias{extractAIC.twinSIR} \alias{vcov.twinSIR} \alias{logLik.twinSIR} \alias{print.summary.twinSIR} \title{ Print, Summary and Extraction Methods for \code{"twinSIR"} Objects } \description{ Besides \code{print} and \code{summary} methods there are also some standard extraction methods defined for objects of class \code{"twinSIR"}: \code{vcov}, \code{logLik} and especially \code{AIC} and \code{extractAIC}, which extract Akaike's Information Criterion. Note that special care is needed, when fitting models with parameter constraints such as the epidemic effects \eqn{\alpha} in \code{twinSIR} models. Parameter constraints reduce the average increase in the maximized loglikelihood - thus the penalty for constrained parameters should be smaller than the factor 2 used in the ordinary definition of AIC. To this end, these two methods offer the calculation of the so-called one-sided AIC (OSAIC). } \usage{ \method{print}{twinSIR}(x, digits = max(3, getOption("digits") - 3), ...) \method{summary}{twinSIR}(object, correlation = FALSE, symbolic.cor = FALSE, ...) \method{AIC}{twinSIR}(object, ..., k = 2, one.sided = NULL, nsim = 1e3) \method{extractAIC}{twinSIR}(fit, scale = 0, k = 2, one.sided = NULL, nsim = 1e3, ...) \method{vcov}{twinSIR}(object, ...) \method{logLik}{twinSIR}(object, ...) \method{print}{summary.twinSIR}(x, digits = max(3, getOption("digits") - 3), symbolic.cor = x$symbolic.cor, signif.stars = getOption("show.signif.stars"), ...) } \arguments{ \item{x, object, fit}{an object of class \code{"twinSIR"}.\cr For the \code{print} method of the \code{summary} method, an object of class \code{"summary.twinSIR"}.} \item{digits}{ integer, used for number formatting with \code{signif()}. Minimum number of significant digits to be printed in values. } \item{correlation}{ logical. if \code{TRUE}, the correlation matrix of the estimated parameters is returned and printed. } \item{symbolic.cor}{ logical. If \code{TRUE}, print the correlations in a symbolic form (see \code{symnum}) rather than as numbers. } \item{\dots}{ For the \code{summary} method: arguments passed to \code{\link{extractAIC.twinSIR}}.\cr For the \code{AIC} method, optionally more fitted model objects.\cr For the \code{print}, \code{extractAIC}, \code{vcov} and \code{logLik} methods: unused (argument of the generic). } \item{k}{ numeric specifying the "weight" of the \emph{penalty} to be used; in an unconstrained fit \code{k = 2} is the classical AIC. } \item{one.sided}{ logical or \code{NULL} (the default). Determines if the one-sided AIC should be calculated instead of using the classical penalty \code{k*edf}. The default value \code{NULL} chooses classical AIC in the case of an unconstrained fit and one-sided AIC in the case of constraints. The type of the fit can be seen in \code{object$method} (or \code{fit$method} respectively), where \code{"L-BFGS"} means constrained optimization. } \item{nsim}{ when there are more than two epidemic covariates in the fit, the weights in the OSAIC formula have to be deterimed by simulation. Default is to use 1000 samples. Note that package \pkg{quadprog} is additionally required in this case. } \item{scale}{unused (argument of the generic).} \item{signif.stars}{logical. If \code{TRUE}, \dQuote{significance stars} are printed for each coefficient.} } \details{ The \code{print} and \code{summary} methods allow the compact or comprehensive representation of the fitting results, respectively. The former only prints the original function call, the estimated coefficients and the maximum log-likelihood value. The latter prints the whole coefficient matrix with standard errors, z- and p-values (see \code{\link{printCoefmat}}), and additionally the number of infections per log-baseline \code{interval}, the (one-sided) AIC and the number of log-likelihood evaluations. They both append a big \dQuote{WARNING}, if the optimization algorithm did not converge. The estimated coefficients may be extracted by using the default \code{coef}-method from package \pkg{stats}. The two AIC functions differ only in that \code{AIC} can take more than one fitted model object and that \code{extractAIC} always returns the number of parameters in the model (\code{AIC} only does with more than one fitted model object). Concerning the choice of one-sided AIC: parameter constraints -- such as the non-negative constraints for the epidemic effects alpha in \code{twinSIR} models -- reduce the average increase in the maximized loglikelihood. Thus, the penalty for constrained parameters should be smaller than the factor 2 used in the ordinary definition of AIC. One-sided AIC (OSAIC) suggested by Hughes and King (2003) is such a proposal when \eqn{p} out of \eqn{k = p + q} parameters have non-negative constraints: \deqn{OSAIC = -2 l(\theta, \tau) + 2 \sum_{g=0}^p w(p,g) (k-p+g)}{% OSAIC = -2 l(theta, tau) + 2 sum_{g=0}^p w(p,g) (k-p+g)} where \eqn{w(p,g)} are \eqn{p}-specific weights. For more details see Section 5.2 in \enc{Höhle}{Hoehle} (2009). } \value{ The \code{print} methods return their first argument, invisibly, as they always should. The \code{vcov} and \code{logLik} methods return the estimated variance-covariance matrix of the parameters (here, the inverse of the estimate of the expected Fisher information matrix), and the maximum log-likelihood value of the model, respectively. The \code{summary} method returns a list containing some summary statistics of the fitted model, which is nicely printed by the corresponding \code{print} method. For the \code{\link{AIC}} and \code{\link{extractAIC}} methods, see the documentation of the corresponding generic functions. } \references{ Hughes A, King M (2003) Model selection using AIC in the presence of one-sided information. \emph{Journal of Statistical Planning and Inference} \strong{115}, pp. 397--411. \enc{Höhle}{Hoehle}, M. (2009), Additive-Multiplicative Regression Models for Spatio-Temporal Epidemics, Biometrical Journal, 51(6):961-978. } \author{ Michael \enc{Höhle}{Hoehle} and Sebastian Meyer } \examples{ data("foofit") foofit coef(foofit) vcov(foofit) logLik(foofit) summary(foofit, correlation = TRUE, symbolic.cor = TRUE) # AIC or OSAIC AIC(foofit) AIC(foofit, one.sided = FALSE) extractAIC(foofit) extractAIC(foofit, one.sided = FALSE) # just as a stupid example for the use of AIC with multiple fits foofit2 <- foofit AIC(foofit, foofit2) # 2nd column should actually be named "OSAIC" here } \keyword{methods} \keyword{print} \keyword{htest} surveillance/man/algo.hhh.grid.Rd0000644000175100001440000001366411770111463016455 0ustar hornikusers\name{algo.hhh.grid} \alias{algo.hhh.grid} \alias{print.ahg} \alias{coef.ahg} \encoding{latin1} \title{Function to try multiple starting values} \description{ Tries multiple starting values in \code{algo.hhh}. Starting values are provided in a matrix with \code{gridSize} rows, the grid search is conducted until either all starting values are used or a time limit \code{maxTime} is exceeded. The result with the highest likelihood is returned. } \usage{ algo.hhh.grid(disProgObj, control=list(lambda=TRUE, neighbours=FALSE, linear=FALSE, nseason=0, negbin=c("none", "single", "multiple"), proportion=c("none", "single", "multiple"),lag.range=NULL), thetastartMatrix, maxTime=1800, verbose=FALSE) } \arguments{ \item{disProgObj}{object of class \code{disProg}} \item{control}{control object: \describe{ \item{\code{lambda}}{If \code{TRUE} an autoregressive parameter \eqn{\lambda} is included, if \code{lambda} is a vector of logicals, unit-specific parameters \eqn{\lambda_i} are included. By default, observations \eqn{y_{t-lag}}{y_t-lag} at the previous time points, i.e. \eqn{lag=1}, are used for the autoregression. Other lags can be used by specifying \code{lambda} as a vector of integers, see Examples and \code{\link{algo.hhh}} for details.} \item{\code{neighbours}}{If \code{TRUE} an autoregressive parameter for adjacent units \eqn{\phi} is included, if \code{neighbours} is a vector of logicals, unit-specific parameters \eqn{\phi_i} are included. By default, observations \eqn{y_{t-lag}}{y_t-lag} at the previous time points, i.e. \eqn{lag=1}, are used for the autoregression. Other lags can be used by specifying \code{neighbours} as a vector of integers.} \item{\code{linear}}{a \code{logical} (or a vector of logicals) indicating wether a linear trend \eqn{\beta} (or a linear trend \eqn{\beta_i} for each unit) is included} \item{\code{nseason}}{integer number of Fourier frequencies; if \code{nseason} is a vector of integers, each unit \eqn{i} gets its own seasonal parameters } \item{\code{negbin}}{if \code{"single"} negative binomial rather than poisson is used, if \code{"multiple"} unit-specific overdispersion parameters are used.} \item{\code{proportion}}{see details in \code{\link{algo.hhh}} } \item{\code{lag.range}}{determines which observations are used to fit the model} }} \item{thetastartMatrix}{matrix with initial values for all parameters specified in the control object as rows.} \item{verbose}{if \code{true} progress information is printed} \item{maxTime}{maximum of time (in seconds) to elapse until algorithm stopps.} } \value{Returns an object of class \code{ahg} with elements \item{best}{result of a call to \code{algo.hhh} with highest likelihood } \item{allLoglik}{values of loglikelihood for all starting values used} \item{gridSize}{number of different starting values in thetastartMatrix} \item{gridUsed}{number of used starting values} \item{time}{elapsed time} \item{convergence}{if \code{false} \code{algo.hhh} did not converge for all (used) starting values} } \seealso{\code{\link{algo.hhh}}, \code{\link{create.grid}} } \author{M. Paul, L. Held} \examples{ \dontrun{ ## monthly counts of menigococcal infections in France data(meningo.age) # specify model for algo.hhh.grid model1 <- list(lambda=TRUE) # create grid of inital values grid1 <- create.grid(meningo.age, model1, params = list(epidemic=c(0.1,0.9,5))) # try multiple starting values, print progress information algo.hhh.grid(meningo.age, control=model1, thetastartMatrix=grid1, verbose=TRUE) # specify model model2 <- list(lambda=TRUE, neighbours=TRUE, negbin="single", nseason=1) grid2 <- create.grid(meningo.age, model2, params = list(epidemic=c(0.1,0.9,3), endemic=c(-0.5,0.5,3), negbin = c(0.3, 12, 10))) # run algo.hhh.grid, search time is limited to 30 sec algo.hhh.grid(meningo.age, control=model2, thetastartMatrix=grid2, maxTime=30) ## weekly counts of influenza and meningococcal infections in Germany, 2001-2006 data(influMen) # specify model with two autoregressive parameters lambda_i, overdispersion # parameters psi_i, an autoregressive parameter phi for meningococcal infections # (i.e. nu_flu,t = lambda_flu * y_flu,t-1 # and nu_men,t = lambda_men * y_men,t-1 + phi_men*y_flu,t-1 ) # and S=(3,1) Fourier frequencies model <- list(lambda=c(TRUE,TRUE), neighbours=c(FALSE,TRUE), linear=FALSE, nseason=c(3,1),negbin="multiple") # create grid of initial values grid <- create.grid(influMen,model, list(epidemic=c(.1,.9,3), endemic=c(-.5,.5,3), negbin=c(.3,15,10))) # run algo.hhh.grid, search time is limited to 30 sec algo.hhh.grid(influMen, control=model, thetastartMatrix=grid, maxTime=30) # now meningococcal infections in the same week should enter as covariates # (i.e. nu_flu,t = lambda_flu * y_flu,t-1 # and nu_men,t = lambda_men * y_men,t-1 + phi_men*y_flu,t ) model2 <- list(lambda=c(1,1), neighbours=c(NA,0), linear=FALSE,nseason=c(3,1),negbin="multiple") algo.hhh.grid(influMen, control=model2, thetastartMatrix=grid, maxTime=30) } } \keyword{ts} \keyword{regression} \references{ Held, L., \enc{Höhle}{Hoehle}, M., Hofmann, M. (2005) A statistical framework for the analysis of multivariate infectious disease surveillance counts, Statistical Modelling, \bold{5}, 187--199. Paul, M., Held, L. and Toschke, A. M. (2008) Multivariate modelling of infectious disease surveillance data, Statistics in Medicine, \bold{27}, 6250--6267. } % create.grid surveillance/man/epidata_animate.Rd0000644000175100001440000001703112444056027017141 0ustar hornikusers\name{epidata_animate} \alias{animate.epidata} \alias{animate.summary.epidata} \title{ Spatio-Temporal Animation of an Epidemic } \description{ Function for the animation of epidemic data, i.e. objects inheriting from class \code{"epidata"}. This only works with 1- or 2-dimensional coordinates and is not useful if some individuals share the same coordinates (overlapping). There are two types of animation, see argument \code{time.spacing}. Besides the direct plotting in the \R session, it is also possible to generate a sequence of graphics files to create animations outside \R. } \usage{ \method{animate}{summary.epidata}(object, main = "An animation of the epidemic", pch = 19, col = c(3, 2, gray(0.6)), time.spacing = NULL, sleep = quote(5/.nTimes), legend.opts = list(), timer.opts = list(), end = NULL, generate.snapshots = NULL, ...) \method{animate}{epidata}(object, ...) } \arguments{ \item{object}{ an object inheriting from class \code{"epidata"} or \code{"summary.epidata"}. In the former case, its summary is calculated and the function continues as in the latter case, passing all \code{...} arguments to the \code{summary.epidata} method. } \item{main}{ a main title for the plot, see also \code{\link{title}}. } \item{pch, col}{ vectors of length 3 specifying the point symbols and colors for susceptible, infectious and removed individuals (in this order). The vectors are recycled if necessary. By default, susceptible individuals are marked as filled green circles, infectious individuals as filled red circles and removed individuals as filled gray circles. Note that the symbols are iteratively drawn (overlayed) in the same plotting region as time procedes. For information about the possible values of \code{pch} and \code{col}, see the help pages of \code{\link{points}} and \code{\link{par}}, respectively. } \item{time.spacing}{ time interval for the animation steps. If \code{NULL} (the default), the events are plotted one by one with pauses of \code{sleep} seconds. Thus, it is just the \emph{ordering} of the events, which is shown. To plot the appearance of events proportionally to the exact time line, \code{time.spacing} can be set to a numeric value indicating the period of time between consecutive plots. Then, for each time point in \code{seq(0, end, by = time.spacing)} the current state of the epidemic can be seen and an additional timer indicates the current time (see \code{timer.opts} below). The argument \code{sleep} will be the artificial pause in seconds between two of those time points. } \item{sleep}{ time in seconds to \code{\link{Sys.sleep}} before the next plotting event. By default, each artificial pause is of length \code{5/.nTimes} seconds, where \code{.nTimes} is the number of events (infections and removals) of the epidemic, which is evaluated in the function body. Thus, for \code{time.spacing = NULL} the animation has a duration of approximately 5 seconds. In the other case, \code{sleep} is the duration of the artificial pause between two time points. Note that \code{sleep} is ignored on non-interactive devices (see \code{\link{dev.interactive}}) } \item{legend.opts}{ either a list of arguments passed to the \code{\link{legend}} function or \code{NULL} (or \code{NA}), in which case no legend will be plotted. All necessary arguments have sensible defaults and need not be specified, i.e. \describe{ \item{\code{x}:}{\code{"topright"}} \item{\code{legend}:}{\code{c("susceptible", "infectious", "removed")}} \item{\code{pch}:}{same as argument \code{pch} of the main function} \item{\code{col}:}{same as argument \code{col} of the main function} } } \item{timer.opts}{ either a list of arguments passed to the \code{\link{legend}} function or \code{NULL} (or \code{NA}), in which case no timer will be plotted. All necessary arguments have sensible defaults and need not be specified, i.e. \describe{ \item{\code{x}:}{\code{"bottomright"}} \item{\code{title}:}{\code{"time"}} \item{\code{box.lty}:}{\code{0}} \item{\code{adj}:}{\code{c(0.5,0.5)}} \item{\code{inset}:}{\code{0.01}} \item{\code{bg}:}{\code{"white"}} } Note that the argument \code{legend}, which is the current time of the animation, can not be modified. } \item{end}{ ending time of the animation in case of \code{time.spacing} not being \code{NULL}. By default (\code{NULL}), time stops after the last event. } \item{generate.snapshots}{ By default (\code{NULL}), the animation is not saved to image files but only shown on the on-screen device. In order to print to files, \code{time.spacing} must not be \code{NULL}, a screen device must be available, and there are two options:\cr If the framework of the \pkg{animation} package should be used, i.e. the \code{animate}-call is passed as the \code{expr} argument to one of the \code{save*} functions of the \pkg{animation} package, then set \code{generate.snapshots = img.name}, where \code{img.name} is the base name for the generated images (the same as passed to the \code{save*} function). The path and format (type, width, height) for the generated images is derived from \code{\link[animation]{ani.options}}. See the last example below.\cr Alternatively, \code{generate.snapshots} may be a list of arguments passed to the function \code{\link{dev.print}}, which then is executed at each time point of the grid defined by \code{time.spacing}. Essentially, this is used for saving the produced snapshots to files, e.g. \code{generate.snapshots = % list(device=pdf, file=quote(paste("epidemic_",sprintf(form,tp),".pdf",% sep="")))} will store the animation steps in pdf-files in the current working directory, where the file names each end with the time point represented by the corresponding plot. Because the variables \code{tp} and \code{form} should only be evaluated inside the function the \code{file} argument is \code{quote}d. Alternatively, the file name could also make use of the internal plot index \code{i}, e.g., use \code{file=quote(paste("epidemic",i,".pdf",sep=""))}. } \item{\dots}{ further graphical parameters passed to the basic call of \code{plot}, e.g. \code{las}, \code{cex.axis} (etc.) and \code{mgp}. } } %\value{ % invisibly returns \code{NULL}. %} \author{ Sebastian Meyer } \seealso{ \code{\link{summary.epidata}} for the data, on which the plot is based. \code{\link{plot.epidata}} for plotting the evolution of an epidemic by the numbers of susceptible, infectious and removed individuals. The contributed \R package \pkg{animation}. } \examples{ data("fooepidata") (s <- summary(fooepidata)) # plot the ordering of the events only animate(s, sleep=0.01) # or: animate(fooepidata) # with timer (animate only up to t=10) animate(s, time.spacing=0.1, end=10, sleep=0.01) # Such an animation can be saved in various ways using tools of # the animation package, e.g., saveHTML() if (interactive() && require("animation")) { oldwd <- setwd(tempdir()) # to not clutter up the current working dir saveHTML({ par(bg="white") # default "transparent" is grey in some browsers animate(s, time.spacing=1, sleep=0, generate.snapshots="epiani") }, use.dev=FALSE, img.name="epiani", ani.width=600, interval=0.5) setwd(oldwd) } } \keyword{hplot} \keyword{dynamic} \keyword{spatial} surveillance/man/estimateGLRNbHook.Rd0000644000175100001440000000337511746213150017317 0ustar hornikusers\name{estimateGLRNbHook} \alias{estimateGLRNbHook} \encoding{latin1} \title{Hook function for in-control mean estimation} \description{ Allows the user to specify his own estimation routine for the in-control mean of \code{algo.glrpois} Needs to work for GLRNbHook } \usage{ estimateGLRNbHook() } %\arguments{ %} \value{ A list \item{\code{mod}}{resulting model of a call of \code{glm.nb}} \item{\code{range}}{vector of length as \code{range} containing the predicted values} } % \details{ This hook function allows the user to customize the behaviour of the algorithm. } \seealso{ \code{\link{algo.glrnb}} and \code{\link{algo.glrpois}} } \author{M. Hoehle} \examples{ \dontrun{ estimateGLRNbHook <- function() { #Fetch control object from parent control <- parent.frame()$control #The period p <- parent.frame()$disProgObj$freq #Current range to perform surveillance on range <- parent.frame()$range #Define training & test data set (the rest) train <- 1:(range[1]-1) test <- range #Perform an estimation based on all observations before timePoint #Event better - don't do this at all in the algorithm - force #user to do it himself - coz its a model selection problem data <- data.frame(y=parent.frame()$disProgObj$observed[t],t=train) #Build the model equation formula <- "y ~ 1 " if (control$mu0Model$trend) { formula <- paste(formula," + t",sep="") } for (s in 1:control$mu0Model$S) { formula <- paste(formula,"+cos(2*",s,"*pi/p*t)+ sin(2*",s,"*pi/p*t)",sep="") } #Fit the GLM m <- eval(substitute(glm.nb(form,data=data), list(form=as.formula(formula)))) #Predict mu_{0,t} return(as.numeric(predict(m,newdata=data.frame(t=range),type="response"))) } } } \keyword{regression} %\source{} surveillance/man/arlCusum.Rd0000644000175100001440000000354311731650466015637 0ustar hornikusers\name{arlCusum} \alias{arlCusum} \title{Calculation of Average Run Length for discrete CUSUM schemes} \description{ Calculates the average run length (ARL) for an upward CUSUM scheme for discrete distributions (i.e. Poisson and binomial) using the Markov chain approach. } \usage{ arlCusum(h=10, k=3, theta=2.4, distr=c("poisson","binomial"), W=NULL, digits=1, ...) } \arguments{ \item{h}{ decision interval} \item{k}{ reference value} \item{theta}{distribution parameter for the cumulative distribution function (cdf) \eqn{F}, i.e. rate \eqn{\lambda} for Poisson variates or probability \eqn{p} for binomial variates} \item{distr}{ \code{"poisson"} or \code{"binomial"} } %ppois, pbinom \item{W}{Winsorizing value \code{W} for a robust CUSUM, to get a nonrobust CUSUM set %\code{W} is set to \code{W} > \code{k}+\code{h}. If \code{NULL}, a nonrobust CUSUM is used.} \item{digits}{ \code{k} and \code{h} are rounded to \code{digits} decimal places } \item{\dots}{ further arguments for the distribution function, i.e. number of trials \code{n} for binomial cdf } } \value{ Returns a list with the ARL of the regular (zero-start) and the fast initial response (FIR) CUSUM scheme with reference value \code{k}, decision interval \code{h} for \eqn{X \sim F(\theta)}, where F is the Poisson or binomial cdf \item{ARL}{one-sided ARL of the regular (zero-start) CUSUM scheme} \item{FIR.ARL}{one-sided ARL of the FIR CUSUM scheme with head start \eqn{\frac{\code{h}}{2}} } } \keyword{models} \source{Based on the FORTRAN code of Hawkins, D. M. (1992). Evaluation of Average Run Lengths of Cumulative Sum Charts for an Arbitrary Data Distribution. Communications in Statistics - Simulation and Computation, 21(4), p. 1001-1020. } surveillance/man/imdepi.Rd0000644000175100001440000002034612477541775015325 0ustar hornikusers\encoding{latin1} \docType{data} \name{imdepi} \alias{imdepi} \alias{imdepifit} \title{ Occurrence of Invasive Meningococcal Disease in Germany } \description{ \code{imdepi} contains data on the spatio-temporal location of 636 cases of invasive meningococcal disease (IMD) caused by the two most common meningococcal finetypes in Germany, \samp{B:P1.7-2,4:F1-5} (of serogroup B) and \samp{C:P1.5,2:F3-3} (of serogroup C). \code{imdepifit} contains a model fit to the \code{imdepi} data. } \usage{ data(imdepi) data(imdepifit) } \format{ \code{imdepi} is an object of class \code{"\link{epidataCS}"} (a list with components \code{events}, \code{stgrid}, \code{W} and \code{qmatrix}). \code{imdepifit} is an object of class \code{"\link{twinstim}"}, see \code{\link{summary.twinstim}} for some simple methods for fitted \code{"twinstim"} models. } \details{ The \code{imdepi} data is a simplified version of what has been analyzed by Meyer et al. (2012). Simplification is with respect to the temporal resolution of the \code{stgrid} (see below) to be used in \code{\link{twinstim}}'s endemic model component. In what follows, we describe the elements \code{events}, \code{stgrid}, \code{W}, and \code{qmatrix} of \code{imdepi} in greater detail. \code{imdepi$events} is a \code{"\linkS4class{SpatialPointsDataFrame}"} object (ETRS89 projection, i.e. EPSG code 3035, with unit \sQuote{km}) containing 636 events, each with the following entries: \describe{ \item{time:}{Time of the case occurrence measured in number of days since origin. Note that a U(0,1)-distributed random number has been subtracted from each of the original event times (days) to break ties (using \code{\link{untie}(imdepi_tied, amount=list(t=1))}).} \item{tile:}{Tile ID in the spatio-temporal grid (\code{stgrid}) of endemic covariates, where the event is contained in. This corresponds to one of the 413 districts of Germany. } \item{type:}{Event type, a factor with levels \code{"B"} and \code{"C"}.} \item{eps.t:}{Maximum temporal interaction range for the event. Here set to 30 days.} \item{eps.s:}{Maximum spatial interaction range for the event. Here set to 200 km.} \item{sex:}{Sex of the case, i.e. a factor with levels \code{"female"} and \code{"male"}. Note: for some cases this information is not available (\code{NA}).} \item{agegrp:}{Factor giving the age group of the case, i.e. 0-2, 3-18 or >=19. Note: for one case this information is not available (\code{NA}).} \item{BLOCK, start:}{Block ID and start time (in days since origin) of the cell in the spatio-temporal endemic covariate grid, which the event belongs to.} \item{popdensity:}{Population density (per square km) at the location of the event (corresponds to population density of the district where the event is located).} } There are further auxiliary columns attached to the events' data the names of which begin with a . (dot): These are created during conversion to the \code{"epidataCS"} class and are necessary for fitting the data with \code{twinstim}, see the description of the \code{"\link{epidataCS}"}-class. With \code{coordinates(imdepi$events)} one obtains the (x,y) locations of the events. The district identifier in \code{tile} is indexed according to the German official municipality key ( \dQuote{Amtlicher Gemeindeschl\enc{ü}{ue}ssel}). See \url{http://de.wikipedia.org/wiki/Amtlicher_Gemeindeschl\%C3\%BCssel} for details. The data component \code{stgrid} contains the spatio-temporal grid of endemic covariate information. In addition to the usual bookkeeping variables this includes: \describe{ \item{area:}{Area of the district \code{tile} in square kilometers.} \item{popdensity:}{Population density (inhabitants per square kilometer) computed from DESTATIS (Federal Statistical Office) information (Date: 31.12.2008) on communities level (LAU2) aggregated to district level (NUTS3).} } We have actually not included any time-dependent covariates here, we just established this grid with a (reduced -> fast) temporal resolution of \emph{monthly} intervals so that we can model endemic time trends and seasonality (in this discretized time). The entry \code{W} contains the observation window as a \code{"\linkS4class{SpatialPolygons}"} object, in this case the boundaries of Germany. It was obtained as \code{stateD <- rgeos::gUnaryUnion(districtsD)}, where \code{districtsD} represents Germany's districts as at 2009-01-01 (originally obtained from \url{www.geodatenzentrum.de}), simplified by the \dQuote{modified Visvalingam} algorithm (level 6.6\%) available at \url{MapShaper.org} (v. 0.1.17). The objects \code{districtsD} and \code{stateD} are contained in \code{system.file("shapes", "districtsD.RData", package="surveillance")}. The entry \code{qmatrix} is a \eqn{2\times 2}{2 x 2} identity matrix indicating that no transmission between the two finetypes can occur. } \source{ IMD case reports: German Reference Centre for Meningococci (NRZM) -- hosted by the Department of Hygiene and Microbiology, Julius-Maximilians-Universit\enc{ä}{ae}t W\enc{ü}{ue}rzburg, Germany. Thanks to Dr. Johannes Elias and Prof. Dr. Ulrich Vogel for providing the data. See \url{http://www.meningococcus.de/} and \url{http://www.episcangis.org/} for further details. Shapefile of Germany's districts as at 2009-01-01: Bundesamt f\enc{ü}{ue}r Kartographie und Geod\enc{ä}{ae}sie, Frankfurt am Main, Germany, \url{www.geodatenzentrum.de}. %% "Copy, distribution and making available to the public - also in %% parts - is allowed with reference." } \references{ Meyer, S., Elias, J. and H\enc{ö}{oe}hle, M. (2012): A space-time conditional intensity model for invasive meningococcal disease occurrence. \emph{Biometrics}, \bold{68}, 607-616.\cr DOI-Link: \url{http://dx.doi.org/10.1111/j.1541-0420.2011.01684.x} } \seealso{ the data class \code{"\link{epidataCS}"}, and function \code{\link{twinstim}} for model fitting. } \examples{ data("imdepi") # Basic information print(imdepi, n=5, digits=2) # What is an epidataCS-object? str(imdepi, max.level=4) names(imdepi$events@data) # => events data.frame has hidden columns sapply(imdepi$events@data, class) # marks and print methods ignore these auxiliary columns # look at the B type only imdepiB <- subset(imdepi, type == "B") #<- subsetting applies to the 'events' component imdepiB # select only the last 10 events tail(imdepi, n=10) # there is also a corresponding 'head' method # Access event marks str(marks(imdepi)) # there is an update-method which assures that the object remains valid # when changing parameters like eps.s, eps.t or qmatrix update(imdepi, eps.t = 20) # Summary s <- summary(imdepi) s str(s) # Step function of number of infectives plot(s$counter, xlab = "Time [days]", ylab = "Number of infectious individuals", main = "Time series of IMD assuming 30 days infectious period") # distribution of number of potential sources of infection opar <- par(mfrow=c(1,2), las=1) for (type in c("B","C")) { plot(100*prop.table(table(s$nSources[s$eventTypes==type])), xlim=range(s$nSources), xlab = "Number of potential epidemic sources", ylab = "Proportion of events [\%]") } par(opar) # a histogram of the number of events along time (using the # plot-method for the epidataCS-class, see ?plot.epidataCS) opar <- par(mfrow = c(2,1)) plot(imdepi, "time", subset = type == "B", main = "Finetype B") plot(imdepi, "time", subset = type == "C", main = "Finetype C") par(opar) # Plot the spatial distribution of the events in W plot(imdepi, "space", points.args = list(col=c("indianred", "darkblue")), axes = TRUE, lwd = 2) title(xlab = "x [km]", ylab = "y [km]") \dontrun{ # or manually (no legends, no account for tied locations) plot(imdepi$W, lwd=2) plot(imdepi$events, pch=c(3,4)[imdepi$events$type], cex=0.8, col=c("indianred", "darkblue")[imdepi$events$type], add=TRUE) } \dontrun{ # Show a dynamic illustration of the spatio-temporal dynamics of the # spread during the first year of type B with a step size of 7 days animate(imdepiB, interval=c(0,365), time.spacing=7, sleep=0.1) } } \keyword{datasets} surveillance/man/estimateGLRPoisHook.Rd0000644000175100001440000000314211731650466017673 0ustar hornikusers\name{estimateGLRPoisHook} \alias{estimateGLRPoisHook} \encoding{latin1} \title{Hook function for in-control mean estimation} \description{ Allows the user to specify his own estimation routine for the in-control mean of \code{algo.glrpois} } \usage{ estimateGLRPoisHook() } %\arguments{ %} \value{ A vector of length as \code{range} containing the predicted values. } % \details{ This hook function allows the user to customize the behaviour of the algorithm. } \seealso{ \code{\link{algo.glrpois}} } \author{M. Hoehle} \examples{ \dontrun{ estimateGLRPoisHook <- function() { #Fetch control object from parent control <- parent.frame()$control #The period p <- parent.frame()$disProgObj$freq #Current range to perform surveillance on range <- parent.frame()$range #Define training & test data set (the rest) train <- 1:(range[1]-1) test <- range #Perform an estimation based on all observations before timePoint #Event better - don't do this at all in the algorithm - force #user to do it himself - coz its a model selection problem data <- data.frame(y=parent.frame()$disProgObj$observed[t],t=train) #Build the model equation formula <- "y ~ 1 " if (control$mu0Model$trend) { formula <- paste(formula," + t",sep="") } for (s in 1:control$mu0Model$S) { formula <- paste(formula,"+cos(2*",s,"*pi/p*t)+ sin(2*",s,"*pi/p*t)",sep="") } #Fit the GLM m <- eval(substitute(glm(form,family=poisson(),data=data),list(form=as.formula(formula)))) #Predict mu_{0,t} return(as.numeric(predict(m,newdata=data.frame(t=range),type="response"))) } } } \keyword{regression} %\source{} surveillance/man/create.disProg.Rd0000644000175100001440000000414512003774404016704 0ustar hornikusers\name{create.disProg} \alias{create.disProg} \alias{print.disProg} \encoding{latin1} \title{Creating an object of class disProg} \description{ Creates an object of class \code{disProg} from a vector with the weeknumber (week) and matrices with the observed number of counts (observed) and the respective state chains (state), where each column represents an individual time series. The matrices neighbourhood and populationFrac provide information about neighbouring units and population proportions. } \usage{ create.disProg(week, observed, state, start=c(2001,1), freq=52, neighbourhood=NULL, populationFrac=NULL, epochAsDate=FALSE) } \arguments{ \item{week}{index in the matrix of observations, typically weeks} \item{observed}{matrix with parallel time series of counts where rows are time points and columns are the individual time series for unit/area \eqn{i, i=1,\ldots,m}} \item{state}{matrix with corresponding states} \item{start}{vector of length two denoting the year and the sample number (week, month, etc.) of the first observation} \item{freq}{sampling frequency per year, i.e. 52 for weekly data, 12 for monthly data, 13 if 52 weeks are aggregated into 4 week blocks.} \item{neighbourhood}{neighbourhood matrix \eqn{N} of dimension \eqn{m \times m} with elements \eqn{n_{ij}=1} if units \eqn{i} and \eqn{j} are adjacent and 0 otherwise } \item{populationFrac}{matrix with corresponding population proportions} \item{epochAsDate}{interpret the integers in \code{week} as Dates. Default is \code{FALSE}} } \value{\item{disProg}{object of class \code{disProg} } } \author{M. Paul} \examples{ # create an univariate disProg object # read in salmonella.agona data salmonella <- read.table(system.file("extdata/salmonella.agona.txt", package = "surveillance"), header = TRUE) # look at data.frame str(salmonella) salmonellaDisProg <- create.disProg(week = 1:nrow(salmonella), observed = salmonella$observed, state = salmonella$state, start = c(1990, 1)) # look at disProg object salmonellaDisProg } \keyword{hplot} surveillance/man/epidataCS.Rd0000644000175100001440000004134512535126050015671 0ustar hornikusers\encoding{latin1} \name{epidataCS} \alias{epidataCS} \alias{as.epidataCS} \alias{print.epidataCS} \alias{nobs.epidataCS} \alias{head.epidataCS} \alias{tail.epidataCS} \alias{[.epidataCS} \alias{subset.epidataCS} \alias{marks.epidataCS} \alias{summary.epidataCS} \alias{print.summary.epidataCS} \alias{as.stepfun.epidataCS} \title{ Continuous Space-Time Marked Point Patterns with Grid-Based Covariates } \description{ Data structure for \strong{c}ontinuous \strong{s}patio-temporal event data, e.g. individual case reports of an infectious disease. Apart from the actual \code{events}, the class simultaneously holds a spatio-temporal grid of endemic covariates (similar to disease mapping) and a representation of the observation region. The \code{"epidataCS"} class is the basis for fitting spatio-temporal epidemic intensity models with the function \code{\link{twinstim}}. } \usage{ as.epidataCS(events, stgrid, W, qmatrix = diag(nTypes), nCircle2Poly = 32L, T = NULL, clipper = c("polyclip", "rgeos"), verbose = interactive()) \method{print}{epidataCS}(x, n = 6L, digits = getOption("digits"), ...) \method{nobs}{epidataCS}(object, ...) \method{head}{epidataCS}(x, n = 6L, ...) \method{tail}{epidataCS}(x, n = 6L, ...) \method{[}{epidataCS}(x, i, j, ..., drop = TRUE) \method{subset}{epidataCS}(x, subset, select, drop = TRUE, ...) \method{marks}{epidataCS}(x, coords = TRUE, ...) \method{summary}{epidataCS}(object, ...) \method{print}{summary.epidataCS}(x, ...) \method{as.stepfun}{epidataCS}(x, ...) } \arguments{ \item{events}{ a \code{"\linkS4class{SpatialPointsDataFrame}"} of cases with the following obligatory columns (in the \code{events@data} \code{data.frame}): \describe{ \item{time}{time point of event. Will be converted to a numeric variable by \code{as.numeric}. There should be no concurrent events (but see \code{\link{untie}} for an ex post adjustment) and the event times must be covered by \code{stgrid}, i.e. belong to the time interval \eqn{(t_0,T]}, where \eqn{t_0} is \code{min(stgrid$start)} and \code{T} is described below.} \item{tile}{the spatial region (tile) where the event is located. This links to the tiles of \code{stgrid}.} \item{type}{optional type of event in a marked \code{twinstim} model. Will be converted to a factor variable dropping unused levels. If missing, all events will be attribute the single type \code{"1"}.} \item{eps.t}{maximum \emph{temporal} influence radius (e.g. length of infectious period, time to culling, etc.); must be positive and may be \code{Inf}.} \item{eps.s}{maximum \emph{spatial} influence radius (e.g. 100 [km]); must be positive and may be \code{Inf}. A compact influence region mainly has computational advantages, but might also be plausible for specific applications.} } The \code{data.frame} may contain columns with further marks of the events, e.g. sex, age of infected individuals, which may be used as epidemic covariates influencing infectiousness. Note that some auxiliary columns will be added at conversion whose names are reserved: \code{".obsInfLength"}, \code{".bdist"}, \code{".influenceRegion"}, and \code{".sources"}, as well as \code{"start"}, \code{"BLOCK"}, and all endemic covariates' names from \code{stgrid}. } \item{stgrid}{ a \code{\link{data.frame}} describing endemic covariates on a full spatio-temporal region x interval grid (e.g., district x week), which is a decomposition of the observation region \code{W} and period \eqn{t_0,T}. This means that for every combination of spatial region and time interval there must be exactly one row in this \code{data.frame}, that the union of the spatial tiles equals \code{W}, the union of the time intervals equals \eqn{t_0,T}, and that regions (and intervals) are non-overlapping. There are the following obligatory columns: \describe{ \item{tile}{ID of the spatial region (e.g., district ID). It will be converted to a factor variable (dropping unused levels if it already was one).} \item{start, stop}{columns describing the consecutive temporal intervals (converted to numeric variables by \code{as.numeric}). The \code{start} time of an interval must be equal to the \code{stop} time of the previous interval. The \code{stop} column may be missing, in which case it will be auto-generated from the set of \code{start} values and \code{T}.} \item{area}{area of the spatial region (\code{tile}). Be aware that the unit of this area (e.g., square km) must be consistent with the units of \code{W} and \code{events} (as specified in their \code{\link{proj4string}}s, if they have projected coordinates).} } The remaining columns are endemic covariates. Note that the column name \code{"BLOCK"} is reserved (a column which will be added automatically for indexing the time intervals of \code{stgrid}). } \item{W}{ an object of class \code{"\linkS4class{SpatialPolygons}"} representing the observation region. It must have the same \code{proj4string} as \code{events} and all events must be within \code{W}. The function \code{\link[spatstat]{simplify.owin}} from package \pkg{spatstat} may be useful if polygonal operations take too long or memory is limited (see also the \dQuote{Note} section below). } \item{qmatrix}{ a square indicator matrix (0/1 or \code{FALSE}/\code{TRUE}) for possible transmission between the event types. The matrix will be internally converted to \code{logical}. Defaults to an independent spread of the event types, i.e. the identity matrix. } \item{nCircle2Poly}{ accuracy (number of edges) of the polygonal approximation of a circle, see \code{\link{discpoly}}. } \item{T}{ end of observation period (i.e. last \code{stop} time of \code{stgrid}). Must be specified if the start but not the stop times are supplied in \code{stgrid} (=> auto-generation of \code{stop} times). } \item{clipper}{polygon clipping engine to use for calculating the \code{.influenceRegion}s of events (see the Value section below). Default is the \pkg{polyclip} package (called via \code{\link{intersect.owin}} from package \pkg{spatstat}). In \pkg{surveillance} <= 1.6-0, package \pkg{gpclib} was used, which has a restrictive license. This is no longer supported.} \item{verbose}{logical indicating if status messages should be printed during input checking and \code{"epidataCS"} generation. The default is to do so in interactive \R sessions.} \item{x}{an object of class \code{"epidataCS"} or \code{"summary.epidataCS"}, respectively.} \item{n}{a single integer. If positive, the first (\code{head}, \code{print}) / last (\code{tail}) \code{n} events are extracted. If negative, all but the \code{n} first/last events are extracted.} \item{digits}{minimum number of significant digits to be printed in values.} \item{i,j,drop}{ arguments passed to the \code{\link[=[,SpatialPointsDataFrame-method]{[-method}} for \code{SpatialPointDataFrame}s for subsetting the \code{events} while retaining \code{stgrid} and \code{W}.\cr If \code{drop=TRUE} (the default), event types that completely disappear due to \code{i}-subsetting will be dropped, which reduces \code{qmatrix} and the factor levels of the \code{type} column.\cr By the \code{j} index, epidemic covariates can be removed from \code{events}.} \item{\dots}{unused (arguments of the generics) with a few exceptions: The \code{print} method for \code{"epidataCS"} passes \code{\dots} to the \code{\link{print.data.frame}} method, and the \code{print} method for \code{"summary.epidataCS"} passes additional arguments to \code{\link{print.table}}.} \item{subset, select}{arguments used to subset the \code{events} from an \code{"epidataCS"} object like in \code{\link{subset.data.frame}}.} \item{coords}{logical indicating if the data frame of event marks returned by \code{marks(x)} should have the event coordinates appended as last columns. This defaults to \code{TRUE}.} \item{object}{an object of class \code{"epidataCS"}.} } \details{ The function \code{as.epidataCS} is used to generate objects of class \code{"epidataCS"}, which is the data structure required for \code{\link{twinstim}} models. The extraction method for class \code{"epidataCS"} ensures that the subsetted object will be valid, for instance, it updates the auxiliary list of potential transmission paths stored in the object. This \code{[}-method is also the basis for the \code{subset.epidataCS}-method, which is implemented similar to the \code{\link{subset.data.frame}}-method. The \code{print} method for \code{"epidataCS"} prints some metadata of the epidemic, e.g., the observation period, the dimensions of the spatio-temporal grid, the types of events, and the total number of events. By default, it also prints the first \code{n = 6} rows of the \code{events}. } \value{ An object of class \code{"epidataCS"} is a list containing the following components: \item{events}{a \code{"\linkS4class{SpatialPointsDataFrame}"} (see the description of the argument). The input \code{events} are checked for requirements and sorted chronologically. The columns are in the following order: obligatory event columns, event marks, the columns \code{BLOCK}, \code{start} and endemic covariates copied from \code{stgrid}, and finally, hidden auxiliary columns. The added auxiliary columns are: \describe{ \item{\code{.obsInfLength}}{observed length of the infectious period (being part [0,T]), i.e. \code{pmin(T-time, eps.t)}.} \item{\code{.sources}}{a list of numeric vectors of potential sources of infection (wrt the interaction ranges eps.s and eps.t) for each event. Row numbers are used as index.} \item{\code{.bdist}}{minimal distance of the event locations to the polygonal boundary \code{W}.} \item{\code{.influenceRegion}}{a list of influence regions represented by objects of the \pkg{spatstat} class \code{"owin"}. For each event, this is the intersection of \code{W} with a (polygonal) circle of radius \code{eps.s} centered at the event's location, shifted such that the event location becomes the origin. The list has \code{nCircle2Poly} set as an attribute.} } } \item{stgrid}{a \code{data.frame} (see description of the argument). The spatio-temporal grid of endemic covariates is sorted by time interval (indexed by the added variable \code{BLOCK}) and region (\code{tile}). It is a full \code{BLOCK} x \code{tile} grid.} \item{W}{a \code{"\linkS4class{SpatialPolygons}"} object representing the observation region.} \item{qmatrix}{see the above description of the argument. The \code{\link{storage.mode}} of the indicator matrix is set to logical and the \code{dimnames} are set to the levels of the event types.} The \code{nobs}-method returns the number of events. The \code{head} and \code{tail} methods subset the epidemic data using the extraction method (\code{[}), i.e. they return an object of class \code{"epidataCS"}, which only contains (all but) the first/last \code{n} events. For the \code{"epidataCS"} class, the method of the generic function \code{\link[spatstat]{marks}} defined by the \pkg{spatstat} package returns a \code{data.frame} of the event marks (actually also including time and location of the events), disregarding endemic covariates and the auxiliary columns from the \code{events} component of the \code{"epidataCS"} object. The \code{summary} method (which has again a \code{print} method) returns a list of metadata, event data, the tables of tiles and types, a step function of the number of infectious individuals over time (\code{$counter}), i.e., the result of the \code{\link{as.stepfun}}-method for \code{"epidataCS"}, and the number of potential sources of transmission for each event (\code{$nSources}) which is based on the given maximum interaction ranges \code{eps.t} and \code{eps.s}. } \note{ The more detailed the observation region \code{W} is the longer will it take to fit a \code{\link{twinstim}}. It is often advisable to sacrifice some shape detail for speed by reducing polygon complexity using, e.g., the Douglas and Peucker (1973) reduction method available at \url{MapShaper.org} (Harrower and Bloch, 2006) or as function \code{\link[maptools]{thinnedSpatialPoly}} in package \pkg{maptools}, or by passing via \pkg{spatstat}'s \code{\link[spatstat]{simplify.owin}} procedure. } \references{ Douglas, D. H. and Peucker, T. K. (1973): Algorithms for the reduction of the number of points required to represent a digitized line or its caricature. \emph{Cartographica: The International Journal for Geographic Information and Geovisualization}, \bold{10}, 112-122. Harrower, M. and Bloch, M. (2006): MapShaper.org: A Map Generalization Web Service. \emph{IEEE Computer Graphics and Applications}, \bold{26}(4), 22-27.\cr DOI-Link: \url{http://dx.doi.org/10.1109/MCG.2006.85} Meyer, S., Elias, J. and H\enc{ö}{oe}hle, M. (2012): A space-time conditional intensity model for invasive meningococcal disease occurrence. \emph{Biometrics}, \bold{68}, 607-616.\cr DOI-Link: \url{http://dx.doi.org/10.1111/j.1541-0420.2011.01684.x} Meyer, S. (2010): Spatio-Temporal Infectious Disease Epidemiology based on Point Processes. Master's Thesis, Ludwig-Maximilians-Universit\enc{ä}{ae}t M\enc{ü}{ue}nchen.\cr Available as \url{http://epub.ub.uni-muenchen.de/11703/} } \author{ Sebastian Meyer with documentation contributions by Michael H\enc{ö}{oe}hle and Mayeul Kauffmann. } \seealso{ \code{\link{plot.epidataCS}} for plotting, and \code{\link{animate.epidataCS}} for the animation of such an epidemic. There is also an \code{\link[=update.epidataCS]{update}} method for the \code{"epidataCS"} class. Models for \code{"epidataCS"} can be fitted with \code{\link{twinstim}}. It is also possible to convert the data to \code{\link{epidata}} objects (discrete space) for analysis with \code{\link{twinSIR}} (see \code{\link{as.epidata.epidataCS}}). } \examples{ ## load "imdepi" example data (which is an object of class "epidataCS") data("imdepi") ## print and summary print(imdepi, n=5, digits=2) print(s <- summary(imdepi)) plot(s$counter, # same as 'as.stepfun(imdepi)' xlab = "Time [days]", ylab="Number of infectious individuals", main=paste("Time course of the number of infectious individuals", "assuming an infectious period of 30 days", sep="\n")) plot(table(s$nSources), xlab="Number of \"close\" infective individuals", ylab="Number of events", main=paste("Distribution of the number of potential sources", "assuming an interaction range of 200 km and 30 days", sep="\n")) ## the summary object contains further information str(s) ## internal structure of an "epidataCS"-object str(imdepi, max.level=4) ## see help("imdepi") for more info on the data set ## extraction methods subset the 'events' component ## (thereby taking care of the validity of the epidataCS object, ## for instance the hidden auxiliary column .sources) imdepi[101:200,] tail(imdepi, n=4) # reduce the epidemic to the last 4 events subset(imdepi, type=="B") # only consider event type B ## see help("plot.epidataCS") for convenient plot-methods for "epidataCS" ### ### reconstruct the "imdepi" object from its components ### ## events events <- marks(imdepi) coordinates(events) <- c("x", "y") # promote to a "SpatialPointsDataFrame" proj4string(events) <- proj4string(imdepi$events) # ETRS89 projection summary(events) ## endemic covariates head(stgrid <- imdepi$stgrid[,-1]) ## (Simplified) observation region (as SpatialPolygons) load(system.file("shapes", "districtsD.RData", package="surveillance"), verbose = TRUE) ## plot observation region with events plot(stateD, axes=TRUE); title(xlab="x [km]", ylab="y [km]") points(events, pch=unclass(events$type), cex=0.5, col=unclass(events$type)) legend("topright", legend=levels(events$type), title="Type", pch=1:2, col=1:2) ## reconstruct the "imdepi" object from its components myimdepi <- as.epidataCS(events = events, stgrid = stgrid, W = stateD, qmatrix = diag(2), nCircle2Poly = 16) ## -> equal to 'imdepi' as long as the internal structures of the embedded ## classes ("owin", "SpatialPolygons", ...), and the calculation of the ## influence regions by "polyclip" do not change: ##all.equal(imdepi, myimdepi, tolerance=1E-6) } \keyword{spatial} \keyword{classes} \keyword{manip} surveillance/man/categoricalCUSUM.Rd0000644000175100001440000001661312553440306017131 0ustar hornikusers\name{categoricalCUSUM} \alias{categoricalCUSUM} \alias{catcusum.LLRcompute} \encoding{latin1} \title{CUSUM detector for time-varying categorical time series} \description{ Function to process \code{sts} object by binomial, beta-binomial or multinomial CUSUM. Logistic, multinomial logistic, proportional odds or Bradley-Terry regression models are used to specify in-control and out-of-control parameters. } \usage{ categoricalCUSUM(stsObj,control = list(range=NULL,h=5,pi0=NULL, pi1=NULL, dfun=NULL, ret=c("cases","value")),...) } \arguments{ \item{stsObj}{Object of class \code{sts} containing the number of counts in each of the \eqn{k} categories of the response variable. Time varying number of counts \eqn{n_t} is found in slot \code{populationFrac}. } \item{control}{Control object containing several items \itemize{ \item{\code{range}}{Vector of length \eqn{t_{max}} with indices of the \code{observed} slot to monitor.} \item{\code{h}}{Threshold to use for the monitoring. Once the CUSUM statistics is larger or equal to \code{h} we have an alarm.} \item{\code{pi0}}{\eqn{(k-1) \times t_{max}} in-control probability vector for all categories except the reference category.} \item{\code{mu1}}{\eqn{(k-1) \times t_{max}} out-of-control probability vector for all categories except the reference category.} \item{\code{dfun}}{The probability mass function or density used to compute the likelihood ratios of the CUSUM. In a negative binomial CUSUM this is \code{dnbinom}, in a binomial CUSUM \code{dbinom} and in a multinomial CUSUM \code{dmultinom}. The function must be able to handle the arguments \code{y}, \code{size}, \code{mu} and \code{log}. As a consequence, one in the case of the beta-binomial distribution has to write a small wrapper function.} \item{\code{ret}}{Return the necessary proportion to sound an alarm in the slot \code{upperbound} or just the value of the CUSUM statistic. Thus, \code{ret} is one of tha values in \code{c("cases","value")}.} }} \item{\dots}{Additional arguments to send to \code{dfun}.} } \details{ The function allows the monitoring of categorical time series as described by regression models for binomial, beta-binomial or multinomial data. The later includes e.g. multinomial logistic regression models, proportional odds models or Bradley-Terry models for paired comparisons. See the \enc{Höhle}{Hoehle} (2010) reference for further details about the methodology. Once an alarm is found the CUSUM scheme is resetted (to zero) and monitoring continues from there. } \seealso{\code{\link{categoricalCUSUM}}} \value{An \code{sts} object with \code{observed}, \code{alarm}, etc. slots trimmed to the \code{control$range} indices. } \references{ Höhle, M. (2010), Changepoint detection in categorical time series, Book chapter to appear in T. Kneib and G. Tutz (Eds.), Statistical Modelling and Regression Structures, Springer. } \examples{ if (require("gamlss")) { ########################################################################### #Beta-binomial CUSUM for a small example containing the time-varying #number of positive test out of a time-varying number of total #test. ####################################### #Load meat inspection data data("abattoir") #Use GAMLSS to fit beta-bin regression model phase1 <- 1:(2*52) phase2 <- (max(phase1)+1) : nrow(abattoir) #Fit beta-binomial model using GAMLSS abattoir.df <- as.data.frame(abattoir) colnames(abattoir.df) <- c("y","t","state","alarm","n") m.bbin <- gamlss( cbind(y,n-y) ~ 1 + t + + sin(2*pi/52*t) + cos(2*pi/52*t) + + sin(4*pi/52*t) + cos(4*pi/52*t), sigma.formula=~1, family=BB(sigma.link="log"), data=abattoir.df[phase1,c("n","y","t")]) #CUSUM parameters R <- 2 #detect a doubling of the odds for a test being positive h <- 4 #threshold of the cusum #Compute in-control and out of control mean pi0 <- predict(m.bbin,newdata=abattoir.df[phase2,c("n","y","t")],type="response") pi1 <- plogis(qlogis(pi0)+log(R)) #Create matrix with in control and out of control proportions. #Categories are D=1 and D=0, where the latter is the reference category pi0m <- rbind(pi0, 1-pi0) pi1m <- rbind(pi1, 1-pi1) ###################################################################### # Use the multinomial surveillance function. To this end it is necessary # to create a new abattoir object containing counts and proportion for # each of the k=2 categories. For binomial data this appears a bit # redundant, but generalizes easier to k>2 categories. ###################################################################### abattoir2 <- new("sts",epoch=1:nrow(abattoir), start=c(2006,1),freq=52, observed=cbind(abattoir@observed,abattoir@populationFrac -abattoir@observed), populationFrac=cbind(abattoir@populationFrac,abattoir@populationFrac), state=matrix(0,nrow=nrow(abattoir),ncol=2), multinomialTS=TRUE) ###################################################################### #Function to use as dfun in the categoricalCUSUM #(just a wrapper to the dBB function). Note that from v 3.0-1 the #first argument of dBB changed its name from "y" to "x"! ###################################################################### mydBB.cusum <- function(y, mu, sigma, size, log = FALSE) { return(dBB(y[1,], mu = mu[1,], sigma = sigma, bd = size, log = log)) } #Create control object for multinom cusum and use the categoricalCUSUM #method control <- list(range=phase2,h=h,pi0=pi0m, pi1=pi1m, ret="cases", dfun=mydBB.cusum) surv <- categoricalCUSUM(abattoir2, control=control, sigma=exp(m.bbin$sigma.coef)) #Show results plot(surv[,1],dx.upperbound=0) lines(pi0,col="green") lines(pi1,col="red") #Index of the alarm which.max(alarms(surv[,1])) } #ToDo: Compute run length using LRCUSUM.runlength } \author{M. \enc{Höhle}{Hoehle}} \keyword{regression} % positives <- matrix(c(25,54,50,70,54,83,62,37,53,29,48,95,63,53,47,67,31,56,20,37,33,34,28,58,45,31,34,17,25,23,19,32,29,34,46,58,45,50,50,41,57,66,41,68,58,35,40,45,20,49,33,24,21,31,25,28,29,20,25,13,41,31,25,25,7,9,48,15,4,45,7,52,21,19,60,25,24,26,16,15,8,17,43,19,10,31,26,19,20,20,27,17,27,23,35,34,53,32,58,81,37,3,0,0,0,1,41,21,34,33,48,17,61,39,70,13,56,65,50,39,46,29,35,18,35,43,34,49,49,18,36,30,34,55,61,44,35,23,35,37,33,37,15,17,66,8,2,10,39,17,42,27,28,55,26,0,0,0,0,0,1,0,0,0,16,36,36,25,34,26,2),ncol=1) % n <- matrix(c(4200,4900,4700,5100,4900,5000,4700,4500,4500,4400,4300,4500,4500,4800,3000,3600,4200,4300,2900,4000,3000,4500,3300,4700,4300,4100,3100,2500,3700,3300,3700,4200,4200,4100,4000,5000,3900,3700,4600,4400,4500,5000,4100,3800,2300,3000,3700,3200,2000,2500,4000,1500,1700,3000,3000,2500,2300,3100,2600,1300,4100,1800,2600,2900,1100,1300,3700,2700,1700,2700,1100,3300,1800,3500,4100,3300,4100,2500,3000,2400,800,3300,3100,3000,3100,2500,3300,3200,2700,2700,1500,1400,2200,1600,2700,1700,4200,3900,8100,5900,4800,300,0,0,0,200,5000,5400,6100,5500,4300,4100,8000,8200,7700,2500,5200,7200,7400,5000,6500,3900,5300,4100,6600,6600,5400,6300,6100,5000,5000,4700,4900,5200,4800,4900,4900,4900,5000,5000,4900,4900,900,800,1300,200,700,1200,2300,1600,2900,2600,3600,4000,2000,0,0,0,0,0,100,0,0,100,2200,2900,3100,3200,3900,4300,1000),ncol=1) %#Create S4 object %sts <- new("sts",epoch=1:nrow(positives),start=c(2006,1),freq=52,observed=positives,state=0*positives,populationFrac=n,multinomialTS=TRUE) surveillance/man/fluBYBW.Rd0000644000175100001440000000454012553440445015311 0ustar hornikusers\name{fluBYBW} \alias{fluBYBW} \encoding{latin1} \title{Influenza in Southern Germany} \description{ Weekly number of influenza A & B cases in the 140 districts of the two Southern German states Bavaria and Baden-Wuerttemberg, for the years 2001 to 2008. These surveillance data have been analyzed originally by Paul and Held (2011) and more recently by Meyer and Held (2014). } \usage{data(fluBYBW)} \format{ An \code{sts} object containing \eqn{416\times 140}{416 x 140} observations starting from week 1 in 2001. The \code{population} slot contains the population fractions of each district at 31.12.2001, obtained from the Federal Statistical Office of Germany. The \code{map} slot contains an object of class \code{"\linkS4class{SpatialPolygonsDataFrame}"}. } \source{ Robert Koch-Institut: SurvStat: \url{http://www3.rki.de/SurvStat}; Queried on 6 March 2009. } \note{ Prior to \pkg{surveillance} version 1.6-0, \code{data(fluBYBW)} contained a redundant last row (417) filled with zeroes only. } \examples{ data("fluBYBW") # Count time series plot plot(fluBYBW, type = observed ~ time) # Map of disease incidence (per 100000 inhabitants) for the year 2001 plot(fluBYBW, type = observed ~ unit, tps = 1:52, total.args = list(), population = fluBYBW@map$X31_12_01 / 100000) # the overall rate for 2001 shown in the bottom right corner is sum(observed(fluBYBW[1:52,])) / sum(fluBYBW@map$X31_12_01) * 100000 \dontrun{ # Generating an animation takes a while. # Here we take the first 20 weeks of 2001 (runtime: ~3 minutes). # The full animation is available in Supplement A of Meyer and Held (2014) if (require("animation")) { oldwd <- setwd(tempdir()) # to not clutter up the current working dir saveHTML(animate(fluBYBW, tps = 1:20), title="Evolution of influenza in Bayern and Baden-Wuerttemberg", ani.width=500, ani.height=600) setwd(oldwd) } } } \references{ Paul, M. and Held, L. (2011) Predictive assessment of a non-linear random effects model for multivariate time series of infectious disease counts. Statistics in Medicine, \bold{30}, 1118-1136. Meyer, S. and Held, L. (2014): Power-law models for infectious disease spread. \emph{The Annals of Applied Statistics}, \bold{8} (3), 1612-1639.\cr DOI-Link: \url{http://dx.doi.org/10.1214/14-AOAS743} } \keyword{datasets} surveillance/man/husO104Hosp.Rd0000755000175100001440000000540512337645155016045 0ustar hornikusers\name{husO104Hosp} \alias{husO104Hosp} \docType{data} \title{Hospitalization date for HUS cases of the STEC outbreak in Germany, 2011} \description{ Data contain the date of hospitalization for 630 hemolytic-uremic syndrome (HUS) cases during the large STEC outbreak in Germany, 2011. Note: Only HUS cases which ultimately had a hospitalization date available/reported are included in the data set. The total number of HUS cases during the outbreak was 855 -- see \enc{Höhle}{Hoehle} and an der Heiden (2014) as well as Frank et al. (2011) for details. For each HUS case the attribute \code{dHosp} contains the date of hospitalization and the attribute \code{dReport} contains the date of first arrival of this hospitalization date at the Robert Koch Institute (RKI). As described in \enc{Höhle}{Hoehle} and an der Heiden (2014) the mechanisms of the delay were complicated and should be interpreted with care. For example, the case report could have arrived earlier, but without information about the hospitalization date. The resulting reporting triangle corresponds to Fig. 1 of the Web appendix of \enc{Höhle}{Hoehle} and an der Heiden (2014). This means that the reports which arrived with a delay longer than 15 days are set to have have arrived after 15 days. Altogether, this gives small discrepancies when compared with the results of the paper. However, as mentioned in the paper, longer delays were not very relevant for the nowcasting. } \usage{data(husO104Hosp)} \format{ A \code{data.frame} object. } \source{ Data were collected during the outbreak as part of the mandatory reporting of notifiable diseases in Germany (Faensen et al., 2006). Here, reports are transmitted from the local health authorities via the state health authorities to the Robert Koch Institute, Berlin. The resulting reporting triangle corresponds to Fig. 1 of the Web appendix of \enc{Höhle}{Hoehle} and an der Heiden (2014). } \references{ \enc{Höhle}{Hoehle} M and an der Heiden, M (2014). Bayesian Nowcasting during the STEC O104:H4 Outbreak in Germany, 2011, In revision for Biometrics. Frank C, Werber D, Cramer JP, Askar M, Faber M, an der Heiden M, Bernard H, Fruth A, Prager R, Spode A, Wadl M, Zoufaly A, Jordan S, Kemper MJ, Follin P, \enc{Müller}{Mueller} L, King LA, Rosner B, Buchholz U, Stark K, Krause G; HUS Investigation Team (2011). Epidemic Profile of Shiga-Toxin Producing Escherichia coli O104:H4 Outbreak in Germany, N Engl J Med. 2011 Nov 10;365(19):1771-80. Faensen D, Claus H, Benzler J, Ammon A, Pfoch T, Breuer T, Krause G (2014). SurvNet@RKI - a multistate electronic reporting system for communicable diseases, Euro Surveillance, 2006;11(4):100-103. } \examples{ data("husO104Hosp") } \keyword{datasets} surveillance/man/twinstim_plot.Rd0000644000175100001440000000260512010510267016737 0ustar hornikusers\name{twinstim_plot} \alias{plot.twinstim} \title{ Plot methods for fitted \code{twinstim}'s } \description{ The fitted conditional intensity function from \code{\link{twinstim}} may be visualized in at least two ways: \code{\link{iafplot}} plots the fitted interaction functions (as a function of the distance from the host), and \code{\link{intensityplot.twinstim}} plots the fitted intensity either aggregated over space (evolution over time) or aggregated over time (spatial surface of the cumulated intensity). The \code{plot} method for class \code{"twinstim"} is just a wrapper for these two functions. } \usage{ \method{plot}{twinstim}(x, which, ...) } \arguments{ \item{x}{ an object of class \code{"twinstim"}. } \item{which}{ character. Which characteristic of the conditional intensity should be plotted? Possible values are the ones allowed in the functions \code{\link{iafplot}} and \code{\link{intensityplot.twinstim}}, e.g. \code{"siaf"}, or \code{"epidemic proportion"}. Partial matching is applied. } \item{\dots}{ further arguments passed to \code{iafplot} or \code{intensityplot.twinstim}. } } \value{ See the documentation of the respective plot functions, \code{\link{iafplot}} or \code{\link{intensityplot.twinstim}}. } \author{ Sebastian Meyer } \examples{ # see the examples for iafplot() and intensityplot.twinstim() } \keyword{hplot} surveillance/man/runifdisc.Rd0000644000175100001440000000177512265241654016035 0ustar hornikusers\name{runifdisc} \alias{runifdisc} \title{ Sample Points Uniformly on a Disc } \description{ Sample \code{n} points uniformly on a disc of radius \code{r} in two-dimensional euclidean space via transformation to polar coordinates: the angle is sampled uniformly from \eqn{U(0,2\pi)}, the length is sampled uniformly from \eqn{\sqrt{U(0,r^2)}}. The sampled polar coordinates are then back-transformed to cartesian coordinates. } \usage{ runifdisc(n, r = 1, buffer = 0) } \arguments{ \item{n}{ integer size of the sample. } \item{r}{ numeric radius of the disc (centered at (0,0)). } \item{buffer}{ radius of inner buffer zone without points. } } \value{ A two-column coordinate matrix of the sampled points. } \author{ Sebastian Meyer } \seealso{ \code{\link[spatstat]{runifdisc}} in package \pkg{spatstat}, which is slightly more flexible and integrated within the \code{"ppp"} class. } \examples{ x <- surveillance:::runifdisc(1000, 3) plot(x) } \keyword{datagen} \keyword{distribution} surveillance/man/hhh4_simulate_plot.Rd0000644000175100001440000001443312610170615017626 0ustar hornikusers\name{hhh4_simulate_plot} \alias{plot.hhh4sims} \alias{as.hhh4simslist} \alias{plot.hhh4simslist} \alias{plotHHH4sims_size} \alias{plotHHH4sims_time} \alias{scores.hhh4sims} \alias{scores.hhh4simslist} \title{ Summarize Simulations from \code{"hhh4"} Models } \description{ Arrays of simulated counts from \code{\link{simulate.hhh4}} can be visualized in various levels of aggregation: final size, time series. Furthermore, proper scoring rules can be calculated based on the simulated predictive distributions. Be aware, though, that the current implementation can only compute univariate scores, i.e., it treats the predictions at the various time points as independent. } \usage{ \method{plot}{hhh4sims}(x, ...) as.hhh4simslist(x, ...) \method{plot}{hhh4simslist}(x, type = c("size", "time"), ..., groups = NULL, par.settings = list()) plotHHH4sims_size(x, horizontal = TRUE, trafo = NULL, observed = TRUE, ...) plotHHH4sims_time(x, average = mean, individual = length(x) == 1, conf.level = if (individual) 0.95 else NULL, matplot.args = list(), initial.args = list(), legend = length(x) > 1, xlim = NULL, ylim = NULL, add = FALSE, ...) \method{scores}{hhh4sims}(x, which = "rps", units = NULL, ..., drop = TRUE) \method{scores}{hhh4simslist}(x, ...) } \arguments{ \item{x}{ an object of class \code{"hhh4sims"} (as resulting from the \code{\link[=simulate.hhh4]{simulate}}-method for \code{"\link{hhh4}"} models if \code{simplify = TRUE} was set), or an \code{"hhh4simslist"}, i.e., a list of such simulations potentially obtained from different model fits (using the same simulation period). } \item{type}{ a character string indicating the summary plot to produce. } \item{\dots}{ further arguments passed to methods. } \item{groups}{ an optional factor to produce stratified plots by groups of units. The special setting \code{groups = TRUE} is a convenient shortcut for one plot by unit. } \item{par.settings}{ a list of graphical parameters for \code{\link{par}}. Sensible defaults for \code{mfrow}, \code{mar} and \code{las} will be applied unless overridden or \code{!is.list(par.settings)}. } \item{horizontal}{ a logical indicating if the boxplots of the final size distributions should be horizontal (the default). } \item{trafo}{ an optional transformation function from the \pkg{scales} package, e.g., \code{\link[scales]{sqrt_trans}}. } \item{observed}{ a logical indicating if a line and axis value for the observed size of the epidemic should be added to the plot. Alternatively, a list with graphical parameters can be specified to modify the default values. } \item{average}{ scalar-valued function to apply to the simulated counts at each time point. } \item{individual}{ a logical indicating if the individual simulations should be shown as well. } \item{conf.level}{ a scalar in (0,1), which determines the level of the pointwise quantiles obtained from the simulated counts at each time point. A value of \code{NULL} disables the confidence interval. } \item{matplot.args}{ a list of graphical parameters for \code{\link{matlines}}. } \item{initial.args}{ if a list (of graphical parameters for \code{\link{lines}}), a bar for the initial number of cases is added to the plot. } \item{legend}{ a logical or a list of parameters for \code{\link{legend}}. } \item{xlim,ylim}{ vectors of length 2 determining the axis limits. } \item{add}{ a logical indicating if the (mean) simulated time series should be added to an existing plot. } \item{which}{ a character vector indicating which proper scoring rules to compute. By default, only the ranked probability score (\code{"rps"}) is calculated. Other options include \code{"logs"} and \code{"dss"}. } \item{units}{ if non-\code{NULL}, an integer or character vector indexing the columns of \code{x} to compute the scores for that subset only. } \item{drop}{ a logical indicating if univariate dimensions should be dropped (the default). } } %% \value{ %% } \author{ Sebastian Meyer } \examples{ ### univariate example data("salmAllOnset") ## fit a hhh4 model to the first 13 years salmModel <- list(end = list(f = addSeason2formula(~1 + t)), ar = list(f = ~1), family = "NegBin1", subset = 2:678) salmFit <- hhh4(salmAllOnset, salmModel) ## simulate the next 20 weeks ahead salmSims <- simulate(salmFit, nsim = 300, seed = 3, subset = 678 + seq_len(20), y.start = observed(salmAllOnset)[678,]) ## compare final size distribution to observed value plot(salmSims) ## simulated time series plot(salmSims, type = "time", main = "2-weeks-ahead simulation") ### multivariate example data("measlesWeserEms") ## fit a hhh4 model to the first year measlesModel <- list( end = list(f = addSeason2formula(~1), offset = population(measlesWeserEms)), ar = list(f = ~1), ne = list(f = ~1 + log(pop), weights = W_powerlaw(maxlag = 5, normalize = TRUE)), family = "NegBin1", subset = 2:52, data = list(pop = population(measlesWeserEms))) measlesFit1 <- hhh4(measlesWeserEms, control = measlesModel) measlesFit2 <- update(measlesFit1, family = "Poisson") ## simulate realizations from this model during the second year measlesSims <- lapply(X = list(NegBin = measlesFit1, Poisson = measlesFit2), FUN = simulate, nsim = 50, seed = 1, subset = 53:104, y.start = observed(measlesWeserEms)[52,]) ## final size of the first model plot(measlesSims[[1]]) ## stratified by groups of districts plot(measlesSims[[1]], groups = factor(substr(colnames(measlesWeserEms), 4, 4))) ## a class and plot-method for a list of simulations from different models measlesSims <- as.hhh4simslist(measlesSims) plot(measlesSims) ## simulated time series plot(measlesSims, type = "time", individual = TRUE, ylim = c(0, 80)) ## compare proper scoring rules for a specific subset of the regions ## (CAVE: these are univariate scores for each time point and region, ## which do not account for dependence over time) measlesScores5 <- scores(measlesSims, which = "rps", units = substr(colnames(measlesWeserEms), 4, 4) == "5") sapply(measlesScores5, mean) } \keyword{hplot} surveillance/man/twinSIR_exData.Rd0000644000175100001440000000101212376624044016655 0ustar hornikusers\name{twinSIR_exData} \alias{foodata} \alias{fooepidata} \alias{foofit} \docType{data} \title{ Toy Data for \code{twinSIR} } \description{ This is data, which is used in \code{twinSIR} examples. \code{fooepidata} is an object of class \code{"\link{epidata}"} simulated from artificial \code{foodata}. \code{foofit} is an object of class \code{"\link{twinSIR}"} and is the result of a fit to \code{fooepidata}. } \examples{ data(foodata) data(fooepidata) data(foofit) } \keyword{datasets} \keyword{internal} surveillance/man/plot.survRes.Rd0000644000175100001440000000776211731650466016501 0ustar hornikusers\name{plot.survRes} \alias{plot.survRes} \alias{plot.survRes.one} \encoding{latin1} \title{Plot a survRes object} \description{Plotting of a (multivariate) \code{survRes} object. The function \code{plot.survRes.one} is used as a helper function to plot a univariate time series. } \usage{ \method{plot}{survRes}(x, method=x$control$name, disease=x$control$data, xaxis.years=TRUE,startyear = 2001, firstweek = 1, same.scale=TRUE,\dots) \method{plot}{survRes.one}(x, method=x$control$name, disease=x$control$data, domany=FALSE,ylim=NULL,xaxis.years=TRUE,startyear = 2001, firstweek = 1, xlab="time", ylab="No. infected", main=NULL, type="hhs", lty=c(1,1,2),col=c(1,1,4), outbreak.symbol = list(pch=3,col=3),alarm.symbol=list(pch=24,col=2), legend.opts=list(x="top", legend=c("Infected", "Upperbound", "Alarm", "Outbreak"), lty=NULL,col=NULL,pch=NULL), ...) } \arguments{ \item{x}{object of class \code{survRes}} \item{method}{surveillance method to be used in title} \item{disease}{name of disease in title} \item{xaxis.years}{Boolean indicating whether to show a year based x-axis for weekly data} \item{domany}{Boolean telling the function whether it is called for a multivariate (\code{TRUE}) or univariate (\code{FALSE}) \code{survRes} object. In case of \code{TRUE} no titles are drawn.} \item{ylim}{range of y axis} \item{startyear}{year to begin the axis labeling (the year where the oldest data come from)} \item{firstweek}{number of the first week of January in the first year (just for axis labeling reasons)} \item{xlab}{label of the x-axis} \item{ylab}{label of the y-axis} \item{main}{the title of the graphics is generated from the \code{method} and \code{disease} arguments if not specified otherwise} \item{same.scale}{plot all time series with the same \code{ylim}? Defaults to \code{true}}. \item{type}{line type of the observed counts (first two elements) and the upper bound (third element)} \item{lty}{vector of size 3 speciying the line type of the observed counts (left, right) and the upperbound line} \item{col}{vector with three elements: color of left bar and color of top bar, color of right bar, col of the upperbound line.} \item{outbreak.symbol}{list with entries \code{pch} and \code{col} specifying the plot symbol} \item{alarm.symbol}{list with entries \code{pch} and \code{col} specifying the plot symbol} \item{legend.opts}{a list containing the entries to be sent to the \code{\link{legend}} function. If no legend is requested use \code{legend.opts=NULL}. Otherwise, the following arguments are default \describe{ \item{\code{x}}{\code{top}} \item{\code{legend}}{The names infected and outbreak.} \item{\code{lty}}{If \code{NULL} the \code{lty} argument will be used} \item{\code{pch}}{If \code{NULL} the \code{pch} argument is used} \item{\code{col}}{If \code{NULL} the \code{col} argument is used} } Any further arguments to the \code{legend} function are just provided as additional elements of this list, e.g. \code{horiz=TRUE}. } \item{...}{further arguments for the function \code{matplot}. If e.g. \code{xlab} or \code{main} are provided they overwrite the default values.} } \value{ none. A plot showing the number of infected, the threshold for recognizing an outbreak, the alarm status and the outbreak status is generated. } \details{ The \code{plot.survRes.one} is intended for internal use. At the moment none of the surveillance methods support multivariate \code{survRes} objects. New versions of the packages currently under development will handle this. } \author{M. \enc{Höhle}{Hoehle}} \examples{ data(ha) ctrl <- list(range = 209:290, b = 2, w = 6, alpha = 0.005) plot(algo.bayes(aggregate(ha), control = ctrl)) } \keyword{hplot} % magic.dim surveillance/man/twinSIR_simulation.Rd0000644000175100001440000003417512420311405017633 0ustar hornikusers\encoding{latin1} \name{twinSIR_simulation} \alias{simEpidata} \alias{simulate.twinSIR} \title{ Simulation of Epidemic Data } \description{ This function simulates the infection (and removal) times of an epidemic. Besides the classical SIR type of epidemic, also SI, SIRS and SIS epidemics are supported. Simulation works via the conditional intensity of infection of an individual, given some (time varying) endemic covariates and/or some distance functions (epidemic components) as well as the fixed positions of the individuals. The lengths of the infectious and removed periods are generated following a pre-specified function (can be deterministic). The \code{\link{simulate}} method for objects of class \code{"\link{twinSIR}"} simulates new epidemic data using the model and the parameter estimates of the fitted object. } \usage{ simEpidata(formula, data, id.col, I0.col, coords.cols, subset, beta, h0, f = list(), w = list(), alpha, infPeriod, remPeriod = function(ids) rep(Inf, length(ids)), end = Inf, trace = FALSE, .allocate = NULL) \method{simulate}{twinSIR}(object, nsim = 1, seed = 1, infPeriod = NULL, remPeriod = NULL, end = diff(range(object$intervals)), trace = FALSE, .allocate = NULL, data = object$data, ...) } \arguments{ \item{formula}{ an object of class \code{"\link{formula}"} (or one that can be coerced to that class): a symbolic description of the intensity model to be estimated. The details of model specification are given under Details. } \item{data}{ a data.frame containing the variables in \code{formula} and the variables specified by \code{id.col}, \code{I0.col} and \code{coords.col} (see below). It represents the \dQuote{history} of the endemic covariates to use for the simulation. The form is similar to and can be an object of class \code{"\link{epidata}"}. The simulation period is splitted up into \emph{consecutive} intervals of constant endemic covariables. The data frame consists of a block of N (number of individuals) rows for each of those time intervals (all rows in a block share the same start and stop values... therefore the name \dQuote{block}), where there is one row per individual in the block. Each row describes the (fixed) state of the endemic covariates of the individual during the time interval given by the start and stop columns (specified through the lhs of \code{formula}). For the \code{simulate} method of class \code{"twinSIR"} this should be the object of class \code{"\link{epidata}"} used for the fit. This is a part of the return value of the function \code{twinSIR}, if called with argument \code{keep.data} set to \code{TRUE}. } \item{id.col}{ only if \code{data} does not inherit from \code{epidata}: single index of the \code{id} column in \code{data}. Can be numeric (by column number) or character (by column name).\cr The \code{id} column identifies the individuals in the data-frame. It will be converted to a factor variable and its levels serve also to identify individuals as argument to the \code{infPeriod} function. } \item{I0.col}{ only if \code{data} does not inherit from \code{epidata}: single index of the \code{I0} column in \code{data}. Can be numeric (by column number), character (by column name) or \code{NULL}.\cr The \code{I0} column indicates if an individual is initially infectious, i.e. it is already infectious at the beginning of the first time block. Setting \code{I0.col = NULL} is short for \dQuote{there are no initially infectious individuals}. Otherwise, the variable must be logical or in 0/1-coding. As this variable is constant over time the initially infectious individuals are derived from the first time block only. } \item{coords.cols}{ only if \code{data} does not inherit from \code{epidata}: index\emph{es} of the \code{coords} column\emph{s} in \code{data}. Can be a numeric (by column number), a character (by column name) vector or \code{NULL}.\cr These columns contain the coordinates of the individuals. It must be emphasized that the functions in this package currently assume \emph{fixed positions} of the individuals during the whole epidemic. Thus, an individual has the same coordinates in every block. For simplicity, the coordinates are derived from the first time block only. The epidemic covariates are calculated based on the Euclidian distance between the individuals, see \code{f}. } \item{subset}{ an optional vector specifying a subset of the covariate history to be used in the simulation. } \item{beta}{ numeric vector of length equal the number of endemic (\code{cox}) terms on the rhs of \code{formula}. It contains the effects of the endemic predictor (excluding the log-baseline \code{h0}, see below) in the same order as in the formula. } \item{h0}{ \emph{either} a single number to specify a constant baseline hazard (equal to \code{exp(h0)}) \emph{or} a list of functions named \code{exact} and \code{upper}. In the latter case, \code{h0$exact} is the true log-baseline hazard function and \code{h0$upper} is a \emph{piecewise constant upper bound} for \code{h0$exact}. The function \code{h0$upper} must inherit from \code{\link{stepfun}} with \code{right=FALSE}. Theoretically, the intensity function is left-continuous, thus \code{right=TRUE} would be adequate, but in the implementation, when we evaluate the intensity at the \code{\link{knots}} (change points) of \code{h0$upper} we need its value for the subsequent interval. } \item{f, w}{ see \code{\link{as.epidata}}. } \item{alpha}{ a named numeric vector of coefficients for the epidemic covariates generated by \code{f} and \code{w}. The names are matched against \code{names(f)} and \code{names(w)}. Remember that \code{alpha >= 0}. } \item{infPeriod}{ a function generating lengths of infectious periods. It should take one parameter (e.g. \code{ids}), which is a character vector of id's of individuals, and return appropriate infection periods for those individuals. Therefore, the value of the function should be of length \code{length(ids)}. For example, for independent and identically distributed infection periods following \eqn{Exp(1)}, the generating function is \code{function(ids) rexp(length(ids), rate=1)}. For a constant infectious period of length c, it is sufficient to set \code{function (x) {c}}.\cr For the \code{simulate} method of class \code{"twinSIR"} only, this can also be \code{NULL} (the default), which means that the observed infectious periods of infected individuals are re-used when simulating a new epidemic and individuals with missing infectious periods (i.e. infection and recovery was not observed) are attributed to the mean observed infectious period. Note that it is even possible to simulate an SI-epidemic by setting \code{infPeriod = function (x) {Inf}} In other words: once an individual became infected it spreads the disease forever, i.e. it will never be removed. } \item{remPeriod}{ a function generating lengths of removal periods. Per default, once an individual was removed it will stay in this state forever (\code{Inf}). Therefore, it will not become at-risk (S) again and re-infections are not possible. Alternatively, always returning 0 as length of the removal period corresponds to a SIS epidemic. Any other values correspond to SIRS. } \item{end}{ a single positive numeric value specifying the time point at which the simulation should be forced to end. By default, this is \code{Inf}, i.e. the simulation continues until there is no susceptible individual left.\cr For the \code{simulate} method of class \code{"twinSIR"} the default is to have equal simulation and observation periods. } \item{trace}{ logical (or integer) indicating if (or how often) the sets of susceptible and infected individuals as well as the rejection indicator (of the rejection sampling step) should be \code{cat}ed. Defaults to \code{FALSE}. } \item{.allocate}{ number of blocks to initially allocate for the event history (i.e. \code{.allocate*N} rows). By default (\code{NULL}), this number is set to \code{max(500, ceiling(nBlocks/100)*100)}, i.e. 500 but at least the number of blocks in \code{data} (rounded to the next multiple of 100). Each time the simulated epidemic exceeds the allocated space, the event history will be enlarged by \code{.allocate} blocks. } \item{object}{ an object of class \code{"twinSIR"}. This must contain the original \code{data} used for the fit (see \code{data}). } \item{nsim}{ number of epidemics to simulate. Defaults to 1. } \item{seed}{ an integer that will be used in the call to \code{\link{set.seed}} before simulating the epidemics. } \item{\dots}{ unused (argument of the generic). } } \details{ A model is specified through the \code{formula}, which has the form \code{cbind(start, stop) ~ cox(endemicVar1) * cox(endemicVar2)}, i.e. the right hand side has the usual form as in \code{\link{lm}}, but all variables are marked as being endemic by the special function \code{\link{cox}}. The effects of those predictor terms are specified by \code{beta}. The left hand side of the formula denotes the start and stop columns in \code{data}. This can be omitted, if \code{data} inherits from class \code{"epidata"} in which case \code{cbind(start, stop)} will be used. The epidemic model component is specified by the arguments \code{f} and \code{w} (and the associated coefficients \code{alpha}). If the epidemic model component is empty and \code{infPeriod} always returns \code{Inf}, then one actually simulates from a pure Cox model. The simulation algorithm used is \emph{Ogata's modified thinning}. For details, see \enc{Höhle}{Hoehle} (2009), Section 4. } \value{ An object of class \code{"simEpidata"}, which is a \code{data.frame} with the columns \code{"id"}, \code{"start"}, \code{"stop"}, \code{"atRiskY"}, \code{"event"}, \code{"Revent"} and the coordinate columns (with the original names from \code{data}), which are all obligatory. These columns are followed by all the variables appearing on the rhs of the \code{formula}. Last but not least, the generated columns with epidemic covariates corresponding to the functions in the lists \code{f} and \code{w} are appended. Note that objects of class \code{"simEpidata"} also inherit from class \code{"\link{epidata}"}, thus all \code{"\link{epidata}"} methods can be applied. The \code{data.frame} is given the additional \emph{attributes} \item{"eventTimes"}{ numeric vector of infection time points (sorted chronologically). } \item{"timeRange"}{ numeric vector of length 2: \code{c(min(start), max(stop))}. } \item{"coords.cols"}{ numeric vector containing the column indices of the coordinate columns in the resulting data-frame. } \item{"f"}{ this equals the argument \code{f}. } \item{"w"}{ this equals the argument \code{w}. } \item{"config"}{ a list with elements \code{h0 = h0$exact}, \code{beta} and \code{alpha}. } \item{call}{the matched call.} \item{terms}{the \code{terms} object used.} If \code{nsim > 1} epidemics are simulated by the \code{simulate}-method for fitted \code{"twinSIR"} models, these are returned in a list. } \references{ \enc{Höhle}{Hoehle}, M. (2009), Additive-Multiplicative Regression Models for Spatio-Temporal Epidemics, Biometrical Journal, 51(6):961-978. } \author{ Sebastian Meyer and Michael \enc{Höhle}{Hoehle} } \seealso{ The \code{\link{plot.epidata}} and \code{\link{animate.epidata}} methods for plotting and animating (simulated) epidemic data, respectively. The \code{\link{intensityplot.simEpidata}} method for plotting paths of infection intensities. Function \code{\link{twinSIR}} for fitting spatio-temporal epidemic intensity models to epidemic data. } \examples{ ## Generate a data frame containing a hypothetic population with 100 individuals set.seed(1234) n <- 100 pos <- matrix(rnorm(n*2), ncol=2, dimnames=list(NULL, c("x", "y"))) pop <- data.frame(id=1:n,x=pos[,1], y=pos[,2], gender=sample(0:1, n, replace=TRUE), I0col=rep(0,n),start=rep(0,n),stop=rep(Inf,n)) ## Simulate an epidemic in this population set.seed(1) epi <- simEpidata(cbind(start,stop) ~ cox(gender), data = pop, id = "id", I0.col = "I0col", coords.cols = c("x","y"), beta = c(-2), h0 = -1, alpha = c(B1 = 0.1), f = list(B1 = function(u) u <= 1), infPeriod = function(ids) rexp(length(ids), rate=1)) # Plot the numbers of susceptible, infectious and removed individuals plot(epi) ## load data of an artificial epidemic data("fooepidata") summary(fooepidata) plot(fooepidata) if (surveillance.options("allExamples")) { ## simulate a new evolution of the epidemic set.seed(1) simepi <- simEpidata(cbind(start, stop) ~ cox(z1) + cox(z1):cox(z2), data = fooepidata, beta = c(1,0.5), h0 = -7, alpha = c(B2 = 0.01, B1 = 0.005), f = list(B1 = function(u) u <= 1, B2 = function(u) u > 1), infPeriod = function(ids) rexp(length(ids), rate=0.2), trace = FALSE) summary(simepi) plot(simepi) intensityplot(simepi) } ## load a model fitted to the 'fooepidata' epidemic data("foofit") foofit ## simulate a new epidemic using the model and parameter estimates of 'foofit' ## and set simulation period = observation period # a) with observed infPeriods (i.e. fixed length 3 days): simfitepi1 <- simulate(foofit, data=fooepidata) plot(simfitepi1) # b) with new infPeriods (simuluated from the Exp(0.3) distribution): simfitepi2 <- simulate(foofit, data=fooepidata, infPeriod=function(ids) rexp(length(ids), rate=0.3)) plot(simfitepi2) intensityplot(simfitepi2, which="total", aggregate=FALSE, col=rgb(0,0,0,alpha=0.1)) } \keyword{datagen} \keyword{models} surveillance/man/polyAtBorder.Rd0000644000175100001440000000320712437317336016447 0ustar hornikusers\name{polyAtBorder} \alias{polyAtBorder} \title{Indicate Polygons at the Border} \description{ Determines which polygons of a \code{"\linkS4class{SpatialPolygons}"} object are at the border, i.e. have coordinates in common with the spatial union of all polygons (constructed using \code{\link{unionSpatialPolygons}}). } \usage{ polyAtBorder(SpP, snap = sqrt(.Machine$double.eps), method = "rgeos", ...) } \arguments{ \item{SpP}{ an object of class \code{"\linkS4class{SpatialPolygons}"}. } \item{snap}{ tolerance used to consider coordinates as identical. } \item{method}{method to use for \code{\link{unionSpatialPolygons}}. Defaults to \code{"rgeos"}, since \pkg{polyclip} uses integer arithmetic, which causes rounding errors usually requiring tuning of (i.e., increasing) the tolerance parameter \code{snap} (see example below).} \item{\dots}{further arguments passed to the chosen \code{method}.} } \value{ logical vector of the same length as \code{SpP} also inheriting its \code{row.names}. } \author{ Sebastian Meyer } \examples{ ## Load districts of Germany load(system.file("shapes", "districtsD.RData", package = "surveillance")) ## Determine districts at the border and check the result on the map if (requireNamespace("rgeos")) { atBorder <- polyAtBorder(districtsD, method = "rgeos") plot(districtsD, col = atBorder) } ## For method = "polyclip", a higher snapping tolerance is required ## to obtain the correct result if (requireNamespace("polyclip")) { atBorder <- polyAtBorder(districtsD, snap = 1e-6, method = "polyclip") plot(districtsD, col = atBorder) } } \keyword{spatial} surveillance/man/stsplot.Rd0000644000175100001440000000666212375616650015563 0ustar hornikusers\name{stsplot} \docType{methods} \alias{plot,sts,missing-method} \alias{plot,stsNC,missing-method} \alias{stsplot} % for convenience \title{Plot-Methods for Surveillance Time-Series Objects} \description{ This page gives an overview of plot types which can be produced from objects of class \code{"sts"}. } \usage{ \S4method{plot}{sts,missing}(x, type = observed ~ time | unit, \dots) } \arguments{ \item{x}{an object of class \code{"\linkS4class{sts}"}.} \item{type}{see Details.} \item{\dots}{arguments passed to the \code{type}-specific plot function.} } \details{ There are various types of plots which can be produced from an \code{"sts"} object. The \code{type} argument specifies the desired plot as a formula, which defaults to \code{observed ~ time | unit}, i.e., plot the time series of each unit separately. Arguments to specific plot functions can be passed as further arguments (\dots). The following list describes the plot variants: \describe{ \item{\code{observed ~ time | unit}}{The default type shows \code{ncol(x)} plots with each containing the time series of one observational unit. The actual plotting per unit is done by the function \code{\link{stsplot_time1}}, called sequentially from \code{\link{stsplot_time}}. } \item{\code{observed ~ time}}{The observations in \code{x} are aggregated over units and the resulting univariate time-series is plotted. The plotting is done by the function \code{\link{stsplot_time}}, which takes the same arguments as the old \code{\link{plot.survRes}} function.} \item{\code{alarm ~ time}}{Generates a so called alarmplot for a multivariate \code{sts} object. For each time point and each series it is shown whether there is an alarm. In case of hierarchical surveillance the user can pass an additional argument \code{lvl}, which is a vector of the same length as rows in \code{x} specifying for each time series its level. } \item{\code{observed ~ unit}}{ produces a map of counts (or incidence) per region aggregated over time. See \code{\link{stsplot_space}} for optional arguments, details and examples. } \item{\code{observed ~ 1 | unit}}{old version of the map plot, which supports shading regions with an alarm. The plotting is done by the function \code{\link{stsplot_spacetime}}. Use \code{type=observed~unit} for the new implementation as function \code{\link{stsplot_space}} (without alarm support, though). } \item{\code{observed ~ 1 | unit * time}}{old version for animated maps via the \code{\link{stsplot_spacetime}} function. Each of the \code{nrow(x)} frames contains the number of counts per region for the current row in the \code{observed} matrix. It is possible to redirect the output into files, e.g. to generate an animated GIF. NOTE: the new \code{\link{animate.sts}} method supersedes this plot \code{type}! } } } \value{ \code{NULL} (invisibly). The methods are called for their side-effects. } \seealso{ the documentation of the individual plot types \code{\link{stsplot_time}}, \code{\link{stsplot_space}}, \code{\link{stsplot_spacetime}} (obsolete), as well as the \code{animate}-method \code{\link{animate.sts}}. \code{\link{plot.survRes}} is the old implementation. } \keyword{ts} \keyword{spatial} \keyword{hplot} \keyword{methods} surveillance/man/epidataCS_plot.Rd0000644000175100001440000002167112504035555016734 0ustar hornikusers\name{epidataCS_plot} \alias{plot.epidataCS} \alias{epidataCSplot_time} \alias{epidataCSplot_space} \title{ Plotting the Events of an Epidemic over Time and Space } \description{ The \code{plot} method for class \code{"epidataCS"} either plots the number of events along the time axis (\code{epidataCSplot_time}) as a \code{hist()}, or the locations of the events in the observation region \code{W} (\code{epidataCSplot_space}). The spatial plot can be enriched with tile-specific color levels to indicate attributes such as the population (using \code{\link{spplot}}). } \usage{ \method{plot}{epidataCS}(x, aggregate = c("time", "space"), subset, by = type, ...) epidataCSplot_time(x, subset, by = type, t0.Date = NULL, breaks = "stgrid", freq = TRUE, col = rainbow(nTypes), cumulative = list(), add = FALSE, mar = NULL, xlim = NULL, ylim = NULL, xlab = "Time", ylab = NULL, main = NULL, panel.first = abline(h=axTicks(2), lty=2, col="grey"), legend.types = list(), ...) epidataCSplot_space(x, subset, by = type, tiles = x$W, pop = NULL, cex.fun = sqrt, points.args = list(), add = FALSE, legend.types = list(), legend.counts = list(), sp.layout = NULL, ...) } \arguments{ \item{x}{ an object of class \code{"\link{epidataCS}"}. } \item{aggregate}{ character, one of \code{"time"} and \code{"space"}, referring to the specific plot functions \code{epidataCSplot_time} and \code{epidataCSplot_time}, respectively. For \code{"time"}, the number of events over time is plotted as \code{\link{hist}} (or \code{\link{hist.Date}}). For \code{"space"}, the observation region \code{x$W} (or the \code{tiles}) and the locations of the events therein are plotted. } \item{subset}{ logical expression indicating a subset of events to consider for plotting: missing values are taken as false. Note that the expression is evaluated in the data frame of event marks (\code{marks(x)}), which means that column names can be referred to by name (like in \code{\link{subset.data.frame}}). } \item{\dots}{ in the basic \code{plot}-method further arguments are passed to the \code{aggregate}-specific plot function. In \code{epidataCSplot_time}, further graphical parameters are passed to \code{\link{hist}} or \code{\link{hist.Date}}, respectively. In \code{epidataCSplot_space}, further arguments are passed to the \code{plot}-method for \code{"\linkS4class{SpatialPolygons}"}, which draws \code{tiles}. } \item{by}{an expression evaluated in \code{marks(x)}, defining how events should be stratified in the plot (the result is converted to a factor), or \code{NULL} to disregard event types. By default (\code{by = type}) the plot distinguishes between event types, i.e., the bars of the temporal plot are stacked by type, and the point colors in the spatial plot differ by type, respectively.\cr Note: to select specific event types for plotting use the \code{subset} argument, e.g., \code{subset=(type=="B")}.} \item{t0.Date}{the beginning of the observation period \code{t0 = x$stgrid$start[1]} as a \code{"\link{Date}"} (or anything coercible by \code{as.Date} without further arguments), enabling a nice x-axis using \code{\link{hist.Date}} and sensible \code{breaks} of the histogram, e.g., \code{breaks="months"}. The event times then equal \code{t0.Date + as.integer(x$events$time - t0)}, i.e. possible fractional parts of the event times are removed (which ensures that using \code{breaks = "months"} or other automatic types always works).} \item{breaks}{ a specification of the histogram break points, see \code{\link{hist}} (or \code{\link{hist.Date}} if \code{t0.Date} is used). The default value \code{"stgrid"} is special and means to use the temporal grid points \code{with(x$stgrid, c(start[1L], unique.default(stop)))} as breaks (or their \code{"Date"} equivalents). } \item{freq}{see \code{\link{hist}}, defaults to \code{TRUE}.} \item{col}{fill colour for the bars of the histogram, defaults to the vector of \code{\link{rainbow}} colours.} \item{cumulative}{if a list (of style options), lines for the cumulative number of events (per type) will be added to the plot. Possible options are \code{axis} (logical), \code{lab} (axis label), \code{maxat} (single integer affecting the axis range), \code{lwd}, \code{col}, and \code{offset} (a numeric vector of length the number of types).} \item{add}{logical (default: \code{FALSE}) indicating if the plot should be added to an existing window. Ignored if an \code{\link{spplot}} is created (if \code{pop} is non-\code{NULL}).} \item{mar}{see \code{\link{par}}. The default (\code{NULL}) is \code{mar <- par("mar")}, with \code{mar[4] <- mar[2]} if an axis is requested for the \code{cumulative} numbers.} \item{xlim,ylim}{\code{NULL} provides automatic axis limits.} \item{xlab,ylab}{axis labels (with sensible defaults).} \item{main}{main title of the plot (defaults to no title).} \item{panel.first}{expression that should be evaluated after the plotting window has been set up but before the histogram is plotted. Defaults to adding horizontal grid lines.} \item{legend.types}{if a list (of arguments for \code{\link{legend}}), a legend for the event types is added to the plot in case there is more than one type.} \item{tiles}{the observation region \code{x$W} (default) or, alternatively, a \code{"\linkS4class{SpatialPolygons}"} representation of the tiles of \code{x$stgrid}.} \item{pop}{if \code{tiles} is a \code{"\linkS4class{SpatialPolygonsDataFrame}"}, \code{pop} can specify an attribute to be displayed in a levelplot behind the point pattern, see \code{\link{spplot}}. By default (\code{NULL}), the conventional graphics system is used to display the \code{tiles} and event locations, otherwise the result is a \code{\link{trellis.object}}.} \item{cex.fun}{function which takes a vector of counts of events at each unique location and returns a (vector of) \code{cex} value(s) for the sizes of the corresponding \code{points}. Defaults to the \code{sqrt()} function, which for the default circular \code{pch=1} means that the area of each point is proportional to the number of events at its location.} \item{points.args}{a list of (type-specific) graphical parameters for \code{\link{points}}, specifically \code{pch}, \code{lwd}, and \code{col}, which are all recycled to give the length \code{nlevels(x$events$type)}. In contrast, a possible \code{cex} element should be scalar (default: 0.5) and multiplies the sizes obtained from \code{cex.fun}.} \item{legend.counts}{if a list (of arguments for \code{\link{legend}}), a legend illustrating the effect of \code{cex.fun} is added to the plot. This list may contain a special element \code{counts}, which is an integer vector specifying the counts to illustrate.} \item{sp.layout}{optional list of additional layout items in case \code{pop} is non-\code{NULL}, see \code{\link{spplot}}.} } \value{ For \code{aggregate="time"} (i.e., \code{epidataCSplot_time}) the data of the histogram (as returned by \code{\link{hist}}), and for \code{aggregate="space"} (i.e., \code{epidataCSplot_space}) \code{NULL}, invisibly, or the \code{\link{trellis.object}} generated by \code{\link{spplot}} (if \code{pop} is non-\code{NULL}). } \author{ Sebastian Meyer } \seealso{ \code{\link{animate.epidataCS}} } \examples{ data("imdepi") ## show the occurrence of events along time plot(imdepi, "time", main = "Histogram of event time points") plot(imdepi, "time", by = NULL, main = "Aggregated over both event types") ## show the distribution in space plot(imdepi, "space", lwd = 2, col = "lavender") ## with the district-specific population density in the background, ## a scale bar, and customized point style load(system.file("shapes", "districtsD.RData", package = "surveillance")) districtsD$log10pop <- log10(districtsD$POPULATION) keylabels <- c(1,2,5) * rep(10^(4:6), each=3) plot(imdepi, "space", tiles = districtsD, pop = "log10pop", col = "white", ## modify point style for better visibility on gray background points.args = list(pch = 19, col = c("orangered", "blue")), ## metric scale bar due to projected coordinates, see proj4string(imdepi$W) sp.layout = layout.scalebar(imdepi$W, scale=100, labels=c("0", "100 km")), ## gray background levels for the district population col.regions = gray.colors(100, start=0.9, end=0.1), ## color key is equidistant on log10(population) scale at = seq(4.5, 6.6, by = 0.05), colorkey = list(labels=list(at=log10(keylabels), labels=keylabels/1000))) grid::grid.text("District population [1000 inhabitants]", x=0.95, rot=90) } \keyword{hplot} \keyword{methods} \keyword{spatial} surveillance/man/primeFactors.Rd0000644000175100001440000000051511731650466016476 0ustar hornikusers\name{primeFactors} \alias{primeFactors} \encoding{latin1} \title{Prime number factorization} \description{ Computes prime number factorization of an integer x. } \usage{ primeFactors(x) } \arguments{ \item{x}{an integer} } \value{vector with prime number factorization of x} \keyword{hplot} % bestCombination surveillance/man/isoWeekYear.Rd0000644000175100001440000000304512500403217016251 0ustar hornikusers\name{isoWeekYear} \alias{isoWeekYear} \alias{formatDate} \title{Find ISO week and ISO year of a vector of Date objects on Windows} \description{ This function extracts the ISO week and ISO year of a \code{Date} according to the ISO 8601 specification. Note that this function does nothing else than format.Date(x, "\%G") and format.Date(x, "\%V") would do on Mac/Unix computers. However, this is not implemented on Windows. A small internal wrapper for \code{format.Date} (called \code{formatDate}) thus directs all calls having one of these format strings to this function, if the \code{.Platform$OS.type} information reveals a Windows system. The function also provides three additional \code{strptime} formatting strings: "\%Q" (the quarter of a date as a numeric), "%OQ" (the quarter of a date in roman) and "%q" (day within the quarter). These are, e.g., used by \code{linelist2sts}. } \details{ The code to find the ISO week and year on Windows is by Gustaf Rydevik posted at http://tolstoy.newcastle.edu.au/R/e10/help/10/05/5588.html } \usage{ isoWeekYear(Y, M=NULL, D=NULL) } \arguments{ \item{Y}{Date object (POSIX) or the year. Can be a vector.} \item{M}{month, \code{NULL} if Y is a Date object)} \item{D}{day, \code{NULL} if Y is a Date object)} } \value{ A list with entries \code{ISOYear} and \code{ISOWeek} containing the corresponding results. } \author{Gustaf Rydevik} \examples{ dates <- as.Date(c("2002-12-31","2003-01-01","2003-01-06")) isoWeekYear(dates) } \keyword{chron} surveillance/man/campyDE.Rd0000755000175100001440000000566112305675661015376 0ustar hornikusers\name{campyDE} \alias{campyDE} \docType{data} \title{Cases of Campylobacteriosis and Absolute Humidity in Germany 2002-2011} \description{ Weekly number of reported campylobacteriosis cases in Germany 2002-2011 together with the corresponding absolute humidity (in g/m^3) that week. The absolute humidity was computed according to the procedure by Dengler (1997) using the means of representative weather station data from the German Climate service. } \usage{ data(campyDE) } \format{ A \code{data.frame} containing the following columns \describe{ \item{\code{date}}{\code{Date} instance containing the monday of the reporting week.} \item{\code{case}}{Number of reported cases that week.} \item{\code{state}}{Boolean indicating whether there is external knowledge about an outbreak that week} \item{\code{hum}}{Mean absolute humidity (in g/m^3) of that week as measured by a single representative weather station.} \item{\code{l1.hum}-\code{l5.hum}}{Lagged version (lagged by 1-5) of the \code{hum} covariate.} \item{newyears}{Boolean indicating whether the reporting week corresponds to the first two weeks of the year (TRUE) or not (FALSE). Note: The first week of a year is here defined as the first reporting week, which has its corresponding monday within new year.} \item{christmas}{Boolean indicating whether the reporting week corresponds to the last two weeks of the year (TRUE) or not (FALSE). Note: This are the first two weeks before the \code{newyears} weeks.} \item{O104period}{Boolean indicating whether the reporting week corresponds to the W21-W30 period of increased gastroenteritis awareness during the O104:H4 STEC outbreak.} } } \source{ The data on campylobacteriosis cases are queried from the Survstat@RKI database of the German Robert Koch Institute (\url{http://www3.rki.de/SurvStat/}). Data for the computation of absolute humidity were obtained from the German Climiate Service (Deutscher Wetterdienst), Climate data of Germany, available at \url{http://www.dwd.de}. A complete data description and an analysis of the data can be found in: Bayesian model algorithm for monitoring reported cases of campylobacteriosis in Germany (2013), Manitz J and Höhle M, Biometrical Journal, 55(4), pp. 509 526. } \examples{ #Load the data data("campyDE") #O104 period is W21-W30 in 2011 stopifnot(all(campyDE$O104period == ( (campyDE$date >= as.Date("2011-05-23")) & (campyDE$date < as.Date("2011-07-31")) ))) #Make an sts object from the data.frame cam.sts <- new("sts",epoch=as.numeric(campyDE$date),observed=campyDE$case, state=campyDE$state, epochAsDate=TRUE) #Plot the result plot(cam.sts) } \keyword{datasets} %Note: The corresponding .RData file is generated by ~/RKI/Maelle/JSS/BODA/dataio.Rsurveillance/man/coeflist.Rd0000644000175100001440000000207112476431152015643 0ustar hornikusers\name{coeflist} \alias{coeflist} \alias{coeflist.default} \title{ List Coefficients by Model Component } \description{ S3-generic function to use with models which contain several groups of coefficients in their coefficient vector. The \code{coeflist} methods are intended to list the coefficients by group. The default method simply \code{\link{split}}s the coefficient vector given the number of coefficients by group. } \usage{ coeflist(x, ...) \method{coeflist}{default}(x, npars, ...) } \arguments{ \item{x}{ a model with groups of coefficients or, for the default method, a vector of coefficients. } \item{npars}{ a named vector specifying the number of coefficients per group. } \item{\dots}{ potential further arguments (currently ignored). } } \value{ a list of coefficients } \author{ Sebastian Meyer } \examples{ ## the default method just 'split's the coefficient vector coefs <- c(a = 1, b = 3, dispersion = 0.5) npars <- c(regression = 2, variance = 1) coeflist(coefs, npars) } \keyword{models} \keyword{utilities} surveillance/man/twinstim_step.Rd0000644000175100001440000000372212321070755016745 0ustar hornikusers\name{twinstim_step} \alias{stepComponent} \alias{add1.twinstim} \alias{drop1.twinstim} \title{ Stepwise Model Selection by AIC } \description{ \code{stepComponent} is a wrapper around \code{\link{step}} to select a \code{"\link{twinstim}"} component's model based on an information criterion in a stepwise algorithm. There are also stand-alone single-step methods of \code{\link{add1}} and \code{\link{drop1}}. } \usage{ stepComponent(object, component = c("endemic", "epidemic"), scope = list(upper = object$formula[[component]]), direction = "both", trace = 2, verbose = FALSE, ...) \method{add1}{twinstim}(object, scope, component = c("endemic", "epidemic"), trace = 2, ...) \method{drop1}{twinstim}(object, scope, component = c("endemic", "epidemic"), trace = 2, ...) } \arguments{ \item{object}{an object of class \code{"twinstim"}.} \item{component}{one of \code{"endemic"} or \code{"epidemic"} (partially matched), determining the model component where the algorithm should proceed.} \item{scope,direction,trace}{see \code{\link{step}} and \code{\link{add1}}, respectively.} \item{verbose}{see \code{\link{twinstim}}.} \item{\dots}{further arguments passed to \code{\link{step}}, \code{\link{add1.default}}, or \code{\link{drop1.default}}, respectively.} } \value{ See \code{\link{step}} and \code{\link{add1}}, respectively. } \author{ (of this wrapper around \code{\link{step}}) Sebastian Meyer } \seealso{ \code{\link{step}}, \code{\link{add1}}, \code{\link{drop1}} } \examples{ data("imdepi") data("imdepifit") ## simple baseline model m0 <- update(imdepifit, epidemic=~1, siaf=NULL, start=c("e.(Intercept)"=-17)) ## AIC-based step-wise backward selection of the endemic component m0_step <- stepComponent(m0, "endemic", scope=list(lower=~I(start/365-3.5))) ## nothing is dropped from the model \dontshow{ m0_step$anova <- NULL stopifnot(identical(m0, m0_step)) } } \keyword{models} \keyword{methods} surveillance/man/stsSlots.Rd0000644000175100001440000000213511745737671015707 0ustar hornikusers%%% FIXME: remove this file and add all the aliases to sts-class.Rd ? \name{stsSlot-generics} \docType{methods} \alias{alarms} \alias{alarms<-} \alias{upperbound} \alias{upperbound<-} \alias{control} \alias{control<-} \alias{epoch} \alias{epoch<-} \alias{observed} \alias{observed<-} \alias{population} \alias{population<-} \alias{multinomialTS} \alias{multinomialTS<-} \alias{neighbourhood} \alias{neighbourhood<-} \title{Generic functions to access \code{"sts"} slots} \description{ For almost every slot of the \code{"sts"} class, package \pkg{surveillance} defines a generic function of the same name (except for the \code{population} method where the slot is actually called \code{populationFrac}, and \code{alarms}, where the slot is actually called \code{alarm}) as well as a replacement version (\code{<-}) to extract or set the corresponding slot of a \code{sts} object. (This documentation is not really valid yet.) } %\section{Methods}{ %\describe{ % %\item{x = "sts"}{ The slot of \code{x} is determined and returned or set.} %}} \seealso{ the \code{"\linkS4class{sts}"} class } \keyword{methods} surveillance/man/print.algoQV.Rd0000644000175100001440000000144411731650466016366 0ustar hornikusers\name{print.algoQV} \alias{print.algoQV} \title{Print quality value object} \description{Print a single qualitity value object in a nicely formatted way} \usage{ \method{print}{algoQV}(x,...) } \arguments{ \item{x}{Quality Values object generated with \code{quality}} \item{...}{Further arguments (not reall used)} } \keyword{print} \examples{ # Create a test object disProgObj <- sim.pointSource(p = 0.99, r = 0.5, length = 200, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) # Let this object be tested from rki1 survResObj <- algo.rki1(disProgObj, control = list(range = 50:200)) # Compute the quality values in a nice formatted way algo.quality(survResObj) } surveillance/man/algo.bayes.Rd0000644000175100001440000001216312307672335016065 0ustar hornikusers\name{algo.bayes} \alias{algo.bayes} \alias{algo.bayesLatestTimepoint} \alias{algo.bayes1} \alias{algo.bayes2} \alias{algo.bayes3} \encoding{latin1} \title{The Bayes System} \description{ Evaluation of timepoints with the Bayes subsystem 1, 2, 3 or a self defined Bayes subsystem. } \usage{ algo.bayesLatestTimepoint(disProgObj, timePoint = NULL, control = list(b = 0, w = 6, actY = TRUE,alpha=0.05)) algo.bayes(disProgObj, control = list(range = range, b = 0, w = 6, actY = TRUE,alpha=0.05)) algo.bayes1(disProgObj, control = list(range = range)) algo.bayes2(disProgObj, control = list(range = range)) algo.bayes3(disProgObj, control = list(range = range)) } \arguments{ \item{disProgObj}{object of class disProg (including the observed and the state chain)} \item{timePoint}{time point which shoud be evaluated in \code{algo.bayes LatestTimepoint}. The default is to use the latest timepoint} \item{control}{control object: \code{range} determines the desired timepoints which should be evaluated, \code{b} describes the number of years to go back for the reference values, \code{w} is the half window width for the reference values around the appropriate timepoint and \code{actY} is a boolean to decide if the year of \code{timePoint} also contributes \code{w} reference values. The parameter \code{alpha} is the \eqn{(1-\alpha)}-quantile to use in order to calculate the upper threshold. As default \code{b}, \code{w}, \code{actY} are set for the Bayes 1 system with \code{alpha}=0.05. } } \value{ \item{survRes}{ \code{algo.bayesLatestTimepoint} returns a list of class \code{survRes} (surveillance result), which includes the alarm value for recognizing an outbreak (1 for alarm, 0 for no alarm), the threshold value for recognizing the alarm and the input object of class disProg. \code{algo.bayes} gives a list of class \code{survRes} which includes the vector of alarm values for every timepoint in \code{range} and the vector of threshold values for every timepoint in \code{range} for the system specified by \code{b}, \code{w} and \code{actY}, the range and the input object of class disProg. \code{algo.bayes1} returns the same for the Bayes 1 system, \code{algo.bayes2} for the Bayes 2 system and \code{algo.bayes3} for the Bayes 3 system. } } \details{ Using the reference values the \eqn{(1-\alpha)\cdot 100\%}{(1-alpha)*100\%} quantile of the predictive posterior distribution is calculated as a threshold. An alarm is given if the actual value is bigger or equal than this threshold. It is possible to show using analytical computations that the predictive posterior in this case is the negative binomial distribution. Note: \code{algo.rki} or \code{algo.farrington} use two-sided prediction intervals -- if one wants to compare with these procedures it is necessary to use an alpha, which is half the one used for these procedures. Note also that \code{algo.bayes} calls \code{algo.bayesLatestTimepoint} for the values specified in \code{range} and for the system specified in \code{control}. \code{algo.bayes1}, \code{algo.bayes2}, \code{algo.bayes3} call \code{algo.bayesLatestTimepoint} for the values specified in \code{range} for the Bayes 1 system, Bayes 2 system or Bayes 3 system. \itemize{ \item \code{"Bayes 1"} reference values from 6 weeks. Alpha is fixed a t 0.05. \item \code{"Bayes 2"} reference values from 6 weeks ago and 13 weeks of the previous year (symmetrical around the same week as the current one in the previous year). Alpha is fixed at 0.05. \item \code{"Bayes 3"} 18 reference values. 9 from the year ago and 9 from two years ago (also symmetrical around the comparable week). Alpha is fixed at 0.05. } The procedure is now able to handle \code{NA}'s in the reference values. In the summation and when counting the number of observed reference values these are simply not counted. } \seealso{ \code{\link{algo.call}}, \code{\link{algo.rkiLatestTimepoint}} and \code{\link{algo.rki}} for the RKI system. } \author{M. \enc{Höhle}{Hoehle}, A. Riebler, C. Lang} \examples{ disProg <- sim.pointSource(p = 0.99, r = 0.5, length = 208, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) # Test for bayes 1 the latest timepoint algo.bayesLatestTimepoint(disProg) # Test week 200 to 208 for outbreaks with a selfdefined bayes algo.bayes(disProg, control = list(range = 200:208, b = 1, w = 5, actY = TRUE,alpha=0.05)) # The same for bayes 1 to bayes 3 algo.bayes1(disProg, control = list(range = 200:208,alpha=0.05)) algo.bayes2(disProg, control = list(range = 200:208,alpha=0.05)) algo.bayes3(disProg, control = list(range = 200:208,alpha=0.05)) } \keyword{classif} \source{ Riebler, A. (2004), Empirischer Vergleich von statistischen Methoden zur Ausbruchserkennung bei Surveillance Daten, Bachelor's thesis. } surveillance/man/twinstim_siaf_simulatePC.Rd0000644000175100001440000000316712401611336021040 0ustar hornikusers\name{siaf.simulatePC} \alias{siaf.simulatePC} \title{ Simulation from an Isotropic Spatial Kernel via Polar Coordinates } \description{ To sample points from isotropic power-law kernels \eqn{f_2(s) = f(||s||)} such as \code{\link{siaf.powerlaw}} on a bounded domain (i.e., \eqn{||s|| < \code{ub}}), it is convenient to switch to polar coordinates \eqn{(r,\theta)}, which have a density proportional to \eqn{r f_2((r \cos(\theta), r \sin(\theta))) = r f(r)} (independent of the angle \eqn{\theta} due to isotropy). The angle is thus simply drawn uniformly in \eqn{[0,2\pi)}, and \eqn{r} can be sampled by the inversion method, where numeric root finding is used for the quantiles (since the quantile function is not available in closed form). } \usage{ siaf.simulatePC(intrfr) } \arguments{ \item{intrfr}{ a function computing the integral of \eqn{r f(r)} from 0 to \code{R} (first argument, not necessarily named \code{R}). Parameters of the function are passed as its second argument and a third argument is the event type. } } \value{ a function with arguments \code{(n, siafpars, type, ub)}, which samples \code{n} points from the spatial kernel \eqn{f_2(s)} within the disc of radius \code{ub}, where \code{siafpars} and \code{type} are passed as second and third argument to \code{intrfr}. The environment of the returned function will be the caller's environment. } \author{ Sebastian Meyer } \examples{ simfun <- siaf.powerlaw()$simulate ## is internally generated as siaf.simulatePC(intrfr.powerlaw) set.seed(1) simfun(n=10, siafpars=log(c(sigma=1, d=2)), ub=5) } \keyword{internal} surveillance/man/LRCUSUM.runlength.Rd0000644000175100001440000001441012347636474017205 0ustar hornikusers\name{LRCUSUM.runlength} \alias{LRCUSUM.runlength} \alias{outcomeFunStandard} \alias{LLR.fun} \encoding{latin1} \title{Run length computation of a CUSUM detector} \description{ Compute run length for a count data or categorical CUSUM. The computations are based on a Markov representation of the likelihood ratio based CUSUM. } \usage{ LRCUSUM.runlength(mu,mu0,mu1,h,dfun, n, g=5,outcomeFun=NULL,...) } \arguments{ \item{mu}{\eqn{k-1 \times T} matrix with true proportions, i.e. equal to mu0 or mu1 if one wants to compute e.g. \eqn{ARL_0} or \eqn{ARL_1}.} \item{mu0}{\eqn{k-1 \times T} matrix with in-control proportions} \item{mu1}{\eqn{k-1 \times T} matrix with out-of-control proportion} \item{h}{The threshold h which is used for the CUSUM.} \item{dfun}{The probability mass function or density used to compute the likelihood ratios of the CUSUM. In a negative binomial CUSUM this is \code{dnbinom}, in a binomial CUSUM \code{dbinom} and in a multinomial CUSUM \code{dmultinom}.} \item{n}{Vector of length \eqn{T} containing the total number of experiments for each time point.} \item{g}{The number of levels to cut the state space into when performing the Markov chain approximation. Sometimes also denoted \eqn{M}. Note that the quality of the approximation depends very much on \eqn{g}. If \eqn{T} greater than, say, 50 its necessary to increase the value of \eqn{g}.} \item{outcomeFun}{A hook function to compute all possible outcome states to compute the likelihood ratio for. If \code{NULL} then the default function \code{outcomeFunStandard(k,n)} is used. This function uses the Cartesian product of \code{0:n} for \code{k} components.} \item{\dots}{Additional arguments to send to \code{dfun}.} } \details{ Brook and Evans (1972) formulated an approximate approach based on Markov chains to determine the PMF of the run length of a time-constant CUSUM detector. They describe the dynamics of the CUSUM statistic by a Markov chain with a discretized state space of size \eqn{g+2}. This is adopted to the time varying case in \enc{Höhle}{Hoehle} (2010) and implemented in R using the \dots notation such that it works for a very large class of distributions. } \seealso{\code{\link{categoricalCUSUM}}} \value{A list with five components \item{P}{An array of \eqn{g+2 \times g+2} transition matrices of the approximation Markov chain.} \item{pmf}{Probability mass function (up to length \eqn{T}) of the run length variable.} \item{cdf}{Cumulative density function (up to length \eqn{T}) of the run length variable.} \item{arl}{If the model is time homogenous (i.e. if \eqn{T==1}) then the ARL is computed based on the stationary distribution of the Markov chain. See the eqns in the reference for details. Note: If the model is not time homogeneous then the function returns \code{NA} and the ARL has to be approximated manually from the output. One could use \code{sum(1:length(pmf) * pmf)}, which is an approximation because of using a finite support for a sum which should be from 1 to infinity. } } \references{ Höhle, M. (2010), Changepoint detection in categorical time series, Book chapter in T. Kneib and G. Tutz (Eds.), Statistical Modelling and Regression Structures - Festschrift in Honour of Ludwig Fahrmeir, Springer, pp. 377-397. Preprint available as http://www.math.su.se/~hoehle/pubs/hoehle2010-preprint.pdf Höhle, M. and Mazick, A. (2009), Aberration detection in R illustrated by Danish mortality monitoring, Book chapter to appear in T. Kass-Hout and X. Zhang (Eds.) Biosurveillance: A Health Protection Priority, CRCPress. Preprint available as http://www.math.su.se/~hoehle/pubs/hoehle_mazick2009-preprint.pdf Brook, D. and Evans, D. A. (1972), An approach to the probability distribution of Cusum run length, Biometrika, 59:3, pp. 539--549. } \examples{ ###################################################### #Run length of a time constant negative binomial CUSUM ###################################################### #In-control and out of control parameters mu0 <- 10 alpha <- 1/2 kappa <- 2 #Density for comparison in the negative binomial distribution dY <- function(y,mu,log=FALSE, alpha, ...) { dnbinom(y, mu=mu, size=1/alpha, log=log) } #In this case "n" is the maximum value to investigate the LLR for #It is assumed that beyond n the LLR is too unlikely to be worth #computing. LRCUSUM.runlength( mu=t(mu0), mu0=t(mu0), mu1=kappa*t(mu0), h=5, dfun = dY, n=rep(100,length(mu0)), alpha=alpha) h.grid <- seq(3,6,by=0.3) arls <- sapply(h.grid, function(h) { LRCUSUM.runlength( mu=t(mu0), mu0=t(mu0), mu1=kappa*t(mu0), h=h, dfun = dY, n=rep(100,length(mu0)), alpha=alpha,g=20)$arl }) plot(h.grid, arls,type="l",xlab="threshold h",ylab=expression(ARL[0])) if (surveillance.options("allExamples")) { ###################################################### #Run length of a time varying negative binomial CUSUM ###################################################### mu0 <- matrix(5*sin(2*pi/52 * 1:200) + 10,ncol=1) rl <- LRCUSUM.runlength( mu=t(mu0), mu0=t(mu0), mu1=kappa*t(mu0), h=2, dfun = dY, n=rep(100,length(mu0)), alpha=alpha,g=20) plot(1:length(mu0),rl$pmf,type="l",xlab="t",ylab="PMF") plot(1:length(mu0),rl$cdf,type="l",xlab="t",ylab="CDF") } ######################################################## # Further examples contain the binomial, beta-binomial # and multinomial CUSUMs. Hopefully, these will be added # in the future. ######################################################## #dfun function for the multinomial distribution (Note: Only k-1 categories are specified). dmult <- function(y, size,mu, log = FALSE) { return(dmultinom(c(y,size-sum(y)), size = size, prob=c(mu,1-sum(mu)), log = log)) } #Example for the time-constant multinomial distribution #with size 100 and in-control and out-of-control parameters as below. n <- 100 pi0 <- as.matrix(c(0.5,0.3,0.2)) pi1 <- as.matrix(c(0.38,0.46,0.16)) #ARL_0 LRCUSUM.runlength(mu=pi0[1:2,,drop=FALSE],mu0=pi0[1:2,,drop=FALSE],mu1=pi1[1:2,,drop=FALSE], h=5,dfun=dmult, n=n, g=15)$arl #ARL_1 LRCUSUM.runlength(mu=pi1[1:2,,drop=FALSE],mu0=pi0[1:2,,drop=FALSE],mu1=pi1[1:2,,drop=FALSE], h=5,dfun=dmult, n=n, g=15)$arl } \author{M. \enc{Höhle}{Hoehle}} \keyword{regression} surveillance/man/simHHH.Rd0000644000175100001440000000703011770111463015147 0ustar hornikusers\name{simHHH} \alias{simHHH} \alias{simHHH.default} \alias{simHHH.ah} \encoding{latin1} \title{Simulates data based on the model proposed by Held et. al (2005)} \description{ Simulates a multivariate time series of counts based on the Poisson/Negative Binomial model as described in Held et al. (2005). } \usage{ \method{simHHH}{default}(model=NULL, control = list(coefs = list(alpha=1, gamma = 0, delta = 0, lambda = 0, phi = NULL, psi = NULL, period = 52), neighbourhood = NULL, population = NULL, start = NULL), % state = NULL, K = 0), length) \method{simHHH}{ah}(model, control = model$control, length) } \arguments{ \item{control}{list with \describe{ \item{coefs}{list with the following parameters of the model - if not specified, those parameters are omitted \describe{ \item{alpha}{vector of length \code{m} with intercepts for \code{m} units or geographic areas respectively} \item{gamma}{vector with parameters for the "sine" part of \eqn{\nu_{i,t}} } \item{delta}{vector with parameters for the "cosine" part of \eqn{\nu_{i,t}} } \item{lambda}{autoregressive parameter} \item{phi}{autoregressive parameter for adjacent units} \item{psi}{overdispersion parameter of the negative binomial model; \code{NULL} corresponds to a Poisson model} \item{period}{period of the seasonal component, defaults to 52 for weekly data} } } \item{neighbourhood}{neighbourhood matrix of size \eqn{m \times m} with element 1 if two units are adjacent; the default \code{NULL} assumes that there are no neighbours} \item{population}{matrix with population proportions; the default \code{NULL} sets \eqn{n_{i,t}=1} } \item{start}{if \code{NULL}, the means of the endemic part in the \code{m} units is used as initial values \eqn{y_{i,0}} } }} \item{model}{Result of a model fit with \code{\link{algo.hhh}}, the estimated parameters are used to simulate data} \item{length}{number of time points to simulate } } \value{Returns a list with elements \item{data}{\code{disProgObj} of simulated data } \item{mean}{matrix with mean \eqn{\mu_{i,t}} that was used to simulate the data} \item{endemic}{matrix with only the endemic part \eqn{\nu_{i,t}} } \item{coefs}{list with parameters of the model} } \details{ Simulates data from a Poisson or a Negative Binomial model with mean \deqn{\mu_{it} = \lambda y_{i,t-1} + \phi \sum_{j \sim i} y_{j,t-1} + n_{it} \nu_{it}} where \deqn{\log \nu_{it} = \alpha_i + \sum_{s=1}^{S}(\gamma_s sin(\omega_s t) + \delta_s cos(\omega_s t))} \eqn{\omega_s = 2s\pi/\code{period}} are Fourier frequencies and \eqn{n_{it}} are possibly standardized population sizes. } \note{The model does not contain a linear trend.} %\seealso{\code{\link{algo.hhh}}, \code{\link{algo.hhh.grid}}} \source{Held, L., \enc{Höhle}{Hoehle}, M., Hofmann, M. (2005). A statistical framework for the analysis of multivariate infectious disease surveillance counts. Statistical Modelling, 5, p. 187-199. } \keyword{datagen} surveillance/man/earsC.Rd0000644000175100001440000001546712122142736015100 0ustar hornikusers\name{earsC} \alias{earsC} \encoding{latin1} \title{Surveillance for a count data time series using the EARS C1, C2 or C3 method.} \description{ % The function takes \code{range} values of the surveillance time series \code{sts} and for each time point computes a threshold for the number of counts based on values from the recent past. This is then compared to the observed number of counts. If the observation is above a specific quantile of the prediction interval, then an alarm is raised. This method is especially useful for data without many reference values, since it only needs counts from the recent past. % } \usage{ earsC(sts, control = list(range = NULL, method = "C1", alpha = 0.001)) } \arguments{ \item{sts}{object of class sts (including the \code{observed} and the \code{state} time series) , which is to be monitored.} \item{control}{Control object \describe{ \item{\code{range}}{Specifies the index of all timepoints which should be tested. If \code{range} is \code{NULL} the maximum number of possible timepoints is used. This number depends on the method chosen. For C1 all timepoints from timepoint 8 can be assessed, for C2 from timepoint 10 and for C3 from timepoint 12.} \item{\code{method}}{String indicating which method to use: \cr "C1" for EARS C1-MILD method, "C2" for EARS C2-MEDIUM method, "C3" for EARS C3-HIGH method. By default if \code{method} is \code{NULL} C1 is chosen.} \item{\code{alpha}}{An approximate (two-sided) \eqn{(1-\alpha)\cdot 100\%} prediction interval is calculated. By default if \code{alpha} is \code{NULL} 0.001 is assumed for C1 and C2 whereas 0.025 is assumed for C3. These different choices are the one made at the CDC.} % } } } \details{ The three methods are different in terms of baseline used for calculation of the expected value and in terms of method for calculating the expected value: \itemize{ \item in C1 and C2 the expected value is the moving average of counts over the sliding window of the baseline and the prediction interval depends on the standard derivation of counts over this window. They can be considered as Shewhart control charts with a small sample used for calculations. \item in C3 the expected value is based on the sum over 3 timepoints (assessed timepoints and the two previous timepoints) of the discrepancy between observations and predictions, predictions being calculated with C2 method. This method shares a common point with CUSUM method (adding discrepancies between predictions and observations over several timepoints) but is not a CUSUM (sum over 3 timepoints, not accumulation over a whole range), even if it sometimes presented as such. } Here is what the function does for each method: \enumerate{ \item For C1 the baseline are the 7 timepoints before the assessed timepoint t, t-7 to t-1. The expected value is the mean of the baseline. An approximate (two-sided) \eqn{(1-\alpha)\cdot 100\%} prediction interval is calculated based on the assumption that the difference between the expected value and the observed value divided by the standard derivation of counts over the sliding window, called \eqn{C_1(t)}, follows a standard normal distribution in the absence of outbreaks: \deqn{C_1(t)= \frac{Y(t)-\bar{Y}_1(t)}{S_1(t)},} where \deqn{\bar{Y}_1(t)= \frac{1}{7} \sum_{i=t-1}^{t-7} Y(i)} and \deqn{ S^2_1(t)= \frac{1}{6} \sum_{i=t-1}^{t-7} [Y(i) - \bar{Y}_1(i)]^2.} Then under the null hypothesis of no outbreak, \deqn{C_1(t) \mathcal \sim {N}(0,1)} An alarm is raised if \deqn{C_1(t)\ge z_{1-\alpha}} with \eqn{z_{1-\alpha}} the \eqn{(1-\alpha)^{th}} quantile of the centered reduced normal law. \cr The upperbound \eqn{U_1(t)} is then defined by: \deqn{U_1(t)= \bar{Y}_1(t) + z_{1-\alpha}S_1(t).} \item C2 is very close to C1 apart from a 2-day lag in the baseline definition. Indeed for C2 the baseline are 7 timepoints with a 2-day lag before the assessed timepoint t, t-9 to t-3. The expected value is the mean of the baseline. An approximate (two-sided) \eqn{(1-\alpha)\cdot 100\%} prediction interval is calculated based on the assumption that the difference between the expected value and the observed value divided by the standard derivation of counts over the sliding window, called \eqn{C_2(t)}, follows a standard normal distribution in the absence of outbreaks: \deqn{C_2(t)= \frac{Y(t)-\bar{Y}_2(t)}{S_2(t)},} where \deqn{\bar{Y}_2(t)= \frac{1}{7} \sum_{i=t-3}^{t-9} Y(i)} and \deqn{ S^2_2(t)= \frac{1}{6} \sum_{i=t-3}^{t-9} [Y(i) - \bar{Y}_2(i)]^2.} Then under the null hypothesis of no outbreak, \deqn{C_2(t) \mathcal \sim {N}(0,1)} An alarm is raised if \deqn{C_2(t)\ge z_{1-\alpha},} with \eqn{z_{1-\alpha}} the \eqn{(1-\alpha)^{th}} quantile of the centered reduced normal law. \cr The upperbound \eqn{U_2(t)} is then defined by: \deqn{U_2(t)= \bar{Y}_2(t) + z_{1-\alpha}S_2(t).} \item C3 is quite different from the two other methods but it is based on C2. Indeed it uses \eqn{C_2(t)} from timepoint t and the two previous timepoints. This means the baseline are timepoints t-11 to t-3. The statistic \eqn{C_3(t)} is the sum of discrepancies between observations and predictions. \deqn{C_3(t)= \sum_{i=t}^{t-2} \max(0,C_2(i)-1)} Then under the null hypothesis of no outbreak, \deqn{C_3(t) \mathcal \sim {N}(0,1)} An alarm is raised if \deqn{C_3(t)\ge z_{1-\alpha},} with \eqn{z_{1-\alpha}} the \eqn{(1-\alpha)^{th}} quantile of the centered reduced normal law. \cr The upperbound \eqn{U_3(t)} is then defined by: \deqn{U_3(t)= \bar{Y}_2(t) + S_2(t)\left(z_{1-\alpha}-\sum_{i=t-1}^{t-2} \max(0,C_2(i)-1)\right).} } } \value{ An object of class \code{sts} with the slots \code{upperbound} and \code{alarm} filled by the chosen method. } \examples{ #Sim data and convert to sts object disProgObj <- sim.pointSource(p = 0.99, r = 0.5, length = 208, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) stsObj = disProg2sts( disProgObj) #Call function and show result res1 <- earsC(stsObj, control = list(range = 20:208,method="C1")) plot(res1,legend.opts=list(horiz=TRUE,x="topright"),dx.upperbound=0) # compare upperbounds depending on alpha res3 <- earsC(stsObj, control = list(range = 20:208,method="C3",alpha = 0.001)) plot(res3@upperbound,t='l') res3 <- earsC(stsObj, control = list(range = 20:208,method="C3")) lines(res3@upperbound,col='red') } \author{M. Salmon} \keyword{classif} \source{ Fricker, R.D., Hegler, B.L, and Dunfee, D.A. (2008). Comparing syndromic surveillance detection methods: EARS versus a CUSUM-based methodology, 27:3407-3429, Statistics in medicine. } surveillance/man/measlesDE.Rd0000644000175100001440000000173511731650466015707 0ustar hornikusers\name{measlesDE} \alias{measlesDE} \encoding{latin1} \title{Measles in the 16 states of Germany} \description{Weekly number of measles cases in the 16 states (Bundeslaender) of Germany for years 2005 to 2007. } \usage{data(measlesDE) } \format{ An \code{sts} object containing \eqn{156\times 16}{156 x 16} observations starting from week 1 in 2005. The \code{population} slot contains the population fractions of each state at 31.12.2006, obtained from the Federal Statistical Office of Germany. } \source{Robert Koch-Institut: SurvStat: \url{http://www3.rki.de/SurvStat}; Queried on 14 October 2009. } \seealso{\code{\link{MMRcoverageDE}}} \examples{ data(measlesDE) plot(measlesDE) } \references{ Herzog, S.A., Paul, M. and Held, L. (2011) Heterogeneity in vaccination coverage explains the size and occurrence of measles epidemics in German surveillance data. Epidemiology and Infection, \bold{139}, 505--515. } \keyword{datasets} surveillance/man/epidata_summary.Rd0000644000175100001440000000562012417463036017223 0ustar hornikusers\name{epidata_summary} \alias{summary.epidata} \alias{print.summary.epidata} \title{ Summarizing an Epidemic } \description{ The \code{\link{summary}} method for \code{\link{class}} \code{"\link{epidata}"} gives an overview of the epidemic. Its \code{\link{print}} method shows the type of the epidemic, the time range, the total number of individuals, the initially and never infected individuals and the size of the epidemic. An excerpt of the returned \code{counters} data frame is also printed (see the Value section below). } \usage{ \method{summary}{epidata}(object, ...) \method{print}{summary.epidata}(x, ...) } \arguments{ \item{object}{an object inheriting from class \code{"epidata"}.} \item{x}{an object inheriting from class \code{"summary.epidata"}, i.e. an object returned by the function \code{summary.epidata}.} \item{\dots}{unused (argument of the generic).} } \value{ A list with the following components: \item{type}{ character string. Compartmental type of the epidemic, i.e. one of "SIR", "SI", "SIS" or "SIRS". } \item{size}{ integer. Size of the epidemic, i.e. the number of initially susceptible individuals, which became infected during the course of the epidemic. } \item{initiallyInfected}{ factor (with the same levels as the \code{id} column in the \code{"epidata"} object). Set of initially infected individuals. } \item{neverInfected}{ factor (with the same levels as the \code{id} column in the \code{"epidata"} object). Set of never infected individuals, i.e. individuals, which were neither initially infected nor infected during the course of the epidemic. } \item{coordinates}{ numeric matrix of individual coordinates with as many rows as there are individuals and one column for each spatial dimension. The row names of the matrix are the \code{id}s of the individuals. } \item{byID}{ data frame with time points of infection and optionally removal and re-susceptibility (depending on the \code{type} of the epidemic) ordered by \code{id}. If an event was not observed, the corresponding entry is missing. } \item{counters}{ data frame containing all events (S, I and R) ordered by time. The columns are \code{time}, \code{type} (of event), corresponding \code{id} and the three counters \code{nSusceptible}, \code{nInfectious} and \code{nRemoved}. The first row additionally shows the counters at the beginning of the epidemic, where the \code{type} and \code{id} column contain missing values. } } \author{ Sebastian Meyer } \seealso{ \code{\link{as.epidata}} for generating objects of class \code{"epidata"}. } \examples{ data("fooepidata") s <- summary(fooepidata) s # uses the print method for summary.epidata names(s) # components of the list 's' # positions of the individuals plot(s$coordinates) # events by id head(s$byID) } \keyword{methods} surveillance/man/refvalIdxByDate.Rd0000644000175100001440000000216611731650466017061 0ustar hornikusers\name{refvalIdxByDate} \alias{refvalIdxByDate} \encoding{latin1} \title{Compute indices of reference value using Date class} \description{ The reference values are formed base on computatations of \code{seq} for Date class arguments. } \usage{ refvalIdxByDate(t0, b, w, epochStr, epochs) } \arguments{ \item{t0}{A Date object describing the time point} \item{b}{Number of years to go back in time} \item{w}{Half width of window to include reference values for} \item{epochStr}{One of \code{"1 month"}, \code{"1 week"} or \code{"1 day"}} \item{epochs}{Vector containing the epoch value of the sts/disProg object} } \details{ Using the Date class the reference values are formed as follows: Starting from \code{t0} go i, i= 1,...,\code{b} years back in time. For each year, go \code{w} epochs back and include from here to \code{w} epochs after \code{t0}. In case of weeks we always go back to the closest monday of this date. In case of months we also go back in time to closest 1st of month. } \value{ a vector of indices in epochs which match } \keyword{regression} surveillance/man/disProg2sts.Rd0000644000175100001440000000164511731650466016270 0ustar hornikusers\name{disProg2sts} \alias{disProg2sts} \alias{sts2disProg} \title{Convert disProg object to sts and vice versa} \description{ % A small helper function to convert a \code{disProg} object to become an object of the S4 class \code{sts} and vice versa. In the future the \code{sts} should replace the \code{disProg} class, but for now this function allows for conversion between the two formats. % } \usage{ disProg2sts(disProgObj, map=NULL) sts2disProg(sts) } \arguments{ \item{disProgObj}{object of class disProg} \item{map}{\code{SpatialPolygonsDataFrame} object containing the map visualization} \item{sts}{Object of class \code{sts} to convert} } \value{ an object of class \code{sts} or \code{disProg}, respectively. } \seealso{ \code{\link{sts-class}} } \examples{ data(ha) print(disProg2sts(ha)) class(sts2disProg(disProg2sts(ha))) } \keyword{utilities} surveillance/man/compMatrix.writeTable.Rd0000644000175100001440000000411611731650466020265 0ustar hornikusers\name{compMatrix.writeTable} \alias{compMatrix.writeTable} \encoding{latin1} \title{Latex Table Generation} \description{generates a latex table } \usage{ compMatrix.writeTable(compMatrix) } \arguments{ \item{compMatrix}{Matrix which includes quality values for every surveillance system.} } \value{ \item{xtable}{ Latex table of the entered matrix. } } \author{M. \enc{Höhle}{Hoehle}, A. Riebler, C. Lang} \examples{ ### First creates some tables ### # Create a test object disProgObj1 <- sim.pointSource(p = 0.99, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) disProgObj2 <- sim.pointSource(p = 0.99, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 5) disProgObj3 <- sim.pointSource(p = 0.99, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 17) # Let this object be tested from any methods in range = 200:400 range <- 200:400 control <- list( list(funcName = "rki1", range = range), list(funcName = "rki2", range = range), list(funcName = "rki3", range = range) ) ### This are single compMatrices compMatrix1 <- algo.compare(algo.call(disProgObj1, control=control)) compMatrix2 <- algo.compare(algo.call(disProgObj2, control=control)) compMatrix3 <- algo.compare(algo.call(disProgObj3, control=control)) ### This is a summary compMatrix sumCompMatrix <- algo.summary( list(a=compMatrix1, b=compMatrix2, c=compMatrix3) ) ### Now show the latextable from the single compMatrix compMatrix1 compMatrix.writeTable(compMatrix1) ### Now show the latextable from the summary compMatrix compMatrix.writeTable(sumCompMatrix) } \keyword{print} surveillance/man/surveillance.options.Rd0000644000175100001440000000654712601334264020231 0ustar hornikusers\name{surveillance.options} \alias{surveillance.options} \alias{reset.surveillance.options} \title{Options of the \pkg{surveillance} Package} \description{ Query, set or reset options specific to the \pkg{surveillance} package, similar to what \code{\link{options}} does for global settings. } \usage{ surveillance.options(...) reset.surveillance.options() } \arguments{ \item{\dots}{ Either empty, or a sequence of option names (as strings), or a sequence of \code{name=value} pairs, or a named list of options. Available options are: \describe{ \item{gpclib:}{ Logical flag indicating whether \pkg{gpclib}, the General Polygon Clipping Library for \R, which has a restricted license (commercial use prohibited), may be used. This is no longer required since package \pkg{surveillance} has switched to alternatives such as \pkg{polyclip} and \pkg{rgeos} for generating \code{"epidataCS"} objects by \code{as.epidataCS} or \code{simEpidataCS}. However, for \code{\link{unionSpatialPolygons}} and \code{\link{intersectPolyCircle.gpc.poly}}, using \pkg{gpclib} is still an option (mainly for backwards compatibility). The default setting is \code{FALSE}. } \item{stsTickFactors:}{ A named vector containing tick sizes for the \code{"sts"} x-axis relative to \code{\link{par}("tcl")}. Each entry contains the size at \code{\link{strptime}} formatting strings. See the help on \code{\link{stsplot_time1}} for details. \describe{ \item{"\%d"}{} \item{"\%W"}{} \item{"\%V"}{} \item{"\%m"}{} \item{"\%Q"}{} \item{"\%Y"}{} \item{"\%G"}{} } } \item{colors:}{ A named list containing plotting color defaults. \describe{ \item{nowSymbol}{Color of the "now" symbol in \code{stsNC} plots. Default: \code{"springgreen4"}.} \item{piBars}{Color of the prediction interval bars in \code{stsNC} plots. Default: \code{"orange"}.} } } \item{allExamples:}{ Logical flag queried before running cumbersome computations in help file examples. For \code{interactive()} sessions, this option defaults to \code{TRUE}. Otherwise, long examples will only be run if the environment variable \env{_R_SURVEILLANCE_ALL_EXAMPLES_} is set (to any value different from \code{""}) when attaching the \pkg{surveillance} package. This is to avoid long computations during (daily) CRAN checks. } } } } \value{ \code{reset.surveillance.options} reverts all options to their default values and (invisibly) returns these in a list. For \code{surveillance.options}, the following holds: \itemize{ \item If no arguments are given, the current values of all package options are returned in a list. \item If one option name is given, the current value of this option is returned (\emph{not} in a list, just the value). \item If several option names are given, the current values of these options are returned in a list. \item If \code{name=value} pairs are given, the named options are set to the given values, and the \emph{previous} values of these options are returned in a list. } } \author{ Sebastian Meyer, inspired by the implementation of \code{spatstat.options()} in the \pkg{spatstat} package by Adrian Baddeley and Rolf Turner. } \examples{ surveillance.options() } \keyword{environment} surveillance/man/R0.Rd0000644000175100001440000001766712515677052014342 0ustar hornikusers\encoding{latin1} \name{R0} \alias{R0} \alias{R0.twinstim} \alias{R0.simEpidataCS} \alias{simpleR0} \title{Computes reproduction numbers from fitted models} \description{ The S3 generic function \code{R0} defined in package \pkg{surveillance} is intended to compute reproduction numbers from fitted epidemic models. The package currently defines a method for the \code{"\link{twinstim}"} class, which computes expected numbers of infections caused by infected individuals depending on the event type and marks attached to the individual, which contribute to the infection pressure in the epidemic predictor of that class. There is also a method for simulated \code{"epidataCS"} (just a wrapper for the \code{"twinstim"}-method). } \usage{ R0(object, ...) \method{R0}{twinstim}(object, newevents, trimmed = TRUE, newcoef = NULL, ...) \method{R0}{simEpidataCS}(object, trimmed = TRUE, ...) simpleR0(object, eta = coef(object)[["e.(Intercept)"]], eps.s = NULL, eps.t = NULL, newcoef = NULL) } \arguments{ \item{object}{A fitted epidemic model object for which an \code{R0} method exists.} \item{newevents}{ an optional \code{data.frame} of events for which the reproduction numbers should be calculated. If omitted, it is calculated for the original events from the fit. In this case, if \code{trimmed = TRUE} (the default), the result is just \code{object$R0}; however, if \code{trimmed = FALSE}, the model environment is required, i.e. \code{object} must have been fitted with \code{model = TRUE}. For the \code{twinstim} method, \code{newevents} must at least contain the following columns: the \code{time} of the events, the factor variable \code{type}, the interaction ranges \code{eps.t} and \code{eps.s}, as well as columns for the marks used in the epidemic component of the fitted twinstim \code{object} as stored in \code{formula(object)$epidemic}. The coding of the variables must of course be the same as used for fitting. For \code{trimmed} R0 values, \code{newevents} must additionally contain the components \code{.influenceRegion} and, if using the \code{Fcircle} trick in the \code{siaf} specification, also \code{.bdist} (cf. the hidden columns in the \code{events} component of class \code{"epidataCS"}). } \item{trimmed}{ logical indicating if the individual reproduction numbers should be calculated by integrating the epidemic intensities over the observation period and region only (\code{trimmed = TRUE}) or over the whole time-space domain R+ x R^2 (\code{trimmed = FALSE}). By default, if \code{newevents} is missing, the trimmed \code{R0} values stored in \code{object} are returned. Trimming means that events near the (spatial or temporal) edges of the observation domain have lower reproduction numbers (ceteris paribus) because events outside the observation domain are not observed. } \item{newcoef}{ the model parameters to use when calculating reproduction numbers. The default (\code{NULL}) is to use the MLE \code{coef(object)}. This argument mainly serves the construction of Monte Carlo confidence intervals by evaluating \code{R0} for parameter vectors sampled from the asymptotic multivariate normal distribution of the MLE, see Examples. } \item{\dots}{additional arguments passed to methods. Currently unused for the \code{twinstim} method.} \item{eta}{a value for the epidemic linear predictor, see details.} \item{eps.s,eps.t}{the spatial/temporal radius of interaction. If \code{NULL} (the default), the original value from the data is used if this is unique and an error is thrown otherwise.} } \details{ For the \code{"\link{twinstim}"} class, the individual-specific expected number \eqn{\mu_j} of infections caused by individual (event) \eqn{j} inside its theoretical (untrimmed) spatio-temporal range of interaction given by its \code{eps.t} (\eqn{\epsilon}) and \code{eps.s} (\eqn{\delta}) values is defined as follows (cf. Meyer et al, 2012): \deqn{\mu_j = e^{\eta_j} \cdot \int_{b(\bold{0},\delta)} f(\bold{s}) d\bold{s} \cdot \int_0^\epsilon g(t) dt .} Here, \eqn{b(\bold{0},\delta)} denotes the disc centred at (0,0)' with radius \eqn{\delta}, \eqn{\eta_j} is the epidemic linear predictor, \eqn{g(t)} is the temporal interaction function, and \eqn{f(\bold{s})} is the spatial interaction function. For a type-specific \code{twinstim}, there is an additional factor for the number of event types which can be infected by the type of event \eqn{j} and the interaction functions may be type-specific as well. Alternatively to the equation above, the \code{trimmed} (observed) reproduction numbers are obtain by integrating over the observed infectious domains of the individuals, i.e. integrate \eqn{f} over the intersection of the influence region with the observation region \code{W} (i.e. over \eqn{\{ W \cap b(\bold{s}_j,\delta) \} - \bold{s}_j}) and \eqn{g} over the intersection of the observed infectious period with the observation period \eqn{(t_0;T]} (i.e. over \eqn{(0; \min(T-t_j,\epsilon)]}). The function \code{simpleR0} computes \deqn{\exp(\eta) \cdot \int_{b(\bold{0},\delta)} f(\bold{s}) d\bold{s} \cdot \int_0^{\epsilon} g(t) dt ,} where \eqn{\eta} defaults to \eqn{\gamma_0} disregarding any epidemic effects of types and marks. It is thus only suitable for simple epidemic \code{\link{twinstim}} models with \code{epidemic = ~1}, a diagonal (or secondary diagonal) \code{qmatrix}, and type-invariant interaction functions. \code{simpleR0} mainly exists for use by \code{\link{epitest}}. (Numerical) Integration is performed exactly as during the fitting of \code{object}, for instance \code{object$control.siaf} is queried if necessary. } \value{ For the \code{R0} methods, a numeric vector of estimated reproduction numbers from the fitted model \code{object} corresponding to the rows of \code{newevents} (if supplied) or the original fitted events including events of the prehistory. For \code{simpleR0}, a single number (see details). } \references{ Meyer, S., Elias, J. and H\enc{ö}{oe}hle, M. (2012): A space-time conditional intensity model for invasive meningococcal disease occurrence. \emph{Biometrics}, \bold{68}, 607-616.\cr DOI-Link: \url{http://dx.doi.org/10.1111/j.1541-0420.2011.01684.x} } \author{Sebastian Meyer} \examples{ ## load the 'imdepi' data and a model fit data("imdepi") data("imdepifit") ## calculate individual and type-specific reproduction numbers R0s <- R0(imdepifit) tapply(R0s, imdepi$events@data[names(R0s), "type"], summary) ## untrimmed R0 for a specific event R0(imdepifit, newevents=marks(imdepi)[1,], trimmed=FALSE) ### compute a Monte Carlo confidence interval ## use a simpler model with constant 'siaf' for speed simplefit <- update(imdepifit, epidemic=~type, siaf=NULL, subset = NULL) ## we'd like to compute the mean R0's by event type meanR0ByType <- function (newcoef) { R0events <- R0(simplefit, newcoef=newcoef) tapply(R0events, imdepi$events@data[names(R0events),"type"], mean) } (meansMLE <- meanR0ByType(newcoef=NULL)) ## sample B times from asymptotic multivariate normal of the MLE B <- 5 # CAVE: toy example! In practice this has to be much larger set.seed(123) parsamples <- MASS::mvrnorm(B, mu=coef(simplefit), Sigma=vcov(simplefit)) ## for each sample compute the 'meanR0ByType' meansMC <- apply(parsamples, 1, meanR0ByType) ## get the quantiles and print the result cisMC <- apply(cbind(meansMLE, meansMC), 1, quantile, probs=c(0.025,0.975)) print(rbind(MLE=meansMLE, cisMC)) ### R0 for a simple epidemic model (homogeneous individuals) mepi1 <- update(simplefit, epidemic = ~1, data = imdepi, subset = type == "B", model = TRUE, verbose = FALSE) ## using the default spatial and temporal ranges of interaction (R0B <- simpleR0(mepi1)) # eps.s=200, eps.t=30 stopifnot(identical(R0B, R0(mepi1, trimmed = FALSE)[[1]])) ## assuming less interaction simpleR0(mepi1, eps.s = 50, eps.t = 15) } \keyword{methods} \keyword{univar} surveillance/man/checkResidualProcess.Rd0000644000175100001440000000452612424244530020142 0ustar hornikusers\name{checkResidualProcess} \alias{checkResidualProcess} \title{ Check the residual process of a fitted \code{twinSIR} or \code{twinstim} } \description{ Transform the residual process (cf. the \code{\link[=residuals.twinstim]{residuals}} methods for classes \code{"twinSIR"} and \code{"twinstim"}) such that the transformed residuals should be uniformly distributed if the fitted model well describes the true conditional intensity function. Graphically check this using \code{\link{ks.plot.unif}}. The transformation for the residuals \code{tau} is \code{1 - exp(-diff(c(0,tau)))} (cf. Ogata, 1988). Another plot inspects the serial correlation between the transformed residuals (scatterplot between u_i and u_{i+1}). } \usage{ checkResidualProcess(object, plot = 1:2, mfrow = c(1,length(plot)), ...) } \arguments{ \item{object}{ an object of class \code{"\link{twinSIR}"} or \code{"\link{twinstim}"}. } \item{plot}{ logical (or integer index) vector indicating if (which) plots of the transformed residuals should be produced. The \code{plot} index 1 corresponds to a \code{\link{ks.plot.unif}} to check for deviations of the transformed residuals from the uniform distribution. The \code{plot} index 2 corresponds to a scatterplot of \eqn{u_i} vs. \eqn{u_{i+1}}. By default (\code{plot = 1:2}), both plots are produced. } \item{mfrow}{ see \code{\link{par}}. } \item{\dots}{ further arguments passed to \code{\link{ks.plot.unif}}. } } \value{ A list (returned invisibly, if \code{plot = TRUE}) with the following components: \describe{ \item{tau}{the residual process obtained by \code{residuals(object)}.} \item{U}{the transformed residuals which should be distributed as U(0,1).} \item{ks}{the result of the \code{ks.test} for the uniform distribution of \code{U}.} } } \references{ Ogata, Y. (1988) Statistical models for earthquake occurrences and residual analysis for point processes. \emph{Journal of the American Statistical Association}, 83, 9-27 } \author{ Sebastian Meyer } \seealso{ \code{\link{ks.plot.unif}} and the \code{\link[=residuals.twinstim]{residuals}}-method for classes \code{"twinSIR"} and \code{"twinstim"}. } \examples{ ## load the twinSIR() fit data("foofit") checkResidualProcess(foofit) } \keyword{dplot} \keyword{htest} surveillance/man/anscombe.residuals.Rd0000644000175100001440000000115711731650466017624 0ustar hornikusers\name{anscombe.residuals} \alias{anscombe.residuals} \encoding{latin1} \title{Compute Anscombe residuals} \description{ The residuals of \code{m} are transformed to form Anscombe residuals. which makes them approximately standard normal distributed. } \usage{ anscombe.residuals(m, phi) } \arguments{ \item{m}{\code{m} is a glm object of the fit } \item{phi}{\code{phi} is the current estimated over-dispersion} } \value{Standardized Anscombe residuals of \code{m}} \references{McCullagh & Nelder, Generalized Linear Models, 1989} \keyword{regression} %algo.farrington.assign.weights surveillance/man/algo.farrington.assign.weights.Rd0000644000175100001440000000130312164317667022066 0ustar hornikusers\name{algo.farrington.assign.weights} \alias{algo.farrington.assign.weights} \encoding{latin1} \title{Assign weights to base counts} \description{ Weights are assigned according to the Anscombe residuals } \usage{ algo.farrington.assign.weights(s, weightsThreshold=1) } \arguments{ \item{s}{Vector of standardized Anscombe residuals} \item{weightsThreshold}{A scalar indicating when observations are seen as outlier. In the original Farrington proposal the value was 1 (default value), in the improved version this value is suggested to be 2.58.} } \value{Weights according to the residuals} \seealso{See Also as \code{\link{anscombe.residuals}}} \keyword{regression} surveillance/man/algo.compare.Rd0000644000175100001440000000351312307672335016407 0ustar hornikusers\name{algo.compare} \alias{algo.compare} \title{Comparison of Specified Surveillance Systems using Quality Values} \description{Comparison of specified surveillance algorithms using quality values. } \usage{ algo.compare(survResList) } \arguments{ \item{survResList}{a list of survRes objects to compare via quality values.} } \value{ \item{matrix}{Matrix with values from \code{\link{algo.quality}}, i.e. quality values for every surveillance algorithm found in \code{survResults}.} } \seealso{\code{\link{algo.quality}} } \examples{ # Create a test object disProgObj <- sim.pointSource(p = 0.99, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) # Let this object be tested from any methods in range = 200:400 range <- 200:400 survRes <- algo.call(disProgObj, control = list( list(funcName = "rki1", range = range), list(funcName = "rki2", range = range), list(funcName = "rki3", range = range), list(funcName = "rki", range = range, b = 3, w = 2, actY = FALSE), list(funcName = "rki", range = range, b = 2, w = 9, actY = TRUE), list(funcName = "bayes1", range = range), list(funcName = "bayes2", range = range), list(funcName = "bayes3", range = range), list(funcName = "bayes", name = "myBayes", range = range, b = 1, w = 5, actY = TRUE,alpha=0.05) ) ) algo.compare(survRes) } \keyword{classif} surveillance/man/influMen.Rd0000644000175100001440000000112711731650466015615 0ustar hornikusers\name{influMen} \alias{influMen} \docType{data} \title{Influenza and meningococcal infections in Germany, 2001-2006} \description{ Weekly counts of new influenza and meningococcal infections in Germany 2001-2006. } \usage{data(influMen)} \format{ A \code{disProg} object containing \eqn{312\times 2}{312 x 2} observations starting from week 1 in 2001 to week 52 in 2006. } \source{ Robert Koch-Institut: SurvStat: \url{http://www3.rki.de/SurvStat}. Queried on 25 July 2007. } \examples{ data(influMen) plot(influMen, as.one=FALSE, same.scale=FALSE) } \keyword{datasets} surveillance/man/wrap.algo.Rd0000644000175100001440000000515512564314555015740 0ustar hornikusers\name{wrap.algo} \alias{wrap.algo} \alias{farrington} \alias{bayes} \alias{rki} \alias{cusum} \alias{glrpois} \alias{glrnb} \alias{outbreakP} %% FIXME: hmm and rogerson are currently undocumented and unexported %\alias{hmm} %\alias{rogerson} \encoding{latin1} \title{Multivariate Surveillance through independent univariate algorithms} \description{ This function takes an \code{sts} object and applies an univariate surveillance algorithm to the time series of each observational unit. } \usage{ %This is the main function wrap.algo(sts, algo, control,control.hook=function(k, control) return(control),verbose=TRUE,...) %Derived functions fixing the control object and the "algo" argument farrington(sts, control=list(range=NULL, b=3, w=3,reweight=TRUE, verbose=FALSE,alpha=0.01),...) bayes(sts, control = list(range = range, b = 0, w = 6, actY = TRUE,alpha=0.05),...) rki(sts, control = list(range = range, b = 2, w = 4, actY = FALSE),...) cusum(sts, control = list(range=range, k=1.04, h=2.26, m=NULL, trans="standard",alpha=NULL),...) glrpois(sts, control = list(range=range,c.ARL=5, S=1,beta=NULL, Mtilde=1, M=-1, change="intercept",theta=NULL),...) glrnb(sts, control = list(range=range,c.ARL=5, mu0=NULL, alpha=0, Mtilde=1, M=-1, change="intercept", theta=NULL,dir=c("inc","dec"), ret=c("cases","value")),...) outbreakP(sts, control=list(range = range, k=100, ret=c("cases","value"),maxUpperboundCases=1e5),...) } \arguments{ \item{sts}{Object of class \code{sts}} \item{algo}{Character string giving the function name of the algorithm to call, e.g. \code{"algo.farrington"}. Calling is done using \code{do.call}.} \item{control}{Control object as list. Depends on each algorithm.} \item{control.hook}{This is a function for handling multivariate objects. This argument is a function function of integer k and the current control object and which returns the appropriate control object for region k.} \item{verbose}{Boolean, if \code{TRUE} then textual information about the process is given} \item{...}{Additional arguments sent to the \code{algo} function.} } \value{ An \code{sts} object with the \code{alarm}, \code{upperbound}, etc. slots filled with the results of independent and univariate surveillance algorithm. } \seealso{ \code{\link{algo.rki}}, \code{\link{algo.farrington}}, \code{\link{algo.cusum}}, \code{\link{algo.glrpois}}, \code{\link{algo.glrnb}}, \code{\link{algo.outbreakP}} for the exact form of the \code{control} object. } \author{M. \enc{Höhle}{Hoehle}} %\examples{ %} \keyword{classif} surveillance/man/findH.Rd0000644000175100001440000000447111731650466015075 0ustar hornikusers\name{findH} \alias{findH} \alias{hValues} \title{ Find decision interval for given in-control ARL and reference value} \description{ Function to find a decision interval \code{h}* for given reference value \code{k} and desired ARL \eqn{\gamma} so that the average run length for a Poisson or Binomial CUSUM with in-control parameter \eqn{\theta_0}, reference value \code{k} and is approximately \eqn{\gamma}, i.e. \eqn{\Big| \frac{ARL(h^*) -\gamma}{\gamma} \Big| < \epsilon}, or larger, i.e. \eqn{ARL(h^*) > \gamma }. } \usage{ findH(ARL0, theta0, s = 1, rel.tol = 0.03, roundK = TRUE, distr = c("poisson", "binomial"), digits = 1, FIR = FALSE, ...) hValues(theta0, ARL0, rel.tol=0.02, s = 1, roundK = TRUE, digits = 1, distr = c("poisson", "binomial"), FIR = FALSE, ...) } \arguments{ \item{ARL0}{ desired in-control ARL \eqn{\gamma} } \item{theta0}{in-control parameter \eqn{\theta_0}} \item{s}{change to detect, see details} \item{distr}{ \code{"poisson"} or \code{"binomial"} } \item{rel.tol}{relative tolerance, i.e. the search for \code{h}* is stopped if \eqn{\Big| \frac{ARL(h^*) -\gamma}{\gamma} \Big| < } \code{rel.tol} } \item{digits}{the reference value \code{k} and the decision interval \code{h} are rounded to \code{digits} decimal places} \item{roundK}{ passed to \code{findK} } \item{FIR}{if \code{TRUE}, the decision interval that leads to the desired ARL for a FIR CUSUM with head start \eqn{\frac{\code{h}}{2}} is returned } \item{\dots}{ further arguments for the distribution function, i.e. number of trials \code{n} for binomial cdf } } \value{ \code{findH} returns a vector and \code{hValues} returns a matrix with elements \item{theta0}{in-control parameter} \item{h}{decision interval} \item{k}{reference value} \item{ARL}{ARL for a CUSUM with parameters \code{k} and \code{h} } \item{rel.tol}{corresponds to \eqn{\Big| \frac{ARL(h) -\gamma}{\gamma} \Big|} } } \details{ The out-of-control parameter used to determine the reference value \code{k} is specified as: \deqn{\theta_1 = \lambda_0 + s \sqrt{\lambda_0} } for a Poisson variate \eqn{X \sim Po(\lambda)} \deqn{\theta_1 = \frac{s \pi_0}{1+(s-1) \pi_0} } for a Binomial variate \eqn{X \sim Bin(n, \pi) } } \keyword{models} surveillance/man/multiplicity.Rd0000644000175100001440000000061712414600305016555 0ustar hornikusers\name{multiplicity} \alias{multiplicity} \docType{import} \title{Import from package \pkg{spatstat}} \description{ The generic function \code{multiplicity} is imported from package \pkg{spatstat}. See \code{\link[spatstat:multiplicity]{spatstat::multiplicity}} for \pkg{spatstat}'s own methods, and \code{\link{multiplicity.Spatial}} for the added method for \code{\linkS4class{Spatial}} objects. } surveillance/man/twinstim_profile.Rd0000644000175100001440000000702512337403641017433 0ustar hornikusers\encoding{latin1} \name{twinstim_profile} \alias{profile.twinstim} \title{ Profile Likelihood Computation and Confidence Intervals for \code{twinstim} objects } \description{ Function to compute estimated and profile likelihood based confidence intervals for \code{twinstim} objects. Computations might be cumbersome! WARNING: the implementation is not well tested, simply uses \code{optim} (ignoring optimizer settings from the original fit), and does not return the complete set of coefficients at each grid point. } \usage{ \method{profile}{twinstim}(fitted, profile, alpha = 0.05, control = list(fnscale = -1, factr = 10, maxit = 100), do.ltildeprofile=FALSE, ...) } \arguments{ \item{fitted}{ an object of class \code{"twinstim"}. } \item{profile}{ a list with elements being numeric vectors of length 4. These vectors must have the form \code{c(index, lower, upper, gridsize)}. \describe{ \item{\code{index}:}{ index of the parameter to be profiled in the vector \code{coef(fitted)}. } \item{\code{lower, upper}:}{ lower/upper limit of the grid on which the profile log-likelihood is evaluated. Can also be \code{NA} in which case \code{lower/upper} equals the lower/upper bound of the respective 0.3 \% Wald confidence interval (+-3*se). } \item{\code{gridsize}:}{ grid size of the equally spaced grid between lower and upper. Can also be 0 in which case the profile log-likelihood for this parameter is not evaluated on a grid. } } } \item{alpha}{ \eqn{(1-\alpha)\%}{(1-alpha)\%} profile likelihood based confidence intervals are computed. If alpha <= 0, then no confidence intervals are computed. This is currently not implemented. } \item{control}{ control object to use in \code{\link{optim}} for the profile log-likelihood computations. It might be necessary to control \code{maxit} or \code{reltol} in order to obtain results in finite time. } \item{do.ltildeprofile}{If \code{TRUE} calculate profile likelihood as well. This might take a while, since an optimisation for all other parameters has to be performed. Useful for likelihood based confidence intervals. Default: \code{FALSE}. } \item{\dots}{ unused (argument of the generic). } } \value{ list with profile log-likelihood evaluations on the grid and highest likelihood and wald confidence intervals. The argument \code{profile} is also returned. } \author{ Michael \enc{Höhle}{Hoehle} } \examples{ # the following call takes a while \dontrun{ #Load the twinstim model fitted to the IMD data data("imdepifit") # for profiling we need the model environment imdepifit <- update(imdepifit, model=TRUE) #Generate profiling object for a list of parameters for the new model names <- c("h.(Intercept)","e.typeC") coefList <- lapply(names, function(name) { c(pmatch(name,names(coef(imdepifit))),NA,NA,11) }) #Profile object (necessary to specify a more loose convergence #criterion). Speed things up by using do.ltildeprofile=FALSE (the default) prof <- profile(imdepifit, coefList,control=list(fnscale=-1,maxit=50, reltol=0.1,REPORT=1,trace=5),do.ltildeprofile=TRUE) #Plot result for one variable par(mfrow=c(1,2)) for (name in names) { with(as.data.frame(prof$lp[[name]]),matplot(grid,cbind(profile,estimated,wald), type="l",xlab=name,ylab="loglik")) legend(x="bottomleft",c("profile","estimated","wald"),lty=1:3,col=1:3) } } } \keyword{htest} \keyword{methods} \keyword{optimize} \keyword{dplot} surveillance/man/salmHospitalized.Rd0000644000175100001440000000117212301353007017335 0ustar hornikusers\name{salmHospitalized} \alias{salmHospitalized} \docType{data} \title{Hospitalized Salmonella cases in Germany 2004-2014} \description{ Reported number of cases of Salmonella in Germany 2004-2014 (early 2014) that were hospitalized. The corresponding total number of cases is indicated in the \code{slot populationFrac}. \code{multinomialTS} is \code{TRUE}. } \usage{data(salmNewport)} \format{ A \code{sts} object. } \source{ The data are queried from the Survstat@RKI database of the German Robert Koch Institute (http://www3.rki.de/SurvStat/). } \examples{ data(salmHospitalized) } \keyword{datasets} surveillance/man/algo.farrington.Rd0000644000175100001440000001245012307672335017132 0ustar hornikusers\name{algo.farrington} \alias{algo.farrington} \encoding{latin1} \title{Surveillance for a count data time series using the Farrington method.} \description{ % The function takes \code{range} values of the surveillance time series \code{disProgObj} and for each time point uses a GLM to predict the number of counts according to the procedure by Farrington et al. (1996). This is then compared to the observed number of counts. If the observation is above a specific quantile of the prediction interval, then an alarm is raised. % } \usage{ algo.farrington(disProgObj, control=list(range=NULL, b=3, w=3, reweight=TRUE,verbose=FALSE,alpha=0.01,trend=TRUE,limit54=c(5,4), powertrans="2/3", fitFun=c("algo.farrington.fitGLM.fast","algo.farrington.fitGLM", "algo.farrington.fitGLM.populationOffset"))) } \arguments{ \item{disProgObj}{object of class disProgObj (including the \code{observed} and the \code{state} time series.)} \item{control}{Control object \describe{ \item{\code{range}}{Specifies the index of all timepoints which should be tested. If range is \code{NULL} the maximum number of possible weeks is used (i.e. as many weeks as possible while still having enough reference values).} \item{\code{b}}{how many years back in time to include when forming the base counts.} \item{\code{w}}{windows size, i.e. number of weeks to include before and after the current week} \item{\code{reweight}}{Boolean specifying whether to perform reweight step} \item{\code{trend}}{If \code{true} a trend is included and kept in case the conditions documented in Farrington et al. (1996) are met (see the results). If \code{false} then NO trend is fit.} \item{\code{verbose}}{Boolean indicating whether to show extra debugging information.} \item{\code{plot}}{Boolean specifying whether to show the final GLM model fit graphically (use History|Recording to see all pictures).} \item{\code{powertrans}}{Power transformation to apply to the data. Use either "2/3" for skewness correction (Default), "1/2" for variance stabilizing transformation or "none" for no transformation.} \item{\code{alpha}}{An approximate (two-sided) \eqn{(1-\alpha)} prediction interval is calculated.} \item{\code{limit54}}{To avoid alarms in cases where the time series only has about 0-2 cases the algorithm uses the following heuristic criterion (see Section 3.8 of the Farrington paper) to protect against low counts: no alarm is sounded if fewer than \eqn{cases=5} reports were received in the past \eqn{period=4} weeks. \code{limit54=c(cases,period)} is a vector allowing the user to change these numbers. Note: As of version 0.9-7 the term "last" period of weeks includes the current week - otherwise no alarm is sounded for horrible large numbers if the four weeks before that are too low.} \item{\code{fitFun}}{String containing the name of the fit function to be used for fitting the GLM. The options are \code{algo.farrington.fitGLM.fast} (default) and \code{algo.farrington.fitGLM} or \code{algo.farrington.fitGLM.populationOffset}. See details of \code{\link{algo.farrington.fitGLM}} for more information.} % } } } \details{ The following steps are perfomed according to the Farrington et al. (1996) paper. \enumerate{ \item fit of the initial model and initial estimation of mean and overdispersion. \item calculation of the weights omega (correction for past outbreaks) \item refitting of the model \item revised estimation of overdispersion \item rescaled model \item omission of the trend, if it is not significant \item repetition of the whole procedure \item calculation of the threshold value \item computation of exceedance score } } \value{ An object of class \code{SurvRes}. } \examples{ #Read Salmonella Agona data data("salmonella.agona") #Do surveillance for the last 100 weeks. n <- length(salmonella.agona$observed) #Set control parameters. control <- list(b=4,w=3,range=(n-100):n,reweight=TRUE, verbose=FALSE,alpha=0.01) res <- algo.farrington(salmonella.agona,control=control) #Plot the result. plot(res,disease="Salmonella Agona",method="Farrington") \dontrun{ #Generate random data and convert into sts object set.seed(123) x <- matrix(rpois(1000,lambda=1),ncol=1) sts <- new("sts", observed=x, epoch=1:nrow(x), state=x*0, freq=52) #Compare timing of the two possible fitters for algo.farrington (here using S4) system.time( sts1 <- farrington(sts, control=list(range=c(500:1000), fitFun="algo.farrington.fitGLM.fast"))) system.time( sts2 <- farrington(sts, control=list(range=c(500:1000), fitFun="algo.farrington.fitGLM"))) #Check if results are the same sum(upperbound(sts1) - upperbound(sts2)) } } \author{M. \enc{Höhle}{Hoehle}} \seealso{\code{\link{algo.farrington.fitGLM}},\code{\link{algo.farrington.threshold}}} \keyword{classif} \source{A statistical algorithm for the early detection of outbreaks of infectious disease, Farrington, C.P., Andrews, N.J, Beale A.D. and Catchpole, M.A. (1996), J. R. Statist. Soc. A, 159, 547-563.} surveillance/man/animate.Rd0000644000175100001440000000104511735270236015452 0ustar hornikusers\name{animate} \alias{animate} \title{ Generic animation of spatio-temporal objects } \description{ Generic function for animation of \R objects. } \usage{ animate(object, ...) } \arguments{ \item{object}{The object to animate.} \item{\dots}{ Arguments to be passed to methods, such as graphical parameters or time interval options for the snapshots. } } \seealso{ The methods \code{\link{animate.epidata}} and \code{\link{animate.epidataCS}} for the animation of epidemics. } \keyword{hplot} \keyword{dynamic} \keyword{spatial} surveillance/man/loglikelihood.Rd0000644000175100001440000000246211770111463016660 0ustar hornikusers\name{loglikelihood} \alias{loglikelihood} \encoding{latin1} \title{Calculation of the loglikelihood needed in algo.hhh} \description{ Calculates the loglikelihood according to the model specified in \code{designRes}. } \usage{ loglikelihood(theta, designRes) } \arguments{ \item{theta}{vector of parameters \deqn{\theta = (\alpha_1,\ldots,\alpha_m, \bold{\lambda}, \bold{\phi}, \bold{\beta}, \bold{\gamma}_1, \ldots, \bold{\gamma}_m, \bold{\psi}),} where \eqn{\bold{\lambda}=(\lambda_1,\ldots,\lambda_m)}, \eqn{\bold{\phi}=(\phi_1,\ldots,\phi_m)}, \eqn{\bold{\beta}=(\beta_1,\ldots,\beta_m)}, \eqn{\bold{\gamma_1}=(\gamma_{11},\ldots,\gamma_{1,2S_1})}{\bold{\gamma_1}=(\gamma_11,\ldots,\gamma_(1,2S_1))}, \eqn{\bold{\gamma_m}=(\gamma_{m1},\ldots,\gamma_{m,2S_m})}{\bold{\gamma_m}=(\gamma_m1,\ldots,\gamma_(m,2S_m))}, \eqn{\bold{\psi}=(\psi_1,\ldots,\psi_m)}. If the model specifies less parameters, those components are omitted.} \item{designRes}{Result of a call to \code{make.design} } } \value{ Returns the loglikelihood } \seealso{\code{\link{algo.hhh}}} \author{M. Paul, L. Held} \keyword{internal} %\keyword{models} % meanResponse surveillance/man/twinstim_intensity.Rd0000644000175100001440000002117212316550301020011 0ustar hornikusers\name{twinstim_intensity} \alias{intensityplot.twinstim} \alias{intensity.twinstim} \alias{intensityplot.simEpidataCS} \title{ Plotting Intensities of Infection over Time or Space } \description{ \code{\link{intensityplot}} method to plot the evolution of the total infection intensity, its epidemic proportion or its endemic proportion over time or space (integrated over the other dimension) of fitted \code{\link{twinstim}} models (or \code{\link{simEpidataCS}}). The \code{"simEpidataCS"}-method is just a wrapper around \code{intensityplot.twinstim} by making the \code{"simEpidataCS"} object \code{"twinstim"}-compatible, i.e. enriching it by the required model components and environment. The \code{intensity.twinstim} auxiliary function returns functions which calculate the endemic or epidemic intensity at a specific time point or location (integrated over the other dimension). } \usage{ \method{intensityplot}{twinstim}(x, which = c("epidemic proportion", "endemic proportion", "total intensity"), aggregate = c("time", "space"), types = 1:nrow(x$qmatrix), tiles, tiles.idcol = NULL, plot = TRUE, add = FALSE, tgrid = 101, rug.opts = list(), sgrid = 128, polygons.args = list(), points.args = list(), cex.fun = sqrt, ...) \method{intensityplot}{simEpidataCS}(x, ...) intensity.twinstim(x, aggregate = c("time", "space"), types = 1:nrow(x$qmatrix), tiles, tiles.idcol = NULL) } \arguments{ \item{x}{ an object of class \code{"twinstim"} or \code{"simEpidataCS"}, respectively. } \item{which}{ \code{"epidemic proportion"}, \code{"endemic proportion"}, or \code{"total intensity"}. Partial matching is applied. Determines whether to plot the path of the total intensity or its epidemic or endemic proportions over time or space (\code{which}) aggregated over the other dimension and \code{types}. } \item{aggregate}{ One of \code{"time"} or \code{"space"}. The former results in a plot of the evolution of \code{which} as a function of time (integrated over the observation region \eqn{\bold{W}}), whereas the latter produces a \code{spplot} of \code{which} over \eqn{\bold{W}} (spanned by \code{tiles}). In both cases, \code{which} is evaluated on a grid of values, given by \code{tgrid} or \code{sgrid}, respectively. } \item{types}{ event types to aggregate. By default, all types of events are aggregated, but one could also be interested in only one specific type or a subset of event types. } \item{tiles}{ object of class \code{\linkS4class{SpatialPolygons}} representing the decomposition of \eqn{\bold{W}} into different regions (as used in the corresponding \code{stgrid} of the \code{"\link{epidataCS}"}. This is only needed for \code{aggregate = "space"}. } \item{tiles.idcol}{ either a column index for \code{tiles@data} (if \code{tiles} is a \code{\linkS4class{SpatialPolygonsDataFrame}}), or \code{NULL} (default), which refers to the \code{"ID"} slot of the polygons, i.e., \code{row.names(tiles)}. The ID's must correspond to the factor levels of \code{stgrid$tile} of the \code{"\link{epidataCS}"} on which \code{x} was fitted. } \item{plot}{ logical indicating if a plot is desired, which defaults to \code{TRUE}. Otherwise, a function will be returned, which takes a vector of time points (if \code{aggregate = "time"}) or a matrix of coordinates (if \code{aggregate = "space"}), and returns \code{which} on this grid. } \item{add}{ logical. If \code{TRUE} and \code{aggregate = "time"}, paths are added to the current plot, using \code{lines}. This does not work for \code{aggregate = "space"}. } \item{tgrid}{ either a numeric vector of time points when to evaluate \code{which}, or a scalar representing the desired number of evaluation points in the observation interval \eqn{[t_0, T]}. This argument is unused for \code{aggregate = "space"}. } \item{rug.opts}{ if a list, its elements are passed as arguments to the function \code{\link{rug}}, which will mark the time points of the events if \code{aggregate = "time"} (it is unused in the spatial case); otherwise (e.g., \code{NULL}), no \code{rug} will be produced. By default, the \code{rug} argument \code{ticksize} is set to 0.02 and \code{quiet} is set to \code{TRUE}. Note that the argument \code{x} of the \code{rug} function, which contains the locations for the \code{rug} is fixed internally and can not be modified. } \item{sgrid}{ either an object of class \code{"\linkS4class{SpatialPixels}"} (or coercible to that class) representing the locations where to evaluate \code{which}, or a scalar representing the total number of points of a grid constructed on the bounding box of \code{tiles} (using \code{\link[maptools]{Sobj_SpatialGrid}} from package \pkg{maptools}). \code{sgrid} is internally subsetted to contain only points inside \code{tiles}. This argument is unused for \code{aggregate = "time"}. } \item{polygons.args}{ if a list, its elements are passed as arguments to \code{\link{sp.polygons}}, which will add \code{tiles} to the plot if \code{aggregate = "space"} (it is unused for the temporal plot). By default, the fill \code{col}our of the tiles is set to \code{"darkgrey"}. } \item{points.args}{ if a list, its elements are passed as arguments to \code{\link{sp.points}}, which will add the event locations to the plot if \code{aggregate = "space"} (it is unused for the temporal plot). By default, the plot symbol ist set to \code{pch=1}. The sizes of the points are determined as the product of the argument \code{cex} (default: 0.5) of this list and the sizes obtained from the function \code{cex.fun} which accounts for multiple events at the same location. } \item{cex.fun}{ function which takes a vector of counts of events at each unique location and returns a (vector of) \code{cex} value(s) for the sizes of the points at the event locations used in \code{points.args}. Defaults to the \code{sqrt()} function, which for the default circular \code{pch=1} means that the area of each point is proportional to the number of events at its location. } \item{\dots}{ further arguments passed to \code{plot} or \code{lines} (if \code{aggregate = "time"}), or to \code{\link{spplot}} (if \code{aggregate = "space"}).\cr For \code{intensityplot.simEpidataCS}, arguments passed to \code{intensityplot.twinstim}. } } \value{ If \code{plot = FALSE} or \code{aggregate = "time"}, a function is returned, which takes a vector of time points (if \code{aggregate = "time"}) or a matrix of coordinates (if \code{aggregate = "space"}), and returns \code{which} on this grid. If \code{plot = TRUE} and \code{aggregate = "space"}, the \code{\link{trellis.object}} containg the spatial plot is returned. } \author{ Sebastian Meyer } \seealso{ \code{\link{plot.twinstim}}, which calls this function. } \examples{ data("imdepi") data("imdepifit") # for the intensityplot we need the model environment, which can be # easily added by the intelligent update method (no need to refit the model) imdepifit <- update(imdepifit, model=TRUE) ## path of the total intensity opar <- par(mfrow=c(2,1)) intensityplot(imdepifit, which="total intensity", aggregate="time", tgrid=500) plot(imdepi, "time", breaks=100) par(opar) ## time course of the epidemic proportion by event intensityplot(imdepifit, which="epidemic proportion", aggregate="time", tgrid=500, types=1) intensityplot(imdepifit, which="epidemic proportion", aggregate="time", tgrid=500, types=2, add=TRUE, col=2) legend("topright", legend=levels(imdepi$events$type), lty=1, col=1:2, title = "event type") ## spatial shape of the intensity (aggregated over time) if (surveillance.options("allExamples") && requireNamespace("maptools")) { ## load borders of Germany's districts load(system.file("shapes", "districtsD.RData", package="surveillance")) # total intensity (using a rather sparse 'sgrid' for speed) intensityplot(imdepifit, which="total intensity", aggregate="space", tiles=districtsD, sgrid=500) # epidemic proportion by type maps_epiprop <- lapply(1:2, function (type) { intensityplot(imdepifit, which="epidemic", aggregate="space", types=type, tiles=districtsD, sgrid=1000, at=seq(0,1,by=0.1), col.regions=rev(heat.colors(20))) }) plot(maps_epiprop[[1]], split=c(1,1,2,1), more=TRUE) plot(maps_epiprop[[2]], split=c(2,1,2,1)) } } \keyword{hplot} \keyword{aplot} \keyword{dplot} \keyword{methods} surveillance/man/algo.glrpois.Rd0000644000175100001440000001346012277146532016443 0ustar hornikusers\name{algo.glrpois} \alias{algo.glrpois} \encoding{latin1} \title{Poisson regression charts} \description{ Poisson regression charts for the monitoring of surveillance time series. } \usage{ algo.glrpois(disProgObj,control = list(range=range,c.ARL=5, mu0=NULL, Mtilde=1, M=-1, change="intercept",theta=NULL, dir=c("inc","dec"),ret=c("cases","value"))) } \arguments{ \item{disProgObj}{object of class \code{disProg} to do surveillance for} \item{control}{A list controlling the behaviour of the algorithm \describe{ \item{\code{range}}{vector of indices in the observed vector to monitor (should be consecutive)} \item{\code{mu0}}{A vector of in-control values of the Poisson distribution with the same length as \code{range}. If \code{NULL} the observed values in \code{1:(min(range)-1)} are used to estimate beta through a generalized linear model. To fine-tune the model one can instead specify \code{mu0} as a list with two components: \describe{ \item{\code{S}}{number of harmonics to include} \item{\code{trend}}{include a term \code{t} in the GLM model} }} \item{\code{c.ARL}}{threshold in the GLR test, i.e. \eqn{c_{\gamma}}{c_gamma}} \item{\code{Mtilde}}{number of observations needed before we have a full rank the typical setup for the "\code{intercept}" and "\code{epi}" charts is \code{Mtilde=1}} \item{\code{M}}{number of time instances back in time in the window-limited approach, i.e. the last value considered is \eqn{\max{1,n-M}}. To always look back until the first observation use \code{M=-1}.} \item{\code{change}}{a string specifying the type of the alternative. Currently the two choices are \code{intercept} and \code{epi}. See the SFB Discussion Paper 500 for details.} \item{\code{theta}}{if \code{NULL} then the GLR scheme is used. If not \code{NULL} the prespecified value for \eqn{\kappa} or \eqn{\lambda} is used in a recursive LR scheme, which is faster. } \item{\code{dir}}{a string specifying the direction of testing in GLR scheme. With \code{"inc"} only increases in \eqn{x} are considered in the GLR-statistic, with \code{"dec"} decreases are regarded. } \item{\code{ret}}{a string specifying the type of \code{upperbound}-statistic that is returned. With \code{"cases"} the number of cases that would have been necassary to produce an alarm or with \code{"value"} the glr-statistic is computed (see below).} } } } \value{ \item{survRes}{ \code{algo.glrpois} returns a list of class \code{survRes} (surveillance result), which includes the alarm value for recognizing an outbreak (1 for alarm, 0 for no alarm), the threshold value for recognizing the alarm and the input object of class disProg. The \code{upperbound} slot of the object are filled with the current \eqn{GLR(n)} value or with the number of cases that are necassary to produce an alarm at any timpoint \eqn{<=n}. Both lead to the same alarm timepoints, but \code{"cases"} has an obvious interpretation.} } % \details{ % This function implements the seasonal Poisson charts based on generalized likelihood ratio (GLR) as described in the SFB Discussion Paper 500. A moving-window generalized likelihood ratio detector is used, i.e. the detector has the form % \deqn{N = \inf\left\{ n : \max_{1\leq k \leq n} \left[ \sum_{t=k}^n \log \left\{ \frac{f_{\theta_1}(x_t|z_t)}{f_{\theta_0}(x_t|z_t)} \right\} \right] \geq c_\gamma \right\} }{N = inf(... >= c_gamma)} % where instead of \eqn{1\leq k \leq n}{1<= k <= n} the GLR statistic is computed for all \eqn{k \in \{n-M, \ldots, n-\tilde{M}+1\}}{k \in \{n-M, \ldots, n-Mtilde+1\}}. To achieve the typical behaviour from \eqn{1\leq k\leq n}{1<= k <= n} use \code{Mtilde=1} and \code{M=-1}. So \eqn{N} is the time point where the GLR statistic is above the threshold the first time: An alarm is given and the surveillance is resetted starting from time \eqn{N+1}. Note that the same \code{c.ARL} as before is used, but if \code{mu0} is different at \eqn{N+1,N+2,\ldots} compared to time \eqn{1,2,\ldots} the run length properties differ. Because \code{c.ARL} to obtain a specific ARL can only be obtained my Monte Carlo simulation there is no good way to update \code{c.ARL} automatically at the moment. Also, FIR GLR-detectors might be worth considering. At the moment, window limited ``\code{intercept}'' charts have not been extensively tested and are at the moment not supported. As speed is not an issue here this doesn't bother too much. Therefore, a value of \code{M=-1} is always used in the intercept charts. } \seealso{ \code{\link{algo.rkiLatestTimepoint}} } \author{M. Hoehle with contributions by V. Wimmer} \examples{ ##Simulate data and apply the algorithm S <- 1 ; t <- 1:120 ; m <- length(t) beta <- c(1.5,0.6,0.6) omega <- 2*pi/52 #log mu_{0,t} base <- beta[1] + beta[2] * cos(omega*t) + beta[3] * sin(omega*t) #Generate example data with changepoint and tau=tau tau <- 100 kappa <- 0.4 mu0 <- exp(base) mu1 <- exp(base + kappa) #Generate data set.seed(42) x <- rpois(length(t),mu0*(exp(kappa)^(t>=tau))) s.ts <- create.disProg(week=1:length(t),observed=x,state=(t>=tau)) #Plot the data plot(s.ts,legend=NULL,xaxis.years=FALSE) #Run cntrl = list(range=t,c.ARL=5, Mtilde=1, mu0=mu0, change="intercept",ret="value",dir="inc") glr.ts <- algo.glrpois(s.ts,control=c(cntrl)) lr.ts <- algo.glrpois(s.ts,control=c(cntrl,theta=0.4)) plot(glr.ts,xaxis.years=FALSE) plot(lr.ts,xaxis.years=FALSE) } \keyword{classif} \source{ Poisson regression charts for the monitoring of surveillance time series (2006), \enc{Höhle}{Hoehle}, M., SFB386 Discussion Paper 500. } % Hook %Rnw file surveillance/man/epidataCS_permute.Rd0000644000175100001440000000271012471147565017440 0ustar hornikusers\name{epidataCS_permute} \alias{permute.epidataCS} \title{ Randomly Permute Time Points or Locations of \code{"epidataCS"} } \description{ Monte Carlo tests for space-time interaction (\code{\link{epitest}}) use the distribution of some test statistic under the null hypothesis of no space-time interaction. For this purpose, the function \code{permute.epidataCS} randomly permutes the time or space labels of the events. } \usage{ permute.epidataCS(x, what = c("time", "space"), keep) } \arguments{ \item{x}{an object of class \code{"\link{epidataCS}"}.} \item{what}{character string determining what to permute: time points (default) or locations.} \item{keep}{optional logical expression to be evaluated in the context of \code{x$events@data}, determining for which events the time and location should be kept as is. For instance, to keep some \dQuote{pre-history} before time point 30 unchanged, use \code{keep = time <= 30}.} } \value{ the permuted \code{"\link{epidataCS}"} object. } \author{ Sebastian Meyer } \seealso{ \code{\link{epitest}} } \examples{ data("imdepi") set.seed(3) permepi <- permute.epidataCS(imdepi, what = "time", keep = time <= 30) print(imdepi, n = 8) print(permepi, n = 8) ## the first 6 events are kept (as are all row.names), ## the time labels of the remaining events are shuffled ## (and events then again sorted by time), ## the marginal temporal distribution is unchanged } \keyword{manip} surveillance/man/addFormattedXAxis.Rd0000644000175100001440000000635312611416245017412 0ustar hornikusers\name{addFormattedXAxis} \alias{addFormattedXAxis} % helper functions for time axis formatting \alias{atChange} \alias{at2ndChange} \alias{atMedian} \title{ Formatted Time Axis for \code{"sts"} Objects } \description{ Add a nicely formatted x-axis to time series plots related to the \code{"\linkS4class{sts}"} class. This utility function is, e.g., used by \code{\link{stsplot_time1}} and \code{\link{plotHHH4_fitted1}}. } \usage{ addFormattedXAxis(x, epochsAsDate = FALSE, xaxis.tickFreq = list("\%Q"=atChange), xaxis.labelFreq = xaxis.tickFreq, xaxis.labelFormat = "\%G\n\n\%OQ", ...) } \arguments{ \item{x}{ an object of class \code{"\linkS4class{sts}"}. } \item{epochsAsDate}{ a logical indicating if the old (\code{FALSE}) or the new (\code{TRUE}) and more flexible implementation should be used. The \code{xaxis.*} arguments are only relevant for the new implementation \code{epochsAsDate = TRUE}. } \item{xaxis.labelFormat,xaxis.tickFreq,xaxis.labelFreq}{ see the details below. } \item{\dots}{ further arguments passed to \code{\link{axis}}. } } \details{ The setting \code{epochsAsDate = TRUE} enables very flexible formatting of the x-axis and its annotations using the \code{xaxis.tickFreq}, \code{xaxis.labelFreq} and \code{xaxis.labelFormat} arguments. The first two are named lists containing pairs with the \emph{name} being a \code{\link{strftime}} single conversion specification and the second part is a function which based on this conversion returns a subset of the rows in the \code{sts} objects. The subsetting function has the following header: \code{function(x,xm1)}, where \code{x} is a vector containing the result of applying the conversion in \code{name} to the epochs of the \code{sts} object and \code{xm1} is the scalar result when applying the conversion to the natural element just before the first epoch. Please note that the input to the subsetting function is converted using \code{as.numeric} before calling the function. Hence, the conversion specification needs to result in a string convertible to integer. Three predefined subsetting functions exist: \code{atChange}, \code{at2ndChange} and \code{atMedian}, which are used to make a tick at each (each 2nd for \code{at2ndChange}) change and at the median index computed on all having the same value, respectively: \preformatted{ atChange <- function(x,xm1) which(diff(c(xm1,x)) != 0) at2ndChange <- function(x,xm1) which(diff(c(xm1,x) \%/\% 2) != 0) atMedian <- function(x,xm1) tapply(seq_along(x), INDEX=x, quantile, prob=0.5, type=3) } By defining own functions here, one can obtain an arbitrary degree of flexibility. Finally, \code{xaxis.labelFormat} is a \code{\link{strftime}} compatible formatting string., e.g. the default value is \code{"\%G\\n\\n\%OQ"}, which means ISO year and quarter (in roman letters) stacked on top of each other. } \value{ \code{NULL} (invisibly). The function is called for its side effects. } \author{ Michael H\enc{ö}{oe}hle with contributions by Sebastian Meyer } \seealso{ the examples in \code{\link{stsplot_time1}} and \code{\link{plotHHH4_fitted1}} } \keyword{aplot} surveillance/man/linelist2sts.Rd0000644000175100001440000000762612553440712016503 0ustar hornikusers\encoding{latin1} \name{linelist2sts} \alias{linelist2sts} %Internal functions \title{ Convert individual case information based on dates into an aggregated time series of counts } \description{ The function is used to convert an individual line list of cases to an aggregated time series of counts based on event date information of the cases. } \usage{ linelist2sts(linelist,dateCol, aggregate.by=c("1 day", "1 week", "7 day", "1 week", "1 month", "3 month", "1 year"), dRange=NULL, epochInPeriodStr=switch(aggregate.by, "1 day"="1", "1 week"="\%u", "1 month"="\%d","3 month"="\%q","1 year"="\%j"), startYearFormat=switch(aggregate.by,"1 day"="\%Y", "7 day"="\%G", "1 week"="\%G","1 month"="\%Y","3 month"="\%Y","1 year"="\%Y"), startEpochFormat=switch(aggregate.by,"1 day"="\%j", "7 day"="\%V", "1 week"="\%V", "1 month"="\%m", "3 month"="\%Q", "1 year"="1") ) } \arguments{ \item{linelist}{ A \code{data.frame} containing the line list of cases. } \item{dateCol}{A character string stating the column name in \code{linelist} which contains the event occurence information (as a vector of \code{Date}s) which are to be temporally aggregated. } \item{aggregate.by}{Temporal aggregation level given as a string, see the \code{by} variable of the \code{\link{seq.Date}} function for further details. } \item{dRange}{A vector containing the minimum and maximum date for doing the aggregation. If not specified these dates are extracted automatically by taking \code{range(D[,dateCol])} and adjust these according to \code{aggregate.by} (e.g. always first of a month). } \item{epochInPeriodStr}{\code{strptime} compatible format string to use for determining how a date is placed within the epoch. This is, e.g., used to move the \code{dRange} epochs to the beginning of the period. Example: In case of weekly aggregation the "\%u" determines which day within the week (Monday is day 1) we have. See \code{\link{strptime}} for further details. } \item{startYearFormat}{\code{strptime} compatible format string to use for determining how the \code{start} entry of the \code{sts} object is generated. Usually the provided defaults are sufficient.} \item{startEpochFormat}{\code{strptime} compatible format string to use for determining how the \code{start} entry of the \code{sts} object is generated. Usually the provided defaults are sufficient.} } \details{ The date range is automatically extended such that the starting and ending dates are always the first epoch within the period, i.e. for aggregation by week it is moved to mondays. This is controlled by the \code{epochInPeriodStr} parameter. Please note that the formatting strings are implemented by the internal \code{formatDate} function, which uses the \code{strptime} formatting strings (ISO8601 are made Windows compatible) as well as formatting of quarters using "\%Q", "\%OQ" and "\%q". } \value{ The function returns an object of class \code{"\linkS4class{sts}"}. The \code{freq} slot might not be appropriate. } \author{ Michael \enc{Höhle}{Hoehle} } \note{ Some of the \code{strptime} ISO 8601 formatting strings have problems on windows. Hence, the surveillance internal \code{formatDate} function is used. } \seealso{ See also \code{\link{seq.Date}}, \code{\link{strptime}}, \code{\link{isoWeekYear}}. } \examples{ #Load O104 outbreak data data("husO104Hosp") #Convert line list to an sts object sts <- linelist2sts(husO104Hosp, dateCol="dHosp", aggregate.by="1 day") #Check that the number of cases is correct all.equal(sum(observed(sts)),nrow(husO104Hosp)) #Plot the result plot(sts,xaxis.tickFreq=list("\%d"=atChange,"\%m"=atChange), xaxis.labelFreq=list("\%d"=at2ndChange), xaxis.labelFormat="\%d \%b", xlab="",las=2,cex.axis=0.8) } \keyword{models} \keyword{optimize} surveillance/man/residualsCT.Rd0000644000175100001440000000471312476433275016272 0ustar hornikusers\name{residualsCT} \alias{residuals.twinSIR} \alias{residuals.twinstim} \alias{residuals.simEpidataCS} \title{ Extract Cox-Snell-like Residuals of a Fitted Point Process } \description{ Extract the \dQuote{residual process} (cf. Ogata, 1988) of a fitted point process modell specified through the conditional intensity function, for instance a model of class \code{"\link{twinSIR}"} or \code{"\link{twinstim}"} (and also \code{"\link{simEpidataCS}"}). The residuals are defined as the fitted cumulative intensities at the event times, and are generalized residuals similar to those discussed in Cox and Snell (1968). } \usage{ \method{residuals}{twinSIR}(object, ...) \method{residuals}{twinstim}(object, ...) \method{residuals}{simEpidataCS}(object, ...) } \arguments{ \item{object}{ an object of one of the aforementioned model classes. } \item{\dots}{unused (argument of the generic).} } \details{ For objects of class \code{twinstim}, the residuals may already be stored in the object as component \code{object$tau} if the model was fitted with \code{cumCIF = TRUE} (and they always are for \code{"simEpidataCS"}). In this case, the \code{residuals} method just extracts these values. Otherwise, the residuals have to be calculated, which is only possible with access to the model environment, i.e. \code{object} must have been fitted with \code{model = TRUE}. The calulcated residuals are then also appended to \code{object} for future use. However, if \code{cumCIF} and \code{model} were both set to true in the \code{object} fit, then it is not possible to calculate the residuals and the method returns an error. } \value{ Numeric vector of length the number of events of the corresponding point process fitted by \code{object}. This is the observed residual process. } \references{ Ogata, Y. (1988) Statistical models for earthquake occurrences and residual analysis for point processes. \emph{Journal of the American Statistical Association}, 83, 9-27 Cox, D. R. & Snell, E. J. (1968) A general definition of residuals. \emph{Journal of the Royal Statistical Society. Series B (Methodological)}, 30, 248-275 } \seealso{ \code{\link{checkResidualProcess}} to graphically check the goodness-of-fit of the underlying model. } \author{ Sebastian Meyer } \examples{ ## Load the twinSIR() fit data("foofit") residuals(foofit) ## these residuals are, e.g., used by checkResidualProcess() checkResidualProcess(foofit) } \keyword{methods} surveillance/man/testSim.Rd0000644000175100001440000000353211731650466015472 0ustar hornikusers\name{testSim} \alias{testSim} \encoding{latin1} \title{Print xtable for a Simulated Disease and the Summary} \description{Just a test method. } \usage{ testSim(p = 0.99, r = 0.01, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K, range = 200:400) } \arguments{ \item{p}{probability to get a new epidemy at time i if there was one at time i-1, default 0.99} \item{r}{probability to get no new epidemy at time i if there was none at time i-1, default 0.01} \item{length}{number of weeks to model, default 400} \item{A}{amplitude (range of sinus), default = 1} \item{alpha}{parameter to move along the y-axis (negative values not allowed) with alpha > = A, default = 1} \item{beta}{regression coefficient, default = 0} \item{phi}{factor to create seasonal moves (moves the curve along the x-axis), default = 0} \item{frequency}{factor to determine the oscillation-frequency, default = 1} \item{state}{use a state chain to define the status at this timepoint (outbreak or not). If not given a Markov chain is generated by the programme, default NULL} \item{K}{additional weigth for an outbreak which influences the distribution parameter mu, default = 0} \item{range}{range of timepoints to be evaluated by the RKI 1 system, default 200:400.} } \value{ \item{xtable}{one printed latex table and a result plot} } \details{A pointSource epidemy is generated and sent to the RKI 1 system, the quality values for the result are computed and shown as a latex table. Additionally a plot of the result is generated. } \seealso{\code{\link{sim.pointSource}}, \code{\link{algo.call}}, \code{\link{algo.compare}}, \code{\link{plot.survRes}}, \code{\link{compMatrix.writeTable}} } \author{M. \enc{Höhle}{Hoehle}, A. Riebler, C. Lang} \examples{ testSim(K = 2) testSim(r = 0.5, K = 5) } \keyword{misc} surveillance/man/readData.Rd0000644000175100001440000000345511744234530015545 0ustar hornikusers\name{readData} \alias{readData} \title{Reading of Disease Data} \description{Reading of disease data. In the package disease data are saved in a file \code{.txt} containing three columns -- the weeknumber (week), the observed number of counts (observed) and a state (state). The data are read using \code{read.table(...,header=T)}, hence the file has to contain a header. } \usage{ readData(abb,week53to52=TRUE,sysPath=TRUE) } \arguments{ \item{abb}{abbreviation of the diseasename.} \item{week53to52}{Boolean indicating whether to convert RKI 53 Weeks System to 52 weeks a year} \item{sysPath}{Boolean, if \code{TRUE} then R automatically looks in the data directory of the \pkg{surveillance} package.} } \value{ \item{disProg}{a object \code{disProg} (disease progress) including a list of the observed and the state chain.} } \details{ This function is only kept for backwards compability. As of 0.9-2 all data should be read with \code{data}. } \seealso{\code{\link{m1}}, \code{\link{m2}}, \code{\link{m3}}, \code{\link{m4}}, \code{\link{m5}}, \code{\link{q1_nrwh}}, \code{\link{q2}}, \code{\link{s1}}, \code{\link{s2}}, \code{\link{s3}}, \code{\link{k1}}, \code{\link{n1}}, \code{\link{n2}}, \code{\link{h1_nrwrp}} } \examples{ readData("m5") #To bring a single vector of counts into a format, which can be #handled by readData. Assume ``counts'' is a vector of counts. counts <- rpois(100,20) counts <- data.frame("week"=1:length(counts),"observed"=counts, "state"=rep(0,length(counts))) write(c("week","observed","state"),file="disease.txt",ncol=3) write(t(as.matrix(counts)),file="disease.txt",ncol=3,append=TRUE) disease <- readData("disease",week53to52=FALSE,sysPath=FALSE) } \keyword{misc} surveillance/man/makePlot.Rd0000644000175100001440000000216011731650466015612 0ustar hornikusers\name{makePlot} \alias{makePlot} \encoding{latin1} \title{Plot Generation} \description{Just a test method. } \usage{ makePlot(outputpath, data = "k1", method = "rki1", name, disease, range = 157:339) } \arguments{ \item{outputpath}{path for the storage} \item{data}{abbreviation of the disease-file} \item{method}{method to be called} \item{name}{name of the method} \item{disease}{disease name} \item{range}{range to plot} } \details{\code{makePlot} reads the data given in \code{data} using the function \code{readData}, and the data are corrected to 52 weeks, enlarged using \code{enlargeData} and sendt to the surveillance system given in \code{method}. The system result is plotted and stored in \code{outputpath}. } \seealso{\code{\link{readData}}, \code{\link{correct53to52}}, \code{\link{enlargeData}}, \code{\link{algo.call}}, \code{\link{plot.survRes}} } \author{M. \enc{Höhle}{Hoehle}, A. Riebler, C. Lang} \examples{ makePlot("./", "k1", "rki2", "RKI 2", "Kryptosporidiose") } \keyword{misc} surveillance/man/permutationTest.Rd0000644000175100001440000000477012532030546017245 0ustar hornikusers\name{permutationTest} \alias{permutationTest} \title{Monte Carlo Permutation Test for Paired Individual Scores} \description{ As test statistic the difference between mean \code{\link{scores}} from model A and mean \code{\link{scores}} from model B is used. Under the null hypothesis of no difference, the actually observed difference between mean scores should not be notably different from the distribution of the test statistic under permutation. As the computation of all possible permutations is only feasible for small datasets, a random sample of permutations is used to obtain the null distribution. The resulting p-value thus depends on the \code{\link{.Random.seed}}. } \usage{ permutationTest(score1, score2, nPermutation = 9999, plot = FALSE, verbose = FALSE) } \arguments{ \item{score1, score2}{ numeric vectors of scores to compare } \item{nPermutation}{ number of random permutations to conduct } \item{plot}{ logical indicating if a \code{\link{truehist}} of the \code{nPermutation} permutation test statistics should be plotted with a vertical line marking the observed difference of the means. To customize the histogram, \code{plot} can also be a list of arguments for \code{truehist} replacing internal defaults. } \item{verbose}{ logical indicating if the results should be printed in one line. } } \details{ For each permutation, we first randomly assign the membership of the n individual scores to either model A or B with probability 0.5. We then compute the respective difference in mean for model A and B in this permuted set of scores. The Monte Carlo p-value is then given by (1 + #{permuted differences larger than observed difference (in absolute value)}) / (1 + \code{nPermutation}). } \value{ a list of the following elements: \item{diffObs}{observed difference in mean scores, i.e., \code{mean(score1) - mean(score2)}} \item{pVal.permut}{p-value of the permutation test} \item{pVal.t}{p-value of the corresponding \code{t.test(score1, score2, paired=TRUE)}} } \author{ Michaela Paul with contributions by Sebastian Meyer } \seealso{ \code{\link{scores}} to obtain individual scores for \code{\link{oneStepAhead}} predictions from a model. Package \pkg{coin} for a comprehensive permutation test framework, specifically its function \code{\link[coin]{symmetry_test}} to compare paired samples. } \examples{ permutationTest(rnorm(50, 1.5), rnorm(50, 1), plot = TRUE) } \keyword{htest} surveillance/man/calibration.Rd0000644000175100001440000000741512551431045016324 0ustar hornikusers\name{calibrationTest} \alias{calibrationTest} \alias{calibrationTest.default} \alias{dss} \alias{logs} \alias{rps} \title{ Calibration Test for Poisson or Negative Binomial Predictions } \description{ The implemented calibration tests for Poisson or negative binomial predictions of count data are based on proper scoring rules and described in detail in Wei and Held (2014). The following proper scoring rules are available: Dawid-Sebastiani score (\code{"dss"}), logarithmic score (\code{"logs"}), ranked probability score (\code{"rps"}). } \usage{ calibrationTest(x, ...) \method{calibrationTest}{default}(x, mu, size = NULL, which = c("dss", "logs", "rps"), tolerance = 1e-4, method = 2, ...) dss(x, mu, size = NULL) logs(x, mu, size = NULL) rps(x, mu, size = NULL, k = 40, tolerance = sqrt(.Machine$double.eps)) } \arguments{ \item{x}{ a numeric vector of observed counts. All involved functions are vectorized and also accept matrices or arrays. The score functions preserve the dimensions. } \item{mu}{ a numeric vector of means of the predictive distributions for the observations \code{x}. } \item{size}{ either \code{NULL} (indicating Poisson predictions with mean \code{mu}) or a numeric vector of dispersion parameters of the negative binomial distributions for the observations \code{x}. } \item{which}{ a character string indicating which proper scoring rule to apply. } \item{tolerance}{ absolute tolerance for the finite sum approximation for \code{rps} and for the null expectation and variance of \code{"logs"} and \code{"rps"}. Unused for \code{which = "dss"} (closed form). } \item{method}{ selection of the \eqn{z}-statistic: \code{method = 2} refers to the alternative test statistic \eqn{Z_s^*} of Wei and Held (2014, Discussion), which has been recommended for low counts. \code{method = 1} corresponds to Equation 5 in Wei and Held (2014). } \item{k}{ scalar argument controlling the finite sum approximation for the \code{rps} with truncation at \code{ceiling(mu + k*sd)}. } \item{\dots}{ unused (argument of the generic). } } \value{ an object of class \code{"htest"}, which is a list with the following components: \item{method}{a character string indicating the type of test performed (including \code{which} scoring rule).} \item{data.name}{a character string naming the supplied \code{x} argument.} \item{statistic}{the \eqn{z}-statistic of the test.} \item{parameter}{the number of predictions underlying the test, i.e., \code{length(x)}.} \item{p.value}{the p-value for the test.} } \references{ Wei, W. and Held, L. (2014): Calibration tests for count data. \emph{Test}, \bold{23}, 787-805. } \author{ Sebastian Meyer, Michaela Paul, and Wei Wei } \examples{ ## simulated example mu <- c(0.1, 1, 3, 6, pi, 100) size <- 0.1 set.seed(1) y <- rnbinom(length(mu), mu = mu, size = size) calibrationTest(y, mu = mu, size = size) # p = 0.99 calibrationTest(y, mu = mu, size = 1) # p = 4.3e-05 calibrationTest(y, mu = 1, size = 0.1) # p = 0.6959 calibrationTest(y, mu = 1, size = 0.1, which = "rps") # p = 0.1286 ## a univariate surveillance time series data("salmonella.agona") salmonella <- disProg2sts(salmonella.agona) ## fit a hhh4() model model <- list(end = list(f = addSeason2formula(~1 + t)), ar = list(f = ~1), family = "NegBin1") fit <- hhh4(salmonella, model) ## do sequential one-step-ahead predictions for the last 5 weeks pred <- oneStepAhead(fit, nrow(salmonella)-5, type="rolling", which.start="final", verbose=FALSE) pred ## test if the model is calibrated with(pred, calibrationTest(x = observed, mu = pred, size = exp(psi))) ## p = 0.8746 } \keyword{htest} surveillance/man/ks.plot.unif.Rd0000644000175100001440000000444112013461146016361 0ustar hornikusers\encoding{latin1} \name{ks.plot.unif} \alias{ks.plot.unif} \title{ Plot the ECDF of a uniform sample with Kolmogorov-Smirnov bounds } \description{ This plot function takes a univariate sample that should be tested for a U(0,1) distribution, plots its empirical cumulative distribution function (\code{\link{ecdf}}), and adds a confidence band by inverting the corresponding Kolmogorov-Smirnov test (\code{\link{ks.test}}). The uniform distribution is rejected if the ECDF is not completely inside the confidence band. } \usage{ ks.plot.unif(U, conf.level = 0.95, exact = NULL, col.conf = "gray", col.ref = "gray", xlab = expression(u[(i)]), ylab = "Cumulative distribution") } \arguments{ \item{U}{ numeric vector containing the sample. Missing values are (silently) ignored. } \item{conf.level}{ confidence level for the K-S-test (defaults to 0.95), can also be a vector of multiple levels. } \item{exact}{see \code{\link{ks.test}}.} \item{col.conf}{ colour of the confidence lines. } \item{col.ref}{ colour of the diagonal reference line. } \item{xlab, ylab}{ axis labels. } } \value{ \code{NULL} (invisibly). } \author{ Michael H\enc{ö}{oe}hle and Sebastian Meyer. The code contains segments originating from the source of the \link{ks.test} function \url{http://svn.r-project.org/R/trunk/src/library/stats/R/ks.test.R}, which is Copyright (C) 1995-2012 The R Core Team available under GPL-2 (or later) and C functionality from \url{http://svn.r-project.org/R/trunk/src/library/stats/src/ks.c}, which is copyright (C) 1999-2009 the R Core Team and available under GPL-2 (or later). Somewhat hidden in their \file{ks.c} file is a statement that part of their code is based on code published in George Marsaglia and Wai Wan Tsang and Jingbo Wang (2003), "Evaluating Kolmogorov's distribution". Journal of Statistical Software, Volume 8, 2003, Issue 18. URL: \url{http://www.jstatsoft.org/v08/i18/}. } \seealso{ \code{\link{ks.test}} for the Kolmogorov-Smirnov test, as well as \code{\link{checkResidualProcess}}, which makes use of this plot function. } \examples{ samp <- runif(99) ks.plot.unif(samp, conf.level=c(0.95, 0.99), exact=TRUE) ks.plot.unif(samp, conf.level=c(0.95, 0.99), exact=FALSE) } \keyword{hplot} \keyword{htest} surveillance/man/algo.call.Rd0000644000175100001440000000522012307672335015671 0ustar hornikusers\name{algo.call} \alias{algo.call} \title{Query Transmission to Specified Surveillance Algorithm} \description{Transmission of a object of class disProg to the specified surveillance algorithm. } \usage{ algo.call(disProgObj, control = list( list(funcName = "rki1", range = range), list(funcName = "rki", range = range, b = 2, w = 4, actY = TRUE), list(funcName = "rki", range = range, b = 2, w = 5, actY = TRUE))) } \arguments{ \item{disProgObj}{object of class disProg, which includes the state chain and the observed} \item{control}{specifies which surveillance algorithm should be used with their parameters. The parameter \code{funcName} and \code{range} must be specified. Here, \code{funcName} is the appropriate method function (without '\code{algo.}') and \code{range} defines the timepoints to be evaluated by the actual system. If \code{control} includes \code{name} this name is used in the survRes Object as name.} } \value{ \item{list of survRes Objects}{generated by the specified surveillance algorithm } } \seealso{\code{\link{algo.rki}}, \code{\link{algo.bayes}}, \code{\link{algo.farrington}}} \examples{ # Create a test object disProg <- sim.pointSource(p = 0.99, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) # Let this object be tested from any methods in range = 200:400 range <- 200:400 survRes <- algo.call(disProg, control = list( list(funcName = "rki1", range = range), list(funcName = "rki2", range = range), list(funcName = "rki3", range = range), list(funcName = "rki", range = range, b = 3, w = 2, actY = FALSE), list(funcName = "rki", range = range, b = 2, w = 9, actY = TRUE), list(funcName = "bayes1", range = range), list(funcName = "bayes2", range = range), list(funcName = "bayes3", range = range), list(funcName = "bayes", name = "myBayes", range = range, b = 1, w = 5, actY = TRUE,alpha=0.05) ) ) # this are some survResObjects plot(survRes[["rki(6,6,0)"]]) survRes[["bayes(5,5,1)"]] } \keyword{classif} surveillance/man/shadar.Rd0000644000175100001440000000112411731650466015277 0ustar hornikusers\name{shadar} \alias{shadar} \title{Salmonella Hadar cases in Germany 2001-2006} \description{Number of salmonella hadar cases in Germany 2001-2006. An increase is seen during 2006 } \usage{data(shadar) } \format{ A \code{disProg} object containing \eqn{295\times 1}{295 x 1} observations starting from week 1 in 2001 to week 35 in 2006. } \source{ Robert Koch-Institut: SurvStat: \url{http://www3.rki.de/SurvStat}; Queried on September 2006. Robert Koch Institut, Epidemiologisches Bulletin 31/2006. } \examples{ data(shadar) plot(shadar) } \keyword{datasets} surveillance/man/hhh4_calibration.Rd0000644000175100001440000000346112551430325017234 0ustar hornikusers\name{hhh4_calibration} \alias{calibrationTest.hhh4} \title{Test Calibration of a \code{hhh4} Model} \description{ The \code{\link{calibrationTest}}-method for \code{"\link{hhh4}"} models tests the calibration of the model fit, i.e., if the observed counts are from the fitted Poisson/NegBin distribution. } \usage{ \method{calibrationTest}{hhh4}(x, subset = x$control$subset, units = seq_len(x$nUnit), ...) } \arguments{ \item{x}{ an object of class \code{"hhh4"}. } \item{subset}{ subset of time points for which to test calibration. Defaults to the subset used for fitting the model. } \item{units}{ integer or character vector selecting the \code{units} for which to test calibration. It indexes \code{colnames(x$stsObj)}. By default all units are taken into account. } \item{\dots}{ arguments passed to \code{\link{calibrationTest.default}}, e.g., \code{which} to select a scoring rule. } } \value{ an object of class \code{"htest"}, see \code{\link{calibrationTest.default}}. } \author{ Sebastian Meyer } \examples{ data("measlesWeserEms") ## fit a hhh4 model measlesModel <- list( end = list(f = addSeason2formula(~0 + ri(type="iid"))), ar = list(f = ~1), ne = list(f = ~1, weights = W_powerlaw(maxlag = 5)), family = "NegBin1") measlesFit <- hhh4(measlesWeserEms, control = measlesModel) ## plot fitted mean components plot(measlesFit, units = NULL) ## overall calibration test calibrationTest(measlesFit) # default is DSS (not suitable for low counts) calibrationTest(measlesFit, which = "rps") calibrationTest(measlesFit, which = "logs") ## test calibration for the second year in a specific district calibrationTest(measlesFit, subset = 53:104, units = "03452", which = "rps") } \keyword{htest} \keyword{methods} surveillance/man/hhh4_simulate.Rd0000644000175100001440000001213212575642330016572 0ustar hornikusers\name{hhh4_simulate} \alias{simulate.hhh4} \title{Simulate \code{"hhh4"} Count Time Series} \description{ Simulates a multivariate time series of counts based on the Poisson/Negative Binomial model as described in Paul and Held (2011). } \usage{ \method{simulate}{hhh4}(object, nsim = 1, seed = NULL, y.start = NULL, subset = 1:nrow(object$stsObj), coefs = coef(object), components = c("ar","ne","end"), simplify = nsim>1, ...) } \arguments{ \item{object}{ an object of class \code{"\link{hhh4}"}. } \item{nsim}{ number of time series to simulate. Defaults to \code{1}. } \item{seed}{ an object specifying how the random number generator should be initialized for simulation (via \code{\link{set.seed}}). The initial state will also be stored as an attribute \code{"seed"} of the result. The original state of the \code{\link{.Random.seed}} will be restored at the end of the simulation. By default (\code{NULL}), neither initialization nor recovery will be done. This behaviour is copied from the \code{\link{simulate}.lm} method. } \item{y.start}{ vector or matrix (with \code{ncol(object$stsObj)} columns) with starting counts for the epidemic components. If \code{NULL}, the observed means in the respective units of the data in \code{object} during \code{subset} are used. } \item{subset}{ time period in which to simulate data. Defaults to the whole period. } \item{coefs}{ coefficients used for simulation from the model in \code{object}. Default is to use the fitted parameters. Note that the \code{coefs}-vector must be in the same order and scaling as \code{coef(object)}, which especially means \code{reparamPsi = TRUE} (as per default when using the \code{coef}-method to extract the parameters). The overdispersion parameter in \code{coefs} is the inverse of the dispersion parameter \code{size} in \code{\link{rnbinom}}. } \item{components}{ character vector indicating which components of the fitted model \code{object} should be active during simulation. For instance, a simulation with \code{components="end"} is solely based on the fitted endemic mean. } \item{simplify}{ logical indicating if only the simulated counts (\code{TRUE}) or the full \code{"\linkS4class{sts}"} object (\code{FALSE}) should be returned for every replicate. By default a full \code{"sts"} object is returned iff \code{nsim=1}. } \item{\dots}{unused (argument of the generic).} } \details{ Simulates data from a Poisson or a Negative Binomial model with mean \deqn{\mu_{it} = \lambda_{it} y_{i,t-1} + \phi_{it} \sum_{j \neq i} w_{ji} y_{j,t-1} + \nu_{it}}{% \mu_it = \lambda_it y_i,t-1 + \phi_it \sum_j w_ji y_j,t-1 + \nu_it} where \eqn{\lambda_{it}>0}, \eqn{\phi_{it}>0}, and \eqn{\nu_{it}>0} are parameters which are modelled parametrically. The function uses the model and parameter estimates of the fitted \code{object} to simulate the time series. With the argument \code{coefs} it is possible to simulate from the model as specified in \code{object}, but with different parameter values. } \value{ If \code{simplify=FALSE}: an object of class \code{"\linkS4class{sts}"} (\code{nsim = 1}) or a list of those (\code{nsim > 1}). If \code{simplify=TRUE}: an object of class \code{"hhh4sims"}, which is an array of dimension \code{c(length(subset), ncol(object$stsObj), nsim)}, where the third dimension is dropped if \code{nsim=1} (yielding a matrix). The originally observed counts during the simulation period, \code{object$stsObj[subset,]}, are attached for reference (used by the \code{plot}-methods) as an attribute \code{"stsObserved"}, and the initial condition \code{y.start} as attribute \code{"initial"}. } \references{ Paul, M. and Held, L. (2011) Predictive assessment of a non-linear random effects model for multivariate time series of infectious disease counts. Statistics in Medicine, \bold{30}, 1118--1136 } \author{ Michaela Paul and Sebastian Meyer } \seealso{ \code{\link{plot.hhh4sims}} and \code{\link{scores.hhh4sims}} } \examples{ data(influMen) # convert to sts class and extract meningococcal disease time series meningo <- disProg2sts(influMen)[,2] # fit model fit <- hhh4(meningo, control = list(ar = list(f = ~ 1), end = list(f = addSeason2formula(S = 1, period = 52)), family = "NegBin1")) plot(fit) # simulate from model simData <- simulate(fit, seed=1234) # plot simulated data plot(simData, main = "simulated data", xaxis.labelFormat=NULL) # consider a Poisson instead of a NegBin model coefs <- coef(fit) coefs["overdisp"] <- 0 simData2 <- simulate(fit, seed=123, coefs = coefs) plot(simData2, main = "simulated data: Poisson model", xaxis.labelFormat = NULL) # consider a model with higher autoregressive parameter coefs <- coef(fit) coefs[1] <- log(0.5) simData3 <- simulate(fit, seed=321, coefs = coefs) plot(simData3, main = "simulated data: lambda = 0.5", xaxis.labelFormat = NULL) } \keyword{datagen} surveillance/man/residuals.ah.Rd0000644000175100001440000000117611731650466016426 0ustar hornikusers\name{residuals.ah} \alias{residuals.ah} \alias{residuals.ahg} \encoding{latin1} \title{Residuals from a HHH model} \description{ Extracts model residuals from a \code{ah} or \code{ahg} object. } \usage{ \method{residuals}{ah}(object, type=c("deviance","pearson"), \dots) } \arguments{ \item{object}{object of class \code{ah} or \code{ahg} } \item{type}{the type of residuals which should be returned. The alternatives are "deviance" (default) and "pearson"} \item{\dots}{not really used} } \value{ matrix with residuals for each region and time point. } \details{this function is still experimental} \keyword{models} surveillance/man/sts_observation.Rd0000644000175100001440000000155512477564567017307 0ustar hornikusers% Generated by roxygen2 (4.0.2): do not edit by hand \name{sts_observation} \alias{sts_observation} \title{Function for creating a sts-object with a given observation date} \usage{ sts_observation(sts, dateObservation, cut = TRUE) } \arguments{ \item{sts}{sts-object we want to set at a previous state. Needs to include a reporting triangle.} \item{dateObservation}{Date for which we want the state. Needs to be in the reporting triangle dates.} \item{cut}{Boolean indicating wether to have 0 counts after the observation date or to simply cut the sts-object} } \description{ Function for creating a sts-object with a given observation date } \examples{ data("salmAllOnset") salmAllOnsety2013m01d20 <- sts_observation(salmAllOnset, dateObservation="2014-01-20",cut=FALSE) plot(salmAllOnset) lines(salmAllOnsety2013m01d20@observed,t="h",col="red") } surveillance/man/hagelloch.Rd0000644000175100001440000001547512421674631015776 0ustar hornikusers\encoding{latin1} \name{hagelloch} \alias{hagelloch} \alias{hagelloch.df} \docType{data} \keyword{datasets} \title{1861 Measles Epidemic in the City of Hagelloch, Germany} \description{ Data on the 188 cases in the measles outbreak among children in the German city of Hagelloch (near T\enc{ü}{ue}bingen) 1861. The data were originally collected by Dr. Albert Pfeilsticker (1863) and augmented and re-analysed by Dr. Heike Oesterle (1992). } \usage{ data("hagelloch") } \format{ Loading \code{data("hagelloch")} gives two objects: \code{hagelloch} and \code{hagelloch.df}. The former is an \code{"\link{epidata}"} object for use with \code{\link{twinSIR}} containing the entire SIR event history of the outbreak in the population of 188 children. The latter is the original \code{data.frame} of 188 rows with individual information for each infected child. The covariate information in \code{hagelloch.df} is as follows: \describe{ \item{PN:}{patient number} \item{NAME:}{patient name (as a factor)} \item{FN:}{family index} \item{HN:}{house number} \item{AGE:}{age in years} \item{SEX:}{gender of the individual (factor: male, female)} \item{PRO:}{\code{Date} of prodromes} \item{ERU:}{\code{Date} of rash} \item{CL:}{class (factor: preschool, 1st class, 2nd class)} \item{DEAD:}{\code{Date} of death (with missings)} \item{IFTO:}{number of patient who is the putative source of infection (0 = unknown)} \item{SI:}{serial interval = number of days between dates of prodromes of infection source and infected person} \item{C:}{complications (factor: no complicatons, bronchopneumonia, severe bronchitis, lobar pneumonia, pseudocroup, cerebral edema)} \item{PR:}{duration of prodromes in days} \item{CA:}{number of cases in family} \item{NI:}{number of initial cases} \item{GE:}{generation number of the case} \item{TD:}{day of max. fever (days after rush)} \item{TM:}{max. fever (degree celsius)} \item{x.loc:}{x coordinate of house (in meters). Scaling in metres is obtained by multiplying the original coordinates by 2.5 (see details in Neal and Roberts (2004))} \item{y.loc:}{y coordinate of house (in meters). See also the above description of \code{x.loc}.} \item{tPRO:}{Time of prodomes (first symptoms) in days after the start of the epidemic (30 Oct 1861).} \item{tERU:}{Time upon which the rash first appears.} \item{tDEAD:}{Time of death, if available.} \item{tR:}{Time at which the infectious period of the individual is assumed to end. This unknown time is calculated as \deqn{tR_i = \min{tDEAD_i,tERU_i+d_0},}{tR[i] = min(tDEAD[i],tERU[i]+d0),} where -- as in Section 3.1 of Neal and Roberts (2004) -- we use \eqn{d_0=3}{d0=3}.} \item{tI:}{Time at which the individual is assumed to become infectious. Actually this time is unknown, but we use \deqn{tI_i = tPRO_i - d_1,}{tI[i] = tPRO[i] - d1,} where \eqn{d_1=1}{d1=1} as in Neal and Roberts (2004).} } The time variables describe the transitions of the individual in an Susceptible-Infectious-Revovered (SIR) model. Note that in order to avoid ties in the event times resulting from daily interval censoring, the times have been jittered uniformly within the respective day. The time point 0.5 would correspond to noon of 30 Oct 1861. The \code{hagelloch} \code{"epidata"} object only retains some of the above covariates to save space. Apart from the usual \code{"epidata"} event columns, \code{hagelloch} contains a number of extra variables representing distance- and covariate-based weights for the force of infection. These have been computed by specifying \code{f} and \code{w} arguments in \code{\link{as.epidata}} at conversion (see the Examples below): \describe{ \item{household:}{the number of currently infectious children in the same household (including the child itself if it is currently infectious), corresponding to \code{function(u) u == 0} in \code{f}.} \item{nothousehold:}{the number of currently infectious children outside the household, corresponding to \code{function(u) u > 0} in \code{f}.} \item{c1, c2:}{the number of children infectious during the respective time block and being members of class 1 and 2, respectively; but the value is 0 if the individual of the row is not herself a member of the respective class. See the Examples below for the corresponding function definitions in \code{w}.} } } \source{ Thanks to Peter J. Neal, University of Manchester, for providing us with these data, which he again became from Niels Becker, Australian National University. To cite the data, the main references are Pfeilsticker (1863) and Oesterle (1992). } \examples{ data("hagelloch") head(hagelloch.df) # original data documented in Oesterle (1992) head(as.data.frame(hagelloch)) # derived "epidata" object ### How the "epidata" 'hagelloch' was created from 'hagelloch.df' stopifnot(all.equal(hagelloch, as.epidata( hagelloch.df, t0 = 0, tI.col = "tI", tR.col = "tR", id.col = "PN", coords.cols = c("x.loc", "y.loc"), f = list( household = function(u) u == 0, nothousehold = function(u) u > 0 ), w = list( c1 = function (CL.i, CL.j) CL.i == "1st class" & CL.j == CL.i, c2 = function (CL.i, CL.j) CL.i == "2nd class" & CL.j == CL.i ), keep.cols = c("SEX", "AGE", "CL")) )) ### Basic plots produced from hagelloch.df # Show case locations as in Neal & Roberts (different scaling) using # the data.frame (promoted to a SpatialPointsDataFrame) coordinates(hagelloch.df) <- c("x.loc","y.loc") plot(hagelloch.df, xlab="x [m]", ylab="x [m]", pch=15, axes=TRUE, cex=sqrt(multiplicity(hagelloch.df))) # Epicurve hist(as.numeric(hagelloch.df$tI), xlab="Time (days)", ylab="Cases", main="") ### SIR model information for population & individuals (s <- summary(hagelloch)) plot(s, col=c("green","red","darkgray")) stateplot(s, id=c("187")) \dontrun{ # Show a dynamic illustration of the spread of the infection animate(hagelloch,time.spacing=0.1,legend.opts=list(x="topleft"),sleep=1/100) } } \references{ Pfeilsticker, A. (1863). Beitr\enc{ä}{ae}ge zur Pathologie der Masern mit besonderer Ber\enc{ü}{ue}cksichtigung der statistischen Verh\enc{ä}{ae}ltnisse, M.D. Thesis, Eberhard-Karls-Universit\enc{ä}{ae}t T\enc{ü}{ue}bingen. Available as \url{http://www.archive.org/details/beitrgezurpatho00pfeigoog}. Oesterle, H. (1992). Statistische Reanalyse einer Masernepidemie 1861 in Hagelloch, M.D. Thesis, Eberhard-Karls-Universit\enc{ä}{ae}at T\enc{ü}{ue}bingen. Neal, P. J. and Roberts, G. O (2004). Statistical inference and model selection for the 1861 Hagelloch measles epidemic, Biostatistics 5(2):249-261 } \seealso{\code{\link{twinSIR}}, \code{\link{epidata}}} surveillance/man/hhh4_validation.Rd0000644000175100001440000003040612616414331017077 0ustar hornikusers\encoding{latin1} \name{hhh4_validation} \alias{oneStepAhead} \alias{scores} \alias{scores.oneStepAhead} \alias{scores.hhh4} \alias{calibrationTest.oneStepAhead} \alias{pit.oneStepAhead} \alias{pit.hhh4} \title{Predictive Model Assessment for \code{hhh4} Models} \description{ The function \code{oneStepAhead} computes successive one-step-ahead predictions for a (random effects) HHH model fitted by \code{\link{hhh4}}. The function \code{scores} computes a number of (strictly) proper scoring rules based on such one-step-ahead predictions (or, for the \code{hhh4}-method, directly based on the fitted values). See Paul and Held (2011) for further details. There are also \code{\link{calibrationTest}} and \code{\link{pit}} methods for \code{oneStepAhead} predictions. } \usage{ oneStepAhead(result, tp, type = c("rolling", "first", "final"), which.start = c("current", "final"), keep.estimates = FALSE, verbose = TRUE, cores = 1) scores(x, ...) \method{scores}{oneStepAhead}(x, which = c("logs", "rps", "dss", "ses"), units = NULL, sign = FALSE, individual = FALSE, reverse = TRUE, ...) \method{scores}{hhh4}(x, which = c("logs", "rps", "dss", "ses"), subset = x$control$subset, units = seq_len(x$nUnit), sign = FALSE, ...) \method{calibrationTest}{oneStepAhead}(x, ...) \method{pit}{oneStepAhead}(x, ...) \method{pit}{hhh4}(x, subset = x$control$subset, units = seq_len(x$nUnit), ...) } \arguments{ \item{result}{fitted \code{\link{hhh4}} model (class \code{"hhh4"}).} \item{tp}{numeric vector of length 1 or 2. One-step-ahead predictions are computed from time points \code{tp[1]}, \ldots, \code{tp[2]} (yielding predictions for time points \code{tp[1]+1}, ...), where \code{tp[2]} defaults to the penultimate time point of \code{result$control$subset}. } \item{type}{The default \code{"rolling"} procedure sequentially refits the model up to each time point in \code{tp} and computes the one-step-ahead predictions for the respective next time point. The alternative \code{type}s are no true one-step-ahead predictions but much faster: \code{"first"} will refit the model for the first time point \code{tp[1]} only and use this specific fit to calculate all subsequent predictions, whereas \code{"final"} will just use \code{result} to calculate these. The latter case thus gives nothing else than a subset of \code{result$fitted.values}, if the \code{tp}'s are part of the fitted subset \code{result$control$subset}.} \item{which.start}{ Which initial parameter values should be used when successively refitting the model to subsets of the data (up to time point \code{tp[1]}, up to \code{tp[1]+1}, ...) if \code{type="rolling"}? Default (\code{"current"}) is to use the parameter estimates from the previous time point, and \code{"final"} means to always use the estimates from \code{result} as initial values. Alternatively, \code{which.start} can be a list of \code{start} values as expected by \code{\link{hhh4}}, which then replace the corresponding estimates from \code{result} as initial values. This argument is ignored for \dQuote{non-rolling} \code{type}s. } \item{keep.estimates}{ logical indicating if parameter estimates and log-likelihoods from the successive fits should be returned. } \item{verbose}{ non-negative integer (usually in the range \code{0:3}) specifying the amount of tracing information to output. During \code{hhh4} model updates, the following verbosity is used: \code{0} if \code{cores > 1}, otherwise \code{verbose-1} if there is more than one time point to predict, otherwise \code{verbose}. } \item{cores}{the number of cores to use when computing the predictions for the set of time points \code{tp} in parallel (with \code{\link[parallel]{mclapply}}). Note that parallelization is not possible in the default setting \code{type="rolling"} and \code{which.start="current"} (use \code{which.start="final"} for this to work).} \item{x}{an object of class \code{"oneStepAhead"} or \code{"hhh4"}.} \item{which}{character vector determining which scores to compute. The package \pkg{surveillance} implements the following proper scoring rules: logarithmic score (\code{"logs"}), ranked probability score (\code{"rps"}), Dawid-Sebastiani score (\code{"dss"}), and squared error score (\code{"ses"}). The normalized SES (\code{"nses"}) is also available but it is improper and not computed by default.\cr It is possible to name own scoring rules in \code{which}. These must be functions of \code{(x, mu, size)}, vectorized in all arguments (time x unit matrices) except that \code{size} is \code{NULL} in case of a Poisson model. See the supplied scoring rules for guidance, e.g., \code{\link{logs}} or \code{\link{dss}}.} \item{subset}{ subset of time points for which to calculate the scores (or the PIT histogram). Defaults to the subset used for fitting the model.} \item{units}{integer or character vector indexing the units for which the scores (or the PIT histogram) should be computed. By default (\code{NULL}) all units are considered.} \item{sign}{logical indicating if the function should also return \code{sign(x-mu)}, i.e., the sign of the difference between the observed counts and corresponding predictions. This does not really make sense when averaging over multiple \code{units} with \code{individual=FALSE}.} \item{individual}{logical indicating if the individual scores of the \code{units} should be returned. By default (\code{FALSE}), the individual scores are averaged over all \code{units}.} \item{reverse}{logical indicating if the rows (time points) should be reversed in the result (historical default for the \code{oneStepAhead}-method).} \item{\dots}{Unused by the \code{scores}-methods.\cr For the \code{calibrationTest}-method, further arguments are passed to \code{\link{calibrationTest.default}}, e.g., \code{which} to select a scoring rule.\cr For the \code{pit}-methods, further arguments are passed to \code{\link{pit.default}}.} } \value{ \code{oneStepAhead} returns a list (of class \code{"oneStepAhead"}) with the following components: \item{pred}{one-step-ahead predictions in a matrix, where each row corresponds to one of the time points requested via the argument \code{tp}, and which has \code{ncol(result$stsObj)} unit-specific columns. The rownames indicate the predicted time points and the column names are identical to \code{colnames(result$stsObj)}.} \item{observed}{matrix with observed counts at the predicted time points. It has the same dimensions and names as \code{pred}.} \item{psi}{in case of a negative-binomial model, a matrix of the estimated overdispersion parameter(s) at each time point on the internal -log-scale (1 column if \code{"NegBin1"}, \code{ncol(observed)} columns if \code{"NegBinM"} or shared overdispersion). For a \code{"Poisson"} model, this component is \code{NULL}.} \item{allConverged}{logical indicating if all successive fits converged.} If \code{keep.estimates=TRUE}, there are the following additional elements: \item{coefficients}{matrix of estimated regression parameters from the successive fits.} \item{Sigma.orig}{matrix of estimated variance parameters from the successive fits.} \item{logliks}{matrix with columns \code{"loglikelihood"} and \code{"margll"} with their obvious meanings.} The function \code{scores} computes the scoring rules specified in the argument \code{which}. If multiple \code{units} are selected and \code{individual=TRUE}, the result is an array of dimensions \code{c(nrow(pred),length(units),5+sign)} (up to \pkg{surveillance} 1.8-0, the first two dimensions were collapsed to give a matrix). Otherwise, the result is a matrix with \code{nrow(pred)} rows and \code{5+sign} columns. If there is only one predicted time point, the first dimension is dropped in both cases. CAVE: For historical reasons, \code{scores.oneStepAhead} by default \code{reverse}s the order of the rows (time points)! The \code{hhh4}-method of \code{scores} does not reverse rows. The \code{\link{calibrationTest}}- and \code{\link{pit}}-methods are just convenient wrappers around the respective default methods. See also \code{\link{calibrationTest.hhh4}}. } \references{ Czado, C., Gneiting, T. and Held, L. (2009) Predictive model assessment for count data. Biometrics, \bold{65}, 1254--1261 Paul, M. and Held, L. (2011) Predictive assessment of a non-linear random effects model for multivariate time series of infectious disease counts. Statistics in Medicine, \bold{30}, 1118--1136 } \author{ Michaela Paul and Sebastian Meyer } \seealso{ \code{vignette("hhh4")} and \code{\link{hhh4}}. } \examples{ ### univariate salmonella agona data data("salmonella.agona") ## convert to sts class salmonella <- disProg2sts(salmonella.agona) ## generate formula for temporal and seasonal trends f.end <- addSeason2formula(f = ~1 + t, S=1, period=52) model1 <- list(ar = list(f=~1), end = list(f=f.end), family = "NegBin1") ## fit the model result <- hhh4(salmonella, model1) ## do sequential one-step-ahead predictions for the last 5 weeks pred <- oneStepAhead(result, nrow(salmonella)-5, type="rolling", which.start="final", verbose=FALSE) \dontshow{ ## test equivalence of parallelized version if (.Platform$OS.type == "unix" && isTRUE(parallel::detectCores() > 1)) stopifnot(identical(pred, oneStepAhead(result, nrow(salmonella)-5, type="rolling", which.start="final", verbose=FALSE, cores=2))) } ## oneStepAhead(..., type="final") just means fitted values stopifnot(identical( unname(oneStepAhead(result, nrow(salmonella)-5, type="final", verbose=FALSE)$pred), unname(tail(fitted(result), 5)))) ## compute scores (sc <- scores(pred, reverse = FALSE)) ## scores with respect to the fitted values are similar (scFitted <- scores(result, subset = nrow(salmonella)-c(4:0))) \dontshow{ ## test that scFitted is equivalent to scores(oneStepAhead(..., type = "final")) stopifnot(all.equal( scFitted, scores(oneStepAhead(result, nrow(salmonella)-5, type="final", verbose=FALSE), reverse = FALSE), check.attributes = FALSE)) } ## plot a (non-randomized) PIT histogram for the predictions with(pred, pit(x = observed, pdistr = "pnbinom", mu = pred, size = exp(psi))) \dontrun{ ###################################################################### # Do one-step-ahead predictions for the models from the Paul & Held # (2011) paper for the influenza data from Bavaria and Baden-Wuerttemberg # (this takes some time!) ###################################################################### ## see ?hhh4 for a specification of the models ## do 1-step ahead predictions for the last two years tp <- nrow(fluBYBW)-2*52 val_A0 <- oneStepAhead(res_A0,tp=tp) val_B0 <- oneStepAhead(res_B0,tp=tp) val_C0 <- oneStepAhead(res_C0,tp=tp) val_A1 <- oneStepAhead(res_A1,tp=tp) val_B1 <- oneStepAhead(res_B1,tp=tp) val_C1 <- oneStepAhead(res_C1,tp=tp) val_A2 <- oneStepAhead(res_A2,tp=tp) val_B2 <- oneStepAhead(res_B2,tp=tp) val_C2 <- oneStepAhead(res_C2,tp=tp) val_D <- oneStepAhead(res_D,tp=tp) ################################## ## compute scores ################################ #scores vals <- ls(pattern="val_") nam <- substring(vals,first=5,last=6) whichScores <- c("logs", "rps", "ses") scores_i <- list() meanScores <- NULL for(i in seq(along.with=vals)){ sc <- scores(get(vals[i]), which=whichScores, individual=TRUE) scores_i[[i]] <- sc meanScores <- rbind(meanScores,colMeans(sc, dims=2)) } names(scores_i) <- nam rownames(meanScores) <- nam ##comparison with best model B2 compareWithBest <- function(best, whichModels, nPermut=9999, seed=1234){ set.seed(seed) pVals <- NULL for(score in seq_along(whichScores)){ p <- c() for(model in whichModels){ if(model==best) p <- c(p,NA) else p <- c(p,permutationTest(scores_i[[model]][,,score],scores_i[[best]][,,score], plot=TRUE,nPermutation=nPermut, verbose=TRUE)$pVal.permut) } pVals <- cbind(pVals,p) } return(pVals) } pVals_flu <- compareWithBest(best=6, whichModels=1:10,seed=2059710987) rownames(pVals_flu) <- nam } } \keyword{ts} \keyword{regression} surveillance/man/twinstim_epitest.Rd0000644000175100001440000001654012532030036017441 0ustar hornikusers\name{twinstim_epitest} \alias{epitest} \alias{coef.epitest} \alias{plot.epitest} \title{Permutation Test for Space-Time Interaction in \code{"twinstim"}} \description{ The function \code{epitest} takes a simple epidemic \code{"twinstim"} model (one with \code{epidemic = ~1}) and tests if the spatio-temporal interaction invoked by the \code{epidemic} model component is statistically significant. } \usage{ epitest(model, data, tiles, method = "time", B = 199, eps.s = NULL, eps.t = NULL, fixed = NULL, verbose = TRUE, compress = FALSE, ...) \method{coef}{epitest}(object, which = c("m1", "m0"), ...) \method{plot}{epitest}(x, teststat = c("simpleR0", "D"), ...) } \arguments{ \item{model}{ a simple epidemic \code{"\link{twinstim}"} without covariates, i.e., \code{epidemic = ~1}. This is because covariate effects in the epidemic component are not well identified when there is no space-time interaction such as in the permuted data. Estimating a rich epidemic \code{model} under the null hypothesis of no space-time interaction will most likely result in singular convergence. } \item{data}{ an object of class \code{"\link{epidataCS}"}, the \code{data} to which the \code{model} was fitted. } \item{tiles}{ (only used by \code{method = "simulate"}) a \code{"\linkS4class{SpatialPolygons}"} representation of the \code{tile}s in \code{data$stgrid}. } \item{method}{ one of the following character strings specifying the test method: \describe{ \item{\code{"LRT"}:}{ a simple likelihood ratio test of the epidemic \code{model} against the corresponding endemic-only model, } \item{\code{"time"}/\code{"space"}:}{ a Monte Carlo permutation test where the null distribution is obtained by relabeling time points or locations, respectively (using \code{\link{permute.epidataCS}}). } \item{\code{"simulate"}:}{ obtain the null distribution of the test statistic by simulations from the endemic-only model (using \code{\link{simulate.twinstim}}). } } } \item{B}{ the number of permutations for the Monte Carlo approach. The default number is rather low; if computationally feasible, \code{B = 999} is more appropriate. Note that this determines the \dQuote{resolution} of the p-value: the smallest attainable p-value is \code{1/(B+1)}. } \item{eps.s,eps.t}{arguments for \code{\link{simpleR0}}.} \item{fixed}{ optional character vector naming parameters to fix at their original value when re-fitting the \code{model} on permuted data. The special value \code{fixed = TRUE} means to fix all epidemic parameters but the intercept. } \item{verbose}{ the amount of tracing in the range \code{0:3}. Set to 0 (or \code{FALSE}) for no output, 1 (or \code{TRUE}, the default) for a progress bar, 2 for the test statistics resulting from each permutation, and to 3 for additional tracing of the log-likelihood maximization in each permutation (not useful if parallelized). Tracing does not work if permutations are parallelized using clusters. See \code{\link{plapply}} for other choices. } \item{compress}{ logical indicating if the \code{nobs}-dependent elements \code{"fitted"}, \code{"fittedComponents"}, and \code{"R0"} should be dropped from the permutation-based model fits. Not keeping these elements saves a lot of memory especially with a large number of events. Note, however, that the returned \code{permfits} then no longer are fully valid \code{"twinstim"} objects (but most methods will still work). } \item{\dots}{further arguments for \code{\link{plapply}} to configure parallel operation, i.e., \code{.parallel} as well as \code{.seed} to make the results reproducible.\cr For the \code{plot}-method, further arguments passed to \code{\link{truehist}}.\cr Ignored by the \code{coef}-method. } \item{object,x}{ an object of class \code{"epitest"} as returned by \code{epitest}. } \item{which}{ a character string indicating either the full (\code{"m1"}, default) or the endemic-only (\code{"m0"}) model. } \item{teststat}{ a character string determining the test statistic to plot, either \code{"\link{simpleR0}"} or \code{"D"} (twice the log-likelihood difference of the models). } } \value{ a list (inheriting from \code{"htest"}) with the following components: \item{method}{a character string indicating the type of test performed.} \item{data.name}{a character string giving the supplied \code{data} and \code{model} arguments.} \item{statistic}{the observed test statistic.} \item{parameter}{the (effective) number of permutations used to calculate the p-value (only those with convergent fits are used).} \item{p.value}{the p-value for the test. For the \code{method}s involving resampling under the null (\code{method != "LRT"}), it is based on the subset of convergent fits only and the p-value from the simple LRT is attached as an attribute \code{"LRT"}.} In addition, if \code{method != "LRT"}, the result will have the following elements: \item{permfits}{the list of model fits (endemic-only and epidemic) from the \code{B} permutations.} \item{permstats}{a data frame with \code{B} rows and the columns \code{"l0"} (log-likelihood of the endemic-only model \code{m0}), \code{"l1"} (log-likelihood of the epidemic model \code{m1}), \code{"D"} (twice their difference), \code{"simpleR0"} (the results of \code{\link{simpleR0}(m1, eps.s, eps.t)}), and \code{"converged"} (a boolean indicator if both models converged).} The \code{plot}-method invisibly returns \code{NULL}. The \code{coef}-method returns the \code{B} x \code{length(coef(model))} matrix of parameter estimates. } \details{ The test statistic is the reproduction number \code{\link{simpleR0}}. A likelihood ratio test of the supplied epidemic model against the corresponding endemic-only model is also available. The null distribution of the test statistic is obtained by a Monte Carlo permutation approach (via \code{\link{permute.epidataCS}}) similar to the \code{\link{knox}} test. The \code{plot}-method shows a \code{\link{truehist}} of the simulated null distribution together with the observed value. The \code{coef}-method extracts the parameter estimates from the \code{B} \code{permfits} (by default for the full model \code{which = "m1"}). } \author{ Sebastian Meyer } \seealso{ \code{\link{permute.epidataCS}}, \code{\link{knox}} } \examples{ data("imdepi") data("imdepifit") ## test for space-time interaction of the B-cases ## assuming spatial interaction to be constant within 50 km imdepiB50 <- update(subset(imdepi, type == "B"), eps.s = 50) imdfitB50 <- update(imdepifit, data = imdepiB50, epidemic = ~1, epilink = "identity", siaf = NULL, control.siaf = NULL, start = c("e.(Intercept)" = 1e-6)) ## simple likelihood ratio test epitest(imdfitB50, imdepiB50, method = "LRT") ## permutation test (only few permutations for speed, in parallel) et <- epitest(imdfitB50, imdepiB50, B = 4 + 25*surveillance.options("allExamples"), verbose = 2 * (.Platform$OS.type == "unix"), .seed = 1, .parallel = 2) et plot(et) summary(coef(et)) } \keyword{htest} surveillance/man/stcd.Rd0000644000175100001440000000733312014370051014762 0ustar hornikusers\name{stcd} \alias{stcd} \encoding{latin1} \title{Spatio-temporal cluster detection} \description{ Shiryaev-Roberts based prospective spatio-temporal cluster detection as in Assuncao & Correa (2009). } \usage{ stcd(x, y,t,radius,epsilon,areaA, areaAcapBk, threshold, cusum=FALSE) } \arguments{ \item{x}{Vector containing spatial x coordinate of the events.} \item{y}{Vector containing spatial y coordinate of the events.} \item{t}{Vector containing the time points of the events. It is assumed that the vector is sorted (early->last).} \item{radius}{Radius of the cluster to detect.} \item{epsilon}{Relative change of event-intensity within the cluster to detect. See reference paper for an explicit definition.} \item{areaA}{Area of the observation region A (single number) -- This argument is currently ignored!} \item{areaAcapBk}{Area of A \ B(s_k,rho) for all k=1,\ldots,n (vector). This argument is currently ignored!} \item{threshold}{Threshold limit for the alarm and should be equal to the desired Average-Run-Length (ARL) of the detector.} \item{cusum}{(logical) If \code{FALSE} (default) then the Shiryaev-Roberts detector is used as in the original article by Assuncao & Correa (2009), i.e. \eqn{R_n = \sum_{k=1}^n \Lambda_{k,n}}, where \eqn{\Lambda_{k,n}} denotes the likelihood ratio between the in-control and out-of control model. If \code{TRUE}, CUSUM test statistic is used instead. Here, \deqn{R_n = \max_{1\leq k \leq n} \Lambda_{k,n}}. Note that this has implications on what threshold will sound the alarm (CUSUM threshold needs to be smaller).} } \details{ Shiryaev-Roberts based spatio-temporal cluster detection based on the work in Assuncao and Correa (2009). The implementation is based on C++ code originally written by Marcos Oliveira Prates, UFMG, Brazil and provided by Thais Correa, UFMG, Brazil during her research stay in Munich. This stay was financially supported by the Munich Center of Health Sciences. Note that the vectors \code{x}, \code{y} and \code{t} need to be of the same length. Furthermore, the vector \code{t} needs to be sorted (to improve speed, the latter is not verified within the function). The current implementation uses a call to a C++ function to perform the actual computations of the test statistic. The function is currently experimental -- data type and results may be subject to changes. } \value{A list with three components \item{R}{A vector of the same length as the input containing the value of the test statistic for each observation.} \item{idxFA}{Index in the x,y,t vector causing a possible alarm. If no cluster was detected, then a value of \code{-1} is returned here.} \item{idxCC}{index in the x,y,t vector of the event containing the cluster. If no cluster was detected, then a value of \code{-1} is returned here.} } \references{ Assuncao, R. and Correa, T. (2009), Surveillance to detect emerging space-time clusters, Computational Statistics & Data Analysis, 53(8):2817-2830. } \examples{ if (require("splancs")) { # load the data from package "splancs" data(burkitt, package="splancs") # order the times burkitt <- burkitt[order(burkitt$t), ] #Parameters for the SR detection epsilon <- 0.5 # relative change within the cluster radius <- 20 # radius threshold <- 161 # threshold limit res <- stcd(x=burkitt$x, y=burkitt$y, t=burkitt$t, radius=radius, epsilon=epsilon, areaA=1, areaAcapBk=1, threshold=threshold) #Index of the event which.max(res$R >= threshold) } } \author{M. O. Prates, T. Correa and M. \enc{Höhle}{Hoehle}} \keyword{cluster} surveillance/man/algo.outbreakP.Rd0000644000175100001440000001234012564314555016715 0ustar hornikusers\encoding{latin1} \name{algo.outbreakP} \alias{algo.outbreakP} \alias{calc.outbreakP.statistic} \title{Semiparametric surveillance of outbreaks} \description{ Frisen and Andersson (2009) method for semiparametric surveillance of outbreaks } \usage{ algo.outbreakP(disProgObj, control = list(range = range, k=100, ret=c("cases","value"),maxUpperboundCases=1e5)) } \arguments{ \item{disProgObj}{object of class disProg (including the observed and the state chain).} \item{control}{A list controlling the behaviour of the algorithm \describe{ \item{\code{range}}{determines the desired time-points which should be monitored. Note that it is automatically assumed that ALL other values in \code{disProgObj} can be used for the estimation, i.e. for a specific value \code{i} in \code{range} all values from 1 to \code{i} are used for estimation.} \item{\code{k}}{The threshold value. Once the outbreak statistic is above this threshold \code{k} an alarm is sounded.} \item{\code{ret}}{a string specifying the type of \code{upperbound}-statistic that is returned. With \code{"cases"} the number of cases that would have been necessary to produce an alarm (NNBA) or with \code{"value"} the outbreakP-statistic is computed (see below).} \item{\code{maxUpperboundCases}}{Upperbound when numerically searching for NNBA. Default is 1e5.} } } } \value{ \item{survRes}{ \code{algo.outbreakP} gives a list of class \code{survRes} which includes the vector of alarm values for every time-point in \code{range}, the vector of threshold values for every time-point in \code{range}. } } \details{ A generalized likelihood ratio test based on the Poisson distribution is implemented where the means of the in-control and out-of-control states are computed by isotonic regression. \deqn{OutbreakP(s) = \prod_{t=1}^s \left( \frac{\hat{\mu}^{C1}(t)}{\hat{\mu}^D(t)} \right)^{x(t)} }, where \eqn{\hat{\mu}^{C1}(t)} is the estimated mean obtained by uni-modal regression under the assumption of one change-point and \eqn{\hat{\mu}^D(t)} is the estimated result when there is no change-point (i.e. this is just the mean of all observations). Note that the contrasted hypothesis assume all means are equal until the change-point, i.e. this detection method is especially suited for detecting a shift from a relative constant mean. Hence, this is less suited for detection in diseases with strong seasonal endemic component. Onset of influenza detection is an example where this method works particular well. In case \code{control$ret == "cases"} then a brute force numerical search for the number needed before alarm (NNBA) is performed. That is, given the past observations, whats the minimum number which would have caused an alarm? Note: Computing this might take a while because the search is done by sequentially increasing/decreasing the last observation by one for each time point in \code{control$range} and then calling the workhorse function of the algorithm again. The argument \code{control$maxUpperboundCases} controls the upper limit of this search (default is 1e5). Currently, even though the statistic has passed the threshold, the NNBA is still computed. After a few time instances what typically happens is that no matter the observed value we would have an alarm at this time point. In this case the value of NNBA is set to \code{NA}. Furthermore, the first time point is always \code{NA}, unless \code{k<1}. } \source{ The code is an extended R port of the Java code by Marianne \enc{Frisén}{Frisen} and Linus \enc{Schiöler}{Schioeler} from the CASE project available under the GNU GPL License v3. See \url{https://case.folkhalsomyndigheten.se/} for further details on the CASE project. A manual on how to use an Excel implementation of the method is available at \url{http://economics.handels.gu.se/english/Units+and+Centra/statistical_research_unit/software}. An additional feature of the R code is that it contains a search for NNBA (see details). } \author{M. \enc{Höhle}{Hoehle} -- based on Java code by M. Frisen and L. \enc{Schiöler}{Schioeler}} \references{ \enc{Frisén}{Frisen}, M., Andersson and \enc{Schiöler}{Schioeler}, L., (2009), Robust outbreak surveillance of epidemics in Sweden, Statistics in Medicine, 28(3):476-493. \enc{Frisén}{Frisen}, M. and Andersson, E., (2009) Semiparametric Surveillance of Monotonic Changes, Sequential Analysis 28(4):434-454. } \examples{ #Use data from outbreakP manual (http://www.hgu.gu.se/item.aspx?id=16857) y <- matrix(c(1,0,3,1,2,3,5,4,7,3,5,8,16,23,33,34,48),ncol=1) #Generate sts object with these observations mysts <- new("sts", observed=y, epoch=1:length(y), alarm=y*0, start=c(2000,1), freq=52) #Run the algorithm and present results #Only the value of outbreakP statistic upperbound(outbreakP(mysts, control=list(range=1:length(y),k=100, ret="value"))) #Graphical illustration with number-needed-before-alarm (NNBA) upperbound. res <- outbreakP(mysts, control=list(range=1:length(y),k=100, ret="cases")) plot(res,dx.upperbound=0,lwd=c(1,1,3),legend.opts=list(legend=c("Infected", "NNBA","Outbreak","Alarm"),horiz=TRUE)) } \keyword{classif} surveillance/man/toLatex.sts.Rd0000644000175100001440000000435412362267150016270 0ustar hornikusers\name{toLatex.sts} \alias{toLatex.sts} \alias{toLatex,sts-method} \alias{toLatex,list-method} \encoding{latin1} \title{\code{toLatex}-Method for (lists of) \code{"sts"} Objects} \description{ Convert \code{"\linkS4class{sts}"} objects to a character vector with LaTeX markup. } \usage{ \S4method{toLatex}{sts}(object, caption = "",label=" ", columnLabels = NULL, subset = NULL, alarmPrefix = "\\\\textbf{\\\\textcolor{red}{", alarmSuffix = "}}", ubColumnLabel = "UB", ...) } \arguments{ \item{object}{an \code{"\linkS4class{sts}"} object.} \item{caption}{A caption for the table. Default is the empty string.} \item{label}{A label for the table. Default is the empty string.} \item{columnLabels}{A list of labels for each column of the resulting table. Default is NULL} \item{subset}{A range of values which should be displayed. If Null, then all data in the sts objects will be displayed. Else only a subset of data. Therefore range needs to be a numerical vector of indexes from 1 to length(@observed).} \item{alarmPrefix}{A latex compatible prefix string wrapped around a table cell iff there is an alarm;i.e. alarm = TRUE} \item{alarmSuffix}{A latex compatible suffix string wrapped around a table cell iff there is an alarm;i.e. alarm[i,j] = TRUE} \item{ubColumnLabel}{The label of the upper bound column; default is \"UB\".} \item{\dots}{further arguments passed to \code{\link{print.xtable}}.} } %% \details{ %% FIXME %% } \value{ An object of class \code{\link[=toLatex]{"Latex"}}. } \examples{ # Create a test object data("salmonella.agona") # Create the corresponding sts object from the old disProg object salm <- disProg2sts(salmonella.agona) control <- list(range=(260:312), noPeriods=1,populationOffset=FALSE, fitFun="algo.farrington.fitGLM.flexible", b=4,w=3,weightsThreshold=1, pastWeeksNotIncluded=3, pThresholdTrend=0.05,trend=TRUE, thresholdMethod="delta",alpha=0.1) salm <- farringtonFlexible(salm,control=control) print(toLatex(salm)) } \author{Dirk Schumacher} \keyword{print} surveillance/man/hhh4.Rd0000644000175100001440000004324612602556322014675 0ustar hornikusers\encoding{latin1} \name{hhh4} \alias{hhh4} \title{Fitting HHH Models with Random Effects and Neighbourhood Structure} \description{ Fits a Poisson or negative binomial model with conditional mean \deqn{\mu_{it} = \lambda_{it} y_{i,t-1} + \phi_{it} \sum_{j\neq i} w_{ji} y_{j,t-1} + e_{it} \nu_{it} }{% \mu_it = \lambda_it y_i,t-1 + \phi_it sum_(j != i) w_ji y_j,t-1 + e_it \nu_it } containing epidemic and endemic components to a multivariate time series of counts \eqn{Y_{it}}{Y_it} (unit \eqn{i}, period \eqn{t}). Univariate count time series are supported as well. In the case of a negative binomial model, the conditional variance is \eqn{\mu_{it}(1+\psi\mu_{it})}{\mu_it(1+\psi*\mu_it)} with overdispersion parameter \eqn{\psi}. The three unknown quantities of the mean \eqn{\mu_{it}}{\mu_it}, \itemize{ \item \eqn{\lambda_{it}}{\lambda_it} in the autoregressive (\code{ar}) component, \item \eqn{\phi_{it}}{\phi_it} in the neighbor-driven (\code{ne}) component, and \item \eqn{\nu_{it}}{\nu_it} in the endemic (\code{end}) component, } are log-linear predictors incorporating time-/unit-specific covariates. They may contain unit-specific random intercepts (\code{\link{ri}}) as proposed by Paul and Held (2011). The \eqn{e_{it}}{e_it} is a (multiplicative) endemic offset; it is also possible to include such offsets in the epidemic components. The \eqn{w_{ji}}{w_ji} are neighbourhood weights, which can either be prespecified or estimated parametrically as proposed by Meyer and Held (2014). } \usage{ hhh4(stsObj, control = list( ar = list(f = ~ -1, offset = 1, lag = 1), ne = list(f = ~ -1, offset = 1, lag = 1, weights = neighbourhood(stsObj) == 1, scale = NULL, normalize = FALSE), end = list(f = ~ 1, offset = 1), family = c("Poisson", "NegBin1", "NegBinM"), subset = 2:nrow(stsObj), optimizer = list(stop = list(tol=1e-5, niter=100), regression = list(method="nlminb"), variance = list(method="nlminb")), verbose = FALSE, start = list(fixed=NULL, random=NULL, sd.corr=NULL), data = list(t = stsObj@epoch - min(stsObj@epoch)), keep.terms = FALSE ), check.analyticals = FALSE) } \arguments{ \item{stsObj}{object of class \code{"\linkS4class{sts}"} containing the (multivariate) count data time series.} \item{control}{a list containing the model specification and control arguments: \describe{ \item{\code{ar}}{Model for the autoregressive component given as list with the following components: \describe{ \item{f = ~ -1}{a formula specifying \eqn{\log(\lambda_{it})}{log(\lambda_it)}} \item{offset = 1}{optional multiplicative offset, either 1 or a matrix of the same dimension as \code{observed(stsObj)}} \item{lag = 1}{a positive integer meaning autoregression on \eqn{y_{i,t-lag}}} } } \item{\code{ne}}{Model for the neighbor-driven component given as list with the following components: \describe{ \item{f = ~ -1}{a formula specifying \eqn{\log(\phi_{it})}{log(\phi_it)}} \item{offset = 1}{optional multiplicative offset, either 1 or a matrix of the same dimension as \code{observed(stsObj)}} \item{lag = 1}{a non-negative integer meaning dependency on \eqn{y_{j,t-lag}}} \item{weights = neighbourhood(stsObj) == 1}{ neighbourhood weights \eqn{w_{ji}}{w_ji}. The default corresponds to the original formulation by Held et al (2005), i.e., the spatio-temporal component incorporates an unweighted sum over the lagged cases of the first-order neighbours. See Paul et al (2008) and Meyer and Held (2014) for alternative specifications, e.g., \code{\link{W_powerlaw}}. Time-varying weights are possible by specifying an array of \code{dim()} \code{c(nUnits, nUnits, nTime)}, where \code{nUnits=ncol(stsObj)} and \code{nTime=nrow(stsObj)}.} \item{scale = NULL}{ optional matrix of the same dimensions as \code{weights} (or a vector of length \code{ncol(stsObj)}) to scale the \code{weights} to \code{scale * weights}. } \item{normalize = FALSE}{ logical indicating if the (scaled) \code{weights} should be normalized such that each row sums to 1. } } } \item{\code{end}}{Model for the endemic component given as list with the following components \describe{ \item{f = ~ 1}{a formula specifying \eqn{\log(\nu_{it})}{log(\nu_it)}} \item{offset = 1}{optional multiplicative offset \eqn{e_{it}}{e_it}, either 1 or a matrix of the same dimension as \code{observed(stsObj)}} } } \item{\code{family}}{Distributional family -- either \code{"Poisson"}, or the Negative Binomial distribution. For the latter, the overdispersion parameter can be assumed to be the same for all units (\code{"NegBin1"}), to vary freely over all units (\code{"NegBinM"}), or to be shared by some units (specified by a factor of length \code{ncol(stsObj)} such that its number of levels determines the number of overdispersion parameters). Note that \code{"NegBinM"} is equivalent to \code{factor(colnames(stsObj), levels = colnames(stsObj))}. } \item{\code{subset}}{Typically \code{2:nrow(obs)} if model contains autoregression} \item{\code{optimizer}}{a list of three lists of control arguments. The \code{"stop"} list specifies two criteria for the outer optimization of regression and variance parameters: the relative \code{tol}erance for parameter change using the criterion \code{max(abs(x[i+1]-x[i])) / max(abs(x[i]))}, and the maximum number \code{niter} of outer iterations. Control arguments for the single optimizers are specified in the lists named \code{"regression"} and \code{"variance"}. \code{method="nlminb"} is the default optimizer for both (taking advantage of the analytical Fisher information matrices), however, the \code{method}s from \code{\link{optim}} may also be specified (as well as \code{"\link{nlm}"} but that one is not recommended here). Especially for the variance updates, Nelder-Mead optimization (\code{method="Nelder-Mead"}) is an attractive alternative. All other elements of these two lists are passed as \code{control} arguments to the chosen \code{method}, e.g., if \code{method="nlminb"} adding \code{iter.max=50} increases the maximum number of inner iterations from 20 (default) to 50. } \item{\code{verbose}}{non-negative integer (usually in the range \code{0:3}) specifying the amount of tracing information to be output during optimization.} \item{\code{start}}{a list of initial parameter values replacing initial values set via \code{\link{fe}} and \code{\link{ri}}. Since \pkg{surveillance} 1.8-2, named vectors are matched against the coefficient names in the model (where unmatched start values are silently ignored), and need not be complete, e.g., \code{start = list(fixed = c("-log(overdisp)" = 0.5))} (default: 2) for a \code{family = "NegBin1"} model. In contrast, an unnamed start vector must specify the full set of parameters as used by the model.} \item{\code{data}}{a named list of covariates that are to be included as fixed effects (see \code{\link{fe}}) in any of the 3 component formulae. By default, the time variable \code{t} is available and used for seasonal effects created by \code{\link{addSeason2formula}}. In general, covariates in this list can be either vectors of length \code{nrow(stsObj)} interpreted as time-varying but common across all units, or matrices of the same dimension as the disease counts \code{observed(stsObj)}.} \item{\code{keep.terms}}{logical indicating if the terms object used in the fit is to be kept as part of the returned object. This is usually not necessary, since the terms object is reconstructed by the \code{\link{terms}}-method for class \code{"hhh4"} if necessary (based on \code{stsObj} and \code{control}, which are both part of the returned \code{"hhh4"} object).} } } \item{check.analyticals}{logical (or a subset of \code{c("numDeriv", "maxLik")}), indicating if (how) the implemented analytical score vector and Fisher information matrix should be checked against numerical derivatives at the parameter starting values, using the packages \pkg{numDeriv} and/or \pkg{maxLik}. If activated, \code{hhh4} will return a list containing the analytical and numerical derivatives for comparison (no ML estimation will be performed). This is mainly intended for internal use by the package developers.} } \value{ \code{hhh4} returns an object of class \code{"hhh4"}, which is a list containing the following components: \item{coefficients}{named vector with estimated (regression) parameters of the model} \item{se}{estimated standard errors (for regression parameters)} \item{cov}{covariance matrix (for regression parameters)} \item{Sigma}{estimated variance-covariance matrix of random effects} \item{Sigma.orig}{estimated variance parameters on internal scale used for optimization} \item{Sigma.cov}{inverse of marginal Fisher information (on internal scale), i.e., the asymptotic covariance matrix of \code{Sigma.orig}} \item{call}{ the matched call } \item{dim}{ vector with number of fixed and random effects in the model } \item{loglikelihood}{(penalized) loglikelihood evaluated at the MLE} \item{margll}{ (approximate) log marginal likelihood should the model contain random effects } \item{convergence}{logical. Did optimizer converge?} \item{fitted.values}{fitted mean values \eqn{\mu_{i,t}}{\mu_it}} \item{control}{control object of the fit} \item{terms}{the terms object used in the fit if \code{keep.terms = TRUE} and \code{NULL} otherwise} \item{stsObj}{ the supplied \code{stsObj} } \item{lags}{named integer vector of length two containing the lags used for the epidemic components \code{"ar"} and \code{"ne"}, respectively. The corresponding lag is \code{NA} if the component was not included in the model.} \item{nObs}{number of observations used for fitting the model} \item{nTime}{ number of time points used for fitting the model } \item{nUnit}{ number of units (e.g. areas) used for fitting the model} \item{runtime}{the \code{\link{proc.time}}-queried time taken to fit the model, i.e., a named numeric vector of length 5 of class \code{"proc_time"}} } \details{ For further details see \code{vignette("hhh4")} and the references. } \seealso{ \code{\link{algo.hhh}}, \code{\link{fe}}, \code{\link{ri}} } \author{M. Paul, S. Meyer, and L. Held} \examples{ ##################################################################### # Fit some models from ?algo.hhh ##################################################################### ## univariate salmonella agona data data(salmonella.agona) # convert to sts class salmonella <- disProg2sts(salmonella.agona) # generate formula for temporal and seasonal trends f.end <- addSeason2formula(f = ~ 1 + t, S=1, period=52) model1 <- list(ar = list(f = ~ 1), end = list(f =f.end), family = "NegBin1") # run model res <- hhh4(salmonella, model1) summary(res, idx2Exp=1, amplitudeShift=TRUE) ## multivariate time series: # measles cases in Lower Saxony, Germany data(measles.weser) measles <- disProg2sts(measles.weser) # same model as above summary(hhh4(measles, control=model1)) # now use region-specific intercepts in endemic component f.end2 <- addSeason2formula(f = ~ -1 + fe(1, unitSpecific = TRUE) + t, S = 1, period = 52) model2 <- list(ar = list(f = ~ 1), end = list(f = f.end2, offset = population(measles)), family = "NegBin1") # run model summary(hhh4(measles, control=model2), idx2Exp=1, amplitudeShift=TRUE) # include autoregressive parameter phi for adjacent "Kreise" # no linear trend in endemic component f.end3 <- addSeason2formula(f = ~ -1 + fe(1, unitSpecific = TRUE), S = 1, period = 52) model3 <- list(ar = list(f = ~ 1), ne = list(f = ~ 1), end = list(f = f.end3, offset = population(measles)), family = "NegBin1") # run model res3 <- hhh4(measles, control=model3) summary(res3, idx2Exp=1:2, amplitudeShift=TRUE) \dontshow{ ## check that neighbourhood weights array yields same result .neweights <- array(neighbourhood(measles), dim = c(rep(ncol(measles),2),nrow(measles)), dimnames = c(dimnames(neighbourhood(measles)), list(NULL))) res3_tv <- hhh4(measles, control = modifyList(model3, list(ne=list(weights=.neweights)))) stopifnot(all.equal(res3, res3_tv, ignore = "control")) } \dontrun{ ###################################################################### # Fit the models from the Paul & Held (2011) paper for the influenza data # from Bavaria and Baden-Wuerttemberg (this takes some time!) # For further documentation see also the vignette. ###################################################################### data("fluBYBW") ############################################################### ## generate formula for temporal and seasonal trends f.end <- addSeason2formula(f = ~ -1 + ri(type="iid", corr="all") + I((t-208)/100), S=3, period=52) ## details for optimizer opt <- list(stop = list(tol=1e-5, niter=200), regression = list(method="nlminb"), variance = list(method="nlminb")) ########################## ## models # A0 cntrl_A0 <- list(ar = list(f = ~ -1), end = list(f =f.end, offset = population(fluBYBW)), family = "NegBin1", optimizer = opt, verbose = 1) summary(res_A0 <- hhh4(fluBYBW,cntrl_A0)) # B0 cntrl_B0 <- list(ar = list(f = ~ 1), end = list(f =f.end, offset = population(fluBYBW)), family = "NegBin1", optimizer = opt, verbose=1) res_B0 <- hhh4(fluBYBW,cntrl_B0) # C0 cntrl_C0 <- list(ar = list(f = ~ -1 + ri(type="iid", corr="all")), end = list(f =f.end, offset = population(fluBYBW)), family = "NegBin1", optimizer = opt, verbose=1) res_C0 <- hhh4(fluBYBW,cntrl_C0) #A1 # weight matrix w_ji = 1/(No. neighbors of j) if j ~ i, and 0 otherwise wji <- neighbourhood(fluBYBW)/rowSums(neighbourhood(fluBYBW)) cntrl_A1 <- list(ar = list(f = ~ -1), ne = list(f = ~ 1, weights = wji), end = list(f =f.end, offset = population(fluBYBW)), family = "NegBin1", optimizer = opt, verbose=1) res_A1 <- hhh4(fluBYBW,cntrl_A1) # B1 cntrl_B1 <- list(ar = list(f = ~ 1), ne = list(f = ~ 1, weights = wji), end = list(f =f.end, offset = population(fluBYBW)), family = "NegBin1", optimizer = opt, verbose=1) res_B1 <- hhh4(fluBYBW,cntrl_B1) # C1 cntrl_C1 <- list(ar = list(f = ~ -1 + ri(type="iid", corr="all")), ne = list(f = ~ 1, weights = wji), end = list(f =f.end, offset = population(fluBYBW)), family = "NegBin1", optimizer = opt, verbose=1) res_C1 <- hhh4(fluBYBW,cntrl_C1) #A2 cntrl_A2 <- list(ar = list(f = ~ -1), ne = list(f = ~ -1 + ri(type="iid",corr="all"), weights=wji), end = list(f =f.end, offset = population(fluBYBW)), family = "NegBin1", optimizer = opt, verbose=1) res_A2 <- hhh4(fluBYBW,cntrl_A2) # B2 cntrl_B2 <- list(ar = list(f = ~ 1), ne = list(f = ~ -1 + ri(type="iid",corr="all"), weights =wji), end = list(f =f.end, offset = population(fluBYBW)), family = "NegBin1", optimizer = opt, verbose=1) res_B2 <- hhh4(fluBYBW,cntrl_B2) # C2 cntrl_C2 <- list(ar = list(f = ~ -1 + ri(type="iid", corr="all")), ne = list(f = ~ -1 + ri(type="iid",corr="all"), weights =wji), end = list(f =f.end, offset = population(fluBYBW)), family = "NegBin1", optimizer = opt, verbose=1, start=list(fixed=fixef(res_B0),random=c(rep(0,140), ranef(res_B0)), sd.corr=c(-.5,res_B0$Sigma.orig,0))) res_C2 <- hhh4(fluBYBW,cntrl_C2) # D cntrl_D <- list(ar = list(f = ~ 1), ne = list(f = ~ -1 + ri(type="iid"), weights = wji), end = list(f =addSeason2formula(f = ~ -1 + ri(type="car") + I((t-208)/100), S=3, period=52), offset = population(fluBYBW)), family = "NegBin1", optimizer = opt, verbose=1) res_D <- hhh4(fluBYBW,cntrl_D) } } \references{ Held, L., \enc{Höhle}{Hoehle}, M., Hofmann, M. (2005): A statistical framework for the analysis of multivariate infectious disease surveillance counts. \emph{Statistical Modelling}, \bold{5}, 187--199. Paul, M., Held, L. and Toschke, A. M. (2008): Multivariate modelling of infectious disease surveillance data. \emph{Statistics in Medicine}, \bold{27}, 6250--6267. Paul, M. and Held, L. (2011): Predictive assessment of a non-linear random effects model for multivariate time series of infectious disease counts. \emph{Statistics in Medicine}, \bold{30}, 1118--1136 Held, L. and Paul, M. (2012): Modeling seasonality in space-time infectious disease surveillance data. \emph{Biometrical Journal}, \bold{54}, 824--843 Meyer, S. and Held, L. (2014): Power-law models for infectious disease spread. \emph{The Annals of Applied Statistics}, \bold{8} (3), 1612-1639.\cr DOI-Link: \url{http://dx.doi.org/10.1214/14-AOAS743} } \keyword{ts} \keyword{regression} surveillance/man/unionSpatialPolygons.Rd0000644000175100001440000000435012437321406020233 0ustar hornikusers\name{unionSpatialPolygons} \alias{unionSpatialPolygons} \title{ Compute the Unary Union of \code{"SpatialPolygons"} } \description{ Union all subpolygons of a \code{"\link[sp:SpatialPolygons-class]{SpatialPolygons}"} object. This is a wrapper for the polygon clipping engines implemented by packages \pkg{rgeos}, \pkg{polyclip}, or \pkg{gpclib}. } \usage{ unionSpatialPolygons(SpP, method = c("rgeos", "polyclip", "gpclib"), ...) } \arguments{ \item{SpP}{ an object of class \code{"\link[sp:SpatialPolygons-class]{SpatialPolygons}"}. For the \pkg{polyclip} \code{method} only, all polygon classes for which an \code{\link{xylist}}-method exists should work as input. } \item{method}{ polygon clipping machinery to use. Default is to simply call \code{\link[rgeos]{gUnaryUnion}} in package \pkg{rgeos}. For \code{method="polyclip"}, function \code{\link[polyclip]{polyclip}} from package \pkg{polyclip} is used, whereas \code{method="gpclib"} calls \code{\link[maptools]{unionSpatialPolygons}} in package \pkg{maptools} (and requires acceptance of \pkg{gpclib}'s restricted license via \code{\link{surveillance.options}(gpclib=TRUE)}). } \item{\dots}{further arguments passed to the chosen \code{method}.} } \value{ an object of class \code{"\link[sp:SpatialPolygons-class]{SpatialPolygons}"} representing the union of all subpolygons. } \author{ Sebastian Meyer } \seealso{ \code{\link[rgeos]{gUnaryUnion}} in package \pkg{rgeos}, \code{\link[polyclip]{polyclip}} in package \pkg{polyclip}, \code{\link[maptools]{unionSpatialPolygons}} in package \pkg{maptools} (for using \code{\link[gpclib:gpc.poly-class]{union}} of package \pkg{gpclib}). } \examples{ ## Load districts of Germany load(system.file("shapes", "districtsD.RData", package = "surveillance")) plot(districtsD, border = "gray") ## Union these districts using either "rgeos" or "polyclip" if (requireNamespace("rgeos")) { stateD <- unionSpatialPolygons(districtsD, method = "rgeos") plot(stateD, add = TRUE, border = 2, lwd = 2) } if (requireNamespace("polyclip")) { stateD_pc <- unionSpatialPolygons(districtsD, method = "polyclip") plot(stateD_pc, add = TRUE, border = 1, lwd = 2, lty = 2) } } \keyword{spatial} surveillance/man/algo.cdc.Rd0000644000175100001440000000647712307672335015526 0ustar hornikusers\name{algo.cdc} \alias{algo.cdcLatestTimepoint} \alias{algo.cdc} \encoding{latin1} \title{The CDC Algorithm} \description{ Surveillance using the CDC Algorithm } \usage{ algo.cdcLatestTimepoint(disProgObj, timePoint = NULL, control = list(b = 5, m = 1, alpha=0.025)) algo.cdc(disProgObj, control = list(range = range, b= 5, m=1, alpha = 0.025)) } \arguments{ \item{disProgObj}{object of class disProg (including the observed and the state chain).} \item{timePoint}{time point which shoud be evaluated in \code{algo.cdcLatestTimepoint}. The default is to use the latest timepoint.} \item{control}{control object: \code{range} determines the desired timepoints which should be evaluated, \code{b} describes the number of years to go back for the reference values, \code{m} is the half window width for the reference values around the appropriate timepoint (see details). The standard definition is \code{b}=5 and \code{m}=1. } } % \details{ % Using the reference values for calculating an upper limit, alarm is given if the actual value is bigger than a computed threshold. \code{algo.cdc} calls \code{algo.cdcLatestTimepoint} for the values specified in \code{range} and for the system specified in \code{control}. The threshold is calculated from the predictive distribution, i.e. \deqn{mean(x) + z_{\alpha/2} * sd(x) * \sqrt(1+1/k),} which corresponds to Equation 8-1 in Farrington and Andrews (2003). % Note that an aggregation into 4-week blocks occurs in \code{algo.cdcLatestTimepoint} and \code{m} denotes number of 4-week blocks (months) to use as reference values. This function currently does the same for monthly data (not correct!) % } % \value{ \item{survRes}{ \code{algo.cdcLatestTimepoint} returns a list of class \code{survRes} (surveillance result), which includes the alarm value (alarm = 1, no alarm = 0) for recognizing an outbreak, the threshold value for recognizing the alarm and the input object of class disProg. \code{algo.cdc} gives a list of class \code{survRes} which includes the vector of alarm values for every timepoint in \code{range}, the vector of threshold values for every timepoint in \code{range} for the system specified by \code{b}, \code{w}, the range and the input object of class disProg. } } % \seealso{ \code{\link{algo.rkiLatestTimepoint}},\code{\link{algo.bayesLatestTimepoint}} and \code{\link{algo.bayes}} for the Bayes system. } \author{M. \enc{Höhle}{Hoehle}} \examples{ # Create a test object disProgObj <- sim.pointSource(p = 0.99, r = 0.5, length = 500, A = 1,alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) # Test week 200 to 208 for outbreaks with a selfdefined cdc algo.cdc(disProgObj, control = list(range = 400:500,alpha=0.025)) } \keyword{classif} \source{ Stroup, D., G. Williamson, J. Herndon, and J. Karon (1989). Detection of aberrations in the occurence of notifiable diseases surveillance data. Statistics in Medicine 8, 323-329. Farrington, C. and N. Andrews (2003). Monitoring the Health of Populations, Chapter Outbreak Detection: Application to Infectious Disease Surveillance, pp. 203-231. Oxford University Press. } surveillance/man/stsXtrct.Rd0000644000175100001440000000233012165246273015672 0ustar hornikusers\name{[,sts-methods} \docType{methods} \title{Extraction and Subsetting of \pkg{sts} objects} % % This is stolen from the Matrix package. %\alias{[,sts,missing,missing,ANY-method} %\alias{[,sts,missing,index,missing-method} %\alias{[,sts,index,missing,missing-method} \alias{[,sts-method} \alias{[,sts,ANY,ANY,ANY-method} % \description{ Methods for \code{"["}, i.e., extraction or subsetting of the \code{"\linkS4class{sts}"} class in package \pkg{surveillance}. Note that \code{[<--methods} methods (i.e. subassigments) are currently not supported. \code{drop} is always \code{FALSE}. } \section{Methods}{ There are more than these: \describe{ \item{x = "sts", i = "missing", j = "missing", drop= "ANY"}{ ... } \item{x = "sts", i = "numeric", j = "missing", drop= "missing"}{ ... } \item{x = "sts", i = "missing", j = "numeric", drop= "missing"}{ ... } } } \examples{ data("ha.sts") haagg <- aggregate(ha.sts, nfreq=13) #A suite of of simple tests (inspired by the Matrix package) #stopifnot(identical(ha.sts, ha.sts[])) plot(haagg[, 3]) # Single series plot(haagg[1:30, 3]) # Somewhat shorter #Counts at time 20 plot(haagg[20, ], type = observed ~1 |unit) } \keyword{methods} \keyword{array} surveillance/man/predict.ah.Rd0000644000175100001440000000216011731650466016057 0ustar hornikusers\name{predict.ah} \alias{predict.ah} \alias{predict.ahg} \encoding{latin1} \title{Predictions from a HHH model} \description{ Use a \code{ah} or \code{ahg} object for prediction. } \usage{ \method{predict}{ah}(object,newdata=NULL, type=c("response","endemic","epi.own","epi.neighbours"), \dots) } \arguments{ \item{object}{object of class \code{ah} or \code{ahg} } \item{newdata}{optionally, a disProgObject with which to predict; if omitted, the fitted mean is returned. } \item{type}{the type of prediction required. The default is on the scale of the response variable (endemic and epidemic part). The alternative "endemic" returns only the endemic part (i.e. \eqn{n_{it} \nu_{it}}{n_it * \nu_it}), "epi.own" and "epi.neighbours" return the epidemic part (i.e. \eqn{\lambda_i y_{i,t}}{\lambda_i * y_i,t} and \eqn{\phi_i \sum_{j \sim i} y_{j,t-1}}{\phi_i * \sum_(j ~ i) y_j,t-1} )} \item{...}{not really used} } \value{ matrix of values containing the mean \eqn{\mu_{it}}{\mu_it} for each region and time point. } \details{this function is still experimental} \keyword{ models } % residuals.ah surveillance/man/untie.Rd0000644000175100001440000001045012465344373015165 0ustar hornikusers\name{untie} \alias{untie} \alias{untie.epidataCS} \alias{untie.matrix} \alias{untie.default} \title{ Randomly Break Ties in Data } \description{ This is a generic function intended to randomly break tied data in a way similar to what \code{\link{jitter}} does: tie-breaking is performed by shifting \emph{all} data points by a random amount. The \pkg{surveillance} package defines methods for matrices, \code{"epidataCS"}, and a default method for numeric vectors. } \usage{ untie(x, amount, ...) \method{untie}{epidataCS}(x, amount = list(t=NULL, s=NULL), minsep = list(t=0, s=0), direction = "left", keep.sources = FALSE, ..., verbose = FALSE) \method{untie}{matrix}(x, amount = NULL, minsep = 0, constraint = NULL, giveup = 1000, ...) \method{untie}{default}(x, amount = NULL, minsep = 0, direction = c("symmetric", "left", "right"), sort = NULL, giveup = 1000, ...) } \arguments{ \item{x}{ the data to be untied. } \item{amount}{ upperbound for the random amount by which data are shifted. \code{NULL} means to use a data-driven default, which equals the minimum separation of the data points for the non-symmetric default method and its half for the symmetric default method and the \code{matrix} method. For numeric vectors (default method), the jittered version is the same as for \code{jitter(x, amount=amount)} if \code{direction="symmetric"} (and \code{amount} is non-\code{NULL}), and \code{x} \dQuote{+-} \code{runif(length(x), 0, amount)} (otherwise).\cr For matrices, a vector uniformly drawn from the disc with radius \code{amount} is added to each point (row).\cr For \code{"epidataCS"}, \code{amount} is a list stating the amounts for the temporal and/or spatial dimension, respectively. It then uses the specific methods with arguments \code{constraint=x$W}, \code{direction}, and \code{sort=TRUE}. } \item{minsep}{minimum separation of jittered points. Can only be obeyed if much smaller than \code{amount} (also depending on the number of points). \code{minsep>0} is currently only implemented for the spatial (matrix) method.} \item{keep.sources}{ logical (\code{FALSE}). If \code{TRUE}, the original list of possible event sources in \code{x$events$.sources} will be preserved. For instance, events observed at the same time did by definition not trigger each other; however, after random tie-breaking one event will precede the other and considered as a potential source of infection for the latter, although it could just as well be the other way round. Enabling \code{keep.sources} will use the \code{.sources} list from the original (tied) \code{"epidataCS"} object. Note, however, that an update is forced within \code{twinstim} if a subset of the data is selected for model fitting or if a different \code{qmatrix} is supplied. } \item{constraint}{ an object of class \code{"\linkS4class{SpatialPolygons}"} representing the domain which the points of the matrix should belong to -- before and after jittering. } \item{giveup}{number of attempts after which the algorithm should stop trying to generate new points.} \item{direction}{ one of \code{"symmetric"} (default), \code{"left"}, or \code{"right"}, indicating in which direction vector elements should be shifted. } \item{sort}{ logical indicating if the jittered vector should be sorted. Defaults to doing so if the original vector was already sorted. } \item{\dots}{ For the \code{"epidataCS"}-method: arguments passed to the \code{matrix}- or \code{default}-method (\code{giveup}). Unused in other methods. } \item{verbose}{logical passed to \code{\link{as.epidataCS}}.} } \value{ the untied (jittered) data. } \author{ Sebastian Meyer } \seealso{ \code{\link{jitter}} } \examples{ # vector example set.seed(123) untie(c(rep(1,3), rep(1.2, 4), rep(3,3)), direction="left", sort=FALSE) # spatial example data(imdepi) coords <- coordinates(imdepi$events) table(duplicated(coords)) plot(coords, cex=sqrt(multiplicity(coords))) set.seed(1) coords_untied <- untie(coords) stopifnot(!anyDuplicated(coords_untied)) points(coords_untied, col=2) # shifted by very small amount in this case } \keyword{utilities} \keyword{manip} \keyword{dplot} surveillance/man/magic.dim.Rd0000644000175100001440000000142311745455715015674 0ustar hornikusers\name{magic.dim} \alias{magic.dim} \encoding{latin1} \title{Returns a suitable k1 x k2 for plotting the disProgObj} \description{ For a given number \code{k} \code{magic.dim} provides a vector containing two elements, the number of rows (k1) and columns (k2), respectively, which can be used to set the dimension of a single graphic device so that k1*k2 plots can be drawn by row (or by column) on the device. } \usage{ magic.dim(k) } \arguments{ \item{k}{an integer} } \value{vector with two elements} \seealso{ \code{\link{primeFactors}} and \code{\link{bestCombination}} which are internally used to complete the task. \code{\link{n2mfrow}} is a similar function from package \pkg{grDevices}. } \keyword{dplot} \keyword{utilities} surveillance/man/algo.farrington.fitGLM.Rd0000644000175100001440000000563312307672335020260 0ustar hornikusers\name{algo.farrington.fitGLM} \alias{algo.farrington.fitGLM} \alias{algo.farrington.fitGLM.fast} \alias{algo.farrington.fitGLM.populationOffset} \encoding{latin1} \title{Fit the Poisson GLM of the Farrington procedure for a single time point} \description{ The function fits a Poisson regression model (GLM) with mean predictor \deqn{\log \mu_t = \alpha + \beta t}{ log mu_t = alpha + beta * t} as specified by the Farrington procedure. If requested, Anscombe residuals are computed based on an initial fit and a 2nd fit is made using weights, where base counts suspected to be caused by earlier outbreaks are downweighted. } \usage{ algo.farrington.fitGLM(response, wtime, timeTrend = TRUE, reweight = TRUE, ...) algo.farrington.fitGLM.fast(response, wtime, timeTrend = TRUE, reweight = TRUE, ...) algo.farrington.fitGLM.populationOffset(response, wtime, population, timeTrend=TRUE,reweight=TRUE, ...) } \arguments{ \item{response}{The vector of observed base counts} \item{wtime}{Vector of week numbers corresponding to \code{response}} \item{timeTrend}{Boolean whether to fit the \eqn{\beta t}{beta*t} or not} \item{reweight}{Fit twice -- 2nd time with Anscombe residuals} \item{population}{Population size. Possibly used as offset, i.e. in \code{algo.farrington.fitGLM.populationOffset} the value \code{log(population)} is used as offset in the linear predictor of the GLM: \deqn{\log \mu_t = \log(\texttt{population}) + \alpha + \beta t}{ log mu_t = log(population) alpha + beta * t} This provides a way to adjust the Farrington procedure to the case of greatly varying populations. Note: This is an experimental implementation with methodology not covered by the original paper. } \item{\dots}{Used to catch additional arguments, currently not used.} } % \details{Compute weights from an initial fit and rescale using Anscombe based residuals as described in the \code{\link{anscombe.residuals}} function. Note that \code{algo.farrington.fitGLM} uses the \code{glm} routine for fitting. A faster alternative is provided by \code{algo.farrington.fitGLM.fast} which uses the \code{glm.fit} function directly (thanks to Mikko Virtanen). This saves computational overhead and increases speed for 500 monitored time points by a factor of approximately two. However, some of the routine \code{glm} functions might not work on the output of this function. Which function is used for \code{algo.farrington} can be controlled by the \code{control$fitFun} argument. } % \value{An object of class GLM with additional fields \code{wtime}, \code{response} and \code{phi}. If the \code{glm} returns without convergence \code{NULL} is returned.} % \seealso{\code{\link{anscombe.residuals}},\code{\link{algo.farrington}}} \keyword{regression} surveillance/man/m1.Rd0000644000175100001440000000430111731650466014352 0ustar hornikusers\name{m1} \alias{m1} \alias{h1_nrwrp} \alias{k1} \alias{m2} \alias{m3} \alias{m4} \alias{m5} \alias{n1} \alias{n2} \alias{q1_nrwh} \alias{q2} \alias{s1} \alias{s2} \alias{s3} \encoding{latin1} \title{RKI SurvStat Data} \description{14 datasets for different diseases beginning in 2001 to the 3rd Quarter of 2004 including their defined outbreaks. \itemize{ \item \code{m1} 'Masern' in the 'Landkreis Nordfriesland' (Germany, Schleswig-Holstein) \item \code{m2} 'Masern' in the 'Stadt- und Landkreis Coburg' (Germany, Bayern) \item \code{m3} 'Masern' in the 'Kreis Leer' (Germany, Niedersachsen) \item \code{m4} 'Masern' in the 'Stadt- und Landkreis Aachen' (Germany, Nordrhein-Westfalen) \item \code{m5} 'Masern' in the 'Stadt Verden' (Germany, Niedersachsen) \item \code{q1\_nrwh} 'Q-Fieber' in the 'Hochsauerlandkreis' (Germany, Westfalen) and in the 'Landkreis Waldeck-Frankenberg' (Germany, Hessen) \item \code{q2} 'Q-Fieber' in 'München' (Germany, Bayern) \item \code{s1} 'Salmonella Oranienburg' in Germany \item \code{s2} 'Salmonella Agona' in 12 'Bundesländern' of Germany \item \code{s3} 'Salmonella Anatum' in Germany \item \code{k1} 'Kryptosporidiose' in Germany, 'Baden-Württemberg' \item \code{n1} 'Norovirus' in 'Stadtkreis Berlin Mitte' (Germany, Berlin) \item \code{n2} 'Norovirus' in 'Torgau-Oschatz' (Germany, Sachsen) \item \code{h1\_nrwrp} 'Hepatitis A' in 'Oberbergischer Kreis, Olpe, Rhein-Sieg-kreis' (Germany, Nordrhein-Westfalen) and 'Siegenwittgenstein Altenkirchen' (Germany, Rheinland-Pfalz) } } \usage{data(m1) } \format{ \code{disProg} objects each containing 209 observations (weekly on 52 weeks) \describe{ \item{observed}{Number of counts in the corresponding week} \item{state}{Boolean whether there was an outbreak.} } } \source{Robert Koch-Institut: SurvStat: \url{http://www3.rki.de/SurvStat}; m1 and m3 were queried on 10 November 2004. The rest during September 2004. } \seealso{\code{\link{readData}}} \examples{ data(k1) survResObj <- algo.rki1(k1, control=list(range=27:192)) plot(survResObj, "RKI 1", "k1", firstweek=27, startyear=2002) } \keyword{datasets} surveillance/man/twinSIR_cox.Rd0000644000175100001440000000141212003572153016232 0ustar hornikusers\name{twinSIR_cox} \alias{cox} \title{ Identify Endemic Components in an Intensity Model } \description{ The special function \code{cox} marks terms in formulae of the functions \code{\link{twinSIR}} and \code{\link{simEpidata}} as endemic components, i.e. variables acting multiplicatively on the baseline infection intensity. Technically, this function is implemented as \code{function(x) {x}} and defined as \dQuote{special} in \code{\link{terms.formula}}. } \seealso{ Usage in formulae of functions \code{\link{twinSIR}} and \code{\link{simEpidata}}. } \examples{ # a hypothetic call of the fitting function 'twinSIR' with two epidemic and # two endemic covariates: \dontrun{ twinSIR( ~ B1 + B2 + cox(vaccination) + cox(size), data = myEpidata) } } \keyword{internal} surveillance/man/intensityplot.Rd0000644000175100001440000000130712061460336016755 0ustar hornikusers\name{intensityplot} \alias{intensityplot} \title{ Plot Paths of Point Process Intensities } \description{ Generic function for plotting paths of point process intensities. Methods currently defined in package \pkg{surveillance} are for classes \code{"twinSIR"} and \code{"simEpidata"} (temporal), as well as \code{"twinstim"} and \code{"simEpidataCS"} (spatio-temporal). } \usage{ intensityplot(x, ...) } \arguments{ \item{x}{ An object for which an \code{intensityplot} method is defined. } \item{\dots}{ Arguments passed to the corresponding method. } } \seealso{ The methods \code{\link{intensityplot.twinSIR}} and \code{\link{intensityplot.twinstim}}. } \keyword{hplot} surveillance/man/xtable.algoQV.Rd0000644000175100001440000000234112035760417016502 0ustar hornikusers\name{xtable.algoQV} \alias{xtable.algoQV} \title{Xtable quality value object} \description{Xtable a single qualitity value object in a nicely formatted way} \usage{ \method{xtable}{algoQV}(x,caption = NULL, label = NULL, align = NULL, digits = NULL, display = NULL, ...) } \arguments{ \item{x}{Quality Values object generated with \code{quality}} \item{caption}{See \code{\link[xtable]{xtable}}} \item{label}{See \code{\link[xtable]{xtable}}} \item{align}{See \code{\link[xtable]{xtable}}} \item{digits}{See \code{\link[xtable]{xtable}}} \item{display}{See \code{\link[xtable]{xtable}}} \item{...}{Further arguments (see \code{\link[xtable]{xtable})}} } \keyword{print} \seealso{ \code{\link[xtable]{xtable}}} \examples{ # Create a test object disProgObj <- sim.pointSource(p = 0.99, r = 0.5, length = 200, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) # Let this object be tested from rki1 survResObj <- algo.rki1(disProgObj, control = list(range = 50:200)) # Compute the quality values in a nice formatted way xtable(algo.quality(survResObj)) } surveillance/man/twinstim_methods.Rd0000644000175100001440000001671012565625776017461 0ustar hornikusers\encoding{latin1} \name{twinstim_methods} \alias{print.twinstim} \alias{summary.twinstim} \alias{coeflist.twinstim} \alias{vcov.twinstim} \alias{logLik.twinstim} \alias{nobs.twinstim} \alias{print.summary.twinstim} \alias{toLatex.summary.twinstim} \alias{xtable.twinstim} \alias{xtable.summary.twinstim} \title{ Print, Summary and Extraction Methods for \code{"twinstim"} Objects } \description{ Besides \code{\link{print}} and \code{\link{summary}} methods there are also some standard extraction methods defined for objects of class \code{"twinstim"}: \code{\link{vcov}}, \code{\link{logLik}}, and \code{\link{nobs}}. This also enables the use of, e.g., \code{\link{confint}} and \code{\link{AIC}}. The model \code{summary} can be exported to LaTeX by the corresponding \code{\link{toLatex}} or \code{\link{xtable}} methods. } \usage{ \method{print}{twinstim}(x, digits = max(3, getOption("digits") - 3), ...) \method{summary}{twinstim}(object, test.iaf = FALSE, correlation = FALSE, symbolic.cor = FALSE, runtime = FALSE, ...) \method{coeflist}{twinstim}(x, ...) \method{vcov}{twinstim}(object, ...) \method{logLik}{twinstim}(object, ...) \method{nobs}{twinstim}(object, ...) \method{print}{summary.twinstim}(x, digits = max(3, getOption("digits") - 3), symbolic.cor = x$symbolic.cor, signif.stars = getOption("show.signif.stars"), ...) \method{toLatex}{summary.twinstim}(object, digits = max(3, getOption("digits") - 3), eps.Pvalue = 1e-4, align = "lrrrr", booktabs = getOption("xtable.booktabs", FALSE), withAIC = FALSE, ...) \method{xtable}{summary.twinstim}(x, caption = NULL, label = NULL, align = c("l", "r", "r", "r"), digits = 3, display = c("s", "f", "s", "s"), ..., ci.level = 0.95, ci.fmt = "\%4.2f", ci.to = "--", eps.Pvalue = 1e-4) } \arguments{ \item{x, object}{an object of class \code{"twinstim"} or \code{"summary.twinstim"}, respectively.} \item{digits}{ integer, used for number formatting with \code{signif()}. Minimum number of significant digits to be printed in values. } \item{test.iaf}{logical indicating if the simple Wald z- and p-values should be calculated for parameters of the interaction functions \code{siaf} and \code{tiaf}. Because it is often invalid or meaningless to do so, the default is \code{FALSE}. } \item{correlation}{ logical. If \code{TRUE}, the correlation matrix of the estimated parameters is returned and printed. } \item{symbolic.cor}{ logical. If \code{TRUE}, print the correlations in a symbolic form (see \code{symnum}) rather than as numbers. } \item{runtime}{ logical. If \code{TRUE}, the summary additionally includes the time elapsed and the number of log-likelihood and score function evaluations during model fittting. } \item{signif.stars}{logical. If \code{TRUE}, \dQuote{significance stars} are printed for each coefficient.} \item{eps.Pvalue}{passed to \code{\link{format.pval}}.} \item{booktabs}{logical indicating if the \code{toprule}, \code{midrule} and \code{bottomrule} commands from the LaTeX package \pkg{booktabs} should be used for horizontal lines rather than \code{hline}.} \item{withAIC}{logical indicating if the AIC and the log-likelihood of the model should be included below the table of coefficients in the LaTeX tabular.} \item{caption,label,align,display}{see \code{\link{xtable}}.} \item{ci.level,ci.fmt,ci.to}{the confidence intervals are calculated at level \code{ci.level} and printed using \code{\link{sprintf}} with format \code{ci.fmt} and seperator \code{ci.to}.} \item{\dots}{ For \code{print.summary.twinstim}, arguments passed to \code{\link{printCoefmat}}.\cr For all other methods: unused (argument of the generic). } } \details{ The estimated coefficients and standard Wald-type confidence intervals can be extracted using the default \code{\link{coef}} and \code{\link{confint}} methods from package \pkg{stats}. Note, however, that there is the useful \code{\link{coeflist}} method to list the coefficients by model component. The \code{print} and \code{summary} methods allow the compact or comprehensive representation of the fitting results, respectively. The former only prints the original function call, the estimated coefficients and the maximum log-likelihood value. The latter prints the whole coefficient matrix with standard errors, z- and p-values (see \code{\link{printCoefmat}}) -- separately for the endemic and the epidemic component -- and additionally the AIC, the achieved log-likelihood, the number of log-likelihood and score evaluations, and the runtime. They both append a big \dQuote{WARNING}, if the optimization algorithm did not converge. The \code{toLatex} method is essentially a translation of the printed summary table of coefficients to LaTeX code (using \pkg{xtable}). However, the \code{xtable} method does a different job in that it first converts coefficients to rate ratios (RR, i.e., the \code{exp}-transformation) and gives confidence intervals for those instead of standard errors and z-values. Intercepts and interaction function parameters are ignored by the \code{xtable} method. } \value{ The \code{print} methods return their first argument, invisibly, as they always should. The \code{vcov} method returns the estimated variance-covariance matrix of the parameters, which is the inverse of \code{object$fisherinfo} (estimate of the \emph{expected} Fisher information matrix). This \code{"fisherinfo"} is not always available (see \code{\link{twinstim}}), in which case \code{object$fisherinfo.observed} is used if available or an error is returned otherwise. The \code{logLik} and \code{nobs} methods return the maximum log-likelihood value of the model, and the number of events (excluding events of the pre-history), respectively. The \code{summary} method returns a list containing some summary statistics of the model, which is nicely printed by the corresponding \code{print} method. The \code{toLatex} method returns a character vector of class \code{"Latex"}, each element containing one line of LaTeX code (see \code{\link{print.Latex}}). The \code{xtable} method returns an object of class \code{"\link{xtable}"}. Note that the column name of the confidence interval, e.g. \dQuote{95\% CI}, contains the percent symbol that may need to be escaped when printing the \code{"xtable"} in the output format (see \code{sanitize.text.function} in \code{\link{print.xtable}}). This may also hold for row names. } \author{ Sebastian Meyer } \examples{ # load a fit of the 'imdepi' data, see the example in ?twinstim data("imdepifit") # print method imdepifit # extract point estimates (in a single vector or listed by model component) coef(imdepifit) coeflist(imdepifit) # variance-covariance matrix of endemic parameters # (inverse of expected Fisher information) unname(vcov(imdepifit)[1:4,1:4]) # the default confint() method may be used for Wald CI's confint(imdepifit, parm="e.typeC", level=0.95) # log-likelihood and AIC of the fitted model logLik(imdepifit) AIC(imdepifit) nobs(imdepifit) # produce a summary with parameter correlations and runtime information (s <- summary(imdepifit, correlation=TRUE, symbolic.cor=TRUE, runtime=TRUE)) # create LaTeX code of coefficient table toLatex(s, withAIC=FALSE) # or using the xtable-method (which produces rate ratios) xtable(s) } \keyword{methods} \keyword{print} \keyword{htest} surveillance/man/formatPval.Rd0000644000175100001440000000152712536544160016154 0ustar hornikusers\name{formatPval} \alias{formatPval} \title{ Pretty p-Value Formatting } \description{ Just \acronym{yapf} -- yet another p-value formatter... It is a wrapper around \code{\link{format.pval}}, such that by default \code{eps = 1e-4}, \code{scientific = FALSE}, \code{digits = if (p<10*eps) 1 else 2}, and \code{nsmall = 2}. } \usage{ formatPval(pv, eps = 1e-4, scientific = FALSE, ...) } \arguments{ \item{pv}{a numeric vector (of p-values).} \item{eps}{a numerical tolerance, see \code{\link{format.pval}}.} \item{scientific}{see \code{\link{format}}.} \item{\dots}{further arguments passed to \code{\link{format.pval}} (but \code{digits} and \code{nsmall} are hard-coded internally).} } \value{ The character vector of formatted p-values. } \examples{ formatPval(c(0.9, 0.13567, 0.0432, 0.000546, 1e-8)) } \keyword{print} surveillance/man/create.grid.Rd0000644000175100001440000000445712003572572016232 0ustar hornikusers\name{create.grid} \alias{create.grid} \encoding{latin1} \title{Computes a matrix of initial values} \description{ For a given model and a list of parameters specified as \code{param = c(lower,upper,length)}, \code{create.grid} creates a grid of initial values for \code{algo.hhh.grid}. The resulting matrix contains all combinations of the supplied parameters which each are a sequence of length \code{length} from \code{lower} to \code{upper}. Note that the autoregressive parameters \eqn{\lambda, \phi} and the overdispersion parameter \eqn{\psi} must be positive. Only one sequence of initial values is considered for the autregressive, endemic and overdispersion parameters to create the grid, e.g. initial values are the same for each one of the seasonal and trend parameters. } \usage{ create.grid(disProgObj, control, params = list(epidemic = c(0.1, 0.9, 5), endemic=c(-0.5,0.5,3), negbin = c(0.3, 12, 10))) } \arguments{ \item{disProgObj}{object of class \code{disProg} } \item{control}{specified model} \item{params}{list of parameters: \code{param=c(lower,upper,length)} \itemize{ \item \code{epidemic} autoregressive parameters \eqn{\lambda} and \eqn{\phi}. \item \code{endemic} trend and seasonal parameters \eqn{\beta, \gamma_j}. \item \code{negbin} overdispersion parameter for negative binomial model \eqn{\psi}. } } } \value{ \item{matrix}{matrix with \code{gridSize} starting values as rows} } \seealso{\code{\link{algo.hhh.grid}}} \author{M. Paul} \examples{ # simulate data set.seed(123) disProgObj <- simHHH(control = list(coefs = list(alpha =-0.5, gamma = 0.4, delta = 0.6)),length=300)$data # consider the model specified in a control object for algo.hhh.grid cntrl1 <- list(lambda=TRUE, neighbours=TRUE, linear=TRUE, nseason=1) cntrl2 <- list(lambda=TRUE, negbin="single") # create a grid of initial values for respective parameters grid1 <- create.grid(disProgObj, cntrl1, params = list(epidemic=c(0.1,0.9,3), endemic=c(-1,1,3))) grid2 <- create.grid(disProgObj, cntrl2, params = list(epidemic=c(0.1,0.9,5), negbin=c(0.3,12,10))) } \keyword{misc} surveillance/man/salmNewportTruncated.Rd0000644000175100001440000000145012601335002020203 0ustar hornikusers\docType{data} \name{salmNewportTruncated} \alias{salmNewportTruncated} \title{Salmonella Newport cases in Germany 2001-2011 by data of symptoms onset} \format{A list of 6 sts-objects} \usage{ data("salmNewportTruncated") } \examples{ data("salmNewportTruncated") par(mfrow=c(2,3)) for (week in 44:49){ plot(salmNewportTruncated[[week]],ylim=c(0,62)) } } \description{ A list containing 6 time series of counts of Salmonella Newport in Germany 2001-2011 aggregated by data of disease onset as known during weeks 44 to 49 of 2011. } \references{ Bayesian outbreak detection in the presence of reporting delays, Salmon, M., Schumacher, D., Stark, K., \enc{Höhle}{Hoehle}, M. (2015), Biometrical Journal, http://dx.doi.org/10.1002/bimj.201400159. } \keyword{datasets} surveillance/man/knox.Rd0000644000175100001440000001162212503640156015011 0ustar hornikusers\name{knox} \alias{knox} \alias{plot.knox} \title{ Knox Test for Space-Time Interaction } \description{ Given temporal and spatial distances as well as corresponding critical thresholds defining what \dQuote{close} means, the function \code{knox} performs Knox (1963, 1964) test for space-time interaction. The corresponding p-value can be calculated either by the Poisson approximation or by a Monte Carlo permutation approach (Mantel, 1967) with support for parallel computation via \code{\link{plapply}}. There is a simple \code{plot}-method showing a \code{\link{truehist}} of the simulated null distribution together with the expected and observed values. } \usage{ knox(dt, ds, eps.t, eps.s, simulate.p.value = TRUE, B = 999, ...) \method{plot}{knox}(x, ...) } \arguments{ \item{dt,ds}{ numeric vectors of length \eqn{n*(n-1)/2} containing the pairwise temporal and spatial distances of \eqn{n} events. Logical vectors indicating temporal/spatial closeness may also be supplied, in which case \code{eps.t}/\code{eps.s} is ignored. } \item{eps.t,eps.s}{ Critical distances defining closeness in time and space, respectively. Distances lower than or equal to the critical distance are considered \dQuote{"close"}. } \item{simulate.p.value}{ logical indicating if a Monte Carlo permutation test should be performed (as per default). Do not forget to set the \code{\link{.Random.seed}} via an extra \code{.seed} argument if reproducibility is required (see the \dots arguments below). If \code{simulate.p.value = FALSE}, the Poisson approximation is used (but see the note below). } \item{B}{ number of permutations for the Monte Carlo approach. } \item{\dots}{ arguments configuring \code{\link{plapply}}: \code{.parallel}, \code{.seed}, and \code{.verbose}. By default, no parallelization is performed (\code{.parallel = 1}), and a progress bar is shown (\code{.verbose = TRUE}).\cr For the \code{plot}-method, further arguments passed to \code{\link{truehist}}. } \item{x}{ an object of class \code{"knox"} as returned by the \code{knox} test. } } \note{ The Poisson approximation works well if the proportions of close pairs in both time and space are small (Kulldorf and Hjalmars, 1999), otherwise the Monte Carlo permutation approach is recommended. } \value{ an object of class \code{"knox"} (inheriting from \code{"htest"}), which is a list with the following components: \item{method}{a character string indicating the type of test performed, and whether the Poisson approximation or Monte Carlo simulation was used.} \item{data.name}{a character string giving the supplied \code{dt} and \code{ds} arguments.} \item{statistic}{the number of close pairs.} \item{parameter}{if \code{simulate.p.value = TRUE}, the number \code{B} of permutations, otherwise the \code{lambda} parameter of the Poisson distribution, i.e., the same as \code{null.value}.} \item{p.value}{the p-value for the test. In case \code{simulate.p.value = TRUE}, the p-value from the Poisson approximation is still attached as an attribute \code{"Poisson"}.} \item{alternative}{the character string \code{"greater"} (this is a one-sided test).} \item{null.value}{the expected number of close pairs in the absence of space-time interaction.} \item{table}{the contingency table of \code{dt <= eps.t} and \code{ds <= eps.s}.} The \code{plot}-method invisibly returns \code{NULL}. } \author{ Sebastian Meyer } \seealso{ the space-time K-function test \code{\link{stKtest}} to combine information from different scales \code{eps.t} and \code{eps.s} while also handling edge effects, as well as function \code{\link{epitest}} for testing \code{"\link{twinstim}"} models. } \references{ Knox, G. (1963): Detection of low intensity epidemicity: application to cleft lip and palate. \emph{British Journal of Preventive & Social Medicine}, \bold{17}, 121-127. Knox, E. G. (1964): The detection of space-time interactions. \emph{Journal of the Royal Statistical Society. Series C (Applied Statistics)}, \bold{13}, 25-30. Kulldorff, M. and Hjalmars, U. (1999): The Knox method and other tests for space-time interaction. \emph{Biometrics}, \bold{55}, 544-552. Mantel, N. (1967): The detection of disease clustering and a generalized regression approach. \emph{Cancer Research}, \bold{27}, 209-220. } \examples{ data("imdepi") imdepiB <- subset(imdepi, type == "B") ## Obtain the p-value via a Monte Carlo permutation test, ## where the permutations can be computed in parallel ## (using forking on Unix-alikes and a cluster on Windows, see ?plapply) knoxtest <- knox( dt = dist(imdepiB$events$time), eps.t = 30, ds = dist(coordinates(imdepiB$events)), eps.s = 50, simulate.p.value = TRUE, B = 199, .parallel = 2, .seed = 1, .verbose = FALSE ) knoxtest plot(knoxtest) } \keyword{htest} surveillance/man/pairedbinCUSUM.Rd0000644000175100001440000001521612314276313016607 0ustar hornikusers\name{pairedbinCUSUM} \alias{pairedbinCUSUM} \alias{pairedbinCUSUM.runlength} \alias{pairedbinCUSUM.LLRcompute} \encoding{latin1} \title{Paired binary CUSUM and its run-length computation} \description{ CUSUM for paired binary data as described in Steiner et al. (1999). } \usage{ pairedbinCUSUM(stsObj, control = list(range=NULL,theta0,theta1, h1,h2,h11,h22)) pairedbinCUSUM.runlength(p,w1,w2,h1,h2,h11,h22, sparse=FALSE) } \arguments{ \item{stsObj}{Object of class \code{sts} containing the paired responses for each of the, say n, patients. The observed slot of \code{stsObj} is thus a \eqn{n \times 2} matrix.} \item{control}{Control object as a list containing several parameters. \itemize{ \item{\code{range}}{Vector of indices in the observed slot to monitor.} \item{\code{theta0}}{In-control parameters of the paired binary CUSUM.} \item{\code{theta1}}{Out-of-control parameters of the paired binary CUSUM.} \item{\code{h1}}{Primary control limit (=threshold) of 1st CUSUM.} \item{\code{h2}}{Primary control limit (=threshold) of 2nd CUSUM.} \item{\code{h11}}{Secondary limit for 1st CUSUM.} \item{\code{h22}}{Secondary limit for 2nd CUSUM.} } } \item{p}{Vector giving the probability of the four different possibile states, i.e. c((death=0,near-miss=0),(death=1,near-miss=0), (death=0,near-miss=1),(death=1,near-miss=1)).} \item{w1}{The parameters \code{w1} and \code{w2} are the sample weights vectors for the two CUSUMs, see eqn. (2) in the paper. We have that \code{w1} is equal to deaths } \item{w2}{As for \code{w1}} \item{h1}{decision barrier for 1st individual cusums} \item{h2}{decision barrier for 2nd cusums} \item{h11}{together with \code{h22} this makes up the joing decision barriers} \item{h22}{together with \code{h11} this makes up the joing decision barriers} \item{sparse}{Boolean indicating whether to use sparse matrix computations from the \code{Matrix} library (usually much faster!). Default: \code{FALSE}.} } \details{ For details about the method see the Steiner et al. (1999) reference listed below. Basically, two individual CUSUMs are run based on a logistic regression model. The combined CUSUM not only signals if one of its two individual CUSUMs signals, but also if the two CUSUMs simultaneously cross the secondary limits. } \seealso{\code{\link{categoricalCUSUM}}} \value{An \code{sts} object with \code{observed}, \code{alarm}, etc. slots trimmed to the \code{control$range} indices. } \references{ Steiner, S. H., Cook, R. J., and Farewell, V. T. (1999), Monitoring paired binary surgical outcomes using cumulative sum charts, Statistics in Medicine, 18, pp. 69--86. } \examples{ #Set in-control and out-of-control parameters as in paper theta0 <- c(-2.3,-4.5,2.5) theta1 <- c(-1.7,-2.9,2.5) #Small helper function to compute the paired-binary likelihood #of the length two vector yz when the true parameters are theta dPBin <- function(yz,theta) { exp(dbinom(yz[1],size=1,prob=plogis(theta[1]),log=TRUE) + dbinom(yz[2],size=1,prob=plogis(theta[2]+theta[3]*yz[1]),log=TRUE)) } #Likelihood ratio for all four possible configurations p <- c(dPBin(c(0,0), theta=theta0), dPBin(c(0,1), theta=theta0), dPBin(c(1,0), theta=theta0), dPBin(c(1,1), theta=theta0)) #Compute ARL using non-sparse matrix operations \dontrun{ pairedbinCUSUM.runlength(p,w1=c(-1,37,-9,29),w2=c(-1,7),h1=70,h2=32,h11=38,h22=17) } #Sparse computations don't work on all machines (e.g. the next line #might lead to an error. If it works this call can be considerably (!) faster #than the non-sparse call. \dontrun{ pairedbinCUSUM.runlength(p,w1=c(-1,37,-9,29),w2=c(-1,7),h1=70,h2=32, h11=38,h22=17,sparse=TRUE) } #Use paired binary CUSUM on the De Leval et al. (1994) arterial switch #operation data on 104 newborn babies data("deleval") #Switch between death and near misses observed(deleval) <- observed(deleval)[,c(2,1)] #Run paired-binary CUSUM without generating alarms. pb.surv <- pairedbinCUSUM(deleval,control=list(theta0=theta0, theta1=theta1,h1=Inf,h2=Inf,h11=Inf,h22=Inf)) plot(pb.surv, xaxis.labelFormat=NULL) ###################################################################### #Scale the plots so they become comparable to the plots in Steiner et #al. (1999). To this end a small helper function is defined. ###################################################################### ###################################################################### #Log LR for conditional specification of the paired model ###################################################################### LLR.pairedbin <- function(yz,theta0, theta1) { #In control alphay0 <- theta0[1] ; alphaz0 <- theta0[2] ; beta0 <- theta0[3] #Out of control alphay1 <- theta1[1] ; alphaz1 <- theta1[2] ; beta1 <- theta1[3] #Likelihood ratios llry <- (alphay1-alphay0)*yz[1]+log(1+exp(alphay0))-log(1+exp(alphay1)) llrz <- (alphaz1-alphaz0)*yz[2]+log(1+exp(alphaz0+beta0*yz[1]))- log(1+exp(alphaz1+beta1*yz[1])) return(c(llry=llry,llrz=llrz)) } val <- expand.grid(0:1,0:1) table <- t(apply(val,1, LLR.pairedbin, theta0=theta0, theta1=theta1)) w1 <- min(abs(table[,1])) w2 <- min(abs(table[,2])) S <- upperbound(pb.surv) / cbind(rep(w1,nrow(observed(pb.surv))),w2) #Show results par(mfcol=c(2,1)) plot(1:nrow(deleval),S[,1],type="l",main="Near Miss",xlab="Patient No.", ylab="CUSUM Statistic") lines(c(0,1e99), c(32,32),lty=2,col=2) lines(c(0,1e99), c(17,17),lty=2,col=3) plot(1:nrow(deleval),S[,2],type="l",main="Death",xlab="Patient No.", ylab="CUSUM Statistic") lines(c(0,1e99), c(70,70),lty=2,col=2) lines(c(0,1e99), c(38,38),lty=2,col=3) ###################################################################### # Run the CUSUM with thresholds as in Steiner et al. (1999). # After each alarm the CUSUM statistic is set to zero and # monitoring continues from this point. Triangles indicate alarm # in the respective CUSUM (nearmiss or death). If in both # simultaneously then an alarm is caued by the secondary limits. ###################################################################### pb.surv2 <- pairedbinCUSUM(deleval,control=list(theta0=theta0, theta1=theta1,h1=70*w1,h2=32*w2,h11=38*w1,h22=17*w2)) plot(pb.surv2, xaxis.labelFormat=NULL) } \author{S. Steiner and M. \enc{Höhle}{Hoehle}} \keyword{regression} %deleval <- read.table("~/MCHealth/Varizellen/R/leval.txt",header=TRUE) %deleval <- new("sts", epoch=1:nrow(deleval), observed=deleval,state=0*deleval,freq=104) %save(file="~/Surveillance/surveillance/pkg/data/deleval.RData",list=c("deleval"))surveillance/man/epidataCS_animate.Rd0000644000175100001440000001356312444047651017400 0ustar hornikusers\encoding{latin1} \name{epidataCS_animate} \alias{animate.epidataCS} \title{ Spatio-Temporal Animation of a Continuous-Time Continuous-Space Epidemic } \description{ Function for the animation of continuous-time continuous-space epidemic data, i.e. objects inheriting from class \code{"epidataCS"}. There are three types of animation, see argument \code{time.spacing}. Besides the on-screen plotting in the interactive \R session, it is possible and recommended to redirect the animation to an off-screen graphics device using the contributed \R package \pkg{animation}. For instance, the animation can be watched and navigated in a web browser via \code{\link[animation]{saveHTML}} (see Examples). } \usage{ \method{animate}{epidataCS}(object, interval = c(0,Inf), time.spacing = NULL, nmax = NULL, sleep = NULL, legend.opts = list(), timer.opts = list(), pch = 15:18, col.current = "red", col.I = "#C16E41", col.R = "#B3B3B3", col.influence = NULL, main = NULL, verbose = interactive(), ...) } \arguments{ \item{object}{ an object inheriting from class \code{"epidataCS"}. } \item{interval}{time range of the animation.} \item{time.spacing}{ time interval for the animation steps.\cr If \code{NULL} (the default), the events are plotted sequentially by producing a snapshot at every time point where an event occured. Thus, it is just the \emph{ordering} of the events, which is shown.\cr To plot the appearance of events proportionally to the exact time line, \code{time.spacing} can be set to a numeric value indicating the period of time between consecutive snapshots. Then, for each time point in \code{seq(0, end, by = time.spacing)} the current state of the epidemic can be seen and an additional timer indicates the current time (see \code{timer.opts} below).\cr If \code{time.spacing = NA}, then the time spacing is automatically determined in such a way that \code{nmax} snapshots result. In this case, \code{nmax} must be given a finite value. } \item{nmax}{ maximum number of snapshots to generate. The default \code{NULL} means to take the value from \code{ani.options("nmax")} if the \pkg{animation} package is available, and no limitation (\code{Inf}) otherwise. } \item{sleep}{ numeric scalar specyfing the artificial pause in seconds between two time points (using \code{\link{Sys.sleep}}), or \code{NULL} (default), when this is taken from \code{ani.options("interval")} if the \pkg{animation} package is available, and set to 0.1 otherwise. Note that \code{sleep} is ignored on non-interactive devices (see \code{\link{dev.interactive}}), e.g., if generating an animation inside \pkg{animation}'s \code{\link[animation]{saveHTML}}. } \item{pch, col}{ vectors of length equal to the number of event types specifying the point symbols and colors for events to plot (in this order). The vectors are recycled if necessary. } \item{legend.opts}{ either a list of arguments passed to the \code{\link{legend}} function or \code{NULL} (or \code{NA}), in which case no legend will be plotted. All necessary arguments have sensible defaults and need not be specified. } \item{timer.opts}{ either a list of arguments passed to the \code{\link{legend}} function or \code{NULL} (or \code{NA}), in which case no timer will be plotted. All necessary arguments have sensible defaults and need not be specified, i.e. \describe{ \item{\code{x}:}{\code{"bottomright"}} \item{\code{title}:}{\code{"time"}} \item{\code{box.lty}:}{\code{0}} \item{\code{adj}:}{\code{c(0.5,0.5)}} \item{\code{inset}:}{\code{0.01}} \item{\code{bg}:}{\code{"white"}} } Note that the argument \code{legend}, which is the current time of the animation, can not be modified. } \item{col.current}{color of events when occuring (new).} \item{col.I}{color once infectious.} \item{col.R}{color event has once \dQuote{recovered}. If \code{NA}, then recovered events will not be shown.} \item{col.influence}{color with which the influence region is drawn. Use \code{NULL} (default) if no influence regions should be drawn.} \item{main}{optional main title placed above the map.} \item{verbose}{logical specifying if a (textual) progress bar should be shown during snapshot generation. This is especially useful if the animation is produced within \code{\link[animation]{saveHTML}} or similar.} \item{\dots}{ further graphical parameters passed to the plot-method of the \code{\link{SpatialPolygons-class}}. } } %\value{ % invisibly returns \code{NULL}. %} \author{ Sebastian Meyer with documentation contributions by Michael H\enc{ö}{oe}hle } \seealso{ \code{\link{plot.epidataCS}} for plotting the numbers of events by time (aggregated over space) or the locations of the events in the observation region \code{W} (aggregated over time). The contributed \R package \pkg{animation}. } \examples{ data("imdepi") imdepiB <- subset(imdepi, type == "B") # Animate the first year of type B with a step size of 7 days animate(imdepiB, interval=c(0,365), time.spacing=7, nmax=Inf, sleep=0.1) # Sequential animation of type B events during the first year animate(imdepiB, interval=c(0,365), time.spacing=NULL, sleep=0.1) # Animate the whole time range but with nmax=20 snapshots only animate(imdepiB, time.spacing=NA, nmax=20, sleep=0.1) # Such an animation can be saved in various ways using the tools of # the animation package, e.g., saveHTML() if (require("animation")) { oldwd <- setwd(tempdir()) # to not clutter up the current working dir saveHTML(animate(imdepiB, interval = c(0,365), time.spacing = 7), nmax = Inf, interval = 0.2, loop = FALSE, title = "Animation of the first year of type B events") setwd(oldwd) } } \keyword{hplot} \keyword{dynamic} \keyword{spatial} surveillance/man/twinSIR.Rd0000644000175100001440000003451012420320614015362 0ustar hornikusers\encoding{latin1} \name{twinSIR} \alias{twinSIR} \title{ Fit an Additive-Multiplicative Intensity Model for SIR Data } \description{ \code{twinSIR} is used to fit additive-multiplicative intensity models for epidemics as described in \enc{Höhle}{Hoehle} (2009). Estimation is driven by (penalized) maximum likelihood in the point process frame work. Optimization (maximization) of the (penalized) likelihood function is performed by means of \code{\link{optim}}. } \usage{ twinSIR(formula, data, weights, subset, knots = NULL, nIntervals = 1, lambda.smooth = 0, penalty = 1, optim.args = list(), model = TRUE, keep.data = FALSE) } \arguments{ \item{formula}{ an object of class \code{"\link{formula}"} (or one that can be coerced to that class): a symbolic description of the intensity model to be estimated. The details of model specification are given under Details. } \item{data}{ an object inheriting from class \code{"\link{epidata}"}. } \item{weights}{ an optional vector of weights to be used in the fitting process. Should be \code{NULL} (the default, i.e. all observations have unit weight) or a numeric vector. } \item{subset}{ an optional vector specifying a subset of observations to be used in the fitting process. The subset \code{atRiskY == 1} is automatically chosen, because the likelihood only depends on those observations. } \item{knots}{ numeric vector or \code{NULL} (the default). Specification of the knots, where we suppose a step of the log-baseline. With the current implementation, these must be existing \code{"stop"} time points in \code{subset(data, atRiskY == 1)}. The intervals of constant log-baseline hazard rate then are \eqn{(minTime;knots_1]}, \eqn{(knots_1;knots_2]}, \ldots, \eqn{(knots_K;maxTime]}. By default, the \code{knots} are automatically chosen at the quantiles of the infection time points such that \code{nIntervals} intervals result. Non-NULL \code{knots} take precedence over \code{nIntervals}. } \item{nIntervals}{ the number of intervals of constant log-baseline hazard. Defaults to 1, which means an overall constant log-baseline hazard will be fitted. } \item{lambda.smooth}{ numeric, the smoothing parameter \eqn{\lambda}. By default it is 0 which leads to unpenalized likelihood inference. In case \code{lambda.smooth=-1}, the automatic smoothing parameter selection based on a mixed model approach is used (cf. \enc{Höhle}{Hoehle}, 2009). } \item{penalty}{ either a single number denoting the order of the difference used to penalize the log-baseline coefficients (defaults to 1), or a more specific penalty matrix \eqn{K} for the parameter sub-vector \eqn{\beta}. In case of non-equidistant knots -- usually the case when using quantile based knot locations -- a 1st order differences penalty matrix as in Fahrmeir and Lang (2001) is available. For non-equidistant knots higher orders than one are not implemented. } \item{optim.args}{ a list with arguments passed to the \code{\link{optim}} function. Especially useful are the following ones: \describe{ \item{\code{par}:}{ to specify initial parameter values. Those must be in the order \code{c(alpha, h0, beta)}, i.e. first the coefficients of the epidemic covariates in the same order as they appear in the \code{formula}, then the log-baseline levels in chronological order and finally the coefficients of the endemic covariates in the same order as they appear in the \code{cox} terms of the \code{formula}. The default is to start with 1's for \code{alpha} and 0's for \code{h0} and \code{beta}. } \item{\code{control}:}{ for more detailed \code{trace}-ing (default: 1), another \code{REPORT}-ing frequency if \code{trace} is positive (default: 10), higher \code{maxit} (maximum number of iterations, default: 300) or another \code{factr} value (default: 1e7, a lower value means higher precision). } \item{\code{method}:}{ the optimization algorithm defaults to \code{"L-BFGS-B"} (for box-constrained optimization), if there are any epidemic (non-\code{cox}) variables in the model, and to \code{"BFGS"} otherwise. } \item{\code{lower}:}{ if \code{method = "L-BFGS-B"} this defines the lower bounds for the model coefficients. By default, all effects \eqn{\alpha} of epidemic variables are restricted to be non-negative. Normally, this is exactly what one would like to have, but there might be reasons for other lower bounds, see the Note below. } \item{\code{hessian}:}{ An estimation of the Expected Fisher Information matrix is always part of the return value of the function. It might be interesting to see the Observed Fisher Information (= negative Hessian at the maximum), too. This will be additionally returned if \code{hessian = TRUE}. } } } \item{model}{ logical indicating if the model frame, the \code{weights}, \code{lambda.smooth}, the penalty matrix \eqn{K} and the list of used distance functions \code{f} (from \code{attributes(data)}) should be returned for further computation. This defaults to \code{TRUE} as this information is necessary e.g. in the \code{profile} and \code{plot} methods. } \item{keep.data}{ logical indicating if the \code{"epidata"} object (\code{data}) should be part of the return value. This is only necessary for use of the \code{\link[=simulate.twinSIR]{simulate}}-method for \code{"twinSIR"} objects. The reason is that the \code{twinSIR} function only uses and stores the rows with \code{atRiskY == 1} in the \code{model} component, but for the simulation of new epidemic data one needs the whole data set with all individuals in every time block. The default value is \code{FALSE}, so if you intent to use \code{simulate.twinSIR}, you have to set this to \code{TRUE}. } } \details{ A model is specified through the \code{formula}, which has the form \code{~ epidemicTerm1 + epidemicTerm2 + cox(endemicVar1) * cox(endemicVar2)}, i.e. the right hand side has the usual form as in \code{\link{lm}} with some variables marked as being endemic by the special function \code{\link{cox}}. The left hand side of the formula is empty and will be set internally to \code{cbind(start, stop, event)}, which is similar to \code{Surv(start, stop, event, type="counting")}. Basically, the additive-multiplicative model for the infection intensity \eqn{\lambda_i(t)} for individual \eqn{i} is \deqn{\lambda_i(t) = Y_i(t) * (e_i(t) + h_i(t))} where \describe{ \item{Y\_i(t)}{ is the at-risk indicator, indicating if individual \eqn{i} is \dQuote{at risk} of becoming infected at time point \eqn{t}. This variable is part of the event history \code{data}. } \item{e\_i(t)}{ is the epidemic component of the infection intensity, defined as \deqn{e_i(t) = \sum_{j \in I(t)} f(||s_i - s_j||)} where \eqn{I(t)} is the set of infectious individuals just before time point \eqn{t}, \eqn{s_i} is the coordinate vector of individual \eqn{i} and the function \eqn{f} is defined as \deqn{f(u) = \sum_{m=1}^p \alpha_m B_m(u)} with unknown transmission parameters \eqn{\alpha} and known distance functions \eqn{B_m}. This set of distance functions results in the set of epidemic variables normally calculated by the converter function \code{\link{as.epidata}}, considering the equality \deqn{e_i(t) = \sum_{m=1}^p \alpha_m x_{im}(t)} with \eqn{x_{im}(t) = \sum_{j \in I(t)} B_m(||s_i - s_j||)} being the \eqn{m}'th epidemic variable for individual \eqn{i}. } \item{h\_i(t)}{ is the endemic (\code{cox}) component of the infection intensity, defined as \deqn{h_i(t) = \exp(h_0(t) + z_i(t)' \beta)} where \eqn{h_0(t)} is the log-baseline hazard function, \eqn{z_i(t)} is the vector of endemic covariates of individual \eqn{i} and \eqn{\beta} is the vector of unknown coefficients. To fit the model, the log-baseline hazard function is approximated by a piecewise constant function with known knots, but unknown levels, which will be estimated. The approximation is specified by the arguments \code{knots} or \code{nIntervals}. } } If a big number of \code{knots} (or \code{nIntervals}) is chosen, the corresponding log-baseline parameters can be rendered identifiable by the use of penalized likelihood inference. At present, it is the job of the user to choose an adequate value of the smoothing parameter \code{lambda.smooth}. Alternatively, a data driven \code{lambda.smooth} smoothing parameter selection based on a mixed model representation of an equivalent truncated power spline is offered (see reference for further details). The following two steps are iterated until converegence: \enumerate{ \item Given fixed smoothing parameter, the penalized likelihood is optimized for the regression components using a L-BFGS-B approach \item Given fixed regression parameters, a Laplace approximation of the marginal likelihood for the smoothing parameter is numerically optimized. } Depending on the data convergence might take a couple of iterations. Note also that it is unwise to include endemic covariates with huge values, as they affect the intensities on the exponential scale after having been multiplied by the parameter vector \eqn{\beta}. With big covariates the \code{optim} method "L-BFGS-B" will likely terminate due to an infinite log-likelihood or score function in some iteration. } \value{ \code{twinSIR} returns an object of \code{\link{class}} \code{"twinSIR"}. An object of this class is a list containing the following components: \item{coefficients}{a named vector of coefficients.} \item{loglik}{the maximum of the (penalized) log-likelihood function.} \item{counts}{the number of log-likelihood and score function evaluations.} \item{converged}{logical indicating convergence of the optimization algorithm.} \item{fisherinfo.observed}{if requested, the negative Hessian from \code{optim}.} \item{fisherinfo}{an estimation of the Expected Fisher Information matrix.} \item{method}{the optimization algorithm used.} \item{intervals}{a numeric vector (\code{c(minTime, knots, maxTime)}) representing the consecutive intervals of constant log-baseline.} \item{nEvents}{a numeric vector containing the number of infections in each of the above \code{intervals}.} \item{model}{if requested, the model information used. This is a list with components \code{"survs"} (data.frame with the id, start, stop and event columns), \code{"X"} (matrix of the epidemic variables), \code{"Z"} (matrix of the endemic variables), \code{"weights"} (the specified \code{weights}), \code{"lambda.smooth"} (the specified \code{lambda.smooth}), \code{"K"} (the penalty matrix used), and \code{"f"} and \code{"w"} (the functions to generate the used epidemic covariates). Be aware that the model only contains those rows with \code{atRiskY == 1}!} \item{data}{if requested, the supplied \code{"epidata"} \code{data}.} \item{call}{the matched call.} \item{formula}{the specified \code{formula}.} \item{terms}{the \code{terms} object used.} } \references{ \enc{Höhle}{Hoehle}, M. (2009), Additive-Multiplicative Regression Models for Spatio-Temporal Epidemics, Biometrical Journal, 51(6):961-978. } \author{ Michael \enc{Höhle}{Hoehle} and Sebastian Meyer } \note{ There are some restrictions to modelling the infection intensity without a baseline hazard rate, i.e. without an intercept in the \code{formula}. Reason: At some point, the optimization algorithm L-BFGS-B tries to set all transmission parameters \eqn{\alpha} to the boundary value 0 and to calculate the (penalized) score function with this set of parameters (all 0). The problem then is that the values of the infection intensities \eqn{lambda_i(t)} are 0 for all \eqn{i} and \eqn{t} and especially at observed event times, which is impossible. Without a baseline, it is not allowed to have all alpha's set to 0, because then we would not observe any infections. Unfortunately, L-BFGS-B can not consider this restriction. Thus, if one wants to fit a model without baseline hazard, the control parameter \code{lower} must be specified in \code{optim.args} so that some alpha is strictly positive, e.g. \code{optim.args = list(lower = c(0,0.001,0.001,0))} and the initial parameter vector \code{par} must not be the zero vector. } \seealso{ \code{\link{as.epidata}} for the necessary data input structure, \code{\link{plot.twinSIR}} for plotting the path of the infection intensity, \code{\link{profile.twinSIR}} for profile likelihood estimation. and \code{\link{simulate.twinSIR}} for the simulation of epidemics following the fitted model. Furthermore, the standard extraction methods \code{\link[=vcov.twinSIR]{vcov}}, \code{\link[=logLik.twinSIR]{logLik}}, \code{\link[=AIC.twinSIR]{AIC}} and \code{\link[=extractAIC.twinSIR]{extractAIC}} are implemented for objects of class \code{"twinSIR"}. } \examples{ data("fooepidata") summary(fooepidata) # fit an overall constant baseline hazard rate fit1 <- twinSIR(~ B1 + B2 + cox(z2), data = fooepidata) fit1 summary(fit1) # fit1 is what is used as data("foofit") in other examples data("foofit") stopifnot(all.equal(fit1, foofit)) # fit a piecewise constant baseline hazard rate with 3 intervals using # _un_penalized ML and estimated coefs from fit1 as starting values fit2 <- twinSIR(~ B1 + B2 + cox(z2), data = fooepidata, nIntervals = 3, optim.args = list(par=c(coef(fit1)[1:2],rep(coef(fit1)[3],3),coef(fit1)[4]))) fit2 summary(fit2) # fit a piecewise constant baseline hazard rate with 9 intervals # using _penalized_ ML and estimated coefs from fit1 as starting values fit3 <- twinSIR(~ B1 + B2 + cox(z2), data = fooepidata, nIntervals = 9, lambda.smooth = 0.1, penalty = 1, optim.args = list( par=c(coef(fit1)[1:2], rep(coef(fit1)[3],9), coef(fit1)[4]))) fit3 summary(fit3) # plot of the 9 log-baseline levels plot(x=fit3$intervals, y=coef(fit3)[c(3,3:11)], type="S") ### -> for more sophisticated intensity plots, see 'plot.twinSIR' plot(fit3) } \keyword{models} \keyword{optimize} surveillance/man/algo.hhh.Rd0000644000175100001440000001754312003774404015531 0ustar hornikusers% algo.hhh \name{algo.hhh} \alias{algo.hhh} \alias{print.ah} \alias{coef.ah} \encoding{latin1} \title{Model fit based on the Held, Hoehle, Hofman paper} \description{ Fits a Poisson/negative binomial model with mean \eqn{\mu_{it}}{\mu_it} (as described in Held/\enc{Höhle}{Hoehle}/Hofmann, 2005) to a multivariate time series of counts. } \usage{ algo.hhh(disProgObj, control=list(lambda=TRUE, neighbours=FALSE, linear=FALSE, nseason = 0, negbin=c("none", "single", "multiple"), proportion=c("none", "single", "multiple"),lag.range=NULL), thetastart=NULL, verbose=TRUE) } \arguments{ \item{disProgObj}{object of class \code{disProg}} \item{control}{control object: \describe{ \item{\code{lambda}}{If \code{TRUE} an autoregressive parameter \eqn{\lambda} is included, if \code{lambda} is a vector of logicals, unit-specific parameters \eqn{\lambda_i} are included. By default, observations \eqn{y_{t-lag}}{y_t-lag} at the previous time points, i.e. \eqn{lag=1}, are used for the autoregression. Other lags can be used by specifying \code{lambda} as a vector of integers, see Examples and Details.} \item{\code{neighbours}}{If \code{TRUE} an autoregressive parameter for adjacent units \eqn{\phi} is included, if \code{neighbours} is a vector of logicals, unit-specific parameters \eqn{\phi_i} are included. By default, observations \eqn{y_{t-lag}}{y_t-lag} at the previous time points, i.e. \eqn{lag=1}, are used for the autoregression. Other lags can be used by specifying \code{neighbours} as a vector of integers.} \item{\code{linear}}{a \code{logical} (or a vector of logicals) indicating wether a linear trend \eqn{\beta} (or a linear trend \eqn{\beta_i} for each unit) is included} \item{\code{nseason}}{Integer number of Fourier frequencies; if \code{nseason} is a vector of integers, each unit \eqn{i} gets its own seasonal parameters } \item{\code{negbin}}{if \code{"single"} negative binomial rather than poisson is used, if \code{"multiple"} unit-specific overdispersion parameters are used.} \item{\code{proportion}}{see Details} \item{\code{lag.range}}{determines which observations are used to fit the model } }} \item{thetastart}{vector with starting values for all parameters specified in the control object (for \code{optim}). } \item{verbose}{if \code{true} information about convergence is printed} } \value{Returns an object of class \code{ah} with elements \item{coefficients}{estimated parameters} \item{se}{estimated standard errors} \item{cov}{covariance matrix} \item{loglikelihood}{loglikelihood} \item{convergence}{logical indicating whether \code{optim} converged or not} \item{fitted.values}{fitted mean values \eqn{\mu_{i,t}}{\mu_it} } \item{control}{specified control object} \item{disProgObj}{specified \code{disProg}-object} \item{lag}{which lag was used for the autoregressive parameters \eqn{lambda} and \eqn{phi} } \item{nObs}{number of observations used for fitting the model} } \details{ This functions fits a model as specified in equations (1.2) and (1.1) in Held et al. (2005) to univariate time series, and as specified in equations (3.3) and (3.2) (with extensions given in equations (2) and (4) in Paul et al., 2008) to multivariate time series. For univariate time series, the mean structure of a Poisson or a negative binomial model is \deqn{\mu_t = \lambda y_{t-lag} + \nu_t }{\mu_t = \lambda y_t-lag + \nu_t } where \deqn{\log( \nu_t) = \alpha + \beta t + \sum_{j=1}^{S}(\gamma_{2j-1} \sin(\omega_j t) + \gamma_{2j} \cos(\omega_j t) ) }{ log(\nu_t) = \alpha + \beta t + \sum_(j=1)^S (\gamma_(2j-1) * sin(\omega_j * t) + \gamma_2j * cos(\omega_j * t) ) } and \eqn{\omega_j = 2\pi j/period }{\omega_j = 2 * \pi * j / period} are Fourier frequencies with known period, e.g. \code{period}=52 for weekly data. Per default, the number of cases at time point \eqn{t-1}, i.e. \eqn{lag=1}, enter as autoregressive covariates into the model. Other lags can also be considered. For multivariate time series the mean structure is \deqn{\mu_{it} = \lambda_i y_{i,t-lag} + \phi_i \sum_{j \sim i} w_{ji} y_{j,t-lag} + n_{it} \nu_{it}}{% \mu_it = \lambda_i * y_i,t-lag + \phi_i * \sum_(j ~ i) w_ji * y_j,t-lag + n_it * \nu_it } where \deqn{\log(\nu_{it}) = \alpha_i + \beta_i t + \sum_{j=1}^{S_i} (\gamma_{i,2j-1} \sin(\omega_j t) + \gamma_{i,2j} \cos(\omega_j t) ) }{% log(\nu_it) = \alpha_i + \beta_i * t + \sum_(j=1)^S_i (\gamma_(i,2j-1) * sin(\omega_j * t) + \gamma_(i,2j) * cos(\omega_j * t) ) } and \eqn{n_{it}}{n_it} are standardized population counts. The weights \eqn{w_{ji}}{w_ji} are specified in the columns of the neighbourhood matrix \code{disProgObj$neighbourhood}. Alternatively, the mean can be specified as \deqn{\mu_{it} = \lambda_i \pi_i y_{i,t-1} + \sum_{j \sim i} \lambda_j (1-\pi_j)/ |k \sim j| y_{j,t-1} + n_{it} \nu_{it}}{% \mu_it = \lambda_i *\pi_i * y_i,t-1 + \sum_(j ~ i) \lambda_j *(1-\pi_j)/|k ~ j| * y_j,t-1 + n_it * \nu_it } if \code{proportion}="single" ("multiple") in the \code{control} argument. Note that this model specification is still experimental. } \note{ For the time being this function is not a surveillance algorithm, but only a modelling approach as described in the papers by Held et. al (2005) and Paul et. al (2008). } \seealso{\code{\link{algo.hhh.grid}}, \code{\link{hhh4}}} \author{M. Paul, L. Held, M. \enc{Höhle}{Hoehle}} \examples{ # univariate time series: salmonella agona cases data(salmonella.agona) model1 <- list(lambda=TRUE, linear=TRUE, nseason=1, negbin="single") algo.hhh(salmonella.agona, control=model1) # multivariate time series: # measles cases in Lower Saxony, Germany data(measles.weser) # same model as above algo.hhh(measles.weser, control=model1) # include autoregressive parameter phi for adjacent "Kreise" # specifiy start values for theta model2 <- list(lambda = TRUE, neighbours = TRUE, linear = FALSE, nseason = 1, negbin = "single") algo.hhh(measles.weser, control = model2, thetastart = rep(0, 20) ) ## weekly counts of influenza and meningococcal infections ## in Germany, 2001-2006 data(influMen) # specify model with two autoregressive parameters lambda_i, overdispersion # parameters psi_i, an autoregressive parameter phi for meningococcal infections # (i.e. nu_flu,t = lambda_flu * y_flu,t-1 # and nu_men,t = lambda_men * y_men,t-1 + phi_men*y_flu,t-1 ) # and S=(3,1) Fourier frequencies model <- list(lambda=c(TRUE,TRUE), neighbours=c(FALSE,TRUE), linear=FALSE,nseason=c(3,1),negbin="multiple") # run algo.hhh algo.hhh(influMen, control=model) # now meningococcal infections in the same week should enter as covariates # (i.e. nu_flu,t = lambda_flu * y_flu,t-1 # and nu_men,t = lambda_men * y_men,t-1 + phi_men*y_flu,t ) model2 <- list(lambda=c(1,1), neighbours=c(NA,0), linear=FALSE,nseason=c(3,1),negbin="multiple") algo.hhh(influMen, control=model2) } \keyword{ts} \keyword{regression} \references{ Held, L., \enc{Höhle}{Hoehle}, M., Hofmann, M. (2005) A statistical framework for the analysis of multivariate infectious disease surveillance counts, Statistical Modelling, \bold{5}, 187--199. Paul, M., Held, L. and Toschke, A. M. (2008) Multivariate modelling of infectious disease surveillance data, Statistics in Medicine, \bold{27}, 6250--6267. } surveillance/man/algo.farrington.threshold.Rd0000644000175100001440000000233211731650466021124 0ustar hornikusers\name{algo.farrington.threshold} \alias{algo.farrington.threshold} \encoding{latin1} \title{Compute prediction interval for a new observation} \description{ Depending on the current transformation \eqn{h(y)= \{y, \sqrt{y}, y^{2/3}\}}, \deqn{V(h(y_0)-h(\mu_0))=V(h(y_0))+V(h(\mu_0))} is used to compute a prediction interval. The prediction variance consists of a component due to the variance of having a single observation and a prediction variance. } \usage{ algo.farrington.threshold(pred,phi,alpha=0.01,skewness.transform="none",y) } \arguments{ \item{pred}{A GLM prediction object} \item{phi}{Current overdispersion parameter (superflous?)} \item{alpha}{Quantile level in Gaussian based CI, i.e. an \eqn{(1-\alpha)\cdot 100\%} confidence interval is computed. } \item{skewness.transform}{Skewness correction, i.e. one of \code{"none"}, \code{"1/2"}, or \code{"2/3"}.} \item{y}{Observed number} } \value{ % Vector of length four with lower and upper bounds of an \eqn{(1-\alpha)\cdot 100\%} confidence interval (first two arguments) and corresponding quantile of observation \code{y} together with the median of the predictive distribution. % } \keyword{regression} surveillance/man/discpoly.Rd0000644000175100001440000000433512236716421015665 0ustar hornikusers\name{discpoly} \alias{discpoly} \title{Polygonal Approximation of a Disc/Circle} \description{ Generates a polygon representing a disc/circle (in planar coordinates) as an object of one of three possible classes: \code{"\link[sp:Polygon-class]{Polygon}"}, \code{"\link[spatstat]{owin}"}, or -- if \pkg{rgeos} (or \pkg{gpclib}) are available -- \code{"\link[rgeos:gpc.poly-class]{gpc.poly}"}. } \usage{ discpoly(center, radius, npoly = 64, class = c("Polygon", "owin", "gpc.poly"), hole = FALSE) } \arguments{ \item{center}{numeric vector of length 2 (center coordinates of the circle).} \item{radius}{single numeric value (radius of the circle).} \item{npoly}{single integer. Number of edges of the polygonal approximation.} \item{class}{class of the resulting polygon (partial name matching applies). For \code{"owin"}, this is just a wrapper around \pkg{spatstat}'s own \code{\link[spatstat]{disc}} function.} \item{hole}{logical. Does the resulting polygon represent a hole?} } \value{ A polygon of class \code{class} representing a circle/disc with \code{npoly} edges accuracy.\cr If \code{class="gpc.poly"} although this formal class is not currently defined (and \pkg{rgeos} is not available), only the \code{pts} slot of a \code{"gpc.poly"} is returned with a warning. } \author{ Sebastian Meyer\cr This function is inspired by the \code{\link[spatstat]{disc}} function from package \pkg{spatstat} authored by Adrian Baddeley and Rolf Turner. } \examples{ ## Construct circles with increasing accuracy and of different spatial classes disc1 <- discpoly(c(0,0), 5, npoly=4, class = "owin") disc2 <- discpoly(c(0,0), 5, npoly=16, class = "Polygon") ## Look at the results print(disc1) plot(disc1, axes=TRUE, main="", border=2) print(disc2) lines(disc2, col=3) if (requireNamespace("rgeos")) { # for the "gpc.poly" class definition disc3 <- discpoly(c(0,0), 5, npoly=64, class = "gpc.poly") print(disc3) plot(disc3, add=TRUE, poly.args=list(border=4)) } ## if one only wants to _draw_ a circle without an object behind symbols(0, 0, circles=5, inches=FALSE, add=TRUE, fg=5) } \seealso{ \link[spatstat]{disc} in package \pkg{spatstat}. } \keyword{datagen} \keyword{spatial} surveillance/man/stsNC-class.Rd0000644000175100001440000000401712334412467016173 0ustar hornikusers\name{stsNC-class} \Rdversion{1.1} \docType{class} \alias{stsNC-class} %New stsNC specific methods \alias{reportingTriangle} \alias{reportingTriangle,stsNC-method} \alias{delayCDF} \alias{delayCDF,stsNC-method} \alias{score} \alias{score,stsNC-method} %Coerce method to convert to sts object \alias{coerce,sts,stsNC-method} \encoding{latin1} \title{Class "stsNC" -- a class inheriting from class \code{sts} which allows the user to store the results of back-projecting surveillance time series} \description{ A class inheriting from class \code{sts}, but with additional slots to store the results of nowcasting. } \section{Slots}{ The slots are as for \code{"\linkS4class{sts}"}. However, a number of additional slots exists. \describe{ \item{\code{reportingTriangle}:}{An array containing the upper and lower limit of the confidence interval.} \item{\code{predPMF}:}{Predictive distribution for each nowcasted time point.} \item{\code{pi}:}{A prediction interval for each nowcasted time point. This is calculated based on \code{predPMF}.} \item{\code{truth}:}{An object of type \code{sts} containing the true number of cases.} \item{\code{delayCDF}:}{List with the CDF of the estimated delay distribution for each method.} \item{\code{SR}:}{Possible output of proper scoring rules} } } \section{Methods}{ The methods are the same as for \code{"\linkS4class{sts}"}. \itemize{ \item{\code{signature(from = "sts", to = "stsNC")}}{ Convert an object of class \code{sts} to class \code{stsNC}. } \item{reportingTriangle}{\code{signature(x = "stsNC")}: extract the \code{reportingTriangle} slot of an \code{stsNC} object. } \item{delayCDF}{\code{signature(x = "stsNC")}: extract the \code{delayCDF} slot of an \code{stsNC} object. } \item{score}{\code{signature(x = "stsNC")}: extract the scoring rules result slot of an \code{stsNC} object. } } } %end section methods. \author{M. \enc{Höhle}{Hoehle}} \keyword{classes} surveillance/man/intersectPolyCircle.Rd0000644000175100001440000000321412236736514020025 0ustar hornikusers\name{intersectPolyCircle} \alias{intersectPolyCircle} \alias{intersectPolyCircle.owin} \alias{intersectPolyCircle.SpatialPolygons} \alias{intersectPolyCircle.gpc.poly} \title{ Intersection of a Polygonal and a Circular Domain } \description{ This is a unifying wrapper around functionality of various packages dealing with spatial data. It computes the intersection of a circular domain and a polygonal domain (whose class defines the specific method). } \usage{ intersectPolyCircle(object, center, radius, ...) \method{intersectPolyCircle}{owin}(object, center, radius, npoly = 32, ...) \method{intersectPolyCircle}{SpatialPolygons}(object, center, radius, npoly = 32, ...) \method{intersectPolyCircle}{gpc.poly}(object, center, radius, npoly = 32, useGEOS = FALSE, ...) } \arguments{ \item{object}{a polygonal domain of one of the supported classes.} \item{center,radius,npoly}{see \code{\link{discpoly}}.} \item{useGEOS}{logical indicating if package \pkg{rgeos} (\code{\link[rgeos]{gIntersection}}) should be used instead of package \pkg{gpclib}. The latter (default) requires explicit acceptance of \pkg{gpclib}'s restricted license via \code{\link{surveillance.options}(gpclib=TRUE)}.} \item{\dots}{potential further arguments (from the generic).} } \value{ a polygonal domain of the same class as the input \code{object}. } \author{ Sebastian Meyer } \seealso{ \code{\link{discpoly}} to generate a polygonal approximation to a disc } \examples{ data("letterR", package="spatstat") plot(letterR) plot(intersectPolyCircle(letterR, c(3,2), 1), add=TRUE, col=2, lwd=3) } \keyword{spatial} \keyword{manip} surveillance/man/salmAllOnset.Rd0000644000175100001440000000120212531621533016420 0ustar hornikusers\docType{data} \name{salmAllOnset} \alias{salmAllOnset} \title{Salmonella cases in Germany 2001-2014 by data of symptoms onset} \format{A sts-object} \usage{ data(salmAllOnset) } \description{ A dataset containing the reported number of cases of Salmonella in Germany 2001-2014 aggregated by data of disease onset. The slot \code{control} contains a matrix \code{reportingTriangle$n} with the reporting triangle as described in Salmon et al. } \references{ Bayesian outbreak detection in the presence of reporting delays, Salmon, M., Schumacher, D., Stark, K., \enc{H?hle}{Hoehle}, M. (2015), in revision. } \keyword{datasets} surveillance/man/sts-class.Rd0000644000175100001440000001666012571306474015764 0ustar hornikusers\name{sts-class} \Rdversion{1.1} \docType{class} \alias{sts} \alias{sts-class} % methods to access and replace slots \alias{alarms,sts-method} \alias{alarms<-,sts-method} \alias{upperbound,sts-method} \alias{upperbound<-,sts-method} \alias{control,sts-method} \alias{control<-,sts-method} \alias{epoch,sts-method} \alias{epoch<-,sts-method} \alias{observed,sts-method} \alias{observed<-,sts-method} \alias{population,sts-method} \alias{population<-,sts-method} \alias{multinomialTS,sts-method} \alias{multinomialTS<-,sts-method} \alias{neighbourhood,sts-method} \alias{neighbourhood<-,sts-method} % other access methods \alias{dim,sts-method} \alias{dimnames,sts-method} \alias{epochInYear} \alias{epochInYear,sts-method} \alias{year} \alias{year,sts-method} % constructor and conversion methods \alias{initialize,sts-method} \alias{as.data.frame,sts-method} \alias{coerce,sts,ts-method} \alias{coerce,ts,sts-method} \alias{as.xts.sts} \encoding{latin1} \title{Class \code{"sts"} -- surveillance time series} \description{ This is a lightweight S4 class to implement multivariate time series of counts used for public health surveillance data. The class captures the time series data as well as the spatial layout of the regions, where the data originate from. } \section{Slots}{ \describe{ \item{\code{epoch}:}{Object of class \code{numeric} or specifying the time of observation. In old versions of the package this used to be the week numbers. However, depending on the \code{freq} argument, it can now be day or month as well. Furthermore, if \code{epochAsDate=TRUE} then it is the \code{as.numeric} representation of \code{Date} objects giving the exact date of the observation. Note: This slot used to be called \code{week} in earlier versions of the package, but has now been renamed to reflect the greater flexibility in the choice of observation time.} \item{\code{freq}:}{If weekly data \code{freq} corresponds to 52, in case of monthly data \code{freq} is 12.} \item{\code{start}:}{vector of length two denoting the year and the sample number (week, month, etc.) of the first observation} \item{\code{observed}:}{A matrix of size \code{length(epoch)} times the number of regions containing the weekly/monthly number of counts in each region. The colnames of the matrix should match the ID values of the shapes in the \code{map} slot.} \item{\code{state}:}{Matrix with the same dimension as \code{observed} containing booleans whether at the specific time point there was an outbreak in the region} \item{\code{alarm}:}{Matrix with the same dimension as \code{observed} specifying whether an outbreak detection algorithm declared a specific time point in the region as having an alarm. If the object containins just observations then this slot is null. } \item{\code{upperbound}:}{Matrix with upper bound values } \item{\code{neighbourhood}:}{Symmetric matrix of size \eqn{(number of regions)^2} describing the neighbourhood structure. It may either be a binary adjacency matrix or contain neighbourhood orders.} \item{\code{populationFrac}:}{A \code{matrix} of population fractions (with dimensions \code{dim(observed)}).} \item{\code{map}:}{Object of class \code{SpatialPolygonsDataFrame} providing a shape of the areas which are monitored. } \item{\code{control}:}{Object of class \code{list}, this is a rather free data type to be returned by the surveillance algorithms. } \item{\code{epochAsDate}:}{Object of class \code{"logical"} stating whether to use a ISO 8601 representation of the \code{epoch} slot using the \code{Date} class (\code{epochAsDate=TRUE}) or just to interpret the epochs as numerics (\code{epochAsDate=FALSE}).} \item{\code{multinomialTS}:}{Object of class \code{"logical"} stating whether to interpret the object as \code{observed} out of \code{population}, i.e. a multinomial interpretation instead of a count interpretation.} } } \section{Methods}{ \describe{ \item{dim}{\code{signature(x = "sts")}: extract matrix dimensions of \code{observed} using \code{\link{dim}}.} \item{observed}{\code{signature(x = "sts")}: extract the \code{observed} slot of an \code{sts} object.} \item{population}{\code{signature(x = "sts")}: extract the \code{population} slot of an \code{sts} object.} \item{multinomialTS}{\code{signature(x = "sts")}: extract the \code{multinomialTS} slot of an \code{sts} object.} \item{neighbourhood}{\code{signature(x = "sts")}: extract the \code{neighbourhood} slot of an \code{sts} object.} \item{alarms}{\code{signature(x = "sts")}: extract the \code{alarm} slot of an \code{sts} object.} \item{upperbound}{\code{signature(x = "sts")}: extract the \code{upperbound} slot of an \code{sts} object.} \item{control}{\code{signature(x = "sts")}: extract the \code{control} slot of an \code{sts} object.} \item{epoch}{\code{signature(x = "sts")}: extract the \code{epoch} slot of an \code{sts} object. If ISO dates are used then the returned object is of class \code{Date}.} \item{epochInYear}{\code{signature(x = "sts")}: Returns the epoch number within the year of the \code{epoch} slot.} \item{dimnames}{\code{signature(x="sts")}: extract the \code{\link{dimnames}} of the \code{observed} matrix.} \item{initialize}{\code{signature(x="sts")}: the internal function \code{init.sts} is called, which assigns all slots. } \item{aggregate}{\code{signature(x="sts")}: see \code{\link{aggregate,sts-method}}} \item{year}{\code{signature(x = "sts")}: extracts the corresponding year of each observation of \code{x}} \item{as.data.frame}{\code{signature(x = "sts")}: converts the \code{observed}, \code{epoch}, \code{state} and \code{alarm} slots of \code{x} into a data frame with column names matching the colnames of the respective slots. Useful when one wants to fit a model based on the object} \item{plot}{\code{signature(x="sts",y="missing")}: this method is the entry point to a collection of plot variants. It is also the successor of the \code{\link{plot.disProg}} and \code{\link{plot.survRes}} functions. The type of plot is specified using a formula \code{type}. See \code{\link{stsplot}} for details. } } } \author{M. \enc{Höhle}{Hoehle}} \examples{ if (requireNamespace("maptools")) { # load disProg-object "ha" and convert to S4-class "sts" data("ha") shpfile <- system.file("shapes/berlin.shp",package="surveillance") ha.sts <- disProg2sts(ha, map=maptools::readShapePoly(shpfile,IDvar="SNAME")) } else { data("ha.sts") # is almost identical to the above except that German umlauts # have been replaced in 'ha.sts@map@data$BEZIRK' for compatibility reasons } ha.sts plot(ha.sts, type = observed ~ 1 | unit) ## convert ts/mts object to sts z <- ts(matrix(rpois(300,10), 100, 3), start = c(1961, 1), frequency = 12) z.sts <- as(z, "sts") plot(z.sts) ## conversion to the quasi-standard "xts" class is also possible ## -> enables interactive time series plots using package "dygraphs" if (require("xts")) { z.xts <- as.xts(z.sts) plot(z.xts) } } \keyword{classes} surveillance/man/plapply.Rd0000644000175100001440000000726612477533104015530 0ustar hornikusers\name{plapply} \alias{plapply} \title{Verbose and Parallel \code{lapply}} \description{ Verbose and parallelized version of \code{lapply} wrapping around \code{\link[parallel]{mclapply}} and \code{\link[parallel]{parLapply}} in the base package \pkg{parallel}. This wrapper can take care of the \code{.Random.seed} and print progress information (not for cluster-based parallelization). With the default arguments it equals \code{lapply} enriched by a progress bar. } \usage{ plapply(X, FUN, ..., .parallel = 1, .seed = NULL, .verbose = TRUE) } \arguments{ \item{X,FUN,\dots}{see \code{\link{lapply}}.} \item{.parallel}{ the number of processes to use in parallel operation, or a \code{"cluster"} object (see \code{\link[parallel]{makeCluster}}). If a number, \code{\link[parallel]{mclapply}} (forking) is used on Unix-alikes, whereas on Windows \code{\link[parallel]{parLapply}} is used on a newly created cluster of the specified size, which is stopped when exiting the function. By default (\code{.parallel = 1}), the basic \code{\link{lapply}} is used. } \item{.seed}{ If set (non-\code{NULL}), results involving random number generation become reproducible. If using a cluster (see the \code{.parallel} argument), \code{\link[parallel]{clusterSetRNGStream}} is called with the specified \code{.seed} before running \code{parLapply}. Otherwise, \code{\link{set.seed}(.seed)} is called and the \code{\link{RNGkind}} is changed to \code{"L'Ecuyer-CMRG"} if \code{.parallel > 1} (see the section on random numbers in the documentation of \code{mcparallel} in package \pkg{parallel}). % no link to mcparallel since it is not available on Windows (R-3.1.2) If \code{.seed} is non-\code{NULL}, the original \code{\link{.Random.seed}} will be restored \code{on.exit} of the function. } \item{.verbose}{ if and how progress information should be displayed, i.e., what to do on each exit of \code{FUN}. This is unsupported and ignored for cluster-based parallelization and primitive \code{FUN}ctions. The default (\code{TRUE}) will show a \code{\link{txtProgressBar}} (if \code{.parallel = 1} in an \code{\link{interactive}} \R session) or \code{cat(".")} (otherwise). Other choices for the dot are possible by specifying the desired symbol directly as the \code{.verbose} argument. Alternatively, \code{.verbose} may be any custom call or expression to be executed \code{\link{on.exit}} of \code{FUN} and may thus involve any objects from the local evaluation environment. } } \value{ a list of the results of calling \code{FUN} on each value of \code{X}. } \author{ Sebastian Meyer } \seealso{ \code{\link[parallel]{mclapply}} and \code{\link[parallel]{parLapply}} } \examples{ ## example inspired by help("lapply") x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE,FALSE,FALSE,TRUE)) ## if neither parallel nor verbose then this simply equals lapply() plapply(x, quantile, probs = 1:3/4, .verbose = FALSE) ## verbose lapply() -- not really useful for such fast computations res <- plapply(x, quantile, probs = 1:3/4, .verbose = TRUE) res <- plapply(x, quantile, probs = 1:3/4, .verbose = "|") res <- plapply(x, quantile, probs = 1:3/4, .verbose = quote(cat("length(x) =", length(x), "\n"))) ## setting the seed for reproducibility of results involving the RNG samp <- plapply(as.list(1:3), runif, .seed = 1) ## parallel lapply() res <- plapply(x, quantile, probs = 1:3/4, .parallel = 2) ## using a predefined cluster library("parallel") cl <- makeCluster(getOption("cl.cores", 2)) res <- plapply(x, quantile, probs = 1:3/4, .parallel = cl) stopCluster(cl) } \keyword{iteration} \keyword{list} surveillance/man/test.Rd0000644000175100001440000000154111745750766015030 0ustar hornikusers\name{test} \alias{test} \encoding{latin1} \title{Print xtable for several diseases and the summary} \description{Just a test method} \usage{ test(data = c("k1", "m5"), range = 157:339) } \arguments{ \item{data}{vector of abbreviations for the diseases} \item{range}{timepoints to evaluate} } \value{ \item{xtable}{printed latex tables} } \details{The specified datasets are readed, corrected, enlarged and sent to the RKI 1, RKI 2, RKI 3 and Bayes system. The quality values are computed and printed for each diesease as latex table. Additonally a summary latex table for all diseases is printed } \author{M. \enc{Höhle}{Hoehle}, A. Riebler, C. Lang} \examples{ test( c("m1", "m2", "m3", "m4", "m5", "q1_nrwh", "q2", "s1", "s2", "s3", "k1", "n1", "n2", "h1_nrwrp") ) } \keyword{misc} surveillance/man/nowcast.Rd0000755000175100001440000002511012502026556015511 0ustar hornikusers\encoding{latin1} \name{nowcast} \alias{nowcast} %Internal functions \alias{nowcast.fit} \alias{dist.median} \alias{outside.ci} \alias{logS} \alias{RPS} \title{ Adjust a univariate time series of counts for observed but-not-yet-reported events } \description{ Nowcasting can help to obtain up-to-date information on trends during a situation where reports about events arrive with delay. For example in public health reporting, reports about important indicators (such as occurrence of cases) are prone to be delayed due to for example manual quality checking and reporting system hierarchies. Altogether, the delays are subject to a delay distribution, which may or may not vary over time. } \usage{ nowcast(now,when,data,dEventCol="dHospital",dReportCol="dReport", method=c("bayes.notrunc","bayes.notrunc.bnb","lawless","bayes.trunc", "unif","bayes.trunc.ddcp"), aggregate.by="1 day", D=15, m=NULL, control=list( dRange=NULL,alpha=0.05,nSamples=1e3, N.tInf.prior=c("poisgamma","pois","unif"), N.tInf.max=300, gd.prior.kappa=0.1, ddcp=list(ddChangepoint=NULL, logLambda=c("iidLogGa","tps","rw1","rw2"), tau.gamma=1,eta.mu=NULL, eta.prec=NULL, mcmc=c(burnin=2500,sample=10000,thin=1)), score=FALSE,predPMF=FALSE)) } \arguments{ \item{now}{ an object of class \code{Date} denoting the day at which to do the nowcast. This corresponds to \eqn{T} in the notation of \enc{Höhle}{Hoehle} and an der Heiden (2014). } \item{when}{a vector of \code{Date} objects denoting the day(s) for which the projections are to be done. One needs to ensure that each element in \code{when} is smaller or equal to \code{now}. } \item{data}{A data frame with one row per case -- for each case on needs information on the day of the event (e.g. hospitalization) and the day of report of this event. } \item{dEventCol}{The name of the column in \code{data} which contains the date of the event, e.g. hospitalization. Default: \code{"dHospital"}. } \item{dReportCol}{Name of the column in \code{data} containing the date at which the report arrives at the respective register. Default: \code{"dReport"}. } \item{method}{A vector of strings denoting the different methods for doing the nowcasting. Note that results of the first name in this list are officially returned by the function. However, it is possible to specify several methods here, e.g., in order to compare score evaluations. Details of the methods are described in \enc{Höhle}{Hoehle} and an der Heiden (2014). \describe{ \item{code{"unif"}}{} \item{code{"bayes.notrunc"}}{A Bayesian procedure ignoring truncation.} \item{code{"bayes.notrunc.bnb"}}{A fast Bayesian procedure ignoring truncation and which calculates the adjustment per-time (i.e. ignoring other delays) using the negative binomial.} \item{code{"lawless"}}{A discretized version of the Gaussian predictive distribution suggested in Lawless (1994).} \item{code{"bayes.trunc"}}{Bayesian method based on the generalized Dirichlet distribution, which is the conjugate prior-posterior for the delay distribution PMF under right-truncated sampling as shown in HadH (2014).} \item{code{"bayes.trunc.ddcp"}}{Fully Bayesian method allowing for change-points in the delay distribution, e.g., due to speed-ups in the reporting process. A discrete-survival model is used for the delay distribution. Details of the methods are described in HadH (2014). Note: This method requires that the JAGS program is installed on the system.} } } \item{aggregate.by}{Time scale used for the temporal aggregation of the records in the data \code{data}. See \code{\link{linelist2sts}} and \code{\link{seq.Date}} for further information.} \item{D}{Maximum possible or maximum relevant delay (unit: \code{aggregate.by}). Default: 15.} \item{m}{Moving window for the estimation of the delay distribution. Default: \code{NULL}, i.e. take all values at all times.} \item{control}{A list with named arguments controlling the functionality of the nowcasting. \describe{ \item{dRange}{Default: \code{NULL}. In this case the \code{dEventCol} column is used to extract the first and last available in \code{data}.} \item{alpha}{Equal tailed (1-\eqn{\alpha}{alpha})*100\% prediction intervals are calculated. Default: 0.05.} \item{nSamples}{Number of PMF samples in the \code{bayes.*} procedures. Note: Entire vectors containing the PMF on the grid from 0 to \code{N.tInf.max} are drawn and which are then combined. The argument does not apply to the \code{bayes.trunc.ddcp} method.} \item{N.tInf.prior}{Prior distribution of \eqn{N(t,\infty)}{N(t,Inf)}. Applies only to the \code{bayes.*} except \code{bayes.bayes.ddcp} methods. See example on how to control the distribution parameters.} \item{N.tInf.max}{Limit of the support of \eqn{N(t,\infty)}{N(t,Inf)}. The value needs to be high enough such that at this limit only little of the predictive distribution is right-truncated. Default: 300.} \item{gd.prior.kappa}{Concentration parameter for the Dirichlet prior for the delay distribution on \eqn{0,...,D}. Default: 0.1. Note: The procedure is quite sensitive to this parameters in case only few cases are available.} \item{ddcp}{A list specifying the change point model for the delay distribution. This method should only be used if detailed information about changes in the delay distribution are available as, e.g., in the case of the STEC O104:H4 outbreak. The components are as follows: \describe{ \item{\code{ddChangepoint}}{Vector of Date objects corresponding to the changepoints} \item{\code{logLambda}}{Prior on the spline. One of \code{c("iidLogGa","tps","rw1","rw2")}.} \item{\code{tau.gamma}}{} \item{\code{eta.mu}}{} \item{\code{eta.prec}}{} \item{\code{mcmc}}{A names vector of length 3 containing burn-in, number of samples and thinning for the three MCMC chains which are ran. The values are passed on to \code{runjags}. Default: \code{c(burnin=2500,sample=10000,thin=1)}.} } } \item{score}{Compute scoring rules. Default: \code{FALSE}. The computed scores are found in the \code{SR} slot of the result.} \item{predPMF}{Boolean whether to teturn the probability mass functions of the individual forecasts (Default: \code{FALSE}). The result can be found in the \code{control} slot of the return object.} } } } \details{ The methodological details of the nowcasting procedures are described in \enc{Höhle}{Hoehle} M and an der Heiden M (2014). } \value{ \code{nowcast} returns an object of \code{"\linkS4class{stsNC}"}. The \code{upperbound} slot contains the median of the method specified at the first position the argument \code{method}. The slot \code{pi} (for prediction interval) contains the equal tailed (1-\eqn{\alpha}{alpha})*100\% prediction intervals, which are calculated based on the predictive distributions in slot \code{predPMF}. Furthermore, slot \code{truth} contains an \code{sts} object containing the true number of cases (if possible to compute it based on the data in \code{data}. Finally, slot \code{SR} contains the results for the proper scoring rules (requires truth to be calculable). } \references{ \enc{Höhle}{Hoehle} M and an der Heiden M (2014), Bayesian Nowcasting during the STEC O104:H4 Outbreak in Germany, 2011, Biometrics, 70(4):993-1002. \url{http://dx.doi.org/10.1111/biom.12194}. A preprint is available as \url{http://people.su.se/~mhh/pubs/hoehle_anderheiden2014-preprint.pdf}. } \author{ Michael \enc{Höhle}{Hoehle} } \note{ Note: The \code{bayes.trunc.ddcp} uses the JAGS software together with the R package \code{runjags} to handle the parallelization of the MCMC using the runjags \code{rjparallel} method. You need to manually install JAGS on your computer for the package to work -- see \url{http://mcmc-jags.sourceforge.net/} and the documentation of \code{runjags} for details. Note: The function is still under development and might change in the future. Unfortunately, little emphasis has so far been put on making the function easy to understand and use. } \examples{ data("husO104Hosp") #Extract the reporting triangle at a specific day t.repTriangle <- as.Date("2011-07-04") #Use 'void' nowcasting procedure (we just want the reporting triangle) nc <- nowcast(now=t.repTriangle,when=t.repTriangle, dEventCol="dHosp",dReportCol="dReport",data=husO104Hosp, D=15,method="unif") #Show reporting triangle reportingTriangle(nc) #Perform Bayesian nowcasting assuming the delay distribution is stable over time nc.control <- list(N.tInf.prior=structure("poisgamma", mean.lambda=50,var.lambda=3000), nSamples=1e2) t.repTriangle <- as.Date("2011-06-10") when <- seq(t.repTriangle-3,length.out=10,by="-1 day") nc <- nowcast(now=t.repTriangle,when=when, dEventCol="dHosp",dReportCol="dReport",data=husO104Hosp, D=15,method="bayes.trunc",control=nc.control) #Show time series and posterior median forecast/nowcast plot(nc,xaxis.tickFreq=list("\%d"=atChange,"\%m"=atChange), xaxis.labelFreq=list("\%d"=at2ndChange),xaxis.labelFormat="\%d-\%b", xlab="Time (days)",lty=c(1,1,1,1),lwd=c(1,1,2)) \dontrun{ nc.control.ddcp <- modifyList(nc.control, list(gd.prior.kappa=0.1, ddcp=list(ddChangepoint=as.Date(c("2011-05-23")), logLambda="tps", tau.gamma=1, mcmc=c(burnin=1000,sample=1000,thin=1)))) ###Using runjags to do Bayesian model with changepoint(s) -- this might take ###a while. nc.ddcp <- nowcast(now=t.repTriangle,when=when, dEventCol="dHosp",dReportCol="dReport", data=husO104Hosp, aggregate.by="1 day", method="bayes.trunc.ddcp", D=15, control=nc.control.ddcp) plot(nc.ddcp,legend.opts=NULL,, xaxis.tickFreq=list("\%d"=atChange,"\%m"=atChange), xaxis.labelFreq=list("\%d"=at2ndChange),xaxis.labelFormat="\%d-\%b", xlab="Time (days)",lty=c(1,1,1,1),lwd=c(1,1,2)) lambda <- attr(delayCDF(nc.ddcp)[["bayes.trunc.ddcp"]],"model")$lambda showIdx <- seq(which( max(when) == epoch(nc.ddcp))) #seq(ncol(lambda)) matlines( showIdx,t(lambda)[showIdx,],col="gray",lwd=c(1,2,1),lty=c(2,1,2)) legend(x="topright",c(expression(lambda(t)),"95% CI"),col="gray",lwd=c(2,1),lty=c(1,2)) } } \keyword{models} surveillance/man/hhh4_predict.Rd0000644000175100001440000000216112262733137016401 0ustar hornikusers\name{hhh4_predict} \alias{predict.hhh4} \title{Predictions from a \code{hhh4} Model} \description{ Get fitted (component) means from a \code{\link{hhh4}} model. } \usage{ \method{predict}{hhh4}(object, newSubset=object$control$subset, type="response", \dots) } \arguments{ \item{object}{fitted \code{\link{hhh4}} model (class \code{"hhh4"}).} \item{newSubset}{subset of time points for which to return the predictions. Defaults to the subset used for fitting the model, and must be a subset of \code{1:nrow(object$stsObj)}.} \item{type}{the type of prediction required. The default (\code{"response"} or, equivalently, \code{"mean"}) is on the scale of the response variable (mean = endemic plus epidemic components). The alternatives are: \code{"endemic"}, \code{"epidemic"}, \code{"epi.own"} (i.e. the autoregresssive part), and \code{"epi.neighbours"} (i.e. the spatio-temporal part).} \item{\dots}{unused (argument of the generic).} } \value{ matrix of fitted means for each time point (of \code{newSubset}) and region. } \author{Michaela Paul and Sebastian Meyer} \keyword{methods} \keyword{models} surveillance/man/stsAggregate.Rd0000644000175100001440000000244712307672335016465 0ustar hornikusers\name{aggregate-methods} \docType{methods} \alias{aggregate,sts,ANY,ANY-method} \alias{aggregate,sts-method} \title{Aggregate the the series of an sts object} \description{ Method to aggregate the matrix slots of an sts object. Either the time series is aggregated so a new sampling frequency of \code{nfreq} units per time slot is obtained (i.e as in \code{\link{aggregate.ts}}) or the aggregation is over all \code{ncol} units. Note: The function is not 100\% consistent with what the generic function \code{\link{aggregate}} does. } \section{Methods}{ \describe{ \item{x = "sts", by="time", nfreq="all",...}{ \describe{ \item{x}{an object of class \code{sts}} \item{by}{a string being either "time" or "unit"} \item{nfreq}{new sampling frequency if \code{by=="time"}. If \code{nfreq=="all"} then all time instances are summed.} \item{...}{not used} } returns an object of class \code{sts} } } } \details{ Warning: Aggregation by unit sets the upperbound slot to \code{NA} and the MAP object is left as-is, but the object cannot be plotted by unit any longer. } \seealso{ \code{\link{aggregate}} } \examples{ data("ha") has4 <- disProg2sts(ha) dim(has4) dim(aggregate(has4,by="unit")) dim(aggregate(has4,nfreq=13)) } \keyword{methods} surveillance/man/algo.rogerson.Rd0000644000175100001440000001105311731650466016616 0ustar hornikusers\name{algo.rogerson} \alias{algo.rogerson} \title{Modified CUSUM method as proposed by Rogerson and Yamada (2004)} \description{ Modified Poisson CUSUM method that allows for a time-varying in-control parameter \eqn{\theta_{0,t}} as proposed by Rogerson and Yamada (2004). The same approach can be applied to binomial data if \code{distribution="binomial"} is specified. } \usage{ algo.rogerson(disProgObj, control = list(range = range, theta0t = NULL, ARL0 = NULL, s = NULL, hValues = NULL, distribution = c("poisson","binomial"), nt = NULL, FIR=FALSE, limit = NULL, digits = 1)) } \arguments{ \item{disProgObj}{object of class \code{disProg} that includes a matrix with the observed number of counts} \item{control}{ list with elements \describe{ \item{range}{vector of indices in the observed matrix of \code{disProgObj} to monitor} \item{theta0t}{matrix with in-control parameter, must be specified} \item{ARL0 }{ desired average run length \eqn{\gamma} } \item{s}{change to detect, see \code{\link{findH}} for further details} \item{hValues}{matrix with decision intervals \code{h} for a sequence of values \eqn{\theta_{0,t}} (in the range of \code{theta0t}) } \item{distribution}{\code{"poisson"} or \code{"binomial"} } \item{nt}{optional matrix with varying sample sizes for the binomial CUSUM} \item{FIR}{a FIR CUSUM with head start \eqn{\frac{\code{h}}{2}} is applied to the data if \code{TRUE}, otherwise no head start is used; see details } \item{limit}{numeric that determines the procedure after an alarm is given, see details} \item{digits}{the reference value and decision interval are rounded to \code{digits} decimal places. Defaults to 1 and should correspond to the number of digits used to compute \code{hValues} } } } } \details{ The CUSUM for a sequence of Poisson or binomial variates \eqn{x_t} is computed as \deqn{S_t = \max \{0, S_{t-1} + c_t (x_t- k_t)\} , \, t=1,2,\ldots ,} where \eqn{S_0=0} and \eqn{c_t=\frac{h}{h_t} }; \eqn{k_t} and \eqn{h_t} are time-varying reference values and decision intervals. An alarm is given at time \eqn{t} if \eqn{S_t \geq h}. If \code{FIR=TRUE}, the CUSUM starts with a head start value \eqn{S_0=\frac{\code{h}}{2}} at time \eqn{t=0}. After an alarm is given, the FIR CUSUM starts again at this head start value. The procedure after the CUSUM gives an alarm can be determined by \code{limit}. Suppose that the CUSUM signals at time \eqn{t}, i.e. \eqn{S_t \geq h}. %as suggested by Kenett and Pollack (1983) for the standard CUSUM. For numeric values of \code{limit}, the CUSUM is bounded above after an alarm is given, % at time \eqn{t-1}, i.e. \eqn{S_{t}} is set to \eqn{ \min\{\code{limit} \cdot h,S_{t}\} }. %\deqn{S_{t} = \max \{0, S_{t-1} + c_t(x_t - k_t)\}. } Using \code{limit}=0 corresponds to resetting \eqn{S_t} to zero after an alarm as proposed in the original formulation of the CUSUM. If \code{FIR=TRUE}, \eqn{S_{t}} is reset to \eqn{ \frac{\code{h}}{2} } (i.e. \code{limit}=\eqn{\frac{\code{h}}{2} } ). If \code{limit=NULL}, no resetting occurs after an alarm is given. } \note{\code{algo.rogerson} is a univariate CUSUM method. If the data are available in several regions (i.e. \code{observed} is a matrix), multiple univariate CUSUMs are applied to each region. } \value{Returns an object of class \code{survRes} with elements \item{alarm}{indicates whether the CUSUM signaled at time \eqn{t} or not (1 = alarm, 0 = no alarm) } \item{upperbound}{CUSUM values \eqn{S_{t}} } \item{disProgObj}{\code{disProg} object } \item{control}{list with the alarm threshold \eqn{h} and the specified control object} } \examples{ # simulate data set.seed(123) data <- simHHH(control = list(coefs = list(alpha =-0.5, gamma = 0.4, delta = 0.6)),length=300) # extract mean used to generate the data lambda <- data$endemic # determine a matrix with h values hVals <- hValues(theta0 = 10:150/100, ARL0=500, s = 1, distr = "poisson") # apply modified Poisson CUSUM res <- algo.rogerson(data$data, control=c(hVals, list(theta0t=lambda,range=1:300))) plot(res) } \references{ Rogerson, P. A. and Yamada, I. Approaches to Syndromic Surveillance When Data Consist of Small Regional Counts. Morbidity and Mortality Weekly Report, 2004, 53/Supplement, 79-85 % %Kenett, R. and Pollack, M. On Sequential Detection of a Shift in the %Probability of a Rare Event. Journal of the American Statistical Association, %1983, 78, 389-395 } \seealso{\code{\link{hValues}}} \keyword{classif} surveillance/man/epidata_plot.Rd0000644000175100001440000001526012420560635016502 0ustar hornikusers\name{epidata_plot} \alias{plot.epidata} \alias{plot.summary.epidata} \alias{stateplot} \title{ Plotting the Evolution of an Epidemic } \description{ Functions for plotting the evolution of epidemics. The \code{\link{plot}} methods for \code{\link{class}}es \code{"\link{epidata}"} and \code{"summary.epidata"} plots the numbers of susceptible, infectious and recovered (= removed) individuals by step functions along the time axis. The function \code{stateplot} shows individual state changes along the time axis. } \usage{ \method{plot}{summary.epidata}(x, lty = c(2, 1, 3), lwd = 2, col = c("#1B9E77", "#D95F02", "#7570B3"), col.hor = col, col.vert = col, xlab = "Time", ylab = "Number of individuals", xlim = NULL, ylim = NULL, legend.opts = list(), do.axis4 = NULL, panel.first = grid(), rug.opts = list(), which.rug = c("infections", "removals", "susceptibility", "all"), ...) \method{plot}{epidata}(x, ...) stateplot(x, id, ...) } \arguments{ \item{x}{ an object inheriting from class \code{"epidata"} or \code{"summary.epidata"}. In the former case, its summary is calculated and the function continues as in the latter case. The \code{plot} method for class \code{"epidata"} is a simple wrapper for \code{plot.summary.epidata} implemented as \code{plot(summary(x, ...))}. } \item{lty, lwd}{ vectors of length 3 containing the line types and widths, respectively, for the numbers of susceptible, infectious and removed individuals (in this order). By default, all lines have width 1 and the line types are dashed (susceptible), solid (infectious) and dotted (removed), respectively. To omit the drawing of a specific line, just set the corresponding entry in \code{lty} to 0. The vectors are recycled if necessary. For information about the different \code{lty} and \code{lwd} codes, see the help pages of \code{\link{par}}. } \item{col, col.hor, col.vert}{ vectors of length 3 containing the line colors for the numbers of susceptible, infectious and removed individuals (in this order). \code{col.hor} defines the color for the horizontal parts of the step function, whilst \code{col.vert} defines the color for its vertical parts. The argument \code{col} is just short for \code{col.hor = col} and \code{col.vert = col}. The default \code{col} vector corresponds to \code{\link[RColorBrewer]{brewer.pal}("Dark2",n=3)} from the \pkg{RColorBrewer} package. The vectors are recycled if necessary. For information about the possible values of \code{col}, see the help pages of \code{\link{par}}. } \item{xlab, ylab}{ axis labels, default to "Time" and "Number of individuals", respectively. } \item{xlim, ylim}{ the x and y limits of the plot in the form \code{c(xmin, xmax)} and \code{c(ymin, ymax)}, respectively. By default, these are chosen adequately to fit the time range of the epidemic and the number of individuals. } \item{legend.opts}{ if this is a list (of arguments for the \code{\link{legend}} function), a legend will be plotted. The defaults are as follows: \describe{ \item{\code{x}:}{\code{"topright"}} \item{\code{inset}:}{\code{c(0,0.02)}} \item{\code{legend}:}{\code{c("susceptible", "infectious", "removed")}} \item{\code{lty},\code{lwd},\code{col}:}{same as the arguments \code{lty}, \code{lwd}, and \code{col.hor} of the main function} \item{\code{bty}:}{\code{"n"}} } } \item{do.axis4}{ logical indicating if the final numbers of susceptible and removed individuals should be indicated on the right axis. The default \code{NULL} means \code{TRUE}, if \code{x} represents a SIR epidemic and \code{FALSE} otherwise, i.e. if the epidemic is SI, SIS or SIRS. } \item{panel.first}{ an expression to be evaluated after the plot axes are set up but before any plotting takes place. By default, a standard grid is drawn. } \item{rug.opts}{ either a list of arguments passed to the function \code{\link{rug}} or \code{NULL} (or \code{NA}), in which case no \code{rug} will be plotted. By default, the argument \code{ticksize} is set to 0.02, \code{col} is set to the color according to \code{which.rug} (black if this is \code{"all"}), and \code{quiet} is set to \code{TRUE}. Note that the argument \code{x}, which contains the locations for the \code{rug} is fixed internally and can not be modified. The argument \code{which.rug} (see below) determines the locations to mark. } \item{which.rug}{ By default, tick marks are drawn at the time points of infections. Alternatively, one can choose to mark only \code{"removals"}, \code{"susceptibilities"} (i.e. state change from R to S) or \code{"all"} events. } \item{id}{ single character string or factor of length 1 specifying the individual for which the \code{stateplot} should be established. } \item{\dots}{ For \code{plot.summary.epidata}: further graphical parameters passed to \code{plot}, \code{lines} and \code{axis}, e.g. \code{main}, \code{las}, \code{cex.axis} (etc.) and \code{mgp}.\cr For \code{plot.epidata}: arguments passed to \code{plot.summary.epidata}.\cr For \code{stateplot}: arguments passed to \code{\link{plot.stepfun}} or \code{\link{plot.function}} (if \code{id} had no events during the observation period). By default, \code{xlab="time"}, \code{ylab="state"}, \code{xlim=attr(x,"timeRange")}, \code{xaxs="i"} and \code{do.points=FALSE}. } } \value{ \code{plot.summary.epidata} (and \code{plot.epidata}) invisibly returns the matrix used for plotting, which contains the evolution of the three counters.\cr \code{stateplot} invisibly returns the function, which was plotted, typically of class \code{"stepfun"}, but maybe of class \code{"function"}, if no events have been observed for the individual in question (then the function always returns the initial state). The vertical axis of \code{stateplot} can range from 1 to 3, where 1 corresponds to \emph{S}uscepible, 2 to \emph{I}nfectious and 3 to \emph{R}emoved. } \author{ Sebastian Meyer } \seealso{ \code{\link{summary.epidata}} for the data, on which the plots are based. \code{\link{animate.epidata}} for the animation of epidemics. } \examples{ data("fooepidata") s <- summary(fooepidata) # evolution of the epidemic par(las = 1) plot(s) # stateplot stateplot(s, id = "15", main = "Some individual event paths") stateplot(s, id = "1", add = TRUE, col = 2) stateplot(s, id = "20", add = TRUE, col = 3) legend("topright", legend = c(15, 1, 20), title = "id", lty = 1, col = 1:3, inset = 0.1) } \keyword{hplot} \keyword{methods} \keyword{spatial} surveillance/man/marks.Rd0000644000175100001440000000052412414443527015152 0ustar hornikusers\name{marks} \alias{marks} \docType{import} \title{Import from package \pkg{spatstat}} \description{ The generic function \code{marks} is imported from package \pkg{spatstat}. See \code{\link[spatstat:marks]{spatstat::marks}} for \pkg{spatstat}'s own methods, and \code{\link{marks.epidataCS}} for the \code{"epidataCS"}-specific method. } surveillance/man/correct53to52.Rd0000644000175100001440000000230711731650466016364 0ustar hornikusers\name{correct53to52} \alias{correct53to52} \title{Data Correction from 53 to 52 weeks} \description{Correction of data from 53 to 52 weeks a year } \usage{ correct53to52(disProgObj, firstweek = 1) } \arguments{ \item{disProgObj}{object of class disProg (including the observed and the state chain).} \item{firstweek}{the number of the first week in a year, default = 1 (if it starts with the beginning of a year). Necessary, because the infected of week 53 and the infected of week 52 must be added.} } \value{ \item{disProg}{a object \code{disProg} (disease progress) including a list of the observed and the state chain (corrected to 52 weeks instead of 53 weeks a year)} } \details{\code{\link{readData}} reads data with 53 weeks a year, but normally one year is said to have 52 weeks. } \seealso{\code{\link{readData}} } \examples{ #This call correct53to52 automatically obj <- readData("k1",week53to52=TRUE) correct53to52(obj) # first entry is the first week of the year obj <- readData("n1",week53to52=FALSE) correct53to52(obj, firstweek = 5) # now it's assumed that the fifth # entry is the first week of the year } \keyword{utilities} surveillance/man/find.kh.Rd0000644000175100001440000000247112375710513015357 0ustar hornikusers\name{find.kh} \alias{find.kh} \title{Determine the k and h values in a standard normal setting} \description{ Given a specification of the average run length in the (a)cceptance and (r)ejected setting determine the k and h values in a standard normal setting. } \usage{ find.kh(ARLa = 500, ARLr = 7, sided = "one", method = "BFGS", verbose=FALSE) } \arguments{ \item{ARLa}{average run length in acceptance setting, aka. in control state. Specifies the number of observations before false alarm.} \item{ARLr}{average run length in rejection state, aka. out of control state. Specifies the number of observations before an increase is detected (i.e. detection delay)} \item{sided}{one-sided cusum scheme} \item{method}{Which method to use in the function \code{\link{optim}}. Standard choice is BFGS, but in some situation Nelder-Mead can be advantageous.} \item{verbose}{gives extra information about the root finding process} } \value{ Returns a list with reference value k and decision interval h. } \details{ Functions from the \pkg{spc} package are used in a simple univariate root finding problem. } \examples{ if (requireNamespace("spc")) { find.kh(ARLa=500,ARLr=7,sided="one") find.kh(ARLa=500,ARLr=3,sided="one") } } \keyword{models} surveillance/man/scale.gpc.poly.Rd0000644000175100001440000000133212060131326016640 0ustar hornikusers\name{scale.gpc.poly} \alias{scale.gpc.poly} \title{Centering and Scaling a \code{"gpc.poly"} Polygon} \description{ This is a re-implementation of the corresponding method from package \pkg{gpclib} to also allow centering. } \usage{ \method{scale}{gpc.poly}(x, center = c(0,0), scale = c(1,1)) } \arguments{ \item{x}{an object of class \code{"gpc.poly"}.} \item{center}{numeric vector of length 2 (x,y), which will be subtracted from the respective coordinates of \code{x}.} \item{scale}{numeric vector of length 2 (x,y), which serves as the divisor for the respective coordinates of \code{x}.} } \value{ A \code{"gpc.poly"}, the shifted and/or scaled version of \code{x}. } \keyword{methods} \keyword{manip} surveillance/man/twinstim_siaf.Rd0000644000175100001440000001253512265254333016721 0ustar hornikusers\name{twinstim_siaf} \alias{siaf} \title{ Spatial Interaction Function Objects } \description{ A spatial interaction function for use in \code{\link{twinstim}} can be constructed via the \code{siaf} function. It checks the supplied function elements, assigns defaults for missing arguments, and returns all checked arguments in a list. However, for standard applications it is much easier to use one of the pre-defined spatial interaction functions, e.g., \code{\link{siaf.gaussian}}. } \usage{ siaf(f, F, Fcircle, effRange, deriv, Deriv, simulate, npars, validpars = NULL) } \arguments{ \item{f}{the spatial interaction function. It must accept two arguments, the first one being a (2-column) coordinate matrix, the second one a parameter vector. For marked \code{twinstim}, it must accept the type of the event (integer code) as its third argument (either a single type for all locations or separate types for each location).} \item{F}{function computing the integral of \eqn{f(s)} (passed as second argument) over a polygonal \code{"owin"} domain (first argument). The third and fourth argument are the parameter vector and the (\emph{single}) type, respectively. There may be additional arguments, which can then be specified in the \code{control.siaf$F} argument list of \code{twinstim}. If the \code{F} function is missing, a general default (\code{\link[polyCub]{polyCub}}) will be used, with extra arguments \code{method} (default: \code{"SV"}) and corresponding accuracy parameters.} \item{Fcircle}{optional function for fast calculation of the (two-dimensional) integral of \eqn{f(s)} over a circle with radius \code{r} (first argument). Further arguments are as for \code{f}. It must not be vectorized (will always be called with single radius and a single type). If this function is specified, integration of the \code{siaf} over the spatial influence region of an event will be faster if the region is actually circular. This is the case if the event is located at least a distance \code{eps.s} from the border of the observation region \code{W}, or if the distance to the border is larger than the effective integration range (if specified, see \code{effRange} below).} \item{effRange}{optional function returning the \dQuote{effective} range of \eqn{f(s)} for the given set of parameters (the first and only argument) such that the circle with radius \code{effRange} contains the numerically essential proportion of the integral mass. For the Gaussian kernel the default is \code{function (logsd) 6*exp(logsd)}. The return value must be a vector of length \code{nTypes} (effective range for each type). This function is only used if \code{Fcircle} is also specified.} \item{deriv}{optional derivative of \eqn{f(s)} \emph{with respect to the parameters}. It takes the same arguments as \code{f} but returns a matrix with as many rows as there were coordinates in the input and \code{npars} columns. This derivative is necessary for the calculation of the score function in \code{twinstim()}, which is advantageous for the numerical log-likelihood maximization.} \item{Deriv}{function computing the integral of \code{deriv} (passed as second argument) over a polygonal \code{"owin"} domain (first argument). The return value is thus a vector of length \code{npars}. The third argument is the parameter vector and the fourth argument is a (\emph{single}) type and must be named \code{type}. There may be additional arguments, which can then be specified in the \code{control.siaf$Deriv} argument list of \code{twinstim}. If the \code{Deriv} function is missing, a general default (\code{\link[polyCub]{polyCub}}) will be used, with extra arguments \code{method} (default: \code{"SV"}) and corresponding accuracy parameters.} \item{simulate}{optional function returning a sample drawn from the spatial kernel (only required for the simulation of \code{twinstim} models). Its first argument is the size of the sample to generate, next the parameter vector, an optional single event type, and an optional upperbound for the radius within which to simulate points. The function must return a two-column \emph{matrix} of the sampled locations. Note that the simulation method actually samples only one location at a time, thus it is sufficient to have a working \code{function(n=1, pars, type, ub)}. } \item{npars}{the number of parameters of the spatial interaction function \code{f} (i.e. the length of its second argument).} \item{validpars}{ optional function taking one argument, the parameter vector, indicating if it is valid. This approach to specify parameter constraints is rarely needed, because usual box-constrained parameters can be taken into account by using L-BFGS-B as the optimization method in \code{twinstim} (with arguments \code{lower} and \code{upper}), and positivity constraints by using log-parametrizations. This component is not necessary (and ignored) if \code{npars == 0}. } } \value{ list of checked arguments. } \author{ Sebastian Meyer } \seealso{ \code{\link{siaf.gaussian}} for a pre-defined spatial interaction function, and \code{\link{tiaf}} for the temporal interaction function. } \keyword{utilities} surveillance/man/epidataCS_aggregate.Rd0000644000175100001440000001250412442101657017675 0ustar hornikusers\name{epidataCS_aggregate} \alias{epidataCS2sts} \alias{as.epidata.epidataCS} \title{Conversion (aggregation) of \code{"epidataCS"} to \code{"epidata"} or \code{"sts"}} \description{ Continuous-time continuous-space epidemic data stored in an object of class \code{"\link{epidataCS}"} can be aggregated in space or in space and time yielding an object of class \code{"\link{epidata}"} or \code{"\linkS4class{sts}"} for use of \code{\link{twinSIR}} or \code{\link{hhh4}} modelling, respectively. } \usage{ ## aggregation in space and time over 'stgrid' for use of 'hhh4' models epidataCS2sts(object, freq, start, neighbourhood, tiles = NULL, popcol.stgrid = NULL, popdensity = TRUE) ## aggregation in space for use of 'twinSIR' models \method{as.epidata}{epidataCS}(data, tileCentroids, eps = 0.001, ...) } \arguments{ \item{object, data}{an object of class \code{"\link{epidataCS}"}.} \item{freq,start}{see the description of the \code{"\linkS4class{sts}"} class.} \item{neighbourhood}{ binary adjacency or neighbourhood-order matrix of the regions (\code{tiles}). If missing but \code{tiles} is given, a binary adjacency matrix will be auto-generated from \code{tiles} using functionality of the \pkg{spdep} package (see \code{\link{poly2adjmat}}). Since the \code{"neighbourhood"} slot in \code{"\linkS4class{sts}"} is actually optional, \code{neighbourhood=NULL} also works. } \item{tiles}{ object inheriting from \code{"\linkS4class{SpatialPolygons}"} representing the regions in \code{object$stgrid} (column \code{"tile"}). It will become the \code{"map"} slot of the resulting \code{"sts"} object. Its \code{row.names} must match \code{levels(object$stgrid$tile)}. If \code{neighbourhood} is provided, \code{tiles} is optional (not required for \code{hhh4}, but for plots of the resulting \code{"sts"} object). } \item{popcol.stgrid}{ single character or numeric value indexing the column in \code{object$stgrid} which contains the population data (counts or densities, depending on the \code{popdensity} argument). This will become the \code{"populationFrac"} slot (optional).} \item{popdensity}{ logical indicating if the column referenced by \code{popcol.stgrid} contains population densities or absolute counts. } \item{tileCentroids}{ a coordinate matrix of the region centroids (i.e., the result of \code{coordinates(tiles)}). Its row names must match \code{levels(data$stgrid$tile)}. This will be the coordinates used for the \dQuote{population} (i.e., the \code{tiles} from \code{"\link{epidataCS}"}) in the discrete-space \code{\link{twinSIR}} modelling. } \item{eps}{ numeric scalar for breaking tied removal and infection times between different individuals (tiles), which might occur during conversion from \code{"epidataCS"} to \code{"epidata"}. Rather dumb, this is simply done by subtracting \code{eps} from each tied removal time. One should consider other ways of breaking the tied event times. } \item{\dots}{unused (argument of the generic).} } \details{ Some comments on the conversion from \code{"epidataCS"} to \code{"epidata"}: the conversion results into SIS epidemics only, i.e. the at-risk indicator is set to 1 immediately after recovery. A tile is considered infective if at least one individual within the tile is infective, otherwise it is susceptible. The lengths of the infectious periods are taken from \code{data$events$eps.t}. There will be no \code{f} columns in the resulting \code{"epidata"}. These must be generated by a subsequent call to \code{\link{as.epidata}} with desired \code{f}. } \value{ \code{epidataCS2sts}: an object of class \code{"\linkS4class{sts}"} representing the multivariate time-series of the number of cases aggregated over \code{stgrid}. \code{as.epidata.epidataCS}: an object of class \code{"\link{epidata}"} representing an SIS epidemic in form of a multivariate point process (one for each region/\code{tile}). } \author{ Sebastian Meyer } \seealso{ \code{\link{epidata}} and \code{\link{twinSIR}} \code{linkS4class{sts}} and \code{\link{hhh4}}. } \examples{ data("imdepi") load(system.file("shapes", "districtsD.RData", package="surveillance")) ## convert imdepi point pattern into multivariate time series imdsts <- epidataCS2sts(imdepi, freq = 12, start = c(2002, 1), neighbourhood = NULL, # not needed here tiles = districtsD) \dontshow{ stopifnot(isTRUE(all.equal(colSums(imdsts@observed), c(table(imdepi$events$tile))))) } ## compare plots of monthly number of cases opar <- par(mfrow = c(2, 1)) suppressWarnings(plot(imdepi, "time", breaks = c(0,unique(imdepi$stgrid$stop)))) plot(imdsts, type = observed ~ time, legend.opts = NULL) par(opar) ## plot number of cases by district plot(imdsts, type = observed ~ 1 | unit, labels = FALSE) ## also test conversion to an SIS event history ("epidata") of the "tiles" if (requireNamespace("intervals")) { imdepi_short <- subset(imdepi, time < 50) imdepi_short$stgrid <- subset(imdepi_short$stgrid, start < 50) imdepidata <- as.epidata(imdepi_short, tileCentroids = coordinates(districtsD)) summary(imdepidata) } } \keyword{spatial} \keyword{manip} \keyword{methods} surveillance/man/glm_epidataCS.Rd0000644000175100001440000000571212442602360016526 0ustar hornikusers\name{glm_epidataCS} \alias{glm_epidataCS} \title{ Fit an Endemic-Only \code{twinstim} as a Poisson-\code{glm} } \description{ An endemic-only \code{\link{twinstim}} is equivalent to a Poisson regression model for the aggregated number of events, \eqn{Y_{[t][\bm{s}],k}}, by time-space-type cell. The rate of the corresponding Poisson distribution is \eqn{e_{[t][\bm{s}]} \cdot \lambda([t],[\bm{s}],k)}, where \eqn{e_{[t][\bm{s}]} = |[t]| |[\bm{s}]|} is a multiplicative offset. Thus, the \code{\link{glm}} function can be used to fit an endemic-only \code{twinstim}. However, wrapping in \code{glm} is usually slower. } \usage{ glm_epidataCS(formula, data, ...) } \arguments{ \item{formula}{ an endemic model formula without response, comprising variables of \code{data$stgrid} and possibly the variable \code{type} for a type-specific model. } \item{data}{ an object of class \code{"\link{epidataCS}"}. } \item{\dots}{ arguments passed to \code{\link{glm}}. Note that \code{family} and \code{offset} are fixed internally. } } \value{ a \code{\link{glm}} } \author{ Sebastian Meyer } \examples{ data("imdepi") data("imdepifit") ## Fit an endemic-only twinstim() and an equivalent model wrapped in glm() fit_twinstim <- update(imdepifit, epidemic = ~0, siaf = NULL, subset = NULL, optim.args=list(control=list(trace=0)), verbose=FALSE) fit_glm <- glm_epidataCS(formula(fit_twinstim)$endemic, data = imdepi) ## Compare the coefficients cbind(twinstim = coef(fit_twinstim), glm = coef(fit_glm)) \dontshow{ stopifnot(all.equal(coef(fit_glm), coef(fit_twinstim), tolerance = 1e-5, check.attributes = FALSE)) if (surveillance.options("allExamples")) { ## also check type-specific model: stopifnot(all.equal( coef(glm_epidataCS(~0+type, imdepi)), coef(update(fit_twinstim, endemic=~(1|type))), tolerance = 1e-5, check.attributes = FALSE)) } } ### also compare to an equivalent endemic-only hhh4() fit ## first need to aggregate imdepi into an "sts" object load(system.file("shapes", "districtsD.RData", package="surveillance")) imdsts <- epidataCS2sts(imdepi, freq = 12, start = c(2002, 1), neighbourhood = NULL, tiles = districtsD, popcol.stgrid = "popdensity") ## determine the correct offset to get an equivalent model offset <- 2 * rep(with(subset(imdepi$stgrid, !duplicated(BLOCK)), stop - start), ncol(imdsts)) * sum(districtsD$POPULATION) * population(imdsts) ## fit the model using hhh4() fit_hhh4 <- hhh4(imdsts, control = list( end = list( f = addSeason2formula(~I(start/365-3.5), period=365, timevar="start"), offset = offset ), family = "Poisson", subset = 1:nrow(imdsts), data = list(start=with(subset(imdepi$stgrid, !duplicated(BLOCK)), start)))) summary(fit_hhh4) stopifnot(all.equal(coef(fit_hhh4), coef(fit_glm), check.attributes=FALSE)) } \keyword{models} surveillance/man/twinstim_iaf.Rd0000644000175100001440000002667412422462664016552 0ustar hornikusers\encoding{latin1} \name{twinstim_iaf} \alias{siaf.constant} \alias{siaf.step} \alias{siaf.gaussian} \alias{siaf.powerlaw} \alias{siaf.powerlawL} \alias{siaf.student} \alias{tiaf.constant} \alias{tiaf.step} \alias{tiaf.exponential} \title{ Temporal and Spatial Interaction Functions for \code{twinstim} } \description{ A \code{twinstim} model as described in Meyer et al. (2012) requires the specification of the spatial and temporal interaction functions (\eqn{f} and \eqn{g}, respectively), i.e. how infectivity decays with increasing spatial and temporal distance from the source of infection. It is of course possible to define own functions (see \code{\link{siaf}} and \code{\link{tiaf}}, respectively), but the package already predefines some useful dispersal kernels returned by the constructor functions documented here. } \usage{ # predefined spatial interaction functions siaf.constant() siaf.step(knots, maxRange = Inf, nTypes = 1, validpars = NULL) siaf.gaussian(nTypes = 1, logsd = TRUE, density = FALSE, F.adaptive = TRUE, effRangeMult = 6, validpars = NULL) siaf.powerlaw(nTypes = 1, validpars = NULL) siaf.powerlawL(nTypes = 1, validpars = NULL) siaf.student(nTypes = 1, validpars = NULL) # predefined temporal interaction functions tiaf.constant() tiaf.step(knots, maxRange = Inf, nTypes = 1, validpars = NULL) tiaf.exponential(nTypes = 1, validpars = NULL) } \arguments{ \item{knots}{numeric vector of distances at which the step function switches to a new height. The length of this vector determines the number of parameters to estimate. For identifiability, the step function has height 1 in the first interval \eqn{[0,knots_1)}. Note that the implementation is right-continuous, i.e., intervals are \eqn{[a,b)}.} \item{maxRange}{a scalar larger than any of \code{knots}. Per default (\code{maxRange=Inf}), the step function never drops to 0 but keeps the last height for any distance larger than the last knot. However, this might not work in some cases, where the last parameter value would become very small and lead to numerical problems. It is then possible to truncate interaction at a distance \code{maxRange} (just like what the variables \code{eps.s} and \code{eps.t} do in the \code{"\link{epidataCS}"} object).} \item{nTypes}{ determines the number of parameters ((log-)scales or (log-)shapes) of the kernels. In a multitype epidemic, the different types may share the same spatial interaction function, in which case \code{nTypes=1}. Otherwise \code{nTypes} should equal the number of event types of the epidemic, in which case every type has its own (log-)scale or (log-)shape, respectively.\cr Currently, \code{nTypes > 1} is only implemented for \code{siaf.gaussian}, \code{tiaf.step}, and \code{tiaf.exponential}. } \item{logsd}{ logical indicating if the kernel should be parametrized with the log-standard deviation as the parameter in question to enforce positivity. This is the recommended default and avoids constrained optimisation (L-BFGS-B) or the use of \code{validpars}.\cr The power-law kernels always use the log-scale for their scale and shape parameters. } \item{density}{ logical indicating if the density or just its kernel should be used. If \code{density=TRUE}, \code{siaf.gaussian} uses the density of the bivariate, isotropic normal distribution as the spatial interaction function. Otherwise (default), only the kernel of the bivariate normal density is used. } \item{F.adaptive}{ If \code{F.adaptive = TRUE}, then an adaptive bandwidth of \code{adapt*sd} will be used in the midpoint-cubature (\code{\link[polyCub]{polyCub.midpoint}} in package \pkg{polyCub}) of the Gaussian interaction kernel, where \code{adapt} is an extra parameter of the returned \code{siaf$F} function and defaults to 0.1. It can be customized either by the \code{control.siaf$F} argument list of \code{twinstim}, or by a numeric specification of \code{F.adaptive} in the constructing call, e.g., \code{F.adaptive = 0.05} to achieve higher accuracy.\cr Otherwise, if \code{F.adaptive = FALSE}, a general cubature method (\code{\link[polyCub]{polyCub}}) is returned as \code{siaf$F} component, where the \code{method} and accuracy (\code{eps}, \code{dimyx}, or \code{nGQ}, depending on the method) should then be specified in \code{twinstim}'s \code{control.siaf$F} argument. } \item{effRangeMult}{ determines the effective range for numerical integration in terms of multiples of the standard deviation \eqn{\sigma} of the Gaussian kernel, i.e. with \code{effRangeMult=6} numerical integration only considers the \eqn{6 \sigma} area around the event instead of the whole observation region \code{W}. Setting \code{effRangeMult=NULL} will disable the integral approximation with an effective integration range. } \item{validpars}{ function taking one argument, the parameter vector, indicating if it is valid (see also \code{\link{siaf}}). If \code{logsd=FALSE} and one prefers not to use \code{method="L-BFGS-B"} for fitting the \code{twinstim}, then \code{validpars} could be set to \code{function (pars) pars > 0}. } } \details{ The readily available spatial interaction functions are defined as follows: \describe{ \item{\code{siaf.constant}:}{ \eqn{f(s) = 1} } \item{\code{siaf.step}:}{ \eqn{f(s) = \sum_{k=0}^K \exp(\alpha_k) I_k(||s||)},\cr where \eqn{\alpha_0 = 0}, and \eqn{\alpha_1, \dots, \alpha_K} are the parameters (heights) to estimate. \eqn{I_k(||s||)} indicates if distance \eqn{||s||} belongs to the \eqn{k}th interval according to \code{c(0,knots,maxRange)}, where \eqn{k=0} indicates the interval \code{c(0,knots[1])}.\cr Note that \code{siaf.step} makes use of the \pkg{memoise} package if it is available -- and that is highly recommended to speed up calculations. Specifically, the areas of the intersection of a polygonal domain (influence region) with the \dQuote{rings} of the two-dimensional step function will be cached such that they are only calculated once for every \code{polydomain} (in the first iteration of the \code{twinstim} optimization). They are used in the integration components \code{F} and \code{Deriv}. See Meyer and Held (2014) for a use case and further details. } \item{\code{siaf.gaussian}:}{ \eqn{f(s|\kappa) = \exp(-||s||/2/\sigma_\kappa^2)}\cr If \code{nTypes=1} (single-type epidemic or type-invariant \code{siaf} in multi-type epidemic), then \eqn{\sigma_\kappa = \sigma} for all types \eqn{\kappa}. If \code{density=TRUE}, then the kernel formula above is additionally divided by \eqn{2 \pi \sigma_\kappa^2}, yielding the density of the bivariate, isotropic Gaussian distribution with zero mean and covariance matrix \eqn{\sigma_\kappa^2 I_2}. } \item{\code{siaf.powerlaw}:}{ \eqn{f(s) = (||s|| + \sigma)^{-d}},\cr which is the kernel of the Lomax density, i.e. without any proportionality constants. The parameters are optimized on the log-scale to ensure positivity, i.e. \eqn{\sigma = \exp(\tilde{\sigma})} and \eqn{d = \exp(\tilde{d})}, where \eqn{(\tilde{\sigma}, \tilde{d})} is the parameter vector. } \item{\code{siaf.powerlawL}:}{ \eqn{f(s) = (||s||/\sigma)^{-d}}, for \eqn{||s|| \ge \sigma}, and \eqn{f(s) = 1} otherwise,\cr which is a \emph{L}agged power-law kernel featuring uniform short-range dispersal (up to distance \eqn{\sigma}) and a power-law decay (Pareto-style) from distance \eqn{\sigma} onwards. The parameters are optimized on the log-scale to ensure positivity, i.e. \eqn{\sigma = \exp(\tilde{\sigma})} and \eqn{d = \exp(\tilde{d})}, where \eqn{(\tilde{\sigma}, \tilde{d})} is the parameter vector. However, there is a caveat associated with this kernel: Its derivative wrt \eqn{\tilde{\sigma}} is mathematically undefined at the threshold \eqn{||s||=\sigma}. This local non-differentiability makes \code{twinstim}'s likelihood maximization sensitive wrt parameter start values, and is likely to cause false convergence warnings by \code{\link{nlminb}}. Possible work-arounds are to use the slow and robust \code{method="Nelder-Mead"}, or to just ignore the warning and verify the result by sets of different start values. } \item{\code{siaf.student}:}{ \eqn{f(s) = (||s||^2 + \sigma^2)^{-d}},\cr which is a reparametrized \eqn{t}-kernel. For \eqn{d=1}, this is the kernel of the Cauchy density with scale \code{sigma}. In Geostatistics, a correlation function of this kind is known as the Cauchy model.\cr The parameters are optimized on the log-scale to ensure positivity, i.e. \eqn{\sigma = \exp(\tilde{\sigma})} and \eqn{d = \exp(\tilde{d})}, where \eqn{(\tilde{\sigma}, \tilde{d})} is the parameter vector. } } The predefined temporal interaction functions are defined as follows: \describe{ \item{\code{tiaf.constant}:}{ \eqn{g(t) = 1} } \item{\code{tiaf.step}:}{ \eqn{g(t) = \sum_{k=0}^K \exp(\alpha_k) I_k(t)},\cr where \eqn{\alpha_0 = 0}, and \eqn{\alpha_1, \dots, \alpha_K} are the parameters (heights) to estimate. \eqn{I_k(t)} indicates if \eqn{t} belongs to the \eqn{k}th interval according to \code{c(0,knots,maxRange)}, where \eqn{k=0} indicates the interval \code{c(0,knots[1])}. } \item{\code{tiaf.exponential}:}{ \eqn{g(t|\kappa) = \exp(-\alpha_\kappa t)},\cr which is the kernel of the exponential distribution. If \code{nTypes=1} (single-type epidemic or type-invariant \code{tiaf} in multi-type epidemic), then \eqn{\alpha_\kappa = \alpha} for all types \eqn{\kappa}. } } } \value{ The specification of an interaction function, which is a list. See \code{\link{siaf}} and \code{\link{tiaf}}, respectively, for a description of its components. } \references{ Meyer, S. and Held, L. (2014): Power-law models for infectious disease spread. \emph{The Annals of Applied Statistics}, \bold{8} (3), 1612-1639.\cr DOI-Link: \url{http://dx.doi.org/10.1214/14-AOAS743} Meyer, S., Elias, J. and H\enc{ö}{oe}hle, M. (2012): A space-time conditional intensity model for invasive meningococcal disease occurrence. \emph{Biometrics}, \bold{68}, 607-616.\cr DOI-Link: \url{http://dx.doi.org/10.1111/j.1541-0420.2011.01684.x} Meyer, S. (2010): Spatio-Temporal Infectious Disease Epidemiology based on Point Processes. Master's Thesis, Ludwig-Maximilians-Universit\enc{ä}{ae}t M\enc{ü}{ue}nchen.\cr Available as \url{http://epub.ub.uni-muenchen.de/11703/} } \author{ Sebastian Meyer } \seealso{ \code{\link{twinstim}}, \code{\link{siaf}}, \code{\link{tiaf}} } \examples{ # constant temporal dispersal tiaf.constant() # step function kernel tiaf.step(c(3,7), maxRange=14, nTypes=2) # exponential decay specification tiaf.exponential() # Type-dependent Gaussian spatial interaction function using an adaptive # two-dimensional midpoint-rule to integrate it over polygonal domains siaf.gaussian(2, F.adaptive=TRUE) # Type-independent power-law kernel siaf.powerlaw() # "lagged" power-law siaf.powerlawL() # (reparametrized) t-kernel siaf.student() # step function kernel siaf.step(c(10,20,50), maxRange=100) } \keyword{models} \keyword{utilities} surveillance/man/momo.Rd0000644000175100001440000000465612553440737015022 0ustar hornikusers\name{momo} \alias{momo} \encoding{latin1} \title{Danish 1994-2008 all cause mortality data for six age groups} \description{ Weekly number of all cause mortality from 1994-2008 in each of the six age groups <1, 1-4, 5-14, 15-44, 45-64, 65-74, 75-84 and 85 years. } \usage{data(momo)} \details{ The object of class \code{"\linkS4class{sts}"} contains the number of all cause mortality from 1994-2008 in Denmark for each of the six age groups <1, 1-4, 5-14, 15-44, 45-64, 65-74, 75-84 and 85 years. A special feature of such EuroMOMO data is that weeks are handled as defined by the ISO 8601 standard, which can be handled by the \code{"sts"} class. The \code{population} slot of the \code{momo} object contains the population size in each of the six age groups. These are yearly data obtained from the StatBank Denmark. The aim of the EuroMOMO project is to develop and strengthen real-time monitoring of mortality across Europe; this will enhance the management of serious public health risks such as pandemic influenza, heat waves and cold snaps. For further details see the homepage of the EuroMOMO project. } \source{ Department of Epidemiology, Statens Serum Institute, Copenhagen, Denmark StatBank Denmark, Statistics Denmark, \url{http://www.statistikbanken.dk/} } \examples{ data("momo") plot(momo) } \references{ H\enc{ö}{oe}hle, M. and A. Mazick, A. (2009) Aberration detection in R illustrated by Danish mortality monitoring, Book chapter to appear in T. Kass-Hout and X. Zhang (Eds.) Biosurveillance: A Health Protection Priority, CRC Press. EuroMOMO project page, \url{http://www.euromomo.eu/}, Last accessed: 13 Oct 2010. } \keyword{datasets} %###################################################################### %# Importing data from a csv file. As well as population. %###################################################################### %momo.ts <- read.csv("~/Surveillance/EuroMoMo/Data/mortality-dk.csv",header=TRUE,check.names=FALSE) %#Fill week slot with Monday of each week , starting from 3rd Jan 1994 %dates <- as.Date("1994-01-03") + 7 * 0:(nrow(momo.ts)-1) %#Create sts object %momo <- new("sts",epoch=as.numeric(dates), start=c(1994,1), freq=52, % observed=momo.ts, epochAsDate=TRUE) %population(momo) <- as.matrix(read.csv("~/Surveillance/EuroMoMo/Data/population-dk.csv",check.names=FALSE)) %save(file="~/Surveillance/surveillance/pkg/data/momo.RData",list=c("momo")) surveillance/man/hepatitisA.Rd0000644000175100001440000000102612452455147016131 0ustar hornikusers\name{hepatitisA} \docType{data} \alias{hepatitisA} \title{Hepatitis A in Germany} \description{ Weekly number of reported hepatitis A infections in Germany 2001-2004. } \usage{data(hepatitisA) } \format{ A \code{disProg} object containing \eqn{208\times 1}{208 x 1} observations starting from week 1 in 2001 to week 52 in 2004. } \source{ Robert Koch-Institut: SurvStat: \url{http://www3.rki.de/SurvStat}; Queried on 11-01-2005. } \examples{ data(hepatitisA) plot(hepatitisA) } \keyword{datasets} surveillance/man/twinstim_tiaf.Rd0000644000175100001440000000535312265254746016732 0ustar hornikusers\name{twinstim_tiaf} \alias{tiaf} \title{ Temporal Interaction Function Objects } \description{ A temporal interaction function for use in \code{\link{twinstim}} can be constructed via the \code{tiaf} function. It checks the supplied function elements, assigns defaults for missing arguments, and returns all checked arguments in a list. However, for standard applications it is much easier to use one of the pre-defined temporal interaction functions, e.g., \code{\link{tiaf.exponential}}. } \usage{ tiaf(g, G, deriv, Deriv, npars, validpars = NULL) } \arguments{ \item{g}{the temporal interaction function. It must accept two arguments, the first one being a vector of time points, the second one a parameter vector. For marked \code{twinstim}, it must accept the type of the event (integer code) as its third argument (either a single type for all locations or separate types for each location).} \item{G}{a primitive of \eqn{g(t)} (with respect to time). It must accept the same arguments as \code{g}, for instance a \emph{vector} of time points (not just a single one).} \item{deriv}{optional derivative of \eqn{g(t)} \emph{with respect to the parameters}. It takes the same arguments as \code{g} but returns a matrix with as many rows as there were time points in the input and \code{npars} columns. This derivative is necessary for the calculation of the score function in \code{twinstim()}, which is advantageous for the numerical log-likelihood maximization.} \item{Deriv}{optional primitive of \code{deriv} (with respect to time). It must accept the same arguments as \code{deriv}, \code{g} and \code{G} and returns a matrix with as many rows as there were time points in the input and \code{npars} columns. The integrated derivative is necessary for the score function in \code{twinstim}.} \item{npars}{the number of parameters of the temporal interaction function \code{g} (i.e. the length of its second argument).} \item{validpars}{ optional function taking one argument, the parameter vector, indicating if it is valid. This approach to specify parameter constraints is rarely needed, because usual box-constrained parameters can be taken into account by using L-BFGS-B as the optimization method in \code{twinstim} (with arguments \code{lower} and \code{upper}), and positivity constraints by using log-parametrizations. This component is not necessary (and ignored) if \code{npars == 0}. } } \value{ list of checked arguments. } \author{ Sebastian Meyer } \seealso{ \code{\link{tiaf.exponential}} for a pre-defined temporal interaction function, and \code{\link{siaf}} for the spatial interaction function. } \keyword{utilities} surveillance/man/sumNeighbours.Rd0000644000175100001440000000077311770111463016670 0ustar hornikusers\name{sumNeighbours} \alias{sumNeighbours} \title{Calculates the sum of counts of adjacent areas} \description{ Calculates the sum of counts of adjacent units/areas, i.e. \eqn{\sum_{j \sim i} y_{j,t}}{sum_j~i y_j,t} for all time points \eqn{t} and each unit \eqn{i}, \eqn{t=1,\ldots,n, i=1,\ldots,m}. } \usage{ sumNeighbours(disProgObj) } \arguments{ \item{disProgObj}{Object of class \code{disProg}} } \value{matrix of dimension \eqn{n \times m}{n x m} } \keyword{internal} surveillance/man/epidata.Rd0000644000175100001440000003463212604734656015462 0ustar hornikusers\name{epidata} \alias{as.epidata} \alias{as.epidata.data.frame} \alias{as.epidata.default} \alias{print.epidata} \alias{[.epidata} \alias{update.epidata} \alias{epidata} \title{ Continuous-Time SIR Event History of a Fixed Population } \description{ The function \code{as.epidata} is used to generate objects of \code{\link{class}} \code{"epidata"}. Objects of this class are specific data frames containing the event history of an epidemic together with some additional attributes. These objects are the basis for fitting spatio-temporal epidemic intensity models with the function \code{\link{twinSIR}}. Note that the spatial information itself, i.e. the positions of the individuals, is assumed to be constant over time. Besides epidemics following the SIR compartmental model, also data from SI, SIRS and SIS epidemics may be supplied. Inference for the infectious process works as usual and simulation of such epidemics is also possible. } \usage{ as.epidata(data, ...) \method{as.epidata}{data.frame}(data, t0, tE.col, tI.col, tR.col, id.col, coords.cols, f = list(), w = list(), D = dist, keep.cols = TRUE, ...) \method{as.epidata}{default}(data, id.col, start.col, stop.col, atRiskY.col, event.col, Revent.col, coords.cols, f = list(), w = list(), D = dist, ...) \method{print}{epidata}(x, ...) \method{[}{epidata}(x, i, j, drop) \method{update}{epidata}(object, f = list(), w = list(), D = dist, ...) } \arguments{ \item{data}{ For the \code{data.frame}-method, a data frame with as many rows as there are individuals in the population and time columns indicating when each individual became exposed (optional), infectious (mandatory, but can be \code{NA} for non-affected individuals) and removed (optional). Note that this data format does not allow for re-infection (SIRS) and time-varying covariates. The \code{data.frame}-method converts the individual-indexed data frame to the long event history start/stop format and then feeds it into the default method. If calling the generic function \code{as.epidata} on a \code{data.frame} and the \code{t0} argument is missing, the default method is called directly.\cr For the default method, \code{data} can be a \code{\link{matrix}} or a \code{\link{data.frame}}. It must contain the observed event history in a form similar to \code{Surv(, type="counting")} with additional information (variables) along the process. Rows will be sorted automatically during conversion. The observation period is splitted up into \emph{consecutive} intervals of constant state - thus constant infection intensities. The data frame consists of a block of \eqn{N} (number of individuals) rows for each of those time intervals (all rows in a block have the same start and stop values\dots therefore the name \dQuote{block}), where there is one row per individual in the block. Each row describes the (fixed) state of the individual during the interval given by the start and stop columns \code{start.col} and \code{stop.col}.\cr Note that there may not be more than one event (infection or removal) in a single block. Thus, in a single block, only one entry in the \code{event.col} and \code{Revent.col} may be 1, all others are 0. This rule follows the point process characteristic that there are no concurrent events (infections or removals). } \item{t0}{ start time of the observation period. Will be subtracted from the time columns \code{tE.col}, \code{tI.col}, \code{tR.col}. Individuals that have already been removed prior to \code{t0}, i.e., rows with \code{tR <= t0}, will be dropped. } \item{tE.col, tI.col, tR.col}{ single numeric or character indexes of the time columns in \code{data}, which specify when the individuals became exposed, infectious and removed, respectively. \code{tE.col} and \code{tR.col} can be missing, corresponding to SIR, SEI, or SI data. \code{NA} entries mean that the respective event has not (yet) occurred. Note that \code{is.na(tE)} implies \code{is.na(tI)} and \code{is.na(tR)}, and \code{is.na(tI)} implies \code{is.na(tR)} (and this is checked for the provided data). } \item{id.col}{ single numeric or character index of the \code{id} column in \code{data}. The \code{id} column identifies the individuals in the data frame. It is converted to a factor by calling \code{\link{factor}}, i.e., unused levels are dropped if it already was a factor. } \item{start.col}{ single index of the \code{start} column in \code{data}. Can be numeric (by column number) or character (by column name). The \code{start} column contains the (numeric) time points of the beginnings of the consecutive time intervals of the event history. The minimum value in this column, i.e. the start of the observation period should be 0. } \item{stop.col}{ single index of the \code{stop} column in \code{data}. Can be numeric (by column number) or character (by column name). The \code{stop} column contains the (numeric) time points of the ends of the consecutive time intervals of the event history. The stop value must always be greater than the start value of a row. } \item{atRiskY.col}{ single index of the \code{atRiskY} column in \code{data}. Can be numeric (by column number) or character (by column name). The \code{atRiskY} column indicates if the individual was \dQuote{at-risk} of becoming infected during the time interval (start; stop]. This variable must be logical or in 0/1-coding. Individuals with \code{atRiskY == 0} in the first time interval (normally the rows with \code{start == 0}) are taken as \emph{initially infectious}. } \item{event.col}{ single index of the \code{event} column in \code{data}. Can be numeric (by column number) or character (by column name). The \code{event} column indicates if the individual became \emph{infected} at the \code{stop} time of the interval. This variable must be logical or in 0/1-coding. } \item{Revent.col}{ single index of the \code{Revent} column in \code{data}. Can be numeric (by column number) or character (by column name). The \code{Revent} column indicates if the individual was \emph{recovered} at the \code{stop} time of the interval. This variable must be logical or in 0/1-coding. } \item{coords.cols}{ index\emph{es} of the \code{coords} column\emph{s} in \code{data}. Can be numeric (by column number), character (by column name), or \code{NULL} (no coordinates, e.g., if \code{D} is a pre-specified distance matrix). These columns contain the individuals' coordinates, which determine the distance matrix for the distance-based components of the force of infection (see argument \code{f}). By default, Euclidean distance is used (see argument \code{D}).\cr Note that the functions related to \code{\link{twinSIR}} currently assume \emph{fixed positions} of the individuals during the whole epidemic. Thus, an individual has the same coordinates in every block. For simplicity, the coordinates are derived from the first time block only (normally the rows with \code{start == 0}).\cr The \code{\link[=animate.epidata]{animate}}-method requires coordinates. } \item{f}{ a \emph{named} list of \emph{vectorized} functions for a distance-based force of infection. The functions must interact elementwise on a (distance) matrix \code{D} so that \code{f[[m]](D)} results in a matrix. A simple example is \code{function(u) {u <= 1}}, which indicates if the Euclidean distance between the individuals is smaller than or equal to 1. The names of the functions determine the names of the epidemic variables in the resulting data frame. So, the names should not coincide with names of other covariates. The distance-based weights are computed as follows: Let \eqn{I(t)} denote the set of infectious individuals just before time \eqn{t}. Then, for individual \eqn{i} at time \eqn{t}, the \eqn{m}'th covariate has the value \eqn{\sum_{j \in I(t)} f_m(d_{ij})}{% \sum_{j in I(t)} f[[m]](d[i,j])}, where \eqn{d_{ij}}{d[i,j]} denotes entries of the distance matrix (by default this is the Euclidean distance \eqn{||s_i - s_j||} between the individuals' coordinates, but see argument \code{D}). } \item{w}{ a \emph{named} list of \emph{vectorized} functions for extra covariate-based weights \eqn{w_{ij}}{w_ij} in the epidemic component. Each function operates on a single time-constant covariate in \code{data}, which is determined by the name of the first argument: The two function arguments should be named \code{varname.i} and \code{varname.j}, where \code{varname} is one of \code{names(data)}. Similar to the components in \code{f}, \code{length(w)} epidemic covariates will be generated in the resulting \code{"epidata"} named according to \code{names(w)}. So, the names should not coincide with names of other covariates. For individual \eqn{i} at time \eqn{t}, the \eqn{m}'th such covariate has the value \eqn{\sum_{j \in I(t)} w_m(z^{(m)}_i, z^{(m)}_j)}, where \eqn{z^{(m)}} denotes the variable in \code{data} associated with \code{w[[m]]}. } \item{D}{ either a function to calculate the distances between the individuals with locations taken from \code{coord.cols} (the default is Euclidean distance via the function \code{\link{dist}}) and the result converted to a matrix via \code{\link{as.matrix}}, or a pre-computed distance matrix with \code{dimnames} containing the individual ids. } \item{keep.cols}{ logical indicating if all columns in \code{data} should be retained (and not only the obligatory \code{"epidata"} columns), in particular any additional columns with time-constant individual-specific covariates. Alternatively, \code{keep.cols} can be a numeric or character vector indexing columns of \code{data} to keep. } \item{x,object}{ an object of class \code{"epidata"}. } \item{\dots}{ arguments passed to \code{\link{print.data.frame}}. Currently unused in the \code{as.epidata}-methods. } \item{i,j,drop}{ arguments passed to \code{\link{[.data.frame}}. } } \details{ The \code{print} method for objects of class \code{"epidata"} simply prints the data frame with a small header containing the time range of the observed epidemic and the number of infected individuals. Usually, the data frames are quite long, so the summary method \code{\link{summary.epidata}} might be useful. Also, indexing/subsetting \code{"epidata"} works exactly as for \code{\link[=[.data.frame]{data.frame}}s, but there is an own method, which assures consistency of the resulting \code{"epidata"} or drops this class, if necessary. The \code{update}-method can be used to add or replace distance-based (\code{f}) or covariate-based (\code{w}) epidemic variables in an existing \code{"epidata"} object. SIS epidemics are implemented as SIRS epidemics where the length of the removal period equals 0. This means that an individual, which has an R-event will be at risk immediately afterwards, i.e. in the following time block. Therefore, data of SIS epidemics have to be provided in that form containing \dQuote{pseudo-R-events}. } \note{ The column name \code{"BLOCK"} is a reserved name. This column will be added automatically at conversion and the resulting data frame will be sorted by this column and by id. Also the names \code{"id"}, \code{"start"}, \code{"stop"}, \code{"atRiskY"}, \code{"event"} and \code{"Revent"} are reserved for the respective columns only. } \value{ a \code{data.frame} with the columns \code{"BLOCK"}, \code{"id"}, \code{"start"}, \code{"stop"}, \code{"atRiskY"}, \code{"event"}, \code{"Revent"} and the coordinate columns (with the original names from \code{data}), which are all obligatory. These columns are followed by any remaining columns of the input \code{data}. Last but not least, the newly generated columns with epidemic variables corresponding to the functions in the list \code{f} are appended, if \code{length(f)} > 0. The \code{data.frame} is given the additional \emph{attributes} \item{"eventTimes"}{ numeric vector of infection time points (sorted chronologically). } \item{"timeRange"}{ numeric vector of length 2: \code{c(min(start), max(stop))}. } \item{"coords.cols"}{ numeric vector containing the column indices of the coordinate columns in the resulting data frame. } \item{"f"}{ this equals the argument \code{f}. } \item{"w"}{ this equals the argument \code{w}. } } \author{ Sebastian Meyer } \seealso{ The \code{\link{hagelloch}} data for a \dQuote{real} \code{"epidata"} object. The code for the conversion from the simple data frame to the SIR event history using \code{as.epidata.data.frame} is given in \code{example(hagelloch)}. The \code{\link[=plot.epidata]{plot}} and the \code{\link[=summary.epidata]{summary}} method for class \code{"epidata"}. Furthermore, the function \code{\link{animate.epidata}} for the animation of epidemics. Function \code{\link{twinSIR}} for fitting spatio-temporal epidemic intensity models to epidemic data. Function \code{\link{simEpidata}} for the simulation of epidemic data. } \examples{ # see example(hagelloch) # here is an artificial event history data("foodata") str(foodata) # convert the data to an object of class "epidata", # also generating some epidemic covariates myEpidata <- as.epidata(foodata, id.col = 1, start.col = "start", stop.col = "stop", atRiskY.col = "atrisk", event.col = "infected", Revent.col = "removed", coords.cols = c("x","y"), f = list(B1 = function(u) u <= 1, B2 = function(u) u > 1)) # this is how data("fooepidata") has been generated data("fooepidata") stopifnot(all.equal(myEpidata, fooepidata)) # add covariate-based weight for the force of infection, e.g., # to model an increased force if i and j have the same value in z1 myEpidata2 <- update(fooepidata, w = list(samez1 = function(z1.i, z1.j) z1.i == z1.j)) str(fooepidata) subset(fooepidata, BLOCK == 1) summary(fooepidata) # see 'summary.epidata' plot(fooepidata) # see 'plot.epidata' and also 'animate.epidata' stateplot(fooepidata, "15") # see 'stateplot' } \keyword{spatial} \keyword{classes} \keyword{manip} surveillance/man/inside.gpc.poly.Rd0000644000175100001440000000305412236735246017047 0ustar hornikusers\name{inside.gpc.poly} \alias{inside.gpc.poly} \title{ Test Whether Points are Inside a \code{"gpc.poly"} Polygon } \description{ Same as, e.g., \code{\link[spatstat]{inside.owin}} from package \pkg{spatstat} and \code{\link[sp]{point.in.polygon}} from package \pkg{sp}, i.e., test whether points lie inside or outside a given polygon. Actually, the method for \code{"gpc.poly"} documented here internally uses the \code{\link[sp]{point.in.polygon}} function. } \usage{ inside.gpc.poly(x, y = NULL, polyregion, mode.checked = FALSE) } \arguments{ \item{x,y}{ numeric vectors of coordinates of the points to be tested. The coordinates can be supplied in any form accepted by \code{\link{xy.coords}}. } \item{polyregion}{ an object of class \code{"gpc.poly"}. It is checked if the points specified through \code{x} and \code{y} fall into this polygonal region. } \item{mode.checked}{ passed to \code{\link[sp]{point.in.polygon}}. } } \details{ The nodes and edges of (non-hole) polygons are treated as being inside. Points that fall \emph{strictly} inside holes are treated as being outside of the polygon. } \value{ Logical vector whose \code{i}th entry is \code{TRUE} if the corresponding point \code{(x[i],y[i])} is inside \code{polyregion}. } \author{ Sebastian Meyer } \examples{ if (requireNamespace("rgeos")) { poly <- discpoly(c(0.5,0.5), 0.5, npoly=4, class="gpc.poly") pts <- cbind(x=runif(50), y=runif(50)) plot(poly) points(pts, col=1+inside.gpc.poly(pts, polyregion=poly)) } } \keyword{utilities} \keyword{spatial} surveillance/man/toFileDisProg.Rd0000644000175100001440000000134011731650466016547 0ustar hornikusers\name{toFileDisProg} \alias{toFileDisProg} \title{Writing of Disease Data} \description{Writing of disease data (disProg object) into a file. } \usage{ toFileDisProg(disProgObj, toFile) } \arguments{ \item{disProgObj}{The disProgObj to save in file} \item{toFile}{The path and filename of the file to save} } \value{ \item{file}{The file with the disease data} } \details{ Writing of \code{disProg} object into a file as illustrated in the example. } \seealso{\code{\link{readData}}, \code{\link{sim.pointSource}}} \examples{ disProgObj <- sim.pointSource(length=200, K=1) toFileDisProg(disProgObj, "./simulation.txt") mydisProgObj <- readData("./simulation",sysPath=FALSE) } \keyword{file} surveillance/man/twinSIR_profile.Rd0000644000175100001440000000430512422406333017106 0ustar hornikusers\encoding{latin1} \name{twinSIR_profile} \alias{profile.twinSIR} \alias{plot.profile.twinSIR} \title{ Profile Likelihood Computation and Confidence Intervals } \description{ Function to compute estimated and profile likelihood based confidence intervals. Computations might be cumbersome! } \usage{ \method{profile}{twinSIR}(fitted, profile, alpha = 0.05, control = list(fnscale = -1, factr = 10, maxit = 100), ...) } \arguments{ \item{fitted}{ an object of class \code{"twinSIR"}. } \item{profile}{ a list with elements being numeric vectors of length 4. These vectors must have the form \code{c(index, lower, upper, gridsize)}. \describe{ \item{\code{index}:}{ index of the parameter to be profiled in the vector \code{coef(fitted)}. } \item{\code{lower, upper}:}{ lower/upper limit of the grid on which the profile log-likelihood is evaluated. Can also be \code{NA} in which case \code{lower/upper} equals the lower/upper bound of the respective 0.3 \% Wald confidence interval (+-3*se). } \item{\code{gridsize}:}{ grid size of the equally spaced grid between lower and upper. Can also be 0 in which case the profile log-likelihood for this parameter is not evaluated on a grid. } } } \item{alpha}{ \eqn{(1-\alpha) 100\%}{(1-alpha)*100\%} profile likelihood based confidence intervals are computed. If \code{alpha <= 0}, then no confidence intervals are computed. } \item{control}{ control object to use in \code{\link{optim}} for the profile log-likelihood computations. } \item{\dots}{ unused (argument of the generic). } } \value{ list with profile log-likelihood evaluations on the grid and highest likelihood and wald confidence intervals. The argument \code{profile} is also returned. } \author{ Michael \enc{Höhle}{Hoehle} and Sebastian Meyer } \examples{ if (surveillance.options("allExamples")) { data("foofit") prof <- profile(foofit, list(c(1,NA,NA,5), c(3,NA,NA,0), c(4, 0.5, 1.1, 10))) prof ## there is also a plot-method for "profile.twinSIR" plot(prof) } } \keyword{htest} \keyword{methods} \keyword{optimize} \keyword{dplot} surveillance/man/twinstim_update.Rd0000644000175100001440000000502112334412354017245 0ustar hornikusers\name{twinstim_update} \alias{update.twinstim} \title{ \code{update}-method for \code{"twinstim"} } \description{ Update and (by default) re-fit a \code{"twinstim"}. This method is especially useful if one wants to add the \code{model} environment (which is required for some methods) to a fitted model object a posteriori. } \usage{ \method{update}{twinstim}(object, endemic, epidemic, control.siaf, optim.args, model, ..., use.estimates = TRUE, evaluate = TRUE) } \arguments{ \item{object}{a previous \code{"twinstim"} fit.} \item{endemic, epidemic}{changes to the formulae -- see \code{\link{update.formula}} and \code{\link{twinstim}}.} \item{control.siaf}{a list (see \code{\link{twinstim}}) to replace the given elements in the original \code{control.siaf} list. If \code{NULL}, the original list of control arguments is removed from the call, i.e., the defaults are used in \code{twinstim}.} \item{optim.args}{see \code{\link{twinstim}}. If a list, it will modify the original \code{optim.args} using \code{\link{modifyList}}.} \item{model}{see \code{\link{twinstim}}. If this is the only argument to update, re-fitting is cleverly circumvented. Enriching the fit by the model environment is, e.g., required for \code{\link{intensityplot.twinstim}}.} \item{\dots}{Additional arguments to the call, or arguments with changed values.\cr If \code{start} values are specified, they need to be in the same format as in the original call \code{object$call$start}, which is either a named list of named numeric vectors or a named numeric vector; see the argument description in \code{\link{twinstim}}.} \item{use.estimates}{logical indicating if the estimates of \code{object} should be used as initial values for the new fit (in the \code{start} argument of \code{twinstim}). Defaults to \code{TRUE}.} \item{evaluate}{If \code{TRUE} (default), evaluate the new call else return the call.} } \value{ If \code{evaluate = TRUE} the re-fitted object, otherwise the updated call. } \author{ Sebastian Meyer Inspiration and some pieces of code originate from \code{\link{update.default}} by the R Core Team. } \seealso{ \code{\link{update.default}} } \examples{ data("imdepi") data("imdepifit") ## add another epidemic covariate (but fix siaf-parameter for speed) imdepifit2 <- update(imdepifit, epidemic = ~. + log(popdensity), optim.args = list(fixed="e.siaf.1")) ## compare by AIC AIC(imdepifit, imdepifit2) } \keyword{models} \keyword{methods} surveillance/man/algo.hmm.Rd0000644000175100001440000001575312034543506015545 0ustar hornikusers\encoding{latin1} \name{algo.hmm} \alias{algo.hmm} \title{Hidden Markov Model (HMM) method} \description{ % This function implements on-line HMM detection of outbreaks based on the retrospective procedure described in Le Strat and Carret (1999). Using the function \code{\link[msm]{msm}} (from package \pkg{msm}) a specified HMM is estimated, the decoding problem, i.e. the most probable state configuration, is found by the Viterbi algorithm and the most probable state of the last observation is recorded. On-line detection is performed by sequentally repeating this procedure. Warning: This function can be very slow - a more efficient implementation would be nice! } \usage{ algo.hmm(disProgObj, control = list(range=range, Mtilde=-1, noStates=2, trend=TRUE, noHarmonics=1, covEffectEqual=FALSE, saveHMMs = FALSE, extraMSMargs=list())) } \arguments{ \item{disProgObj}{object of class disProg (including the observed and the state chain)} \item{control}{control object: \describe{ \item{\code{range}}{determines the desired time points which should be evaluated. Note that opposite to other surveillance methods an initial parameter estimation occurs in the HMM. Note that range should be high enough to allow for enough reference values for estimating the HMM} \item{\code{Mtilde}}{number of observations back in time to use for fitting the HMM (including the current observation). Reasonable values are a multiple of \code{disProgObj$freq}, the default is \code{Mtilde=-1}, which means to use all possible values - for long series this might take very long time!} \item{\code{noStates}}{number of hidden states in the HMM -- the typical choice is 2. The initial rates are set such that the \code{noStates}'th state is the one having the highest rate. In other words: this state is considered the outbreak state.} \item{\code{trend}}{Boolean stating whether a linear time trend exists, i.e. if \code{TRUE} (default) then \eqn{\beta_j \neq 0}{\beta != 0}} \item{\code{noHarmonics}}{number of harmonic waves to include in the linear predictor. Default is 1.} \item{\code{covEffectEqual}}{see details} \item{\code{saveHMMs}}{Boolean, if \code{TRUE} then the result of the fitted HMMs is saved. With this option the function can also be used to analyse data retrospectively. Default option is \code{FALSE}} \item{\code{extraMSMArgs}}{A named list with additional arguments to send to the \code{\link[msm:msm]{msm}} HMM fitting function. Note that the \code{msm} arguments \code{formula}, \code{data}, \code{qmatrix}, \code{hmodel}, \code{hcovariates} and \code{hconstraint} are automatically filled by \code{algo.hmm}, thus these should NOT be modified.} } } } \value{ \item{survRes}{ \code{algo.hmm} gives a list of class \code{survRes} which includes the vector of alarm values for every timepoint in \code{range}. No \code{upperbound} can be specified and is put equal to zero. The resulting object contains a slot \code{control$hmm}, which contains the \code{msm} object with the fitted HMM. } } \details{ For each time point t the reference values values are extracted. If the number of requested values is larger than the number of possible values the latter is used. Now the following happens on these reference values: A \code{noState}-State Hidden Markov Model (HMM) is used based on the Poisson distribution with linear predictor on the log-link scale. I.e. \deqn{Y_t | X_t = j \sim Po(\mu_t^j),}{Y_t|X_t = j ~ Po(\mu_t^j),} where \deqn{\log(\mu_t^j) = \alpha_j + \beta_j\cdot t + \sum_{i=1}^{nH} \gamma_j^i \cos(2i\pi/freq\cdot (t-1)) + \delta_j^i \sin(2i\pi/freq\cdot (t-1))}{% log(mu_t^j) = alpha_j + beta_j t + \sum_{i=1}^{nH} gamma_j^i \cos(2*i*pi/freq * (t-1)) + delta_j^i sin(2*i*pi/freq * (t-1)) } % and \eqn{nH=}\code{noHarmonics} and \eqn{freq=12,52} depending on the sampling frequency of the surveillance data. In the above \eqn{t-1} is used, because the first week is always saved as \code{t=1}, i.e. we want to ensure that the first observation corresponds to cos(0) and sin(0). If \code{covEffectEqual} then all covariate effects parameters are equal for the states, i.e. \eqn{\beta_j=\beta, \gamma_j^i=\gamma^i, \delta_j^i=\delta^i} for all \eqn{j=1,...,noState}. In case more complicated HMM models are to be fitted it is possible to modify the \code{msm} code used in this function. Using e.g. \code{AIC} one can select between different models (see the \pkg{msm} package for further details). Using the Viterbi algorithms the most probable state configuration is obtained for the reference values and if the most probable configuration for the last reference value (i.e. time t) equals \code{control$noOfStates} then an alarm is given. Note: The HMM is re-fitted from scratch every time, sequential updating schemes of the HMM would increase speed considerably! A major advantage of the approach is that outbreaks in the reference values are handled automatically. } \seealso{\code{\link[msm:msm]{msm}}} \author{M. \enc{Höhle}{Hoehle}} \examples{ \dontrun{ library("msm") set.seed(123) #Simulate outbreak data from HMM counts <- sim.pointSource(p = 0.98, r = 0.8, length = 3*52, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.5) #Do surveillance using a two state HMM without trend component and #the effect of the harmonics being the same in both states. A sliding #window of two years is used to fit the HMM surv <- algo.hmm(counts, control=list(range=(2*52):length(counts$observed), Mtilde=2*52,noStates=2,trend=FALSE, covEffectsEqual=TRUE,extraMSMargs=list())) plot(surv,legend=list(x="topright")) #Retrospective use of the function, i.e. monitor only the last time point #but use option saveHMMs to store the output of the HMM fitting surv <- algo.hmm(counts,control=list(range=length(counts$observed),Mtilde=-1,noStates=2, trend=FALSE,covEffectsEqual=TRUE, saveHMMs=TRUE)) #Compute most probable state using the viterbi algorithm - 1 is "normal", 2 is "outbreak". viterbi.msm(surv$control$hmm[[1]])$fitted #How often correct? tab <- cbind( truth=counts$state + 1 , hmm=viterbi.msm(surv$control$hmm[[1]])$fitted) table(tab[,1],tab[,2]) } } \references{ Y. Le Strat and F. Carrat, Monitoring Epidemiologic Surveillance Data using Hidden Markov Models (1999), Statistics in Medicine, 18, 3463--3478 I.L. MacDonald and W. Zucchini, Hidden Markov and Other Models for Discrete-valued Time Series, (1997), Chapman & Hall, Monographs on Statistics and applied Probability 70 } \keyword{classif} surveillance/man/algo.twins.Rd0000644000175100001440000001262412452533345016126 0ustar hornikusers\encoding{latin1} \name{algo.twins} \alias{algo.twins} \title{Model fit based on a two-component epidemic model} \description{ Fits a negative binomial model (as described in Held et al. (2006) to an univariate time series of counts. } \usage{ algo.twins(disProgObj, control=list(burnin=1000, filter=10, sampleSize=2500, noOfHarmonics=1, alpha_xi=10, beta_xi=10, psiRWSigma=0.25,alpha_psi=1, beta_psi=0.1, nu_trend=FALSE, logFile="twins.log")) } \arguments{ \item{disProgObj}{object of class \code{disProg}} \item{control}{control object: \describe{ \item{\code{burnin}}{Number of burn in samples.} \item{\code{filter}}{Thinning parameter. If \code{filter = 10} every 10th sample is after the burn in is returned.} \item{\code{sampleSize}}{Number of returned samples. Total number of samples = \code{burnin}+\code{filter}*\code{sampleSize}} \item{\code{noOfHarmonics}}{Number of harmonics to use in the modelling, i.e. \eqn{L}{L} in (2.2) of Held et al (2006).} \item{\code{alpha_xi}}{Parameter \eqn{\alpha_{\xi}}{\alpha_\xi} of the hyperprior of the epidemic parameter \eqn{\lambda}{\lambda}} \item{\code{beta_xi}}{Parameter \eqn{\beta_{\xi}}{\beta_\xi} of the hyperprior of the epidemic parameter \eqn{\lambda}{\lambda}} \item{\code{psiRWSigma}}{Starting value for the tuning of the variance of the random walk proposal for the overdispersion parameter \eqn{\psi}{\psi}.} \item{\code{alpha_psi}}{Parameter \eqn{\alpha_{\psi}}{\alpha_\psi} of the prior of the overdispersion parameter \eqn{\psi}{\psi}} \item{\code{beta_psi}}{Parameter \eqn{\beta_{\psi}}{\beta_\psi} of the prior of the overdispersion parameter \eqn{\psi}{\psi}} \item{\code{nu_trend}}{Adjust for a linear trend in the endemic part? (default: \code{FALSE})} \item{\code{logFile}}{Base file name for the output files. The function writes three output files in your current working directory (i.e. getwd()). If \code{logfile = "twins.log"} the results are stored in the three files "twins.log", "twins.log2" and "twins.log.acc". "twins.log" containes the returned samples of the parameters \eqn{\psi}{\psi}, \eqn{\gamma_{0}}{\gamma_0}, \eqn{\gamma_{1}}{\gamma_1}, \eqn{\gamma_{2}}{\gamma_2}, K, \eqn{\xi_{\lambda}}{\xi_\lambda} \eqn{\lambda_{1},...,\lambda{n}}{\lambda_1,...,\lambda_{n}}, the predictive distribution of the number of cases at time \eqn{n+1} and the deviance. "twins.log2" containes the sample means of the variables \eqn{X_{t}, Y_{t}, \omega_{t}}{X_t, Y_t, \omega_t} and the relative frequency of a changepoint at time t for t=1,...,n and the relative frequency of a predicted changepoint at time n+1. "twins.log.acc" contains the acceptance rates of \eqn{\psi}{\psi}, the changepoints and the endemic parameters \eqn{\gamma_{0}}{\gamma_0}, \eqn{\gamma_{1}}{\gamma_1}, \eqn{\gamma_{2}}{\gamma_2} in the third column and the variance of the random walk proposal for the update of the parameter \eqn{\psi}{\psi} in the second column.} } } } \details{Note that for the time being this function is not a surveillance algorithm, but only a modelling approach as described in the Held et. al (2006) paper. Note also that the function writes three logfiles in your current working directory (i.e. getwd()): twins.log, twins.log.acc and twins.log2 Thus you need to have write permissions in the current getwd() directory. Finally, inspection of the C++ code using valgrind shows some memory leaks when running the old underlying C++ program. As we are unable to fix this impurity at the present time, we have instead put the example code in a 'dontrun' environment. The example code, however, works fine -- the measure is thus more aimed at reducing the number of CRAN problems with the package. } \value{Returns an object of class \code{atwins} with elements \item{control}{specified control object} \item{disProgObj}{specified \code{disProg}-object} \item{logFile}{containes the returned samples of the parameters \eqn{\psi}{\psi}, \eqn{\gamma_{0}}{\gamma_0}, \eqn{\gamma_{1}}{\gamma_1}, \eqn{\gamma_{2}}{\gamma_2}, K, \eqn{\xi_{\lambda}}{\xi_\lambda} \eqn{\lambda_{1},...,\lambda{n}}{\lambda_1,...,\lambda_{n}}, the predictive distribution and the deviance.} \item{logFile2}{containes the sample means of the variables \eqn{X_{t}, Y_{t}, \omega_{t}}{X_t, Y_t, \omega_t} and the relative frequency of a changepoint at time t for t=1,...,n and the relative frequency of a predicted changepoint at time n+1.} } \references{ Held, L., Hofmann, M., \enc{Höhle}{Hoehle}, M. and Schmid V. (2006): A two-component model for counts of infectious diseases. \emph{Biostatistics}, \bold{7}, pp. 422--437. } \author{ M. Hofmann and M. \enc{Höhle}{Hoehle} and D. \enc{Sabanés Bové}{Sabanes Bove} } \examples{ \dontrun{ # Load the data used in the Held et al. (2006) paper data("hepatitisA") # Fix seed - this is used for the MCMC samplers in twins set.seed(123) # Call algorithm and save result (use short chain without filtering for speed) otwins <- algo.twins(hepatitisA, control=list(burnin=500, filter=1, sampleSize=1000)) # This shows the entire output (use ask=TRUE for pause between plots) plot(otwins, ask=FALSE) # Direct access to MCMC output hist(otwins$logFile$psi,xlab=expression(psi),main="") if (require("coda")) { print(summary(mcmc(otwins$logFile[,c("psi","xipsi","K")]))) } } } \keyword{ts} \keyword{regression} surveillance/man/measles.weser.Rd0000644000175100001440000001024612523207133016604 0ustar hornikusers\encoding{latin1} \name{measles.weser} \alias{measles.weser} \alias{measlesWeserEms} \docType{data} \keyword{datasets} \title{Measles in the Weser-Ems region of Lower Saxony, Germany, 2001-2002} \description{ Weekly counts of new measles cases for the 17 administrative districts (NUTS-3 level) of the \dQuote{Weser-Ems} region of Lower Saxony, Germany, during 2001 and 2002, as reported to the Robert Koch institute according to the Infection Protection Act (\dQuote{Infektionsschutzgesetz}, \acronym{IfSG}).\cr \code{data("measlesWeserEms")} is a corrected version of \code{data("measles.weser")} (see Format section below). } \usage{ data("measles.weser") data("measlesWeserEms") } \format{ \code{data("measles.weser")} is an object of the old \code{"disProg"} class, whereas \code{data("measlesWeserEms")} is of the new class \code{"\linkS4class{sts}"}. Furthermore, the following updates have been applied for \code{data("measlesWeserEms")}: \itemize{ \item it includes the two districts \dQuote{SK Delmenhorst} (03401) and \dQuote{SK Wilhemshaven} (03405) with zero counts, which are ignored in \code{data("measles.weser")}. \item it corrects the time lag error for year 2002 caused by a redundant pseudo-week \dQuote{0} with 0 counts only (the row \code{measles.weser$observed[53,]} is nonsense). \item it has one more case attributed to \dQuote{LK Oldenburg} (03458) during 2001/W17, i.e., 2 cases instead of 1. This reflects the official data as of \dQuote{Jahrbuch 2005}, whereas \code{data("measles.weser")} is as of \dQuote{Jahrbuch 2004}. \item it contains a map of the region (as a \code{"\linkS4class{SpatialPolygonsDataFrame}"}) with the following variables: \describe{ \item{\code{GEN}}{district label.} \item{\code{AREA}}{district area in m^2.} \item{\code{POPULATION}}{number of inhabitants (as of 31/12/2003).} \item{\code{vaccdoc.2004}}{proportion with a vaccination card among screened abecedarians (2004).} \item{\code{vacc1.2004}}{proportion with at least one vaccination against measles among abecedarians presenting a vaccination card (2004).} \item{\code{vacc2.2004}}{proportion of doubly vaccinated abecedarians among the ones presenting their vaccination card at school entry in the year 2004.} } \item it uses the correct format for the official district keys, i.e., 5 digits (initial 0). \item its attached neighbourhood matrix is more general: a distance matrix (neighbourhood orders) instead of just an adjacency indicator matrix (special case \code{nbOrder == 1}). \item population fractions represent data as of 31/12/2003 (\acronym{NLS}, 2004, document \dQuote{A I 2 - hj 2 / 2003}). There are only minor differences to the ones used for \code{data("measles.weser")}. } } \source{ Measles counts were obtained from the public SurvStat database of the Robert Koch institute: \url{http://www3.rki.de/SurvStat}. A shapefile of Germany's districts as of 01/01/2009 was obtained from the Service Center (\url{www.geodatenzentrum.de}) of the German Federal Agency for Cartography and Geodesy (\url{www.bkg.bund.de}). The map of the 17 districts of the \dQuote{Weser-Ems} region (\code{measlesWeserEms@map}) is a simplified subset of this shapefile using a 30\% reduction via the Douglas-Peucker reduction method as implemented at \url{MapShaper.org}. Population numbers were obtained from the Federal Statistical Office of Lower Saxony (\acronym{LSN}): \url{http://www.statistik.niedersachsen.de/portal/live.php?navigation_id=25688&article_id=87679&_psmand=40} Vaccination coverage was obtained from the public health department of Lower Saxony: Nieders\enc{ä}{ae}chsisches Landesgesundheitsamt (2005): Impfreport -- Durchimpfung von Kindern im Einschulungsalter in Niedersachsen im Erhebungsjahrgang 2004. Online available from \url{http://www.nlga.niedersachsen.de/portal/live.php?navigation_id=27093&article_id=19385&_psmand=20}, also as an interactive version. } \examples{ data("measles.weser") measles.weser plot(measles.weser, as.one=FALSE) data("measlesWeserEms") measlesWeserEms plot(measlesWeserEms) } surveillance/man/pit.Rd0000644000175100001440000000517012610202071014614 0ustar hornikusers\name{pit} \alias{pit} \alias{pit.default} \title{ Non-Randomized Version of the PIT Histogram (for Count Data) } \description{ See Czado et al. (2009). } \usage{ pit(x, ...) \method{pit}{default}(x, pdistr, J = 10, relative = TRUE, ..., plot = list()) } \arguments{ \item{x}{ numeric vector representing the observed counts. } \item{pdistr}{ either a list of predictive cumulative distribution functions for the observations \code{x}, or (the name of) a single predictive CDF used for all \code{x} (with potentially varying arguments \code{...}). It is checked that the predictive CDF returns 0 at \code{x=-1}. The name of its first argument can be different from \code{x}, e.g., \code{pdistr="pnbinom"} is possible.\cr If \code{pdistr} is a single function and no additional \code{\dots} arguments are supplied, \code{pdistr} is assumed to be vectorized, i.e., it is simply called as \code{pdistr(x)} and \code{pdistr(x-1)}. Otherwise, the predictive CDF is called sequentially and does not need to be vectorized. } \item{J}{ the number of bins of the histogram. } \item{relative}{ logical indicating if relative frequency or the density should be plotted. } \item{\dots}{ ignored if \code{pdistr} is a list. Otherwise, such additional arguments are used in sequential calls of \code{pdistr} via \code{\link{mapply}(pdistr, x, ...)}. } \item{plot}{ a list of arguments for \code{\link{plot.histogram}}. Otherwise, no plot will be produced. } } \value{ an object of class \code{"pit"}, which inherits from class \code{"histogram"} (see \code{\link{hist}}). It is returned invisibly if a plot is produced. } \references{ Czado, C., Gneiting, T. & Held, L. (2009): Predictive model assessment for count data. \emph{Biometrics}, \bold{65}, 1254-1261. } \author{ Michaela Paul and Sebastian Meyer } \examples{ ## Simulation example of Czado et al. (2009, Section 2.4) set.seed(100) x <- rnbinom(200, mu = 5, size = 2) pdistrs <- list("NB(5,0)" = function (x) ppois(x, lambda=5), "NB(5,1/2)" = function (x) pnbinom(x, mu=5, size=2), "NB(5,1)" = function (x) pnbinom(x, mu=5, size=1)) ## Reproduce Figure 1 op <- par(mfrow = c(1,3)) for (i in seq_along(pdistrs)) { pit(x, pdistr = pdistrs[[i]], J = 10, relative = TRUE, plot = list(ylim = c(0,2.75), main = names(pdistrs)[i])) box() } par(op) ## Alternative call using ... arguments for pdistr (less efficient) stopifnot(identical(pit(x, "pnbinom", mu = 5, size = 2, plot = FALSE), pit(x, pdistrs[[2]], plot = FALSE))) } \keyword{dplot} surveillance/man/layout.labels.Rd0000644000175100001440000001056312573357737016634 0ustar hornikusers\name{layout.labels} \alias{layout.labels} \alias{layout.scalebar} \title{ Layout Items for \code{spplot} } \description{ Generate \code{sp.layout} items for use by \code{\link{spplot}} or plot these items directly in the traditional graphics system. Function \code{layout.labels} draws labels at the coordinates of the spatial object, and \code{layout.scalebar} returns a labeled scale bar. } \usage{ layout.labels(obj, labels = TRUE, plot = FALSE) layout.scalebar(obj, corner = c(0.05, 0.95), scale = 1, labels = c(0, scale), height = 0.05, pos = 3, ..., plot = FALSE) } \arguments{ \item{obj}{ an object inheriting from a \code{\linkS4class{Spatial}} class. } \item{labels}{ specification of the labels. For \code{layout.labels}: \itemize{ \item a \code{FALSE} or \code{NULL} value omits labels (\code{NULL} is returned), \item \code{labels = TRUE} uses \code{row.names(obj)}, \item a character or numeric index for a column of \code{obj@data} which contains suitable labels, \item a vector of length \code{length(obj)} with labels, \item or a list of arguments for \code{\link[lattice]{panel.text}}, where the optional \code{labels} component follows the same rules as above. } For \code{layout.scalebar}, a character vector of length two giving the labels to be put above the left and right ends of the scale bar. } \item{corner}{ the location of the scale bar in the unit square, where \code{c(0,0)} refers to the bottom left corner. By default, the scale bar is placed in the top left corner (with a small buffer). } \item{scale}{ the width of the scale bar in the units of \code{\link{proj4string}(obj)}. If \code{identical(FALSE, \link{is.projected}(obj))} (i.e., \code{obj} has longlat coordinates), \code{scale} is interpreted in kilometres. } \item{height}{ the height of the scale bar, see \code{\link{layout.scale.bar}}. } \item{pos}{ a position specifier for the labels (see \code{\link{text}}). By default, the labels are plotted above the scale bar. } \item{\dots}{ further arguments for \code{\link[lattice]{panel.text}} (if \code{plot = FALSE}) or \code{\link{text}} (if \code{plot = TRUE}) to change the style of the labels, e.g., \code{cex}, \code{col}, and \code{font}. } \item{plot}{ logical indicating if the layout item should be plotted using the traditional graphics system. By default (\code{FALSE}), a list for subsequent use by \code{\link{spplot}} is returned. } } \value{ For \code{layout.labels}, a single \code{sp.layout} item, which is a list with first element \code{"panel.text"} and subsequent elements being arguments to that function based on the \code{labels} specification. For \code{layout.scalebar}, a list of \code{sp.layout} items comprising the polygonal scale bar and the labels. If these layout functions are called with \code{plot = TRUE}, the item is plotted directly using traditional graphics functions and \code{NULL} is returned. } \author{ Sebastian Meyer } \examples{ ## districts in the Regierungsbezirk Weser-Ems (longlat coordinates) data("measlesWeserEms") mapWE <- measlesWeserEms@map li1 <- layout.labels(mapWE, labels = list(font=2, labels="GEN")) li2 <- layout.scalebar(mapWE, corner = c(0.05, 0.05), scale = 20, labels = c("0", "20 km")) spplot(mapWE, zcol = "AREA", sp.layout = c(list(li1), li2), col.regions = rev(heat.colors(100)), scales = list(draw = TRUE)) ## districts in Bavaria (projected coordinates) load(system.file("shapes", "districtsD.RData", package = "surveillance")) bavaria <- districtsD[substr(row.names(districtsD), 1, 2) == "09", ] sb <- layout.scalebar(bavaria, corner = c(0.75,0.9), scale = 50, labels = c("0", "50 km"), cex = 0.8) spplot(bavaria, zcol = "POPULATION", sp.layout = sb, xlab = "x [km]", ylab = "y [km]", scales = list(draw = TRUE), col.regions = rev(heat.colors(100))) ## these layout functions also work in the traditional graphics system par(mar = c(0,0,0,0)) plot(bavaria, col = "lavender") layout.scalebar(bavaria, corner = c(0.75, 0.9), scale = 50, labels = c("0", "50 km"), plot = TRUE) layout.labels(bavaria, labels = list(cex = 0.8, labels = substr(bavaria$GEN, 1, 3)), plot = TRUE) } \keyword{aplot} \keyword{dplot} surveillance/man/surveillance-package.Rd0000644000175100001440000001223312503245315020114 0ustar hornikusers% Note @ R 3.0.2: Unfortunately, setting \RdOpts{stage=build} globally % does not work as expected, so we have to specify it in each \Sexpr \encoding{latin1} \name{surveillance-package} \alias{surveillance-package} \alias{surveillance} \docType{package} \title{ \Sexpr[stage=build]{(meta <- packageDescription("surveillance", encoding="latin1"))$Title} % If !is.na(encoding), do iconv() from "latin1" (DESCRIPTION: Encoding) to 'encoding' % Do we really need re-encoding, i.e., encoding="latin1", to make the \Sexpr's work on Windows? } \description{ \Sexpr[stage=build]{meta$Description} } \details{ \tabular{ll}{ Package: \tab \Sexpr[stage=build]{meta$Package}\cr Version: \tab \Sexpr[stage=build]{meta$Version}\cr License: \tab \Sexpr[stage=build]{meta$License}\cr URL: \tab \url{http://surveillance.r-forge.r-project.org/}\cr % cannot use \Sexpr within \url; and results=rd with "\\url"-paste is buggy } \pkg{surveillance} is an \R package implementing statistical methods for the retrospective modeling and prospective change-point detection in time series of counts, proportions and categorical data. The main application is in the detection of aberrations in routine collected public health data seen as univariate and multivariate time series of counts or point-processes. However, applications could just as well originate from environmetrics, econometrics or social sciences. As many methods rely on statistical process control methodology, the package is thus also relevant to quality control and reliability engineering. The fundamental data structure of the package is an S4 class \code{sts} wrapping observations, monitoring results and date handling for multivariate time series. Currently the package contains implementations typical outbreak detection procedures such as Stroup et al. (1989), Farrington et al., (1996), Rossi et al. (1999), Rogerson and Yamada (2001), a Bayesian approach (H\enc{ö}{oe}hle, 2007), negative binomial CUSUM methods (H\enc{ö}{oe}hle and Mazick, 2009), and a detector based on generalized likelihood ratios (H\enc{ö}{oe}hle and Paul, 2008). However, also CUSUMs for the prospective change-point detection in binomial, beta-binomial and multinomial time series is covered based on generalized linear modelling. This includes e.g. paired binary CUSUM described by Steiner et al. (1999) or paired comparison Bradley-Terry modelling described in H\enc{ö}{oe}hle (2010). The package contains several real-world datasets, the ability to simulate outbreak data, visualize the results of the monitoring in temporal, spatial or spatio-temporal fashion. Furthermore, the package contains inference methods for the retrospective infectious disease model in Held et al. (2005), Paul et al. (2008) ("algo.hhh") and Paul and Held (2011) ("hhh4") handling multivariate time series of counts. Furthermore, the fully Bayesian approach for univariate time series of counts from Held et al. (2006) ("twins") is also implemented. Self-exciting spatio-temporal point processes are modeled through additive-multiplicative conditional intensities as described in H\enc{ö}{oe}hle (2009) ("twinSIR") and Meyer et al (2012) ("twinstim"). Altogether, the package allows the modelling and monitoring of epidemic phenomena in temporal and spatio-temporal contexts. } %% Author information is dynamically extracted from the DESCRIPTION file \author{ \Sexpr[stage=build]{authors <- unname(eval(parse(text=meta$"Authors@R")))} \Sexpr[stage=build]{formatPerson <- function(person, sort=FALSE) paste0(format(if (sort && length(person) > 1) person[order(unlist(person$family))] else person, include=c("given", "family")), collapse=", ")} \Sexpr[stage=build]{formatPerson(authors[grep("aut", authors$role)])} \Sexpr[stage=build]{maintainer <- authors[grep("cre", authors$role)]} Maintainer: \Sexpr[stage=build]{formatPerson(maintainer)} \email{\Sexpr[stage=build]{maintainer$email}} } %% Dynamically extract contributors from the DESCRIPTION file %% and persons from inst/THANKS for acknowledgement: \section{Acknowledgements}{ Substantial contributions of code by: \Sexpr[stage=build]{contributors <- authors[grepl("ctb", authors$role) & !sapply(authors$family, is.null)]} \Sexpr[stage=build]{formatPerson(contributors, sort=TRUE)}. Furthermore, the authors would like to thank the following people for ideas, discussions, testing and feedback: \Sexpr[stage=build]{THANKSfile <- file(system.file("THANKS", package="surveillance", mustWork=TRUE), encoding="latin1")} % this re-encodes from "latin1" to the current native encoding \Sexpr[stage=build]{formatPerson(as.person(grep("^(#|[[:blank:]]*$)", readLines(THANKSfile), invert=TRUE, value=TRUE)), sort=TRUE)}. \Sexpr[stage=build]{close(THANKSfile)} } \references{ See \code{citation(package="surveillance")}. } \keyword{ package } \examples{ #Code from an early survey article about the package: Hoehle (2007) #available from http://surveillance.r-forge.r-project.org/ \dontrun{demo(cost)} #Code from a more recent book chapter about using the package for the #monitoring of Danish mortality data (Hoehle and Mazick, 2010). \dontrun{demo(biosurvbook)} } surveillance/man/rotaBB.Rd0000644000175100001440000000114612306104146015176 0ustar hornikusers\name{rotaBB} \alias{rotaBB} \docType{data} \title{Rotavirus cases in Brandenburg, Germany, during 2002-2013 stratified by 5 age categories} \description{ Monthly reported number of rotavirus infections in the federal state of Brandenburg stratified by five age categories (00-04, 05-09, 10-14, 15-69, 70+) during 2002-2013. } \usage{data(rotaBB)} \format{ A \code{sts} object. } \source{ The data are queried on 19 Feb 2014 from the Survstat@RKI database of the German Robert Koch Institute (\url{http://www3.rki.de/SurvStat/}). } \examples{ data(rotaBB) } \keyword{datasets} surveillance/man/stsplot_time.Rd0000644000175100001440000002023512611415457016564 0ustar hornikusers\encoding{latin1} \name{stsplot_time} \alias{stsplot_time} \alias{stsplot_time1} \alias{stsplot_alarm} \title{ Time-Series Plots for \code{"sts"} Objects } \description{ These are the \code{plot} variants of \code{type=observed~time|unit}, \code{type=observed~time}, and \code{type=alarm~time} for \code{"\linkS4class{sts}"} objects (see the central \code{"sts"} \code{\link[=plot,sts,missing-method]{plot}}-method for an overview of plot types). } \usage{ stsplot_time(x, units=NULL, method=x@control$name, disease=x@control$data, as.one=FALSE, same.scale=TRUE, par.list=list(), ...) stsplot_time1(x, k=1, ylim=NULL, axes=TRUE, xaxis.tickFreq=list("\%Q"=atChange), xaxis.labelFreq=xaxis.tickFreq, xaxis.labelFormat="\%G\n\n\%OQ", epochsAsDate=x@epochAsDate, xlab="time", ylab="No. infected", main=NULL, type="s", lty=c(1,1,2), col=c(NA,1,4), lwd=c(1,1,1), outbreak.symbol=list(pch=3, col=3, cex=1, lwd=1), alarm.symbol=list(pch=24, col=2, cex=1, lwd=1), legend.opts=list(), dx.upperbound=0L, hookFunc=function(){}, .hookFuncInheritance=function() {}, ...) stsplot_alarm(x, lvl=rep(1,nrow(x)), ylim=NULL, xaxis.tickFreq=list("\%Q"=atChange), xaxis.labelFreq=xaxis.tickFreq, xaxis.labelFormat="\%G\n\n\%OQ", epochsAsDate=x@epochAsDate, xlab="time", main=NULL, type="hhs", lty=c(1,1,2), col=c(1,1,4), outbreak.symbol=list(pch=3, col=3, cex=1, lwd=1), alarm.symbol=list(pch=24, col=2, cex=1, lwd=1), cex=1, cex.yaxis=1, ...) } \arguments{ \item{x}{an object of class \code{"\linkS4class{sts}"}.} \item{units}{optional integer or character vector to select the units (=columns of \code{observed(x)}) to plot. \code{stsplot_time1} is called \code{for (k in units)}. The default is to plot all time series. This argument is especially useful if \code{x} has a lot of units which do not fit onto a single page altogether (and produce the error message \dQuote{figure margins too large}).} \item{method}{name of the surveillance method to be used in the main title. Currently ignored.} \item{disease}{name of the disease to be used in the main title. Currently ignored.} \item{as.one}{logical indicating if all time series should be plotted within the same frame. This is currently not implemented for the \code{"sts"} class, but see \code{\link{plot.disProg}} and \code{\link{sts2disProg}}.} \item{same.scale}{logical indicating if all time series should be plotted with the same \code{ylim}. Default is to do so. Only relevant for multivariate plots (\code{ncol(x) > 1}).} \item{par.list}{a list of arguments delivered to a call of \code{\link{par}} to set graphical parameters before plotting. The \code{mfrow} splitting is handled per default. Afterwards, the \code{par}ameters are reverted to their original values. Use \code{par.list=NULL} to disable the internal \code{par} call.} \item{k}{the unit to plot, i.e., an element of \code{1:ncol(x)}.} \item{ylim}{the y limits of the plot(s). Ignored if \code{same.scale=FALSE}.} \item{axes}{a logical value indicating whether both axes should be drawn on the plot.} \item{xaxis.tickFreq,xaxis.labelFreq,xaxis.labelFormat}{see \code{\link{addFormattedXAxis}}.} \item{epochsAsDate}{Boolean indicating whether to treat the epochs as Date objects (or to transform them to dates such that the new x-axis formatting is applied). Default: Value of the \code{epochAsDate} slot of \code{x}.} \item{xlab}{a title for the x axis. See \code{plot.default}.} \item{ylab}{a title for the y axis. See \code{plot.default}.} \item{main}{an overall title for the plot: see 'title'.} \item{type}{type of plot to do.} \item{lty}{vector of length 3 specifying the line type for the three lines in the plot -- see \code{col} argument.} \item{col}{Vector of length 3 specifying the color to use in the plot. The first color is the fill color of the polygons for the counts bars (\code{NA} for unfilled), the 2nd element denotes their border color, the 3rd element is the color of the \code{upperbound} plotting.} \item{lwd}{Vector of length 3 specifying the line width of the three elements to plot. See also the \code{col} argment.} \item{alarm.symbol}{a list with entries \code{pch}, \code{col}, \code{cex} and \code{lwd} specifying the appearance of the outbreak symbol in the plot.} \item{outbreak.symbol}{a list with entries \code{pch}, \code{col}, \code{cex} and \code{lwd} specifying the appearance of the outbreak symbol in the plot.} \item{legend.opts}{a list of arguments for \code{\link{legend}}. If \code{\link{missing}(legend.opts)} (i.e., not explicitly specified), the default legend will only be produced if \code{x} contains any information on outbreaks, alarms, or upperbounds. To disable the legend, use, e.g., \code{legend.opts=NULL}. Otherwise, the following arguments are default: \describe{ \item{\code{x}}{\code{"top"}} \item{\code{legend}}{\code{c("Infected","Threshold","Outbreak","Alarm")}} \item{\code{lty,pch,col}}{the corresponding graphical settings} } Any further arguments to the \code{legend} function are just provided as additional elements of this list, e.g. \code{horiz=TRUE}. } \item{dx.upperbound}{horizontal change in the plotting of the upperbound line. Sometimes it can be convenient to offset this line a little for better visiability.} \item{lvl}{A vector of length \code{ncol(x)}, which is used to specify the hierarchy level for each time series in the sts object for alarm plots.} \item{cex}{A numerical value giving the amount by which plotting text and symbols should be magnified relative to the default. See \code{?par} for details.} \item{cex.yaxis}{The magnification to be used for y-axis annotation relative to the current setting of 'cex'.} \item{hookFunc}{a function that is called after all the basic plotting has be done, i.e., it is not possible to control formatting with this function. See Examples.} \item{.hookFuncInheritance}{a function which is altered by sub-classes plot method. Do not alter this function manually.} \item{...}{further arguments for the function \code{matplot}. If e.g. \code{xlab} or \code{main} are provided they overwrite the default values.} } \details{ The time series plot relies on the work-horse \code{stsplot_time1}. Its arguments are (almost) similiar to \code{\link{plot.survRes}}. } \value{ \code{NULL} (invisibly). The functions are called for their side-effects. } \author{ Michael H\enc{ö}{oe}hle and Sebastian Meyer } \seealso{ the central \code{\link{stsplot}}-documentation for an overview of plot types. } \examples{ data("ha.sts") print(ha.sts) plot(ha.sts, type=observed ~ time | unit) # default multivariate type plot(ha.sts, units = c("mitt", "pank")) # selected units plot(ha.sts, type=observed ~ time) # aggregated over all districts ## Hook function example hookFunc <- function() grid(NA,NULL,lwd=1) plot(ha.sts, hookFunc=hookFunc) ## Use ISO8601 date formatting (see ?strptime) and no legend data("salmNewport") plot(aggregate(salmNewport,by="unit"), xlab="Time (weeks)", xaxis.tickFreq=list("\%m"=atChange,"\%G"=atChange), xaxis.labelFreq=list("\%G"=atMedian),xaxis.labelFormat="\%G") ## Formatting now also works for daily data (illustrate by artifical ## outbreak converted to sts object by linelist2sts) set.seed(123) exposureTimes <- as.Date("2014-03-12") + sample(x=0:25,size=99,replace=TRUE) sts <- linelist2sts(data.frame(exposure=exposureTimes), dateCol="exposure",aggregate.by="1 day") ## Plot it with larger ticks for days than usual surveillance.options("stsTickFactors"=c("\%d"=1, "\%W"=0.33, "\%V"=0.33, "\%m"=1.75, "\%Q"=1.25, "\%Y"=1.5, "\%G"=1.5)) plot(sts,xaxis.tickFreq=list("\%d"=atChange,"\%m"=atChange), xaxis.labelFreq=list("\%d"=at2ndChange),xaxis.labelFormat="\%d-\%b", xlab="Time (days)") } \keyword{hplot} \keyword{ts} surveillance/man/findK.Rd0000644000175100001440000000244111731650466015073 0ustar hornikusers\name{findK} \alias{findK} \title{Find reference value } \description{ Calculates the reference value \code{k} for a Poisson or binomial CUSUM designed to detect a shift from \eqn{\theta_0} to \eqn{\theta_1} } \usage{ findK(theta0, theta1, distr = c("poisson", "binomial"), roundK = FALSE, digits = 1, ...) } \arguments{ \item{theta0}{ in-control parameter } \item{theta1}{ out-of-control parameter } \item{distr}{ \code{"poisson"} or \code{"binomial"} } \item{digits}{ the reference value \code{k} is rounded to \code{digits} decimal places} \item{roundK}{ For discrete data and rational reference value there is only a limited set of possible values that the CUSUM can take (and therefore there is also only a limited set of ARLs). If \code{roundK=TRUE}, integer multiples of 0.5 are avoided when rounding the reference value \code{k}, % i.e. the CUSUM can take more values. %with this \code{k} %and therefore more values of ARL are possible) } \item{\dots}{ further arguments for the distribution function, i.e. number of trials \code{n} for the binomial cdf. } } \value{ Returns reference value \code{k}. } \keyword{models} surveillance/man/stsplot_spacetime.Rd0000644000175100001440000000637412464641365017615 0ustar hornikusers\name{stsplot_spacetime} \alias{stsplot_spacetime} \title{ Map of Disease Incidence } \description{ For each period (row) or for the overall period of the \code{observed} matrix of the \code{"\linkS4class{sts}"} object, a map showing the counts by region is produced. It is possible to redirect the output into files, e.g. to generate an animated GIF. } \usage{ stsplot_spacetime(x, type, legend = NULL, opts.col = NULL, labels = TRUE, wait.ms = 250, cex.lab = 0.7, verbose = FALSE, dev.printer = NULL, ...) } \arguments{ \item{x}{ an object of class \code{"\linkS4class{sts}"}. } \item{type}{ a formula (see \code{\link{stsplot}}). For a map aggregated over time (no animation), use \code{observed ~ 1 | unit}, otherwise \code{observed ~ 1 | unit * time}. } \item{legend}{ An object of type \code{list} containing the following items used for coloring \itemize{ \item{dx}{position increments in x direction} \item{dy}{position increments in y direction} \item{x}{position in x} \item{y}{position in y} \item{once}{\code{Boolean} - if \code{TRUE} then only shown once} } If \code{NULL} then a default legend is used. } \item{opts.col}{ A list containing the two elements \itemize{ \item{ncolors}{Number of colors to use for plotting} \item{use.color}{\code{Boolean} if \code{TRUE} then colors will be used in the palette, otherwise grayscale} } } \item{labels}{\code{Boolean} whether to add labels } \item{wait.ms}{Number of milliseconds to wait between each plot } \item{cex.lab}{\code{cex} of the labels } \item{verbose}{\code{Boolean} whether to write out extra information } \item{dev.printer}{Either \code{NULL}, which means that plotting is only to the screen otherwise a list with elements \code{device}, \code{extension}, \code{width} and \code{height}. This options is more or less obsolete - nowadays it's better to us the \code{animation} package to generate output to files. } \item{\dots}{Extra arguments sent to the plot function. } } \author{ Michael H\enc{ö}{oe}hle } \note{ The \code{\link{animate.sts}} method provides a re-implementation and supersedes this function! } \seealso{ Other \code{\link{stsplot}} types, and \code{\link{animate.sts}} for the new implementation. } \examples{ data("ha.sts") print(ha.sts) ## map of total counts by district plot(ha.sts, type=observed ~ 1 | unit) ## only show a sub-period total for two selected districts plot(ha.sts[1:20,1:2], type=observed ~ 1 | unit) \dontrun{ # space-time animation plot(aggregate(ha.sts,nfreq=13), type= observed ~ 1 | unit * time) #Configure a png device printer to save the frames dev.printer <- list(device=png, extension=".png", width=640, height=480, name=file.path(tempdir(),"berlin")) #Do the animation (without extra sleeping time between frames) plot(aggregate(ha.sts,nfreq=13), type = observed ~ 1 | unit * time, wait.ms=0, dev.printer=dev.printer) #Use ImageMagick (you might have to adjust the path to 'convert') system(paste("convert -delay 50 ",dev.printer$name, "*.png ", dev.printer$name, "-animated.gif",sep="")) } } \keyword{hplot} \keyword{dynamic} \keyword{spatial} surveillance/man/epidataCS_update.Rd0000644000175100001440000000444612320056246017235 0ustar hornikusers\name{epidataCS_update} \alias{update.epidataCS} \title{ Update method for \code{"epidataCS"} } \description{ The \code{\link{update}} method for the \code{"\link{epidataCS}"} class may be used to modify the hyperparameters \eqn{\epsilon} (\code{eps.t}) and \eqn{\delta} (\code{eps.s}), the indicator matrix \code{qmatrix} of possible ways of transmission between the event types, and the numerical accuracy \code{nCircle2Poly} of the polygonal representation of a circle. The update method will also update the auxiliary information contained in an \code{"epidataCS"} object accordingly, e.g., the vector of potential sources of each event, or the polygonal representation of the influence region. } \usage{ \method{update}{epidataCS}(object, eps.t, eps.s, qmatrix, nCircle2Poly, ...) } \arguments{ \item{object}{ an object of class \code{"epidataCS"}. } \item{eps.t}{ numeric vector of length the number of events in \code{object$events}. The event data column \code{eps.t} specifies the maximum temporal influence radius (e.g., length of infectious period, time to culling, etc.) of the events. } \item{eps.s}{ numeric vector of length the number of events in \code{object$events}. The event data column \code{eps.s} specifies the maximum spatial influence radius of the events. } \item{qmatrix}{ square indicator matrix (0/1 or TRUE/FALSE) for possible transmission between the event types. } \item{nCircle2Poly}{ accuracy (number of edges) of the polygonal approximation of a circle. } \item{\dots}{ unused (argument of the generic). } } \value{ The updated \code{"epidataCS"} object. } \author{ Sebastian Meyer } \seealso{ class \code{"\link{epidataCS}"}. } \examples{ data("imdepi") ## assume different interaction ranges and simplify polygons imdepi2 <- update(imdepi, eps.t = 20, eps.s = Inf, nCircle2Poly = 16) (s <- summary(imdepi)) (s2 <- summary(imdepi2)) ## The update reduced the number of infectives (along time) ## because the length of the infectious periods is reduced. It also ## changed the set of potential sources of transmission for each ## event, since the interaction is shorter in time but wider in space ## (eps.s=Inf means interaction over the whole observation region). } \keyword{manip} \keyword{utilities} \keyword{methods} surveillance/man/stsplot_space.Rd0000644000175100001440000001230112441604722016710 0ustar hornikusers\name{stsplot_space} \alias{stsplot_space} \title{ Map of Disease Incidence During a Given Period } \description{ This is the \code{plot} variant of \code{type=observed~unit} for \code{"\linkS4class{sts}"} objects, i.e., \code{plot(stsObj, type=observed~unit, ...)} calls the function documented below. It produces an \code{\link{spplot}} where regions are color-coded according to disease incidence (either absolute counts or relative to population) during a given time period. } \usage{ stsplot_space(x, tps = NULL, map = x@map, population = NULL, main = NULL, labels = FALSE, at = 10, col.regions = NULL, colorkey = list(space = "bottom", labels = list(at=at)), total.args = NULL, gpar.missing = list(col = "darkgrey", lty = 2, lwd = 2), sp.layout = NULL, xlim = bbox(map)[1, ], ylim = bbox(map)[2, ], ...) } \arguments{ \item{x}{ an object of class \code{"\linkS4class{sts}"} or a matrix of counts, i.e., \code{observed(stsObj)}, where especially \code{colnames(x)} have to be contained in \code{row.names(map)}. If a matrix, the \code{map} object has to be provided explicitly. The possibility of specifying a matrix is, e.g., useful to plot mean counts of simulations from \code{\link{simulate.hhh4}}. } \item{tps}{ a numeric vector of one or more time points. The unit-specific \emph{sum} over all time points \code{tps} is plotted. The default \code{tps=NULL} means cumulation over the whole time period \code{1:nrow(x)}. } \item{map}{ an object inheriting from \code{"\linkS4class{SpatialPolygons}"} representing the \code{ncol(x)} regions. By default the \code{map} slot of \code{x} is queried (which might be empty and is not applicable if \code{x} is a matrix of counts). } \item{population}{ an optional numeric vector of population numbers in the \code{ncol(x)} regions. If given, incidence values instead of absolute counts are plotted. } \item{main}{ a main title for the plot. If \code{NULL} and \code{x} is of class \code{"sts"}, the time range of \code{tps} is put as the main title. } \item{labels}{ determines if and how the regions of the \code{map} are labeled, see \code{\link{layout.labels}}. } \item{at}{ either a number of levels (default: 10) for the categorization (color-coding) of counts, or specific break points to use, or a named list of a number of levels (\code{"n"}), a transformer (\code{"trafo"}) of class \code{"\link[scales]{trans}"} defined by package \pkg{scales}, and optional further arguments for \code{\link{pretty}}. The default is the square root transformation (\code{\link[scales]{sqrt_trans}}). Note that the intervals given by \code{at} are closed on the left and open to the right, i.e., if specifying \code{at} manually as a vector of break points, make sure that \code{max(at)} is larger than the maximum observed count. } \item{col.regions}{ a vector of fill colors of length \code{length(at)-1}. By default (\code{NULL}), a \dQuote{heat} palette is generated using \code{colorspace::\link[colorspace]{heat_hcl}} (if available) or \code{\link{heat.colors}}. } \item{colorkey}{ a list describing the color key, see \code{\link[lattice]{levelplot}}. The default list elements will be updated by the provided list using \code{\link{modifyList}}. } \item{total.args}{ an optional list of arguments for \code{\link[grid]{grid.text}} to have the overall number/incidence of cases printed at an edge of the map. The default settings are \code{list(label="Overall: ", x=1, y=0)}, and \code{total.args=list()} will use all of them. } \item{gpar.missing}{list of graphical parameters for \code{\link{sp.polygons}} applied to the regions of \code{map}, which are not part of \code{x}. Such extra regions won't be plotted if \code{!is.list(gpar.missing)}.} \item{sp.layout}{ optional list of additional layout items, see \code{\link{spplot}}. } \item{xlim,ylim}{numeric vectors of length 2 specifying the axis limits.} \item{\dots}{ further arguments for \code{\link{spplot}}. } } \value{ a lattice plot of class \code{"\link[lattice:trellis.object]{trellis}"}, but see \code{\link{spplot}}. } \author{ Sebastian Meyer } \seealso{ the central \code{\link{stsplot}}-documentation for an overview of plot types, and \code{\link{animate.sts}} for animations of \code{"sts"} objects. } \examples{ data("measlesWeserEms") # default plot: total region-specific counts over all weeks plot(measlesWeserEms, type=observed~unit) # compare with old implementation plot(measlesWeserEms, type=observed~1|unit) # plot incidence with region labels plot(measlesWeserEms, type=observed~unit, population=measlesWeserEms@map$POPULATION / 100000, labels=list(labels="GEN", cex=0.7, font=3)) # counts in the first week of the second year only (+ display overall) plot(measlesWeserEms, type=observed~unit, tps=53, total.args=list()) # if we had only observed a subset of the regions plot(measlesWeserEms[,5:11], type = observed~unit, gpar.missing = list(col="gray", lty=4)) } \keyword{hplot} \keyword{spatial} surveillance/man/nbOrder.Rd0000644000175100001440000000360012407017751015424 0ustar hornikusers\name{nbOrder} \alias{nbOrder} \title{ Determine Neighbourhood Order Matrix from Binary Adjacency Matrix } \description{ Given a square binary adjacency matrix, the function \code{nbOrder} determines the integer matrix of neighbourhood orders (shortest-path distance) using the function \code{\link[spdep]{nblag}} from the \pkg{spdep} package. } \usage{ nbOrder(neighbourhood, maxlag = 1) } \arguments{ \item{neighbourhood}{ a square, numeric or logical, and usually symmetric matrix with finite entries (and usually zeros on the diagonal) which indicates vertex adjacencies, i.e., first-order neighbourhood (interpreted as \code{neighbourhood == 1}, \emph{not} \code{>0}). } \item{maxlag}{ positive scalar integer specifying an upper bound for the neighbourhood order. The default (1) just returns the input neighbourhood matrix (converted to binary integer mode). \code{maxlag} is automatically trimmed to one less than the number of regions (there cannot be higher orders) and then converted to integer, thus, \code{maxlag = Inf} also works. } } \value{ An integer matrix of neighbourhood orders, i.e., the shortest-path distance matrix of the vertices. The \code{dimnames} of the input \code{neighbourhood} matrix are preserved. } \note{ By the end, the function issues a \code{\link{message}} informing about the range of maximum neighbourhood order by region. } \author{ Sebastian Meyer } \seealso{ \code{\link[spdep]{nblag}} from the \pkg{spdep} package, on which this wrapper depends. } \examples{ ## generate adjacency matrix set.seed(1) n <- 6 adjmat <- matrix(0, n, n) adjmat[lower.tri(adjmat)] <- sample(0:1, n*(n-1)/2, replace=TRUE) adjmat <- adjmat + t(adjmat) adjmat ## determine neighbourhood order matrix if (requireNamespace("spdep")) { nbmat <- nbOrder(adjmat, maxlag=Inf) nbmat } } \keyword{spatial} \keyword{utilities} surveillance/man/sim.pointSource.Rd0000644000175100001440000000473712452455147017153 0ustar hornikusers\name{sim.pointSource} \alias{sim.pointSource} \encoding{latin1} \title{Generation of Simulated Point Source Epidemy} \description{Simulation of epidemies which were introduced by point sources. The basis of this programme is a combination of a Hidden Markov Modell (to get random timepoints for outbreaks) and a simple model (compare \code{\link{sim.seasonalNoise}}) to simulate the baseline. } \usage{ sim.pointSource(p = 0.99, r = 0.01, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K) } \arguments{ \item{p}{probability to get a new outbreak at time i if there was one at time i-1, default 0.99.} \item{r}{probability to get no new outbreak at time i if there was none at time i-1, default 0.01.} \item{length}{number of weeks to model, default 400. \code{length} is ignored if \code{state} is given. In this case the length of \code{state} is used.} \item{A}{amplitude (range of sinus), default = 1.} \item{alpha}{parameter to move along the y-axis (negative values not allowed) with alpha > = A, default = 1.} \item{beta}{regression coefficient, default = 0.} \item{phi}{factor to create seasonal moves (moves the curve along the x-axis), default = 0.} \item{frequency}{factor to determine the oscillation-frequency, default = 1.} \item{state}{use a state chain to define the status at this timepoint (outbreak or not). If not given a Markov chain is generated by the programme, default NULL.} \item{K}{additional weigth for an outbreak which influences the distribution parameter mu, default = 0.} } \value{ \item{disProg}{a object \code{disProg} (disease progress) including a list of the observed, the state chain and nearly all input parameters. } } \seealso{\code{\link{sim.seasonalNoise}} } \author{M. \enc{Höhle}{Hoehle}, A. Riebler, C. Lang} \examples{ # Plotting of simulated data disProgObj <- sim.pointSource(p = 0.99, r = 0.5, length = 208, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 2) # plot the simulated disease with the defined outbreaks plot(disProgObj) state <- rep(c(0,0,0,0,0,0,0,0,1,1), 20) disProgObj <- sim.pointSource(state = state, K = 1.2) plot(disProgObj) } \keyword{datagen} surveillance/man/hhh4_W.Rd0000644000175100001440000000757112502024442015154 0ustar hornikusers\name{hhh4_W} \alias{W_powerlaw} \alias{W_np} \title{ Power-Law and Nonparametric Neighbourhood Weights for \code{hhh4}-Models } \description{ Set up power-law or nonparametric weights for the neighbourhood component of \code{\link{hhh4}}-models as proposed by Meyer and Held (2014). Without normalization, power-law weights are \eqn{w_{ji} = o_{ji}^{-d}}{w_ji = o_ji^-d}, where \eqn{o_{ji}}{o_ji} is the order of neighbourhood between regions \eqn{i} and \eqn{j}, see \code{\link{nbOrder}}, and \eqn{d} is to be estimated. In the nonparametric formulation, \code{maxlag-1} order-specific log-weights are to be estimated (the first-order weight is always fixed to 1 for identifiability). } \usage{ W_powerlaw(maxlag, normalize = TRUE, log = FALSE, initial = if (log) 0 else 1) W_np(maxlag, to0 = TRUE, normalize = TRUE, initial = log(zetaweights(2:maxlag))) } \arguments{ \item{maxlag}{a single integer specifying a limiting order of neighbourhood. If spatial dependence is not to be truncated at some high order, \code{maxlag} should be set to the maximum neighbourhood order in the network of regions.} \item{to0}{\code{W_np} represents order-specific log-weights up to order \code{maxlag}. Higher orders are by default (\code{to0=TRUE}) assumed to have 0 weight as for \code{W_powerlaw}. Alternatively, \code{to0=FALSE} requests that the weight at order \code{maxlag} should be carried forward to higher orders.} \item{normalize}{logical indicating if the weights should be normalized such that the rows of the weight matrix sum to 1 (default). Note that normalization does not work with islands, i.e., regions without neighbours.} \item{log}{logical indicating if the decay parameter \eqn{d} should be estimated on the log-scale to ensure positivity.} \item{initial}{initial value of the parameter vector.} } \value{ a list which can be passed as a specification of parametric neighbourhood weights in the \code{control$ne$weights} argument of \code{\link{hhh4}}. } \references{ Meyer, S. and Held, L. (2014): Power-law models for infectious disease spread. \emph{The Annals of Applied Statistics}, \bold{8} (3), 1612-1639.\cr DOI-Link: \url{http://dx.doi.org/10.1214/14-AOAS743} } \author{ Sebastian Meyer } \seealso{ \code{\link{nbOrder}} to determine the matrix of neighbourhood orders from a binary adjacency matrix. \code{\link{siaf.powerlaw}}, and \code{\link{siaf.step}} for modelling distance decay as power law or step function in \code{\link{twinstim}} space-time point process models. } \examples{ data("measlesWeserEms") ## data contains neighbourhood orders as required for parametric weights neighbourhood(measlesWeserEms)[1:6,1:6] max(neighbourhood(measlesWeserEms)) # max order is 5 ## fit a power-law decay of spatial interaction ## in a hhh4 model with seasonality and random intercepts in the endemic part measlesModel <- list( ar = list(f = ~ 1), ne = list(f = ~ 1, weights = W_powerlaw(maxlag=5, normalize=TRUE, log=FALSE)), end = list(f = addSeason2formula(~-1 + ri(), S=1, period=52), offset = population(measlesWeserEms)), family = "NegBin1") ## fit the model set.seed(1) # random intercepts are initialized randomly measlesFit <- hhh4(measlesWeserEms, measlesModel) summary(measlesFit) # "neweights.d" is the decay parameter d ## plot the spatio-temporal weights o_ji^-d / sum_k o_jk^-d ## as a function of neighbourhood order plot(measlesFit, type="neweights") ## Due to normalization, same distance does not necessarily mean same weight. ## There is no evidence for a power law of spatial interaction in this ## small observation region with only 17 districts. ## A possible simpler model is first-order dependence, i.e., using ## 'weights = neighbourhood(measlesWeserEms) == 1' in the 'ne' component. } \keyword{spatial} \keyword{models} \keyword{utilities} surveillance/man/stsBP-class.Rd0000644000175100001440000000374712003536617016202 0ustar hornikusers\name{stsBP-class} \Rdversion{1.1} \docType{class} \alias{stsBP-class} % % % % other names % %\alias{aggregate,stsBP-method} % %\alias{plot,stsBP-method} % %\alias{plot,stsBP,missing-method} % \alias{nrow,stsBP-method} % \alias{ncol,stsBP-method} % \alias{dim,stsBP-method} % \alias{alarms,stsBP-method} % \alias{alarms<-,stsBP-method} % \alias{upperbound,stsBP-method} % \alias{upperbound<-,stsBP-method} % \alias{control,stsBP-method} % \alias{control<-,stsBP-method} % \alias{epoch,stsBP-method} % \alias{epoch<-,stsBP-method} % \alias{epochInYear,stsBP-method} % \alias{observed,stsBP-method} % \alias{observed<-,stsBP-method} % \alias{population,stsBP-method} % \alias{population<-,stsBP-method} % \alias{multinomialTS,stsBP-method} % \alias{multinomialTS<-,stsBP-method} % \alias{neighbourhood,stsBP-method} % \alias{neighbourhood<-,stsBP-method} % \alias{colnames,stsBP,missing,missing-method} % \alias{initialize,stsBP-method} % \alias{as.data.frame,stsBP-method} %Coerce method to convert to sts object \alias{coerce,sts,stsBP-method} \encoding{latin1} \title{Class "stsBP" -- a class inheriting from class \code{sts} which allows the user to store the results of back-projecting or nowcasting surveillance time series} \description{ A class inheriting from class \code{sts}, but with additional slots to store the result and associated confidence intervals from back projection of a \code{sts} object. } \section{Slots}{ The slots are as for \code{"\linkS4class{sts}"}. However, two additional slots exists. \describe{ \item{\code{ci}:}{An array containing the upper and lower limit of the confidence interval.} \item{\code{lambda}:}{Back projection component} } } \section{Methods}{ The methods are the same as for \code{"\linkS4class{sts}"}. \itemize{ \item{\code{signature(from = "sts", to = "stsBP")}}{ Convert an object of class \code{sts} to class \code{stsBP}. } } } %end section methods. \author{M. \enc{Höhle}{Hoehle}} \keyword{classes} surveillance/man/ha.Rd0000644000175100001440000000152411746056164014432 0ustar hornikusers\name{ha} \alias{ha} \alias{ha.sts} \title{Hepatitis A in Berlin} \description{Number of Hepatitis A cases among adult male (age>18) in Berlin 2001-2006. An increase is seen during 2006 } \usage{ data("ha") data("ha.sts") } \format{ \code{ha} is a \code{disProg} object containing \eqn{290\times 12}{290 x 12} observations starting from week 1 in 2001 to week 30 in 2006. \code{ha.sts} is generated from \code{ha} by the converter function \code{\link{disProg2sts}} using a shape file of Berlin, see the Example given in the help file for class \code{"\linkS4class{sts}"}. } \source{ Robert Koch-Institut: SurvStat: \url{http://www3.rki.de/SurvStat}; Queried on 25 August 2006. Robert Koch Institut, Epidemiologisches Bulletin 33/2006, p.290. } \examples{ data(ha) plot(aggregate(ha)) } \keyword{datasets} surveillance/man/hhh4_formula.Rd0000644000175100001440000001172412505012443016407 0ustar hornikusers\encoding{latin1} \name{hhh4_formula} \alias{fe} \alias{ri} \title{ Specify Formulae in a Random Effects HHH Model } \description{ The special functions \code{fe} and \code{ri} are used to specify (unit-specific) effects of covariates and a random intercept term, respectively, in formulae used in the function \code{\link{hhh4}}. } \usage{ fe(x, unitSpecific = FALSE, which = NULL, initial = NULL) ri(type = c("iid","car"), corr = c("none", "all"), initial.fe = 0, initial.var = -.5, initial.re = NULL) } \arguments{ \item{x}{an expression like \code{sin(2*pi*t/52)} involving the time variable \code{t}, or just \code{1} for an intercept. In general this covariate expression might use any variables contained in the \code{control$data} argument of the parent \code{\link{hhh4}} call.} \item{unitSpecific}{logical indicating if the effect of \code{x} should be unit-specific. This is a convenient shortcut for \code{which = rep(TRUE, nUnits)}, where \code{nUnits} is the number of units (i.e., columns of the \code{"sts"} object).} \item{which}{vector of logicals indicating which unit(s) should get an unit-specific parameter. For units with a \code{FALSE} value, the effect term for \code{x} will be zero in the log-linear predictor. Note especially that setting a \code{FALSE} value for the intercept term of a unit, e.g., \code{ar = list(f = ~-1 + fe(1, which=c(TRUE, FALSE)))} in a bivariate \code{hhh4} model, does \emph{not} mean that the (autoregressive) model component is omitted for this unit, but that \eqn{\log(\lambda_1) = \alpha_1} and \eqn{\log(\lambda_2) = 0}, which is usually not of interest. ATM, omiting an autoregressive effect for a specific unit is not possible.\cr If \code{which=NULL}, the parameter is assumed to be the same for all units.} \item{initial}{initial values (on internal scale!) for the fixed effects used for optimization. The default (\code{NULL}) means to use zeroes.} \item{type}{random intercepts either follow an IID or a CAR model.} \item{corr}{whether random effects in different components (such as \code{ar} and \code{end}) should be correlated or not.} \item{initial.fe}{initial value for the random intercept mean.} \item{initial.var}{initial values (on internal scale!) for the variance components used for optimization.} \item{initial.re}{initial values (on internal scale!) for the random effects used for optimization. The default \code{NULL} are random numbers from a normal distribution with zero mean and variance 0.001.} } \seealso{ \code{\link{addSeason2formula}}, usage of formulae in the vignette and in examples of \code{\link{hhh4}}. } \note{ This function should only be used in formula objects for \code{\link{hhh4}}, and is not intended for direct calling. If unit-specific or random intercepts are specified, an overall intercept must be excluded (by \code{-1}) in the component formula. } \keyword{regression} \examples{ # some calls of the fitting function 'hhh4': # see vignette("hhh4") for further details data("influMen") fluMen <- disProg2sts(influMen) meningo <- fluMen[, "meningococcus"] ## Ex: univariate time series of meningococcal infections in Germany # Negative binomial model with # endemic component: Intercept + S = 1 sine/cosine pair # autoregressive component: Intercept f.S1 <- addSeason2formula(f = ~ 1, S = 1, period = 52) hhh4(meningo, list( ar = list(f = ~ 1), end = list(f = f.S1), family = "NegBin1" )) ## Ex: disease-specific intercept in influenza/meningococcal time series # Negative binomial model with # autoregressive component: disease-specific intercepts # neighbour-driven component: only transmission from flu to men # endemic component: S=3 and S=1 sine/cosine pairs for flu and men, respectively Wflumen <- neighbourhood(fluMen) Wflumen["meningococcus","influenza"] <- 0 Wflumen f.end <- addSeason2formula(f = ~ -1 + fe(1, which = c(TRUE,TRUE)), S = c(3, 1), period = 52) f.end m <- list(ar = list(f = ~ -1 + fe(1, unitSpecific = TRUE)), ne = list(f = ~ 1, weights = Wflumen), end = list(f = f.end), family = "NegBinM") hhh4(fluMen, control = m) \dontrun{ ## Ex: (correlated) random intercepts for influenza in Southern Germany # Negative binomial model with # autoregressive component: Intercept # neighbour-driven component: random intercepts # endemic component: random intercepts + trend + S = 3 sine/cosine pairs data("fluBYBW") f.end <- addSeason2formula(f = ~ -1 + ri(type = "iid", corr="all") + I((t-208)/100), S = 3, period = 52) wji <- neighbourhood(fluBYBW)/rowSums(neighbourhood(fluBYBW)) model.B2 <- list(ar = list(f = ~ 1), ne = list(f = ~ -1 + ri(type = "iid", corr="all"), weights = wji), end = list(f = f.end, offset = population(fluBYBW)), family = "NegBin1", verbose = TRUE) hhh4(fluBYBW, model.B2) } } surveillance/man/algo.summary.Rd0000644000175100001440000000363711731650466016466 0ustar hornikusers\name{algo.summary} \alias{algo.summary} \title{Summary Table Generation for Several Disease Chains} \description{Summary table generation for several disease chains. } \usage{ algo.summary(compMatrices) } \arguments{ \item{compMatrices}{list of matrices constructed by algo.compare.} } \value{ \item{matrix}{summing up the singular input matrices } } \details{As lag the mean of all single lags is returned. TP values, FN values, TN values and FP values are summed up. \code{dist}, \code{sens} and \code{spec} are new computed on the basis of the new TP value, FN value, TN value and FP value. } \seealso{\code{\link{algo.compare}}, \code{\link{algo.quality}} } \examples{ # Create a test object disProgObj1 <- sim.pointSource(p = 0.99, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) disProgObj2 <- sim.pointSource(p = 0.99, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 5) disProgObj3 <- sim.pointSource(p = 0.99, r = 0.5, length = 400, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 17) # Let this object be tested from any methods in range = 200:400 range <- 200:400 control <- list( list(funcName = "rki1", range = range), list(funcName = "rki2", range = range), list(funcName = "rki3", range = range) ) compMatrix1 <- algo.compare(algo.call(disProgObj1, control=control)) compMatrix2 <- algo.compare(algo.call(disProgObj2, control=control)) compMatrix3 <- algo.compare(algo.call(disProgObj3, control=control)) algo.summary( list(a=compMatrix1, b=compMatrix2, c=compMatrix3) ) } \keyword{print} surveillance/man/algo.rki.Rd0000644000175100001440000001020712277146532015545 0ustar hornikusers\name{algo.rki} \alias{algo.rkiLatestTimepoint} \alias{algo.rki} \alias{algo.rki1} \alias{algo.rki2} \alias{algo.rki3} \encoding{latin1} \title{The system used at the RKI} \description{ Evaluation of timepoints with the detection algorithms used by the RKI } \usage{ algo.rkiLatestTimepoint(disProgObj, timePoint = NULL, control = list(b = 2, w = 4, actY = FALSE)) algo.rki(disProgObj, control = list(range = range, b = 2, w = 4, actY = FALSE)) algo.rki1(disProgObj, control = list(range = range)) algo.rki2(disProgObj, control = list(range = range)) algo.rki3(disProgObj, control = list(range = range)) } \arguments{ \item{disProgObj}{object of class disProg (including the observed and the state chain).} \item{timePoint}{time point which shoud be evaluated in \code{algo.rkiLatestTimepoint}. The default is to use the latest timepoint.} \item{control}{control object: \code{range} determines the desired timepoints which should be evaluated, \code{b} describes the number of years to go back for the reference values, \code{w} is the half window width for the reference values around the appropriate timepoint and \code{actY} is a boolean to decide if the year of \code{timePoint} also spend \code{w} reference values of the past. As default \code{b}, \code{w}, \code{actY} are set for the RKI 3 system. } } \value{ \item{survRes}{ \code{algo.rkiLatestTimepoint} returns a list of class \code{survRes} (surveillance result), which includes the alarm value (alarm = 1, no alarm = 0) for recognizing an outbreak, the threshold value for recognizing the alarm and the input object of class disProg. \code{algo.rki} gives a list of class \code{survRes} which includes the vector of alarm values for every timepoint in \code{range}, the vector of threshold values for every timepoint in \code{range} for the system specified by \code{b}, \code{w} and \code{actY}, the range and the input object of class disProg. \code{algo.rki1} returns the same for the RKI 1 system, \code{algo.rki2} for the RKI 2 system and \code{algo.rki3} for the RKI 3 system. } } \details{ Using the reference values for calculating an upper limit (threshold), alarm is given if the actual value is bigger than a computed threshold. \code{algo.rki} calls \code{algo.rkiLatestTimepoint} for the values specified in \code{range} and for the system specified in \code{control}. \code{algo.rki1} calls \code{algo.rkiLatestTimepoint} for the values specified in \code{range} for the RKI 1 system. \code{algo.rki2} calls \code{algo.rkiLatestTimepoint} for the values specified in \code{range} for the RKI 2 system. \code{algo.rki3} calls \code{algo.rkiLatestTimepoint} for the values specified in \code{range} for the RKI 3 system. \itemize{ \item \code{"RKI 1"} reference values from 6 weeks ago \item \code{"RKI 2"} reference values from 6 weeks ago and 13 weeks of the year ago (symmetrical around the comparable week). \item \code{"RKI 3"} 18 reference values. 9 from the year ago and 9 from two years ago (also symmetrical around the comparable week). } } \seealso{ \code{\link{algo.bayesLatestTimepoint}} and \code{\link{algo.bayes}} for the Bayes system. } \author{M. \enc{Höhle}{Hoehle}, A. Riebler, Christian Lang} \examples{ # Create a test object disProgObj <- sim.pointSource(p = 0.99, r = 0.5, length = 208, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) # Test week 200 to 208 for outbreaks with a selfdefined rki algo.rki(disProgObj, control = list(range = 200:208, b = 1, w = 5, actY = TRUE)) # The same for rki 1 to rki 3 algo.rki1(disProgObj, control = list(range = 200:208)) algo.rki2(disProgObj, control = list(range = 200:208)) algo.rki3(disProgObj, control = list(range = 200:208)) # Test for rki 1 the latest timepoint algo.rkiLatestTimepoint(disProgObj) } \keyword{classif} surveillance/man/sts_creation.Rd0000644000175100001440000000530712477564560016550 0ustar hornikusers% Generated by roxygen2 (4.0.2): do not edit by hand \name{sts_creation} \alias{sts_creation} \title{Function for simulating a time series} \usage{ sts_creation(theta, beta, gamma1, gamma2, m, overdispersion, dates, sizesOutbreak, datesOutbreak, delayMax, alpha, densityDelay) } \arguments{ \item{theta}{baseline frequency of reports} \item{beta}{time trend} \item{gamma1}{seasonality} \item{gamma2}{seasonality} \item{m}{seasonality} \item{overdispersion}{overdispersion (size in rnbinom for the parameterization with mean and size)} \item{dates}{dates of the time series} \item{sizesOutbreak}{sizes of all the outbreaks (vector)} \item{datesOutbreak}{dates of all the outbreaks (vector) # alpha} \item{delayMax}{maximal delay in time units} \item{alpha}{alpha for getting the (1-alpha) quantile of the negative binomial distribution at each timepoint} \item{densityDelay}{density distribution for the delay} } \description{ Function for simulating a time series and creating a sts-object As the counts are generated using a negative binomial distribution one also gets the (1-alpha) quantile for each timepoint (can be interpreted as an in-control upperbound for in-control values). The baseline and outbreaks are created as in Noufaily 2012. } \examples{ set.seed(12345) # Time series parameters scenario4 <- c(1.6,0,0.4,0.5,2) theta <- 1.6 beta <- 0 gamma1 <-0.4 gamma2 <- 0.5 overdispersion <- 1 m <- 1 # Dates firstDate <- "2006-01-01" lengthT=350 dates <- as.Date(firstDate,origin='1970-01-01') + 7 * 0:(lengthT - 1) # Maximal delay in weeks D=10 # Dates and sizes of the outbreaks datesOutbreak <- c(as.Date("2008-03-30"),as.Date("2011-09-25",origin="1970-01-01")) sizesOutbreak <- c(2,5) # Delay distribution data("salmAllOnset") in2011 <- which(formatDate(epoch(salmAllOnset), "\%G") == 2011) rT2011 <- salmAllOnset@control$reportingTriangle$n[in2011,] densityDelay <- apply(rT2011,2,sum, na.rm=TRUE)/sum(rT2011, na.rm=TRUE) # alpha for the upperbound alpha <- 0.05 # Create the sts with the full time series stsSim <- sts_creation(theta=theta,beta=beta, gamma1=gamma1,gamma2=gamma2, m=m,overdispersion=overdispersion ,dates=dates,sizesOutbreak=sizesOutbreak, datesOutbreak=datesOutbreak, delayMax=D, densityDelay=densityDelay, alpha=alpha) plot(stsSim) } \references{ An improved algorithm for outbreak detection in multiple surveillance systems, Noufaily, A., Enki, D.G., Farrington, C.P., Garthwaite, P., Andrews, N.J., Charlett, A. (2012), Statistics in Medicine, published online. } surveillance/man/deleval.Rd0000644000175100001440000000273112314276313015447 0ustar hornikusers\name{deleval} \alias{deleval} \encoding{latin1} \title{Surgical failures data} \description{ The dataset from Steiner et al. (1999) on A synthetic dataset from the Danish meat inspection -- useful for illustrating the beta-binomial CUSUM. } \usage{data(abattoir) } \details{ Steiner et al. (1999) use data from de Leval et al. (1994) to illustrate monitoring of failure rates of a surgical procedure for a bivariate outcome. Over a period of six years an arterial switch operation was performed on 104 newborn babies. Since the death rate from this surgery was relatively low the idea of surgical "near miss" was introduced. It is defined as the need to reinstitute cardiopulmonary bypass after a trial period of weaning. The object of class \code{sts} contains the recordings of near misses and deaths from the surgery for the 104 newborn babies of the study. The data could also be handled by a multinomial CUSUM model. } \seealso{\code{\link{pairedbinCUSUM}}} \examples{ data("deleval") plot(deleval, xaxis.labelFormat=NULL,ylab="Response",xlab="Patient number") } \references{ Steiner, S. H., Cook, R. J., and Farewell, V. T. (1999), Monitoring paired binary surgical outcomes using cumulative sum charts, Statistics in Medicine, 18, pp. 69--86. De Leval, Marc R., Franiois, K., Bull, C., Brawn, W. B. and Spiegelhalter, D. (1994), Analysis of a cluster of surgical failures, Journal of Thoracic and Cardiovascular Surgery, March, pp. 914--924. } \keyword{datasets} surveillance/man/MMRcoverageDE.Rd0000644000175100001440000000375511731650466016431 0ustar hornikusers\name{MMRcoverageDE} \alias{MMRcoverageDE} \encoding{latin1} \title{MMR coverage levels in the 16 states of Germany} \description{Coverage levels at school entry for the first and second dose of the combined measles-mumps-rubella (MMR) vaccine in 2006, estimated from children presenting vaccination documents at school entry examinations. } \usage{data(MMRcoverageDE) } \format{ A \code{data.frame} containing 19 rows and 5 columns with variables \describe{ \item{state}{Names of states: first each of the 16 states (Bundeslaender, BL) is listed, followed by the Total of Germany, as well as the total of West (alte BL) and East Germany (neue BL).} \item{nOfexaminedChildren}{Number of children examined.} \item{withVaccDocument}{Percentage of children who presented vaccination documents.} \item{MMR1}{Percentage of children with vaccination documents, who received at least 1 dose of MMR vaccine.} \item{MMR2}{Percentage of children with vaccination documents, who received at least 2 doses of MMR vaccine.} } Coverage levels were derived from vaccination documents presented at medical examinations, which are conducted by local health authorities at school entry each year. Records include information about the receipt of 1st and 2nd doses of MMR, but no information about dates. Note that information from children who did not present a vaccination document on the day of the medical examination, is not included in the estimated coverage. } \source{ Robert Koch-Institut (2008) Zu den Impfquoten bei den Schuleingangsuntersuchungen in Deutschland 2006. Epidemiologisches Bulletin, \bold{7}, 55-57 } \seealso{\code{\link{measlesDE}}} \examples{ data(MMRcoverageDE) } \references{ Herzog, S.A., Paul, M. and Held, L. (2011) Heterogeneity in vaccination coverage explains the size and occurrence of measles epidemics in German surveillance data. Epidemiology and Infection, \bold{139}, 505--515. } \keyword{datasets} surveillance/man/plot.disProg.Rd0000644000175100001440000000772011731650466016431 0ustar hornikusers\name{plot.disProg} \alias{plot.disProg} \alias{plot.disProg.one} \encoding{latin1} \title{Plot Generation of the Observed and the defined Outbreak States of a (multivariate) time series} \description{Plotting of a disProg object. } \usage{ \method{plot}{disProg}(x, title = "", xaxis.years=TRUE, startyear = x$start[1], firstweek = x$start[2], as.one=TRUE, same.scale=TRUE, \dots) \method{plot}{disProg.one}(x, title = "", xaxis.years=TRUE, quarters=TRUE, startyear = x$start[1], firstweek = x$start[2], ylim=NULL, xlab="time", ylab="No. infected",type="hh",lty=c(1,1),col=c(1,1), outbreak.symbol = list(pch=3, col=3), legend.opts=list(x="top", legend=c("Infected", "Outbreak"), lty=NULL,pch=NULL,col=NULL), \dots) } \arguments{ \item{x}{object of class \code{disProg}} \item{title}{plot title} \item{xaxis.years}{if \code{TRUE}, the x axis is labeled using years} \item{quarters}{add quarters to the plot} \item{startyear}{year to begin the axis labeling (the year where the oldest data come from). This arguments will be obsolete in \code{sts}.} \item{firstweek}{number of the first week of January in the first year (just for axis labeling grounds)} \item{as.one}{if \code{TRUE} all individual time series are shown in one plot} \item{same.scale}{if \code{TRUE} all plots have same scale} \item{ylim}{range of y axis} \item{xlab}{label of the x-axis} \item{ylab}{label of the y-axis} \item{type}{line type of the observed counts (should be \code{hh})} \item{lty}{line type of the observed counts} \item{col}{color of the observed count lines} \item{outbreak.symbol}{list with entries \code{pch} and \code{col} specifying the plot symbol} \item{legend.opts}{a list containing the entries to be sent to the \code{\link{legend}} function. If no legend is requested use \code{legend.opts=NULL}. Otherwise, the following arguments are default \describe{ \item{\code{x}}{\code{top}} \item{\code{legend}}{The names infected and outbreak} \item{\code{lty}}{If \code{NULL} the \code{lty} argument will be used} \item{\code{pch}}{If \code{NULL} the \code{pch} argument is used} \item{\code{col}}{If \code{NULL} the \code{col} argument is used} } An further arguments to the \code{legend} function are just provided as additional elements of this list, e.g. \code{horiz=TRUE}. } \item{\dots}{further arguments for the function \code{matplot}} } \value{ \item{a plot}{showing the number of infected and the defined alarm status for a time series created by simulation or given in data either in one single plot or in several plots for each individual time series. } } \author{M. \enc{Höhle}{Hoehle} with contributions by A. Riebler and C. Lang} \examples{ # Plotting of simulated data disProgObj <- sim.pointSource(p = 0.99, r = 0.5, length = 208, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 5) # plot the simulated disease with the defined outbreaks plot(disProgObj) title <- "Number of Infected and Defined Outbreak Positions for Simulated Data" plot(disProgObj, title = title) plot(disProgObj, title = title, xaxis.years=TRUE, startyear = 1999, firstweek = 13) plot(disProgObj, title = title, xaxis.years=TRUE, startyear = 1999, firstweek = 14) # Plotting of measles data data(measles.weser) # one plot plot(measles.weser, title = "measles cases in the district Weser-Ems", xaxis.years=TRUE, startyear= 2001, firstweek=1) # plot cases for each "Kreis" plot(measles.weser, same.scale=TRUE, as.one=FALSE) } \keyword{hplot} surveillance/man/bodaDelay.Rd0000644000175100001440000001155012601335002015704 0ustar hornikusers\name{bodaDelay} \alias{bodaDelay} \title{Bayesian aberration detection in presence of reporting delays.} \usage{ bodaDelay(sts, control = list(range = NULL, b = 3, w = 3, mc.munu=100, mc.y=10, pastAberrations = FALSE, verbose = FALSE, alpha = 0.01, trend = TRUE, limit54=c(5,4), inferenceMethod=c("asym","INLA"), noPeriods = 1, pastWeeksNotIncluded = 26, delay = TRUE)) } \arguments{ \item{sts}{sts-object to be analysed. Needs to have a reporting triangle.} \item{control}{list with control arguments} \item{b}{How many years back in time to include when forming the base counts.} \item{w}{Window's half-size, i.e. number of weeks to include before and after the current week in each year.} \item{range}{Specifies the index of all timepoints which should be tested. If range is \code{NULL} all possible timepoints are used.} \item{pastAberrations}{Boolean indicating whether to include an effect for past outbreaks in a second fit of the model. This option only makes sense if \code{inferenceMethod} is \code{INLA}, as it is not supported by the other inference method.} \item{verbose}{Boolean specifying whether to show extra debugging information.} \item{alpha}{An approximate (one-sided) \eqn{(1-\alpha)\cdot 100\%} prediction interval is calculated unlike the original method where it was a two-sided interval. The upper limit of this interval i.e. the \eqn{(1-\alpha)\cdot 100\%} quantile serves as an upperbound.} \item{trend}{Boolean indicating whether a trend should be included} \item{noPeriods}{Number of levels in the factor allowing to use more baseline. If equal to 1 no factor variable is created, the set of reference values is defined as in Farrington et al (1996).} \item{inferenceMethod}{Which inference method used, as defined in Salmon et al (2015). If one chooses \code{INLA} then inference is performed with INLA. If one chooses \code{asym} then the asymptotic normal approximation of the posteriori is used.} \item{pastWeeksNotIncluded}{Number of past weeks to ignore in the calculation.} \item{delay}{Boolean indicating whether to take reporting delays into account.} \item{mc.munu}{Number of samples for the parameters of the negative binomial distribution when performing Monte Carlo to calculate a threshold} \item{mc.y}{Number of samples for observations when performing Monte Carlo to calculate a threshold} \item{limit54}{c(cases,period) is a vector allowing the user to change these numbers.} } \description{ The function takes \code{range} values of the surveillance time series \code{sts} and for each time point uses a Bayesian model of the negative binomial family with log link inspired by the work of Noufaily et al. (2012) and of Manitz and \enc{Höhle}{Hoehle} (2014). It allows delay-corrected aberration detection as explained in Salmon et al. (2015). A \code{reportingTriangle} has to be provided in the \code{control} slot. } \examples{ data(salmAllOnset) rangeTest <- 410:412 alpha <- 0.05 # Control slot for the proposed algorithm with D=0 correction controlNormal <- list(range = rangeTest, b = 4, w = 3, pastAberrations = TRUE, mc.munu=10, mc.y=10, verbose = FALSE, alpha = alpha, trend = TRUE, limit54=c(0,50), noPeriods = 10, pastWeeksNotIncluded = 26, delay=FALSE,inferenceMethod="asym") # Control slot for the proposed algorithm with D=10 correction controlDelay <- list(range = rangeTest, b = 4, w = 3, pastAberrations = TRUE, mc.munu=10, mc.y=10, verbose = FALSE, alpha = alpha, trend = TRUE, limit54=c(0,50), noPeriods = 10, pastWeeksNotIncluded = 26, delay=TRUE,inferenceMethod="asym") salm.Normal <- bodaDelay(salmAllOnset, controlNormal) salm.delay <- bodaDelay(salmAllOnset, controlDelay) plot(salm.Normal) plot(salm.delay) } \references{ A statistical algorithm for the early detection of outbreaks of infectious disease, Farrington, C.P., Andrews, N.J, Beale A.D. and Catchpole, M.A. (1996), J. R. Statist. Soc. A, 159, 547-563. An improved algorithm for outbreak detection in multiple surveillance systems, Noufaily, A., Enki, D.G., Farrington, C.P., Garthwaite, P., Andrews, N.J., Charlett, A. (2012), Statistics in Medicine, published online. Bayesian outbreak detection in the presence of reporting delays, Salmon, M., Schumacher, D., Stark, K., \enc{Höhle}{Hoehle}, M. (2015), in revision. } surveillance/man/algo.cusum.Rd0000644000175100001440000001155112307672335016116 0ustar hornikusers\name{algo.cusum} \alias{algo.cusum} \title{CUSUM method} \encoding{latin1} \description{ Approximate one-side CUSUM method for a Poisson variate based on the cumulative sum of the deviation between a reference value k and the transformed observed values. An alarm is raised if the cumulative sum equals or exceeds a prespecified decision boundary h. The function can handle time varying expectations. } \usage{ algo.cusum(disProgObj, control = list(range = range, k = 1.04, h = 2.26, m = NULL, trans = "standard", alpha = NULL)) } \arguments{ \item{disProgObj}{object of class disProg (including the observed and the state chain)} \item{control}{control object: \describe{ \item{\code{range}}{determines the desired time points which should be evaluated} \item{\code{k}}{is the reference value} \item{\code{h}}{the decision boundary} \item{\code{m}}{how to determine the expected number of cases -- the following arguments are possible \describe{ \item{\code{numeric}}{a vector of values having the same length as \code{range}. If a single numeric value is specified then this value is replicated \code{length(range)} times.} \item{\code{NULL}}{A single value is estimated by taking the mean of all observations previous to the first \code{range} value.} \item{\code{"glm"}}{ A GLM of the form \deqn{\log(m_t) = \alpha + \beta t + \sum_{s=1}^S (\gamma_s \sin(\omega_s t) + \delta_s \cos(\omega_s t)),} where \eqn{\omega_s = \frac{2\pi}{52}s}{\omega_s = 2\pi/52 s} are the Fourier frequencies is fitted. Then this model is used to predict the \code{range} values.} }} \item{\code{trans}}{one of the following transformations (warning: anscombe and negbin transformations are experimental) \describe{ \item{\code{rossi}}{standardized variables z3 as proposed by Rossi} \item{\code{standard}}{standardized variables z1 (based on asympotic normality)} \item{\code{anscombe}}{anscombe residuals -- experimental} \item{\code{anscombe2nd}}{ anscombe residuals as in Pierce and Schafer (1986) based on 2nd order approximation of E(X) -- experimental} \item{\code{pearsonNegBin}}{compute Pearson residuals for NegBin -- experimental} \item{\code{anscombeNegBin}}{anscombe residuals for NegBin -- experimental} \item{\code{none}}{ no transformation} } } \item{\code{alpha}}{parameter of the negative binomial distribution, s.t. the variance is \eqn{m+\alpha *m^2} } } } } \value{ \item{survRes}{ \code{algo.cusum} gives a list of class \code{survRes} which includes the vector of alarm values for every timepoint in \code{range} and the vector of cumulative sums for every timepoint in \code{range} for the system specified by \code{k} and \code{h}, the range and the input object of class disProg. The \code{upperbound} entry shows for each time instance the number of diseased individuals it would have taken the cusum to signal. Once the CUSUM signals no resetting is applied, i.e. signals occurs until the CUSUM statistic again returns below the threshold. The \code{control$m.glm} entry contains the fitted glm object, if the original argument was "\code{glm}". } } \details{This implementation is experimental, but will not be developed further.} %\seealso{} \author{M. Paul and M. \enc{Höhle}{Hoehle}} \examples{ # Xi ~ Po(5), i=1,...,500 disProgObj <- create.disProg(week=1:500, observed= rpois(500,lambda=5), state=rep(0,500)) # there should be no alarms as mean doesn't change res <- algo.cusum(disProgObj, control = list(range = 100:500,trans="anscombe")) plot(res) # simulated data disProgObj <- sim.pointSource(p = 1, r = 1, length = 250, A = 0, alpha = log(5), beta = 0, phi = 10, frequency = 10, state = NULL, K = 0) plot(disProgObj) # Test week 200 to 250 for outbreaks surv <- algo.cusum(disProgObj, control = list(range = 200:250)) plot(surv) } \references{ G. Rossi, L. Lampugnani and M. Marchi (1999), An approximate CUSUM procedure for surveillance of health events, Statistics in Medicine, 18, 2111--2122 D. A. Pierce and D. W. Schafer (1986), Residuals in Generalized Linear Models, Journal of the American Statistical Association, 81, 977--986 } \keyword{classif} %\source{} surveillance/man/enlargeData.Rd0000644000175100001440000000243711731650466016254 0ustar hornikusers\name{enlargeData} \alias{enlargeData} \title{Data Enlargement} \description{Enlargement of data which is too short for a surveillance method to evaluate. } \usage{ enlargeData(disProgObj, range = 1:156, times = 1) } \arguments{ \item{disProgObj}{object of class disProg (including the observed and the state chain).} \item{range}{range of already existing data (\code{state}, \code{observed}) which should be used for enlargement.} \item{times}{number of times to enlarge.} } \value{ \item{disProg}{a object \code{disProg} (disease progress) including a list of the observed and the state chain (extended with cyclic data generation)} } \details{ \code{observed} and \code{state} are enlarged in the way that the part \code{range} of \code{observed} and \code{state} is repeated \code{times} times in front of \code{observed} and \code{state}. Sometimes it's useful to care for the cyclic property of the timeseries, so as default we enlarge observed and state once with the first three existing years, assuming a year has 52 weeks. } \seealso{\code{\link{readData}} } \examples{ obj <- readData("k1") enlargeData(obj) # enlarge once with part 1:156 enlargeData(obj, 33:36, 10) # enlarge 10 times with part 33:36 } \keyword{utilities} surveillance/man/sim.seasonalNoise.Rd0000644000175100001440000000366111731650466017437 0ustar hornikusers\name{sim.seasonalNoise} \alias{sim.seasonalNoise} \encoding{latin1} \title{Generation of Background Noise for Simulated Timeseries} \description{Generation of a cyclic model of a Poisson distribution as background data for a simulated timevector. The mean of the Poisson distribution is modelled as: \deqn{\mu = \exp(A \sin( frequency \cdot \omega \cdot (t + \phi)) + \alpha + \beta * t + K * state)}{% mu = exp(A * sin( frequency * omega * (t + phi)) + alpha + beta * t + K * state)} } \usage{ sim.seasonalNoise(A = 1, alpha = 1, beta = 0, phi = 0, length, frequency = 1, state = NULL, K = 0) } \arguments{ \item{A}{amplitude (range of sinus), default = 1.} \item{alpha}{parameter to move along the y-axis (negative values not allowed) with alpha > = A, default = 1.} \item{beta}{regression coefficient, default = 0.} \item{phi}{factor to create seasonal moves (moves the curve along the x-axis), default = 0.} \item{length}{number of weeks to model.} \item{frequency}{factor to determine the oscillation-frequency, default = 1.} \item{state}{if a state chain is entered the outbreaks will be additional weighted by K.} \item{K}{additional weigth for an outbreak which influences the distribution parameter mu, default = 0.} } \value{ \item{seasonNoise}{Object of class \code{seasonNoise} which includes the modelled timevector, the parameter \code{mu} and all input parameters. } } \seealso{\code{\link{sim.pointSource}} } \author{M. \enc{Höhle}{Hoehle}, A. Riebler, C. Lang} \examples{ season <- sim.seasonalNoise(length = 300) plot(season$seasonalBackground,type = "l") # use a negative timetrend beta season <- sim.seasonalNoise(beta = -0.003, length = 300) plot(season$seasonalBackground,type = "l") } \keyword{datagen} surveillance/man/twinstim_iafplot.Rd0000644000175100001440000002133312520377233017430 0ustar hornikusers\encoding{latin1} \name{twinstim_iafplot} \alias{iafplot} \title{ Plot the spatial or temporal interaction function of a twimstim } \description{ The function plots the fitted temporal or (isotropic) spatial interaction function of a \code{twinstim} object. } \usage{ iafplot(object, which = c("siaf", "tiaf"), types = NULL, scaled = c("intercept", "standardized", "no"), truncated = FALSE, log = "", conf.type = if (length(pars) > 1) "MC" else "parbounds", conf.level = 0.95, conf.B = 999, xgrid = 101, col.estimate = rainbow(length(types)), col.conf = col.estimate, alpha.B = 0.15, lwd = c(3,1), lty = c(1,2), verticals = FALSE, do.points = FALSE, add = FALSE, xlim = NULL, ylim = NULL, xlab = NULL, ylab = NULL, legend = !add && (length(types) > 1), ...) } \arguments{ \item{object}{ object of class \code{"twinstim"} containing the fitted model. } \item{which}{ argument indicating which of the two interaction functions to plot. Possible values are \code{"siaf"} (default) for the spatial interaction \eqn{f(x)} as a funtion of the distance \eqn{x}, and \code{"tiaf"} for the temporal interaction function \eqn{g(t)}. } \item{types}{ integer vector indicating for which event \code{types} the interaction function should be plotted in case of a marked twinstim. The default \code{types=NULL} checks if the interaction function is type-specific: if so, \code{types=1:nrow(object$qmatrix)} is used, otherwise \code{types=1}. } \item{scaled}{ character string determining if/how the the interaction function should be scaled. Possible choices are: \describe{ \item{"intercept":}{multiplication by the epidemic intercept.} \item{"standardized":}{division by the value at 0 distance such that the function starts at 1.} \item{"no":}{no scaling.} } The first one is the default and required for the comparison of estimated interaction functions from different models. For backward compatibility, \code{scaled} can also be a boolean, where \code{TRUE} refers to \code{"intercept"} scaling and \code{FALSE} to \code{"no"} scaling. } \item{truncated}{ logical indicating if the plotted interaction function should take the maximum range of interaction (\code{eps.t}/\code{eps.s}) into account, i.e., drop to zero at that point (if it is finite after all). If there is no common range of interaction, a \code{\link{rug}} indicating the various ranges will be added to the plot if \code{truncated=TRUE}. If \code{truncated} is a scalar, this value is used as the point \code{eps} where the function drops to 0. } \item{log}{a character string passed to \code{\link{plot.default}} indicating which axes should be logarithmic. If \code{add=TRUE}, \code{log} is set according to \code{par("xlog")} and \code{par("ylog")}.} \item{conf.type}{ type of confidence interval to produce.\cr If \code{conf.type="MC"} (or \code{"bootstrap"}), \code{conf.B} parameter vectors are sampled from the asymptotic (multivariate) normal distribution of the ML estimate of the interaction function parameters; the interaction function is then evaluated on the \code{xgrid} (i.e. temporal or spatial distances from the host) for each parameter realization to obtain a \code{conf.level} confidence interval at each point of the \code{xgrid} (or to plot the interaction functions of all Monte-Carlo samples if \code{conf.level=NA}). Note that the resulting plot is \code{\link{.Random.seed}}-dependent for the Monte-Carlo type of confidence interval.\cr If \code{conf.type="parbounds"}, the \code{conf.level} Wald confidence intervals for the interaction function parameters are calculated and the interaction function is evaluated on the \code{xgrid} (distances from the host) for all combinations of the bounds of the parameters and the point-wise extremes of those functions are plotted. This type of confidence interval is only valid in case of a single parameter, i.e. \code{scaled + nsiafpars == 1}, but could also be used as a rough indication if the Monte-Carlo approach takes too long. A warning is thrown if the \code{"parbounds"} type is used for multiple parameters.\cr If \code{conf.type="none"} or \code{NA} or \code{NULL}, no confidence interval will be calculated. } \item{conf.level}{ the confidence level required. For \code{conf.type = "MC"} it may also be specified as \code{NA}, in which case all \code{conf.B} sampled functions will be plotted with transparency value given by \code{alpha.B}. } \item{conf.B}{ number of samples for the \code{"MC"} (Monte Carlo) confidence interval. } \item{xgrid}{ either a numeric vector of x-values (distances from the host) where to evaluate \code{which}, or a scalar representing the desired number of evaluation points in the interval \code{c(0,xlim[2])}.\cr If the interaction function is a step function (\code{\link{siaf.step}} or \code{\link{tiaf.step}}), \code{xgrid} is ignored and internally set to \code{c(0, knots)}. } \item{col.estimate}{ vector of colours to use for the function point estimates of the different \code{types}. } \item{col.conf}{ vector of colours to use for the confidence intervals of the different \code{types}. } \item{alpha.B}{ alpha transparency value (as relative opacity) used for the \code{conf.B} sampled interaction functions in case \code{conf.level = NA} } \item{lwd, lty}{ numeric vectors of length two specifying the line width and type of point estimates (first element) and confidence limits (second element), respectively. } \item{verticals,do.points}{graphical settings for step function kernels. These can be logical (as in \code{\link{plot.stepfun}}) or lists of graphical parameters.} \item{add}{ add to an existing plot? } \item{xlim, ylim}{ vectors of length two containing the x- and y-axis limit of the plot. The default y-axis range (\code{ylim=NULL}) is from 0 to the value of the (scaled) interaction function at \eqn{x = 0}. The default x-axis (\code{xlim=NULL}) starts at 0, and the upper limit is determined as follows (in decreasing order of precedence): \itemize{ \item If \code{xgrid} is a vector of evaluation points, \code{xlim[2]} is set to \code{max(xgrid)}. \item \code{eps.t}/\code{eps.s} if it is unique and finite. \item If the interaction function is a step function with \code{maxRange NegBin1, component seasonality fit1 <- update(fit0, family = "NegBin1", S = list(end=2, ar=2)) ## compare fits AIC(fit0, fit1) opar <- par(mfrow=c(2,2)) plot(fit0, type="fitted", names="fit0", par.settings=NULL) plot(fit1, type="fitted", names="fit1", par.settings=NULL) plot(fit0, fit1, type="season", components=c("end", "ar"), par.settings=NULL) par(opar) } \keyword{models} \keyword{methods} surveillance/man/make.design.Rd0000644000175100001440000000637511770111463016227 0ustar hornikusers\name{make.design} \alias{make.design} \encoding{latin1} \title{Create the design matrices} \description{ Creates the design matrices needed for \code{meanResponse} } \usage{ make.design(disProgObj, control=list(lambda=TRUE, neighbours=FALSE, linear=FALSE, nseason=0, negbin=c("none", "single", "multiple"), proportion=c("none", "single", "multiple"),lag.range=NULL) ) } \arguments{ \item{disProgObj}{object of class \code{disProg}} \item{control}{control object: \describe{ \item{\code{lambda}}{If \code{TRUE} an autoregressive parameter \eqn{\lambda} is included, if \code{lambda} is a vector of logicals, unit-specific parameters \eqn{\lambda_i} are included. By default, observations \eqn{y_{t-lag}}{y_t-lag} at the previous time points, i.e. \eqn{lag=1}, are used for the autoregression. Other lags can be used by specifying \code{lambda} as a vector of integers, see \code{\link{algo.hhh}} for details.} \item{\code{neighbours}}{If \code{TRUE} an autoregressive parameter for adjacent units \eqn{\phi} is included, if \code{neighbours} is a vector of logicals, unit-specific parameters \eqn{\phi_i} are included. By default, observations \eqn{y_{t-lag}}{y_t-lag} at the previous time points, i.e. \eqn{lag=1}, are used for the autoregression. Other lags can be used by specifying \code{neighbours} as a vector of integers.} \item{\code{linear}}{a \code{logical} (or a vector of logicals) indicating wether a linear trend \eqn{\beta} (or a linear trend \eqn{\beta_i} for each unit) is included} \item{\code{nseason}}{Integer number of Fourier frequencies; if \code{nseason} is a vector of integers, each unit \eqn{i} gets its own seasonal parameters } \item{\code{negbin}}{if \code{"single"} negative binomial rather than poisson is used, if \code{"multiple"} unit-specific overdispersion parameters are used.} \item{\code{proportion}}{see details in \code{\link{algo.hhh}} } \item{\code{lag.range}}{determines which observations are used to fit the model } }} } \value{Returns a list with elements \item{Y}{matrix with number of cases \eqn{y_{it}}{y_it} in unit \eqn{i} at time \eqn{t} as elements, i.e. data without the first time point.} \item{Ym1}{matrix with previous number of cases \eqn{y_{i,t-1}}{y_i,t-1}, i.e data without the last time point.} \item{Ym1.neighbours}{matrix with weighted sum of earlier counts of adjacent units \eqn{\sum_{j \sim i} m_{ji} y_{j,t-1}}{sum_(j ~ i) w_ji * y_j,t-1} } \item{nOfNeighbours}{vector with number of neighbours for each unit \eqn{i} } \item{X.trendSeason}{design matrix for linear trend and seasonal components} \item{populationFrac}{matrix with corresponding population proportions} \item{dimTheta}{list with number of parameters used in model} \item{control}{control object} \item{disProgObj}{Object of class \code{disProg}} \item{lag}{which lag is used for the autoregressive parameters \eqn{\lambda} and \eqn{\phi} } \item{nObs}{number of observations} } \author{M.Paul, L. Held} \keyword{internal} % predict.ah surveillance/man/twinstim_simulation.Rd0000644000175100001440000004606712616243407020172 0ustar hornikusers\encoding{latin1} \name{twinstim_simulation} \alias{simEpidataCS} \alias{simulate.twinstim} \title{ Simulation of a Self-Exciting Spatio-Temporal Point Process } \description{ The function \code{simEpidataCS} simulates events of a self-exiciting spatio-temporal point process of the \code{"\link{twinstim}"} class. Simulation works via Ogata's modified thinning of the conditional intensity as described in Meyer et al. (2012). Note that simulation is limited to the spatial and temporal range of \code{stgrid}. The \code{\link{simulate}} method for objects of class \code{"\link{twinstim}"} simulates new epidemic data using the model and the parameter estimates of the fitted object. } \usage{ simEpidataCS(endemic, epidemic, siaf, tiaf, qmatrix, rmarks, events, stgrid, tiles, beta0, beta, gamma, siafpars, tiafpars, epilink = "log", t0 = stgrid$start[1], T = tail(stgrid$stop,1), nEvents = 1e5, control.siaf = list(F=list(), Deriv=list()), W = NULL, trace = 5, nCircle2Poly = 32, gmax = NULL, .allocate = 500, .skipChecks = FALSE, .onlyEvents = FALSE) \method{simulate}{twinstim}(object, nsim = 1, seed = NULL, data, tiles, newcoef = NULL, rmarks = NULL, t0 = NULL, T = NULL, nEvents = 1e5, control.siaf = object$control.siaf, W = data$W, trace = FALSE, nCircle2Poly = NULL, gmax = NULL, .allocate = 500, simplify = TRUE, ...) } \arguments{ \item{endemic}{ see \code{\link{twinstim}}. Note that type-specific endemic intercepts are specified by \code{beta0} here, not by the term \code{(1|type)}. } \item{epidemic}{ see \code{\link{twinstim}}. Marks appearing in this formula must be returned by the generating function \code{rmarks}. } \item{siaf}{ see \code{\link{twinstim}}. In addition to what is required for fitting with \code{twinstim}, the \code{siaf} specification must also contain the element \code{simulate}, a function which draws random locations following the spatial kernel \code{siaf$f}. The first argument of the function is the number of points to sample (say \code{n}), the second one is the vector of parameters \code{siafpars}, the third one is the type indicator (a character string matching a type name as specified by \code{dimnames(qmatrix)}). With the current implementation there will always be simulated only one location at a time, i.e. \code{n=1}. The \link[=siaf.constant]{predefined siaf's} all provide simulation. } \item{tiaf}{ e.g. what is returned by the generating function \code{\link{tiaf.constant}} or \code{\link{tiaf.exponential}}. See also \code{\link{twinstim}}. } \item{qmatrix}{ see \code{\link{epidataCS}}. Note that this square matrix and its \code{dimnames} determine the number and names of the different event types. In the simplest case, there is only a single type of event, i.e. \code{qmatrix = diag(1)}. } \item{rmarks}{ function of single time (1st arg) and location (2nd arg) returning a one-row \code{data.frame} of marks (named according to the variables in \code{epidemic}) for an event at this point. This must include the columns \code{eps.s} and \code{eps.t}, i.e. the values of the spatial and temporal interaction ranges at this point. Only \code{"numeric"} and \code{"factor"} columns are allowed. Assure that factor variables are coded equally (same levels and level order) for each new sample. For the \code{simulate.twinstim} method, the default (\code{NULL}) means sampling from the empirical distribution function of the (non-missing) marks in \code{data} restricted to events in the simulation period (\code{t0};\code{T}]. If there are no events in this period, e.g., if simulating beyond the original observation period, \code{rmarks} will sample marks from all of \code{data$events}. } \item{events}{ \code{NULL} or missing (default) in case of an empty prehistory, or a \code{\link{SpatialPointsDataFrame}} containing events of the prehistory (-Inf;\code{t0}] of the process (required for the epidemic to start in case of no endemic component in the model). The \code{SpatialPointsDataFrame} must have the same \code{proj4string} as \code{tiles} and \code{W}). The attached \code{data.fram}e (data slot) must contain the typical columns as described in \code{\link{as.epidataCS}} (\code{time}, \code{tile}, \code{eps.t}, \code{eps.s}, and, for type-specific models, \code{type}) and all marks appearing in the \code{epidemic} specification. Note that some column names are reserved (see \code{\link{as.epidataCS}}). Only events up to time \code{t0} are selected and taken as the prehistory. } \item{stgrid}{ see \code{\link{as.epidataCS}}. Simulation only works inside the spatial and temporal range of \code{stgrid}. } \item{tiles}{ object inheriting from \code{"\linkS4class{SpatialPolygons}"} with \code{row.names} matching the \code{tile} names in \code{stgrid} and having the same \code{proj4string} as \code{events} and \code{W}. This is necessary to sample the spatial location of events generated by the endemic component. } \item{beta0,beta,gamma,siafpars,tiafpars}{ these are the parameter subvectors of the \code{twinstim}. \code{beta} and \code{gamma} must be given in the same order as they appear in \code{endemic} and \code{epidemic}, respectively. \code{beta0} is either a single endemic intercept or a vector of type-specific endemic intercepts in the same order as in \code{qmatrix}. } \item{epilink}{ a character string determining the link function to be used for the \code{epidemic} linear predictor of event marks. By default, the log-link is used. The experimental alternative is \code{epilink = "identity"}. Note that the identity link does not guarantee the force of infection to be positive. If this leads to a negative total intensity (endemic + epidemic), the point process is not well defined and simulation cannot proceed. } \item{t0}{ \code{events} having occured during (-Inf;\code{t0}] are regarded as part of the prehistory \eqn{H_0} of the process. The time point \code{t0} must be an element of \code{stgrid$start}. For \code{simEpidataCS}, by default, and also if \code{t0=NULL}, it is the earliest time point of the spatio-temporal grid \code{stgrid}. For the \code{simulate.twinstim} method, \code{NULL} means to use the same time range as for the fitting of the \code{"twinstim"} \code{object}. } \item{T, nEvents}{ simulate a maximum of \code{nEvents} events up to time \code{T}, then stop. For \code{simEpidataCS}, by default, and also if \code{T=NULL}, \code{T} equals the last stop time in \code{stgrid} (it cannot be greater) and \code{nEvents} is bounded above by 10000. For the \code{simulate.twinstim} method, \code{T=NULL} means to use the same same time range as for the fitting of the \code{"twinstim"} \code{object}. } \item{W}{ see \code{\link{as.epidataCS}}. When simulating from \code{twinstim}-fits, \code{W} is by default taken from the original \code{data$W}. If specified as \code{NULL}, \code{W} is generated automatically via \code{\link{unionSpatialPolygons}(tiles)}. However, since the result of such a polygon operation should always be verified, it is recommended to do that in advance.\cr It is important that \code{W} and \code{tiles} cover the same region: on the one hand direct offspring is sampled in the spatial influence region of the parent event, i.e., in the intersection of \code{W} and a circle of radius the \code{eps.s} of the parent event, after which the corresponding tile is determined by overlay with \code{tiles}. On the other hand endemic events are sampled from \code{tiles}. } \item{trace}{ logical (or integer) indicating if (or how often) the current simulation status should be \code{cat}ed. For the \code{simulate.twinstim} method, \code{trace} currently only applies to the first of the \code{nsim} simulations. } \item{.allocate}{ number of rows (events) to initially allocate for the event history; defaults to 500. Each time the simulated epidemic exceeds the allocated space, the event \code{data.frame} will be enlarged by \code{.allocate} rows. } \item{.skipChecks,.onlyEvents}{ these logical arguments are not meant to be set by the user. They are used by the simulate-method for twinstim objects. } \item{object}{ an object of class \code{"\link{twinstim}"}. } \item{nsim}{ number of epidemics (i.e. spatio-temporal point patterns inheriting from class \code{"epidataCS"}) to simulate. Defaults to 1 when the result is a simple object inheriting from class \code{"simEpidataCS"} (as if \code{simEpidataCS} would have been called directly). If \code{nsim > 1}, the result will be a list the structure of which depends on the argument \code{simplify}. } \item{seed}{ an object specifying how the random number generator should be initialized for simulation (via \code{\link{set.seed}}). The initial state will also be stored as an attribute \code{"seed"} of the result. The original state of the \code{\link{.Random.seed}} will be restored at the end of the simulation. By default (\code{NULL}), neither initialization nor recovery will be done. This behaviour is copied from the \code{\link{simulate}.lm} method. } \item{data}{ an object of class \code{"epidataCS"}, usually the one to which the \code{"twinstim"} \code{object} was fitted. It carries the \code{stgrid} of the endemic component, but also \code{events} for use as the prehistory, and defaults for \code{rmarks} and \code{nCircle2Poly}. } \item{newcoef}{ an optional named numeric vector of (a subset of) parameters to replace the original point estimates in \code{coef(object)}. Elements which do not match any model parameter by name are silently ignored. The \code{newcoef}s may also be supplied in a list following the same conventions as for the \code{start} argument in \code{\link{twinstim}}. } \item{simplify}{ logical. It is strongly recommended to set \code{simplify = TRUE} (default) if \code{nsim} is large. This saves space and computation time, because for each simulated epidemic only the \code{events} component is saved. All other components, which do not vary between simulations, are only stored from the first run. In this case, the runtime of each simulation is stored as an attribute \code{"runtime"} to each simulated \code{events}. See also the \dQuote{Value} section below. } \item{control.siaf}{see \code{\link{twinstim}}.} \item{nCircle2Poly}{see \code{\link{as.epidataCS}}. For \code{simulate.twinstim}, \code{NULL} means to use the same value as for \code{data}.} \item{gmax}{ maximum value the temporal interaction function \code{tiaf$g} can attain. If \code{NULL}, then it is assumed as the maximum value of the type-specific values at 0, i.e. \code{max(tiaf$g(rep.int(0,nTypes), tiafpars, 1:nTypes))}. } \item{\dots}{unused (arguments of the generic).} } \value{ The function \code{simEpidataCS} returns a simulated epidemic of class \code{"simEpidataCS"}, which enhances the class \code{"epidataCS"} by the following additional components known from objects of class \code{"\link{twinstim}"}: \code{timeRange}, \code{formula}, \code{coefficients}, \code{npars}, \code{call}, \code{runtime}. It has corresponding \code{\link{coeflist}}, \code{\link[=residuals.simEpidataCS]{residuals}}, \code{\link[=R0.simEpidataCS]{R0}}, and \code{\link[=intensityplot.simEpidataCS]{intensityplot}} methods. The \code{simulate.twinstim} method has some additional \emph{attributes} set on its result: \code{call}, \code{seed}, \code{simplified}, and \code{runtime} with their obvious meanings. Furthermore, if \code{nsim > 1}, it returns an object of class \code{"simEpidataCSlist"}, the form of which depends on the value of \code{simplify}: if \code{simplify = FALSE}, then the return value is just a list of sequential simulations, each of class \code{"simEpidataCS"}. However, if \code{simplify = TRUE}, then the sequential simulations share all components but the simulated \code{events}, i.e. the result is a list with the same components as a single object of class \code{"simEpidataCS"}, but with \code{events} replaced by an \code{eventsList} containing the \code{events} returned by each of the simulations. The \code{stgrid} component of the returned \code{"simEpidataCS"} will be truncated to the actual end of the simulation, which might be \eqn{ 1}) may have different \code{stgrid} time ranges. In a \code{"simEpidataCSlist"}, the \code{stgrid} shared by all of the simulated epidemics is just the \code{stgrid} returned by the \emph{first} simulation. } \note{ The more detailed the polygons in \code{tiles} are the slower is the algorithm. Often it can be advantageous to sacrifice some shape detail for speed by reducing polygon complexity using, e.g., the Douglas and Peucker (1973) reduction method available at \url{MapShaper.org} (Harrower and Bloch, 2006) or as function \code{\link[maptools]{thinnedSpatialPoly}} in package \pkg{maptools}, or by passing via \pkg{spatstat}'s \code{\link[spatstat]{simplify.owin}} procedure. } \references{ Douglas, D. H. and Peucker, T. K. (1973): Algorithms for the reduction of the number of points required to represent a digitized line or its caricature. \emph{Cartographica: The International Journal for Geographic Information and Geovisualization}, \bold{10}, 112-122 Harrower, M. and Bloch, M. (2006): MapShaper.org: A Map Generalization Web Service. \emph{IEEE Computer Graphics and Applications}, \bold{26}(4), 22-27.\cr DOI-Link: \url{http://dx.doi.org/10.1109/MCG.2006.85} Meyer, S., Elias, J. and H\enc{ö}{oe}hle, M. (2012): A space-time conditional intensity model for invasive meningococcal disease occurrence. \emph{Biometrics}, \bold{68}, 607-616.\cr DOI-Link: \url{http://dx.doi.org/10.1111/j.1541-0420.2011.01684.x} Meyer, S. (2010): Spatio-Temporal Infectious Disease Epidemiology based on Point Processes. Master's Thesis, Ludwig-Maximilians-Universit\enc{ä}{ae}t M\enc{ü}{ue}nchen.\cr Available as \url{http://epub.ub.uni-muenchen.de/11703/} } \author{ Sebastian Meyer, with contributions by Michael H\enc{ö}{oe}hle } \seealso{ The \code{\link{plot.epidataCS}} and \code{\link{animate.epidataCS}} methods for plotting and animating continuous-space epidemic data, respectively, which also work for simulated epidemics (by inheritance). Function \code{\link{twinstim}} for fitting spatio-temporal conditional intensity models to epidemic data. } \examples{ data("imdepi") data("imdepifit") ## load borders of Germany's districts (originally obtained from the ## Bundesamt für Kartographie und Geodäsie, Frankfurt am Main, Germany, ## www.geodatenzentrum.de), simplified by the "modified Visvalingam" ## algorithm (level=6.6\%) using MapShaper.org (v. 0.1.17): load(system.file("shapes", "districtsD.RData", package="surveillance")) plot(districtsD) plot(stateD, add=TRUE, border=2, lwd=2) # 'stateD' was obtained as 'rgeos::gUnaryUnion(districtsD)' ## simulate 2 realizations (during a VERY short period -- for speed) ## considering events from data(imdepi) before t=31 as pre-history mysims <- simulate(imdepifit, nsim=2, seed=1, data=imdepi, tiles=districtsD, newcoef=c("e.typeC"=-1), t0=31, T=61, simplify=TRUE) ## extract the first realization -> object of class simEpidataCS mysim2 <- mysims[[2]] summary(mysim2) plot(mysim2, aggregate="space") ## plot both epidemics using the plot-method for simEpidataCSlist's plot(mysims, aggregate="time", by=NULL) if (surveillance.options("allExamples")) { ### compare the observed _cumulative_ number of cases during the ### first 90 days to 20 simulations from the fitted model ### (performing these simulations takes about 30 seconds) sims <- simulate(imdepifit, nsim=20, seed=1, data=imdepi, t0=0, T=90, tiles=districtsD, simplify=TRUE) ## extract cusums getcsums <- function (events) { tapply(events$time, events@data["type"], function (t) cumsum(table(t)), simplify=FALSE) } csums_observed <- getcsums(imdepi$events) csums_simulated <- lapply(sims$eventsList, getcsums) ## plot it plotcsums <- function (csums, ...) { mapply(function (csum, ...) lines(as.numeric(names(csum)), csum, ...), csums, ...) invisible() } plot(c(0,90), c(0,35), type="n", xlab="Time [days]", ylab="Cumulative number of cases") plotcsums(csums_observed, col=c(2,4), lwd=3) legend("topleft", legend=levels(imdepi$events$type), col=c(2,4), lwd=1) invisible(lapply(csums_simulated, plotcsums, col=scales::alpha(c(2,4), alpha=0.5))) } if (surveillance.options("allExamples")) { ### 'nsim' simulations of 'nm2add' months beyond the observed period: nm2add <- 24 nsim <- 5 ### With these settings, simulations will take about 30 seconds. ### The events still infective by the end of imdepi$stgrid will be used ### as the prehistory for the continued process. origT <- tail(imdepi$stgrid$stop, 1) ## create a time-extended version of imdepi imdepiext <- local({ ## first we have to expand stgrid (assuming constant "popdensity") g <- imdepi$stgrid g$stop <- g$BLOCK <- NULL gadd <- data.frame(start=rep(seq(origT, by=30, length.out=nm2add), each=nlevels(g$tile)), g[rep(seq_len(nlevels(g$tile)), nm2add), -1]) ## now create an "epidataCS" using this time-extended stgrid as.epidataCS(events=imdepi$events, # the replacement warnings are ok W=imdepi$W, qmatrix=imdepi$qmatrix, stgrid=rbind(g, gadd), T=max(gadd$start) + 30) }) newT <- tail(imdepiext$stgrid$stop, 1) ## simulate beyond the original period simsext <- simulate(imdepifit, nsim=nsim, seed=1, t0=origT, T=newT, data=imdepiext, tiles=districtsD, simplify=TRUE) ## Aside to understand the note from checking events and tiles: # marks(imdepi)["636",] # tile 09662 is attributed to this event, but: # plot(districtsD[c("09678","09662"),], border=1:2, lwd=2, axes=TRUE) # points(imdepi$events["636",]) ## this mismatch is due to polygon simplification ## plot the observed and simulated event numbers over time plot(imdepiext, breaks=c(unique(imdepi$stgrid$start),origT), cumulative=list(maxat=330)) for (i in seq_along(simsext$eventsList)) plot(simsext[[i]], add=TRUE, legend.types=FALSE, breaks=c(unique(simsext$stgrid$start),newT), subset=!is.na(source), # have to exclude the events of the prehistory cumulative=list(offset=c(table(imdepi$events$type)), maxat=330, axis=FALSE), border=NA, density=0) # no histogram abline(v=origT, lty=2, lwd=2) } } \keyword{datagen} \keyword{models} surveillance/man/algo.glrnb.Rd0000644000175100001440000001512512277147300016062 0ustar hornikusers\name{algo.glrnb} \alias{algo.glrnb} \encoding{latin1} \title{Count Data Regression Charts} \description{ Count data regression charts for the monitoring of surveillance time series. } \usage{ algo.glrnb(disProgObj,control = list(range=range,c.ARL=5, mu0=NULL, alpha=0, Mtilde=1, M=-1, change="intercept", theta=NULL,dir=c("inc","dec"),ret=c("cases","value"))) } \arguments{ \item{disProgObj}{object of class \code{disProg} to do surveillance for} \item{control}{A list controlling the behaviour of the algorithm \describe{ \item{\code{range}}{vector of indices in the observed vector to monitor (should be consecutive)} \item{\code{mu0}}{A vector of in-control values of the mean of the negative binomial distribution with the same length as \code{range}. If \code{NULL} the observed values in \code{1:(min(range)-1)} are used to estimate beta through a generalized linear model. To fine-tune the model one can instead specify \code{mu0} as a list with two components: \describe{ \item{\code{S}}{number of harmonics to include} \item{\code{trend}}{include a term \code{t} in the GLM model} }} \item{\code{alpha}}{The (known) dispersion parameter of the negative binomial distribution. If \code{alpha=0} then the negative binomial distribution boils down to the Poisson distribution and a call of \code{algo.glrnb} is equivalent to a call to \code{algo.glrpois}. If \code{alpha=NULL} the parameter is calculated as part of the in-control estimation.} \item{\code{c.ARL}}{threshold in the GLR test, i.e. \eqn{c_{\gamma}}{c_gamma}} \item{\code{Mtilde}}{number of observations needed before we have a full rank the typical setup for the "\code{intercept}" and "\code{epi}" charts is \code{Mtilde=1}} \item{\code{M}}{number of time instances back in time in the window-limited approach, i.e. the last value considered is \eqn{\max{1,n-M}}. To always look back until the first observation use \code{M=-1}.} \item{\code{change}}{a string specifying the type of the alternative. Currently the two choices are \code{intercept} and \code{epi}. See the SFB Discussion Paper 500 for details.} \item{\code{theta}}{if \code{NULL} then the GLR scheme is used. If not \code{NULL} the prespecified value for \eqn{\kappa} or \eqn{\lambda} is used in a recursive LR scheme, which is faster. } \item{\code{dir}}{a string specifying the direction of testing in GLR scheme. With \code{"inc"} only increases in \eqn{x} are considered in the GLR-statistic, with \code{"dec"} decreases are regarded. } \item{\code{ret}}{a string specifying the type of \code{upperbound}-statistic that is returned. With \code{"cases"} the number of cases that would have been necessary to produce an alarm or with \code{"value"} the glr-statistic is computed (see below).} } } } \value{ \item{survRes}{ \code{algo.glrnb} returns a list of class \code{survRes} (surveillance result), which includes the alarm value for recognizing an outbreak (1 for alarm, 0 for no alarm), the threshold value for recognizing the alarm and the input object of class disProg. The \code{upperbound} slot of the object are filled with the current \eqn{GLR(n)} value or with the number of cases that are necessary to produce an alarm at any timpoint \eqn{<=n}. Both lead to the same alarm timepoints, but \code{"cases"} has an obvious interpretation.} } % \details{ % This function implements the seasonal cound data chart based on generalized likelihood ratio (GLR) as described in the Hoehle and Paul (2008) paper. A moving-window generalized likelihood ratio detector is used, i.e. the detector has the form % \deqn{N = \inf\left\{ n : \max_{1\leq k \leq n} \left[ \sum_{t=k}^n \log \left\{ \frac{f_{\theta_1}(x_t|z_t)}{f_{\theta_0}(x_t|z_t)} \right\} \right] \geq c_\gamma \right\} }{N = inf(... >= c_gamma)} % where instead of \eqn{1\leq k \leq n}{1<= k <= n} the GLR statistic is computed for all \eqn{k \in \{n-M, \ldots, n-\tilde{M}+1\}}{k \in \{n-M, \ldots, n-Mtilde+1\}}. To achieve the typical behaviour from \eqn{1\leq k\leq n}{1<= k <= n} use \code{Mtilde=1} and \code{M=-1}. So \eqn{N} is the time point where the GLR statistic is above the threshold the first time: An alarm is given and the surveillance is resetted starting from time \eqn{N+1}. Note that the same \code{c.ARL} as before is used, but if \code{mu0} is different at \eqn{N+1,N+2,\ldots} compared to time \eqn{1,2,\ldots} the run length properties differ. Because \code{c.ARL} to obtain a specific ARL can only be obtained my Monte Carlo simulation there is no good way to update \code{c.ARL} automatically at the moment. Also, FIR GLR-detectors might be worth considering. At the moment, window limited ``\code{intercept}'' charts have not been extensively tested and are at the moment not supported. As speed is not an issue here this doesn't bother too much. Therefore, a value of \code{M=-1} is always used in the intercept charts. } \seealso{ \code{\link{algo.rkiLatestTimepoint}} } \author{M. Hoehle} \examples{ ##Simulate data and apply the algorithm S <- 1 ; t <- 1:120 ; m <- length(t) beta <- c(1.5,0.6,0.6) omega <- 2*pi/52 #log mu_{0,t} alpha <- 0.2 base <- beta[1] + beta[2] * cos(omega*t) + beta[3] * sin(omega*t) #Generate example data with changepoint and tau=tau tau <- 100 kappa <- 0.4 mu0 <- exp(base) mu1 <- exp(base + kappa) #Generate data set.seed(42) x <- rnbinom(length(t),mu=mu0*(exp(kappa)^(t>=tau)),size=1/alpha) s.ts <- create.disProg(week=1:length(t),observed=x,state=(t>=tau)) #Plot the data plot(s.ts,legend=NULL,xaxis.years=FALSE) #Run GLR based detection cntrl = list(range=t,c.ARL=5, Mtilde=1, mu0=mu0, alpha=alpha, change="intercept",ret="value",dir="inc") glr.ts <- algo.glrnb(s.ts,control=c(cntrl)) plot(glr.ts,xaxis.years=FALSE) #CUSUM LR detection with backcalculated number of cases cntrl2 = list(range=t,c.ARL=5, Mtilde=1, mu0=mu0, alpha=alpha, change="intercept",ret="cases",dir="inc",theta=1.2) glr.ts2 <- algo.glrnb(s.ts,control=c(cntrl2)) plot(glr.ts2,xaxis.years=FALSE) } \keyword{classif} \source{ Count data regression charts for the monitoring of surveillance time series (2008), M. \enc{Höhle}{Hoehle} and M. Paul, Computational Statistics and Data Analysis, 52(9), pp. 4357--4368. Poisson regression charts for the monitoring of surveillance time series (2006), \enc{Höhle}{Hoehle}, M., SFB386 Discussion Paper 500. } surveillance/man/isScalar.Rd0000644000175100001440000000101512143432533015564 0ustar hornikusers\name{isScalar} \alias{isScalar} \title{ Checks if the Argument is Scalar } \description{ The simple helper function \code{isScalar} just checks if its argument is a scalar, i.e. a numeric vector of length 1. It is implemented as \code{length(x) == 1L && is.vector(x, mode = "numeric")}. } \usage{ isScalar(x) } \arguments{ \item{x}{an \code{R} object.} } \value{ A length-one logical vector. } %% \examples{ %% isScalar(TRUE) # FALSE %% isScalar(1:10) # FALSE %% isScalar(pi) # TRUE %% } \keyword{internal} surveillance/man/salmonella.agona.Rd0000644000175100001440000000132112003774404017237 0ustar hornikusers\name{salmonella.agona} \alias{salmonella.agona} \docType{data} \title{Salmonella Agona cases in the UK 1990-1995} \description{ Reported number of cases of the Salmonella Agona serovar in the UK 1990-1995. Note however that the counts do not correspond exactly to the ones used by Farrington et. al (1996). } \usage{data(salmonella.agona)} \format{ A \code{disProg} object with 312 observations starting from week 1 in 1990. } \source{A statistical algorithm for the early detection of outbreaks of infectious disease, Farrington, C.P., Andrews, N.J, Beale A.D. and Catchpole, M.A. (1996). , J. R. Statist. Soc. A, 159, 547-563.} \examples{ data(salmonella.agona) } \keyword{datasets} surveillance/man/bestCombination.Rd0000644000175100001440000000110111731650466017150 0ustar hornikusers\name{bestCombination} \alias{bestCombination} \encoding{latin1} \title{Partition of a number into two factors} \description{ Given a prime number factorization \code{x}, \code{best combination} partitions \code{x} into two groups, such that the product of the numbers in group one is as similar as possible to the product of the numbers of group two. This is useful in magic.dim } \usage{ bestCombination(x) } \arguments{ \item{x}{prime number factorization} } \value{Returns a vector c(prod(set1),prod(set2)) } \keyword{hplot} surveillance/man/plot.atwins.Rd0000644000175100001440000000470011731650466016322 0ustar hornikusers\name{plot.atwins} \alias{plot.atwins} \encoding{latin1} \title{Plot results of a twins model fit} \description{ Plot results of fitting a twins model using MCMC output. Plots similar to those in the Held et al. (2006) paper are generated } \usage{ \method{plot}{atwins}(x, which=c(1,4,6,7), ask=TRUE, \dots) } \arguments{ \item{x}{An object of class \code{atwins}.} \item{which}{a vector containing the different plot types to show \describe{ \item{1}{A plot of the observed time series Z is shown together with posterior means for the number of endemic cases (X) and number of epidemic cases (Y).} \item{2}{This plot shows trace plots of the gamma parameters over all MCMC samples.} \item{3}{This shows a trace plot of psi, which controls the overdispersion in the model.} \item{4}{Autocorrelation functions for K and psi are shown in order to judge whether the MCMC sampler has converged.} \item{5}{Shows a plot of the posterior mean of the seasonal model nu[t] together with 95\% credibility intervals based on the quantiles of the posterior.} \item{6}{Histograms illustrating the posterior density for K and psi. The first one corresponds to Fig. 4(f) in the paper.} \item{7}{Histograms illustrating the predictive posterior density for the next observed number of cases Z[n+1]. Compare with Fig.5 in the paper.} } } \item{ask}{Boolean indicating whether to ask for a newline before showing the next plot.} \item{\dots}{Additional control for the plots, which are currently ignored.} } \details{ For details see the plots in the paper. Basically MCMC output is visualized. This function is together with \code{algo.twins} still experimental. } \value{This function does not return anything.} \references{Held, L., Hofmann, M., \enc{Höhle}{Hoehle}, M. and Schmid V. (2006) A two-component model for counts of infectious diseases, Biostatistics, \bold{7}, pp. 422--437. } \author{M. Hofmann and M. \enc{Höhle}{Hoehle}} \seealso{\link{algo.twins}} \examples{ \dontrun{ #Apparently, the algo.atwins can crash on some LINUX systems #thus for now the example section is commented #Load the data used in the Held et al. (2006) paper data("hepatitisA") #Fix seed - this is used for the MCMC samplers in twins set.seed(123) #Call algorithm and save result otwins <- algo.twins(hepatitisA) #This shows the entire output plot(otwins,which=c(1,2),ask=FALSE) } } \keyword{ts} \keyword{regression} surveillance/man/qlomax.Rd0000644000175100001440000000166012003771340015327 0ustar hornikusers\name{qlomax} \alias{qlomax} \title{ Quantile Function of the Lomax Distribution } \description{ Quantile function of the Lomax distribution with positive scale parameter \code{scale} (often denoted as \eqn{\sigma}{sigma}) and positive shape parameter \code{shape} (often denoted as \eqn{\alpha}{alpha}). This implementation does not include any checks, but only the raw formula \code{scale * ((1-p)^(-1/shape) - 1)}. Another implementation can be found as \code{\link[VGAM]{qlomax}} in the package \pkg{VGAM}. } \usage{ qlomax(p, scale, shape) } \arguments{ \item{p}{ vector of probabilities. } \item{scale}{ positive scale parameter. } \item{shape}{ positive shape parameter. } } \value{ Numeric vector of quantiles corresponding to the probabilities \code{p}. } \author{ Sebastian Meyer } \seealso{ \code{\link[VGAM]{Lomax}} in package \pkg{VGAM}. } \examples{ qlomax(0.99, 1, 2) } \keyword{distribution} surveillance/man/hhh4_plot.Rd0000644000175100001440000003634112612443472015733 0ustar hornikusers\name{plot.hhh4} \alias{plot.hhh4} \alias{plotHHH4_fitted} \alias{plotHHH4_fitted1} \alias{plotHHH4_season} \alias{getMaxEV_season} \alias{plotHHH4_maxEV} \alias{getMaxEV} \alias{plotHHH4_maps} \alias{plotHHH4_ri} \alias{plotHHH4_neweights} \title{Plots for Fitted \code{hhh4}-models} \description{ There are six \code{type}s of plots for fitted \code{\link{hhh4}} models: \itemize{ \item Plot the \code{"fitted"} component means (of selected units) along time along with the observed counts. \item Plot the estimated \code{"season"}ality of the three components. \item Plot the time-course of the dominant eigenvalue \code{"maxEV"}. \item If the units of the corresponding multivariate \code{"\linkS4class{sts}"} object represent different regions, maps of the fitted mean components averaged over time (\code{"maps"}), or a map of estimated region-specific intercepts (\code{"ri"}) of a selected model component can be produced. \item Plot the (estimated) neighbourhood weights (\code{"neweights"}) as a function of neighbourhood order (shortest-path distance between regions), i.e., \code{w_ji ~ o_ji}. } } \usage{ \method{plot}{hhh4}(x, type=c("fitted", "season", "maxEV", "maps", "ri", "neweights"), ...) plotHHH4_fitted(x, units = 1, names = NULL, col = c("grey85", "blue", "orange"), pch = 19, pt.cex = 0.6, pt.col = 1, par.settings = list(), legend = TRUE, legend.args = list(), legend.observed = FALSE, decompose = NULL, meanHHH = NULL, ...) plotHHH4_fitted1(x, unit = 1, main = NULL, col = c("grey85", "blue", "orange"), pch = 19, pt.cex = 0.6, pt.col = 1, border = col, start = x$stsObj@start, end = NULL, xaxis = NULL, xlim = NULL, ylim = NULL, xlab = "", ylab = "No. infected", hide0s = FALSE, decompose = NULL, meanHHH = NULL) plotHHH4_season(..., components = NULL, intercept = FALSE, xlim = NULL, ylim = NULL, xlab = NULL, ylab = "", main = NULL, par.settings = list(), matplot.args = list(), legend = NULL, legend.args = list(), refline.args = list(), unit = 1) getMaxEV_season(x) plotHHH4_maxEV(..., matplot.args = list(), refline.args = list(), legend.args = list()) getMaxEV(x) plotHHH4_maps(x, which = c("mean", "endemic", "epi.own", "epi.neighbours"), prop = FALSE, main = which, zmax = NULL, col.regions = hcl.colors(10), labels = FALSE, sp.layout = NULL, ..., map = x$stsObj@map, meanHHH = NULL) plotHHH4_ri(x, component, labels = FALSE, sp.layout = NULL, gpar.missing = list(col = "darkgrey", lty = 2, lwd = 2), ...) plotHHH4_neweights(x, plotter = boxplot, ..., exclude = 0, maxlag = Inf) } \arguments{ \item{x}{a fitted \code{\link{hhh4}} object.} \item{type}{type of plot: either \code{"fitted"} component means of selected \code{units} along time along with the observed counts, or \code{"season"}ality plots of the model components and the epidemic dominant eigenvalue (which may also be plotted along overall time by \code{type="maxEV"}, especially if the model contains time-varying neighbourhood weights or unit-specific epidemic effects), or \code{"maps"} of the fitted mean components averaged over time, or a map of estimated region-specific random intercepts (\code{"ri"}) of a specific model \code{component}. The latter two require \code{x$stsObj} to contain a map.} \item{\dots}{For \code{plotHHH4_season} and \code{plotHHH4_maxEV}, one or more \code{\link{hhh4}}-fits, or a single list of these. Otherwise further arguments passed on to other functions.\cr For the \code{plot}-method these go to the specific plot \code{type} function.\cr \code{plotHHH4_fitted} passes them to \code{plotHHH4_fitted1}, which is called sequentially for every unit in \code{units}.\cr \code{plotHHH4_maps} and \code{plotHHH4_ri} pass additional arguments to \code{\link{spplot}}, and \code{plotHHH4_neweights} to the \code{plotter}.} \item{units,unit}{integer or character vector specifying a single \code{unit} or possibly multiple \code{units} to plot. It indexes \code{colnames(x$stsObj)}.\cr In \code{plotHHH4_fitted}, \code{units=NULL} plots all units.\cr In the seasonality plot, selection of a unit is only relevant if the model contains unit-specific intercepts or seasonality terms.} \item{names,main}{main title(s) for the selected \code{unit}(\code{s}) / \code{components}. If \code{NULL} (default), \code{plotHHH4_fitted1} will use the appropriate element of \code{colnames(x$stsObj)}, whereas \code{plotHHH4_season} uses default titles.} \item{col,border}{length 3 vectors specifying the fill and border colors for the endemic, autoregressive, and spatio-temporal component polygons (in this order).} \item{pch,pt.cex,pt.col}{style specifications for the dots drawn to represent the observed counts. \code{pch=NA} can be used to disable these dots.} \item{par.settings}{list of graphical parameters for \code{\link{par}}. Sensible defaults for \code{mfrow}, \code{mar} and \code{las} will be applied unless overridden or \code{!is.list(par.settings)}.} \item{legend}{Integer vector specifying in which of the \code{length(units)} frames the legend should be drawn. If a logical vector is supplied, \code{which(legend)} determines the frame selection, i.e., the default is to drawn the legend in the first (upper left) frame only, and \code{legend=FALSE} results in no legend being drawn.} \item{legend.args}{list of arguments for \code{\link{legend}}, e.g., to modify the default positioning \code{list(x="topright", inset=0.02)}.} \item{legend.observed}{logical indicating if the legend should contain a line for the dots corresponding to observed counts.} \item{decompose}{if \code{TRUE} or (a permutation of) \code{colnames(x$stsObj)}, the fitted mean will be decomposed into the contributions from each single unit and the endemic part instead of the default endemic + AR + neighbours decomposition.} \item{start,end}{time range to plot specified by vectors of length two in the form \code{c(year,number)}, see \code{"\linkS4class{sts}"}.} \item{xaxis}{if this is a list (of arguments for \code{\link{addFormattedXAxis}}, the time axis is nicely labelled similar to \code{\link{stsplot_time}}. Note that in this case, the time indexes \code{1:nrow(x$stsObj)} will be used as x-values in the plot, which is different from the long-standing default (\code{xaxis = NULL}) with a real time scale.} \item{xlim}{numeric vector of length 2 specifying the x-axis range. The default (\code{NULL}) is to plot the complete time range.} \item{ylim}{y-axis range. For \code{type="fitted"}, this defaults to \code{c(0,max(observed(x$stsObj)[,unit]))}. For \code{type="season"}, \code{ylim} must be a list of length \code{length(components)} specifying the range for every component plot, or a named list to customize only a subset of these. If only one \code{ylim} is specified, it will be recycled for all \code{components} plots.} \item{xlab,ylab}{axis labels. For \code{plotHHH4_season}, \code{ylab} specifies the y-axis labels for all \code{components} in a list (similar to \code{ylim}). If \code{NULL} or incomplete, default mathematical expressions are used. If a single name is supplied such as the default \code{ylab=""} (to omit y-axis labels), it is used for all \code{components}.} \item{hide0s}{logical indicating if dots for zero observed counts should be omitted. Especially useful if there are too many.} \item{meanHHH}{(internal) use different component means than those estimated and available from \code{x}.} \item{components}{character vector of component names, i.e., a subset of \code{c("ar", "ne", "end")}, for which to plot the estimated seasonality. If \code{NULL} (the default), only components which appear in any of the models in \code{\dots} are plotted.\cr A seasonality plot of the epidemic dominant eigenvalue is also available by including \code{"maxEV"} in \code{components}, but it only supports models without epidemic covariates/offsets.} \item{intercept}{logical indicating whether to plot seasonality as a multiplicative effect on the respective component (the default \code{intercept=FALSE}), or additionally multiplied by the corresponding intercept (\code{intercept=TRUE}). The latter only makes sense if there are no further (non-centered) covariates/offsets in the component.} \item{matplot.args}{list of line style specifications passed to \code{\link{matplot}}, e.g., \code{lty}, \code{lwd}, \code{col}.} \item{refline.args}{list of line style specifications passed to \code{\link{abline}} to draw the reference line in the plot of the dominant eigenvalue, e.g., \code{lty} and \code{col}.} \item{which}{a character vector specifying the components of the mean for which to produce maps. By default, the overall mean and all three components are shown.} \item{prop}{a logical indicating whether the component maps should display proportions of the total mean instead of absolute numbers.} \item{zmax}{a numeric vector of length \code{length(which)} (recycled as necessary) specifying upper limits for the color keys of the maps. The default is to use the same scale for the component maps and a separate scale for the map showing the overall mean.} \item{col.regions}{a vector of colors used to encode the fitted component means (see \code{\link{levelplot}}).} \item{map}{an object inheriting from \code{"\linkS4class{SpatialPolygons}"} with \code{row.names} covering \code{colnames(x)}.} \item{component}{component for which to plot the estimated region-specific random intercepts. Must partially match one of \code{colnames(ranef(x, tomatrix=TRUE))}.} \item{labels}{determines if and how regions are labeled, see \code{\link{layout.labels}}.} \item{sp.layout}{optional list of additional layout items, see \code{\link{spplot}}.} \item{gpar.missing}{list of graphical parameters for \code{\link{sp.polygons}}, applied to regions with missing random intercepts, i.e., not included in the model. Such extra regions won't be plotted if \code{!is.list(gpar.missing)}.} \item{plotter}{the (name of a) function used to produce the plot of weights (a numeric vector) as a function of neighbourhood order (a factor variable). It is called as \code{plotter(Weight ~ Distance, ...)} and defaults to \code{\link{boxplot}}. A useful alternative is, e.g., \code{\link{stripplot}} from package \pkg{lattice}.} \item{exclude}{vector of neighbourhood orders to be excluded from plotting (passed to \code{\link{factor}}). By default, the neighbourhood weight for order 0 is not shown, which is usually zero anyway.} \item{maxlag}{maximum order of neighbourhood to be assumed when computing the \code{\link{nbOrder}} matrix. This additional step is necessary iff \code{neighbourhood(x$stsObj)} only specifies a binary adjacency matrix.} } \value{ \code{plotHHH4_fitted1} invisibly returns a matrix of the fitted component means for the selected \code{unit}, and \code{plotHHH4_fitted} returns these in a list for all \code{units}.\cr \code{plotHHH4_season} invisibly returns the plotted y-values, i.e. the multiplicative seasonality effect within each of \code{components}. Note that this will include the intercept, i.e. the point estimate of \eqn{exp(intercept + seasonality)} is plotted and returned.\cr \code{getMaxEV_season} returns a list with elements \code{"maxEV.season"} (as plotted by \code{plotHHH4_season(..., components="maxEV")}, \code{"maxEV.const"} and \code{"Lambda.const"} (the Lambda matrix and its dominant eigenvalue if time effects are ignored).\cr \code{plotHHH4_maxEV} (invisibly) and \code{getMaxEV} return the dominant eigenvalue of the \eqn{\Lambda_t} matrix for all time points \eqn{t} of \code{x$stsObj}.\cr \code{plotHHH4_maps} returns a \code{\link{trellis.object}} if \code{length(which) == 1} (a single \code{\link{spplot}}), and otherwise uses \code{\link[gridExtra]{grid.arrange}} from the \pkg{gridExtra} package to arrange all \code{length(which)} \code{\link{spplot}}s on a single page. \code{plotHHH4_ri} returns the generated \code{\link{spplot}}, i.e., a \code{\link{trellis.object}}.\cr \code{plotHHH4_neweights} eventually calls \code{plotter} and thus returns whatever is returned by that function. } \author{ Sebastian Meyer } \references{ Held, L. and Paul, M. (2012): Modeling seasonality in space-time infectious disease surveillance data. \emph{Biometrical Journal}, \bold{54}, 824-843.\cr DOI-Link: \url{http://dx.doi.org/10.1002/bimj.201200037} } \seealso{ other methods for \code{hhh4} fits, e.g., \code{\link{summary.hhh4}}. } \examples{ data("measlesWeserEms") ## fit a simple hhh4 model measlesModel <- list( ar = list(f = ~ 1), end = list(f = addSeason2formula(~0 + ri(type="iid"), S=1, period=52), offset = population(measlesWeserEms)), family = "NegBin1" ) measlesFit <- hhh4(measlesWeserEms, measlesModel) ## fitted values for a single unit plot(measlesFit, units=2) ## 'xaxis' option for a nicely formatted time axis ## default tick locations and labels: plot(measlesFit, units=2, xaxis=list(epochsAsDate=TRUE, line=1)) ## an alternative with monthly ticks: oopts <- surveillance.options(stsTickFactors = c("\%m"=0.75, "\%Y" = 1.5)) plot(measlesFit, units=2, xaxis=list(epochsAsDate=TRUE, xaxis.tickFreq=list("\%m"=atChange, "\%Y"=atChange), xaxis.labelFreq=list("\%Y"=atMedian), xaxis.labelFormat="\%Y")) surveillance.options(oopts) ## plot the multiplicative effect of seasonality plot(measlesFit, type="season") ## dominant eigenvalue of the Lambda matrix (cf. Held and Paul, 2012) getMaxEV(measlesFit) # here simply constant and equal to exp(ar.1) plot(measlesFit, type="maxEV") # not very exciting ## fitted mean components by district averaged over time if (requireNamespace("gridExtra")) plot(measlesFit, type="maps", labels=list(cex=0.6), main=c("Total","Endemic","Within district","From other districts")) ## random intercepts of the endemic component plot(measlesFit, type="ri", component="end", labels=list(font=3, labels="GEN")) ## neighbourhood weights as a function of neighbourhood order plot(measlesFit, type="neweights") # boring, model has no "ne" component ## fitted values for the 6 regions with most cases and some customization bigunits <- tail(names(sort(colSums(observed(measlesWeserEms)))), 6) plot(measlesFit, units=bigunits, names=measlesWeserEms@map@data[bigunits,"GEN"], legend=5, legend.args=list(x="top"), xlab="Time (weekly)", hide0s=TRUE, ylim=c(0,max(observed(measlesWeserEms)[,bigunits])), start=c(2002,1), end=c(2002,26), par.settings=list(xaxs="i")) ## plot completely decomposed mean structure (useless without 'ne' component) plot(measlesFit, units=bigunits, col=rainbow(measlesFit$nUnit), decompose=TRUE) } \keyword{hplot} surveillance/man/twinstim.Rd0000644000175100001440000005463312506243610015716 0ustar hornikusers\encoding{latin1} \name{twinstim} \alias{twinstim} \title{ Fit a Two-Component Spatio-Temporal Point Process Model } \description{ A \code{twinstim} model as described in Meyer et al. (2012) is fitted to marked spatio-temporal point process data. This constitutes a regression approach for conditional intensity function modelling. } \usage{ twinstim(endemic, epidemic, siaf, tiaf, qmatrix = data$qmatrix, data, subset, t0 = data$stgrid$start[1], T = tail(data$stgrid$stop,1), na.action = na.fail, start = NULL, partial = FALSE, epilink = "log", control.siaf = list(F = list(), Deriv = list()), optim.args = list(), finetune = FALSE, model = FALSE, cumCIF = FALSE, cumCIF.pb = interactive(), cores = 1, verbose = TRUE) } \arguments{ \item{endemic}{ right-hand side formula for the exponential (Cox-like multiplicative) endemic component. May contain offsets (to be marked by the special function \code{offset}). If omitted or \code{~0} there will be no endemic component in the model. A type-specific endemic intercept can be requested by including the term \code{(1|type)} in the formula. } \item{epidemic}{ formula representing the epidemic model for the event-specific covariates (marks) determining infectivity. Offsets are not implemented here. If omitted or \code{~0} there will be no epidemic component in the model. } \item{siaf}{ spatial interaction function. Possible specifications are: \itemize{ \item \code{NULL} or missing, corresponding to \code{siaf.constant()}, i.e. spatially homogeneous infectivity independent of the distance from the host \item a list as returned by \code{\link{siaf}} or by a predefined interaction function such as \code{\link{siaf.gaussian}} as in Meyer et al. (2012) or \code{\link{siaf.powerlaw}} as in Meyer and Held (2014) \item a numeric vector corresponding to the knots of a step function, i.e. the same as \code{\link{siaf.step}(knots)} } If you run into \dQuote{false convergence} with a non-constant \code{siaf} specification, the numerical accuracy of the cubature methods is most likely too low (see the \code{control.siaf} argument). } \item{tiaf}{ temporal interaction function. Possible specifications are: \itemize{ \item \code{NULL} or missing, corresponding to \code{tiaf.constant()}, i.e. time-constant infectivity \item a list as returned by \code{\link{tiaf}} or by a predefined interaction function such as \code{\link{tiaf.exponential}} \item a numeric vector corresponding to the knots of a step function, i.e. the same as \code{\link{tiaf.step}(knots)} } } \item{qmatrix}{ square indicator matrix (0/1 or \code{FALSE}/\code{TRUE}) for possible transmission between the event types. The matrix will be internally converted to \code{logical}. Defaults to the \eqn{Q} matrix specified in \code{data}. } \item{data}{ an object of class \code{"\link{epidataCS}"}. } \item{subset}{ an optional vector evaluating to logical indicating a subset of \code{data$events} to keep. Missing values are taken as \code{FALSE}. The expression is evaluated in the context of the \code{data$events@data} \code{data.frame}, i.e. columns of this \code{data.frame} may be referenced directly by name. } \item{t0, T}{ events having occured during (-Inf;t0] are regarded as part of the prehistory \eqn{H_0} of the process. Only events that occured in the interval (t0; T] are considered in the likelihood. The time point \code{t0} (\code{T}) must be an element of \code{data$stgrid$start} (\code{data$stgrid$stop}). The default time range covers the whole spatio-temporal grid of endemic covariates. } \item{na.action}{ how to deal with missing values in \code{data$events}? Do not use \code{\link{na.pass}}. Missing values in the spatio-temporal grid \code{data$stgrid} are not accepted. } \item{start}{ a named vector of initial values for (a subset of) the parameters. The names must conform to the conventions of \code{twinstim} to be assigned to the correct model terms. For instance, \code{"h.(Intercept)"} = endemic intercept, \code{"h.I(start/365)"} = coefficient of a linear time trend in the endemic component, \code{"h.factorB"} = coefficient of the level B of the factor variable \code{factor} in the endemic predictor, \code{"e.(Intercept)"} = epidemic intercept, \code{"e.VAR"} = coefficient of the epidemic term \code{VAR}, \code{"e.siaf.2"} = second \code{siaf} parameter, \code{"e.tiaf.1"} = first \code{tiaf} parameter. Elements which don't match any of the model parameters are ignored. Alternatively, \code{start} may also be a named list with elements \code{"endemic"} or \code{"h"}, \code{"epidemic"} or \code{"e"}, \code{"siaf"} or \code{"e.siaf"}, and \code{"tiaf"} or \code{"e.tiaf"}, each of which containing a named numeric vector with the term labels as names (i.e. without the prefix \code{"h."}, \code{"e."}, etc). Thus, \code{start=list(endemic=c("(Intercept)"=-10))} is equivalent to \code{start=c("h.(Intercept)"=-10)}. } \item{partial}{ logical indicating if a partial likelihood similar to the approach by Diggle et al. (2010) should be used (default is \code{FALSE}). Note that the partial likelihood implementation is not well tested. } \item{epilink}{ a character string determining the link function to be used for the \code{epidemic} linear predictor of event marks. By default, the log-link is used. The experimental alternative \code{epilink = "identity"} (for use by \code{\link{epitest}}) does not guarantee the force of infection to be positive. If this leads to a negative total intensity (endemic + epidemic), the point process is not well defined (the log-likelihood will be \code{\link{NaN}}). } \item{control.siaf}{ a list with elements \code{"F"} and \code{"Deriv"}, which are lists of extra arguments passed to the functions \code{siaf$F} and \code{siaf$Deriv}, respectively.\cr These arguments mainly determine the accuracy of the numerical cubature rules from package \pkg{polyCub} involved in non-constant \code{siaf} specifications, e.g., the bandwidth of the midpoint rule \code{\link{polyCub.midpoint}}, the number of Gaussian quadrature points for \code{\link{polyCub.SV}}, or the relative tolerance of \code{\link{integrate}} in \code{\link{polyCub.iso}}.\cr For instance, \code{\link{siaf.gaussian}()} uses the midpoint-cubature \code{\link{polyCub.midpoint}} with an adaptive bandwidth of \code{eps=adapt*sd} to numerically integrate the kernel \eqn{f(\bold{s})}, and the default \code{adapt} value (0.1) can be overwritten by setting \code{control.siaf$F$adapt}. The default integration method for the derivative of \eqn{f(\bold{s})} wrt the kernel parameters is product Gauss cubature \code{\link{polyCub.SV}} with \code{nGQ=20} univariate Gauss quadrature points. This number can be overwritten by setting \code{control.siaf$Deriv$nGQ}.\cr This argument list is ignored in the case \code{siaf=siaf.constant()} (which is the default if \code{siaf} is unspecified). } \item{optim.args}{ an argument list passed to \code{\link{optim}}, or \code{NULL}, in which case no optimization will be performed but the necessary functions will be returned in a list (similar to what is returned if \code{model = TRUE}). Initial values for the parameters may be given as list element \code{par} in the order \code{(endemic, epidemic, siaf, tiaf)}. If no initial values are provided, a crude estimate for the endemic intercept will be used (see the Examples), but just zeroes for the remaining parameters. However, any initial values given in the \code{start} argument take precedence over those in \code{par}. Note that \code{optim} receives the negative log-likelihood for minimization (thus, if used, \code{optim.args$control$fnscale} should be positive). The \code{hessian} argument defaults to \code{TRUE}, and in the \code{control} list, \code{trace}ing is enabled with \code{REPORT=1} by default. By setting \code{optim.args$control$trace = 0}, all output from the optimization routine is suppressed. For the \code{partial} likelihood, the analytic score function and the Fisher information are not implemented and the default is to use robust \code{method="Nelder-Mead"} optimization. There may be an extra component \code{fixed} in the \code{optim.args} list, which determines which parameters should stick to their initial values. This can be specified by a logical vector of the same length as the \code{par} component, by an integer vector indexing \code{par} or by a character vector following the \code{twinstim} naming conventions. Furthermore, if \code{isTRUE(fixed)}, then all parameters are fixed at their initial values and no optimization is performed. Importantly, the \code{method} argument in the \code{optim.args} list may also be \code{"nlminb"}, in which case the \code{\link{nlminb}} optimizer is used. This is also the default for full likelihood inference. In this case, not only the score function but also the \emph{expected} Fisher information can be used during optimization (as estimated by what Martinussen and Scheike (2006, p. 64) call the \dQuote{optional variation process}, or see Rathbun (1996, equation (4.7))). In our experience this gives better convergence than \code{optim}'s methods. For \code{method="nlminb"}, the following parameters of the \code{optim.args$control} list may be named like for \code{optim} and are renamed appropriatly: \code{maxit} (-> \code{iter.max}), \code{REPORT} (-> \code{trace}, default: 1), \code{abstol} (-> \code{abs.tol}), and \code{reltol} (-> \code{rel.tol}, default: \code{1e-6}). For \code{nlminb}, a logical \code{hessian} argument (default: \code{TRUE}) indicates if the negative \emph{expected} Fisher information matrix should be used as the Hessian during optimization (otherwise a numerical approximation is used). Similary, \code{method="nlm"} should also work but is not recommended here. } \item{finetune}{ logical indicating if a second maximisation should be performed with robust Nelder-Mead \code{optim} using the resulting parameters from the first maximisation as starting point. This argument is only considered if \code{partial = FALSE} and the default is to not conduct a second maximization (in most cases this does not improve upon the MLE). } \item{model}{ logical indicating if the model environment should be kept with the result, which is required for \code{\link[=intensityplot.twinstim]{intensityplot}}s and \code{\link[=R0.twinstim]{R0}(..., trimmed = FALSE)}. Specifically, if \code{model=TRUE}, the return value will have the evaluation environment set as its \code{\link{environment}}, and the returned \code{functions} element will contain the log-likelihood function (or partial log-likelihood function, if \code{partial = TRUE}), and optionally the score and the expected Fisher information functions (not for the partial likelihood, and only if \code{siaf} and \code{tiaf} provide the necessary derivatives).\cr Note that fitted objects with a model environment might consume quiet a lot of memory since they contain the \code{data}. } \item{cumCIF}{ logical (default: \code{FALSE}) indicating whether to calculate the fitted cumulative ground intensity at event times. This is the residual process, see \code{\link{residuals.twinstim}}. } \item{cumCIF.pb}{ logical indicating if a progress bar should be shown during the calculation of \code{cumCIF}. Defaults to do so in an interactive \R session, and will be \code{FALSE} if \code{cores != 1}. } \item{cores}{ number of processes to use in parallel operation. By default \code{twinstim} runs in single-CPU mode. Currently, only the \pkg{multicore}-type of parallel computing via forking is supported, which is not available on Windows, see \code{\link[parallel]{mclapply}} in package \pkg{parallel}. Note that for a \pkg{memoise}d \code{\link{siaf.step}} kernel, \code{cores=1} is fixed internally since parallelization would slow down model fitting significantly. } \item{verbose}{ logical indicating if information should be printed during execution. Defaults to \code{TRUE}. } } \details{ The function performs maximum likelihood inference for the additive-multiplicative spatio-temporal intensity model described in Meyer et al. (2012). It uses \code{\link{nlminb}} as the default optimizer and returns an object of class \code{twinstim}. Such objects have \code{print}, \code{\link[=plot.twinstim]{plot}} and \code{\link[=summary.twinstim]{summary}} methods. The output of the \code{summary} can be processed by the \code{\link[=toLatex.summary.twinstim]{toLatex}} function. Furthermore, the usual model fit methods such as \code{coef}, \code{vcov}, \code{logLik}, \code{\link[=residuals.twinstim]{residuals}}, and \code{update} are implemented. A specific add-on is the use of the functions \code{\link{R0}} and \code{\link[=simulate.twinstim]{simulate}}. } \value{ Returns an S3 object of class \code{"twinstim"}, which is a list with the following components: \item{coefficients}{vector containing the MLE.} \item{loglik}{value of the log-likelihood function at the MLE with a logical attribute \code{"partial"} indicating if the partial likelihood was used.} \item{counts}{number of log-likelihood and score evaluations during optimization.} \item{converged}{either \code{TRUE} (if the optimizer converged) or a character string containing a failure message.} \item{fisherinfo}{\emph{expected} Fisher information evaluated at the MLE. Only non-\code{NULL} for full likelihood inference (\code{partial = FALSE}) and if spatial and temporal interaction functions are provided with their derivatives.} \item{fisherinfo.observed}{observed Fisher information matrix evaluated at the value of the MLE. Obtained as the negative Hessian. Only non-\code{NULL} if \code{optim.args$method} is not \code{"nlminb"} and if it was requested by setting \code{hessian=TRUE} in \code{optim.args}.} \item{fitted}{fitted values of the conditional intensity function at the events.} \item{fittedComponents}{two-column matrix with columns \code{"h"} and \code{"e"} containing the fitted values of the endemic and epidemic components, respectively.\cr (Note that \code{rowSums(fittedComponents) == fitted}.)} \item{tau}{fitted cumulative ground intensities at the event times. Only non-\code{NULL} if \code{cumCIF = TRUE}. This is the \dQuote{residual process} of the model, see \code{\link{residuals.twinstim}}.} \item{R0}{estimated basic reproduction number for each event. This equals the spatio-temporal integral of the epidemic intensity over the observation domain (t0;T] x W for each event.} \item{npars}{vector describing the lengths of the 5 parameter subvectors: endemic intercept(s) \eqn{\beta_0(\kappa)}, endemic coefficients \eqn{\beta}, epidemic coefficients \eqn{\gamma}, parameters of the \code{siaf} kernel, and parameters of the \code{tiaf} kernel.} \item{qmatrix}{the \code{qmatrix} associated with the epidemic \code{data} as supplied in the model call.} \item{bbox}{the bounding box of \code{data$W}.} \item{timeRange}{the time range used for fitting: \code{c(t0,T)}.} \item{formula}{a list containing the four main parts of the model specification: \code{endemic}, \code{epidemic}, \code{siaf}, and \code{tiaf}.} \item{control.siaf}{see the \dQuote{Arguments} section above.} \item{optim.args}{input optimizer arguments used to determine the MLE.} \item{functions}{if \code{model=TRUE} this is a \code{list} with components \code{ll}, \code{sc} and \code{fi}, which are functions evaluating the log-likelihood, the score function and the expected Fisher information for a parameter vector \eqn{\theta}. The \code{environment} of these function is the model environment, which is thus retained in the workspace if \code{model=TRUE}. Otherwise, the \code{functions} component is \code{NULL}.} \item{call}{the matched call.} \item{runtime}{the \code{\link{proc.time}}-queried time taken to fit the model, i.e., a named numeric vector of length 5 of class \code{"proc_time"}, with the number of \code{cores} set as additional attribute.} If \code{model=TRUE}, the model evaluation environment is assigned to this list and can thus be queried by calling \code{environment()} on the result. } \note{ \code{twinstim} makes use of the \pkg{memoise} package if it is available -- and that is highly recommended for non-constant \code{siaf} specifications to speed up calculations. Specifically, the necessary numerical integrations of the spatial interaction function will be cached such that they are only calculated once for every state of the \code{siaf} parameters during optimization. } \references{ Diggle, P. J., Kaimi, I. & Abellana, R. (2010): Partial-likelihood analysis of spatio-temporal point-process data. \emph{Biometrics}, \bold{66}, 347-354. Martinussen, T. and Scheike, T. H. (2006): Dynamic Regression Models for Survival Data. Springer. Meyer, S. (2010): Spatio-Temporal Infectious Disease Epidemiology based on Point Processes. Master's Thesis, Ludwig-Maximilians-Universit\enc{ä}{ae}t M\enc{ü}{ue}nchen.\cr Available as \url{http://epub.ub.uni-muenchen.de/11703/} Meyer, S., Elias, J. and H\enc{ö}{oe}hle, M. (2012): A space-time conditional intensity model for invasive meningococcal disease occurrence. \emph{Biometrics}, \bold{68}, 607-616.\cr DOI-Link: \url{http://dx.doi.org/10.1111/j.1541-0420.2011.01684.x} Meyer, S. and Held, L. (2014): Power-law models for infectious disease spread. \emph{The Annals of Applied Statistics}, \bold{8} (3), 1612-1639.\cr DOI-Link: \url{http://dx.doi.org/10.1214/14-AOAS743} Rathbun, S. L. (1996): Asymptotic properties of the maximum likelihood estimator for spatio-temporal point processes. \emph{Journal of Statistical Planning and Inference}, \bold{51}, 55-74. } \author{ Sebastian Meyer Contributions to this documentation by Michael H\enc{ö}{oe}hle and Mayeul Kauffmann. } \seealso{ \code{\link{twinSIR}} for a discrete space alternative. There is also a \code{\link{simulate.twinstim}} method, which simulates the point process based on the fitted \code{twinstim}. } \examples{ # Load invasive meningococcal disease data data("imdepi") ### first, fit a simple endemic-only model m_noepi <- twinstim( endemic = addSeason2formula(~ offset(log(popdensity)) + I(start/365-3.5), S=1, period=365, timevar="start"), data = imdepi, subset = !is.na(agegrp) ) ## look at the model summary summary(m_noepi) ## there is no evidence for a type-dependent endemic intercept (LR test) m_noepi_type <- update(m_noepi, endemic = ~(1|type) + .) pchisq(2*c(logLik(m_noepi_type)-logLik(m_noepi)), df=1, lower.tail=FALSE) ### add an epidemic component with just the intercept, i.e. ### assuming uniform dispersal in time and space up to a distance of ### eps.s = 200 km and eps.t = 30 days (see summary(imdepi)) m0 <- update(m_noepi, epidemic=~1, start=c("e.(Intercept)"=-18), model=TRUE) ## summarize the model fit s <- summary(m0, correlation = TRUE, symbolic.cor = TRUE) s # output the table of coefficients as LaTeX code toLatex(s, digits=2) # or, to report rate ratios xtable(s) ## the default confint-method can be used for Wald-CI's confint(m0, level=0.95) ## same "untrimmed" R0 for every event (simple epidemic intercept model) summary(R0(m0, trimmed=FALSE)) ## plot the path of the fitted total intensity plot(m0, "total intensity", tgrid=500) ## the remaining examples are more time-consuming if (surveillance.options("allExamples")) { ## NB: in contrast to using nlminb() optim's BFGS would miss the ## likelihood maximum wrt the epidemic intercept if starting at -10 m0_BFGS <- update(m_noepi, epidemic=~1, start=c("e.(Intercept)"=-10), optim.args = list(method="BFGS")) format(cbind(nlminb=coef(m0), BFGS=coef(m0_BFGS)), digits=3, scientific=FALSE) m0_BFGS$fisherinfo # singular Fisher information matrix here m0$fisherinfo logLik(m0_BFGS) logLik(m0) ## nlminb is more powerful since we make use of the analytical fisherinfo ## as estimated by the model during optimization, which optim cannot ## extract "residual process" integrating over space (takes some seconds) res <- residuals(m0) # if the model describes the true CIF well _in the temporal dimension_, # then this residual process should behave like a stationary Poisson # process with intensity 1 plot(res, type="l"); abline(h=c(0, length(res)), lty=2) # -> use the function checkResidualProcess checkResidualProcess(m0) ## estimate an exponential temporal decay of infectivity m1_tiaf <- update(m0, tiaf=tiaf.exponential()) plot(m1_tiaf, "tiaf", scaled=FALSE) ## estimate a step function for spatial interaction m1_fstep <- update(m0, siaf=c(5,10,25,50)) plot(m1_fstep, "siaf", scaled=FALSE) ## estimate a continuously decreasing spatial interaction function, where ## likelihood evaluation takes much longer than for (piecewise) constant ## spatial spread; here we use the kernel of an isotropic bivariate ## Gaussian with a standard deviation of exp(2.8) = 16.4 km for both ## finetypes (fixed to speed up the example) m1 <- update(m0, siaf = siaf.gaussian(1, F.adaptive = TRUE), start = c("e.siaf.1" = 2.8), # sigma = exp(2.8) = 16.4 km optim.args = list(fixed="e.siaf.1"), control.siaf = list(F=list(adapt=0.25)) # use adaptive eps=sigma/4 ) AIC(m_noepi, m0, m1) # further improvement summary(m1, test.iaf=FALSE) # nonsense to test H0: log(sigma) = 0 plot(m1, "siaf", scaled=FALSE) ## add epidemic covariates m2 <- update(m1, epidemic = ~ 1 + type + agegrp) AIC(m1, m2) # further improvement summary(m2) ## look at estimated R0 values by event type tapply(R0(m2), imdepi$events@data[names(R0(m2)), "type"], summary) } } \keyword{models} \keyword{optimize} surveillance/man/meanResponse.Rd0000644000175100001440000001261411770111463016472 0ustar hornikusers\name{meanResponse} \alias{meanResponse} \encoding{latin1} \title{Calculate mean response needed in algo.hhh} \description{ Calculates the mean response for the model specified in designRes according to equations (1.2) and (1.1) in Held et al. (2005) for univariate time series and equations (3.3) and (3.2) (with extensions given in equations (2) and (4) in Paul et al., 2008) for multivariate time series. See details. } \usage{ meanResponse(theta, designRes) } \arguments{ \item{theta}{vector of parameters \eqn{\theta = (\alpha_1,\ldots,\alpha_m, \bold{\lambda}, \bold{\phi}, \bold{\beta}, \bold{\gamma}_1, \ldots, \bold{\gamma}_m, \bold{\psi}),}{\theta = (\alpha_1,\ldots,\alpha_m, \lambda, \phi, \beta, \gamma_1, \ldots, \gamma_m, \psi),} where \eqn{\bold{\lambda}=(\lambda_1,\ldots,\lambda_m)}{\lambda=(\lambda_1,\ldots,\lambda_m)}, \eqn{\bold{\phi}=(\phi_1,\ldots,\phi_m)}{\phi=(\phi_1,\ldots,\phi_m)}, \eqn{\bold{\beta}=(\beta_1,\ldots,\beta_m)}{\beta=(\beta_1,\ldots,\beta_m)}, \eqn{\bold{\gamma_1}=(\gamma_{11},\ldots,\gamma_{1,2S_1})}{\gamma_1=(\gamma_11,\ldots,\gamma_(1,2S_1))}, \eqn{\bold{\gamma_m}=(\gamma_{m1},\ldots,\gamma_{m,2S_m})}{\gamma_m=(\gamma_m1,\ldots,\gamma_(m,2S_m))}, \eqn{\bold{\psi}=(\psi_1,\ldots,\psi_m)}{\psi=(\psi_1,\ldots,\psi_m)}. If the model specifies less parameters, those components are omitted.} \item{designRes}{Result of a call to \code{make.design} } } \details{ Calculates the mean response for a Poisson or a negative binomial model with mean \deqn{\mu_t = \lambda y_{t-lag} + \nu_t }{\mu_t = \lambda y_t-lag + \nu_t } where \deqn{\log( \nu_t) = \alpha + \beta t + \sum_{j=1}^{S}(\gamma_{2j-1} \sin(\omega_j t) + \gamma_{2j} \cos(\omega_j t) ) }{ log(\nu_t) = \alpha + \beta t + \sum_(j=1)^S (\gamma_(2j-1) * \sin(\omega_j * t) + \gamma_2j * \cos(\omega_j * t) ) } and \eqn{\omega_j = 2\pi j/period }{\omega_j = 2 * \pi * j / period} are Fourier frequencies with known period, e.g. \code{period}=52 for weekly data, for a univariate time series. Per default, the number of cases at time point \eqn{t-1}, i.e. \eqn{lag=1}, enter as autoregressive covariates into the model. Other lags can also be considered. The seasonal terms in the predictor can also be expressed as \eqn{\gamma_{s} \sin(\omega_s t) + \delta_{s} \cos(\omega_s t) = A_s \sin(\omega_s t + \epsilon_s)}{ \gamma_s sin(\omega_s * t) + \delta_s cos(\omega_s * t) = A_s sin(\omega_s * t + \epsilon_s)} with amplitude \eqn{A_s=\sqrt{\gamma_s^2 +\delta_s^2}}{A_s=sqrt{\gamma_s^2 +\delta_s^2}} and phase difference \eqn{\tan(\epsilon_s) = \delta_s / \gamma_s}. The amplitude and phase shift can be obtained from a fitted model by specifying \code{amplitudeShift=TRUE} in the \code{coef} method. For multivariate time series the mean structure is \deqn{\mu_{it} = \lambda_i y_{i,t-lag} + \phi_i \sum_{j \sim i} w_{ji} y_{j,t-lag} + n_{it} \nu_{it}}{ \mu_it = \lambda_i * y_i,t-lag + \phi_i * \sum_(j ~ i) w_ji * y_j,t-lag + n_it * \nu_it } where \deqn{\log(\nu_{it}) = \alpha_i + \beta_i t + \sum_{j=1}^{S_i} (\gamma_{i,2j-1} \sin(\omega_j t) + \gamma_{i,2j} \cos(\omega_j t) ) }{ log(\nu_it) = \alpha_i + \beta_i * t + \sum_(j=1)^S_i (\gamma_(i,2j-1) * \sin(\omega_j * t) + \gamma_(i,2j) * \cos(\omega_j * t) ) } and \eqn{n_{it}}{n_it} are standardized population counts. The weights \eqn{w_{ji}}{w_ji} are specified in the columns of the neighbourhood matrix \code{disProgObj$neighbourhood}. Alternatively, the mean can be specified as \deqn{\mu_{it} = \lambda_i \pi_i y_{i,t-1} + \sum_{j \sim i} \lambda_j (1-\pi_j)/ |k \sim j| y_{j,t-1} + n_{it} \nu_{it}}{ \mu_it = \lambda_i *\pi_i * y_i,t-1 + \sum_(j ~ i) \lambda_j *(1-\pi_j)/|k ~ j| * y_j,t-1 + n_it * \nu_it } if \code{proportion}="single" ("multiple") in \code{designRes$control}. Note that this model specification is still experimental. } \value{ Returns a \code{list} with elements \item{mean}{matrix of dimension \eqn{n \times m}{n x m} with the calculated mean response for each time point and unit, where \eqn{n} is the number of time points and \eqn{m} is the number of units. } \item{epidemic}{matrix with the epidemic part \eqn{ \lambda_i y_{i,t-1} + \phi_i \sum_{j \sim i} y_{j,t-1}}{ \lambda_i * y_i,t-1 + \phi_i * \sum_(j ~ i) y_j,t-1} } \item{endemic}{matrix with the endemic part of the mean \eqn{ n_{it} \nu_{it} }{ n_it*nu_it } } \item{epi.own}{matrix with \eqn{ \lambda_i y_{i,t-1} }{\lambda_i * y_i,t-1} } \item{epi.neighbours}{matrix with \eqn{\phi_i \sum_{j \sim i} y_{j,t-1}}{ \phi_i * \sum_(j ~ i) y_j,t-1} } } \author{M. Paul, L. Held} %\keyword{models} \keyword{internal} \references{ Held, L., \enc{Höhle}{Hoehle}, M., Hofmann, M. (2005) A statistical framework for the analysis of multivariate infectious disease surveillance counts, Statistical Modelling, \bold{5}, 187--199. Paul, M., Held, L. and Toschke, A. M. (2008) Multivariate modelling of infectious disease surveillance data, Statistics in Medicine, \bold{27}, 6250--6267. } surveillance/man/boda.Rd0000755000175100001440000001046312477563710014756 0ustar hornikusers\name{boda} \alias{boda} \encoding{latin1} \title{Surveillance for an univariate count data time series using the Bayesian Outbreak Detection Algorithm (BODA) described in Manitz and \enc{Höhle}{Hoehle} (2013)} \description{ % The function takes \code{range} values of the surveillance time series \code{sts} and for each time point uses a negative binomial regression model to compute the predictive posterior distribution for the current observation. The \eqn{(1-\alpha)\cdot 100\%}{(1-alpha)*100} quantile of this predictive distribution is then used as bound: If the actual observation is above the bound an alarm is raised. % } \usage{ boda(sts, control=list(range=NULL, X=NULL, trend=FALSE, season=FALSE, prior=c('iid','rw1','rw2'), alpha=0.05, mc.munu=100, mc.y=10, verbose=FALSE,multicore=TRUE, samplingMethod=c('joint','marginals'))) } \arguments{ \item{sts}{object of class sts (including the \code{observed} and the \code{state} time series)} \item{control}{Control object given as a \code{list} containing the following components: \describe{ \item{\code{range}}{Specifies the index of all timepoints which should be tested. If range is \code{NULL} all possible timepoints are used.} \item{\code{X}}{} \item{\code{trend}}{Boolean indicating whether a linear trend term should be included in the model for the expectation the log-scale} \item{\code{season}}{Boolean to indicate wheather a cyclic spline should be included.} \item{\code{alpha}}{The threshold for declaring an observed count as an aberration is the \eqn{(1-\alpha)\cdot 100\%}{(1-alpha)*100\%} quantile of the predictive posterior.} \item{\code{mc.munu}}{} \item{\code{mc.y}}{Number of samples of \eqn{y}{y} to generate for each par of the mean and size parameter. A total of \eqn{mc.munu \times mc.y}{mc.munu*mc.y} samples are generated.} \item{\code{verbose}}{Argument sent to the inla call. When using ESS it might be necessary to force verbose mode for INLA to work.} \item{\code{multicore}}{Detect using \code{parallel::detectCores} how many logical cores are available and set INLA to use this number.} \item{\code{samplingMethod}}{Should one sample from the parameters joint distribution (joint) or from their respective marginal posterior distribution (marginals)?} } } } \details{ Note: This function requires presence of the INLA R package, which is NOT available from CRAN. It can can be downloaded by calling \code{source("http://www.math.ntnu.no/inla/givemeINLA.R")} as described in detail at \url{http://www.r-inla.org/download}. WARNING: This function is currently experimental!! It also heavily depends on the INLA package so changes here might affect the operational ability of the function. Since the computations for the Bayesian GAM are quite involved do not expected this function to be particularly fast. Future work could focus on improving the speed, e.g. one issue would be to make the inference work in sequential fashion. } \keyword{classif} \examples{ #Load the campylobacteriosis data for Germany data("campyDE") #Make an sts object from the data.frame cam.sts <- new("sts",epoch=as.numeric(campyDE$date),observed=campyDE$case, state=campyDE$state, epochAsDate=TRUE) \dontrun{ #Define monitoring period # range <- which(epoch(cam.sts)>=as.Date("2007-01-01")) # range <- which(epoch(cam.sts)>=as.Date("2011-12-10")) range <- tail(1:nrow(cam.sts),n=2) control <- list(range=range, X=NULL, trend=TRUE, season=TRUE, prior='iid', alpha=0.025, mc.munu=100, mc.y=10, samplingMethod = "joint") #Apply the boda algorithm in its simples form, i.e. spline is #described by iid random effects and no extra covariates library("INLA") # needs to be attached cam.boda1 <- boda(cam.sts, control=control) if(!inherits(cam.boda1,'try-error')){ plot(cam.boda1,xlab='time [weeks]', ylab='No. reported',dx.upperbound=0) } } } \author{J. Manitz, M. \enc{Höhle}{Hoehle}, M. Salmon} \references{ Bayesian model algorithm for monitoring reported cases of campylobacteriosis in Germany (2013), Manitz J and \enc{Höhle}{Hoehle} M, Biometrical Journal, 55(4), pp. 509 526. } surveillance/man/algo.quality.Rd0000644000175100001440000000454311731650466016456 0ustar hornikusers\name{algo.quality} \alias{algo.quality} \title{Computation of Quality Values for a Surveillance System Result} \description{Computation of the quality values for a surveillance System output. } \usage{ algo.quality(survResObj, penalty = 20) } \arguments{ \item{survResObj}{object of class survRes, which includes the state chain and the computed alarm chain} \item{penalty}{the maximal penalty for the lag} } \value{ \item{list of quality values}{ \itemize{ \item TP: Number of correct found outbreaks. \item FP: Number of false found outbreaks. \item TN: Number of correct found non outbreaks. \item FN: Number of false found non outbreaks. \item sens: True positive rate, meaning TP/(FN + TP). \item spec: True negative rate, meaning TN/(TN + FP). \item dist: Euclidean distance between (1-spec, sens) to (0,1). \item lag: Lag of the outbreak recognizing by the system. } } } \details{ The lag is defined as follows: In the state chain just the beginnings of an outbreak chain (outbreaks directly following each other) are considered. In the alarm chain, the range from the beginning of an outbreak until \eqn{min(next outbreak beginning,\code{penalty})} timepoints is considered. The \code{penalty} timepoints were chosen, to provide an upper bound on the penalty for not discovering an outbreak. Now the difference between the first alarm by the system and the defined beginning is denoted ``the lag'' Additionally outbreaks found by the system are not punished. At the end, the mean of the lags for every outbreak chain is returned as summary lag. } \seealso{\code{\link{algo.compare}}} \examples{ # Create a test object disProgObj <- sim.pointSource(p = 0.99, r = 0.5, length = 200, A = 1, alpha = 1, beta = 0, phi = 0, frequency = 1, state = NULL, K = 1.7) # Let this object be tested from rki1 survResObj <- algo.rki1(disProgObj, control = list(range = 50:200)) # Compute the quality values algo.quality(survResObj) } \keyword{misc} surveillance/man/sts_animate.Rd0000644000175100001440000001005712574334216016347 0ustar hornikusers\name{sts_animate} \alias{animate.sts} \title{ Animated Maps and Time Series of Disease Incidence } \description{ The \code{animate}-method for \code{\linkS4class{sts}} objects supersedes the \code{\link{stsplot}} type \code{observed~1|unit*time} implemented by the function \code{\link{stsplot_spacetime}}. Maps generated by \code{\link{stsplot_space}} are sequentially plotted along time (optionally showing cumulative counts), with an optional time series chart below the map to track the epidemic curve. It is worth using functionality of the \pkg{animation} package (e.g., \code{\link[animation]{saveHTML}}) to directly export the animation into a useful format. See Meyer and Held (2014, Supplement A) for an example with the \code{\link{fluBYBW}} data. } \usage{ \method{animate}{sts}(object, tps = NULL, cumulative = FALSE, population = NULL, at = 10, ..., timeplot = list(height = 0.3), sleep = 0.5, verbose = interactive(), draw = TRUE) } \arguments{ \item{object}{ an object of class \code{"\linkS4class{sts}"} or a matrix of counts, i.e., \code{observed(stsObj)}, where especially \code{colnames(x)} have to be contained in \code{row.names(map)}. If a matrix, the \code{map} object has to be provided explicitly (as part of \code{\dots}). } \item{tps}{ a numeric vector of one or more time points at which to plot the map. The default \code{tps=NULL} means the whole time period \code{1:nrow(object)}. } \item{cumulative}{ logical specifying if the cumulative counts over time should be plotted. } \item{population,at,\dots}{ arguments for \code{\link{stsplot_space}}. } \item{timeplot}{ if a list (of arguments for the internal function \code{stsplot_timeSimple}) and package \pkg{gridExtra} is available, a time series chart of the counts along the selected time points \code{tps} will be plotted below the map. The argument \code{height} gives the relative height of the time series plot (default: 0.3), and the arguments \code{inactive} and \code{active} are lists of graphical parameters (e.g., \code{col}) determining the appearance of the bars (e.g., default color is grey when inactive and black when active). } \item{sleep}{ time to wait (\code{Sys.sleep}) between subsequent snapshots (only if \code{\link{dev.interactive}}), in seconds. } \item{verbose}{ logical indicating if a \code{\link{txtProgressBar}} should be shown during generation of the animation -- which may take a while. Default is to do so in \code{\link{interactive}} sessions. } \item{draw}{ logical indicating if the produced plots at each time point should be drawn directly (the default) or not. The setting \code{draw = FALSE} is useful if one would like to manually arrange the plots, which are always returned invisibly in a list of length \code{length(tps)}. } } \value{ (invisibly) a list of the \code{length(tps)} sequential plot objects of class \code{"\code{\link[gtable]{gtable}}"} (if the the \code{timeplot} is active) or of class \code{"\code{\link[=trellis.object]{trellis}"} (otherwise). } \references{ Meyer, S. and Held, L. (2014): Power-law models for infectious disease spread. \emph{The Annals of Applied Statistics}, \bold{8} (3), 1612-1639.\cr DOI-Link: \url{http://dx.doi.org/10.1214/14-AOAS743}\cr Supplement A is available from \url{http://www.biostat.uzh.ch/static/powerlaw/}. } \author{ Sebastian Meyer } \seealso{ the other plot types documented in \code{\link{stsplot}} for static time series plots and maps. } \examples{ data("measlesWeserEms") ## sequential plot of the counts by region in weeks 12-16 only (for speed) if (require("animation")) { oldwd <- setwd(tempdir()) # to not clutter up the current working dir saveHTML(animate(measlesWeserEms, tps=12:16, cumulative=FALSE), title="Evolution of the measles epidemic in the Weser-Ems region", ani.width=500, ani.height=600) setwd(oldwd) } } \keyword{hplot} \keyword{dynamic} \keyword{spatial} surveillance/man/multiplicity.Spatial.Rd0000644000175100001440000000326512414600771020162 0ustar hornikusers\name{multiplicity.Spatial} \alias{multiplicity.Spatial} \title{ Count Number of Instances of Points } \description{ The generic function \code{multiplicity} defined in \pkg{spatstat} is intended to count the number of duplicates of each element of an object. \pkg{spatstat} already offers methods for point patterns, matrices and data frames, and here we add a method for \code{Spatial} objects from the \pkg{sp} package. It is a wrapper for the default method, which effectively computes the distance matrix of the points, and then just counts the number of zeroes in each row. } \usage{ \method{multiplicity}{Spatial}(x) } \arguments{ \item{x}{ %% an object, for which a \code{multiplicity} method is defined, e.g. %% a numeric matrix (or anything coercible to it by \code{as.matrix}) a \code{"\linkS4class{Spatial}"} object (we only need a \code{\link{coordinates}}-method), e.g. of class \code{"\linkS4class{SpatialPoints}"}. } } \value{ an integer vector containing the number of instances of each point of the object. } \seealso{ \code{\link[spatstat]{multiplicity}} in package \pkg{spatstat}. See the Examples of the \code{\link{hagelloch}} data for a specific use of \code{multiplicity}. } \examples{ foo <- SpatialPoints(matrix(c(1,2, 2,3, 1,2, 4,5), 4, 2, byrow=TRUE)) multiplicity(foo) # the following function determines the multiplicities in a matrix # or data frame and returns unique rows with appended multiplicity countunique <- function(x) unique(cbind(x, count=multiplicity(x))) countunique(coordinates(foo)) } \keyword{utilities} \keyword{spatial} surveillance/man/farringtonFlexible.Rd0000644000175100001440000002572712553173352017675 0ustar hornikusers\name{farringtonFlexible} \alias{farringtonFlexible} \encoding{latin1} \title{Surveillance for an univariate count data time series using the improved Farrington method described in Noufaily et al. (2012).} \description{ % The function takes \code{range} values of the surveillance time series \code{sts} and for each time point uses a Poisson GLM with overdispersion to predict an upper bound on the number of counts according to the procedure by Farrington et al. (1996) and by Noufaily et al. (2012). This bound is then compared to the observed number of counts. If the observation is above the bound, then an alarm is raised. % } \usage{ farringtonFlexible(sts, control = list(range = NULL, b = 3, w = 3, reweight = TRUE, weightsThreshold = 2.58, verbose = FALSE,glmWarnings = TRUE, alpha = 0.01, trend = TRUE, pThresholdTrend = 0.05, limit54=c(5,4), powertrans="2/3", fitFun="algo.farrington.fitGLM.flexible", populationOffset = FALSE, noPeriods = 1, pastWeeksNotIncluded = 26, thresholdMethod = "delta")) } \arguments{ \item{sts}{object of class sts (including the \code{observed} and the \code{state} time series)} \item{control}{Control object given as a \code{list} containing the following components: \describe{ \item{\code{range}}{Specifies the index of all timepoints which should be tested. If range is \code{NULL} all possible timepoints are used.} \item{\code{b}}{How many years back in time to include when forming the base counts.} \item{\code{w}}{Window's half-size, i.e. number of weeks to include before and after the current week in each year.} \item{\code{reweight}}{Boolean specifying whether to perform reweighting step.} \item{\code{weightsThreshold}}{Defines the threshold for reweighting past outbreaks using the Anscombe residuals (1 in the original method, 2.58 advised in the improved method).} \item{\code{verbose}}{Boolean specifying whether to show extra debugging information.} \item{\code{glmWarnings}}{Boolean specifying whether to print warnings from the call to \code{glm}.} \item{\code{alpha}}{An approximate (one-sided) \eqn{(1-\alpha)\cdot 100\%} prediction interval is calculated unlike the original method where it was a two-sided interval. The upper limit of this interval i.e. the \eqn{(1-\alpha)\cdot 100\%} quantile serves as an upperbound.} \item{\code{trend}}{Boolean indicating whether a trend should be included and kept in case the conditions in the Farrington et. al. paper are met (see the results). If \code{false} then NO trend is fit.} \item{\code{pThresholdTrend}}{Threshold for deciding whether to keep trend in the model (0.05 in the original method, 1 advised in the improved method).} \item{\code{limit54}}{Vector containing two numbers: \code{cases} and \code{period}. To avoid alarms in cases where the time series only has about almost no cases in the specific week the algorithm uses the following heuristic criterion (see Section 3.8 of the Farrington paper) to protect against low counts: no alarm is sounded if fewer than \eqn{\code{cases}=5} reports were received in the past \eqn{\code{period}=4} weeks. \code{limit54=c(cases,period)} is a vector allowing the user to change these numbers. Note: As of version 0.9-7 of the package the term "last" period of weeks includes the current week - otherwise no alarm is sounded for horrible large numbers if the four weeks before that are too low.} \item{\code{powertrans}}{Power transformation to apply to the data if the threshold is to be computed with the method described in Farrington et al. (1996. Use either "2/3" for skewness correction (Default), "1/2" for variance stabilizing transformation or "none" for no transformation.} \item{\code{fitFun}}{String containing the name of the fit function to be used for fitting the GLM. The only current option is "algo.farrington.fitGLM.flexible".} \item{\code{populationOffset}}{Boolean specifying whether to include a population offset in the GLM. The slot \code{sts@population} gives the population vector.} \item{\code{noPeriods}}{Number of levels in the factor allowing to use more baseline. If equal to 1 no factor variable is created, the set of reference values is defined as in Farrington et al (1996).} \item{\code{pastWeeksNotIncluded}}{Number of past weeks to ignore in the calculation.} \item{\code{thresholdMethod}}{Method to be used to derive the upperbound. Options are "delta" for the method described in Farrington et al. (1996), "Noufaily" for the method described in Noufaily et al. (2012), and "muan" for the method extended from Noufaily et al. (2012).} } } } \details{ The following steps are perfomed according to the Farrington et al. (1996) paper. \enumerate{ \item Fit of the initial model with intercept, time trend if \code{trend} is \code{TRUE}, seasonal factor variable if \code{noPeriod} is bigger than 1, and population offset if \code{populationOffset} is \code{TRUE}. Initial estimation of mean and overdispersion. \item Calculation of the weights omega (correction for past outbreaks) if \code{reweighting} is \code{TRUE}. The threshold for reweighting is defined in \code{control}. \item Refitting of the model \item Revised estimation of overdispersion \item Omission of the trend, if it is not significant \item Repetition of the whole procedure \item Calculation of the threshold value using the model to compute a quantile of the predictive distribution. The method used depends on \code{thresholdMethod}, this can either be: \describe{ \item{"delta"}{One assumes that the prediction error (or a transformation of the prediction error, depending on \code{powertrans}), is normally distributed. The threshold is deduced from a quantile of this normal distribution using the variance and estimate of the expected count given by GLM, and the delta rule. The procedure takes into account both the estimation error (variance of the estimator of the expected count in the glm) and the prediction error (variance of the prediction error). This is the suggestion in Farrington et al. (1996).} \item{"nbPlugin"}{One assumes that the new count follows a negative binomial distribution parameterized by the expected count and the overdispersion estimated in the GLM. The threshold is deduced from a quantile of this discrete distribution. This process disregards the estimation error, though. This method was used in Noufaily, et al. (2012).} \item{"muan"}{One also uses the assumption of the negative binomial sampling distribution but does not plug in the estimate of the expected count from the GLM, instead one uses a quantile from the asymptotic normal distribution of the expected count estimated in the GLM; in order to take into account both the estimation error and the prediction error. } } \item Computation of exceedance score } Warning: monthly data containing the last day of each month as date should be analysed with \code{epochAsDate=FALSE} in the \code{sts} object. Otherwise February makes it impossible to find some reference time points. } \value{ An object of class \code{sts} with the slots \code{upperbound} and \code{alarm} filled by appropriate output of the algorithm. The slot \code{control} is the usual list but with more items all of length \code{length(range)}: \describe{ \item{trend}{ is a vector of Booleans indicating whether a time trend was fitted for this time point.} \item{trendVector}{ is a vector giving the coefficient of the time trend in the GLM for this time point. If no trend was fitted it is equal to NA.} \item{pvalue}{ is a vector giving the probability of observing a value at least equal to the observation under the null hypothesis .} \item{expected}{is a vector giving the expectation of the predictive distribution for each timepoint. It is only reported if the conditions for raising an alarm are met, e.g enoughCases.} \item{mu0Vector}{ is a vector giving what is inputed in the negative binomial distribution to get the upperbound as a quantile (either a plug-in from the glm or a quantile from the asymptotic normal distribution of the estimator)} \item{phiVector}{ is a vector giving the overdispersion of the glm at each timepoint.} } } \keyword{classif} \examples{ ### DATA I/O ### #Read Salmonella Agona data data("salmonella.agona") # Create the corresponding sts object from the old disProg object salm <- disProg2sts(salmonella.agona) ### RUN THE ALGORITHMS WITH TWO DIFFERENT SETS OF OPTIONS ### # Farrington with old options control1 <- list(range=(260:312), noPeriods=1,populationOffset=FALSE, fitFun="algo.farrington.fitGLM.flexible", b=4,w=3,weightsThreshold=1, pastWeeksNotIncluded=3, pThresholdTrend=0.05,trend=TRUE, thresholdMethod="delta",alpha=0.1) control2<- list(range=(260:312), noPeriods=10,populationOffset=FALSE, fitFun="algo.farrington.fitGLM.flexible", b=4,w=3,weightsThreshold=2.58, pastWeeksNotIncluded=26, pThresholdTrend=1,trend=TRUE, thresholdMethod="delta",alpha=0.1) salm1 <- farringtonFlexible(salm,control=control1) salm2 <- farringtonFlexible(salm,control=control2) ### PLOT THE RESULTS ### y.max <- max(upperbound(salm1),observed(salm1),upperbound(salm2),na.rm=TRUE) plot(salm1,ylim=c(0,y.max), main='S. Newport in Germany') lines( 1:(nrow(salm1)+1)-0.5, c(upperbound(salm1),upperbound(salm1)[nrow(salm1)]), type="s",col='tomato4',lwd=2) lines( 1:(nrow(salm2)+1)-0.5, c(upperbound(salm2),upperbound(salm2)[nrow(salm2)]), type="s",col="blueviolet",lwd=2) legend(c(0,10),c('Alarm','Upperbound with old options','Upperbound with new options'), pch=c(24,NA,NA),lty=c(NA,1,1), bg="white",lwd=c(2,2,2),col=c('red','tomato4',"blueviolet")) } \author{M. Salmon, M. \enc{H?hle}{Hoehle}} \seealso{\code{\link{algo.farrington.fitGLM}},\code{\link{algo.farrington.threshold}}} \keyword{classif} \references{A statistical algorithm for the early detection of outbreaks of infectious disease, Farrington, C.P., Andrews, N.J, Beale A.D. and Catchpole, M.A. (1996), J. R. Statist. Soc. A, 159, 547-563. An improved algorithm for outbreak detection in multiple surveillance systems, Noufaily, A., Enki, D.G., Farrington, C.P., Garthwaite, P., Andrews, N.J., Charlett, A. (2012), Statistics in Medicine, published online.} surveillance/man/poly2adjmat.Rd0000644000175100001440000000273312154347331016264 0ustar hornikusers\name{poly2adjmat} \alias{poly2adjmat} \title{ Derive Adjacency Structure of \code{"SpatialPolygons"} } \description{ Wrapping around functionality of the \pkg{spdep} package, this function computes the symmetric, binary (0/1), adjacency matrix from a \code{"\linkS4class{SpatialPolygons}"} object. It essentially applies \code{\link[spdep]{nb2mat}(\link[spdep]{poly2nb}(SpP, ...), style="B", zero.policy=zero.policy)}. } \usage{ poly2adjmat(SpP, ..., zero.policy = TRUE) } \arguments{ \item{SpP}{an object inheriting from \code{"\link{SpatialPolygons-class}"}.} \item{\dots}{arguments passed to \code{\link[spdep]{poly2nb}}.} \item{zero.policy}{logical indicating if islands are allowed, see \code{\link[spdep]{nb2mat}}.} } \value{ a symmetric numeric indicator matrix of size \code{length(SpP)}^2 representing polygon adjacencies. } \author{ (of this wrapper) Sebastian Meyer } \seealso{ \code{\link[spdep]{poly2nb}} in package \pkg{spdep} } \examples{ if (requireNamespace("spdep")) { ## generate adjacency matrix for districts of Bayern and Baden-Wuerttemberg data("fluBYBW") adjmat <- poly2adjmat(fluBYBW@map) ## same as already stored in the neighbourhood slot (in different order) stopifnot(all.equal(adjmat, neighbourhood(fluBYBW)[rownames(adjmat),colnames(adjmat)])) ## the neighbourhood graph can be plotted with spdep plot(spdep::mat2listw(adjmat), coordinates(fluBYBW@map)) } } \keyword{spatial} \keyword{graphs} surveillance/man/zetaweights.Rd0000644000175100001440000000300012316634140016355 0ustar hornikusers\name{zetaweights} \alias{zetaweights} \title{ Power-Law Weights According to Neighbourhood Order } \description{ Compute power-law weights with decay parameter \code{d} based on a matrix of neighbourhood orders \code{nbmat} (e.g., as obtained via \code{\link{nbOrder}}). Without normalization and truncation, this is just \eqn{o^{-d}} (where \eqn{o} is a neighbourhood order). This function is mainly used internally for \code{\link{W_powerlaw}} weights in \code{\link{hhh4}} models. } \usage{ zetaweights(nbmat, d = 1, maxlag = max(nbmat), normalize = FALSE) } \arguments{ \item{nbmat}{numeric, symmetric matrix of neighbourhood orders.} \item{d}{single numeric decay parameter (default: 1). Should be positive.} \item{maxlag}{single numeric specifying an upper limit for the power law. For neighbourhood orders > \code{maxlag}, the resulting weight is 0. Defaults to no truncation.} \item{normalize}{Should the resulting weight matrix be normalized such that rows sum to 1?} } \value{ a numeric matrix with same dimensions and names as the input matrix. } \author{ Sebastian Meyer } \seealso{\code{\link{W_powerlaw}}} \examples{ nbmat <- matrix(c(0,1,2,2, 1,0,1,1, 2,1,0,2, 2,1,2,0), 4, 4, byrow=TRUE) zetaweights(nbmat, d=1, normalize=FALSE) # harmonic: o^-1 zetaweights(nbmat, d=1, normalize=TRUE) # rowSums=1 zetaweights(nbmat, maxlag=1, normalize=FALSE) # results in adjacency matrix } \keyword{spatial} \keyword{utilities} surveillance/man/abattoir.Rd0000644000175100001440000000155012553436366015651 0ustar hornikusers\name{abattoir} \alias{abattoir} \encoding{latin1} \title{Abattoir Data} \description{ A synthetic dataset from the Danish meat inspection -- useful for illustrating the beta-binomial CUSUM. } \usage{ data(abattoir) } \details{ The object of class \code{"sts"} contains an artificial data set inspired by meat inspection data used by Danish Pig Production, Denmark. For each week the number of pigs with positive audit reports is recorded together with the total number of audits made that week. } \seealso{\code{\link{categoricalCUSUM}}} \examples{ data("abattoir") plot(abattoir) population(abattoir) } \references{ Höhle, M. (2010), Changepoint detection in categorical time series, Book chapter to appear in T. Kneib and G. Tutz (Eds.), Statistical Modelling and Regression Structures, Springer. } \keyword{datasets} surveillance/man/salmNewport.Rd0000644000175100001440000000162212274546330016350 0ustar hornikusers\name{salmNewport} \alias{salmNewport} \docType{data} \title{Salmonella Newport cases in Germany 2004-2013} \description{ Reported number of cases of the Salmonella Newport serovar in the 16 German federal states 2004-2013. } \usage{data(salmNewport)} \format{ A \code{sts} object. } \source{ The data are queried from the Survstat@RKI database of the German Robert Koch Institute (http://www3.rki.de/SurvStat/). A detailed description of the 2011 outbreak can be found in the publication Bayer, C., Bernard, H., Prager, R., Rabsch, W., Hiller, P., Malorny, B., Pfefferkorn, B., Frank, C., de Jong, A., Friesema, I., Start, K., Rosner, B.M. (2014), An outbreak of Salmonella Newport associated with mung bean sprouts in Germany and the Netherlands, October to November 2011, Eurosurveillance 19(1):pii=20665. } \examples{ data(salmNewport) } \keyword{datasets} surveillance/man/stK.Rd0000644000175100001440000001075112524203267014576 0ustar hornikusers\name{stK} \alias{stKtest} \alias{plot.stKtest} \title{ Diggle et al (1995) K-function test for space-time clustering } \description{ The function \code{stKtest} wraps functions in package \pkg{splancs} to perform the K-function based Monte Carlo permutation test for space-time clustering (Diggle et al, 1995) for \code{"epidataCS"}. } \usage{ stKtest(object, eps.s = NULL, eps.t = NULL, B = 199, cores = 1, seed = NULL, poly = object$W) \method{plot}{stKtest}(x, which = c("D", "R", "MC"), args.D = list(), args.D0 = args.D, args.R = list(), args.MC = list(), mfrow = sort(n2mfrow(length(which))), ...) } \arguments{ \item{object}{an object of class \code{"epidataCS"}.} \item{eps.s, eps.t}{ numeric vectors defining the spatial and temporal grids of critical distances over which to evaluate the test. The default (\code{NULL}) uses equidistant values from 0 to the smallest \code{eps.s}/\code{eps.t} value in \code{object$events}, but not larger than half the observed spatial/temporal domain. } \item{B}{the number of permutations.} \item{cores}{ the number of parallel processes over which to distribute the requested number of permutations. } \item{seed}{ argument for \code{\link{set.seed}} to initialize the random number generator such that results become reproducible (also if \code{cores > 1}, see \code{\link{plapply}}). } \item{poly}{ the polygonal observation region of the events (as an object handled by \code{\link{xylist}}). The default \code{object$W} might not work since package \pkg{splancs} does not support multi-polygons. In this case, the \code{poly} argument can be used to specify a substitute. } \item{x}{an \code{"stKtest"}.} \item{which}{ a character vector indicating which diagnostic plots to produce. The full set is \code{c("D", "D0", "R", "MC")}. The special value \code{which = "stdiagn"} means to call the associated \pkg{splancs} function \code{\link[splancs]{stdiagn}}. } \item{args.D,args.D0,args.R,args.MC}{ argument lists for the plot functions \code{\link{persp}} (for \code{"D"} and \code{"D0"}), \code{\link{plot.default}} (\code{"R"}), and \code{\link[MASS]{truehist}} (\code{"MC"}), respectively, to modify the default settings. Ignored if \code{which = "stdiagn"}. } \item{mfrow}{ \code{\link{par}}-setting to layout the plots. Ignored for \code{which = "stdiagn"} and if set to \code{NULL}. } \item{\dots}{ignored (argument of the generic).} } \value{ an object of class \code{"stKtest"} (inheriting from \code{"htest"}), which is a list with the following components: \item{method}{a character string indicating the type of test performed.} \item{data.name}{a character string naming the supplied \code{object}.} \item{statistic}{the sum \eqn{U} of the standardized residuals \eqn{R(s,t)}.} \item{parameter}{the number \code{B} of permutations.} \item{p.value}{the p-value for the test.} \item{pts}{the coordinate matrix of the event locations (for \code{\link[splancs]{stdiagn}}.} \item{stK}{the estimated K-function as returned by \code{\link[splancs]{stkhat}}.} \item{seD}{the standard error of the estimated \eqn{D(s,t)} as returned by \code{\link[splancs]{stsecal}}.} \item{mctest}{the observed and permutation values of the test statistic as returned by \code{\link[splancs]{stmctest}}.} The \code{plot}-method invisibly returns \code{NULL}. } \references{ Diggle, P. J.; Chetwynd, A. G.; H\enc{ä}{ae}ggkvist, R. and Morris, S. E. (1995): Second-order analysis of space-time clustering \emph{Statistical Methods in Medical Research}, \bold{4}, 124-136. } \author{ Sebastian Meyer } \seealso{ the simple \code{\link{knox}} test and function \code{\link{epitest}} for testing \code{"\link{twinstim}"} models. } \examples{ if (requireNamespace("splancs")) { data("imdepi") imdepiB <- subset(imdepi, type == "B") mainpoly <- coordinates(imdepiB$W@polygons[[1]]@Polygons[[5]]) if (surveillance.options("allExamples")) { SGRID <- c(0, 10, 25, 50, 75, 100, 150, 200) TGRID <- c(0, 7, 14, 21, 28) B <- 99 CORES <- 2 } else { # dummy settings for fast CRAN checks SGRID <- c(0, 50) TGRID <- c(0, 30) B <- 9 CORES <- 1 } imdBstKtest <- stKtest(imdepiB, eps.s = SGRID, eps.t = TGRID, B = B, cores = CORES, seed = 1, poly = list(mainpoly)) print(imdBstKtest) plot(imdBstKtest) } } \keyword{htest} surveillance/man/meningo.age.rd0000644000175100001440000000164011731650466016267 0ustar hornikusers\name{meningo.age} \alias{meningo.age} \docType{data} \title{Meningococcal infections in France 1985-1995} \description{ Monthly counts of meningococcal infections in France 1985-1995. Here, the data is split into 4 age groups (<1, 1-5, 5-20, >20). } \usage{data(meningo.age)} \format{ An multivariate object of class disProg with 156 observations in each one of 4 age groups. \describe{ \item{week}{Number of month} \item{observed}{Matrix with number of counts in the corresponding month and age group} \item{state}{Boolean whether there was an outbreak -- dummy not implemented} \item{neighbourhood}{Neighbourhood matrix, all age groups are adjacent} \item{populationFrac}{Population fractions} } } \source{ ?? } \examples{ data(meningo.age) plot(meningo.age, title="Meningococcal infections in France 1985-95") plot(meningo.age, as.one=FALSE) } \keyword{datasets} surveillance/man/aggregate.disProg.Rd0000644000175100001440000000121211731650466017367 0ustar hornikusers\name{aggregate.disProg} \alias{aggregate.disProg} \title{Aggregate the observed counts} \description{ Aggregates the observed counts for a multivariate \code{disProgObj} over the units. Future versions of \code{surveillance} will also allow for time aggregations etc. } \usage{ \method{aggregate}{disProg}(x,\dots) } \arguments{ \item{x}{Object of class \code{disProg}} \item{\dots}{not used at the moment} } \value{\item{x}{univariate \code{disProg} object with aggregated counts and respective states for each time point.} } \keyword{hplot} \examples{ data(ha) plot(aggregate(ha)) } % plot.disProg