diptest/0000755000175100001440000000000013021322114011731 5ustar hornikusersdiptest/TODO0000755000175100001440000000112511620476255012446 0ustar hornikuserso The vignette inst/doc/diptest-issues.Rnw (for 0.75-1, on CRAN, since 2011-08-10) is TERRIBLY outdated. Notably it does not even mention the new dip.test() function o Consider an analogue qnormDiptab which is constructed using rnorm(.) instead of runif(.) simulations <--> This idea is old; Werner Stuetzle's student, Jeremy Tantrum, did things in this direction in 2003; see, stuff/jeremy-unimodality.R would be nice: o Visualize the l.c.m. and g.c.m. and the modal interval ! g.c.m = greatest convex minorant =: G(x) l.c.m = least concave majorant =: H(x) diptest/inst/0000755000175100001440000000000012534675430012732 5ustar hornikusersdiptest/inst/NEWS.Rd0000755000175100001440000000553312534671746014014 0ustar hornikusers% Check from R: % news(db = tools:::.build_news_db_from_package_NEWS_Rd("~/R/Pkgs/diptest/inst/NEWS.Rd")) \name{NEWS} \title{News for \R Package \pkg{diptest}} \encoding{UTF-8} \section{CHANGES in diptest VERSION 0.75-7 (2015-06-07)}{ \subsection{NEW FEATURES}{ \itemize{ \item Started this \file{NEWS.Rd} file, to eventually replace the \file{ChangeLog} } } \subsection{BUG FIXES}{ \itemize{ \item . } } } \section{CHANGES in diptest VERSION 0.75-6 (2014-11-25)}{ \subsection{NEW FEATURES}{ \itemize{ \item . } } \subsection{BUG FIXES}{ \itemize{ \item . } } } \section{CHANGES in diptest VERSION 0.75-5 (2013-07-23)}{ \subsection{NEW FEATURES}{ \itemize{ \item . } } \subsection{BUG FIXES}{ \itemize{ \item . } } } \section{CHANGES in diptest VERSION 0.75-4 (2012-08-13)}{ \subsection{NEW FEATURES}{ \itemize{ \item . } } \subsection{BUG FIXES}{ \itemize{ \item . } } } \section{CHANGES in diptest VERSION 0.75-3 (2012-04-18)}{ \subsection{NEW FEATURES}{ \itemize{ \item . } } \subsection{BUG FIXES}{ \itemize{ \item . } } } \section{CHANGES in diptest VERSION 0.75-1 (2011-08-10)}{ \subsection{NEW FEATURES}{ \itemize{ \item . } } \subsection{BUG FIXES}{ \itemize{ \item . } } } \section{CHANGES in diptest VERSION 0.25-3 (2010-08-11)}{ \subsection{NEW FEATURES}{ \itemize{ \item First version of the \dQuote{"diptest issues"} vignette. } } \subsection{BUG FIXES}{ \itemize{ \item . } } } \section{CHANGES in diptest VERSION 0.25-2 (2009-02-09)}{ \subsection{NEW FEATURES}{ \itemize{ \item . } } \subsection{BUG FIXES}{ \itemize{ \item . } } } \section{CHANGES in diptest VERSION 0.25-1 (2004-08-12)}{ \subsection{NEW FEATURES}{ \itemize{ \item . } } \subsection{BUG FIXES}{ \itemize{ \item . } } } \section{CHANGES in diptest VERSION 0.25-0 (2004-02-13)}{ \subsection{NEW FEATURES}{ \itemize{ \item More output in the \R object, allows \code{debug} information. } } \subsection{BUG FIXES}{ \itemize{ \item Previously, the \code{dip()} had not been \dQuote{symmetric} with respect to \dQuote{mirroring} such as a sign flip in the data. Thanks to Yong Lu, who was able to track the bug to a misplaced \code{(} in the original Fortran code, the bug has been fixed on Oct.10, 2003. } } } \section{CHANGES in diptest VERSION 0.9-1 (2003-07-15)}{ \subsection{NEW FEATURES}{ \itemize{ \item First(?) CRAN release } } \subsection{BUG FIXES}{ \itemize{ \item on 1994-07-30, added code to prevent an infinite loop in rare cases, but e.g., for \code{dip(1:n)}. } } } diptest/inst/doc/0000755000175100001440000000000012534675430013477 5ustar hornikusersdiptest/inst/doc/diptest-issues.Rnw0000755000175100001440000003351212534667540017166 0ustar hornikusers%\documentclass[article]{jss} %% -- $Id: diptest-issues.Rnw,v 1.9 2011/08/10 14:04:29 maechler Exp maechler $ \documentclass[nojss,article]{jss} % ----- for the package-vignette, don't use JSS logo, etc % % \author{Martin Maechler\\ Seminar f\"ur Statistik \\ ETH Zurich, \ Switzerland % \\\email{maechler@stat.math.ethz.ch}} \author{Martin M\"achler \\ ETH Zurich} \title{Dip Test Distributions, P-values, and other Explorations} % \def\mythanks{a version of this paper, for \pkg{nacopula} 0.4\_4, has been published % in JSS, \url{http://www.jstatsoft.org/v39/i09}.} %% for pretty printing and a nice hypersummary also set: \Plainauthor{Martin M\"achler} %% comma-separated \Plaintitle{Dip Test Distributions, P-values, and other Explorations} % \Shorttitle{} %\date{April 2009 ({\tiny typeset on \tiny\today})} %%\VignetteIndexEntry{Dip Test Distributions, P-values, and other Explorations} %%\VignetteDepends{diptest} \SweaveOpts{engine=R,keep.source=TRUE,strip.white=true} % ^^^^^^^^^^^^^^^^ \SweaveOpts{eps=FALSE,pdf=TRUE,width=7,height=4} %% an abstract and keywords \Abstract{ ... % FIXME ... % FIXME } % \Keywords{MPFR, Abitrary Precision, Multiple Precision Floating-Point, R} %% at least one keyword must be supplied %% publication information %% NOTE: Typically, this can be left commented and will be filled out by the technical editor %% \Volume{13} %% \Issue{9} %% \Month{September} %% \Year{2004} %% \Submitdate{2004-09-29} %% \Acceptdate{2004-09-29} %% The address of (at least) one author should be given %% in the following format: \Address{ Martin M\"achler\\ Seminar f\"ur Statistik, HG G~16\\ ETH Zurich\\ 8092 Zurich, Switzerland\\ E-mail: \email{maechler@stat.math.ethz.ch}\\ URL: \url{http://stat.ethz.ch/people/maechler} } %% It is also possible to add a telephone and fax number %% before the e-mail in the following format: %% Telephone: +43/1/31336-5053 %% Fax: +43/1/31336-734 %% for those who use Sweave please include the following line (with % symbols): %% MM: this is "substituted" by jss.cls: %% need no \usepackage{Sweave.sty} % \usepackage{myVignette} % \usepackage{fullpage}% save trees ;-) --- FIXME use {geometry} package % \usepackage[authoryear,round,longnamesfirst]{natbib} % \bibliographystyle{plainnat} % %% Marius' packages \usepackage[american]{babel}%for American English % \usepackage{microtype}%for character protrusion and font expansion (only with pdflatex) \usepackage{amsmath}%sophisticated mathematical formulas with amstex (includes \text{}) \usepackage{mathtools}%fix amsmath deficiencies \usepackage{amssymb}%sophisticated mathematical symbols with amstex (includes \mathbb{}) % \usepackage{amsthm}%theorem environments % \usepackage{bm}%for bold math symbols: \bm (= bold math) % %NON-STANDARD:\RequirePackage{bbm}%only for indicator functions % \usepackage{enumitem}%for automatic numbering of new enumerate environments % \usepackage[ % format=hang, % % NOT for JSS: labelsep=space, % justification=justified, % singlelinecheck=false%, % % NOT for JSS: labelfont=bf % ]{caption}%for captions % \usepackage{tikz}%sophisticated graphics package % \usepackage{tabularx}%for special table environment (tabularx-table) % \usepackage{booktabs}%for table layout % This is already in jss above -- but withOUT the fontsize=\small part !! \DefineVerbatimEnvironment{Sinput}{Verbatim}{fontsize=\small,fontshape=sl} \DefineVerbatimEnvironment{Soutput}{Verbatim}{fontsize=\small} \DefineVerbatimEnvironment{Scode}{Verbatim}{fontsize=\small,fontshape=sl} % but when submitting, do get rid of too much vertical space between R % input & output, i.e. between Sinput and Soutput: \fvset{listparameters={\setlength{\topsep}{0pt}}}% !! quite an effect! %% % \newcommand*{\R}{\proglang{R}}%{\textsf{R}} \newcommand*{\Arg}[1]{\texttt{\itshape $\langle$#1$\rangle$}} \newcommand*{\file}[1]{{`\normalfont\texttt{#1}'}} \newcommand*{\eps}{\varepsilon} % %% Probability P[.], Expectation E[.] etc \makeatletter %% == subsection of our flexible-style "texab.sty" : \newcommand{\@pkl}{[} % Probability Klammer links \newcommand{\@pkr}{]} \newcommand{\@ekl}{[} % Erwartungswert Klammer links \newcommand{\@ekr}{]} % Erwartungswert Klammer rechts \DeclareMathOperator{\PRSymbol}{P} % Next line (\makeright): if #1 == \left then \right #2 else #1 #2 \newcommand{\makeright}[2]{\ifx#1\left\right#2\else#1#2\fi} %% the real commands \newcommand{\PR}[2][\left] {\PRSymbol #1\@pkl #2 \makeright{#1}{\@pkr}} \newcommand{\ERW}[2][\left] {\ERWSymbol #1\@ekl #2 \makeright{#1}{\@ekr}} \makeatother \newcommand{\isD}{\ {\stackrel{\mathcal{D}}{=}}\ \ } \newcommand*{\iid}{\mbox{ i.i.d. }} % \begin{document} \setkeys{Gin}{width=\textwidth} % Manuel has \setlength{\abovecaptionskip}{-5pt} % %% include your article here, just as usual %% Note that you should use the \pkg{}, \proglang{} and \code{} commands. % \section[About Java]{About \proglang{Java}} %% Note: If there is markup in \(sub)section, then it has to be escape as above. %% Note: These are explained in '?RweaveLatex' : \begin{footnotesize} <>= options(SweaveHooks= list(fig=function() par(mar=c(5.1, 4.1, 1.1, 2.1))), width = 75, digits = 7, # <-- here, keep R's default! prompt = "R> ", # <- "yuck!" - required by JSS continue=" ") set.seed(47) Sys.setenv(LANGUAGE = "en") if(.Platform$OS.type != "windows") Sys.setlocale("LC_MESSAGES","C") ## In order to save() and load() expensive results thisDir <- system.file('doc', package='diptest') xtraDir <- if(Sys.getenv("USER") == "maechler") "~/R/Pkgs/diptest/stuff" else thisDir res1.file <- file.path(thisDir, "aggr_results.Rdata") <>= if(nzchar(Sys.getenv("R_MM_PKG_CHECKING"))) print( .libPaths() ) @ \end{footnotesize} % \maketitle % \begin{abstract} % \end{abstract} \section[Introduction]{Introduction}% \small~\footnote{\mythanks}} \label{sec:Intro} %% MM FIXME: Need notation $D_n :=$\texttt{dip( runif(n) )}; but more generally, \begin{equation} \label{eq:Dn.F} D_n(F) := D(X_1, X_2, \dots, X_n), \mbox{ \ \ \texttt{where} } X_i \iid, X_i \sim F. \end{equation} \citet{HarJH85} in their ``seminal'' paper on the dip statistic $D_n$ already proved that $ \sqrt{n} \; D_n$ converges in distribution, i.e., \begin{equation} \label{eq:D.infty} \lim_{n\to\infty}\sqrt{n} \; D_n \isD D_\infty. \end{equation} A considerable part of this paper is devoted to explore the distribution of $D_\infty$. \bigskip \section[History of the diptest package]{History of the \texttt{diptest} \textsf{R} package} \citet{HarP85} published an implementation in Fortran of a concrete algorithm, % ALGORITHM AS 217 APPL. STATIST. (1985) VOL.34, NO.3 where the code was also made available on Statlib\footnote{Statlib is now a website, of course, \url{http://lib.stat.cmu.edu/}, but then was \emph{the} preferred way for distributing algorithms for statistical computing, available years before the existence of the WWW, and entailing e-mail and (anonymous) FTP} On July 28, 1994, Dario Ringach, then at NY University, asked on Snews (the mailing list for S and S-plus users) about distributions and was helped by me and then about \texttt{dyn.load} problems, again helped by me. Subsequently he provided me with S-plus code which interfaced to (a \texttt{f2c}ed version of) Hartigan's Fortran code, for computing the dip statistic. and ended the (then private) e-mail with \begin{quotation} I am not going to have time to set this up for submission to StatLib. If you want to do it, please go ahead. Regards, Dario \end{quotation} - several important bug fixes; last one Oct./Nov.~2003 However, the Fortran code file \url{http://lib.stat.cmu.edu/apstat/217}, was last changed {Thu 04 Aug 2005 03:43:28 PM CEST}. We have some results of the dip.dist of \emph{before} the bug fix; notably the ``dip of the dip'' probabilities have changed considerably!! - see rcs log of ../../src/dip.c \section{21st Century Improvement of Hartigan$^2$'s Table} (( Use listing package (or so to more or less ``cut \& paste'' the nice code in \texttt{../../stuff/new-simul.Rout-1e6} )) \section{The Dip in the Dip's Distribution} \label{sec:dip_dip} We have found empirically that the dip distribution itself starts with a ``dip''. Specifically, the minimal possible value of $D_n$ is $\frac{1}{2n}$ \emph{and} the probability of reaching that value, \begin{equation} \label{eq:P.Dn_min} \PR{D_n = \frac{1}{2n}}, \end{equation} is large for small $n$. E.g., consider an approximation of the dip distribution for $n=5$, <>= require("diptest") # after installing it .. D5 <- replicate(10000, dip(runif(5))) hist(D5, breaks=128, main = "Histogram of replicate(10'000, dip(runif(5))))") @ which looks as if there was a bug in the software --- but that look is misleading! Note how the phenomenon is still visible for $n=8$, <>= D8 <- replicate(10000, dip(runif(8))) hist(D8, breaks=128, main = "Histogram of replicate(10'000, dip(runif(8))))") @ Note that there is another phenomenon, in addition to the point mass at $1/(2n)$, particularly visible, if we use \emph{many} replicates, <>= set.seed(11) n <- 11 B.s11 <- 500000 D11 <- replicate(B.s11, dip(runif(n))) <<2nd-small-sample-phenomen--n-eq-11, echo=false>>= if(file.exists(ff <- file.path(thisDir, "hist-D11.rda"))) { load(ff) } else { ## takes a few minutes <> hD11 <- hist(D11, breaks=1e-6+(63:298)/(2*11*64), plot=FALSE) save(hD11, n, B.s11, file= ff) } <<2nd-small-sample-phenomen--n-eq-11, echo=false, fig=true>>= B.str <- format(B.s11, sci=FALSE, big.mark="'") plot(hD11, main = "", ## main = sprintf("Histogram of replicate(%s, dip(runif(%d)))", B.str, n), border=NA, col="dark gray", xlab = substitute("Dip" ~~ D[.N.](U(group("[",list(0,1),"]"))), list(.N. = n))) title(xlab= substitute(B == .B.SIM. ~ "replicates", list(.B.SIM. = B.str)), adj = .88) lcol <- adjustcolor("orange4", 0.4) abline(v = (1:3)/(2*n), col=lcol, lty=3, lwd=2) axis(1, pos=0, at = (1:3)/(2*n), labels = expression(1/22, 2/22, 3/22), col=lcol, col.axis=lcol) @ FIXME:\\ use \file{../../stuff/sim-minProb.R} \\ and \file{../../stuff/minProb-anal.R} Further, it can be seen that the \emph{maximal} dip statistic is $\frac 1 4 = 0.25$ and this upper bound can be reached simply (for even $n$) using the the data $(0,0,\dots,0, \; 1, 1,\dots,1)$, a bi-point mass with equal mass at both points. \section{P-values for the Dip Test} \label{sec:Pvals} Note that it is not obvious how to compute $p$-values for ``the dip test'', as that means determining the distribution of the test statistic, i.e., $D_n$ under the null hypothesis, but a natural null, $H_o: F \in \{F \mathrm{cadlag} \mid f := \frac d{dx} F is unimodal \}$ is too large. Hartigans'(1985) argued for using the uniform $U[0,1]$ i.e., $F'(x) = f(x)= \mathbf{1}_{[0,1]}(x) = [0 \le x \le 1]$ (Iverson bracket) instead, even though they showed that it is not quite the ``least favorable'' one. Following Hartigans', we will define the $p$-value of an observed $d_n$ as \begin{equation} \label{eq:Pval} P_{d_n} := \PR{D_n \ge d_n} := \PR{\mathrm{dip}(U_1,\dots,U_n) \ge d_n}, \ \ \mathrm{where} \ U_i \sim U[0,1], \ \, \iid \end{equation} \subsection{Interpolating the Dip Table} \label{sec:interpol} Because of the asymptotic distribution, $ \lim_{n\to\infty}\sqrt{n} \; D_n \isD D_\infty$, it is makes sense to consider the ``$\sqrt{n} D_n$''--scale, even for finite $n$ values: <>= data(qDiptab) dnqd <- dimnames(qDiptab) (nn. <- as.integer(dnqd[["n"]])) matplot(nn., qDiptab*sqrt(nn.), type ="o", pch=1, cex = 0.4, log="x", xlab="n [log scaled]", ylab = expression(sqrt(n) %*% q[D[n]])) ## Note that 1/2n is the first possible value (with finite mass),, ## clearly visible for (very) small n: lines(nn., sqrt(nn.)/(2*nn.), col=adjustcolor("yellow2",0.5), lwd=3) P.p <- as.numeric(print(noquote(dnqd[["Pr"]]))) ## Now look at one well known data set: D <- dip(x <- faithful$waiting) n <- length(x) points(n, sqrt(n)*D, pch=13, cex=2, col= adjustcolor("blue2",.5), lwd=2) ## a simulated (approximate) $p$-value for D is mean(D <= replicate(10000, dip(runif(n)))) ## ~ 0.002 @ but we can use our table to compute a deterministic (but still approximate, as the table is from simulation too) $p$-value: <>= ## We are in this interval: n0 <- nn.[i.n <- findInterval(n, nn.)] n1 <- nn.[i.n +1] ; c(n0, n1) f.n <- (n - n0)/(n1 - n0)# in [0, 1] ## Now "find" y-interval: y.0 <- sqrt(n0)* qDiptab[i.n ,] y.1 <- sqrt(n1)* qDiptab[i.n+1,] (Pval <- 1 - approx(y.0 + f.n*(y.1 - y.0), P.p, xout = sqrt(n) * D)[["y"]]) ## 0.018095 @ Finally, in May 2011, after several years of people asking for it, I have implemented a \code{dip.test} function which makes use of a --- somewhat more sophisticated --- interpolation scheme like the one above, to compute a $p$-value. As \code{qDiptab} has been based on $10^6$ samples, the interpolation yields accurate $p$-values, unless in very extreme cases. Here is the small ($n=63$) example from Hartigan$^2$, <>= data(statfaculty) dip.test(statfaculty) @ where, from a $p$-value of 8.7\%, we'd conclude that there is not enough evidence against unimodality. \subsection{Asymptotic Dip Distribution} \label{sec:asymp} We have conducted extensive simulations in order to explore the limit distribution of $D_\infty$, i.e., the limit of $\sqrt{n} \; D_n$, (\ref{eq:D.infty}). Our current \R\ code is in \file{ ../../stuff/asymp-distrib.R } but the simulation results (7 Megabytes for each $n$) cannot be assumed to be part of the package, nor maybe even to be simply accessible via the internet. %% is bandwidth a problem ? probably no longer in the near future? %% Maybe \section{Less Conservative Dip Testing} \section{Session Info} <>= toLatex(sessionInfo()) @ \bibliography{diptest} \end{document} diptest/inst/doc/myVignette.sty0000755000175100001440000000520511171552644016375 0ustar hornikusers%% originates from ~/R/Pkgs/Matrix/inst/doc/myVignette.sty [April 2009] \RequirePackage{hyperref} \RequirePackage{url} \RequirePackage{amsmath} \RequirePackage{bm}%-> \bm (= bold math) \newcommand{\Slang}{\textsf{S} language} \newcommand{\RR}{\textsf{R}} \newcommand{\email}[1]{\href{mailto:#1}{\normalfont\texttt{#1}}} %- R programming markup \newcommand\code{\bgroup\@codex} \def\@codex#1{{\normalfont\ttfamily\hyphenchar\font=-1 #1}\egroup} \let\env=\code \let\command=\code \newcommand*{\Rfun}[1]{\code{#1()}\index{\RR~function #1}} \newcommand*{\class}[1]{\code{#1}\index{class #1}}% \newcommand*{\pkg}[1]{\code{#1}\index{\RR~package #1}} % \newcommand{\kbd}[1]{{\normalfont\texttt{#1}}} \newcommand{\key}[1]{{\normalfont\texttt{\uppercase{#1}}}} \newcommand\samp{`\bgroup\@noligs\@sampx} \def\@sampx#1{{\normalfont\texttt{#1}}\egroup'} \let\option=\samp \newcommand{\var}[1]{{\normalfont\textsl{#1}}} \newcommand{\file}[1]{{`\normalfont\textsf{#1}'}} \newcommand{\dfn}[1]{{\normalfont\textsl{#1}}} \newcommand{\acronym}[1]{{\normalfont\textsc{\lowercase{#1}}}} \newcommand{\strong}[1]{{\normalfont\fontseries{b}\selectfont #1}} \let\pkg=\strong % \RequirePackage{alltt} \newenvironment{example}{\begin{alltt}}{\end{alltt}} \newenvironment{smallexample}{\begin{alltt}\small}{\end{alltt}} \newenvironment{display}{\list{}{}\item\relax}{\endlist} \newenvironment{smallverbatim}{\small\verbatim}{\endverbatim} % This is already in ``Sweave'' : %% \RequirePackage{fancyvrb} %% \DefineVerbatimEnvironment{Sinput}{Verbatim}{fontsize=\small,fontshape=sl} %% \DefineVerbatimEnvironment{Soutput}{Verbatim}{fontsize=\small} %% \DefineVerbatimEnvironment{Scode}{Verbatim}{fontsize=\small,fontshape=sl} % \newcommand{\FIXME}[1]{\marginpar{ \dots FIXME \emph{#1} \dots}} \newcommand{\TODO}[1]{\par\noindent\textsc{Todo:} \textit{#1}\par} % \newcommand*{\myOp}[1]{{$\left\langle\ensuremath{#1}\right\rangle$}} \newcommand{\noFootnote}[1]{{\small (\textit{#1})}} % %% diptest stuff : % %% Probabily P[.], Expectation E[.] etc %% == subsection of our flexible-style "texab.sty" : \newcommand{\@pkl}{[} % Probability Klammer links \newcommand{\@pkr}{]} \newcommand{\@ekl}{[} % Erwartungswert Klammer links \newcommand{\@ekr}{]} % Erwartungswert Klammer rechts \DeclareMathOperator{\PRSymbol}{P} % Next line (\makeright): if #1 == \left then \right #2 else #1 #2 \newcommand{\makeright}[2]{\ifx#1\left\right#2\else#1#2\fi} %% the real commands \newcommand{\PR}[2][\left] {\PRSymbol #1\@pkl #2 \makeright{#1}{\@pkr}} \newcommand{\ERW}[2][\left] {\ERWSymbol #1\@ekl #2 \makeright{#1}{\@ekr}} \newcommand{\isD}{\ {\stackrel{\mathcal{D}}{=}}\ \ } \newcommand{\iid}{\mbox{ i.i.d. }} diptest/inst/doc/diptest-issues.pdf0000644000175100001440000107413013021277614017157 0ustar hornikusers%PDF-1.5 % 47 0 obj << /Length 2560 /Filter /FlateDecode >> stream xڥYKsW0iIB[98]J&k834xu_O@#Jފ# ʾ>/*SumhZʆf}ʿZ|{^7a#| <ܛ^<|Xp'7fT Y 捼 726;sy=x4)}dե%|svq=-XU/We\6Q#arP+*]+SƷ0=,iLcT\= 9{{s˙)Fejg~vLhGάdzf2xq[:sh5B*h+考B9_ЭjJۈbJ?R|DS0V`lWAF?tO):TMDkʯ s.bvGWq1u1H:"e80;ig=%)\p: P]=yeVLQʿ>nq.5n=,4[i#j`-?8\HU*q˺q=2( uECBY Jo& }+'NEb*W!xIO6~.h*H! A,0=Xk9]Ku^鼱 jZ5dPXE:Ra2>-mLZuf, P?Jcl"]~1D H jZN KF9Փ"h*S$LȼćGo%)uy'T7ny/͘j݉%c9uF8,K">̜ʗUUJ7Ƅdڦ!(=V q<EJhh3$|,]_aC`$~Gd{BLҡ[LtG4ghPt[ ;HCȒR( R1i3Bm)Iu^$)' Rd1.8mwá~-8ZbTX{B0(C$m yHp sCXl! 588Er:>}O)C%@R7~P]wP-P ;Լ8h9M< i1C'p]-x/}#GY-(LYTqch suMџԔ@s^:zY 6:)WJX 7Кj, BܩWo2XQ~2IWenՑ[ PH%nN~'a 斟„SғG =<;=bݸg֗|7EIR1K=23RP &,l(#K3785]J|-:2S'$<Xx6[DlsQ1a'~XGuµ=h| Ae}jNH>~+t5}t><؞FParV|ً[)J#A;RFGQ׭>*"3CDQ-3 > stream xڵXK@6UX<Q˲ET\e$)y}5B!A|"fE_n_kBEYKU[mso" $j\O6[T.o3>%<$9C{.?.|W{BgkϏOW?kqio=*}Ue^U!2%Xu;jmѿ}8n [-L\*o(hDkcHtad(q4?=.X=3^0PReUO$Q?e#$URIhpa(w k%UV˒D n0e[UlkUjnk n=a(J )|(CXW~Oވ0K< gGo9g5Ea|YǶ!A ..1NEWۜq׸Nk+|v>A_yXNxCW!^Y_M(<tGtL}p'r+-X 6|+O3;Nյ}4XH8}(Lhڕ-[C3# _8_t@FG⹷?p޿Fbz<*&Dt]{֜^bo"'@AHx¨zV_xCYi,E+~qO|#|A["V"ilPOO=-8flH%J϶溲23t԰ZHv WH)ַ9/j4l  iUy`T)tcjhqa93N;zȕ'"z7DT|F=^jUeuʼ2Ecr "CF0=_|(||οJyîKA;jzm󢘪2|ߵ<+$ ԓ~s715p9$,ls3u"Ȋ!cG߽=1a? k9)j'-dQP; }T:]sBj l*() *]==J_t4 7#PV197@u-ᧆ{X&kꏅ7MMgQ&9gv})餁}.OQV "3x$69Ѕ5ݢ/_Ԗ]m쇝ۼ'E&rΕeb=4z_@7Z?rXdp:* >P!Y(.K@NzK]fNZ!꛻_4un:3p2$f W?Tdx сO$zmi`_SN{zBҎx(X=k1q= ×%HjuY0i%ƳRQW\#zyn䙆j>8@+Iy+~9 c\s3`! Ȅ/@V|P6H_Hdqw`OwC3~e ETsJ0WsQҥz`J!"@ tMl+ҥf, ' @RPZɞ v$PgUG'!o:=ėwM&;l3濫IlfBa*4򋱀یHUoD0:XOתXP{~a'7Ó@r_])=VDOGjIϩv虇*=i %gS:9'nbSL֒z/'W+㡧=bD+''A~/^xqdi%0go&K{3Lm[х+p $]I?UV=˼-TLWBuфb} endstream endobj 90 0 obj << /Length 817 /Filter /FlateDecode >> stream xڵVKo@W,Hv~H*! 8MDMR'T*יuBnl%7TB+YJ\IUQBV֋T|K?tZmṄe |.+D+o+W#S P]ݡj-MAT,$|;IR WjWg"+CޑXQ Z7EV沞=Jȡcxan+AeW3ʀ ԚvG@.Bhh:Aػ@96s-L>lljK$T(O?75/gJ敖.Pl!f6% dZ [nf1oWKC6 Z%}QE3Bc9(IgrYyT!Ʀp,p !yߕWiXh)kAsSu2+}1l#|Ca3YIga;+-A #+NU*#Ūt} m'fmon޴͹\!?Х|77MOHG2fٌYuVe(Cw6A(6O`@kKLCHaRx|3XW3dyUqrŲgGclSӻU$\V_qc0H_8j`ܵ$FtF)HI:˫,@jɕA@F*T#A;qbkz8rdrv y endstream endobj 75 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpgU2k0O/Rbuild7fd14ea572c9/diptest/vignettes/diptest-issues-dip_n-is-5.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 92 0 R /BBox [0 0 504 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 93 0 R/F3 94 0 R>> /ExtGState << >>/ColorSpace << /sRGB 95 0 R >>>> /Length 1132 /Filter /FlateDecode >> stream xn7 ZE(tMR!pցI }PvP^[M"?ڀ57b7<ap9gWs6@vG$1XΜz;ژӇ_g~I4n>]\_g?濾q^ՊC#ğ8-*l/"~ZLĿȹ8EIJYjM^^l16μ~Fۙ["sgmBuŪB]]GLea׽#>zzv}n˾XF {΂{| 'zNOϞ[LJmVDQ[BLrwptGi&uho<\Y^ =}y[ulÅN:z.ݦ?8-l2<hdC]'X "p:3'=͟pʢ\L ^,D8V)Z8KDمmlG4Kcfؠ:Pbr4Y$wEU.Q4tTMmnKU\ʢ#zlQ%Ȝ|r*6ZrqRznBwyN,%T]0 -3vR쁙؆_Y(JjMnebO\ʅz"s CEV%ng5\O-+uAګ؅(ZRRa<\t*.+v1D \;+0ךDEn?c<\ɓYA:%PvCZ+f̵f\kmc54;bWj=?,ow\kߕyZ+5saڣSvHG9qTҗ1w>u{g5 s}]\kvABC .yMKG9̵]__SWU.΋|^ 旧>0kvygW_1NhQ&b#mI5\3b5]Ŝ8]l^@]h}'z.4^ >"U]y*o:_EQ"{`Eʛ?# endstream endobj 97 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 87 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpgU2k0O/Rbuild7fd14ea572c9/diptest/vignettes/diptest-issues-dip_n-is-8.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 98 0 R /BBox [0 0 504 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 99 0 R/F3 100 0 R>> /ExtGState << >>/ColorSpace << /sRGB 101 0 R >>>> /Length 1527 /Filter /FlateDecode >> stream x]O7_uqiRrQz@$]؈REbsxXZYu>?Pgw1j;9<ɅA7aX-Vr&kuݗݾV/=ݗ#kä߫Nn\^ggɲWEt"bk§[XatvmOp.aݺۢ["60ꭺ@Ȁiy>keCNYtjUF]ͪ@B/E~VR^Z&,ZE̴@yjW'ۜ5k#aժJl#Ì rO0k_oga)e9ȋA-Ed R"b2(>ӆ=MN!~wt,s([mK+mk6GgJQ۾O̡t#9 =1 &YZl3U`}rXyڪ}7>Θ}kS7>Ι}HU;Le^{Ǝi4bS.}i)YupKTah*,s 5j0t65kogtR{3J*v7蔹W2LVrTJY@QvL48ppDZT0 bju5ww O&Jqz}<:XvF/<d_(}12KoYu, I{A}$L7:Dt7(|D kmbs<.MR0KE O!!N)$($8>9 O9< bӼDE٥ { ป. 4mwS<{#=k^{Ң w/EǪ<ۆ6KloN)rhoZt8g- bogL!89׳9Yَe/j8x@/4ӳ3ҳV9r݋%DAy\4 , Skysssx endstream endobj 103 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 107 0 obj << /Length 2617 /Filter /FlateDecode >> stream xڽZoB/G58 8J[V%%wfAR^w.<~3fr3i&9ys~r oo<'OK=9M.*5^rœՍ!JWrr9;Kj W蕍Qw*W2|xm`,vk,ٲxMm>h>xj[V"CT;9p0+$F͍bV Mc(&{4q_Gk[q3BJdsJh E ޭbc25Ni-l; tEH !hE"i7!R5: Et@a-x(1H Q=PQ`L]Hn"}S\\6[+M]!!`\*pLYfcۉd05HvN&-&*ѓəA蠕v={l ې7h۾X5M K6q4# ډ:z T(fFU侔'1CGݗpU0gf-KZ0\MD"Trov0nxL Spp7ӂ?M2"z.&\lcqXKD~.iv G 9;j~ku6] WJBfeXovj( -EUM|B$g}aڎr 5 ~קՈbNv[,e{ej'. eѻir1c J ֵ^hR]Sp6Hs @ / og#z0 $k2 GAO wt s zG. Gc>̊'K/,ó[ܸ] [46(t&F2>ŘAK,I_ nb)@`ҫҢ5<+]FH0ã:/f-zRFlޔV)ۙy6L79z]P#=:I $` ~ y@hn\OI0/*a`D%_/VY¸c@foV:3-Z jm> j{.B}Kx2)`+ q9~31 "pɣtgdEH 8rVtna;塣}oHA,T`m@aAE7w_y`Ip~#s= Qx!N@ x8v1{2?&^"XNc].}175ZS#Tn}9#:b4x*.-gE:?4a:S0CCr tPC[  f'-k`Zj=}]!EI)>&b,%I_̩# M.|Yw{z+B#4r8Fv7Qc]-$ `Ŀn1!3ub!N]Yw_q"Q UDTQ=.sxo()T@gʫA<8 x3 Nšdy ,'%0¯哃6_oaܩtPrQsZLf ;lgMޡ.#50UevC,ֻ(\Y8'֥#W N+ԠvG^JS+%viI !\E *XgVס*G]j"C`ΧvayX=|`vf\: [vt^S@k.I{z}58A?+Du`68pNG x`6'Ʃ)}w=;c8uMzk~` 0! endstream endobj 104 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpgU2k0O/Rbuild7fd14ea572c9/diptest/vignettes/diptest-issues-2nd-small-sample-phenomen--n-eq-11.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 113 0 R /BBox [0 0 504 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 114 0 R/F6 115 0 R>> /ExtGState << /GS1 116 0 R /GS257 117 0 R >>/ColorSpace << /sRGB 118 0 R >>>> /Length 2491 /Filter /FlateDecode >> stream xZˎ ߯]l iW\d#'` # ً@$v׋G^̣ Y*9,Wn?]׋ιm͇/ io|&Dzݾ>?~ݾp2=iA[ol:8CEӲT7_wͰ3Ų gWĜXs%>>1N{ +.^ۺ+=WVmI+,]c_a1p~ܸXVa~}xDd/o`/|y^^1_.%n[`'m7>RD yq iqj15 G:|wK{|svj+F Jʜ.la'J3ϧz@n 2yg'i9qqq:|\u>;'=#r8.ۓ5[D~YKɳ앃-k{Zǻۇu$]6 vEp-PaxE=!z6P: !AC16$TC! ř ˜8Pݽ_!< mJ;g nvbUSPisBAV^J>!$8_S:-8vVSea)uMBk _A?#UyEҳ Ȳ X S%9vj<er@=MS^PLm6$9$M`n / @N" ڭO1:ϕ R2 ՐVb ! HMR(AvfA4IO_:"_ =]Sʺ ̣j lGMRv&v֬ uNR6C,ΐ+kiɆr!=6J2$Nҁ$ B[OT`/ܩF[U| IC(F@ՐK$4u9QuxҥT K"x~g3>{ne]Ϥɩ)^cO0dÂ+ AapS¨gݏXa8._5g 3V[s&{kl|m̢Hi(4%|X4|: 2`}nNu2OU g gXl/p2vM\wT b۱U= V Ymq {(BN J}jgYmdpEp];r&=+5l{նIЕ382=[7J3 rl\4q02#> uD+f"Ab|$Nh>;FpDwIp@p'm}mQVcL *=#Tٖ{h|{&VLv=#h垉NJ{3dڵk, Zeg=X4K|81D˅p\lxk86==:d Hxw{u}Z#\re>C@E?}t7ϋx{\ƅy֋1(hxVr{txVÕ}ⲾnZ7^HHDBs1%G[+Y:>.70K 3`C:.fTö{Xr_L6K,0$lwۣ QF`Y[Zr endstream endobj 120 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 124 0 obj << /Length 1463 /Filter /FlateDecode >> stream xڝXYo6~,`o+EDiEv-b[胛ŖwmQ$un0"3t=xէ,HaN۹G83, y3o2eLFv/X(xw'Aq3b:]Qn'œ{ hJ9y A>9yB 'KubI>>MH>e&fL 9ÜZȚ39,9c.3T1DXJp$ ״f:S h0FLq78 e6b"rAJ9J k60}! #:ħ7 {>Cl)q1 Ofh0Ɣ`?lMa2z'ąDD0Y W_j@v(87B=ZPgL,=#;0[c&MSVAxs-J 6Pm U` XAj_|3 ad##Q$k^鯖[䏵`C[HI#0[Ⱥ7R54s_@<[690C:窵UǼ ZR@ EV4&3*L,:oZcfucF$/ymݺTW5MD_\sy]]d(=K{7G:ʨT۴ ?*ѽӌCӣ-PiV빯U(cT(J~'.[8-Wѽ[Y?vV(YpB";}Ӵn خw]6)o zAD#o< ,e!Tn#\}^M5--z 'A4HA2-\iܡi*!ʘ2Ze$^L2vJE`_jHMPN٪wVʛ*TrX˥!K BFLbg~,.]wü£JSov/߀g/~e5JlK$9|Xg5]:6wg0M+߸);S,B# Cݟ?I{ykʷMՍ{rs:QlG7}Uy endstream endobj 121 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/tmp/RtmpgU2k0O/Rbuild7fd14ea572c9/diptest/vignettes/diptest-issues-sqrt-n-qdip.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 126 0 R /BBox [0 0 504 288] /Resources << /ProcSet [ /PDF /Text ] /Font << /F1 127 0 R/F2 128 0 R/F6 129 0 R>> /ExtGState << /GS1 130 0 R >>/ColorSpace << /sRGB 131 0 R >>>> /Length 6560 /Filter /FlateDecode >> stream xˎ%qaLNn%[؀ h!haF=2ff:qIf;ԟPؙay^{ܾ{6ƣqlh>RF|FGi[Qg>Bz{EN#[}bjL'G\,CEz4^輪RKbltt^7i bTLit/B}sJ=<4MOD7PXys/?/}??l1]=D/o^[3 T{ ]6ݕ}.(t>QP;ƣo<=Zp>v(q\l37צ}r~wH$@Q&Skg5nbX<m-Q+Nrj+CsilUm=)6vmGlZ}+u>9Z\ J;5Qn|#A\wW~7~qX=jg#=ȟOOZ~~~.4I/V_FBĵ/_J|<q4i`oÏK8lv\q?~"r`)FWځG%i7ꕆ;UwW6zH?9ꂉOU`&\_^Zgպ~CZv\im/~Se,x0ww~zG Oҗz8^|Wbg/yk|qR8ܯgC90.Y?wMG%ؘǨG%بf{ 7P->:dM=2;KՑ>Wo)+w˸z@_6_ݼQ.X5D7%&2V=.l=r6M9y8l,p+)A'LX锹M-t*{NfSe(-tBSN*t*N_JxS~t0!: =tWCxnB"JO4Dh|Ыs>GZ)s SF%Χ=@TxO7|OUᤢ3T%մO@7۸_qY~`da5ʧ-+ VCadՌ,R`EVXQ9V\.s)2WXvaX5RCЊCMp}Ϋ%yU㼚t  UT! r*- UTQNQR$cVjҵzIlAfdNj]P2P^%RgPj^DM>i*L*t(5C.ΜCscRCi.P2P*蔂!9418PosAs ΡS0@ޢr(;3PsPWPΡ Cyдm8PcΡ~k %MƌC!O񩈗b|):U|h0OfO1P˪Eb-)&ySL2>$z6iFMhC.] QኪCY0`yU冇s$S1\QgWشPLPuD`sUGኪ'd>LqE/?gs:h?xEe,VLk/xUg:V^5|2^ ](՟'o?WE/U _WUxΫ&ALUS%Ix55@0` ڢq`e(@ 1`UhcYzÿt`ezX¥@6V")0 XU8*w{\=#=WLdyς6WRo芪C0t@I ]ĂsCW_553t !+gtQ l}OTtGgP ][ .;eCu(0p)3 ]Ӈ*]r]9=t["KkepItR^57Ϩ)P`Qwo'/b sW\} u&0`ѓO_̀y**z,U;L9r`5:z"S@3` (b`5ѳ``CS*p`a X3 X)ܚˢގa8 3 XlXZPs`.s-30If LY\,kLIE10]k`j:e`sY椖d񭃩'Ÿir-S`r^=)*UwiQE(M(x lGQU|M/7[hYB*1G&h6`N؏nȳ+Rԁ E zu`E0h@E 8EZ t-{CVR B8CT#neQDQk/8ET5e!jHCTCTNl4D,!*v *WY4xy+GTU!uYg`BX+2`UlǀU0-CH +LQq`9:SC85 ,2e"[2Xl+26e tr:kaXI ,p:u“"59݁>W`QW*k-V"0` S`?V)݀U4ńTPr_E (&"V`їDƋ ,Ż!yGX*t,pn;uI#T`e0KF`8DۀUd&,d: +j\~v.*]TnE/?:1t; 0`2JCWND#\G 1tM.ۋD]'UPUWt͖*6t-b>W#PtUlcHpU_zCx-;rI}.r'X WԽdJU XHXU?[\W2`~ΨvMnL';ۚQyShjQiz@ Xk !566` ,De.cQ ,DAzVHb[y{   Q]VKXYdbbk}C 2maZ h`<uI)Oͷs5繁)ZA@XRs?J&s L-OfLM=+Ӑ lxXUYL}69ԣxf&X4,ZMڀ5@ hft`Ulc VX2_V 30:b X=a[9iM:XͶÀ5`uhX ́5Vhw A4` ۀU]hQmwZEENA,*VWhX}Fֈ\4`f+ 'XSqU 8u`un- f0` }M1`el4RW`U,ٍ V-w6F y }Ǔ0igl5`Ei X#A0`}8֨Pڀ5$1`I5poss#7 ܮYѕdK큮$hptճ従tEEWst3طY}-Bij`>m Fm#r>%9`ܳh]^VtŽvrY\9Ѕ]5A6!#*V]9# ]Q!*=50kΒZL7L(m]lKMUt]lnՑ؊_N V%-K[W]]WY7`e݊JՃh*).;*XS`gl'`VUQY5os,X'R]sƾ%A3VJX+Bh XX7`q  XJ[րāEXlk4VX KnPHځeq` l2Lv(ه+XZ h`SYu=z^9A=-60UI%h`HvSY(650eA&N(< &;ty9iYNV0j EۂOQa?4rf(09h`YE<8C@((;U^P kEP09Ll(KE`KCQxe (gߘ7"kbOF QM?4D52Du+h9Va5qBTUXٟƊ( QU^Y|Bj Q@"*;tpI,d  `>VTqXKx [A&pcpDo4` (i XV;kVԯ X1@΀a X=KP"(:kxXQ.5` +u`~9VS̀uYk>"Vg5-kށ%eh́O[+8h ``A9'`Ia X [9kۀe0`ulk`+VżKV@˸dl`XBC}?Dm"ۂ$r`5,CAց:XZzeJaEectBגP8yzV]ID䎮vuqX%AVkuEw" fttUI@kJA3+8.N$[)ЕnJ*7t%st5A)tyJDOetQC̎zkjtqKF90qw2{?dK_n88'2N(k{EK7uM4Bw'S35Ƌq7OԋmA/H*E\-%R))Xװ8Js2Wxoy?c˿4,%f./ZΑUv gwў endstream endobj 133 0 obj << /Alternate /DeviceRGB /N 3 /Length 2596 /Filter /FlateDecode >> stream xwTSϽ7PkhRH H.*1 J"6DTpDQ2(C"QDqpId߼y͛~kg}ֺLX Xňg` lpBF|،l *?Y"1P\8=W%Oɘ4M0J"Y2Vs,[|e92<se'9`2&ctI@o|N6(.sSdl-c(2-yH_/XZ.$&\SM07#1ؙYrfYym";8980m-m(]v^DW~ emi]P`/u}q|^R,g+\Kk)/C_|Rax8t1C^7nfzDp 柇u$/ED˦L L[B@ٹЖX!@~(* {d+} G͋љς}WL$cGD2QZ4 E@@A(q`1D `'u46ptc48.`R0) @Rt CXCP%CBH@Rf[(t CQhz#0 Zl`O828.p|O×X ?:0FBx$ !i@ڐH[EE1PL ⢖V6QP>U(j MFkt,:.FW8c1L&ӎ9ƌaX: rbl1 {{{;}#tp8_\8"Ey.,X%%Gщ1-9ҀKl.oo/O$&'=JvMޞxǥ{=Vs\x ‰N柜>ucKz=s/ol|ϝ?y ^d]ps~:;/;]7|WpQoH!ɻVsnYs}ҽ~4] =>=:`;cܱ'?e~!ańD#G&}'/?^xI֓?+\wx20;5\ӯ_etWf^Qs-mw3+?~O~ endstream endobj 137 0 obj << /Length 2645 /Filter /FlateDecode >> stream xڵZ[o~vQ,g8^n7v.EME ZZ%#(;1sr(S>fd=__70Z0AnTal28糿uHTh KDWp#kmt6̓7/Dy?[yX-k?n.9L!QռQV  Q-*&HU.#T)|6Ka8!J(~NmIh##ak'DKu.d> U8W4f ~~x\7"<"Zd__e_ķ@w9K4fxFz]4.|uCՕ@&Br<t%"q+̹\߉ߑ"N*Kv.,tW \1\3.{~yNUcbmy՗jK9r?vк]93xI6HJIhf8c-͔ 0FK~ СTF*./^)p5V3uX$-֢WH!!Yٸ7-WIJ"upc_`dr8hudbxrZ}!j+ ^?x+HuhAY>W}C]Mr dtoT@zΐn!BeHn,D̓WD3kJNgiVHGy .McrY]sSI{ݮQ0N,m_{&14Æ+rza]wrYq&d(lM͝7L%-~)}.AKF_uH$ײ&Sk5$X(UE8#qw;)Ux+9uUy5i &ϳD~ȷŎ%²()2*.ƴ.;)!ٚt] qYJHpvQ vb&AS]x%L/EO 0HQvCbCү3R;Kڕ@9J ڡ)h=1*dٟW.?0^cjnw~- ;D*zŦ3 N[崼e`ɒkp0`E{p'ayMc,MR*洎-a-+f.:Zˠtqqͧ$00F:uAd7Ląc^ |&8wx__wplpf"|袁釬;<luZcr4͕C0B0z`3 &q!S S>kT%965e@GF ܧ?5'$ j%on D3^փ 6|% hGSΧj;߯'7΃'H1][aӥ -GF $xtRS1T @^^ VlB:Nc-0^S0m5#V.v=V5( CkΗ2ƭď䀘uN0e~@9>{$M\`]!}{uqa!\'oSłPm%4.0=eߓE qV܋}cmgd7eMJ-lT7H.d 5IO<_Ns,^˅ෝHv]"pfhLu{\z.4BDǼk/X ϲ}S-1|{Ag[&e4f8mUڜ< [O 7YW{> stream xڵUKoFW=7>yA|i#QId9ECzgv"i rwvcerɳ٫R&J J&D{+d"Lf*Si &ˍpMbHr)lIst'4E|^)7Ѕ(R ωd?KV[KrD= i%`[ekYnaT&bߏiu_y[kyJ*Dp; ^'FlZ_WE{d|ݪ&Ydc8#8\k)`')mmYR..o ݨgdUldhH=Ko a}AʨhzKQ#a#^4o(:3ORxhV+:霰 2 m%7Ԣ&Cq*6KuheT(#"B2vh{^AxDNҤ=)jtqAuՊ%6PEgA".f|Si7eki1`ARV)}/ yiSpBzȭ2qk 0%pd'PWM .&9c,V Tm"'țNmpk2T:ovta55Rh֭t␠:s0 g3R"@ Wxg[dN-bvDp.~^-9*y,^Iy,)Dys>fRBЅGʘ%Iu֒4[Kp{^A+#xV^"rΉªA%3ڠQȃXJw.4:={OF4jsjwdkL \7oSܧ+эcM3t -೺G378g^t< CQc<7l}YqƆp M endstream endobj 2 0 obj << /Type /ObjStm /N 100 /First 808 /Length 2256 /Filter /FlateDecode >> stream xY[o~篘2!R6i\XKi,_,wť$ڴ)m ̹fF1y%KLǔdGL)ˌLfa*2ӊٔZ3.7 R3#Y0 0cYjX,,9'jSZ% 6J`H\ޒ )0geK`Evƴy|k0`=ƨX c= .9"@1:H|)i"tA ɂLSY@ZT`Ȓp$Mr%?U9Z>ֽCZY}0*ui:φey1,kY Zzy6Wm>ʚӬl?7.h"1@hXGV5cJԓbNC1뉏H[W˾nF ,n'jn2ojf#+Q ;ZZD'j^N]?BQ5(~x?e] {7Y6wS?FUlW`t/f};h;ϱ%g.3Z{-doxYԗ~x89 Fj!8oE'¾Ys>*;VRLkdhr<9vP+٬ eV^ f5rXa `ĺ6/jW R3q $5{%e[4U; * ; #v_â9e> <@ީ?VZ+5 SrXn;#TFr-#rj>:FO FSxF-˲.?65eKetA6Dp0, oM]ϟ 1)j>.y>Z5k¬Dy-'mPh-G6qU m*ԉea:zCPEnK=b)bz!E_88YT;ws9\7o-bF}':]o9z;h:zv/thGyOE]8yE_`3D,%RgͽvX6OU،v (G4<D`xqx0D/M69|?Dܹ6U>p8n7pܖqg@'Yg'ϵT8Ri9EQO7p~^%Zg G_ zry*i`SBK ҢdSM#zEN n6?̆刺<d(ڷvPiG_-V̎fbI1Y b9}=5NVJ(=\deaQ $'b24V* d!+FH,H;|,*C8d-,gYNe-r&[_ΡkWwCI5roxκL-[1e_~NB|6E9j> VgI2)$T(}WdsWhHHGLra܏4-HM0jpfCz8iyHU\?r FֺmeDڸmigڒ{% m$ g_rՋ'MbF$椾Г-]B?!0Jya7nkz%T՟˰iV7|}By2P!#xpo |Up2%y9P^yWGۻkE]:NpXG/ >|j{榗~{mN endstream endobj 178 0 obj << /Length1 1507 /Length2 9040 /Length3 0 /Length 10046 /Filter /FlateDecode >> stream xڍT6 04Hwt 004Hw4H7Hw/}k~sgu-6I,uqs U8<윜 =o9.: 4 ?dGCU#@psr m dn@u`0HC^NP'c`a`T7 poG1O8`H?.?'G1beiyymݗRJ b{`~ ?|;:WhY=]_`kAK \0_s|p??%V$joO⑹-P>\])=up.H:Zs9[I?:V@~?-6.N=n?TP-~0zb<xq=#P 9{|E A~_$ 8,AVPW?GKp>&rW0A)`cvj)ζ]U$;$æGf6YX3抴˰KɄ.܅uY 9{Z8[;fcF%kz))ش%u4"+1d9 <^+QSo˴]:HI I(\3zI$*xD,d~{;KJN{W&N@ߑn ׵U0A b(D7PdN񻾧ԊGl88ig@"=@u)J֖ww8.`D7İVKdmQllOl KB=#;qLJ6FuDcfm!cpzwRK>.sN:P i܀h({şMާk5"1M&ؓƆ)62B :dy2qFɦɅ-i$:sةp_Fj2w5:ZͪH[OA&.UΚc_G (~ '10TJ9շ)+jh*J/l'k0nʳ9ԭ`cWd (XE kA` =9Ay:k 7gvY 79T *7'h smbwaWrrRz7\AZT4Hy,uO GG7)%CN1\Ƚlmpۼt8m+Hz3X6Hp%/mМQ0>Ѻ x's 9jǔrBlG}+l;׸6 j|ɘW~^vwyo+n=Z3  LB+[(8]=KR.k^x,KGIZϸ sn_9Wh ygOi!uc(؀el]Lأ2w*k%$,Wox^0%;NZx΀)<߼Df)  6G\gpK]`*c=⯱Dh 8L4sJn3.p|>~tv[Z{ie$O]2[aɪxxp[dcϯhk޲USTF$DE԰6Yپ9lkmx9NӆI鲫Ĝ,t H1F`۾e hD#*F?4ϩ(0k\HG'R+?uP$&Zbl龰ہt"xTF[4v&6H۔kƖ/;z%zRYć86FZ0귷d.Āy6{"Ily_!3' EO=3 i~"&S~`)?牡ovF;2lt*O&ϴ 1pM :@chc3]6r7q d W6'k-<SS'!6P_ֹ{}\<(8ĕ|s3떨7 knˏӫ몸I֍&Dlcl?`-DWnXƮ  n2Sdc}jdnHot8 0Sʤ-[|@%rtjqekmD95|Sp/b,ߍE̮)"~ IMtV"Ov-MuTb̐!U`it Jt #)%Vo:i-;R`JjG*2L(Ǩ3>裕0)CxduSƳ؛w51aOK 4 :d-6 L;35U9ڕ$Fc!#fQz"AXu[]2S?]F:'ccӡRCa'msJYgwk82;A~c^4fl9,ΈoSI26(feñU'0-CnTz?m۾2|R[]&ZXp:ZI`ЗKG!.L2Ζ,B1E "pV {\ľ}zJ e~ xKȔHxOR[F-NRͧt>" K'ty_|1¾B~F ~J1 luabBhIvlf6,yq{0!@ax/^CAC—T=my}t$5`gF1vM%geʓ'9j%p*_l/50L>jM;AFԬͺTڅ[U9=g*Cmyd9k+!w b4HZ2]w.@. ^{>xf[s@"@yiU:(Hz!]D}HN<~D7s?\.>,ߕ l ,L|D:$֣;?6nreH@W9m$ҭ.3t8tZY]|xaZ%ŠW8j\q͝ L 9+ͺr: `oSfɃ8餮h oО!piTQB2)e Ο{L"9$_Iwvy|A*VpD*6+͗-uVK)W2dMA ?ٕ{K2ݧIdЯ膎e}ws6V|﷒Ѵ0~G"aDTQ⯡F_9\EVdzpBE0)س8D_/IUwGxzkuN#kcZrqXQÒݴIeU= lz7 `ğgV/xFK;etFB``H4ZӉCɻe1z{t5O'Qgk4I3@66 $E$>ﬧV]WZ#EckgpEٍQ>s cB䛶6sAPقV|UdU?qoDP#|N~iğV()*b"8ʅT@'5GqOٞKBhdos禜N?_G nj\Z,R\xE ,\F=w1aL_3I;;ҪU9hZ"t/}jUڷ=#\BKIKh":}%!ujLhBq٦7͢j9|nU ̤.3(՛ޱhVf0Ye|ZutIc$47Jj9R<f|8P[WgtgWuJy!wXw8ʘ׆eU#i g>3G%Tf\DI™BMIJܙxܙA4i懈8UE/H{^k]YF"$ 'Ӗ8?3>l[GgY#}8<=$$Ԁ-Sͳ|³Cz>z^JKnbF⑚"ts]9K_:>EU&c-twX(h 0TJYйVGLFHI2e#&W'@ @3/9wp|z$G4s|>{Bʻ+-%P}1bV\Fd=nf>!/sq<`LQZ_/óx''xcģu>A0ZYKx(GZ(DFʕs 5k*OH`z6s]B|S0#&t\d1 (|pqN kwFJN 4%Ø;"䧐-M(Gpwmi;o>\)#@ _Gfp>ʲ|ryo-m΂?N&puȜZjlk>MiN%]re䪳>"M|}Ç2j`zѯcN|B (VU<ˏ5]+݈u卩%TzYM*E'9_WQ# {:M2ʫ.I[ wr^r.6!o7H+œElMRX.6Q'NWd@plsXd{B0H ƚ{hfN7jFfIe Uk|O}ݛ0 HV@zDP?SȇVy1I`&]ĠAl3Kgr91zW$T% ;i<4GOy $*e.CnyB'[޵MwvPA"\|S*+bg20Z4 1Ïw<睥Q%lIGaJ2|3s[Hpui" P5=ț?(btۚKs 'ͫVPNc{q}CJ"Ynٞ~{73wCM5;'z ~UnїP/g |~\7LF +d /E(=7F>ou,H9"ln{e:7`^}+J/.k"yb̛ZStdK'@dM\oJboX(/<9HrrV6O 4xq@F&J*w申QN;l w΁'c0 y=2:zm5<"r5] 3̬]/z,UӖ.t784.=d~Q8 8e 2^$$[Wh4֋)ŦLDa-6kuyR)=KuHȿ`sWS,\Acҹ~*L]vo 2ޔ8 D?TWs} IigAn7gn1~G1LU&a'c/yqcw: mnK hDú1Soˡ\fF>5ֈLo-K^\heAP15"p"kK)~=I ʑV*bd&:629}6A.Zv;7029FƮN9rɣh#jg_B@-xJa!-5d2>6/IXcvP~. ADy˺%Z ɨ]>ݡǍa`{ء8$jtFLqwu>5o``E+qJ?Dxӎb))o*dhHsQ',L|q8d[+C,#M?$#RG2:k:|#IݣQv1uOq%qt  `UɃn/$$7ߦ8c*tؕfqztjUDi>% k8g:ꂤkRD#}Lh0%IJZci-Dq7E"\ YeqG^#LqCd2h**_錞嬴Tx^Xjyfo(B(*dlM*._ޮVO!\Jh\ ?-҉wDO4g-b:w&F@FBF7m+j>8aCh5=vq8.M鼞̭4d Y,1lBe}\æHL7"ɥ#bu"[ge].諢R bz(Kh0r%&;0ck$~,~3Lksqx^?vN[bK nܵ:f}s(mdz}qjbbyJ@u ,^ZJ<9-|h 0>:U~?uLo $PχXɁla1%2ʠ:)H(Tiѯ|碮8o\ Nԙw6m)dN 'pXCւ""1 e&bCp)GA,mGD*41uNyz`̉e/\lc.`K1/ȕ?tg9A) Y\;'OdM{Jws2ȋ(٫ q rS,7^IvD㽖lN)9B8#}_>U ;ܰ$Wkщ9A%3 S ! Ώwpۯk*xkວK0psg͋%ӯoL&ӓ{oN kݏkcad!NrЦiςPO &L/Bw\M5W4tSQ[r?< D4=/6uC ~Z9DsB}U;W.4;3*7=V6]!Kg3{/u>ہ.W{0'; .|"{CZC郬=r xt,)M23"9jin, ĩ *v+)뉥:@80.[kDzr.:xBg%jطK1YQ(Z))Q ͡;IfRd `K]ޜs_b$"^o};Dû5T૵˲i?Yv\SY}k f­2twօؔ-Y$FA@g7V&_Lɼhٌ?PuɳO]]Fɡ⿹؏/ar} [ vS= {~EoXv1cħI#*ȾjTi0)b+Z790>@Fn9g}汼 s= endstream endobj 180 0 obj << /Length1 2103 /Length2 14092 /Length3 0 /Length 15376 /Filter /FlateDecode >> stream xڍP #!]\wNw N.%+9*սz{ *2%U&S{c33+?@L^Tʎ@EflJvC :āoDy{;  `geZ2v '*1{950-MvyD @?,,nnn@['f{ #r]AJ(mA. fa/ l,M@vNo!.v 0t@d/ܿ7_G%diw0haig0%嘝ݝ@;ӿ@'x+hF;u @RD|9-,m/6Kؙڂ윝O 2y˿/?2L]X,]@漙A.VVVn>r7`5No5x9;X x9]Ag 럎EllSKg1d/v`Kw.X' 3CYĥ?)0:EE^L\&v.6:J@'Vt]=^:j)ؿM.@gXXM~CM_*3tO/hkio8m._&_+joc}]3o-$-AJ&Z4K;_O ޶pzɿ]#%LM2v.n z ;mMAO1-V׍rsXD2 X ޷,E<OEAoE?MEzSQ8,jE|o*?-3?-3"7[Ccbk'Noꦖ 0eCbߒ5D,>_t{?(o |  ?o6, |V??q߾~KvO G{2A%qѝ^?oG{{X-t g75 7?<4&.`WF=LM>[U1IJnwy@M \߈$lK^ />{5Æ$*>z?ƫL",L L1 z?;zkXC7CvP8(a޹I.(Vq">N3EGP#D Gq:s}#{T&8Kg=~s\ݩ _clKt?Ewޫ[Lh73b&vT#g Y@(ށaX)ThjvFNO3a>r3gdL&8HhD=,7$V}~~<~@?4M}«pqngbB.KJMDPmh8fAI@%ƫ $aIXͺL'kB֑IВ0ƼڎKi.h*&݊_ݨcj^nQWQc ry@Zb %<{Uѭ1xTg*Q)ӐOnQ+&@پqh&w3M^v0pW 7hR(2to,R_ܪ^Ϸ)~Nnmj*0jLV%i΁3#"tac]"t[aQ9i׈υ!fFik(Zl&,`_l-wǿAkKuNք&b~n)@ǽ+]Mn!OBPv#.T.hהkN oM , IK,}MLYGŒV.^K I}eӢ 1B~m&A"ar- :Ybu6il?YdX+>ѹ( g|^dh#ʆ-dP e2~"G0w]oXKA:Jhtfs Z}\)*:9bkn珜J"InƝ~9,%|tQ m=oU(>AJpza9xh0 avm-KAf4mt3ΉS,3L13pQ N7~ kBIW93fiOD4&˿1=+KtW8)[s؎uYJQB2}ϣ]K2dlIdFz1cl+ ħun^"&*]}2P #D0\UTD%oRDӇg5YaqMs>{ЫC܄[Jip q7)mkC]*C\O]™rtWٕTWX2+nD=/Bz_ yGF^| )˗dDgMN>"rʲ^t@h t2 ,@J rƱ70ܝ(rJZ(߲uBMo}^NpdQW+6 3qULv_vԅ JYG ` FHk|SLIt.5]. X6׿8{9%ܩɼ)w'x ٍ WǦoAV}*gvi&9R$1d6>fA%z׎S’,8?‘(NȘt ⢉ѿRA03? \%4 FKa&G0F/\)TߣI_ʍ2ΙaEM^Q-JI&uT; 1]m銽R?Ri}:կJ4h"bhqR0{7@U(39eh?xhdjhfL]T)Im2(@Z KRYe+#zWh367 1pU}xIc8jϴBaB$#H$l -zcх"W6GGzF?zeIpz+jյ[@xL' Yjkȵ)𽐑* Ae`qo/ "*gtU@VnKcTύ͹ CʇN rGYkbDs5ܔبQJz$%7B J%VZ0ZN`C㯳rOdfx d"#PHB]<)@ˈ)0] q#$Ku֭P>)onRހ?vcFp#a)vxSɜU'ڸ" H+ianS;Z'L =b谵FW~]Kݢ*iz\Q AtEaH6/O[5{9lgƌAaq@cױ53N)rZ+pi /kL cQY!1['<ZܯČ@bKȚ1K3U$9ZavZ$urGQ^6Tpíeai86TBLQރ<,{zrZ/Jd)pOe{[zǚĈ6T03h'!Vܾb3+ 6b=P[V^H&5g%3Y <*f|/uOJH-B(eeл?]ZfCB:sdh@h_R|L n3|iFbQ5Vaa&1 É Sւ7|!>XݦՋ-:C*Y0!uۨ\lDĠ .)a/#es2ӑ.߅mpY4gsTukR}ӉOTSnCeM/ÿY§ǬT}_Nd<B#fElYzfy9AL[PE{*ȭzYd% &7@ MMN@`?(Qۢ-\s2x% k#h0T@[-fٚs}϶b*]&A*oKkxu99Wbnץ.NLBwMa۶vVvfH*RU*Qx{Bp_ʢE*`GޣaP"CbMeRiF>h"= 7tEPa:[#))= @E>u2WRZ\bяxdli.y;+3bڵW`t)s0 M|}C )o_LّzgM^мFi$~Fibd;? F4g 3i7C&SSӤ;y%ףhG[3JnY#;LvJ(rzJ? } }ө0Nnԓf^Y]iL"a-$HHS MVGk߈b1d[>9eEtor;}*%s#Up,Taqw\- y~s&I'Чt_l5g>Ox ]lPO#T૓o<̇#"tB|Z|%ʷkBXuOr*P+NS~ hyq W7;9RH{Y3lp_]EߗoAe 3(e|-GTMVKE"ϘmЍC")4b)]Yk\ #+UXKw31AC$CI\ |I2V\vrt>P|7c˶# M䞑/mlοqp]8"g o&n-;U7Ծ |`dÄ-b{Y߸}+f36@WfC-ZG#-"1;bUTpQ>crJ$W;HT:9cty]?Bzp:ޑa]…vf! AMjTuuM7-PU֯jfbWš`ޫo+C\^Q8hoͣNU,!L*pt7 9])">G`X JiO|8v⫎Jda`.)VU|YK:^B}J_YK4E_X,F:y%faAy,ۣT6`/cCP4wh m\FGl' GS{4N8ݡU}Nj I^mxF(`)XC.SMShif+o_%q$8xVڥ u '{ @ԫ y|x9YPxz(b"j|JfVRIN!VVX}%NɼV\R◊VԞ6u8+g}7d V;f vhT\9ó#o; \O6pR#G,MÚBI*bEvx'㎄ ( YN|,_ K/Ƭ"Ѓ? W$'oCڋ!gOgSLX"˙vGxg,;dQY܆R~|h]߅-4[ IftVd {XU[D,z6H+2}Ver }c98\`AGQZ.MY$#g 蒄Yӂ~nTRgc9;B ̱8tC({tt_yLp\xdB#Ҡ^9s=ۈ%ǴTچubi<ۺ>g(>S8hZ@Ӡ#Xp8)w?uA\1|d:ήg0k6<1B.?> 60 V0Fwv`^-a6dgTXEUdn֥E_]]ژHjmb|F/#UB$Gĝ1W2H γY}=fdOkreRi7A T6qÈ?vYMsE!7/IfPL0'fA>dըy*ʗ[&HL(|Ċew%`ܬ_ɘó/z&iB_JnêB*J.jk>YyPu2oF3RGZӕ~Fa8b! k KpVw|JtxX`ux9{s!g I.tY~ F&~[ÿ́z*`)`1P/ΐW+_u89C%;(Q|>V'0y_n,k=Uؒ\h/2^UܭcDK _y Jn+l<) -a`BZ+$E*A0GP$̾!QQɘ˓:^wK4//&QQRb-f} &^ٲ5J.<yY6=G3D+l7>迻N(n)7Jw[9Bsơ59KM*sbPYN+;\fܺo{a,Y H;ʕY5;GJ>;`k| XV`PIؕ$?HyMD[}`]S!5D'ߣW$U=5ecE/0]tjlKƉty}5QO4x}hň.6{Zz3S@ؕcy@r2{/eJ' %i_me%ꚜ~WZB,ݹ$4wL-F|;m! k3FYIF$31[:&sk!`J3Us`"C76Dڷ ̀+$iɮjv T#^ZwKo 9Ka$6XqN$D2jg$cuo…~'z+;|=svC۳V%ʠخ""X/ d8: 1ZԱf=kāZEX*j-[- vԲDװ5M.z3?{C6=F3 1/H!Cqt5O CẾ)'iF<4EoCSxH|uޑnHS=:^k`*V-iodKCZy4KńH97ЈxŞ:q̂=s iF* `TF(߂0^gVyFTQ>ԻZ\c}}Zɮ34 VJSJ]egw12gqbŮ|9U=g͡-ll?.2Lx#Rg=8*YRc`8Eޙ v& /{^B%U K%iy.>& si,"Դ)y 7ؘ| ^Bt)+aJ%׭͍u>~5: '`V*|I|"ы;( J־,+( @Xw'u kS:bW+r:zVO2)5W/{Q,&gV=DN;sLDL/7bbHO\X\ˇj }4,TE7o&|.AG Or1N+uIF5?Y0/f'w}B"|"J;$FѸD=j m+m7Ob0>(2aԖY HrG- s5JvtEs刡(E>vAF$:Lh&X$#a.f"D6a+m'N:N7$Q?<+J.w4]ȷ1 wY$vIOWVN].ȇg@ L*MvNJ&9)AfO|(̭AI,igq%-L_˘=BUN0SkN\$ʍg%9tD6/\ 5) m}j_-m&k3r<.| 3؂P~V-F3@d0֊3ʨv:YDq+~ޔ)ɯi֘ ,ĈaIp{9V qU,@9`werݰI;K:g2=:;̴GԾK,ތn3 Ft* %Oer`Pt3^NP)+<; Pv&#`YdwGb,StϥGp]Yے~3M@;\, /@[iTw{6lAByYeath;jsM>xaT*~g(#]NXr%RppkB/PǞӣW,$^#mY=TB\11C% Cn}Žr"Gr U.$Nǹ`"'.jZ fy*-O!SaP=+t$be횶>/iTOi #"NeԳ;XΎ# m(ӟbbӢKcnI?ystWtDaB/2̱vM\rëzY sBviZѓ`[i7Qm0F>r9-VKM&eY%wo!# )@0Bl1inWT^Eْ_1DB2)C_7F'pNj1:4D|IPBBuLU!A h=:QGjف/LiB$!h` Ƴ)X L[Q= GP^~0և+`_Ъ0tq[4YTFyOc!_( +^!u|D*t ~%A3; V-q:$٨2\&VJyZCk ^BIp#(7{|h*N(jÒ\.ڹV_^7׽(O5U7~; `=.AJ̚v3Qwf _'MbwI߭8ƪgخ!,3*N&!H\ۅ$&O{EYZq&F8[T~#Oi%[!fӻ:<"*!1^R"G͕4kB]W=Q;s*umF,O5nTj:8UgO.̆6͒gHP'b^]f_*HVkHSk)9U KAD8۬qE~p}}F̤Bu@S/RX׎ 5lr4RHS ]bs9V61,no%l(GUhW3ߍYt%sZttd8KsuUs^ME] ЮS]_|#;GŌ2!Rp[ wA :a|jCH:|+$'Sg翡%*Q ˊj9OJ >D&<4m4+;ք'2CR~ >_óՏd䅈^d8hЌ0 몉!i d(Q[}qz(]>ߜ}Z~Zp&IpcUsގ_vr ~淬G֙8(\| ƈYd:K>Gz4OYWp5|{i(jzKxԛ AOV# 9\wm&Ι[P" N6Op W2(?BfS|Σd|LJ0& F3Rõ\F4%k};( 1gi8,jp׶RCK4 VD{a__7l,YaCYERo-W:;ga#'sp~y'sk}Qrlz''v[Hx9zۍ^ m2Wy}ڄ7 85ɔL52U)JAa33V1z/d} İBXI*Oe pd=r1Sި [&͇;.^`;t:KۚUFDSEr Er!DԚ|-WW_2p5G-NJ"iaZ}V|pڞӽGYJV/M_ ͛e!pt@y?~OwC˩4d^ ,"z4= *퍲̞ݬq:ħt\쨢g>IO_LڢIPXR`?f-1JJƯ:,,hB ;" '>^@ E Qǰ_XUXkqbiuI_eMxřO۝s^bɸKRYeHwn@IBcd?@ӼkhbYsݭO(M! /-)$?ʻbi|fg?VxzP`%zpQV,lHZ3g^%KMIۆwB]fyApEgQSheFvyx'l"[(\䈙ywEm(I$2ov˫ˁ _ ;ڼ9s^M%sH/kSܼi.NU<痻~7>ݾ-}}e.8 #\&t2E"H|M Hp endstream endobj 182 0 obj << /Length1 1415 /Length2 5949 /Length3 0 /Length 6914 /Filter /FlateDecode >> stream xڍuT-UtA){BP;4E:(һқ UA Ϲɷלk +# !y|%s@@@O@@t'd5 pb(! $: B:p@E%bAp$@ u407!3uvA%$x~< (耐.`;B*!DzJ<gYN0xCG ȟY.P#w(F!zw6@p@>?d*NpO, s8A!=Um>?9"ܽ|/r@~*@ F@=|P_3*>fCzOr`p?k GO~' AD$DE/kOo+! 8ǀC B7@"| {E`$ :: qk`% ϓ Zap{迯BMnjpWP+(!* .i%kE=p]K.[ _oNW#Uw8_y@0AmGT3_Ձ8B}<@vP9sPoU?Q&A_o/P@0n77Z!?R;2(@׌^P@#! z`AN ~ :!οa>ڊUnoC 0 ,qVpߏw}LY'/j/igĩBpª ljG+Nk^l#KsԃKw x7Lݰ[15Y |I)^7T|z3nQ+ub7$:kC4 -$/=>o5r& ,SΧ{hZc`C)nfiޝE-L18yިY#|PFj3wLjR% vT)8jaǰY[X|=TDB>qGY E?Kȣd-Q\#Є. %AǏfɩ-Q`c.2s_'ǜ9$V\Sr+W) ,jdأ_*aAɗ.cݤe,8;Gf}yɜR7}o՗k*` "Ms{n8)["@*%AfpOU[)Ii+=Rrj0'[fWa_kPMe&/x^?dQB9 e;e^pjRǽrxnKc 3.jJa4Z'AlT/t.yblR#J@7Lǎ y9pk}UAZ[/d?@5ݟw%;"({o݉,s^(sѷkhx})?+އ$3mKrlGfa\˦RGORl_ YeYW1zsd,A<(1Q뾜Ө g4@fqG:BaLG̸A1oc)^;2dyy/?j4lB4.xq牢ak_qN5};6zrGGtY4k1%/k=S_owBwq8b:MRyh%0|&8;'^ gmB՝πW;NV];.n n#Hfk-(  T1Tc;_=} 6w6Vtujң,5M%s9"{\5:m6rۙb7+?۴ͯ_V8L[x!ifbqU$ic}G!J?\\VjI*V5uݞFWv{hT+B(CŴ0 jEnl̑QrEZiz-AӬ5 1*4ƤRo6wsaev{ H6*D䰌~ eO,YiWڲ.9M5),m/)!R2Ė`?kE h NxT Fp~#Q$ksO%8ҫ}Qn a{hw;.-/:ZL"u4N#*~K;M_*62&J0Kߖd*mTHNnJxV5Y I21f^܆za|$טpI'N(dlvLK'J 6E2Zq* 2cou@ܦVx=@\ 4飢ٖ u6#qA #(G~scAqzx5Ul=z^6ى71CbPLoK-1N)|H!E{-!#}uUqADP-.]ÐzJ$|Bn >0  nwKo0j=FQw ^I]7ʩ'}Zv_0m: h|tw t67j /{OyK@1+2IDh|ZYu[izyUS/Kq VR7 ݧҽyx/V2Sb*Z#fF<h,UOIWLVٽڑZ_mh3h1oz-_BD6S66૤WL6|3w`mafl*MSIi) <f DNy#⴦IrT:R&v١]můOruw>odQ6bm7;Ç+GfHo:1ЏE?y{Zڈ/n۩۝y5r|vC}o_ v 1r)3Hk‡(Iũ3沣C=v@S] BQ[m8w D@C=Wܳhjs9`?@<W)Y-&LLJϭw*tw6מQUi8a'$xϩv`h6 =Ji, :a;tk=㶆-9ܦg3gy [c7C6q}F7-# 3v{Wf' Z ny/+hWH\VZ4o Om-Ιb-j|:}<Ψ: ȧg6$AJ:fҤ'mz'~o#1qmC ײ528"hMdAv.bsIs5m0軤՝R ?@XP874}O$!%<3A+|Ppgo'0f!x˒4Bt"?"Sֳ>WDލ v+X),JϲDRozJ$%"yZP*RA<8ߎ8wy\Df8R=v*Cb[XFֳl>[8^cҒ͵d+|BG7Qk\֏6R85սvZr b ?Y~Nwuj~ $%azˏ4Iz5l_sEeQ֍IEKoP>BNU x%=[QNB!@Xb 'owp<e54%d6fȧ*NVwZuYUSZl]X1^)YJ ʹFGUtJ#M)˚ 2"xL}7K\n9Qm}ZנTŬc\Y!pB;2P j1^b0w$k,#4?7lġJ7^P4Et:9!\9r)Gw!i-T$_W) 5EHׁJ9ob3G _WߛRclƯ3pYQ|gQ08|S8Ś38X~܉Y1}G>dO{"①$j-MgVԠx3D޻l^pSW\+F-< ;eL W?)QgƲMr(hZzdkO߾L`t]{Ƙ; $xD"SEvv` ۫Hn[yػ&h8.a׆c}hipG% r/v-(73wJ%E;eg{eoXqpW\ ]XҌG6WmNDvuίK`{"wi]Q*;,!dp -j,}rwDZMqH17r`Z7r}7!o^ύ 0R`odԩH;lkN6ANLڸ[_ђ%TLNFFι%1keZ ,WZH:$۠4~oβޮI^NfW 4>$K|GYq"#o ޵*Bw\s}3lEN1/D77QX_ת|/o޸~(m}_ɠo q(G =޸oYRhcWy{GH}?Atz뙂eO`L=۝@Qj b2[S㥝Y- (K}#SϥRZVd2#iBycz k柫/zFsMqɐaʎ'VPÄeY]BΗ2޲\G@̄[PgmDw3gϡ=^Q n}dwrBCۦV'77#xOܵ |Y %׭{ #ߟ aF>y8Niw+Z\1%RD_J{]0i&3U(rzdQjPaޛ.j12qb#Unr "JI4iYv f3k3HY+P6> stream xڍT.Lq)-V(P hqwwww XIq(`-n n̙s{WJg~R]E b8Y8XR** vv.VvvNLZZm09&.8 B?ʤGC@ +'dg!E t[TX' V p@oc r[*@-1%^ aQfn @. +@G_bm?Zkx8-ANG7NV cv2@ rXOf_`;_޿pZZB@' *oC tJh Xa`=x2NVRGG>i =?de 7P6'_6"d6 8r-m~'Pr?@֏m|֠L/x[`,@6`'?AFd0+?M[PWQ鯖VJJB^,\Nv;7?/_'kw>jvm࿃B tcvv/gGQLߊd88:k Aؤ@|6'MoStAQF|6߈GxI8#7տcesA#C1xL>0<6_c|8?qF܈ ;szb)dW|Y)AƲ6$rv2Td5[NΚQ*5kStY:Z}B!iCa7pd<z|IrnuHv 1+n-ޯ;&)7Wf) o^9}:clJqxjpf[RonHE׀C8P+in ݹg%;x^r;VR.UmWwL(l͓8v=psi.yV9Hu0t|_dJ3#KoR{UD?|mvAl|]*DŰcXC=wN=ypc 藬TgW? Y!潿>'iFt-AbB?{m-Bf~8mLUSv`䪝l`$je* l\]YVIZUnÂ?K@,tڐ0VE:TUl#kˆ$KQŃš+ݢ란c=*=b̎%PTD{`yqL^L}6; Y*;O6P8,Zˁ歶%oXѱ%V#y\`kС޳n[O7fݤܞ['N'Kmdf FDOd=0k CLozdV"k86>4"!s5m&7w3tq42;ޗj~($K&}8Rh|͵W ;_6Um@Fμ\473[RbߪOȊP4 ʵ+R,ܤ 4 S^xD쌗v`5jȯ^ʣ;ta+/,Ϭ~t[ %5`c7nfOP^(|}F d}ӎ>P9A'ifڼ؈C4V'1xKt<-CE#dq}O>tj˖[4/Mݡ8HY6le0b$E %_A tsC{zi꣒ֺ&[mȈH+oE~P|TtWw~~<\/H F8.,u+x\T.V~~;!&`9Ƀw&W [SƯJUƧ? 𿐨r13~pa-/xGTK l d[Ⱦo[I86;V;~l/s/ꖰ-K oU&*ӂ\ٖ]Q}W=֪*91TŚ; LsPj wB:ARPBR-:Y#Ĥ૸wbC/]"ҚN?Z-@\)-}s>mϖҫ/?1X t -vs ʌWUSw+ǵ^VgTB_9{dvtzznasY`.!o @I:g'd$ /!lB# Oe=h޵dSBDruw^#v gaHO5^XՒdH1Gw3@ gD97hV凗:e8odM,G5@|T 'ѹS=J1!e1yΎb'<+/d/ 57/ ^&ZO 0Edq]8j){Ō"+u2)1޽@aޔGtNQ|&N@ nVXO͆e&ekJ-g@yTr*tcϢ1 ;]l@d]Q=%oOѓCZ8ZV'ivIEu/\wyP'@*z,ʏ՜GAZp/]M ;#df ن'f gZpbKRn^wemioUߑD(GeYsJӧ :ULf͂ˇGʢ`؝сY]+OdX>= ,lIYu|{iXK-"nC^ 00E'G3:fpјH_EȝXBu(Y}ǂkԐӓb_|zӤD1r^|HTaX;:3&q\ct{4wa8\FUjKԑVbyzb)wUVt-z yq%/{W[ٰ kbu2^<\_N^S"}kr3Ksn-:Ml`L6Ay: ZyA8u{λ+ղ2=0pzW 4#`42 ю D E\(kLvZw{;tA? !&{_r"]mn3Wd61-/aDr!w^]dFUh5fhV^ì>4vT1E\_D*jq,.NG0g< ٥x#ïM5aŊ*;<"zBjjUd94d pO"~Dex 9\Ǒ *"NKM=yd=i,"-%.00s r2tb/KH͓W") ʉ@TM8s϶$_/tBXdFHւ!MxV+n[8ZE*;su/}3}܊=7E^8(./^јziRS,KO&/9>8_3.Tqw*?Q/kʲĐ'f5} '0K5!Ȇ=WKx`k,gnH_QGCpgÅ_y`D k[d=.BXZ܀X:k)LդTHSpKCjK{SJz6 #' [opHrܝ ۚ"H$s(?({n1-n8tNOʑX])eyBN#{rį`ʔZUi1j~o??rM+El ?ϋ]mLy E$6>5OgbulJ4]}#|~%)"@svԻ&7e 3QnR+ {v! qhwpenIq&6EO&vCeK,ĝ4N4㣜r9=C*k}ț6~*jR'YIgXa%v~Q8 /Q5?Ϡ~3:c[J(-O;އhkbӕbAgdž>[B?o};-bjݽ8n-|= HVRV2?^>tH^=MʻVbx87F&E%aNufH90)ʼ+On:LkaKG/D mMeH ~Bn62ʺ6\s^Dx86}?9`U*9+ J0&r!Ldٷo=q\t!4gWпKuPWoN-*~c=+Tym3,:XÑMc"W7vD`|g-sǔZ1&"32k9Y:(Mjv3+bbAk(MbN=ޙQ'XDRp̗X b6OBnCeX*j0b{ <>B厕|r4HW{ ?lv!|f~'Jv"She[s%_v9er C&4hL?fa#9N.PHYѳ,{r2$VCVG䨙+DJGtTQJh& J-W0 exW\BQ/UHL}_V݈ix`-)ZNz+͛R962no..b5IxG9&\ɨňmztFAmoCFz;)^RTw*Խ.bPEl9ȎPwP;LX C/hE>#E,qq*Kil[OO`_H82oo: ~]Un`c<22e.!QDX"lQ«F+zj!FYi7pb.> +POBN={QSjn'6`ΡZmx]f "+6E_DC2o&T _ o[D[`X״DmFbt2a%`/wF5m^J"a{U~)k+v3-tD{x fh15hn'OmA+ϛ Ge[h܉5)u)cz;c|lMϻE9w-GFA+MhGt~(aA6bl`CZ u_:`)B$.B0-"J{]_/rث+wFn('ufWȮ$LJ?g-5L=̓mtaB;:{_ l[Opcӗ^SK .VC įP#'yF0dLKC޽-@) ' A-qœƠwDK6U=@).<K4JfNͯ["; F⊬lBhJ!ZDX! ˉw;t(Ӄ'GyЫk%>w@_$S}ڡUed $6& }b#ɔ*% iZÀZ]8;VubhfHg R xȶSR#Qk;M[v6M`=6^MbHEsE\@rGxibwB$bWoukeކ~,80Ÿ?shHڕjn7̑%bM-e;N:K}dl?#ٞɾҒ*C1 Ť_?yq𓝛׶Nfjb8.e ~ 3>6&XYEÁ 'O<(4Ͼ)-uCd ̭>B~q-ӮE׫#4ZvMFtEUl\ TXcdWiuM?;)r}M H`0]!.E_zFY3/7`ru{|LeOb#x>aG#ibik-D}K G/t?Q`p U 7=Ul Gt}NtzپWdZY_$zY{W-e" 4hR*sjߓ hҾ\wRC͒F!9pbU!?щ`PfU<9?)JoU[l^4:|AFl&Vғ29 Nz1;'af'S3'?FgXtlhlK{߲7LэRT$[^"'}_Υ!@+0XyOp^ZCɚW)pKKmﵣrY FXU_\6R cFn;!Or+QF$Fy޻!GcgwTO _, c57wQR;ukzk-XW~x] U&VT_XChN"D?H'4X&~^2dG];]\|;}@A풇%i4Z蛅דQJk13gj`Yd]d-ߺYCh4@LjdU vX 8U Ľ㝪.xXz4:ǻ;hcV+t%b o9,p3L؛U:^6ȉX65 aۛ a6sGKxV3 @Abw? SBI1hJF x5|N[:G/"1v@$ϲ:\~uX$䐊_相ѵjGO0dLΥVvhPF&\atU3[6rp2M5Q)G]K_94G}H3hd[-H? X ɟ G#-3- }_b8wHmD`62`sPѸL%zgo}Tr?;L4-؝߫o!E,Vt7$;>:ڄ+A `''½NG={',2E˟E#i8Lj- )<cGK8*6 >{(u) 1R{n8m?>R 64 y+M9/jaE?юl+Y2DNp͇q8\WL.pcj3_0rs=7mmJkxZ_d A)Z%*kl+x& QW8 UOMJggͥR'370$15Y蓒,sM^{<Rq}ߝ_?G? C˳/{ǒpPKƄh֘^UWZU A6z\ԯu\?1rG} يD‰o!e;a›O~y K>՞,0ʭ,c5~K6Pr8* QvB[t%$\E; ;uR=Ի T+C{ |-:n];?ltc#kEZtYT JCNg媌ZFY~QEגcPs|>f$Iةx. r5<7<ąuCd!L0Pj{=%gC{,ҰFUyBv9BGߟOY=7vc$ױ,ABj/7@,UfWjk8h._{E'9egVN[ShR>g,DYZii(E1]D:>apB!Mp dZȃ}4E*MpY|bZ;s%aÖ́3] ;;0ytmEG= a)*؝ׯk7nD (w/MyľJ%|/ :A%CH;6dRp&ޠO \sYWIEp_ J1vF~C V@lz@ (KDkG:c~MSVB`SWʓgOˍ-\BT/Tn<]8{ DiOec*iHSip\p?$-un;v+>r{D ]F 1ap@Q5\4b)i>cue?5O5]٠X? U.'(w[32w4FSpjnL_#ijfӚ> ODeZ^|f"Ѧ=SF8Qt6 : KȨd,bzZIrO)J|e 'ӟ yNDq:.R& ;|q%]-)颴0۩ }4B*V;Rg3@rr,)@ڛY E!m 9;~lɭEGN E#jQޮvV 8Xj]B(ь]滸1ݪT!o̩/&u+ {isݍKH`[{TdII"/.vi^ No սLv+LVU["=W&u *{KJ*7OD3RJ ;`bz?5h44M B9׸ `&) endstream endobj 186 0 obj << /Length1 1385 /Length2 6068 /Length3 0 /Length 7013 /Filter /FlateDecode >> stream xڍtTo7( i)#dPۀтR #FI RRH  <9{vwu_-k ׀ 4 +.%Th PF0CbTR_ZKiC?00vH䕥@4/G4F A` B{cNXB0p;AQ0p'TA4 #3,)+u@cDH3 _?IP ̜^#A 7$ "Dx P7@8qԿ P?pD!@X?ry P( @p90@  Az`$nFp:(zQOA/g(/*D 4G!=]*XPQAFQ  `Βқ{ ~ z=!AHG* `1ވmD%%#aX OvG&, ؓ}CrJ2ԄELo&H).-HIJf1"vO> pM/CdFhj(>RPC,/wC o7f uGu K M]-H FmB D@9,.%+Gz~1 s?z_TsCh/䯷/+" E ه ❴<@'Hr$ GF6@RBh կ5Kv.G^7C(Cf0p+CvҏŇݥ-%ArgoA3R.Fǹ} TS/{(ZwqH:?$H<:EH2U[Cd} SDPMt c H ŨlCfN%eSlCي>P޲{|ۨ4̫7UN|./]1 ]{EGS[bi^f&}.3הOI)Kvs2&+]kA DF3L1-o#ǁpy郶wXf.,r~5,wϹd~[ HKz%Z\21/ H}Ԥ+l/-BY<hE;$LoN[IC2&eҰ-oۦ(3K{ܮܤ,*E{vdRi.~gΣY'_l +Fa7b_gu7+}bx.WNz29|[6F6Y$O 귑2мSwu&r2 ' ; HT/۴V`ٷ}ᶳтTzo*4)ܒ—[$,ʃ앭5'bw"V`};9oV1DNn)4I)S/뤞kBUSXbtrb EvWޝ%} 9涮*JRGy%L)$ i8mxi_MM 쮧mV`y#/ 䯢ҽ}BloKRk5;pT1Fń}$ Jԋ-y=_UÆfOb?Kz[^w{h^柛0yhxUQ(ا1S%d\sT~ƾOcvOtDn4CE>7|p N Qg-גg~IkCp"G9F D4M1sNذLˎe$]F$j3"ot^ԏx+}0b1 w&ذжlp\UCO :k b8TIľy= ﯰgLqo hd8;y5m,?m+hkQ'#,oQbZa*e5(\v79L& x'Gsƃ&YI;T"fb#Ş[8uʗ9n*/)J>~.Ybъ;הؽ|p8WgM.YWoghMHpQ$n\lY `Iw&H>oc 0GG/di_^6$p/2uy!1`OS>3@70g۝aMeXVC<1 ԕ~}I. ee?M4dsn׮/H<6KE#شwJ؏й [Ec V>Rv/q   p|w wa}f~Ly߉#6"`Ǚbm%Uy y[2`GP]qv_E4/O' A+G}"JL%'+|܎&bSʕ;1`iE^KWq[7s'KXnoYn^eY3^"C`SeՏU=ʎ,eVWuNgB$Ӣ^2U1Zަ|7HKQ$fK|V(>T;Y6VH?K :)V~4dYrIx`(㭗)-qͻ93M>ҥ\c==Qws\G476\. &=kE'{]M3h0+'6+Ѻph>hZ ħ}B^Yʐ\®͗eo߻2p*Moǖqs+qR̩lȽѝ҆ 1_p^Ң1Jl鴄{!]L] f2La I)2QtZ?3J;v|\jq. /Z4Zg٩D%7(ԙ@ߥ^_cȅM=g4F|C|ªͮ WVUs{(2ZGDJ T E?s'7[-VF;} .[> aưZk?]C>5?qeX=~B:'лoQ[iW2Sz{M}\jhդ TC[YgtYbj̶1$|rOS8̯=;D$b< 9OTiIo'g"LsޱyIm8[]U߾:t98?XwcWX "Dǽ *%ut\k9tHbFsvN Y~a].<2VC:x A?g?{¿>H0=%2d)| 1?"|964f.tu{u3Zlz*4=W#k6u|Nk&uЊh2G~d h9C@Ϻ'G,Tڅ3Kp OɶvԸW+qK2),UGN]; \R7v͔|pl=hGV둶4en|;$J0N~|eg?.v6֔C3\,9?BonO$䅞^@q[˲jͭwD8ƵkD+ߝ͚ ۶k({RR,/}_)Y;$݅)S+|OP۝NHT|܅+{.BfNE+`8MG2IӜQ>ӂS ^B =NϻɎq5Nn* ]17Q^Y >LQ~G\ [[ !m648AE酎ZnINl790/Jpk8&J`JϠmȤT>--?;9r{6vǞٔ\`mFMorYS4/.Ee Nٝ= ٛ/?>!}>LR73HƜXF ]$nܰ15/_xrĴT~#!-cG`|i+r;a(GQ!m3jN2ұ}tY=a@3B74vvx}8u䆆; [6U/={5+:xg(!Cʯj,Xyݷ{w#YqRT!@FGr}VY Ȗ҇5.I_N+k2a,'0]P*j9fx¸+r iy5f~:t4oe0^o X|e疆:vZEZ!10d_0ћ{78^[U!b?jGMi:>+72m zBᬫB@6TI<#A [~-J:83Q~W+eT?ˏ]J͸Azb|SB͊<ҫ!-5šGo8AST=k{)UlU/GFpJ'Uc) 2$,.Z'Q=Qe˚m?νϿO&T4)8rOq2$$I> odRͧ)FƞWv֖Qx+ AC6&I=HSۢh endstream endobj 188 0 obj << /Length1 1464 /Length2 7042 /Length3 0 /Length 8039 /Filter /FlateDecode >> stream xڍtT>!t4 3 4Hw 1]"H H7 (R҂Jw7{{}k{?{y΢/k)!h~H "@ !Bvv}8恂#Ai UOXߓB H  n"0!<l%˖; B (CahrD$(n>7Ѕ`^0;PW؟p 0- dx"`=u l`;jktu"|=RR@P/ Cp s(@IV x([%QW)+"䑮0E?s쾂nFevt4@=a* A0.¿}04',& `>~ܘ ݐn{= G菂zhOXi;-`s#qؘ@_,0C"\|_A9Y-͇&wLN A@0 ,YF ߹*{$.ղ_ K܀Dbh prsd\*!%Oa' uQC`T{wT (Aa3?XD$G)}`vpҚ FL_1l1 C?!( 6ke0zg[/ ADP/!1(AI`f#=]3D Q+WWvaBM GaȿM!L.m==<0c&fٿ fK83 wz|Z#KͿQ o'Xc%[qj1YyZLXҩMS4ԁr-s1?Һ͓c' do$J=ߒsc'{s72{͚kʲ2XE_p.&}7IdUj=#L&_;GPeP6+ -IoL%WO#EW %);)w̵bGdp0#L,=w5!Nj^I7TT B &l#eAzqNUFyI.Jo[[epONw~Fk#D΅z57CD2~zOU Y!xdvcÝoQL1h%88'eJf5c^2gFco$$8k[xHx㇘4O<Мx3;hbĢ9SX]~F6WOn<9>քi3ʨ5膋)8W|8*s!6ghRnK8~E"2(㫚+'"uu8G7DߗChhd;=2DbR8o R_z*^<eӇw8xe'4텶DV݅L+p]KV{NCF*+FF(0gD5I9koC g?X(6/7liS7z>JlMuy}!D]W6 VXdo?4X<Fqx`W̽c#)pxi*C"س4kxnm2fM6j`MFs)4UB)c}Ůx> r&:ጛutMD]o.MSLvB.@F7,Q:;$UL"@ѿ]Gzr*\ͳˀgNYPDjX7oܜFb^ q1`SC{lms哚 eMK+5 v,Y`Xgt¸\DKMtX$gKzɸ>d]wSWP8]*XhAqhn;wǕm?19ks:qxyQU`]-Ƒ:s-3Qa7?%TE09Dc }2O6T,z==ȿbyo_Mg.zI@% 3[K Gr@FEc+vA8[ȍ>}s!+I $[7Ī- maaBoH{9w[͚ ڳeZ큛MWAs('25jsSlzAu_ȯ/_k^ mĆ$<[ f]4`<hwxaHX۴;`KS8/OA:@]oupY\vA:'.4U GK)Xx)}2laX1ɕY `e?te@ڧZVRWSx xbܮgӳJCܻZERl7^?웏o'2[v*"c94wbA֧yE2drnNj kum#XM6 ̡2>( >&J){? K:C>*4!oS>Q[K ^3LAغ~IiUipt{NƽXyfN\ ޓlC߼H糆qgcOL[MC ϧVOw162Q.Xg>z#rtM)wlkkC*٧{eF6O\5㫌7)~5iҽ-VI}?M,ra5K ٓGɳ̄*!jqቌ;s{&? "nzOKs7l7LpOI8Հl*mZ<2[}$Tc ARS qS{,@IK~fma0_iYԴӥ;%6>fv6-#%k3_uJ0oa4Ev?]'z GǙO9OiSZRƇ7$""],:D\t)|Bܟo\Ni7K+ǁ m?t {%gֽ< 0bG/k򰕽HE£FH ľt=arAAWa8;O ?>@iޔCqT_I.D?|"!iNP&ڃBT;~Tt3]MDu^v6F8>Y/0X|"!J"؇!ٴ4;;j ܷ.dQs! 9g{h(xF^UIH`uHk>!F=!qrIW#z- VqMT0si{ak줄zf1{3Z.Ms`J}aŹa|e/F\MZ]E6$HJ`$-þ$ p2Cjl{Rtx ~HuُY,\ThqP:]._t*O+j⎘d&:rzH02zڤ3DuC$8eGVmPRhblf{1Mh_#A&Ju|웒4mPaj&{j(˙wTz"k=ZJ=O#qʹDG 6zkO0agPO @\зU SnwK1Ƅ(v,毢KuR>'.K4j$:mVQr?4i\4 F:):8}~6Ih{3NϸVn3iwtQD+L+l_Ta'}ջvy+xc= >NJGԌ xj#5,4zH`҄lL:Đ)Pr~geJ&kөZ<ФFxim˻"<,~>18%&bYԌoD_s 0,;dj;4qp´9W@5LgLv}.f:|}1*a X~NA6=P7;B*ƴɓR1ܕla$IdGH\2Atu[;<\͵ŻN4rg3[\ 0u.^hc}ӑ荨Ke~H>]I{w>TZyi!\ic73p?qHw"J8ccc,¹.}<Ͱq;M+OEc)YCMb@@eo|chlsNwk m[٪OFYT[՟>kj3h4ȩy1Q}oD!7@HD.WkvMZɤ<\)tgPESVKL;ːqj&'qurڰ&֦jZaXwS3 }oep؍P%9egO@1Π( ᯐ9J&?C%w*r`1hlp*6'6r1wٛkDʒ=n_U 4ֆӴ$;/<3ޗ[7Tbx@ŋP^-rk4J(kX'۟hގ}#`Ic0^R#HyvIt5F-Im|"EJ endstream endobj 190 0 obj << /Length1 2673 /Length2 22161 /Length3 0 /Length 23673 /Filter /FlateDecode >> stream xڌT .LIw7CtwwwI twHH#%)))}ǽٺub-U5,̀Ҏ 7&6fV~:+ZZj@hIAyw{?.IS 3@tEptvvG9=/wP2u:M6@7vssgad6upevtgxڸYԁ@WeSߕ1#R4m\k8Zy`9 pY]`r"@ XoF?1_l@9;:8m@VK{ @EZˍ` ehj7075)@ZL ` .\]l\]m+ R G W~6.@sp۽YYX*݉E d,B-XYYy8@gܚWxMo'_J_bpNNKp@K S_1wl@@˿1x.6^}VX^ {͗EWAU[SՉ;z|8YL\_K06w6O,?Ao,eGt܀yr_QoKvKM6unPr>Z%ʹA deom\m6nor_Wfo:z_:iہK_)@N`b2q|hk, G7 \?D,bD#no`x,E_ `,2;E7F̮ٕ~#0ofWU#0o|v̧t#0޿78~N,51s158n`z8=xcGK;_򛟍  ~6'~xYO8 M`8`d#_zGw?&V@pnS,{`ɂ,Cq]A{C.7;?jpN`N,?dGas~a񏑂x8^0?,kמq7 tZrz1.pW{ߺgY0Xܬ]n8cc3c^@px? >GM xln?/9@qa\ ̶.'1"O1)tz&v{T5n-)kE'ߣ pIj_'w O 3i=9iA*O΋ZӳWƫbi$bvGm[;;Xf93nL$1ϽЦo0_qYgYdw$"xO}92I+*7[V?Y,1m y=F=S1%N-o6vPbVa$_iM#^^Fѳ> j}hp^gHk9F]7׵@F_]4njL(Ngg-*_*- h򹭠5!gU-OEڬ~8%\;+ر,6{Ue6)v'G,EՠnZ0A$՚[CG^2jD65ԳɹsxW[%䱖!1[3؃u?ԱT9 Øk1h1֟'Pj_-IȏAȻU@E ֞EˁYC|j~ZA|cOY"C&"3-"ǣm6mAq!ګr.G;ہ ުC8솎=kj'9ohҰxlܷ!i0|Eƅ'M9ԧ\e|Bt#Omr *t6hEW64JLJ:3UUfԬ ^ߛd$%X^طSJjk+ VraUH T~Dl}MHUwLģ692{TsTB2ƚJX{&NhGV_k~kK/vT!,Û2cMIinBӊ>CKxt ,}Gnyj ̼x86{e%Ƃg꘸-%_ @W0+Ly)7~7py_rfLtz^$ u NoIr>,քޗv;XPvMc҇@kS(vl+a+1 9ET Wqkk BEVaV]al8Kzn'd .J!~ S!=C;8Ξު+g{ջԙoOwjlxF6KZ>]N ]-@> ]pUE{Ċ>q.H%ʒ1J2<|Tr64IbVD {noHyxi A#b811a4{?vh t'vBi: Y8,66 r %yz}dKf8 />oWU ;3si̳y&3ʋOĒ#u+H}x =06eVGp0?4nё!7cM,3_3n-P_ 3 5LR#:~YdMw $a?O[X=;$kn\Ę̡0 OqхCq3W"Ejѓ`u-ㅘSQ?%Py8d,}O4|] )Qb\pX-Z e+ ڵOQ&EB$\z}G-iLQws#4};$Gۭ*w|&[U(.:w%ǃSdF$:+4윞>HT:gXu+*|f/E;*yXã:=1 WXJM+bj%tIXnHpca\dZAYܪ_Ϡ1{R8w݇u o'F.׋TBԒ*<|=RAk|&:&F]ݩ_FKo=A%8У^2nA82@+"ӥ"DjT&Un\[:72[(/k@~}|yܺ[ștŖN rꚂyz:Pco,<Y/9edu>ÑyW"mPms=E3KV p?yvD5 ~AeT;T&!x7GK' ݟK $w $C:E!~ŵpsCրb>OԱs.|N<_ğ.]YOʽpQ݄7yGd\Zԩ i;xW4D{ v(=7ΟRP{}  (Ŷ8|o$HF8hb{VM3ڇ=76= .WǠnx-71WL(Ԙ4WƫFKV؉LH?M)Gs{jZ9%D~, hʹk,`y'A@l FVc}̰X+Β3T\@&\t\Dm`7{E $^(as\` 6 N"UR(GT{ST!'e.H'`}iljS5\bk&ɿBܑOCOM(PHմ>d /i(/Z1QG"+vB4\MJz23|0 a' pcEW&f'#6IFox-"2w /NۥU/ ФP -f~ܖ2ih)ܒ3ՐI|yՖx AbHliVp]V{{mb5'/:b6<bϱut`B<jRunLWG񦱹ERlY h]S~dE`¦|Gj]2%"\H0W`ɗo~&U dV61agGG;@6(]ú@4\2.pCyT?ג4<\Ov&Jդ 9![A4fm9Gu^rH]LqG7wa Z1ɹ'yXOk/{ߡ޻DWm T > xvt_e'47ٵ3e]?y 80cҎjluK~Y~$I-Dֻs8h4jq2ɂٸV;ndq3 AR aײŠϚ侬PLdgŞG_`\8,B0l+W{.'ώc깠H^ǿ[ S/^$a 1UgĦl5(jӟϧHѫPnKi5Ԥ C<Z #GfΥBӼϚ*GrKkw OozNjپ^4.; MBT.o7Z&:e|01=/,D֯F71"[IؔgB4 vސCQ_N+Pk\:+5/jțr˘a=2'&I3aICuIj! Vo_ ^'> o)Y3,u:R [3yiuh5j޽A:2CK{ruԠ .a{2¬L gEc]vemIb1}e,}.TkYŁd ۓR՝NiЃUeQy$BTA ΉKM'AB# d t$ zCPdݧ_&is8([8.4F+l0N[X T^NI\W ?}mS~AZab3 iYZ:~y^H$i8) ȫ[$=wꯀ>7m N6LޅBk&6DɈi͢s!e-?i?@ ϔcǝj4ǁ?Z1-m =P~V6L/-/ZȣVI'}V7iu [ʒ58oJ\Q>&"*@oQTMDBV\*4h`EYV8}8=@b"HկhOz6X%"5?^zCa6ٟ%S9YL0"ͨ@p>}6bcZXV.?1L⒈9 z-‰eq .]*r)zf{5Vua^Sb=a+D&ma+TD๤ YI Gd@r|@yV$|=D0S3Z-V!Cڋۻ|W?}D}~BV Do[gNzSJ)a0sP3X E^`)Jhڼy:9*L@ LF{XJ]>|5`MI;6R/镑e򤊬K1t*Bj =ɖiDpYm~WEYxSF'㋺':tVj)'YE)T`JWN>qI^USf]B8-_n}8 ڒQk^ -d6h%WYJ`}48C)s8?JwZ HeXYK*J58bFCc\涹n8H l}̄Ź0rm_kt2)$9fo.{SlnXRӖ#"8:P"_X!a˄Ucr#aBw@s} }אdBBoS)˴Ak5옹glJ)4BrЃPԍef1ސ0Jdn(a>U5pb3y+3/k-_wېvjDml> :sfj*dR $a3mjRȰ Rqne9m/AX(V+ӬUd0,Cf_i3obQ/p*gVΗ84*@f[߭')Q4&鉸U'+`|&3 xdƦꛁ~dFW?7 ?R-nan>y:8_Y1Ky3@{ޢtYgha~îڋ\Rl Ev?cn6JزT9{s󅏹[ZJ)vq[H-OcAt{ XXT>_EHӄcT8sh'0 ηo? #.uh}\m:5@ӱ]yo58'۟6 ]QLkrjL8Ъ1u>Tx@aXqȸQ2^0ɂú =^ 3C: WNĵf{y?_JVOQ To􎾳c[~-38^IFA(},D%WUʕ]B,Rb%>ǁfݮY>xi[9 c\VdʶicG^#jIJG _f~A cLdId͓8xZi AFP7:#X 0Amo.q{׼VB0;4Svel4~ WW:]$)ʡ7'Mc<ԷbGΉipj! rr%+C? `% !׾FB\nϗe]`c]L C!fX{I=&#sQQHizF]@J9j>͵SKQ=D4ƨN8CW]q_v~ #Y`L g;~xq򜡿aUV#*@[R Vk{H {1Muכ~=,ľ;h4ܔYLt :_o@U|ʓ.y! cx]#B~~8>yuV1v{b݇!ab3USn~ErУow]\[i {;&DpI.صpޣpɜ0H8\ @|_W^Pg-^ݴWW,@aYD^%ĥJaìc'Ղ*-jHJ>8:e 90]LTaˤqa.s5\bDeZʞw:*JtG.hM#7m#9jXUs;LW@->^Ӊ0x-m].Ն^j  +'Bk=!M4=`*KؚvW :0Gӕi~o֭3ЗPTQm=,c<^1܍}dGѯ-e=u=-j0tm͋Z|uʃd5Dv= L~*:AZ'l9yyQNSc=/Nx~:k1OP*JpE;ƿ E'Ignn1bcYY ЂY۝/b?~=q [ tJH0Zu?LE9 AlGU MEZhMnCbBlB;.n> ޶bAJmѻ6`R@e|8!6yƛѣ"E!{­}Ճ ^v/-  q<ϓ(MȔSEmJt ^޺hDKi-U7qdLH,2q~[bGXt{;=01V; aT-^N%CB)%:B# itag8!EOjAvBtvu:iBiɳ$yB/ռ}]g*BvTOjDgw6>{)ُC޽r0IÈK!FXuJ0k0.\?lO)vUflsx0X Yiaué!x樹HgxuGط5;A 1Ĭ9q[4ysW)ڧ=>s+pݽdfI0_P\wcYZ{Q ,/*Kاl4R\/΍7T_LufL %%#u]b1~Zyx6&?(qj.b _sdj~ gyJb/(ޡǠDf/#`(HC1\*}u /jx\ 7\c"+CtZ#T(d[ h& ߊ|!'_{[%/3{^Vs9"t PukigMu\\>>L i4 ᑲK8dže)A[%F{ZQȝP tʙJU`Km:;+M#)kM"]Ƞ~tà%_-eHlzK2Qv#u/_KVN/S:dS}$PIW*>Äg]\o.zCe!CWS΂QRGܴFJ[=V}1VZmAgo$27ӕ_SU)LD&èӊsv^1"K]=,4gz*D+T az!uhx3"Dcp_޵~y]X;1~qG Šam70x8w3}=w <*WT:"gfޭ.( &4D1}GճIуb^"L. ۄt4ԟkqdE1'ow7#VpfGIqPyB mϓD)ވ?]/*Lr1G7*HPDkXҺ5pY%H+͌V&{[tlC~:ެ w\ԣRLdFmbwGsm ;o܈:7;%P$H@c|(r8' "z2#oPS`2zՄ-Xqz =<&2ajZ↓/,2[@&apWj_y;b{ݾf>Υ%} QJ*x(Wu@U%+-IiRM}xӄůL]P=k90r<0- #&1K~<nӎ74a*|s^P/p==Ǿ ̗ Iv#~Hƽd/$WIJ^J..循:Ȃ9Ҏ_1{nimi󖮕ՕA(!J;ձfz}LW)k)LsAtTE nϙHF$,mBrs$`Oj%yR $V%d"}XqҳRA[y2{uB_s:VêCDG/Rb}Ր#) kb0/)c{"ݸAuXIyzHe#*Չ;.e@BYnPqy,2,V >]2gxno '#'GX,;l^n#KDMta^݉9i>Ue*l 6<@?a"sg4yq[%;b ˥%=/`yy 9HV?Mm7t6a$m}`7!@"Zf}9*U7P41̕P_䖴7KXU&ƼqHv q[f](ģ!2 .#v7u% 71RG=ީ԰bHL i?m_JDvq~~jT?0wL1KquD=۞$NM)W=-F!25ȖfΔaIB>Zǚ]rP'3%.9*枿bi QFw^[X"t k[6@şxsbӄP$}ĘỊHv;j&eF;=P;Gq k g6<5'YOUcoYk蓼8,j$lm{Nj`Z+E ۡ |'X|KH8zp x7mkQՐ?ޘbv'$۰S@ôGC ʂrӾԊKr=ri*yĎS ǎ>OI(;II1$Kd0<ɊtW–0u:Yz/ 1lװQn_'M2)zNcmiPz hU5+ONC[ZSG릐t߮(7eVGKk>kb/<Їx-,VȰI%*yzwJ- %]mV zey9Tȯx4l~/OaQ6 PTJ9803XZ0jWo}[3Τt)$M[zv-ŲG a4%3>Ks?%Aj-.B5]m.T'u;3@Av v_L2\mà<>ũꮭՈ˷3ۨ<_" .[cO):"^Wt.{_D9PeI49t3klj١D1K[2?wO>ؘ0ZYBvۤ!x: 6-☵T18 aFU, G\l'}Qtwwǝ8qx׫doY> z2]BnƅqT;c 0z߱FA7\qLJq<ȜYӒ;YQc#I )>TϢQ$[=5Җ1V(z>!M"]4V(ߤl윴 VEḋDKSw0i?k#{%Q@PzMD E!J9šZ "(VOG@=נEzsy-!AȦlZ&{HyQ7%;ϐyo6Vd՝b3ƀN/ͱi?;9w:x5:L=?\ɜ+]N]R{9AZZZ<{9׊)5Rwes)쫵lMKd2Z鏿M(r1Ivԩd5^\)  yr*!W` n%[Cvxsϙ֤fԝ.ѮaMb/iٲFB^,5"qWtic}/!Sa^[J&9 #c&#߫`m白gījm;XL<[T"㼳`,| m#wq̥{sU)p`;Dz9.xSlQk(l&m̃F:ܢ/nn1":bVzewP G6!;Y8$7i,"dEJ>ٽJ_WrFIt d^AǨ`] SڳJt!M *D#|Y]|:fL#˒%*.o5*JCbZ<WAmP[ -h#ۮAYAmW}tM@W/o>r>2}jLSð:R؊_ߘFݨ<SJ*\ \彇Ɉd7K3[U=b#޴{w$&g()O}|pPB5o4ڏ)8.&m% 96XQwjuYUG ju{]IBI#np໌fqU8A@բ' I^_ayɬZCgCX@ݎi}l+WM#[Mi c $#G@fv^a\1{[W|HL} +{r^_oYכUg~ ዉC RgH ?ޙ}hL% ӞFMk!k+\D"9ٞ+UOQ8JlqOg#lgm$Q'B3@YY9 Bvfԓ%h8޽$:6#3^dLb($˻(3/ެBӮjai-Ƿetfelz>TϪU!R}Zj܄N~SCPyMҙ!2L؄Cd8;T \!>e{A '"~f+b(M<ٗQjR.X 8c) X8n*fG+Itj%QՎx-]$ xzEAݱ½jٱf9h]&d!CNZqM!/vJ'ERA,dJ6Qru:LCjm/tq^v X&z+G${CoPv9Gz`pv 1$Uf \D& I]1-[nM4~T A XZoM8/ {w޾>^yRg/7 : V*с+4왴H[ۍA\@Wͺ= 65~R})=CW׸}ROYoߕL9ngu xeqPa zgLTęټlOgIHp*˿u CJ ۭ&pY9@mD{֗={?(wȎBNXaMВY胷d_ ^'kZ%z?f ]ʋtPY@@s&8_^1#b+NBAdžCX0ϵ `UړiLMh2gS'7,gS 9d7UYi QOdD}ހ$Z$nDuYeErrbp'2P0t, J,0H_7%v?q0?ʀ}|U".Pt*LN؜p7Q')Z xL2N=ΈT> 0m\x(7DzְwL#^pv8Řv t_ZyR Ti||:[(#ZjQX򸍲PB& `kY$fBA dոYI a fT #XӚi 1=?^ @.ub-y?9[mu)V6( ..Jٮ'وb~Cuu;C:u0Qk+ 6t҅Rsuw91#_:$] 9ާp}~aM>>Zm*v ~GW<&7x aƽ;Bpb{+pY)L:6 a҉ lAq+#wF֨崯@PLu]An1 G?)(P@k4Ï*bdOx|1%fNgZ`iTO ?TJ h {>vA.c~v=IXs~:T I5!%mc3J.Ay*5붇G+ouX`j |$L`x6' խЏ$^~k*[|!z;KxH0Ҁ  ^+sE|)9^s,zu0SD߷ӊ2njr`b$3/EOTKmؼl7+xa-lRe(L_4Ǹ*5)sO'Ϊ1YB}G>FHdgK4PI6\s{Ff[?Qΐ!kuy@їj`{`'ucYǚ6G v*֡ ur#ŋP2U@{I' /߿ "tp3ar1`VqVߟ X"JFQ1H)ri- j$!,oM͖yfPB-lvN!ͦGl8;3_ NhB QtlvG?@<$wȚdi\uB ,*1f6.iT%U/Hr-.{~BKEOlE@ N-J̖qTݸӺLJ__w9BMGm4U,5{VPUg$:@HrO`6]ZwN(ᬐsi4{!KFN]뙄b?p\9WlNZμZ >U ZRl4ON{!Y.E)taíx:0-Yy(<[b'j6FD|ƬJ[b:EzM?cF2)TMҟٰ1TzTGLe8H~wᩑpq$ʾ|NgLfp܍皉@BaRáHzDIpG{?c`{ I,"&)?)/mb!OSiq7{g[!D/iK:Lay4|qsY|׉U&$~neW<m 7x"k!3 je{.I A e;#g_#wʪ'36x#=3! ;p`L[WYg~.r&e.B`ekK_qܾ[yK3SV1yhPƥ D ^fd9x9C  k9H1OB6rS !;=K/w RQ8b*54=#ȈtuP[m&nCIɤB0[VE)כe~6pkPC).6cW'ѠL HCCbh笗[Ly.9z9VÉ 83kf`_@9ۙ-S[^EcaO T1X9%ge#ު5Ts=vR@Qg\ 9Pʂ .ԟ8ǹ'wNTڋ7ّwm8d$ I_RJ6aȇ=pV)1uRJ^yN cO.u])59wjnx}K2۶,e=k3)o#Ĕ%fmiQ&GƸs:H[r#67lO=Һ5~F h2(fE })h퀰k@|R;jw08 Xxo_4\41b ǃo;']r߾MhIsc4.0X\w ' ;]AkCo您˔ulKk*QtB1䅾ysk;>{RKO* )Lg1|9[ټ,WTYд0}goZ(2۳J02{4t}FJeʭC,2 Q}gK-L\Wi:5TFGѷŃNr7+ēw ?~[k4O6]p.{:0Ǝ-O31|`#c s@sSi_S;~dڵ+^~ʼo @lNU^Z*+marH7dmSR 范29$Sf78/KL%խ ĬjHzX `Y)0u[O#()kUe`&SF9-MѡOZy.L6l0B:DhYZ,RiVKlwR2 nF~3bce  hk/[)=hӼ 0JUբraMM~5Ѭ>Lsa j6 i/"yt}N@h<޶MNH]٤cCqI7g\3lKf)e\"^vP AMsܮnɶ duo*е{8&`ľۻk1ι̍_!T7ВJ ъEiֽ13qg- `"68s#?7[.rMfTBJMEKʍ(;/]C4efwjsNXߘsIF&Ip .\T5Sx,FKMn(ȩ +yϯ+M8_G(8aci7$BPzѠw߰G{T\Ļ ju$Њ㜃)IAIEv.?TbK|ڪ&TP+ʲ]NZYڈV5''^ǍJ=* LRP¢bmBXF.l/R8 2ZgS?Dkxg"xNx-ZCV<T$zbnq-a"t$ON$ pUOQoC+' 5ϖzs^H-4n׵kynm]x͝7;̵}uKמx+ f D'Zo/:/\t,J?ǡtC;7i.;!K-E en#?'vӓYmME*Xp^/J8d^ߕFՑq46pFPnI!\QC]=W{0^qy5+> stream xڍWTlS@$T1:6QBc66CB@B 4P@N}w9=Ͽ{LHD"B`a,@T @@9#ZP^p$BP0'SqfH@ %eR @!% P]$ETCz`Qpg4.˿^(,##%Cv2B!n3$CcW{ #QΊ|_8` |`_ !ߍ S.p?b3p789x#a(.7LG`C1c k40 Bp8`#M}a4- Bܼ8q.T1@p՝@{ {~u(+ nG5; U:⦎VWG8:jCeQ-s HJZ0P_ͱJ/1@ ,P{A|`4QG8 p9GljaNͣ <0[Ho1UWUH _H`1(_UA8!2M_}޿g,C$0I/]7t?vsZ; Wo4HijCW#?:h*g h["3Fz=(!0:G *4L"KTBA X ܊q7 ?GCG7"$pB(~S\ {~ )Bh{0 A)f&Pmǵ*7|ƀVgPOIjQU^_{4˟gɦ#/)6UE~S\y%32ԕC-Mm\HwV ]쇨eI=ʳQxq`C Z= kyCl[ bK'~^\L}W]K׽>x!c'T߲1j]n,/3!N\bv{){ xޜ"FTQ Mr}ŁŕA EjRi۾b#ȴ-|Z8w6rS"gɱ/$u=٬J]*R쏦YX\ژ}ВJTEO^Nkn'UH~Y?]-V+H?<5+*ɐEɖ I+j"y X~%]y6Amo^^gHxF`^UH!5}R@AUxvV#kR%+HDᆩ(L۾ZHې_X^=Qy5\gBSV{x:zQU+^4Fa VV1a%?OiMv\u3@`%J;x\ZNu^W? KJTwBZ\Π]=s B)E;K3VR&,7S*EW׭<_!\ȥ'{12{{Nq~U;{/ˈ هI1u}.T. ]5͔H9vz/[h"/I:]H";mvX=L^hf\ .\p:V+zmLR1N9Ujp;[),x,w5!stjh\󺘹|mktI:5J;o^"-cJ5yZmߨn>$IOxLRz\G"nr$4B0$o5 !,*h2U\;"p:v17H`duu%K`Pv "sޛ] 6|g @"tQ:糙X  CgL` *n1L)& Iv%[w"֮`vrxL=1#J}fFG3oK4ǠkZyw}|mؘHhcwNE=Ԗq9aA}e#l-}DH1t{fE1SZN6_f9} dzD.HGKͰseQˢ"6f|.˨Kҕ*cWwؗV:y {) jZ\ʎ3]uMA}*`0X=xْ3k۫=ݲ+A_{:29^8l\3fffrzAW]&6*$ V>g]p_tO/*uu0V~jeʷVן!+%e NλpfSI#;TTp6p#uRaގ NbUjx @O?eHiƶܤWM<)(ِJ!|rї#U\}Bfuy#i!X}yv7ъntHtu:_Z__'_ȖfoF%o`I'sS}wJ0&[ 6m--5^?XLJiar@^ R-4,2f;Ӿ;@ʩ8,}Uڒux\n T:>Oms< m.wlrlH)biK k U{^t{jec%QAu+ f0Dտ,&K 0XR滏L߱l,8ڜbpVgWrS8T m I35UX6?*'QPByΔ;[E:W1(Tԗr]^@/ݰ6qV'tk'LYY>+ۓ$ ԕK]vccg J9 Ɋeh&W'4To㍩a}Eeq7P: 3,9Z-RUr&x348uxTk\+ife#^6Y0FVr%" ;aýqם"15KR*o#m1T(d Rtv~ȉPu1WC)͊7LLdFh.b:mwuj$".㒉ğvM(GeŔggcIޡ6o^9|H)M GCS+Ff*dUvV@Ny셼2GKEѮwl '_|"2')*W6XNWÚd1nzn CXK~)vWܸTlOH9{ g'/ۏ)ƅXӍp iNh wWxž{Ծ$bv[3zۤSݟTxE?,z&?hepD촎2ҋu%'}L> T'T98c7SQ`+ħn0vy}7'4!,} S4%=IũS} _j@{p㐋fvkpCِȠ8o[/ Ր=N0Y9;q=MJ$|.{١>5^}l G7c.ۓ}A Cjb6a9}Ssi* KToOŎJp*Vː{kG>(1[cgws7#ԷK/\XbXއZ oj֎ r6(TTT!+s\rzv<pZiRrг|P<:ewm [/`#(=/Ŗo=4cx۞z :dLdNqNqp85zSM!R-Ya\6Ƚ)KM7fA8p(3zgKk޹d̷g5">& rlZ @SZn۲=Mo/Vzcps s{wdL,g.֤G6x~-ܹ&zXav|ՒQ+{C9HD*a{VDMA#CO"-%&X6oLWWPGJf3*Tk@JpN5ϲt;_T,'J5T>|ޛԞn矇 ~#S~ۀv-ѼnۛwD6a:oU So¶D4Ts&}B+<%و1x@Pl@gF!tⶳEk5Q_4+)>#9SLyGXf$q¯ګ,h06#u5JXCf4Dtf[\G&Nsw`7;Mʫ33S!V #7P[u</-LҞuU\Aji_!6td_p:aܞmxV59/yi cLVUMx]ndk1&7A {3aOy`@`7EB\Qܓ9|5jړU)X"W4Ͱ/C9 endstream endobj 194 0 obj << /Length1 1472 /Length2 6736 /Length3 0 /Length 7733 /Filter /FlateDecode >> stream xڍtT[6% -̀ ) )]= CH4 -Q{߷Y7<}xA|y !>AB66} n\H5 )Xf8@ @ 1  H PCnlo$>?KЖ[k8@O0_!Q( ~~OOO>k A9tn`\5 0>B6#GyZ#4؂nhw @ SUhw;["`.po`ZJ|(/n@[{XC6h߉[du qAA*}Ɋp;y Amѷp'U VU 9Q1q {: M \{0 @!AlQNOt4 Gw  2GkzcrZܿ Cx|yD"@ wmk_Y G$$W '߱4hłn& "`e_Q|ܡ,0/WwZ ϸj fUQ;@D l A:׀A!p6 ACO3pC7FͿT"~M(&Dch`?BH_DKim F?{_\oOCȿaq?a@{?W-H$zk ] 0 lK83|YY,'Ɛ8Ɠ3fsbdΊ̧K侏$kcY+߯x I:~ G_b ՗r3 vƮlUcuu@G~٩UU276Y!eoAYp+Ij\/>ف݉q&nB_e؟> enm44& dr[)j} T̓+ gCS ÂmXHC͏MԠ+bN:W[R!Voƣт'T8Cpz6a6_@|M!%RGg3"KA=8RZGԶgګv<)gS<-9#}z?nRAbgǐ41jE}]g؃Ƈmak`K81Œ_RkفM(0´C+'8^kDdhm9bVӉ-b)zhJJI/Q2.y48)MfIfBĺ{I&POeEf6yxk^PQ4Pg?iׯ s*_d{+ܣWu "U;y6m}lY# StaF¥'8qv%d44ʔ[ wwD;Dog>)2uzcl8$g`A#po^0.I =fXClSms5Dn Lh$DAI!M5|^΅#&ؒаAXŇFu|n[> 8~Y@C~BSJ?]`P;of_93hkr/+ŲCw-U187g31,91Wɕz7W.m鋺؈ɂ_E܊ÿP1Nhe@Y̖e]"/@>7_ؙAo1Cuw=~E G[z5mY2~MR1>}\q4<~Քζo>]vT:FEDVo|}K6*GM:XCwQ2G=՗>I /'` j|a iŠЖc;R[ 6',#ZfA-gecIɡR/>FF/D#|}%2㵌tQ=3lUV:ӼycH.G3w8^6y{+'+Z0JgtdD^QK-I V̑ƨHxԃ5wP| ~R԰tTu(/iWYU-6G`_ٽwf6ljx~40H `-=R~fZM=Ts($p^k?!4J4[rߨ7Wx{mP'1ͥb\ꌘcD]yi'z79lpљyFfxb$!7- o7Y:{߷DI;_|9{e[qޗnaHÒ $2=}KX(cۅ])rDˢ @#F!"5):}ȋ=n{ѺWbͫM U#$]@xyI(5(-Tp|@&VwۍB9ؕl ֝& =I3:l^0|LL@+;P CL'kܤrw3:vM{a߃8(G>Z>N2Ɓ`1e.-rfpё;|U¹u4hggIϜhWudwk(+6R g<Մ[g ebyܩpyӕN0%7{O<_sn)&ԄޠM m9v3aIqj\&᛽W8"em3R̆"|[W. \asqKeI0- yifHҕ2Hr4<[lύ$QFDO cxdYwÇ/'~Efǎt| y ZZ~6+Ui${dSoy z8n:CkR*tIkS;~ٽW}7 ]u6c/6"ҿot~bTiΩC:dNjwq &@IG<}]A'o|O8ԂOG6.ANp[y<]<ɔPkJ7*q*V'-_lHYozc>(֐ gnsw`y7C8U4O!Lw4LǏ}mAVș}iF-70lsiRߐ9C&ZMoL=c8@9ZÏuvKBzOJvl-8vћze$UhsVSƾœSYC^:`j"Ew2{'2XJw'U)EX_f10K0Lz4Mt@(-ZE!V[S+: 3Ÿ/=/8̿Ji %f?'z;6+S@I?;u({^ &GbyU&v"ޭ\Pt(+5l`'b N;75^[J| سYzko]+H]>,nmGcS& `stzE+w;j>k39c¬5QOԽ:2u 0_{u4n8ܬoIFNjQF*J!RV^ٺÏ򾦰Bq!WBLŽ'wgOGLK,Y;/PVtQ?n*w{kv~in܇2?=/r]}9<,9UXqn #Ed#FsmE.s :vÓ:D'RŘ ôׯYF'ǯM˘M9c ;5*zi7}|Anżp}+s s3~82%ߗ^JOa@;a٦>qm9EIBڭ{WWSCeJC Ν3F/ܸɽ 0J Dion"B9 PU:ٌvw{8] %x{ZSoV!O/6DهQmۣ=X|H n㖒 Р"=?;}$rr-ʰT(;+ }( v\QN]iJ6dx4j*i.yf%H9ceèKBpΡ/Q|N 3E6daRDjBtKk|Sۘi FSA&}MK|f`cFw_Y,9+'A R}3\H!U7}Hzl Lw!-&mڢ>zc*_ QKͯtҌꝋD_!m pW+\QX' ;!ǝ1״V6]5PhA˞?y[A>, +F F"?}ryvjڊkL2rӪ-)Gf ޅbG, |Szqf"6 [JGخEs/[u1cǦņr95wL]Lou ]7r*[?NfTe7m<._15%ɔ {ca߀ 'K ?:|ePRA%Uz*,qu#ܠf̐OǒCfz/e>z2xfp&,*!2ll{UOvE/$RM1;wEŚgi=jÕ,)c8+txO'2a堻!{OQFŚpae[xmYZ ˅[A _; "ϤԑޫUjG3Uk.'WBJ.M jNs拗!WdMrX_%jXDL8- -$}2͋3dz`J`&0ͺ6Ն`ctO$Z]X/VA4\缾? \ny=r{rRPVh}4C%kuydBP+D6#O;s8R{sh@/x,Vo7945̣\dV-ON`zsSy+ v/<# 3 2}{̙8ʌuMgo&]gܹ|,8AkĤEM.>%DdNq^C!<8W9-FY9Zt)SZu'OqmT=VIsS"-aR =vB٦ml*N*<,We?B_F^K\Cŧs1FlMdW> Vu=[iY4^N1wctLЇEKKEy+ ia!iaAH&\C疥z+';CXE7c|yI/$dCw76B0nIJ.#Ȣ^T)rK, BNh(Flem3X{yն/%8 2 & ~>3"O_p_C/j{KmMOX-}nvt:(ޖ[&Sq ו/5( vwX'sOmuHfZ)-[  endstream endobj 196 0 obj << /Length1 1820 /Length2 12652 /Length3 0 /Length 13796 /Filter /FlateDecode >> stream xڍP\[-{pF{MƝ$`!hpwwU[]սǴ5ZcMM$f 6J\ؘYJ|VVfVVv$jjM/+6v_hf4s} S;l6n~6~VV;++f K3@tA;z9m\VGt=daP2sڿhaf[^UVՑÃޅl-Lԁ.@gw%vf?cFhڀ\2k\=̜7` t АS8 V+ؘS? L6;9xV ; @EZӕ``G - dgf'q3쭿sp902o,`): O xu/?g+-X9h9܀rGY]\<|iaGqM/GN?o|~ +;d 0ZfZN 0`}޴e v'eQUVёg&>;+UT@`'W .aOw-ebnj,?SG7i7;??^3{7i_ 6;T׸*-An+j6bvD4h rK*ٵ0;PB0/TY|x4\ 64b9;y!%OXo)V`g?Γ"OTA'E`{Cf ^?bVJ'Y,,Avտ'r6zC^6o?o6п77r@7*}R{u|6VXr߈: r;m;8 q|#'/X9rsD?+Z -̓-mkň$V7@H̤)K:ɍU5Σ_Ƴnte,d~Wm[t)Z+0h:> ~<ނOqEwɫLiU HND@{X;5%M&*8Um&X5$Vk{l^s<52=~wpd{?&khE,Gx]btLd&zEG&YU#r ϡ)gcق(GxNySV;vkTyf|39ܩZAa{uus'q/n"K@d 7pˣ$80^% ;Oܼ'>}ojjɇa鈄,b8Ix/}S_x4_Q>yUٵ"Ϙ,|88Xp:viߐ+l'{=*e/X[bvEg>zgm $K.pb.(3DA]Oϒym|j=݋o*Jy"ipD0?KbR`MusUй("xLW攑4NuE/A3/r+*,IMHlTvCc19󏎔9 ~ ˟p-T0.QmH1 9Q_$8x |+tQvJ^#ko_87~]/1f{;#~3EXƆ.ϿIC[ް䌫 k, nML|n~_ q r^3.T$1HX&gPMzޙ ,s}1t ZCPGnF yNji-BeD"Բ2Hl7VH?AΞQ&G+GC/]m E\Ga)<פ3_-%ti}*+:矆c*!Z&%F^ŤQۮ֗3hI4iIJ'Q?: FMvY۹߳R3V羚(vrٞgsW@4b+{dqm]m` |YXͲfZK}U>a!dPU&1ܕFJR{v&;℺]ڏ!g9aZh怦ڟ?$;nJ-1`bT@YX@f)bY(\+4.>3CEGzQ,WvP.yO:r)Ы{$'P񛳜ԉRF`|6>~㩜!EGN)]CV@ 6&ihJnm,4w\_^Њ4H%(56 L $vh#3Rp/RQ k١L:ed.;_p;DطYD56L""W/2&s]ƤZgviG*N!(3 %d3p؜q{jn{;5hwS;:Ϯ`פVvSBZ?O͝8&9^OO7A(u5 v}eqMĞ$fY_zM,~lZ}Tv҆o409IKh=K/u-gRT|-NO#}:A *=Nf$" zOA:C 5(R cYGqZGRM3Vox#Q5ŏPl(jL~)ydHnLF0瘦> ڍm6 f iO(tBAUA EzWB^-xnp -Om7,5?Nih{hYn}##xĦ8K?!=nlV{`Ls-ns-Rh9׾?PKX3@4jy^;7}z Sv5b8q$V^!"<4~S}1@{`vAY뵩M()KE'Chl_qo8ٴ1"L9]|7$QVmW)&f(%8EF yʡ1 %?s9B{қ1_?Ѡa6 D_E1UY ep?朲d}|7-mQ ++׵uNpzM.n>~S)`5`bT3A=٥&pYsx}pq}K^:ht/m&oAlThC;&&(ct,@cTSc' G`{d{?HSR]e_ vXhNs};_?θlgf`ЗN46d. % *Y(V<hK-5?1d|M4AȕS7PYFYT򘹰84=5Q;qcH&W]/@:<>W~m D:S''=9xn(7\Ok&{TZe lTPVeMDG3zU5u\k)YZMLd}?u֗şCq s7T|w_YI,'}'>FW v u8e$2_HN6迓ۯ>`6瑂] WYqI+?C㤤?gODSs:&#d8]mv*W S0<}ex/|HlG^`Z5|8*֔j# C(FB^ߏ[Qg-s}*`k6' mp~@d4];>בƵ۔vPl3<Ϣ^+Fz9ve\k>"܌ҁ٢yY,Ĭl^>0DAo9~[bF3C@/#&D7|χ8W˃oПR_*7UxЩE6ͥr=@ɗ{ʮ_(JQQFU^[M1Œ#gRﮧSThc֚k]em,̙@WG|F"MG? x~`I02RB&5o/ \FYGU~Gqމ$?I{/>RHjH{,]#3`# -$h ?)tk&zH-ܽ ɕ(lJT﯈r.UY1ҦQޝ@X){~<{"tcC܅v)TI ΐY"|u#ⅻ q9;(U_7o \I~E"oƺƿ7'_z6 LAh .kpR< ׸h_H )EQ͊@?QarSM̓,MU/tBדMvA%d B"9 Ę@ }!9H7놮źZTl5ҧoz|u.P_,FE$f"vᦾʈRSNIi aNxͶ?[#TEJ$ оyMSNR|J=cإ U(|/~n^rlzM cuNu 0q#ǁ׍2G|P\ޙAxVLBhVfb 'N 6 hR>Vjv}~- U\LfvI`葘=S>>c,ɝ܎WzS*(RW1TV[ Bh` $Z)*Ql8hFÖ: 4,]>ރFxP#2bfhq-I#uyPoI[^͗Df@I 2a>u4ӰRl&E<-Ff;h,Wq6XUflvZwZDV7ּHQSpeoRFy(/_NP: ɁĽfU224^,XMrf]>#0EÓZ#vದļ&ܴAWļ4UM*4҂jl& ~ٔXS2z)c bݭ%0o@}g`UB%023XiFoK=uU_-ޜLSz?^!*K\f('L/Z!sQ]sUqx0Y r$_aQ7qi`$ӭ߄K0zrn^."XȤcl$]W2U Ka]v|ĝFl ^ėb"No.AW\Qpe=uNH||@ 8#oV/Vy=MMJ'y@J lL2fҺT$؃tzfگ H5m_rƢE:U3jwkc \JQ^>gM9K~}f?#!g.,q48i,2$)DDI1{?n],Mx8ȸvm@{J # Vl-g`vt 9Z_ܮ"aD%']#/(b-QVrF°-fVDR32|d1>ցm=TDpoR Fϱ "h\^8{ &&5 RL zjdC{8S5uP ⹇k^$z(Lz-]rY%'o ^A"u3f';{\Egǀ;3 ]M>]--5vD)IsE:h!G'xW`c5or/YϷ~gYs^|E d`~:uu-BN"g}$N"ؼ+)M7A{K336&Ǐhokc7fw&Q2crOAy\B[!2c-$n~XgԵY-r ,=o)j؞Jc /.Ce7Y] z#X/DN5ڡ+TfXϟ6%@CGnx>c۟iPy&[$ԡ@"o$VQt 4&`SӠ%|Тrr#I*e*h¤/ Fkiu1Z?+2qOlq3fH1#OckaV>@ .af](zu.m!nۥ\;OL_^;9mP)7)EvwO#%zU1I@V@4%m)& T_`;aU ׅG-lS=6 R#cUլc],(~31 nYJ%KՓ{88:5bȟ^PɕȂ!R&4z1 c!f)hĵþe`»O*޸5]Q= i>YL/O2T%EFMa6rHnK@ |qIj  ,}x8ʖ^dxOF::keZkytLh6%@C<[Z  RRòόL[2.BmmkЙcڊ :E.nϼ<6b$S¥{ XHȡb]Aڟ׏CUV lIwcUn;q*I#wmFJqX#搤YKdY8`mFp0I/.uqGsJ{NL\k2]tFC6[P*w׸&q|z/;^F D 4n6ȩ?`ڇ4;Qij+釭GѤ.ip(VD^lL4_#{[{#RI.ZKKU% hA@DKW+Tu"s?Ry_{. |H[uɖ۱I7R*ǜM8Z)(e%]),J֘:\'6wu(yZGX?zfs=+*! wf/*$CS*ᓕ)(kaPld0&WvFGC wS&֡/N@(+ҖeG"lzҬN0]\$0 ~/{(c]if*N Uq5sµ!wɃPuC!t+{(R}^`yQcCgy.!uL!{S7*g*/b`Utl<МG37o)9Z@|%58>zUFVuPa}M!VT[}XǾѶLhqS9]v%#H`e"$) $ؾ_-N Js?J{+=|0ݨ ¬I9Pk2Yߓ1]K{_SAOJ8Y>k@2aѱ -lGGBq;<8hQkdE"$ '"X_j6:O\d! d2kǩP/=}}g UZ* (=7 [.u5w_ڿR`J /iI,cL%q e۝L# ϡ{ ٸ;Sh#+sK!ў)H9NWg+C%3SNpZ4AfFlY6 G^*3t/3&[ J{rONbXaԻgU.(j{rƱv9+:7̟/{, o=t}̴LiE G 5j DbC\ hJ ~k-.lU=Hb|ʨHn!WA͏M(؇<{% lIjƲ Շ%vf /)h6ǭ=}s;ɵx3V(l4ð45F/ΰVz[לr^ kI.\< [$!<*:6CqD 'k,4H246+]WU(V_QmqA'y_y3O5#r1ɒȏ s`iZd,(Pr_1`r?B $yM,%q$I2/Gs3&#<-_k˭;\s5: 𡖬0^ ћDFp*m|+&6:þi̻ՊuἭ9QKzɡ WY̯#( ֲ3Sx?qVig344*WnEkL$^iu$p݄pX0M#r[6y'vU_yM~ l}"7b(~؜r̥z5#Ձ<21kw*Gh3 $OTa_fxq2^[vu3v& #dؑt;Y[ŨEKF;@^Oĺ-sqP핕m⪢Ds Gӓ..ώ h֧?=K>lZ^:XѰjd | iБʬM$<rMxlxV5Y6m|z 0GHzzBueH3NGܴΨ0lBT£H w)xOV)X/n*يzmRlP-pPG4k(?N[#]嶼jRfB$^Us[rA'ukYz@/F Vwɸrzキ7]+~P)õC8VJW>h M XTOc0Bȉ* !ve@GLјmNE8SweJnlIЖ19&2-X1oSV|#pib$^̖D6@K'$NHnGႸG˕uG%O׹}R<E0/ky" ?; HNI1=:c$F՘aǶx{eᆵz2V2I4bwUӟm&t8f,NlHL5yf(eOP͂dR]+`mhHvN o'+_1yU{ iWUfM,61iLѷؿ2w,[ꧥ}YЃЧG23>:mZ_㥢Xdx&rKi0I=rl]{qTާkdLC4UbZ:j_؇ij2)\%xҫ o!dm.P?Ԇ~F)l9R|CgfdIƒMTG5Gty, F~#E٘6 ?Fz2߶C!KYj6h3khӖ2!. 9rFbJl~1w~1Bvڼ>fB > Ee [-+-=³S9u^bX |Mf~sÀ] lVB"0F@l~ _\Z[ltߣrɘI6 ')LixtXsk+ ISfk{ӝ9KqzySycDVJ8WaM `} Co$DJF1d`eGz{fXc:!zWeᅛGw'܀h/`UoeZtbFKױ^yz"'~ٖB0j̱5%a? R$ =F\2c^c"G6sel"|;wG .vyJ MBIļL餞lȥ*@Qi| 6;rVӡ񤱉OKYQّ]óP$3gTģLhJ\E=Yv〈7t'1멟&+.H5Bx-lN=`~Nm>pI/jj]SHX mAe , =t(bjk:6JxSn/wXi8΄iuʾZYtX!dqjm5N޵u:K6{~Lx:mp\p>U=E^ZP;ID86ЇMhC b!XZjmi6iPCM< I@]^ahxfuRm/ܸHě 0lid9@3; LM"wUۨƔ "d7pYE͞Iw[I<'M|*b0ByJpuHq`C >t)LRL *yX2u@( !w;a1>%2 9z%|&t/_]ߣ-v주i\e{;h[H d$4{1 %f*+Ok J-I!pwYMY]_'*2HClUݹ4 !޴ށdpA5;a͋U̞2LsiQdוIm{d:BTsxH !_al]5ş-g)WAӕt/ҚBvQF)T p}[֑Tpha[2-ٻ첊i,Ӏ;^RTa;O 41_m3^wOf2r璸5K"$]!,[' _v#ükx^4Zx W/kS4b 8:iGyk 2%XX7Eyu%hW"Rfnq\}&HnDAv}}`+).Xm.(GE2A FVN }-˭ן]BSjVȹZ^McUGdڎDo%ѝxi8R^yj U/eXx3~y GG&Fʮ_%!3ZHY*xi×!m)鍓t7 Revw|W~d_ih 5Xuj Z3T%q \;~#Du_lC/t6nR-.4GWњbYL4hmN;"85xWS' DbzeRQ Z9{֜+vZs#I֒?\z endstream endobj 198 0 obj << /Length1 1742 /Length2 10551 /Length3 0 /Length 11664 /Filter /FlateDecode >> stream xڍP.wwww``pw %,{p@ݻ{5U3$SQg53I:32XY,,L,,l`gk䈔 G'-߿ LJTȹXX\||,,6@W)@ gg rBp[8@cB `f jrm@g kD5@ r/4|nnnL@'&;Gs!Zr9LK(m@ƄH а;P3sv:k xPU(ۃl$+I`u9V&ֿec=lk0[R L o" [_ HU#ى lFn^YTd;? #=z\+[;7[ 32L]ۂ\@q^EANn^r7`@/{;{k  8;|o 08A`[Afw>+kZ{C㉙Օ$*o; `eecp|ۏ W5='e׿z/%hit=N/v{6f$bmOG[{x\)P{j]E)i5hF^&?`');Tlbg){ܬ ;'`dea댙X.Cz+ikbg{8@GGS"NPe3 D#w0Kx̒#nn߈0kx_ЫOЫOǫ낰jf ۫/S0+!An,q<-^W?W_5'0:vlf`+_5}׸*5^u1mOA& v&AuA?jD&8Pov% \Tn#D{#0OJ^qY 6"p:`̌1xOa F<J="7RI?v; SgN]\gi7LDŽ<(0#5R.k+c*)ZE\ pڨͿW{)gyz m@O}`5+V@j̤be 8%yS1R@RVaت;@g;KbC}^0e x?pa1JZRSR0 ;;H[3ZOdc@MȌ9i҆6RXPẃ!iDžD;k!pqMUK>oC -z=7߾;fshkcn4@yf{hb}ye]< j*m'~"3m(|V֍N3>~|ώ3dc?bʠE*?o&k|ZS4/i&]h =t~tmu@C5ë`F8osٴޫcwV*IQ8#;(p&m[aB:mC5eF RlaAW@&yb[dHiQUrvC4ZP:cL XI59Q:Vp?{O?S Iq`90AteT0"D _q;LSǃ8[InHQ#ԀY='? 7F#| 񓐓}$VcT,Mv nݢ0^䀤~ҳS37/w mM꫾1(*ʂ} $ KhYMEӧ9kd-' Ie@H6eKEUe:v78H5w l4(,Sʆ!At+s m,"hħ ^$"lz5`gnf'[kf9uZ΋q=H, mB]zƒbGCJynE5æ䇅Yz%D}4F?B lu Lͣv֚!pŞjOA$md>o5T /r 'ޱB\h8ocka~D}}nS!K>aW,4gB' V%^E6td ogHI +,e3Zuܜ]±sXW&UXO@nB|,ZF1i?Ki6 o9zYN̄FqFo0ED>N\nq)NH GGKEHQw; 8TNCʦXK 2/ olPUqmXDr->|zfK䝲H{&`|VD6"-t`HJa@`'tHu {.:m6×wᶜiqUh8}ufXA[jlyMڷ<X+h9YVAH.hwRa\Kmrx&}y0{5%X6=c ٍ2PAVQ~(MS"z= ,J7/Ia3TgI2|zGK@O*ه :cP# ۯ ,/o$8-7nj(؈hbN#߭@Bb- )7}2fijF2+7쥵0DM_š~נD9}T(jfed5|mt*vXq>ҥq$*MAfd>| BObK]J_|Ѷ+ > Hۨ`7;2; w*KwnQMf*q6J̓E@ؑJd)_/IT[5? q lHuZʐ\<JzAZ8rB&f8VکA sYT$5C@$MlA-Ozub{n^*іyEzzNfJUIsEj ,)h*;}U3A-Hě71z35rѱ $wݥH0J"a;k2]Gځ3@gt%ݏ)^eVַCgw٧A\uKd?|DF ¨liƋHj;:5Kz.GfUmoQÉ29xv~捘ocX&sQzA>\W& ̊gΪ?8l<4w{|WYu)!('PEoŗv;`ė-rp^ se^KIO @Šˤ+\o9dyld]S 5D0%Q-b%#ۯxI^n=kX簟u#" o?.8=)D1crMߤ_ 9":4N 2H@qec~~ i3wx{PK䠲$LP'JQWzS7,P  [T@d'A!DiV&U]O@U˒(5!ɐ$£(hPr\;!}.PLU6 \ִ˘3rv12# @ӓg.5Aѹ¬ 릃mG9fR@ }B5ȁC/kj—:fq^;r$-.PK^Җim2G,[4 X̧:r'$«$N\.BǜIsq.Ml@?X |LR-\b8Fb)ݜf妬)yO7Vw̑ $e昒p;?!gȳ%&osP",)8k< )8':\Ţӥ𚷓V@2Ԋ4ΕWAfdU6Qi6c~-8G?5 Ǐ\|{,5_ɉޗ* 2*c#ͻJJ"KMȦDy7}v˚ęp",$uOkܱ#0r6}sD0prYӹ_ʑ`TCW0O3טpu:7ܟP^eL@n6XE[%R(%mP{]*:^^e`K\*/;S~+^t8rۀJLBÙ5u w2wXd:7C)bMx2}vxWBWͷٖm:!_X*p9Ҹ΁JlŒmչ))63r|eX"QD&Zwo6I#ThiP3cO7 t d)`gn#AG?MEuWlxˮ=^OYFS9peᶿdYaƈu?ÔY3$ۼ&8pYmTvnyx+^.z|C:֟ykˉ%kR뎭T-B;coAgΰj3jMOogxI$߇-l!pbC%ZftŜO8H.g} +`zrAY ugv27p_u#m\8B BIqP4R朄\ ~Ae#)h5p?cQʳUѢW)o/w~W3k4#)7/7D,&lcrw(ѰX nO7MgHA(Y.E3qaͬƃVԮ5qsi% f43WW!1V}C3?)&6&|y".Ƭ[jD1)NqE%ّrtK-Z u8Nw dS6G1RF[yWݶI8HkrywvuTOvy!1÷Vj)c]/A?_%sJ+~TPPsZs^Ds}*g˺DY?P0_Bv FGW̦1ɛi) c;^H6x #NqPrZ,iedOd8–[3ژ[IT{_﹗w|cViy׍qNlkk-63Ay&"Icn$N4w6:э[aS'=gwPU< SC1RL Fv5=I';˼7'lG<|L>8`yňVRn9!5Y5sP9J_O6%:ERdS0)Oc4߯V mJgvxA,("&ӶVae8* Aճq&+yc4or#.z.'2CX11´s] j6&`<>Sаw3`!jO9` - nt!SD1Ǻ6'|ƚ;[+%ĪtxݿC2% ³qNJfuwL{ jjI-ܰ`hG]oێ5/>z4R[:>/=b0b|9mvDwܘ½Rw(lSDYF9%XVxù,c8x"9;6\AqnALƌii4W]i$[]FUQ%37 n<$=!َ?vc,gxǽdŜ٧+uwA5oc=uCZ/.h["8- 2pO B7Ez! ?wZyHB_}Є35p4 vt5ϻg|fyW {ȌOC~2(kP ׅ.f}R:jwKP,n?0DNT6)f" JhC9+j7nLr5@hR;ܖ&N*i91ORڢ)S*95Ƈ[s3pUK̎sa N@N'PV5܆\3#pfS$1 zCϻUI#S.oaĈc y LEq"m-s!BJb~/|3`W`c:`ATheG "%]h~GA]ǦW,G0ÇXwҙԴ?lBe(tF8;Mj;<1E*HsD"zOK߯e!ue0$?ڀ@U隊V,-ܚa%`*:`"cNWIwy@ :FJPqk'Fل  ^S ݱ&}yh objN-X*71Qݓ+F z}h;޲=s XXb륥9Yv!kYs9ι%pNf2Ѳaz ɕT'Mm/Pc~>[q̂X)TZmX3z~u粰 ZXfٺ܄szUT4kOo|=e^jAtYH>'Të%8|+/s'z&f XPW']l|I39+72u'QɠZ9?TBLt. ,P26V&Ts5 ɬs餕r8SMC(ˇkL7B;pR;2hqzhW3ó[J?>EElj@u.;Δ]\'X"&ghbfOۤ2 TNaƅ΄IBЃN WԷ\QB2|+f;R&92&+K[: Y~ɠyJdd|u h',vߊ:FoiA$T*jo2)~(Jr9̦(j ZCUG6M,"}) }8${ ^)xeȸռ1Q9֜r YX<~rL™bLH lP}_d3J_0%5Y־+N~/V7nQ4t_]h",E0žֺ MWK~ siR3Q.Y8$ zБy 4e ; F 9%oBpc&6øܙUj]0D/)*f**#^}FaM3<RRYe{d}<*Ɲ.;܏NO2dÙ|Xߞ'}BJ G&euJZ"!ǖ@=oP{Ie1Rm Ay  7]7> n07۸LL%Z w ]5 뛾P1-lrx;nG̠Wila\ Taw0VRpŻw۩ .%Zp@+*{!~9eTЍڝl]sx`Q]&lm9Z")5$QĤƻMOެ2~И,,> G+Í~#lFZl-(L"~[pmthaw5%nX.4"3PsF#E<{l2w Lp̦bAz8­ӈǻ5W><1fLmQ?>S @a~764F\ ?EiaS,V{zLP2cm'O&N!,C}бp-LReIfXkHȯ/  izΑNʀRͶyF b7_EnHrwr׻{=XXhs{O$IxE}5ڍ^,g|_2(o u| @\ܙ٩_j6F6&ZƂC* p EwHD\ЇP,௻387}ChV?u턴QW%Ea{4bx,1cH""tj("B)ۿx= ?P+Gl2L^T*"ŁF- "at<6v!:o]5;4"1tړ`S֊r3{a o"z/,oCK"rBF^WLljZ:Bwe/g  ک93 &ŖA~ZЍz19[=2 |a{ O ҇wt"ZL`KS.p9 |1)FnuM 2+" g?.oU /cE_p D%?Fd)O>R3='8s;Y@S3ٶr?_>n\ZG; ^g:hqC0թF x 0wdDD7 2}."hXD2Q?Қ'АŮ/fs ; A0l-W!Rx>†[tH(F&풡wH*q={nn`X+w+Ϣ}j]bv7")(̔XN'g=EdP:KVgR~E.l-^\<{Q)9Q n:|9Ӽ]B" #\%&PjFLDQįfZ7VWwmʛW4)Cpz%0]}Q:ItYVkd!+9d ]ǝl :/Ϛ \نh,n"MקLl [. CF$ȱ ^6g&= 46B[ =qǎo73P8E(gϭtF|:r{IwL׎Ni$dﺷK+Mm]:"tւVPdJeqwٽSyCX㻎ofn <ҕ,Ej \B`VVAgmj.wPanL*|T_KMzչ!V`V >,7߂RH2}9MHVU%:GlmʛE|ϳ`ӐbnpzТx0*It@Ou4~=QS;>)b5)3K#6Krb= ͦf= fP2Yj"7ML5UAw誀h)B>NVcdOoP? T9> stream xڍwuTZ߮t R! %-ݍtp~G?y~{o(HDM Ff^: 3BdAZ;:!#4i& @`eef23 /@ut"R9:yX[Z'ڌE:@bmfP0YLjf@x<<<M]],i +*46@oru+kXj  L6:́.<@ ?heoe33G{'/kK$)L4su뛸Xۙ )0 ]\@vep% WĿv+om=|~c ksR1wsbpvvʈG LBM@O3+{9fE}\M܁O#D` v@mLZSb c! Ͽ sf`[F3i*lQQGO+3 !e򇪌#x3Rt0@{9XoװecwLnvvKP%abom^ -gn+2%xx9![JZ{͕AfV?djQ``af_<قWtW鿽J89s/DfPrp|Xi{L rrD"L".Vo`zXO_ `RVT#.ֿLE,`&fzؙE*إoF.&f@nMgD08M'_{?w_ p _N9; 87*p-O`|˿ "ح~gF^NV@?$4? 8R? +@pq~G _.o>~rOﺁ];ٛuX|dr4ئZ,,D~>5?n58' Co dGbpUA@s?Qzpv-pp[jgj8K& 1 pCln㏵k{~GVc37p-Asw; 4C\w4 鸫`ǩՍ1#d"m9>{OqQ+j=((x|.[NF8w1 #Ny/'/qżITҡP u@xOTYTt0OÃt$m ;;%l$eJVN ~QR S|r.ޮnN9.%T%÷KPd.\*Rqqֶ21JN!6%Vg޹\3ycdyQء2abZEZOp%Jr&5"<%6Qe5+OH0.PJ=3r&zEtԙr[z,&?x t/z>U{6L(L%k{L5~ r`3}i'H|+b0;[Hp9#K&A}e}޴ݧr|z<0# תBdګZ,3"4 ٢>s[4nsb2<7ɰ}NW J$k &?ã61MC:R%쩟3`%ܷq-Tae^Dqh4'QY1BQ3 1y\S!% %{23~i%JY\Nm-"xD4 w= :36bX?:DD]?  ^AiX)}A)NoFOu1Z8@13%f寂FY>zAcI~wDO5@R1ѮdF2 /6e׊B_^*z8Kã]] -:ǬP]g]743DŽӞ~$ƗU6q:H[.ǁtЦ8L 8r5 ϱ9rvK/;5Tt\f>QQ-S ZA.ђJH&EaF`ٝ$WLن @Z+dT3)yR2\X_,dGhBoGֻNpy^65n+gyfd3-N3zaB@~n}w;H䮮u"fSFr(FْXh$I}&qOEfެGO)Ǧ]ov[BgC AaQo-:_9zT5>Q8~f0-}7O;#uV5dTk5jDјw N]KG) uC7o͢-bˆ+s ee 껌?:Y];_>$3UL&G&It)cw`5wZpl3;}mvawP bhW6¹yG-1uȸRjI*{#bJ?>Wy93K`өX}؛7uWSS=zuOŌ-XF%B1Y]ć \-׹sDzٻ)]v~Gl"X!3}2U o8lFV|g |T<曞)Ԫ}we?pGW#Ǣ$PPunZ9f jU)k%tJ_(@щHįX e?y?G0-7\i7yOyg@,*Mwe^ &oH Tvh/Jl}UU4$Y=H|1G3TĵM*Wy.)U.bHb Z[mODIk ّdBZYl3b N?਑$V톝ddk_B;m=G7b,*8a~Ťw3qVw~Hm= B~uJkZ>%Ԑyon Rv0xc7Z_u!E:.ki9ra闫C6Om>5\sybg}ً};WPDR'=4m˂H_|u9y6`}޿ˑNQEG:9dh>m.Qڈ}jjS5JHߙʴ;U2f ?~gx=]Ne٥|R9ô\gqNeOK;qRAܚ:K(m])-J( Q-2rwd*|F@¨2C="y;g ՛%k)$/Zw RA:34 P]Lͺ芴EJ'v~ |}yn@h6b D_lQn.[d b&PX9_?4i4t*9;E( …H-Em/竛 lh 7vfӵ#wcuH$5i~҃DaIxQ)?C>6Vb\I䑝 t<8͖|Li;.7(Z,ow!<1B'L?Id:}Aw1"IBSWIݛ#KoZ]^U;M_'|6g۞i0TL%eC|~mf?~^Y Y" *H|N?E?LC]IGQΚ jRhĕonDA}%2z<;evJ_{d@su | ̧#sB1Cbvxŝ") ∉HxvDr.`Dz^(trd^fPl;}`KaU՝v3Lp񸨬J :ki B[ >$H?نJ´r5Nt>:*Ӣ\:O߉X.6'sm uZq&. _m`"?p6,/&L, ϤR*_&Oֽ^.C5j-L,g;SZQkVY&$zn?<G3MnQ1@Ԙ(_-Prb:)-_=lblvckH~?ƋFhw_n.Jlvls^8ib謜9$ %L$ش+Bc\kYO.? cvxSɠju9]摾IÎ떰j s>~_-1w27:#o!qC1Q("O~'hB>=¯~Xǯ̴]2SWE8U-c]eg4HoH//!SoVH|@^૱HmƦC\:r-_w@̻:N \.ZG>%u2~8}+D>kW҈D1:\$:|_r1wB"vnDuM1. *]o;۠0ZXEOПw֌Z_khq6f24ȠCb4 trQ"uq^R e5u~b"̆nx Wvrȝ$!QDݏ 4},\:9DOm/s^ۢS^>& S&YZs(#ռ{ @ymjXˠ=|:=%WDt.- k`3ew,@D'A~+BC,O"}䊊e7HxN ˍ& s?qI!aK:L$32#$u㞡Cݹ7CK. v\;󻏕@h!ݥ,tS^m=hA9=f8\/ܬnPT%<9 ZK:*抂=,<HK6 d̄Qy㔯ٞ[8*BO/T'm9NM_HA`֋tKR.[RW]WkM:ufB!lCs_~MU?lTB|{|.aƙ4#X^+ܜfd>rܑZ(8A"FDGŘWoߋG83=Kf:4غq@Tl!9D,RX]fx##߼)q\;vS|yynPxV"("76~E̠ڐjHUoJ"4{e&4=*ck`Iشz"Rx|%Vָ(Y8 #ܿn;k_*{9* p"@\M4ϔ'daͱZI* I=6E:kdn5wl$->("9v=[ Q"KH}bQ6 ~CEh$R-ћ`֠($-UIе uN̕{S|PpRjmgHe[MJs(Ǻl0s(ڟw senN ᫞i.86u'J=OgkH<:+4`'W5 +8ʹX ;SH1T͘f8wx(Wq>HUl m 2Ǧ6G<$5/V̼8vG79Z_lFѽ-V'_-b]?(0aqϓI?KbSƠC 9(.qw"qP{+ʵ"wb9[J"8id\%MrWPP+{C&ONGYgC-5Y^˼|n;ŎߏX> [wH1iqXLjɨJ[WPzU yɥdLloon{TXekӁD_]N3Гtb32BL\m#%F;JXfBE`+Vg/J7N j%PQݎn>|8;Dz6AZ8 XNUp 4|->ĩuGM 3}pGѾϜ(k7&2OTSRفHorAl3j-U|?ZsxbBQ!}NlYmM$z#>x3ERlNs1rmmF̐BR⠍ek6"\'k?+n1ΗrPUz K\~gǦR={ v9Ev\ݤ*R⣏#Sz7}ǗdWd,0 u!Xw^6{v?}_6C9\6iwv?Er^{ںsa]~ugُ;.1!6Ug,{qRݰ:={יgaVL}rv^L~RRotS4m0[m +6#:6~A;:X!M{1l79k3t!:bC5qJLZHCwfeHX kHODl8Q) b,|4`D,rxNr]=*"S5yT-j+[Ϳ/ VƆb'I@BB),]-M]FSM$pPN7 uŒ;wOǩ.>&}%$d},/_R4\.DT4C4;`tg$9=&C0j cZl}*G~~$T~yä=E[(|a0hq0 1^VYS l1EfUŬtL196U-׊1crMERG}:zŌjUL/g"(*j*Q!??7 Ӑc8`)B.sϘs4=~hO*zj* թKͺ }Oq{0f|!|ߺ_;0{] m~ڡUt \V9-g:pרEFI8Ҁ^A/Ha9 =ICEefˑ5jLp$=rC]w?\/tFpNg B4Fȝiyxٶ4+DŞ׻shª<D/lR/@ 7s>d磇)_j&A@ #1e ^.jѩDvov˺B˄v෬͑^Cܩyt|fzc%ϣ+"sP֖>+JϘ?;HU;8 wYԱ: kڲuBejsseOf̧GOL9ؓv {c'%֚{0Wc:'nür#=vQQ1]710dG`iamk#|GL|sLQATU'ZAI=|s1m\U<~W% ut= pưyx:5'1w3_tQA 꿮M:Q pD \ d/Ozዲn{P0DVzjXNpyjs#bDI>[xZső%8y~+n5@ ¤Wt2v UcH6qH-?,x_l;K&W?E)݆3Ց,D^?{I/vp Uy?JRGc]ZS?2Kwdyᗵzj1?xӚj&?k@p-ܫ|,'b!wJ@Y,+FZfxDx)ۇHđ)@5הB  iSql+)eӼNԛ+3wuL4iw+H]r$1>y|0d)zx gc@#QY߆Dj SgQcA^Ή&g^i238@qYCz~!~R~$B谲q UG2KMJ0Jp\=1L+;YYsŷ7<䨭sBOI%>,&Qn-AN$>lR^zu D@ѕ 'M">&jwTOE=r,Ӹk˕ۛQ YmèV!:DsXG$]r5g+CP2j%s]?Nk|.qߒUY`",PAKw9C){SGn PXa5 dxpki"SBۦLcNUګzeH,zSlgth_,IӋJOW-Qsr+:ۥ֪߯ɄvO2lt4qܩ6+ ?mU(#iHz0ssy/WjUJ$re)+y_gUYBhq:Tki`G\cV'od},~mgl6NNG$>g4eN<įJ %@CX7kËk\- 欵|#J 㓛 U&=/] T819XqC\8Ovh 4='m!*\;[ Y0 |J_݃c0ws0o<͢0T$JϷ*W8u-4_v+*Mv(+QnY$GVMbOְ/Q.u|d8Gp>wPZu~3ҚA٧u\[oҢt ^m|1 u_9슨&ۆӾ.v+d=]}8(L(7zrp{l4Yi˱V!3<13#)|,ڎ0?*GůaÊ++ K}>\ VQITCT?]ו<~)B F- e Fd|f CX M-)E 1$!Xm&"}ax.f(߽}-@t_&Da(㏟tkph]V|ya/2J|^ R8/S . Y>!4"gEZ_2+^%6aMĜ?LCNLtc|#>{K9sw5Ҝ7ZlSgƒ.e72D@jJPI¦cdo3M^jYP>}lKms%7D4qQ\%>{ޣ،>Ҹ>"ӽӎdAEz݌P:aኡ/7zCt<=oȊ(?U ,߯ݹE(&?0Je5ǙtxA"nwqMV9V8 dD+Ģ-{w c@Kܩ_AF{`슸:Upy_Pɣ/3Ӎl,yOIA#_1#܍h]t?+qm F{mv8}TȖ9XGzRp-͢sY2 |/ION6f2U GJ8/V5~a"**܄MR:4ZknX&MhٌbhZHGCVpuku}n9vJ-F+VxvO$dB>6LU.En$tCNbrf+4yN6+ ˖fyL561?żoVb >ēs&sf0o`ڧ~u~c]I='K<+Omޏ{M*ڋIwRjK"ak%aOUSdqaЉlRDc1%lvvםOMiA]rȥ%^0oD<;6&WZGeMi!p@ה= M[a1{I⫬,zˠ[#K.׌Qr XDi ]!\(\3 "EkQ/iKKg)p;K_D~԰ mC^MbD'OC;U=ֿЖWZMՆ%{:xh/nnh4B%vhזqܱg@b"BSE0r}Ciygɱ0/_CS#)pU#yBpdIV»g h~U[7CBհ~A5w;y~*׎Ep! tE}OritIh$IU6Ww؛SՔ8K!^pjIPN]bE9`h'hm aFݫ) fA' =sW%dI?RR(sz'TKmޔYAo3+|ׄ EkWm*l!%&y8 9gmO#XJ:ATM3blW60~˵6i $)0i[-^c zU>~gE!{uS_8bh+ }]_)494exxWXzǔo4܋!Εh < ێ$9.P<7m|p)9'jۿ`Pypx&f%u"h&'%˒&U\eMI2OpyPG?!!UA,p æڼ t裁O3|wMiM8ƎYp@PgVC{j99kbVn,Pҁ7{zW$ עA?B5~{饰+K.K Mu ,1d*O.]Z "۱#Nc YY$ -x!U^Jď'"2@{ ֕$dnԏ1oe7Q7Ƥ'1 txiTԱ!@Kj:|GK1i' ]QW00nYBߣ瑽߁@:q(cC Ro xCK2w:c#HozI-K8aӔ%GP>zI+Y!WiO=뚐ǤYR/U\4'=Ο'E?*2⺆[!FY*1ݟ\dЃpy԰Ǩ'w(-Ӌ.<ۢ ѕ?@ĶX&_֔gce9iތ^-w:*Ck6Σ_'BәtsΊؔ]Gz=dl$M۸OI; rrn='57&{1oo!AvL³t$3A,-4wxN%hLtzO᱒RMq5b]JIb-UQ%F7CZMW&PYw͡j{Y](HM!S5D0`WmrtMۊd}\g?Ӽ5K-+bwatzsQt/ +mu^,I0&e>`C_+_mS9V@u~pى(ä؍C.j鍊 cj]A *g 1أn4ds/iȬMLFib9VcFH#IF;&A Kj]s}^z R&z/(,G]X/S_NSj}QUoٙ>ZCsL,^⯒@/'^N :2?|YKڰJ*22icce+KA B5I:=!{pD3g8yƭ0pVGF#̏~pl\.Sm\GJPr)Baeshrok#qz q^%ԕ(Z%zOO{}hjVEe̥2ː009 -; O?Ixs2)jcngWfM1+Ǐ`ץdmƹ]F%]{_iΩHmfVrXCQC,au2hD3_8 A9c!yso@[ %W#D<noYȤ̆pș@bʳlx/QݙׁA׃ESؗ4PTn꺞\71RKH}GvȐoXkA S)Vp} endstream endobj 202 0 obj << /Length1 1370 /Length2 5960 /Length3 0 /Length 6892 /Filter /FlateDecode >> stream xڍwT6R HK7 tw03 ] !-4()%!ݍ}[us]ZD%m(aH.^n @ ~nItma҇!p d `Ma @$7&ȁ=67 A8Lpo7=ߏ5+**;vA0@ 8V;:pk(H'7 wd؀R AC$w񃝡NuGފ@ ~+C )W buwo|+iӿ E(@ 6P_|ˮKiNPDz\ nex@ܒ rYm~ɌOPq@\|yohMcGކp7_w*h2#ۭ~_mͿϿ xAq&ա-gUT\˟0[z"_s}U?q)'Hќ, b92 KVA,qvAhlvS&hQ[$L\ wV\"VE7g脀. +ݺmDǸhdJGfꮫ5w*Cqd۷ޞ|Jp" be(H2(2'c](1G[iuiexE}gmF_CE)"W`|d}hF/jN~0(.5IҪSPbE,f촗oC!vv5!}Yw_,a!o.oqهW؁G[U,JLقdOhBS+B>1| 3^iAK c݇'EB/=${&Q%:(wDq"F4g]L21~by*WH 4:t8|-0B ja)-9'Vuj:0 @{<=- mE ݖJ6rJeCޖ7FcsC;۫MAU-gi@1 ELCӳВe # '%EIP?I{pC2bo7j9>B ]MbeFtsWc ?mO9uJКoD^):4$Fչݣ 9x)&UTǾi1 טmJrHƑH)z!%_B 2~Xrz]Z^|.̣8*oX!YI:4DF:ɢ85鵣v]E+ %r$s۱s(e3C$vol6 Gkч AI9*4Gv;?+$GvoK-$Y-^ayr+!@Yg)ǡ%,gAt\ZM~™ԴzgvQI0l72ʎ_9 LQ`gYS7޴Fwt~n0#7W&DX%/KRTH#P71v,3V\hj$\ۺd`8 XdM:$w*@^EWk'銳#], jL|1܋3iwcݹ7^݈n/Hn>}0Xy'A `?->P*t.WtPD:xX-dL.Z{|J Dr^x@ݻ@Pg ]h9sēSIa/ Id?A9[IP >=~fMk0#(3uVHw BGfo`3ZHڼ)͝۝R*c9kG{?LFOokw-qaKP_з fVd=џoK#3df½̭ eԜC ۂ.pjRUpY˻LXkP~+h;+ӱð<wE&\ǫ8{X͍pNX]ꛃW .s Ke6@FqO 5YH aQCs;N)v x8aN˕SdCЭuop,a2jL@GR+=_v7e2t=3h18P .Q̛dݲ:#cAN([ߦVV=>EN]ZyZL.dk*ƭٗ d:ep9xBr;֋p3V? O&-& |ga0$_/cY##Loz#< a~ɠ?IUD|GֱrwE "Y[7@f|,Lz2͜ߪP dΞ^hBOhggs$t8@6\AubTWj<,Ue_޴ͻ#p_ɂjͥ־3N*C&F:9Տދ:D-XW`/q.R.+DWzJR̾i}.zv:~P/F !-rMN *,P~ ߞ jV_ Yçb4%7h|}Z^O/=+ʊ٫O9XӕnegM^Э2KYTruÛ`T;e U"o6o)cSh4&l&"7%"a wã:mL*yloIkew͚XU@fù))o,].` gmc;uM) _0v! KҜ%G Z\ݯ7GJL|pu+!y]>KR,IyCUrUMӐm3[˲cV-CRJ V>Ԋ Dy>mtU >CH:\wX}s-#5{(^c+)RE;}two$P$$Zڶ膔E0Zq? 2⦓L8uRI1mg21oL)˴R|îrC+`2?,KDIlK-9.hq,ܩ}fjs˨{sS<*{۟:#AZ؏DrZ+nt$% 0Pe+4M+?qbdJѦhi#IXԹ> &CP8vI!Cu3\CVݷ.У&%B]ϓ'>‚^ &sFt':z\͵srKO̺o(J|m=I!Jt.e6 n"V'Gq*OR{8O`̚AYrVD0EW1lL'KVT,IJDlεQNx3etr 8z ;I9kyW++mC\+iy63b6 = ]졯{xlPǽ l+Kz|,G^c ԟ2.j8$hF$\8! d)/de[ o r! mp Ű\2PfŸ4,*8F|Y_WmdL|;+fVll]Wcb$*F/jdZ%̄j,*eHFoTl֙.6ƃ<@;zB~tPV A>/zMY@i.[>wW/ҳ+QȾ: 3𨟿$r bj`Dz0Tq_~0=T$r ޳7 }?@Li eb % :{&22JG{j:&_Q:>/` 5uP]̰q>`}ì֊*Hm#PjV;?M2/&~N6fXHJctFCMʻ,n(ZRD^H3_hI(NY3sa^=nq0FphOLZIL&5Rpv]3S+7a/~Mg%S?Q]);"J^(SJȺT0V HH}<ϗ4Mg@Z/:.{,n5ܘU ?4\0Pb{2# G::6 >[dbAN;zv#&]zU>ص> '^ HDJ~F`7 Ҫ!gC?ʏ׺B7ǭFLZ Go`2*NZ[*&O4J_3֢pؖp]cF+ ajƼcuXameđMAl]5v]2I?T6WTa!+kY7lH "|~1-fv֫̀.b9(&#> stream xڍTuXIHO$6fñ9BZA;iDDAIIAJnз~dz纮>χ!=Bbx| 0 @66#8'`3(`0ʧ\AQHE$ P BK p{6PQ>h_@N(,..;(Cá$Pq\uB@C*qqCex^pC{쁿@\`/`90^4 x@0U^ku]a?Zxܟٿ !P(#p Ň!H_@u+!@y} j?7tw>w8ז\2^CbSaЫ"Q^H?ik{W~c$'A Hs¼N~W{c]Q@U`p1h??`0`p$Wn po芄` 7+٣/_GP[S+(X^Q0W@Łb +ANHPNꯡ=dB0 ? WS/ Ϥ@Fp_ '+=hTo)+S@T!tD}pw7^:A?ƿ$#az(w  WJgЇW+fdH(E4+K_ @~>$ sZB~ݪ P4Jf/_oM`0(`r u m<]"N=~ ;Ph}өjCp iE#4R;gQ(h]g0~6B '@&kn;~ў7\/CyM3U֨2oLn ]_:e8R5LG`9c%1?¿ѵ '8S9u}6YwWqׄi쁵RT?mO?c5~;3Y ,Ÿ/+t<-yT(ÇibK xWŚe-lx٢ mequpu}  t};dZ[0Nm۵RзqNO^2PJmJԧޯק{3];l{-<$aO@g6jz.YA Pbە!]hWW.D`Se "&B-Y7 ˬ:|,?~[bqA'ld yi;BnV<1bmp XDg_4X\?)xTM@!&>S U2TKx.'n*.jDHUT1=yzm][־_c=.4$y 'RUHjNܙJY&-P@!i4AA'=paVhzJ˔xWTtF6wrl|#qLhnRٜ躰Iyq -Y[\ ! u%dz˽] "b̧^MӸ K!Htqgw3%K3L@zSYPMB^DsGpLYC:4#DeJE%KOTq 7:wx^2]|$މLrqzn YqB έ7Rig.\cP]Hb(נW45{>Ln!;N yl9'˺5řL &1XgWqc3,xgO !3[NE bDOiaƤ)~r~+v{zkLNfJ%vBSu%u0chd \`vPr}')~֑e6L袂 WF#eu|`'"xtzPp"3lTd^v }tb{b_cۖ/gэ!~hT@zo>TWQ8uC2%TlEI^R<6咎–?.] L,ܓ,~deGS2Ikg Na׈u"oHỌ83ZX9Ckn'~ `,g0#&Y9st{ŪDQBvLekxn>V3]8樃iZ}s 9mK3hSSӍ'n܏RoP<>4۽gE=kQb+cCv >IOJZje Сsqo Y4=H_.`[FkE|י8\\1@tay`۹{!hR-8oZa|ǣ:Qw܊:XL+&yG͵R3l ^[+7ޝKMV,# *ួqv: س-o&:;߯s UW6ͦ\hfH/]D&-zmώ(r$qiKC$.tX+_M^ɅvE}⭜V3kvb̺.6d$9f;wFo}EGfJ,?$xVZH./Մ."N$6h$܅68cM* ҁ.gmULZ -r8%M)=zk`cϾ=PLe]nMtVY-Uɭc6\V/V֝.fg9:y6F<_@CN)&CCiumr$~ lSA~ "b6[2N4#kMO~'eE:ӵlınu];bl( ^IJ\KgH^*;u菉Xxws/YG [a'3=Ƨ'_^y&u gH;1} "EaC/79m[23ueaxBZϨ/ܧnԕX[ :B-3 3h΍o)SOiE_^|(-\n3b_'>wMtĩpl\kLeS*z>!!"K5Mޢ2xDc̰y慯&'yOTW,/0uic^/W 4FA3+ft$o=Qj OҰ&\S;]Z w`ePYcWU {46CVUå.?T lLͨsrx;< I>z]Bw;41)l_sx($XmD aM1.g|asn'D|Ne›_S»0>Q{W&Oū԰x?GmI4w.8xP>?%. ?R&"(|SEFQkFejōGppk&2[Ѱq "Tjح 5rdҠ|> stream xڍT6H&= *I $*7AP: H" M/z?@ow 4l`Ԏ (@ &Dzzzظ xnR\O FIlȡ V[Obj7)ʈΎ2 oeh3 " q>,};_!LTMë( V|C[` 'oYx{᳽- O5"MO L Y7X WNRxSS5/ϯ4iuRN2'Ͼe@:)~-z3ŗ.txOC8Gh_@i@Ko,t+6-\׉&!šjeZ}q *cM.rH<}kF ۣ2$`1}9~k߾l(@1RN{aVPcG&)ɖtYa7\ŗo' 1פ/x4'Iw֤ЋTK,Jq3_էfQЕO-yKI0!cŕK>C<%rm^V9ERdҧ@oRc6\: ;2l?1o>Kנά/@bI5NBGWS-AY͞J+t 6ῦD,Z3IX 5J}S8[("Q=Odbs ^$]W$;O$ |33WRv?"YOVzN=NQ<p6 8ΡWDg+N6-g|~92Nj.˾Kb1Ú[!jֳR^IkB;d$l!&!a/5L>(Jlפ8,ta/OX2w mF&܁'> Rl4 ~A?AY<) uwsI={3oia79m-F%a}C\:`,E‡N*FéJ%P`5{j#R%<Je"]G>5s>]~QOr^)GS]7DTD|Zm]OihEB۪䛡y!5 hô8j_EEmh."8%Ѯ`&>۠.CiHQ>[{ ~:ygunP>-tL &O$(CAQ]4_ 2)[ {> Mhw'5 cuBs[uqt؈$t!ox _7i ЊjyN pa|>eJoiWF߳)5a xq5UARśc+̉GQfɏ^ӆzr^M iu+; PC.GgxXT5ab{̱oȹ[}KILݱD}++UY[~|f׽E=`^Hl_`s wWx@[{Ⱳ~`䛣1$ =[qbq%fD)NJAFqxUn}ҽbcxq<בoC$njoH X h{fߊ즖u·_vޜ1?QB NfA" ݕ|Ob߻3Ԉ_/ꥦuz|V#ݮ̛(lS'~ƹ3G?Q>&tWX)c<77 D|\`:PZYA\͇ZDpכֿy1B7JnX#cXڣq~V*[}_ᱱD,Y[)}=ȶA4z5HB*=]6 ӣM[୏-7$ 5^fak$tjۯ;KIdbr+RS6=j~:j_ >? I"?e (Ϗ-[*9gB;4^PQ$ T̸Q[jpvOEqKL2g5 !pw1+R%"lt\XPڊ>`\7A2I;d2d*|~!( 8IPt cvC\9ø3q9Kxdv5!f *=?󬴰֓LEtx?nhԀsg;zvǫ;cXDӼ[n/1v9ÉI,2ɩTͿ-Ւyͬ, 2j]:0T$9鬲o$*e_@4zLQ_)ߩ,ˏv0a7όlB=1=Y ,\Hęl6sr9WװuP+F1{w~041G=n#êYW]K/zjnE1]j -kzvYF)E3- D0Zn]9<嫶Wawed;+!֢i]}ݳ~ЏS요۰\"L!C׳ )vb$[tcg ^ц)6,ee,5W/nI؍~R4eq FfTJ7r]. >FzxM$z[ӷcL.{e˹աn1 *y&lN6eG}6}a@n%GŽUlJz;x> K|sImg1Ib+teٺd|$zIGK]'Vnylvl4XBx/7X[Vt|W4b(.s}}s}1#ߏAjA;_m,EW+˩)٧2}k7ViM_tz}á9sM\m97q m{|#X=e0sc`7խY L'K hWRb#3m6n܇2Ƈu $KΏsUbV*o_l#uQWA9u(|=(шW1kGnݬ]+bs lj%5($A^/Ʃ 3 u^h6(ȡpJ)7aY^!ߕyb0._eY1:7Gf0:sS{+?ՌNX$Iףdʩ pkRZLx7 ]y aζmi_V1qkOWЈ>IZ[z\:Hr4G$y 4 %6Mbkeݒyɩv:n4yh3Wje sJH9W7/ rSO%^R%Ϋ ]Ċ|v^ wʳs()8,oʔ` lZgڴ*6㗺.sT&}!&opo*qӥh~&2j7snRPJ9۴ھd@l8{zsO r0<0hr@'z8즡hʧp?3ON8 pN7=eU|x@yOepK2㥏.BaR%P_{|=m/d; XL<\3֡7`tʍ>7:#袋 V :zǏs&]4ɲsim>R,Pkµ={&Ч&(0,dV9)//|b%Sc*49uH/f:h":['?.xqs7㌨XrYҊQAd6J֏*qI;QmdHP^H! FPV^sy O=0IտTgAzB|3.GNXϫK3NL]xj1Tr :w彈ۂRި}Jğ,~c`>ɀ l.M6.MxR] W/¼Z/i ?2D=_[尶%;Jy@I=XD_2EqVX :H楠5cNBFCvZAC֭b5?QXΠJOj<^¢m˔2(&Z$ | +0q>?[ endstream endobj 208 0 obj << /Length1 1430 /Length2 6413 /Length3 0 /Length 7392 /Filter /FlateDecode >> stream xڍvTm.R ]: 0 ݝ" tK7HH(t~9kfv{gXu x! *jx0oj E`rPDBAh BcpP@( *) &#) T @m^EX.^H=Ϳ`Np3 @m r 0()8hI>>^3z@}( tB>9Ct `Pp-1 0np l4P@8p>+ ;#]@p/h suTxўhn rB!0 w dq]9"a= sAxQ0_-J9ee8D Q_)P0ؽL!anPu]0? B]PO=߯^.F_0? f |P w(to?W Fmv08?103|$hOVzAp'/?ۦy$DD"@11 ?`Xu-(Z1b 88a-[1_Tc,/wA*nNN sCZ74F j#Zm(Vu4#y<¼pJ `? E`L?0;bMP|2ҙ(D: b#$@>^8 bz"_c)~|?  3H$ spvC"1LZ PO(07K:Ԅ6Uy /}iJ0Aͼ׺: R~0Uw8||ڗklӲ#+h1E5KgEa'gKZ!{K0NVԆw31\>;v#3K82E5v ,T9k".BVoOAfWhy89 c`b ,ȉbqr[pEPOלDcDuދ#F\9: ~O͂ 2pžG=U4w@X;?pY֘L"1QԧFϦy;Hs@d@(zoSwc|*Y}Saxe.)]GLj\C =/cs'G)Z.`.ר Xq:~"pf@Nb'%AZ²7kýc258 Myeɼ37Y&f.jdoc]wC_ +z&j9{6x;F,f @jNy'h5/ O{ǁ_Cs:YEvD'Ha O|K͡`S-]FpGa̙hҸxldn91{ l ,"ptDDUmu9<`gFI2uLw?}t P{xu-Z'$?ii#MQpd1XI)A9!?{k=o -ϝ3D #uGHh%$Q)PMEҌ\I_~ f;%P$oR-HJͨi5_xQ)‘T.j,^!zB vWdvvCI m%>*v3(.#;#_SO_v;OeREm| 1kSmS* \lX%MMaFJ-\OA?Y\ځ(\ {w[YPy89zn>4J^琕ͽb,p).1vƒuݲ 2Z6.^hc"f{au(Ee0ra3+yC6`.?K xub({Qd"K3fo2U"֜Dmc韅58jؒ#u@nr-G%'DAcR«A.֛O\.K\dQg#3HMϻ;毫b%n}Vl'nlOY~ӗu|Y +*7McG^ C3=?~{uRt&['E;0JPujH/mijdzEnɡG]/l|JhEns/^MSZC!E9+O/hIL>#1sy@ٍ/;y37UxVeC|&Ge%<5:ٴ2>@L*j鲷Nv#{]L{xZT_5>@/ރa!L$~<ɠ,N9 Ov w@꿞3c۞QlpO*G*/ W3^-%>w2L\#N?jҁkk'?srSTtVr(]~G(P``oXyxLlJ~CROSO,^}W]+*0:5Ly 5K}9oqbd$R|ѹ•XfelO.?^|`am"qklIqjt ҂X0v&=oεS#,7[i:nmUgVZ#sq)o>{\  UkK?l1Ý/G)NU]4Wk;}|p)ġvNKn>aT]em6jJ=^>.H:»i'}IdڲS>L޹RŲ1©Ye<[o[3u*yF:L_A,ޥ2cbSl1MH/s:‚ 3pSG 5u`|^"7D5M#EKQ_iRJ =tv$?j?fkB碦rX"]TSVW/ Kʆ;{^g~Lu]iӿfɆ. rRX ndh\~6nLOO6@0Q"?`Ѷ]lʝpݼ^J)!G2T̙v?R]ʳ#WJaWJ|)z23gͯ} wF7?SɝonSN}8XFw5}YLIsmº7, M+8Kjfc޺?ya ! ɗ@bզ=_~^ U<'3ݫJEx= 5N^p7nlqє.LyJNvqnTjzC{#d`>TђzD+B*r`|—5"sWA؋v8a 6R2|kJݩ;Iqy,ގJcK -O50n)k+k#z Yߝ~[vo p #[)gb1<\NW,ű7Qj##Cgm\ED(=xKgT_9JںsÆDG*x6!EߨzrpH[+:alIg 2Qn2swxDKh ՗l nVp!GDV1\D!R,ExYGYًĘ=5tO,?(HfjCMO7\JExM}i7cg#vCs[ ` *4gR|(UJ%Fa太&sY//f,WhVgQр7T]sNBo[MvTY+FL~~8U?`c?ecT-H:루WƬHK3OuWgո^|-<+J͌rg+ lfVkt >#̫R{l<|tuyalxg /P<0u+B%Tۂ峴qGCłmk͵9'ۧH*pfrԊzkի"k &ɝ3GUB*ɬM䌭GTvY/v8I~9:>{X4Pu,{STǗ 6/_ؑWSB7G&IK-,T^`Dym|0'!xgi@Ij:bT]g ӣ{r/N=ʹgSZ Eo[+5pı KaF'|*ew be&ay6k?!H" ]ۺm#|X_~W.Ĵ S]W~+dk<{,aй@b|DVK\o7z|n}q ܆ >{r.^3lIf忑3ヘM,Y ˛T$O TҋbYCM01WU8{J{S??Gw}[A_vhXp)?;Wc69|2iCw@i{pO\ssMVcOgvw^-SʩsmZ"fX5 w]b j_[nè`DirDfb $gQ)tNj#p ӭ-!u_iQ]Y'HKYd^ysB#'U8==?e5  ch\ul©]2U)Dy '-(>88 q$s}wf,]P82[$cC*':m‡?=YLbګ*gv_KdIfnrF7z2Pp4L jȋ<$˦{/5USV>?[9l-k "'[_d|Բ##څeNv%ÔC> stream xڍPJ;݂kp` aw H-A?jf;ڧRb[ePVN6!' NKF tBrC_dC#@ pqp,6wYT`G N hg tY;T̡@-%"P; l#pAm@hdڶ _ -5x؃,G+3%;@KAtX/߇dwrdrX5Ye6;`h=oj7x1sYI Kt9A!l5e@G(I/9E G+?ʰrqbq}p*Hm"Brppp @wK[?h{8Tr!~ ~)yA] 럊&4NN ڀE _x~?>^t?^1%[- `prr_>G>h ݗsז]ƿ ߱T/ 0э8x9,_8O.#wG.2@[t e T/zFWhrq_e$m^:/9" rZu_r?TC@0/^{2KWҚ/3ye-V /_2V@?^jXX>^?Mv ??$` -Mn\vKN?%?%/N@?%`_^_yu./Oџcr5?= h0 ~_rS!ʍfYޖ F9wNdvWs>ɪwrBM &Dمk[ЌʆAsBb鯙=9RcdlpcQ$peo+%h!gcqen{x7Y`Aɯ1.Ržv)M趺dH0^0Z@Fi&϶4m{־PJf[0li.lXHe(*)EEG\Ŗ\98k IHJcNS:㜴D rm}~t%pZҍ-NGqzOq@K7~4"'"Lgoa`oe?<"ﶺr Gʅ̢uWc*S;k%d}5Kx'ML]+y/eCp'ASEH<*SNC^TXDg}2d V={*^USzI_}=R2CwA#Ffe ;7_K.l^oNU EfNeJQBdk6 M2fL9)[YJ92 FovO42!r2Ҏ軒:PGxZp,C&c5 勬#߇ޮp>?Aܟ7$eҲ{(k$&}z oUή5N;ȧU_U:cŏҥ֘?F8:]ta?ү,LUip3qwF&oS32`yk^E˽+!t'W|Cy#:WwA-+Iw .3+vt@|p8q= ^U?rPs*Z%Iƈm\pg{E鈺XpZjEef{k9IM옾$Iۣfh]~~2[WYP e)X &MG%KĘǀdr#vIGgYjA4{^یt+ u㲺B7byRm̈́l^i|1G%R7J9/nI0 xyPIӐt`?e&5}ˁqᪿ Aōf>7>lr%Zi`IWCXwdlk=tvџwG9Q{MŠ'FpUNqG,>~󴉍~<c.{Z/1RKăb?np; ?{ԗ4el)țar|@?3ƊEq]b%T-Jssi05gc4KC̷^% , ,[6#/[Ɏy 蒜g$} \O-½oMtb3Un쒶E_9Un``K0T'dTha,JqLۭ1,.[3@S's~Qsg[3?i,C0T2at1~*AtyT9A"4ح[GR첕0JcPđ[d]Jew{3aJ ׇ%ָ8fhs`Pt&oͫ Ru믱폸HjwA5!m6O9)amTU65 ݚásJن3KzILG ,_o{=#'ڣ8ra3*C\ΜRM1uϚ&JPcvl37TkޑEshBq"} p Jm7OHEfϯPdu&xSahM =Z2\wm<3ap!Wnwf-ܣ2,.q1.m6#oxs&x <syn1F"jjs<N`лjۨՔGa='2aeޝnHG2X7yf*v@'Ra7 (j`>dZDȘ]-+m:?Ujf4gI{frAN{ y; I:9i.4?GOd-iGHh?]MfU{L{gQWb-E=O.ͷnfhxzp#LR(zzC;c.o,zIT7j}iޠ,߅|dJ#rLn`A[EDBk208N]QLd4dK_v}]Slum`a*&oO>*9XhܴMej٬\YVaZbjܒC{4)PJ ںnJ1^Oqb-U1ln йۭ<\unR?i'+P /W,˟ɏXaP~aǥ݃<0-Us.zlͭGj.e>vG8(5W"V?f1?B֣oV,?`ϵ$:De7רR4`L|Z goNK0Yy1m7ݿ$~7@?XvW'wۿ:SF?(njOWB|ecw$;?("/n8^n:$- V Ǚm-4D\(_®K#v2˝FB^p[=D6zC T 5>i47%IMmV}~ΝTi(L~^ b+X;pYR?e&od8$;"Dim>Ja{s^{) 'U"M0ݿSfGc`J^&O _G`Y("+M%yXRW}!@RhqBAg&W'Fܨѱ`)1k[PC.l$mɬ~.|ILD3eki®H_QerWIi !2vGhhޱFC嘍jaa- ƿJ_jL!f\g6VdkW}0M`V+Hgr@6LOT6w7t㑈 "/ɲii]bjL?kr֚.U~96@@? +?XQ@~ H.~.Q i?dC:0ReFrM;xؓn1.%6QYޟsf||?rrϫmYj&% ,AJ3oZX)^DɟIu#\¿ϰ&kh3\Ŋ?>R&S͎q'[`(Mݵ8*zV8L. f6/oc! wk(iPu gn}91M-%3v|JW\{ê^>0!/x}Lч9מj?b⁅<ԵL6Blx16kjaþC \cWa-CO%κ;^ bۻE >":/♺޲WD3ra ~G߷y(k[2\Z,$oÛg{=(q7o>,\mr2|HSK9LdladN)r [WI 4~} y~ë._i&>0Ń,\.u&~~^݅GuRH~NcM:kMjߎN,_!G+ +ˎRďS8|j$WVL & HSS}M( uI}PebFNTqb~k7 ji0*אBz\_-l#dL[ցJ+U!;^bC-4s]Srd(kp"͍k$dKٱYi52u?[:5k[NDM^S&^G{(`" wzM1@߽ENb>&\^ % @RƋA6J%u{A.[wrDg13bHUA3 gO,a'#Ci2HbM%) t4U ܽ|Ig( z>$\&iV4%a╢|ey..I24;e7EKݑ̱_2QƆvQb Ԣ C󞿺4baX\ٽw9-@\v6Mf73],||KNi!$ ;ڿik=E]]1y^e&SCˊ:sBǗ4鼺A3|ԜVۏt:癣c35؆7 /Voqm.&OWi/^231Ġfr1v_T8V41aH&3<=EJFyIYU+Dœ1]'m]ɟwh82= brNќ@o/Nfآ5ví5w;f4?P*4`ʿ‰F]7@;3pJ&D)Ȧo@ h0\$gRZz<UGC#zvojsNPm9 :vHp,uش̮m@64gK_~1سI.Z45 .O5-2i~M7:7H9l/4#Ց@fR렣 H$ i 1xuGH. t5I4vJ!HW *HF\S'3}FcPk՚kHXbOUաfX>凷%ŐK)F 6찰(mmoVwOTS.``1ہ{&0Ȓr}q]NWix0+VTbaT#pO0a $P\i t 㭛5#aNKPhvTڥT9[#oPg\sw'7,HiD5z)SYո[A^k>T w+)ͣs(ӺKeI7SGwr y*Ɣ& 3 H{He߇KLy~^D]\#8 dq9RY[,-?%/?Sb JqoT8җ _8dyv~bidZŧxR%.|?M/ endstream endobj 212 0 obj << /Length1 1399 /Length2 6305 /Length3 0 /Length 7266 /Filter /FlateDecode >> stream xڍtTToHH "=H#5C 5tw80 1`" - t ޵]gs޽>`3W($( $ P6H@F+F b>e(F!^0(& K @BB<%Po -@!hb%' _K=(!Pp{"H6whupv`%}||nh,qpOo8 k` g2bor@=aG^H`ÑZ|g ]oBd=C W8@WUK@_@+͇zCP;,wP>xh{O;-FQW) aJ(778&՟2n=v??7D $0/wAc$ Q 91Q!!!q}7s!A8CzO/xPE `{ @S;X az B}&Z*L"/,  @q2zP6Ʌ P?b_{%_q Z8[ c_oN1W!U/Wa# uC`I @򿡦?Ն^n`X!( d#Ъ_8LwC?~_RsE z(4׿%$_1]4Cp|s_= Kg Q1Gi% b f2@P`S(O_ 2K:cjUor`[[p/ܞxf e/\R0H0tU{]?\IH8/~Z}b-lr Tt춐x3v+|2[h-/Кf[}a$^Aϱ8-ɬ 5iΆN{7H'߸#..Lz=E!\Ja|Ž>IfR8.Ζ 26756eӿvksv;92=h(& Y=T?\MH"ci}Kos DffZy2FdTQG4ekvԌm>o?U 3f\eDYOpȏeB"՞B$s=o㒇$lWjn\KQ/'3[M(KKx ɔȑ]]h}NwDq2ARN'#7AXF%^77v9Df!鐫XҖ1b=.o5"sC߽XJ{[wSVxiQ^i'+x"]PF }j3Vc>k|l i;xIx{c10dA _2ixFšZpFo#Si.{k[{«OtþF\%Z;jscvSОC+C"'F2QW=[?ʘpo ~3}y\Nd85iRy8A _c}堘e{s uZm *uLA5 ,DߴjZiɖmeX Mrſ i9aWAr%;l£܅`. /{Z3ZוX^[hgjb^]G)Ԥm\oS϶|"tȶݺ!Dp'zpf 9~gi,'ŰGf}hb8q"^J(o˓!]^^&AO6" |veIʈkGJE7;k3w;N_]LpU{k0 d چBm b+rT\~~EOR^ kpII<^PkɹBhz4VB.NA)ҔZ/tZWNK5\_&Ҽh(EGHA)LOFEV݇ /&I8=K5k~or0vťYrs8jV&PUa=i"IK+X\ޮ؛bG3{,Ebq#wh<&$E=F=)|H$;C%qC8s"hxO/1`W|q9^O!rwU# "YlLپBAҊ/@OHuUm0v)e+罧5YVfuˊ7%!^Gλ &66wܐUq}naEMGt}c)\ARXCt禩'i?uf$[콬K%{_Y<^jLЪJLGuy[m#G6ف tcNE.?CQΗ Ő^dg&2=R^3<ѻO 4_mU+qhѐ Վpݓ4o uxi m_9&޸{[]kKUVQ$34%Q@+v덝H@=OP_W;Z-lbtCl)v/38ǵv%zoH7Ё|.킂7+S^ILJ-߷o514QIq85&b7Z^`Wl;ڎi@g#L.nRJy Y)'=-Z%uI.睅ʋ|M'yW׈Κ:Dݕ#°T $1Z@+iu~.u.Wmu(7V~_-&Y|Lx~ݙ5T~Ɍo<;+mK{c)[\d?פ*?2n4JZ6{;9~6owd[5.}oc>y@޿<14w7pZEI>cm|V_nAQSw]&%~;+$O%yޫ馑?g2m #tFhDkX Nq |p|TyqN^tj|&@v=<5 +?J*6ģz+YE*Sr Wʹr8NTW&1bH.7̏h0I8UZ^Hrtk-2^Q@袃Lŀri]jĀ/Sbi/6 fTpOIMO+{~[Q}5Fԧ9xz AKĕpJ+{Y(m*ܸuT@X1Jk 6j=px%m0X/~B"6aėSbUA׿B2Y ̓5TQIi_-K`M5'[GcGb68&߽esboq_ܠlbm² k^q"}.UeN<4wo}7dqwDcUXܡŌh-&MZ!~F)#(Q&{ dÇ>e-dx<'r:Av\QCS@y~ѣ-Nj["<К[pli뚚̓(ZIfbyXb4Ad|{yjS5Oe9%8h;*CB3.2)Q]n*ٜ5u?=u(FyLk ]43=JsTι6,t}K4]p2. {to룄C'=WogJDg%$H*dg 8qFҟN$Q:ϼ:HҍWI%#}ͷz3iAJ&QsB,yz>ܓxoW++I2%?: HkMpiPNX|) Y|2uԅQFtü7?h|_h*Zk',%R)&lo\1mUz^JZm^^*o2D{TD5H{hVo iMGZ~͋C/>V}z?/[qJ3@Yà;<j _pm% yd=eoVα0Btҽkހk|nwK7F7nE+8YJ<o.0R 'HȜ'҆XI+­uV3F] n' :jH*.¥:|B~ zh{/kZݡ`8F<[m=y5 7u=P.|pǹmXZo1ŢA=r?D-3_`(Yf<.G3p(Xy[.CΣI5fP{7[eԢ;֔bLu?<y 9HTf"\OsH*g&M~DyM;pNg͉U[s,-HH1! p&ωyRWȁ[ ~bBtFܸۮxLlWS$[SZx82`PAk^{)Ce9XDOt?kA~mbuJ`Yi봗ڒo6y>OIA޿32Ӡw^6r}\<3xe9֚7T'4>׶RFPfKuMQ#DnX К\gr#rPbK 3зjϠH#9+@J7q/KGi4ҙr՛`MkT7eҭĂ"tM&>bx۽+$k[ib49Ls}c~0`T=m: ho\kZw>a;!g"Y8#BVmێ.ITIL}6Ub$#*"iAǾ|YpDF.:\oןYuKtS/3}ڵcQu %{:є0WO3%%[Bc{ac}vR wEF)! 2-qPɝ2," endstream endobj 214 0 obj << /Length1 2375 /Length2 16602 /Length3 0 /Length 17996 /Filter /FlateDecode >> stream xڌP\k c% `pw\Cp  wy%ޚ*fVl Re5s)Pd SPWga03123"RP[#G:9[ya!4qM\ {- `ef!ȉ nfmP`ȂΈb O'kK+0~h,<<\DNf&+2xOj~+^&&wwwF;gF = t: P44FD j w' ,6;]\́N0;@MF nW kM@v& k[ @IRÅ`bo3ofbmkb 6;u \s6svpqftF€,ao.ڻ8# wO'{_e:0i[;em!Y]l#afo%_bp   l8}_06s-Dw1Ǐ翿 fc3骩)*EEAov+ (&2 Ͽw? {4-@g9X?.f(c3t[O/-sx_4vZ.[Β@sek3g_b rf003x>ogHw%@-+'? 'oaK ^?.XqfaANpX"uVV@Xe._BL|9ݶ? @ΠQus?,or.frN s_9 jmML']bGgb?|@Nln6`V@p tWs:{Eb~n@3 3ڐ" {s{Zi4 ?:\PRh6DRFz߯HP xÅ&y6JPkC\*<@Ġ. K"ѕU_ʣnx~5s,CF~`B5O)~OFWq4n^D SE2M$6f gPQI\#er5eW ϴIBN(6GhIWt"t(x3nܔEx%͡ôï[;XxX>C(1Mol2/Fp%z 'E, ѫj^!Kt:ȉx~97oezD}I? Kם]  ԢK;Ȥhk]#!j U}L1]a4z[&iXߏ1<~tShk^שJ<]Eatìwf.?=38ff|(VY.7me{gJymțN`Cv}jB[ N7.au.UJʨQ|kңta59|9X6:ڷK$_9~ƋʴmGpKT:bؙ /\NQu:deLώ~Y]%dulJy7(rr(rhf$o{RRғh \rLB橽yYtlz(NRq1i!g"ԙ #4V%j[X]$f Qf pYJ }aNɾ-r 3" Eb~ڝT%\막 Mdfug cI3{NE3xwC\Z]I{ǗEK,,O)[_(SSy-Ԏ3.fX&}%+DJ@s1 g0=traN~QWB*yHElej ~X*T\ZiCgfHINqEjf71j7"g[tBC'C4‰ZTRe Na) 8:0h!K(OKe^|*5>D14&NK$G&=B%%Hϫp&Ū*̩)p`C_*ݽao Uƕ7 <5FX۩ЦA#ZփmIo0pT{ƛVq2ґ@ī7gbw|jDb9<5 AR9!vV`,@GiqQb8RL{-WRyY&T: eN5107@I#cmY8%W4_E\R'A?*QI}^+Mh&4ah]d^#iT (bi mr(4\p81C_8 .^HJ#rh^=3J6wO&Y A}bj:%0YS7~<"kûZa^c*[pi:Yޗ]IiwnDYTՖk;ϊ1߱s)pcKZORP%밨3t}77QOx,--!m|) fPMhΓE~r(xʥqjv?WAn߬6>qP>X WMs4Mm LJI JowY6*H(٧LKp?XI7@dqS+P $v NwE#"Kz[1</DzBdzH+F&{&K.4;Äpy>U>kQk'/⚎8KgN/ʪRCr1Ӟfx@S)4PC#UW*`+|HP' &ާjS&vK Cp _ YpSc3DpI363W9'9v@- =m.΃N :Ad!wJCDX 3cRWu,: oGe`' p1:F.[pT!^SSZeɆ2vLEs&}VJM嬯J##nFlT{hOb屐 nbo|{oGe>2$J 畑 nXѤ>"C0<‡*pz #|@7\3vA}@*sz b$¢vfoOW1MaoL?(_])HӒ2U<.2m,Msy{˳R) nq+ N7_ldScz([|tCF'̕8j}3I¯^uƥs#%S%NYeeQjIk›oຊ/>|nD+=@%|L ߗ\q.ZkG +YFurK):j#Xy|ܞM'P$dr,!&.ԕ _D]as6z(Ї/G3qv4 8~loȣ肎!1'lybW6Lקذ u"iwf HܲhVqEV^Pv{FːD%W!=*_1PPTQr7ξ*"4.pڛlѪlPꙎ >~'OGME|Cs k+qfzOeK25UUPB }m-I~+E6`+u\;*DcnKז)hG-*2x a5 Q)DMhYCaHjk<_;(b7@@ڹo'i#X\OFrTt_ iDVsFQo^wqAkXD%uya~gR '*v,?@Ipc6 A.D(2;LnZC s=zc]E񾖄]rֆ,B˭Sa-𑈒~!L*,Lc^EY?6eRrGs= ^FIa5Xjޡo/ IpfƠ>@֭Sdzy1t z׌.ߌ7/Gjܧ :쟰[.ȝ2]2^hBh6(?ḳs%TY4-]'L$41FtY"Kdn#}U "!LF.#m*bk's-bf:›k#4Є5C5=&¿N'[o}?)E"3 ?PN#N藻Tw*>A律/"B%tAe=tL8⡰,acuxWٛ.I [E/ܞ;5}Y m,L8:Z@v އnC5`>&*ڨRhgV5>f5 ~*DW+{XY'Ŗ5r%+8ZMӍst=YPTҦl Du3HtG4_y/3_)m?Sba; $3A_kft~y4P>rv`Bj.2%tyS!8+ڷVH|n&9@}x-U>ɣ Y-lggd![:id~,JeM-+iUy[}nk8eJӷ2'gC2&2AfOpp)%q$/%6בpt>q(p胳0f6=G)Š5g5kdi+B`y}>jY)t*4,E{kCmf9&ߔ=zo]EWrz(+&^ XS y.w]Ce8!kh{~S3?i6KpE8t1=\g[#Q=G`:Z_^-POKv.3|$I{|%Erei1e io-s!3?\.GHU/)Mm}g/;)5Kf5j-6H{p쎟&U&M?H>j95 p1W3>^[7>mw-7-$ZS{:bypCלMݿJ:|-C@1,lNO/O+L' D-K~ zIh׈Mb[ aj+XX&zKhy= mkse /f b"C4G^A_YЛ,4MKr^}X.@uy8oN FIx5Vg X  כ,O-ܞn?8oy@Vxdz$9$^pv1Wm3W,~;IYkL>%Fx?8}0.VJ=iPx+M>Ĭ<21dr9!+{THG+V= ]< /$Q(%T %mF\|7dTNYfv AU,i9lr﷚K F]ά+ G~6aϻYin ,2AK$!!&;sN`DYn92D_=d::y䝵ˣkF\Zb~X >~G-O@zr!?wgq{|3wih}lh's:#/| aͣDaBkCxWI{H= Đd7jcv(]Z[Ce<*Ȱ^TM*GoDև} plm cFni3ѤЩMP9LF/i~ο9( 8 sKZ(1o]T5(.EJ^QqAkL*͌& G4jak76+ӡЃ1Ut#i4s;CTCzN ~eqh0_Nmy4򿸍WvT}x P~2XMd+CIW'ԪrzܟD)Gm-Y{Ah{@PMQ6Y9hA '\( p$<w.e7}$!OiDe4-h)85_X8P^4i jT*6< Y>vA}IoGZ0JB"̝qZRX^䒿d Cl*'Ysg:U˧f_ &I t)A1r/Ov~Y.#NOP[ <+_!rOc8)z|娵.+ 1luܔPnaYWyȚ[|2!^3+op-*xΗGUaǡ-#?ϝ5ird4kz߷3,ꜶHOOi03:?xEع@!akFb9.!Um]K":5ko p).vb!zgv|%Q1*ZHݙM7u+d;\g" P$~ѡ,Xvv Y4^H!%M;ͱ-_uSyL r!kR Nw$½x(ݳ8h՚4a:;d@ba-)KT xl`>z(>~'ŒxGx_Qgv޵Y~km&lô\HFv;e2DfBCH4m܂M-YEw+=e8[F-I'{ gZtx0&BR&GYښ(yk3'83}aMcݧ$`_j7m$[!Pcʟ\mt(+ p]A?wї>4Мn^,_2یԷUpK"io4j,pB0}/JyeJZ7+u-;A:_]cay1HTP;Kcg(NmwJ$wG(mQy'ٷsy&I`#e%DQPWcVde &k<2nk 66:;S! [U+,Qq(*w ǩ/Щ" ַsVـNw:h vX;03Wg:uΨGW$ٽRuI&{ޡ:4Y] (]dlcA 慗;sXnVf~{x$cWCk\Q1R= 慟OLDCP]槳Q+-Ϋg^cmm/Qe`\'ZrMNȢU~Zu\,wxIv7')nY6 o93mfAsU}C7N L8?-2 .Eo0j/a,'mTF[ nHnjo}DEY|lr{i^dܑy,sձLi*pxO3)Ӫ/^A$pQ%urbdh$dlj~u_ E;.u3֑M&+W$ DտCxN.G"Ebi6MC",75͔t6S_olm ѵ=65I)ηwx,Nb(5J~0 aFU}E _Ȝ X6_I@;Oqw5Idq)_ݭ}#EK.% OlƦwT%7x6'&cc*nXsGy3Zt(Sڴ5mw?dlu(T\Ѵ>phZ<͙6Hsd_}W;tr uil@>mj VǾU绋L*,^W@IB.WX@XԷ?wW1('-Ua;ڝ ӷ $WqPBM8\vJ.Qoتk!lVuD~śq-m:B<*Ol[s<0!Ews%'n"@BJ(iz! qOE|`y~Ro{# l5bSdt{ P!X qWt9Gh~>%ww:xbi,wQ˾vFsTO 3ʘM5#8tPJ|"dTُS0`tUײ?Ž"֞ΨƜ"3ZW>e$_2VQ8 Sޡ<ʅqT4,)M6ARUojYf} xclS>@tta w"ﮋn(FOHo,[i)H:K> μ҃|LP3RtNڮehWY;_va0{/ Uv=ݦOOi/ИVVp״,%:pys쀜UPR=|qOXs|c MoMAAFN5«>{"7Ԫgb m{%@ m^$aЭ;D86 Sz~t+%܋)ڎQ lI7|s}Q((ШNdl?e Qĕw6K&S=SF&Qbj_݆ADTW4 FΘKFsZǰ; ـFƏ0!.~ۜFTSտ ~!TU TsVE}_ i69 #$× j2L@1`)894=<`1SXK[naFPZš #3ϰݓ RR(@O (;Y_l`Mpuii ]`'_aq$[9b|)LHKsL8xKE-J }lȁn G̡Td6tǻv#rdc6uKᛂ(˭1NI+OB%UC+|H͜_fq*}&11'M?^'C?q0r1T[f .]9 cyl_:'^Frnd4g `%["~ηvE) ȿ֧)6[k 8W s)q[KD]y7u$S4ho{Wfu;;*C3&|%ݣhhFt-I'6O-qnFCŀאpXgYY_w?6JWژZPOcpwX%$H_vdaL]5S-/Ĉ:mKKw]W@ %!]/A #菵RezO,7Ş'fuhó?WN0_ tًb!T[Vr ҧd &NNc_c;U"Z)2 ykN#- ڢ<mգ">9P ӝZd+[~ԻtCI{LgOnLe|O3㢺0SNkd 9|Pcx<&`̯\xRѮKnN"L4,G/4|f'i~3ƚhBJN6?G9 F:56y2KA2'X؝syůq-0m@cV=&ԞϯJ>{/cu;V$4L7cԆnYͦ)<!:jAEbI|w6ˣ|s-Bz*?od_7}DŽ#%]>ʠ2'Ǹ䔷\?;c3_2`8:Lj4d~t<=\ē9١*t07$qzAk?j?ܘ<^7V)]9R ސzzrloh+Mk&p1/w"а05msL_o4B.'4r2i*ݣm)a$ͼ *Xհ I(2ڮFmYuSZ˜9mHfZ.ynS"?(ՏJHmU[zshiDoVorJ j2͙w`(?wHwiyReav5btњ砉x Ps ̾ .gҝDKhKRxŪ>daT"rBjv-6K7 =w %A$'{{xD ^slDq{]pl =}U0⬾YFɹ&i×BϽ."ko_MA緇YYeEivTBX5M FJQC1+'j rmMKҪp^N>8NDt_2߭>0QmY{Éj6G=޾ tAq! 1z'LƴcT#l>$/՚S/)Lq`}cs})*Uo` h߄-'=T o}<vIś6h!@^+$"_6#9;xLc۹_Fa[pnZ52geYI3xɷIV 8vFD\S1D3b-4c}vkCZrT]nMӓl˳I\Oe5Zjb K)&}s&ɠ >=W$I(^ni::mv)Յ-VAo[~S( opo~ G#!/;:diӕPm[ C5AH;bM|#_F'T@].<]B^ 3 ˹"R9QS_Ua[ҁ>фj؞ sX@-}[kwvL'i%4pdBԴ*kɦa/p7*[DO `6p!2uұ!B^Q@=y u2 <')T 6/8v5(ҿm1%l:b8>Po쳺$YN ?j]8drl%1v%<ԛW}g~873.zmт|=vqr4XzpSQ`oxV̲ bNe{|Dj2t؜Jo59(nf6suO90) U,t@0(;e95-^ ~_M?ⁱuHg}6 ce`p~ NCD endstream endobj 216 0 obj << /Length1 1444 /Length2 2085 /Length3 0 /Length 3004 /Filter /FlateDecode >> stream xڍT 8TDd)ס&0(cwʘ98gJ(|(Z((HO"[P - Z}{y3}߻:hQ/h<-6 9IM 0X+c;BL ai^}@ߨ9PAD4!K ?&BPF8~4! @ ^p3ic?ĝ L ES0hwpb4~ @&~/7-.S4: d ,yss\noL >CA||0?|~ %tt0xq68$l 05p P.M< 9!Dc~TG sF[ (A0B~r߃H0EH:]@O_3 #f")}X0܌<rDPނͷt tA>8.?iD|k*GBf(oM}eeі`|MtgESR/^4lO!\,:˽|({uu6I-:s}\R"Wꛍ~[j˶؛.|T3K"nSDz7⚜ xMnpt‰tO*P֑wF&&2&iVWdߣ:Y]Yuz8\_sX%Cf F. V|ZFrZcT9GM#Iht`a\u9oU)[\ߦ1ol4í_qho{n%]ϓE*-5*UE-JWJlDoV_R4"gʘ RA1wy^,Wku.AqSFc[Iz/)kΒ{'F4c3]ecJr;K0w(ǝ3Q>]k$?|e.Njm8>1RT(0uz8m}$,tuHdjimE◘W e)yA5G'l8b0Miz-"CN5#T'>tʹR+})f2ǩ埣*oi|dmQi5 XbG6Qӓln )9,P?RdVm{N+RL7ѫj[5MUaN|+^ڻdo${bʩ9qٷ.8^bo~:(cƼ$Z3篌e'֮uMҭ-zxڗgyg]X@OcuBq]&QI9UέbMO?lRzGr?Hzr>~oimI4LNKElZIz9JA&9fs.X@mud<%e]ۋϘpr+"~9)Sм6iy<oA/_*OD^Y#]ՍȰC_5ca5ƪ'1$lluݸqaR^琪CeO2o$* [>V;4 fH?zv!tѱ͘"_RoKV V/>uzPWNԓplBkOpP܇ lN-/3A He mO*sywrz4ѹcT̾IeS|'0W|V[ݧr~@nȰi`zm!%m٘iQs@-$A^WqWҭƬ+C/f7k{K}L/ .3 U;X#ў9V{0ʷzz|aOҮWQ+/(8lviH졪1ɘo>vOY~υZ.}nGBm/ɖ\YZKCl[te]:$=TJҨ,^2D> stream xڍvTk6)% !)2 =C-=  3!)!t7"]ҝҝҍ( !'_ֳ<ϵ{fM.)+%T@qpD2j"gfօ?Pg!g(u+nԐ+  ΢Y PF".2HGOg-6>6ow#j`-6#  !0(_!XmQ(GQ ݝty plP a:Gg][r5  0rኰ:ntTPƪp pz CvC HG0XP*7 #~.[[ o=3j+V2H(>Y3r;vO'k@#0&\z+TIO[2( xP'b ^[[|ہ#`}f }{ݠ+#| XBm`ߊwyA~=} {m|FtNZpy", !^?`;:P7 ?2L2mW=Ť9~6,e=GV_Z)=D4LXe~/tItd^Kkhv=g;윌F2bA~c*ǜı.m˛;?[x(tG0INzۜOQF?/,/N$E],n 'siXd6 c˩LhS36'w\< lU41'?x6 s#Dž69Ǫ2B9xR3|[`Uƥٷ.S8Qm%&$ܚOcaAQ>%VwViucznڰ2<"!tnb1X۝O]}+ZJXekא<+:[i;A{7nО <,(t%&+'wXQґJD~NDk{fThGJrceF/&!X|$´Ϫfy٩Hk|sbTlړ^F׳9,jhn]7k<87xfΗAn'-$Ne; Rĺ~Xջ25 å{=$h2ҡC*Z'겷KZ)y+%:Cn+Nxs8Ƹ7$9xde:yڰ\v/BqW0U̚䕐ڋuA۲k*~@֥{57hl0(>[W`%dO۫4:8¡sƵB_)ϸbs7/P؄GUWvw;=lQ'MEX8nU|ʢgDJIc-%%~IN/_Cr ǂ0Mlt'b.&{ANZMI}Wɩ*/&.:Eb7bAcЏ<D _(1VTx! %3YTMc.M׹鼿VHȄUnugM(=AdjޯnV`&:x_çݕlcBd&bBIIu rʞ#GtgYXƣ5͘ -tRƣȡvh}Ӿ<+?>YłeyiVSSbMK qҮpFu~!3$BTVf~Ԑ(@Û&Y\[Jy,-jmkV1# úO̙8ǔ+rKO!?aPtZxnxW LՀ8zz@.6$\$4]Orw~4.YL(ٚNaTzn2|xtB%M<ңe'4<2|qۥ Fɮ }?'h[%٠5\dqKCnnMk)qA3T$aiyuUt/nh{qxFs"b}d.[>y"(ρdc2ip@|;i+Wfy媗%e ӌw> lwu/+7O,HgvāXfvEͱ)j5MFIޢzZ wm;L0N:6mSoGY\%jnקC ͡=1>MMHW&Zq[C7%5n'ީa+ZTko廝AO?:/??S'_j^Vl0NV?@'ΰbw<3:~TR֯ 7Q >Fլ>;LLrri=`oqE[/6 č6YECbO".2Nc=Z1]Ǽ`65賕8tNx[^p5;Xz1rxnuX ؇L<ܤi`<+(!C@_؏jزȤ]7ۊM5)d2m5[*a E쎻R{uuNP;(rOOJ=~)`ؽc*.ьCRer-%.Wٚ~dXg%DjU#0Zafٌ{ps~_8MWDȵ>O5|(x1Ed~ gb!$]sk~74RJJ;eWhA+f>]y4PLn?ƞ߶PYT^\|W;FbX&7leoTJi*(DMG4X_Mm6yK `bDWŠ/AU6A-JE#ckP7Cë9g5'ξ(s>DM93e~2|t@٩y'I]ddЋ'ty]UX%B^ ?MIי.ɄscŠwY5'~{ Gh 1qo^~(:gYh4ݒPF ,{|2KH ˝^}mPZv.b|lwKLř*x]kiůď5|r(ph>+{?1PCUZ;[YtOSe͎xO`W!O(LN{ a#]vj_K{872 \i.~vV?:OSq!Gb옫L#mX%.ff15~[hj'X2ʆ+k62bݺaB.suOi˳k;pVöB8s%kr=̫)> *3 Ien~&ؙ ИOܝ0N|P){?^|jSJcM!TK^ ҟAtکrxﴬ2bvm@>F|P >6IĜ5f^Vš յI0g֋?.+b&FY˜5{&)uGcpai!'K;]5LXG#^v{O#SMlK~=ҫy4乫$pc"zRM#t'_ڏu.4(CEjz.wv%(x ast`o1HVUo-RCG+2=J|vA7Г0?fV! GgjYЏ14MЂ 4>|2zFNz1ʯ=H!#>`%Q+ޏWb6lX 0JwbfEQ[70?QPkA;e{O><'K֩ɽf2*`NMQKE+|pZ>l9LnVfmm_\]߲6:{Tm=V̀ak>x,c1"תnKo>w72`o ^>rTEhʶ0&.sF$,TS-YaJ7=XxE(o gVk(ɸs!*f3҈;apjU.;I#6ct4mM&tE24Y%%z9F,t29Y3F%oHl_*'9nJ/v!ޢVRTnc禚28G,8br^Ly a07NFژĞӞ ;Tԗz|d:Eshs;n6Gד?;sPĺoe߿MӾ]jz?4ؽT0UJ?)yƲFUUƸ&*'{ )-6EAn[1H$=Ҋ1*SZ9u0 ϱɲ}]>~NhIw:Oam'EѝUYNB]JhԵV ̧F2z_\Nw@$o <Ĥ8CGہsD vR!x#M`Sň,X8YD F&:H7zc]aquYd BhV8<0.ֳϐĻ(vVfF&W0Gla-*JHӨ|cT 'pcN*/pqdolu{!V[bѽUݚzٍWsb4|^8FۏDGe5dd閅R̅&8%X09EcxL>|0y53QzH>^<ǔr=Rÿٛf9rX;Fɸ ?Vt8F 3a<15V[zZnɴsECO7gCHlO؝Fǿ7y]=OЇ_nmm &K2V %nղ `SpQĮ"-y.KaHLǯ8&C@%K stA3FB >פ{ɘ#503b, x9IuwĠ(QG!,]§L j̊M(}f3tBQ_qx\:U!BN1~ a:GZ3Vj^>|JF 6H_3GPz&>]@NՊvy[e A 63b vMa@ZJPfXHo/btv??==Nsi7ِ;!WIg£6R[lٕt0Mֳ9>zD }=C{qUݍ޹mlq9B"c.U:dg- Hc2\Jv@Xq=,J,c4o9ѺkV=mBc˪eKQ;o@/ʵe}y\}…*fi0!5gydXe/Oh!I NO"$, $ ZX"qzS I8SB-E93 XcXe<2;$B1Tl ={e0<"B$@SaNj3To@?+#{ɜc2X8]"A'{9I0#q#Stz #Kh? 0(|9m 7_bDZ笪8s4hV֔$u!4K| A3g1ޢ=ZUe;zGaw<) -+|zTz4]ZmChߋ XεlPO S|ي3sAUIn O[$EO6?pNwJHt/lRIʵԥ̇'PN 2!% `㫛Ȁ(rEvgEKJIE'tÊ4J 5&׳;\D6(.6y-q6~]N\%G лOz#(We&yX={L z9aj7u"2Z ?LX_q&쌫n,Hq2ɴJ 6mPLϲv:,@KDIA,|QM|`a=gBWYv^AIxNDE3?6m2IbRH4F ƶ`/f _g0,uz%12?%-êĈrK$jA7cDgL cac X:bQA~fe>ŜJb>Gv \}W_+|uϒ|z-cu߅޳5{ܚ endstream endobj 220 0 obj << /Length1 721 /Length2 6909 /Length3 0 /Length 7498 /Filter /FlateDecode >> stream xmwuTk5R5t 30 2tJ ]t4 HJIy}}׻ַ~>g?g=k8X5'TD@DPX`a/",##PCAAh,  " !!=Q0W4ۉo`A`0 G>9>}G( ]g P3Zih5 P>`8 s"<g$ '8!_x EsF!=*u5!S5iiGeN("U? sBPH/ߴH?0Ax@}pACQ}$B Ŀ, C s@0o X oϽC!0s$?G􍍁f|-euCL  ? >lZ῾#e"Dbqq hBA 3˿ߋAfNrn!E|㣎f|"s#G6^WS|_0I(Jy85nᲘ%jڨ6Ϝ(ݭ*Us,k'_y5?u̴M{G>tFrAZX5TIfuYx*h6h'gg~ʧd(MK~ 2@4KZ*,bfIvjA:7"I쮿eW3}ݔ0`o~ϔiRm.*2ua-ɗ!FYicD'jz>+dDBKx|'V6_x_w'ȽiB&Jw'M* {b#"߼p7)T)M¹hkXw6=Y,* ׷]ٌq or>+'~\"&3P"><_{3z `<,G/oM >+f4h,h3Ʈ V=6dEMo1dnhe>/ȍrf SN`f]ȃ)%IFڪڕEi,n]t!T>sffVx]ͭ](pxu8^\Efa }0iOO nMl: 9]%iL #ǥdOxԓ4Vu|K* eOtn>ʿ1ډ6fWqiڄ︯OBٛn0?tZUc7$GdXP*=kDɠyBe/r-r8wlt9*[ /{#NI53~rݡ0&xͮ >،}*6qDg%ҿG@j3KC 'eԩ 6짹3 '0wτ-}0|KH)'QAɸ nGCK=vrȐ޷?6j `#i9Iݝ“0u ^iV)g=qAp-`j*ǔAoS5ѝۆ>F:!jkTOTwq7OS7KD]a =Hh"xS#%o~+#+R:иa T<.l3_|V{{4.9jV Q^C)}RWG͖ P$a6]mM_42TUjj͆m~KNT]16RR q->hlsFcs~ ~OAɳ<z*}oLsGKa[@h;U1o9Uxqeb~gf/^$@:W=CZ J";K 8 EAgzE.M/1!ݑmН=<2+gեrPɛQh4c|& Ͼ'|aׇeޤ/ZEԌYk>!wn?Zʡ9l e/2@g;?z2$铵ЦO4~C.iJؔrIkRDP4*PWw+TO8!CՓ$S&O,o]ULUh2v͐N9Ռs&вĭMhc&WwڌRlu'~p晻 1g2p˒>(+4v$ pie`"!\3okWɥUT|NS?j K&?Rf ߠIeS[b[}{\w_SG'!Q31~XWΪwqjV cOtg[}i*`Aw9nd!.b :pr3oX!S1Qyez1H1;ۗ3>NN+ᭆld 6Ufi YB3VMZⷀga%ڵwL^O88 xP̷w-7;kKj},cv&ub:qD{qӦ95"  \YH${#)s`AXKn6Kݝ;c804rdYA74MAѡQ]$AJ'ݸ!􄕝M[KXeI͉tE"Tr}~is :u<1x=CmVyn25:A7|%55@x=dǍH>`ϱvBA}csoTur>KmY0s0G\ K-o9evVb*>䢻pKrZAf,LF ݄IՖ4;S)!Q޼񣮍@X=ah>c`"](umX^A"1Y2%L@ z߯wMK'ԎP&+b QLK /pb1Kk^1aaO145gZS瞍Q:Lc7slT6 Ҁ,1k3;KY6PvŷJY,L] D^\}K*̍bWQp [GCYgm9U2sd% FO;P/w wo"6{^Bgʨ$e%XP<֦mx4;5 ɱJռHg?:S0k.O=Œ7&I} +1{]o}yHwwK: wlyzMtg؏jx6[݆)Qƾ5-JzVansf8Gfϥaos/Q=e}ւc1T1˨ ߏ1`hWg@FLuyn %T]|,J9? -fZY0$atӫMG7<MNX2 +t0jАUU@5%)r`%6.tY29=E/wlaE ӤY&(Zuj>Y"l_я 1b}Tϓ)Ks,И nUoDnJTl~H 7z2UaӬm'a^kn~Yz?#4n.E/zMGR^Od,JJZΊ؉C-ا H5wk?\sutVrlm ;gפj 8߅}@9 (]jG2Ucًq|*1YݾfdE5läkFZ{1mDɝWjs3Ud4f5rv_JJi ď/<7ewt$|x >n{Ł#٥ 2?Z_iy\q^(P'6Х{+a8sY|:0Lx@ p}l^4)dh>`6A<3]oVŊ}%+ӟ=y[0 ." 3M-IY)^߫G{|+q"IbYLpp @Z-^: %4d L߉mcדm*}r<KwZ*_{f=uF\e&G'WfE ;R(nkK=$J0}]BuU~ ἅuֵiU;r .COvIM=*GE+ xOW-n"~_{z ?7 :Oԍ>~ZMMف9H~+yo* ƒ0n;)o.B춬u^# 8P˶8':wDO*3~6U'gs)>hN.{4|~Nc0FVhՎh&NB MٻȚl.cg+U1C,44#'`Lk)u*T/MFeIu:i8HQV$ 'ށOI@eBEwK2G?Z}N!V5W{ٟrf(Cm%ɧ Q v o%5akeO(kR![{Ma`s4s~L鲲>YQmyq3F6˒>v?eoJ]kfdU5  `7&b]rBYOm_Kv_Y}~7fŖ'‘Y S69v2~hu"^nRSm]7ٔ|޵ *Օ?ڱyg&mb|u_&> ӣfDt6rW\{t9Iܐt̺u_Uo nbVsnG թ9 C0]_ !<=ۼ a:q1aa7 T{Ү(kF3 2J,B*Kn> 3䑆Z-ZSGFJS endstream endobj 222 0 obj << /Length1 737 /Length2 966 /Length3 0 /Length 1535 /Filter /FlateDecode >> stream xmR PSWHD0´*"IJ(T6! ;T0$&O*". es%JŢl"D@& u!әΛyswz2#Iqb0]Aز0>d&ښK@!☷@k!XdLK"Pvy#  T *T,*KP2U! Ġ2A|y  +E2T Q1p ;@c:I! ARb\|eA|usCr#T6+r̒ ,ј5%Ä*&JPqX7_,l=(FC!Q2YP)IHO a$L&ĨNFKrTE2|I!% P2:00X&B$%)IB T)?)} #8&K+ȟV&lI}W=wW&5^\4Wf-KQmˮΩVe[+3w$J)=d@j)܀7?˦:lǚzIzs%e6%nRuFܻǖWE~Qq}ď9eh8št{$ꎿ}'\i~Vx]p(;Cx148nH -5U4pm1t:i%Ė.+w5nnm>m:]d_&5;R@Wt_lj^il~ >i[|V .Fْ\I0M;үȆns_l`WhA`,mk[ෙ V,<^uZ>8\秪^_r;9J"'|S/v6AJv{A/rlqq2MXFϓK6>CwyMB+597f]fiÆZޫ{V4jA-8w+Ny׃ߍo`z=J)%CF+M|_/+LgOU>&MXD㦯$eE3;qM3ٚQq>\Y?|dd>18_b} endstream endobj 224 0 obj << /Length1 725 /Length2 15948 /Length3 0 /Length 16495 /Filter /FlateDecode >> stream xmctn6vضm۶gNVl۶mZ콿~=zUWWWw9&=#7@E\UHCF&lfj`/jj 039̌L0dG/g+ KW տu[#S+;+g%]ōٍN*ffWK3@DAQKJ^@)!07s6(ZdL]̨4&VBofή3wvȉ +ȫDTEFYۻpmfh#d?X=#01LL\fV0 MMrfxٙ(E\͜rfql濮FvV^C2-?*+q+O3SE+vuv3Z?s#gfjffpϬ:z 1(ȫ+i O,fo`jeoPqO#gQ۬hd /f\<:J=73#' d_pMܜ]M?d2343Y_q0 Nm -+1TYa^A458¹Wß 4ۻܕo&63;& [y-&~W׿SǶ3sMXRb9v*C`6,Gډ_[|ң@3;F )6x_ wCm`YPx_e-8%s-J^;$tŲ!r0Y~ë p )SɫZq77K:C# F .{=jϝ!*)=9B_nu2`A\gvLX9 uTl47/i(i[t"\9;#!E>#}@ٌA4Wg A2ĘKFS젷ПUsU02 _5d xϳ${zf6yi^5U^A S!}w)!h %SF;rB90.3=ltf_<9Ka(:y,op#E}r#丂Y |/xISؙAXgbER^9 s-'p'w٫Y5(ӕ|3uVARb$!.D 1@0]I2 g#^pTNYh߽Y~tl2 W*TXQj*zl}t-f:nVMoPX"*Z_n[7*JSkU{uFs'Ldjig&kh֎ wA3tݽJnKn9筼6[o/[x ]V wAeDH~3 }Mg⺈w;k}b21%:woQPK"F\H1^g pHUcf Uovey1-غ aWڠxCL|JRzV>= ;JHA[;`ك;֣'-A!W^ aehīO1]eV O \ =V' }]^Qc(%OOznu<ĜQ؋TIʪ+eA%8d$ d>#gشgAnK}W;2(G5}3.}ysA4Ξ=pdZaQe͆փ$NLjJ)?ɅLo/IKcR!q1hHSEzsu3Mp[HR9"Wq;ED-ˉA0Qkrl(RDRT2;]b׷}7C輀썩$ s4|ɏE]Txp8TQ*}XWױZs۫ozMZǛst!G{~V7N]j[vjxa{L뽱dKc݉Z]`a2&+Wk Mv^a&nhkS/S#7R-nKv՝fŧϴLBCr=m8p cM7=۩ej H 6y'{H@$_MWӦ{_^gf2  B*|Xv-@!G9L5fI";1uCD(T>'p}ua$cc }bu~땺W"tFB@ ]ӶVc+U?0|7$:NW6U 0Oτ: T|w^)3)2ʿLXUܞ~c]'JP2^Yn9g%:N_1P8-vЍ'~{"瘲dzr~a7kTU(jߎyw\t}ƠD񪉸abR3|g$#A^!M{/pU#_§Em? 0i HGam4pqh@!#Eb. .lXp(#\u8"*57ҕ:S):e%eOÆfpgq| gy%CHNmݺm^˭Ƽ]IߕXx0J*_s~.%#]VBoKd-OSmf=mu\> :b( Xs'Jcr-t#wN%TAx @"t-'3<0zCVm*O_> 3Y%rqC{nf \a /E #!8&ѩE(g{`^ay 0"0ۯE&ymC#@;ܝ`(F[.gEq`Sn\^A=.#x腾*/\{9ؾ %:;vv_=}~ZA\7x- ؈#u))I*hof1ZOe43R"=)g*̱$D'Džs3c11զЂ$`LV@L$ 芋R? 9:X<O@WrqAcZդa,̮17yBt1f gtǵ'&"e mڮ 2y ]E&͊bc:xjt:F!3.\:8nty}\y?Z~*gG:{2 HBHU,-0I6v!rQ\WW0qaXx-ؕF(ngm( 9FbGzG YЬ /uV_l!Iar#?Ol\7"2 xϝdwP"/B`pϷ(-jК)j(rgydLlJ^l% ie9,b EU]#'s @{ܜ辧Mv%Rq A>tZ Zjj7?ݨMy+mI\3z'F`rACDiV-!vy}]!h^ UI!Qʉ`Nf?_ E'B_wZzl-ZB _O#R7|pX5J)(P~$hlOq֗߉UI};uA*8qp)/ sna5;]<7@ "{RL+.HlQn5q-&\<2htԹ2z.Ab·uTA??eSC[@0C6T3n&, bTU_!|Jy(9ExףV6e 4'>qR̭n$𨪼S4?ή0LzLQb]{& }qe&U2 ,N2J!F 7؎zotwq1hu{*nղ|Tk Z {hۜխ#4! 42>9N}p$X-o`kkc@&Ds6j,z}tƟ"*BflUbQktw3|$͹GŪ@U#dƀ6oZ9CPQΏG:j% (0knb>f7`*%FXō("یGJ84P~ e9Ϛf*NMW(s &Q ;H膿 *כ>p*,}KUhHJ{寜BZ=p"꫚(0#%)XI|C%[ݖ@45QJR$AU%>"|{e-A; <]brYZpl0C#bѨ cH-'{ -A e%WN" ih5ј*=(VA8;x_jD]|K~= H"ܞqV_Q6O0!ve~Rmܪ}:;3$qJ;*MR*N±):O'ah9 Zsپ|.nЬ#]Y=J{V_DeQ|x\/sr$7]5NFp(mLB7S.4f`=F|D, *l>ELa rC 1",/hR;Mr B4*Y9r)`ߍ!fD@MvHw>X=:rϿKܻ}&Ր;[&~Fiz)v$5BQac!788\.\kV*tXҷp,qX79bVziO('UU Bڎ ,keX*ck4 3ǫE6-3I"#~ϕ&y"`6(eGP{:kiEc [PP,=cVCM=jph6izoOxSvAb7`KidTi[EԛUSx^~Pk*<g>tT͗*υ "`ew9i-(pL~w5JY)l͟-Pe]R,ŝ%FL&F4=' qD?q )3q뽽ob5y%+ Ҳw_ᶟTl/nH9/@JD|#HCp-b3oDǗN3l$̾.yFH:D£Dv"]O@?OSyqd^D?E$d0P?|||Ղނ@7$" WPHԠ=_>qĦ6! _ˋ&s7'VD9!Kf+>U.Ө I.<ՙ@"g}#HkhmA,r3ϛUUUi>ěGgrz鼥 #,dx{kHn*xȧ1zWI=C0{_wmsHs2ء#Β-cwF5K/eI<*~߁_q*.),+w |(-b{2Q%xLaA,;reJ-JusȫxK8RdWS퍙} ^ `ŰFK$s,%ǔ"C%S;5 `AGE"q\UXx=6~^g9o_sd XW Tߴ:gسFlp9ҕyO}4 s~L;Nn Q-zquk#esmFҊ͔?U7drў"kwc)%;Ñw{=LnjҖIxL {޳lیUv`GH$5wtN$ J8f> Tԉ̿sb~^v7V߱Qb}+H1PǤYb1<:,4^4/#o@ъu524Qx13bˉN&%5%=Q$f5d" {^ lBc8I)ni+Hf= ZLtjl֪ĕ;Q P|LȰP~a90y3M8e U>F@?OYxm$G#̲F;i_3@8@HOeC%Pɕv]Y[}`5(qz;^yWmY1`ڨeO9;za0{VS͞V% WkC aBMݼ-VWҋClUZIY$(M IAbrm휹V1l_aAjKC]P \zb=& <&T WōG*nG]("50]QL%W䲋us 8 X #mdǢxgt%WR +t4 0:JV!sjZ,Tv> "[`X 2.6u0V~)ظdp.nRn"X%\A"8]e|X -~O'78vIQkN\G,^wbnQd" ER>-d 8҅AzyXnkfP3AP('NalҮ%Bj_5 F/"I;!(-'U # 懏rΑ8 ?5X:\tL} "o,CVo=Ymc4-r ƕx\oN;.H R@\/ |sN[fv)GF=9G׏~4KMpv]?m?B <SQonW/ʮy. 'Vv"3R0” g/1| ,MK<.j5_(7;=ANʯ`„q2Tu&"RMX1 >rY[P~rnsF'gB]! $i*21Hy .oJyܕ|}vhvax;yY4Ĥ tx #ݟu3籍Z_FgI}] BTllC1 KK߅@HTY>ٴ̺{n#IKɡ(AMդcqɾ)D]Owfen;E~clp 5 G}V7_%%,x%Op}zP+)5`7·9{5Q H2p!Qh߭1N9>^cDL>ezgIrNpՇ;p،V ̬Y}`C|vuES`qc:~X I7Յ79QH:ס\B/i/V&>DuɬLujŒiMwcEJ7=~A=q'QP*G-_ {5Iz]O+N>ӋKN3 %~0qzPieA G>3/3y]M' ˓pEd8щHT5N~ Av7 Z i '6yTt'T f2=4ynS׶61nwGu%m.\SHP K7Zkږ? EpW @x@W#3? d(bAg^r> (6ohpp.@=Sw>h@-Zw* G-:Ƚf3E^@:=ٹCt %A[vr1b wb /Ζj-p |=,aT\.qXĉ.s>mqN;z)k+㊸aT?/۾3tSl3VES46o<`Z*=Acppw=hWciJc8]֨}EM-ȋD詝%فoW-zm"<$7Ԑ @`"Li -3qVnn_DFc )QƲ3$ji@@IP['RފvtBJ.)U1diGRԛIךl[78uw%ϲjK2 pysv@$G™26dpMH*7Ҿ-de QL2;zxTsMv5tVE# KFmAI+hwN/0@M<'-cXH;@҄7J  9ʗG/{*[ӪR@A j(5,!R0H9]c5٪9"$;}O(:a"N)F;.YږKȟ94}NEb錖1 sOվVsУ=4g܆l"`E$1D1}tĔ*MÐr"&vޛq:v{$ ʓт!]c򙬷᭱ݍCs>嫦ByeDli>-eTa;F;far2лcS(ceX~ubO}tr\JE]Æ\KFiK-?R;Jk\fkyWsHFʧrg,3l0B}$(\ޒؿE4 Mg[7aҵ¹/IɁ1iWK fQ7"oF !B)u4f[nۃYK2@(ÿ!+7gn=VZ :kM9쭿bpbiR5Wܓ5-4gʿ"Y $3l ~Ja`m +^%+"G~G=e}QAR&2$Td+3mB&223 ojvς /});;aŧwKaD\mMU|.hըݾ,ߥ4~[_P)+ӻ ed 6.HY sj^?FuC"i?A/;&ăd&L|Nmm3\! J5{ KK6V3Y?sު{hRkG_A V0iC/mCZDA3CČALx"tj\[eJSX мƇӏ$+WU+=׳됰6%;U'R⍜ 4dmj#$i.}ʦz*6̋cA u=ZuNw9?ȣfWW!&NLOlh5FUn9c I'Q W^o!#n@c?%/4}ӈQ6]ݠm&M)Kokq ~#$DfR;ҩ]_ҪۿV]zv@=ǹ19{9fZ"qxlV% 6& dG3@bLzD vÊBmĚL8qՅzΦggh4O͗ [.*(KϢ̃$l~%n"15ܨBKsb_+g-}m\:$m[f݉'Rz&]hDF5T|s<~™`$(ܔ)3ix4 RBPl^ <D uMKEٌ9* U2Ē5KM`0 HlpR((pujh+v9FwGkz%s%}?}A$w^!:3Zj\@{Ed*UKl`vHf4$ PҚ#>a4+ Bd1rqA9_^qZn,њ~\*1oNHg3u <4_0*gL5NpH86]|Aou}Ai2GE"_a?NW֨ dMLxVO'(G5Skz㽷Y3}l8~x1e.v%z:c^|;PZܧdΜF #۵"~VGحnAŌ&9cm 5P&eHxʨ>-%Ps_ɒ5S)p3%A_zꌰ_ UIl7]@5~D p 9$R`7CVDnSC^=ܧ?bk&uY7 3,.cwHCq<`iq,* ['^P @o fx%r˧gmU8 0((˸R\c$ Gp3_p˧ (B`>ч |Ug{Hv$Y j =&M|ˮ5J8]eh1\}hN Zu_v|wغ)4 |8Z0Rʪ 5\B;U7_fi !R܋~=)[Qde]g v$ߨJ-ݖEjiZq2)0;N0z1R*GI{['gM0皈$ 3 Jb_[@XCw]L'Ӂ['qSpL..IS !U]h9 ^^EE<2XRdljog< VE#SQ x{{w5`(,:x,ْ}^᳢/xk 86y00B6ZVb@p$gƅ\x;~(o[_'a,S-w_$Gi)aԟ ~L(O~Jzc}]~ґ»{cE-Yч8~8hmVЋ>5KNs K讁sRnpR4Ò;zkxРjP *L ڇ4\a].܅TW$/ &1ųf GRil4X$0@kN͇ +{咀1j5~ nTmkr!#<`*O#e]IX^\ch ' 7~x$W7>DpHz0զoc@?1NtJMS_\Fd[Ӛ>,䄤=^,]ƹb"F݁_{3ưJf-ceU܄ϯ냚 d\ "ՏT*$ !JAb+%(Jh1 3}L{4P\/D~+I{ubA-FQ >%)q6 0kp(;@PP_;2sb*ˊ_.|.#]<KIVthK+q)OF |?qIFpܖA0:_PCXX\̹4IrOlefB<2YR,cVp9ώn1^|.o>K&Rf}bF]ЛVΜVbֻD$M&)0)l`("̣c H O{'dA&ΊA?W`d gCm)5NƁ r<@Bl4dW+[gBtiּ;LF(TEpl \,jm$ uM/~[6w],}WiB2[#Ni'ȶ[?%FJ`I"Bl,j۝W(cx;V*TRЏ@9[+M10jJ}'fDPP@Y75B6 rbQ1EOQ0N_9h6k,=ƚY^hlCC  7 ?:7$xa] ֺm|O*&ȪľC}_;ɧJZ0D@)m_3Z9F007YA"dZθi| lN0\lsL8= S]s&"AHT\Eq2D 1!菨 fA6& YrOx;AH/=f_GV_00x_C&uò)GgNjyy-{5 2.SPJqݶR8zwu7r|T+Kz6nAYt*QՊU?:>GsO,\1TeyhRSsQf k? nQm%\5lk~U};lSQ69wםqZd>u-vr+ oP$FM]ySA&Ŝ Y؈ ZʭDcb1;KJ2C!࡟p_Lv^)pIN:|hݝ)1z. endstream endobj 237 0 obj << /Author(Martin M\344chler)/Title(Dip Test Distributions, P-values, and other Explorations)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.17)/Keywords(MPFR, Abitrary Precision, Multiple Precision Floating-Point, R) /CreationDate (D:20161205155404+01'00') /ModDate (D:20161205155404+01'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016/Debian) kpathsea version 6.2.2) >> endobj 154 0 obj << /Type /ObjStm /N 95 /First 861 /Length 4741 /Filter /FlateDecode >> stream xS>B|'2#a(T<~,zד)l&00&?X|3%f6"yAfNtL0s^3˨z2 |4 H gAG@ J,DJ,:+>&BHizJBj%AN%, @J i !38!Cp0u4) yB $y2(pT `EZZL4- Q;{H`U,@ ,X`audBm"-{i U}^pG0}O} ;tjVе },',3McyU-`)Y:J`; L2j*hW+:K BvlwXL+ Ȉg O?}OI8Vv sQh(4?32td\yRz cPzpxiCVp< hT 1d#K5tG#$W%GS1,Bj̓xq d-v{ހZU7i%PG#IZj~}]k):^2Pq Q 4&;RAȘ"$ WPXI6/9r²v:2< <08H;uoT8?6XI422 ![Áb4T(nQHFC $L"k s͜1屖>0E_WʊKqo:*\6F=+$G^RWUVBtQYV;uP$A" ㄃2A( byx}([0g}0 s:6RN# I/)a_BE 'tXG9Ld*OX21iaJU{}h}9)d' o4Vc،Z0-F 9kjASPްRՔN=(HvisWc07`@ wi'`!B08E/ 9+U(:)y M.r8Q r_KHn6 .tPH? c<.҄@# r1]AHkBdɑQydiSC O$OM-ܓyAb_TdOn1PZțSXP#\ā+01@bQтd%]9rt,b-=r#"x_O Ң>cJ-F?P`Z7K#)J,-;SJ&MmV:)9j 1en D*|҅&f $.p7%:*yK a D6ݓ$3gh_$+4ǰIrEO$q(? jCPjB{T/v;ϫBjz"_Gbz9)fIWpb8fw쌿emYm)tZ S/ߞ^ܽn(ocp-/_r{t3,26+nߡ!"e09+f/v>?~GE>ɧ,}3&e $5";bsGfSuM~HǧaS5l>w^:'i~W_**I1-y_e~]~-X@7/(/a~1.+&*x3 d9-ij>c_oD߃_t2 HmY.T JX$ʵC'2b6,g˛ M>&||+yO*&:KB?a^u7 ft?Fs Q@ h[Sf 9{uHp+ eſ2Q +;G{of)IT +Io-%m>; vY3N*_QۧwC=XExp ; &uqȋ+b ppqtTB 4c H}su"xV{Hi꼖 \VFh>r;5= צ {#+ J*_:onMl?xt>Wgh~·\BqM~AyKBIjG3 čݝmyg]: y%! | C)%5`EE~4,g)p8,>Ft_tϐwʛFqnx?M;@Fm gg^b1b݆9mrQ ?9;s{5۸lΤ6u#,yƽdqap w3PyN~9u'7G|$nEnZ7'}Fdv!y|c-ߎwp}F_L?B6%:yx[-} \2<V;㵚6%Bv D~?"϶6Ө"c'jSnPӰWJ]ӟ;oLroӦi$uumx {6EPt2)Г+j:}P^QOd kbB 5dLY_e?^>r|?# ] /Length 615 /Filter /FlateDecode >> stream x%oMQҪGR}(ڪG[W=ZG:11J Cb1Db A߯/^g}>C_ ! OW+c"hvK@ Sց VJ8P&Mc&pl3.QVpi6T T hue~0v1b{`FcX#vCԚap !Z'Nڝ;w$ɳg'N:u$ɩS'N:t:tӫ,<7}›jrdYײZGeuf_7 skF3dM~5[\-X|Kj{Y%]od`YaӒY%oʺ-XBk>KedineWtib=#c] endstream endobj startxref 292081 %%EOF diptest/inst/doc/diptest.bib0000755000175100001440000000417011172127775015637 0ustar hornikusers@string{AmStat = "The American Statistician"} @string{AnnStat = "Annals of Statistics"} % @string{JASA = "Journal of the American Statistical Association"} @string{AnInStMa = "Annals of the Inst.\ of Stat.\ Math."} @string{JASA = "JASA"} @string{JAppTh = "Journal of Approximation Theory"} @string{JMAA = "Journal of Analysis and Applications"} @string{JRSS = "Journal of the Royal Statistical Society"} %% ALWAYS #~A or #~B! @string{JRSSA = JRSS # "~A, General"} @string{JRSSB = JRSS # "~B"} @string{JRSSC-AS = "Applied Statistics --- " # JRSS # "~C"} @string{NuMath = "Numerische Mathematik"} @string{SIAM = "Society for Industrial and Applied Mathematics"} @string{SSci = "Statistical Science"} @string{StMed = "Statist.\ in Med."}% Statistics in Medicine @string{ScandS = "Scandinavian Journal of Statistics"} @string{JSS = "Journal of Statistical Software"} @string{JSSC = "SIAM Journal on Scientific and Statistical Computing"} % @string{JSSC = "SIAM J. Sci.\ Statist.\ Comput."} @string{JCGS = "Journal of Computational and Graphical Statistics"} % @string{CSDA = "Computational Statistics \& Data Analysis"} @string{CSDA = "Computat.\ Statist.\ Data Anal."} @string{IEEE-ASSP = "IEEE Trans.\ Acoust., Speech, Signal Processing"} % @string{TOMS = "ACM Transactions on Mathematical Software"} % @string{TOMS = "{ACM} Transactions on Mathematical Software (TOMS)"} @string{TOMS = "ACM Trans.\ Math.\ Software"} @string{ETH = "Swiss Federal Institute of Technology (ETH)"} @string{UWstat = "Department of Statistics, University of Washington"} @string{Wiley = "Wiley"} @string{NY = "N.~Y."} @article{HarJH85, Author = {J. A. Hartigan and P. M. Hartigan}, Title = {The Dip Test of Unimodality}, Year = 1985, Journal = AnnStat, Volume = 13, Pages = {70--84}, Keywords = {Multimodality; Isotonic regression; Empirical distribution} } @article{HarP85, author = {P. M. Hartigan}, title = {Computation of the Dip Statistic to Test for Unimodality}, year = 1985, journal = {Applied Statistics}, pages = {320--325}, volume = 34 } %% -- note that ~/bib/master.bib has quite a few more on "modality" testing diptest/inst/doc/diptest-issues.R0000644000175100001440000001133113021277614016600 0ustar hornikusers### R code from vignette source 'diptest-issues.Rnw' ################################################### ### code chunk number 1: preliminaries ################################################### options(SweaveHooks= list(fig=function() par(mar=c(5.1, 4.1, 1.1, 2.1))), width = 75, digits = 7, # <-- here, keep R's default! prompt = "R> ", # <- "yuck!" - required by JSS continue=" ") set.seed(47) Sys.setenv(LANGUAGE = "en") if(.Platform$OS.type != "windows") Sys.setlocale("LC_MESSAGES","C") ## In order to save() and load() expensive results thisDir <- system.file('doc', package='diptest') xtraDir <- if(Sys.getenv("USER") == "maechler") "~/R/Pkgs/diptest/stuff" else thisDir res1.file <- file.path(thisDir, "aggr_results.Rdata") ################################################### ### code chunk number 2: diagnose-lib ################################################### if(nzchar(Sys.getenv("R_MM_PKG_CHECKING"))) print( .libPaths() ) ################################################### ### code chunk number 3: dip_n-is-5 ################################################### getOption("SweaveHooks")[["fig"]]() require("diptest") # after installing it .. D5 <- replicate(10000, dip(runif(5))) hist(D5, breaks=128, main = "Histogram of replicate(10'000, dip(runif(5))))") ################################################### ### code chunk number 4: dip_n-is-8 ################################################### getOption("SweaveHooks")[["fig"]]() D8 <- replicate(10000, dip(runif(8))) hist(D8, breaks=128, main = "Histogram of replicate(10'000, dip(runif(8))))") ################################################### ### code chunk number 5: sim--n-eq-11 (eval = FALSE) ################################################### ## set.seed(11) ## n <- 11 ## B.s11 <- 500000 ## D11 <- replicate(B.s11, dip(runif(n))) ################################################### ### code chunk number 6: 2nd-small-sample-phenomen--n-eq-11 ################################################### if(file.exists(ff <- file.path(thisDir, "hist-D11.rda"))) { load(ff) } else { ## takes a few minutes set.seed(11) n <- 11 B.s11 <- 500000 D11 <- replicate(B.s11, dip(runif(n))) hD11 <- hist(D11, breaks=1e-6+(63:298)/(2*11*64), plot=FALSE) save(hD11, n, B.s11, file= ff) } ################################################### ### code chunk number 7: 2nd-small-sample-phenomen--n-eq-11 ################################################### getOption("SweaveHooks")[["fig"]]() B.str <- format(B.s11, sci=FALSE, big.mark="'") plot(hD11, main = "", ## main = sprintf("Histogram of replicate(%s, dip(runif(%d)))", B.str, n), border=NA, col="dark gray", xlab = substitute("Dip" ~~ D[.N.](U(group("[",list(0,1),"]"))), list(.N. = n))) title(xlab= substitute(B == .B.SIM. ~ "replicates", list(.B.SIM. = B.str)), adj = .88) lcol <- adjustcolor("orange4", 0.4) abline(v = (1:3)/(2*n), col=lcol, lty=3, lwd=2) axis(1, pos=0, at = (1:3)/(2*n), labels = expression(1/22, 2/22, 3/22), col=lcol, col.axis=lcol) ################################################### ### code chunk number 8: sqrt-n-qdip ################################################### getOption("SweaveHooks")[["fig"]]() data(qDiptab) dnqd <- dimnames(qDiptab) (nn. <- as.integer(dnqd[["n"]])) matplot(nn., qDiptab*sqrt(nn.), type ="o", pch=1, cex = 0.4, log="x", xlab="n [log scaled]", ylab = expression(sqrt(n) %*% q[D[n]])) ## Note that 1/2n is the first possible value (with finite mass),, ## clearly visible for (very) small n: lines(nn., sqrt(nn.)/(2*nn.), col=adjustcolor("yellow2",0.5), lwd=3) P.p <- as.numeric(print(noquote(dnqd[["Pr"]]))) ## Now look at one well known data set: D <- dip(x <- faithful$waiting) n <- length(x) points(n, sqrt(n)*D, pch=13, cex=2, col= adjustcolor("blue2",.5), lwd=2) ## a simulated (approximate) $p$-value for D is mean(D <= replicate(10000, dip(runif(n)))) ## ~ 0.002 ################################################### ### code chunk number 9: interpolate-dip-table ################################################### ## We are in this interval: n0 <- nn.[i.n <- findInterval(n, nn.)] n1 <- nn.[i.n +1] ; c(n0, n1) f.n <- (n - n0)/(n1 - n0)# in [0, 1] ## Now "find" y-interval: y.0 <- sqrt(n0)* qDiptab[i.n ,] y.1 <- sqrt(n1)* qDiptab[i.n+1,] (Pval <- 1 - approx(y.0 + f.n*(y.1 - y.0), P.p, xout = sqrt(n) * D)[["y"]]) ## 0.018095 ################################################### ### code chunk number 10: statfac-dip.test ################################################### data(statfaculty) dip.test(statfaculty) ################################################### ### code chunk number 11: sessionInfo ################################################### toLatex(sessionInfo()) diptest/inst/doc/hist-D11.rda0000755000175100001440000000714411564253466015475 0ustar hornikusersyXGQŃ (5VIPs`H(x1\9cLʤ-wzTJ$f֕a{3֤ vᇪ~-N1{, Qޚ"V<|xϣ~N 8 O?~`~8(׹?)=ܣp= 7n p3f=,lݓdzv\tgEhanۆg>ʳ dz,&gr=ڠ<;a x}&S} ́7npsͅ 7n|p-[nBp -[n"Ep-[ n1b%pK-[W W W W W W n)RpK᪘c7pUf}UΟ": 窄Dޓ\r$_-:*|gA[:UUa\ W W W W W W W W W W WWWWWWWWWWWW W W W W W W W W W W WWWWWWWWWWWWWWWWWWWWWW  nYK},uƬ13%MNCJE=%rn%-(TO9/]((ԧL]|_N1;N3f{*s\F>5wd)?ǁ'99Cs=17羅t˘#Ga΅ XJw<)](>gڈY9[5Gn: ىI;UW|#\3vTFiD;NUheo+=M.$f>2;9s@8;~dZl>?}qE+|P#s*7ɻJ~|7"zrpћ20X ݰø9[6f_>m^&mZ眣xkH:^ņubz_Mq'\C{צX#91x=z=C=ӽ_5\DAmfC>bAqE/\?ZO]5_?>z MG?Rxu~&Jt6^OeNnֿwBa«q!y946Kt}Jt2K 5e!;xM#梫6+lW'MDIZ{pۙ]I%4ez;?vД.^ &|_[ܦ)7uWl_+쏋֯]m>k9ui2⮶?#v*?NUncNeӯiՇWhKC7n7ZvZ۞l,Q~p0q-~scv{痜lNzSsoR6g5<q[W.n,oXSrެ ##voXo9`} o~kys@־mwkܯտб5_Ψ_oװ}߬~ᄇm}ۿ_oUjSYS1jSls*;xTls*cy:Tms*aXa{G{n p3f=cplc'xг01,<cٶ<c|mlg.++++7n9psͅ 7n.\9\9\9\9\9\9|p -[nBp -[n"Ep-[ n1%pK-[W W W W W n)RpKU9Yǎ*/ռg;vQY?vZ9m:&.auLjjjjjjjjjjjjjjjjjjjjjjZZZZZZZZZZZջԷ:|k9kB~kvqs㱏 X߰5wa\BÚSL\Bt\|LBLtCt[b63aV+LOxfGǿqfRŹ3DΡ7)B"|*^'CmVieU׍"diptest/inst/extraData/0000755000175100001440000000000012520675400014637 5ustar hornikusersdiptest/inst/extraData/qDiptab.rds0000755000175100001440000001032711620435666016753 0ustar hornikusers 8U[u E!L݄CJ* R2f&CdH2\d+@ Ӫ* HEߏ繴 |x##eg*F=Nzh3FE/fu\gȺA^V»ѝ$!G\iZRR2\u{5A'zv &E9NsOFVQ A5=%jCdkMU?DFszd. L#E;s ?v㹣-#.GvltzK"`tO(|QM6K^9{׺WAш6(*S|UZu7!GLy9dl iC'd-<7jr-ھ2Lw/Sk'xWrPRa]^,ߧ 59qleZTv098݋Az7c(Hߌl^ ,bH.g?PE; u%2)9u%e곇qB`٭YOpO)W [`YyGF8MBs)PUZYp}a\f#OΊ!npa!id #V#Awe`25_xzG~(ݨSmu7?GMޛ;VdTeZo~M@tW '+8{P8ߤ$c-&Luܼm;gG|^q$;jM\2. b2(|sl-8-Г8aSR[?!FLU:4 >YP>U2x߲}(9uTw~kIJZG |!^I7n~8m8 E!l5H4s59?D,.˹gyEO.|^l<9fFevhTOLG_CS)Tmz4wazy[+3_yPi|fuFuH8zkoLUPX?^ڵ2Q >*2_O֞ArCDeO3sr*7T׈4֩6o=Pb T1բ)vfvuޟhIi 9 M&qnG$*+>rzVfԓ ]oFlq{(0(JRО,6!/dێk!ŖmTY" sbA7 qU\W|<K d`6L$RZ/ZX8g}֬<˞{D/}Ihh,:#hj jmZi{3-b4"^D}" HyѬST,*FZ-#9˞mPp@.NDgҪ5[֦057{S.ұC4o]%&x ڨ9{촾;D.>~m5:\S=d'fG/ xnΛ6?5\-v*ށrU۰g# NH\EBɲ$nLGq=UJY:m>5\q;E{-禛LoVMΗzD%Ay1ƕ1RuhM|6H?S{R_%8K"Ըth=)i$PbƳeͬ.xHEho7/b"A`@P[wECy!=b'_Gqt"q>Bι k̋_ wwJd$RG:Za|ez\:~5ts+ TAgw361l.G Mb,Z4|8/6(q>YZm(~嫽cmP 9YMːX99͜W٥E<T8|q])ϑmKqZW~vYU@۔Xj$WK ::D"5{Zz}Myݛ ]SdO hݞ=:,hUc )((uRHR N!סwgU0tlt@3Z7w>,9,9 l,s`s*j.Q5 3qr]&C{ў)XAP^!Տ3zbl)FN/8PJC~+74g-[ I2PYaCʹ$+$w4|\IN匴lV%`뵺g 0BΟ5v$G5z;G&Сr` Pg-A=7խxA=}MΨlnFӭ:#)v]mQx$. +wyze\%+I33丹Ik@qBPt<$̈́q ':qy}5ڧUŸBJvкۄ|4e1%3*/Ձn>;kZ fQNCאoy [-"QR| xrME LpuУ)/M:{φsRStu5BwU.ޫ| >86k&h&)(]@е/ve5ny)eBHwY2"Ғkp~hނM.$uHZSLkw)o G E1ZXմL9"?AǤ \5):فN5c[]Z(h=x&@JC:70.?{;y;"l燵$Çs<.6_ pY1=e@L^B,JoiH۰넎nfq2srY8{_qAyTAu6}Q-#(ا(~d~/y~__wP^V +‹B//K ?Q'n4S*?Q'nyMJ/aJ _Ţ/\RT\4/!k,1~H+a ڦCt o#hdiptest/tests/0000755000175100001440000000000012534675430013117 5ustar hornikusersdiptest/tests/mechler-ex.R0000755000175100001440000000107711564670611015301 0ustar hornikuserslibrary(diptest) ## These are from ## the 217-readme.doc file that explains the bug fixed by ## Ferenc Mechler (fmechler@med.cornell.edu). [5/Sep/2002] ## ex1 <- c(0.0198, 0.0198, 0.1961, 0.2898, 0.3184, 0.3687, 0.4336, 0.4987, 0.5661, 0.6530, 0.7476, 0.8555) ex2 <- c(0.0198, 0.1961, 0.2898, 0.3184, 0.3687, 0.4336, 0.4987, 0.5661, 0.6530, 0.7476, 0.8555, 0.9912) ## Multiply them by 10000 here: (D1 <- dip(10000*ex1, full=TRUE, debug=2)) str(D1, digits = 10, vec.len = 12) (D2 <- dip(10000*ex2, full=TRUE, debug=2)) str(D2, digits = 10, vec.len = 12) diptest/tests/sim1.R0000755000175100001440000000204011743355664014117 0ustar hornikusers#### Very small scale simulation to make the point #### --> See ../stuff/ for much more library(diptest) P.p <- c(1, 5, 10, 25)/100 (P.p <- c(P.p, 1/2, rev(1 - P.p))) N.sim <- 9999 set.seed(94) .p0 <- proc.time() dU100 <- replicate(N.sim, dip(runif(100))) cat('Time elapsed: ', (p1 <- proc.time()) - .p0,'\n'); .p0 <- p1 ## Lynne (2003: P IV, 1.6 GHz): ~7 s ## 2010 (AMD Phenom II X4 925): 1.3 s 100 * round(q100 <- quantile(dU100, p = P.p), 4) plot(density(sqrt(100) * dU100), lwd = 2, col=2, main = expression("Dip distribution" ~~ list(sqrt(n)* D[n], ~ n == 100))) abline(h=0, col="dark gray", lty=3) round(1e4 * quantile(dU100, p = seq(0,1, by = 0.01), names = FALSE)) ##--- an extreme unimodal case -- i.e. very small dip(): set.seed(60); x <- rexp(301,1)^3 hist(x) (dt.x <- dip.test(x)) (dt2 <- dip.test(x, simulate = TRUE)) (dt3 <- dip.test(x, simulate = TRUE, B = 10000)) stopifnot(dt.x$p.value == 1,## <- gave NA earlier dt2$p.value == 1, dt3$p.value == 1) cat('Time elapsed: ', proc.time() - .p0,'\n') # "stats" diptest/tests/ex1.Rout.save0000755000175100001440000002504612475557330015440 0ustar hornikusers R Under development (unstable) (2015-03-03 r67931) -- "Unsuffered Consequences" Copyright (C) 2015 The R Foundation for Statistical Computing Platform: x86_64-unknown-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(diptest) > > stopifnot(dip(c(1,1,2,2)) == 1/4)# the maximal value possible: two point dist > > ## very first small "unimodal" example --- the 1/(2*n) result: > n <- length(u <- cumsum(0:3)) > d <- dip(u, debug=TRUE)# shows the final if() {added by MM} is really needed dip() in C: n = 4; starting with 2N*dip = 1. 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 1, 4]; l_lcm/gcm = ( 4, 2) while(gcm[ix] != lcm[iv]) : .. calculating dip .. (dip_l, dip_u) = (0, 1) 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 1, 3]; l_lcm/gcm = ( 3, 2) while(gcm[ix] != lcm[iv]) : . calculating dip .. (dip_l, dip_u) = (0, 1) 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 1, 2]; l_lcm/gcm = ( 2, 2) ** (l_lcm,l_gcm) = (2,2) ==> d := 1 calculating dip .. (dip_l, dip_u) = (0, 0) No improvement in low = 1 nor high = 2 --> END > stopifnot(d == dip(-u), d == 1/(2*n))# exact "=" for n = 4 ! > ## Note that I believe this should *not* give 0 (as fmechler@.. did), > ## but rather 1/(2n) because that's (1/n) / 2 and > ## (1/n) is the correct distance between LCM and GCM > > ## Small example -- but MM sees difference (32-bit / 64-bit): > x <- c(0,2:3,5:6) > d1 <- dip(x, full=TRUE, debug=2) dip() in C: n = 5; starting with 2N*dip = 1. 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 1, 5]; l_lcm/gcm = ( 2, 4) while(gcm[ix] != lcm[iv]) : G(3,2) --> ix = 2, iv = 2 --> ix = 1, iv = 2 calculating dip .. (dip_l, dip_u) = (1, 0) 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 2, 5]; l_lcm/gcm = ( 3, 3) while(gcm[ix] != lcm[iv]) : L(3,2) --> ix = 2, iv = 3 G(2,3) --> ix = 1, iv = 3 calculating dip .. (dip_l, dip_u) = (1.33333, 0) -> new larger dip 1.33333 (j_best = 3) 'dip': LOOP-BEGIN: 2n*D= 1.3333 [low,high] = [ 4, 5]; l_lcm/gcm = ( 2, 2) ** (l_lcm,l_gcm) = (2,2) ==> d := 1 > d2 <- dip(6-x, full=TRUE, debug=2) dip() in C: n = 5; starting with 2N*dip = 1. 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 1, 5]; l_lcm/gcm = ( 4, 2) while(gcm[ix] != lcm[iv]) : L(2,2) --> ix = 1, iv = 3 L(2,3) --> ix = 1, iv = 4 calculating dip .. (dip_l, dip_u) = (0, 1) 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 1, 4]; l_lcm/gcm = ( 3, 3) while(gcm[ix] != lcm[iv]) : L(3,2) --> ix = 2, iv = 3 G(2,3) --> ix = 1, iv = 3 calculating dip .. (dip_l, dip_u) = (1.33333, 0) -> new larger dip 1.33333 (j_best = 2) 'dip': LOOP-BEGIN: 2n*D= 1.3333 [low,high] = [ 3, 4]; l_lcm/gcm = ( 2, 2) ** (l_lcm,l_gcm) = (2,2) ==> d := 1 > str(d1) List of 15 $ call : language dip(x = x, full.result = TRUE, debug = 2) $ x : num [1:5] 0 2 3 5 6 $ n : int 5 $ dip : num 0.133 $ lo.hi : int [1:2] 4 5 $ ifault : int 0 $ gcm : int [1:2] 5 4 $ lcm : int [1:2] 4 5 $ mn : int [1:5] 1 1 2 2 4 $ mj : int [1:5] 5 3 5 5 5 $ min.is.0 : logi FALSE $ debug : int 2 $ xl : num 5 $ xu : num 6 $ full.result: logi TRUE - attr(*, "class")= chr "dip" > str(d2) List of 15 $ call : language dip(x = 6 - x, full.result = TRUE, debug = 2) $ x : num [1:5] 0 1 3 4 6 $ n : int 5 $ dip : num 0.133 $ lo.hi : int [1:2] 3 4 $ ifault : int 0 $ gcm : int [1:2] 4 3 $ lcm : int [1:2] 3 4 $ mn : int [1:5] 1 1 1 3 1 $ mj : int [1:5] 2 4 4 5 5 $ min.is.0 : logi FALSE $ debug : int 2 $ xl : num 3 $ xu : num 4 $ full.result: logi TRUE - attr(*, "class")= chr "dip" > > if(!dev.interactive(orNone=TRUE)) pdf("ex1.pdf") > par(mfrow = 2:1, mar = .1+c(3,4,2,1), mgp=c(1.5,.6,0), oma = c(0,0,2.1,0)) > # > plot(d1) > abline(v=-1:7, h = seq(0,1,by=0.2), lty="83", col = "gray") > # > plot(d2) > abline(v=-1:7, h = seq(0,1,by=0.2), lty="83", col = "gray") > # > ## "title" only now > mtext("dip() problem with 'mirror x'", side=3, line = 0.8, + outer=TRUE, cex = 1.5, font = 2) > > > ## Yong Lu example -- a bit smaller > x2 <- c(1, rep(2, 9)) > stopifnot(dip(x2) == dip(3 - x2)) > str(dip(x2, full=TRUE)) List of 15 $ call : language dip(x = x2, full.result = TRUE) $ x : num [1:10] 1 2 2 2 2 2 2 2 2 2 $ n : int 10 $ dip : num 0.05 $ lo.hi : int [1:2] 2 10 $ ifault : int 0 $ gcm : int [1:2] 10 2 $ lcm : int [1:2] 2 10 $ mn : int [1:10] 1 1 2 2 2 2 2 2 2 2 $ mj : int [1:10] 10 10 10 10 10 10 10 10 10 10 $ min.is.0 : logi FALSE $ debug : int 0 $ xl : num 2 $ xu : num 2 $ full.result: logi TRUE - attr(*, "class")= chr "dip" > cat('Time elapsed: ', (.pt <- proc.time()),'\n') # "stats" Time elapsed: 0.184 0.023 0.252 0 0.003 > > ## Real data examples : > > data(statfaculty) > > str(dip(statfaculty, full = "all", debug = 3), vec.len = 8) dip() in C: n = 63; starting with 2N*dip = 1. 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 1, 63] : gcm[1:6] = 63, 62, 7, 3, 2, 1 lcm[1:5] = 1, 44, 58, 59, 63 while(gcm[ix] != lcm[iv]) : G(5,2) --> ix = 4, iv = 2 G(4,2) --> ix = 3, iv = 2 G(3,2) --> ix = 2, iv = 2 L(3,2) --> ix = 2, iv = 3 L(3,3) --> ix = 2, iv = 4 --> ix = 2, iv = 5 --> ix = 1, iv = 5 calculating dip .. (dip_l, dip_u) = (2, 2.11111) -> new larger dip 2.11111 (j_best = 61) 'dip': LOOP-BEGIN: 2n*D= 2.1111 [low,high] = [ 7, 58] : gcm[1:5] = 58, 55, 51, 48, 7 lcm[1:6] = 7, 11, 15, 42, 44, 58 while(gcm[ix] != lcm[iv]) : L(5,2) --> ix = 4, iv = 3 L(5,3) --> ix = 4, iv = 4 L(5,4) --> ix = 4, iv = 5 L(5,5) --> ix = 4, iv = 6 --> ix = 3, iv = 6 --> ix = 2, iv = 6 --> ix = 1, iv = 6 calculating dip .. (dip_l, dip_u) = (0, 7.5) -> new larger dip 7.5 (j_best = 48) 'dip': LOOP-BEGIN: 2n*D= 7.5 [low,high] = [ 7, 44] : gcm[1:4] = 44, 43, 38, 7 lcm[1:5] = 7, 11, 15, 42, 44 while(gcm[ix] != lcm[iv]) : L(4,2) --> ix = 3, iv = 3 L(4,3) --> ix = 3, iv = 4 --> ix = 2, iv = 4 --> ix = 2, iv = 5 --> ix = 1, iv = 5 List of 17 $ call : language dip(x = statfaculty, full.result = "all", debug = 3) $ x : num [1:63] 30 33 35 36 37 37 39 39 39 39 39 40 40 40 40 41 42 43 43 43 ... $ n : int 63 $ dip : num 0.0595 $ lo.hi : int [1:2] 7 44 $ ifault : int 0 $ gcm : int [1:4] 44 43 38 7 $ lcm : int [1:5] 7 11 15 42 44 $ mn : int [1:63] 1 1 2 3 3 5 3 7 7 7 7 7 12 12 12 7 7 7 18 18 ... $ mj : int [1:63] 44 44 15 15 6 15 11 11 11 11 15 15 15 15 42 42 20 20 20 42 ... $ min.is.0 : logi FALSE $ debug : int 3 $ xl : num 39 $ xu : num 54 $ full.result: chr "all" $ GCM : int [1:6] 63 62 7 3 2 1 $ LCM : int [1:5] 1 44 58 59 63 - attr(*, "class")= chr "dip" > > data(faithful) > fE <- faithful$eruptions > str(dip(fE, full = "all", debug = 3), + vec.len= 8) dip() in C: n = 272; starting with 2N*dip = 1. 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 1,272] : gcm[1:7] = 272, 135, 120, 119, 4, 2, 1 lcm[1:10] = 1, 40, 58, 60, 66, 79, 91, 261, 268, 272 while(gcm[ix] != lcm[iv]) : G(6,2) --> ix = 5, iv = 2 G(5,2) --> ix = 4, iv = 2 L(5,2) --> ix = 4, iv = 3 L(5,3) --> ix = 4, iv = 4 L(5,4) --> ix = 4, iv = 5 L(5,5) --> ix = 4, iv = 6 L(5,6) --> ix = 4, iv = 7 L(5,7) --> ix = 4, iv = 8 G(4,8) --> ix = 3, iv = 8 G(3,8) --> ix = 2, iv = 8 --> ix = 1, iv = 8 --> ix = 1, iv = 9 --> ix = 1, iv = 10 calculating dip .. (dip_l, dip_u) = (50.2553, 3) -> new larger dip 50.2553 (j_best = 91) 'dip': LOOP-BEGIN: 2n*D= 50.255 [low,high] = [120,261] : gcm[1:7] = 261, 260, 252, 181, 146, 135, 120 lcm[1:5] = 120, 124, 233, 246, 261 while(gcm[ix] != lcm[iv]) : L(7,2) --> ix = 6, iv = 3 G(6,3) --> ix = 5, iv = 3 G(5,3) --> ix = 4, iv = 3 G(4,3) --> ix = 3, iv = 3 --> ix = 3, iv = 4 --> ix = 3, iv = 5 --> ix = 2, iv = 5 --> ix = 1, iv = 5 List of 17 $ call : language dip(x = fE, full.result = "all", debug = 3) $ x : num [1:272] 1.6 1.67 1.7 1.73 1.75 1.75 1.75 1.75 1.75 1.75 ... $ n : int 272 $ dip : num 0.0924 $ lo.hi : int [1:2] 120 261 $ ifault : int 0 $ gcm : int [1:7] 261 260 252 181 146 135 120 $ lcm : int [1:5] 120 124 233 246 261 $ mn : int [1:272] 1 1 2 2 4 5 5 5 5 5 5 11 5 13 13 13 13 17 17 13 ... $ mj : int [1:272] 40 40 40 10 10 10 10 10 10 40 12 36 16 16 16 26 19 19 26 26 ... $ min.is.0 : logi FALSE $ debug : int 3 $ xl : num 3.83 $ xu : num 4.83 $ full.result: chr "all" $ GCM : int [1:7] 272 135 120 119 4 2 1 $ LCM : int [1:10] 1 40 58 60 66 79 91 261 268 272 - attr(*, "class")= chr "dip" > > data(precip) > str(dip(precip, full = TRUE, debug = TRUE)) dip() in C: n = 70; starting with 2N*dip = 1. 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 1, 70]; l_lcm/gcm = ( 6, 4) while(gcm[ix] != lcm[iv]) : ...... calculating dip .. (dip_l, dip_u) = (5, 2.5) -> new larger dip 5 (j_best = 13) 'dip': LOOP-BEGIN: 2n*D= 5 [low,high] = [ 19, 64]; l_lcm/gcm = ( 6, 6) while(gcm[ix] != lcm[iv]) : ........ calculating dip .. (dip_l, dip_u) = (3.875, 3.44828) 'dip': LOOP-BEGIN: 2n*D= 5 [low,high] = [ 31, 55]; l_lcm/gcm = ( 4, 3) while(gcm[ix] != lcm[iv]) : ... List of 15 $ call : language dip(x = precip, full.result = TRUE, debug = TRUE) $ x : num [1:70] 7 7.2 7.8 7.8 11.5 13 14 14.6 15 15.2 ... $ n : int 70 $ dip : num 0.0357 $ lo.hi : int [1:2] 31 55 $ ifault : int 0 $ gcm : int [1:3] 55 49 31 $ lcm : int [1:4] 31 32 35 55 $ mn : int [1:70] 1 1 1 3 1 1 6 7 8 9 ... $ mj : int [1:70] 2 4 4 64 55 10 10 10 10 55 ... $ min.is.0 : logi FALSE $ debug : int 1 $ xl : Named num 35.9 ..- attr(*, "names")= chr "Dallas" $ xu : Named num 43.4 ..- attr(*, "names")= chr "Hartford" $ full.result: logi TRUE - attr(*, "class")= chr "dip" > > cat('Time elapsed: ', proc.time() - .pt,'\n') # "stats" Time elapsed: 0.034 0.005 0.052 0 0 > > if(!interactive()) warnings() NULL > > proc.time() user system elapsed 0.218 0.031 0.304 diptest/tests/ex1.R0000755000175100001440000000310311565517324013737 0ustar hornikuserslibrary(diptest) stopifnot(dip(c(1,1,2,2)) == 1/4)# the maximal value possible: two point dist ## very first small "unimodal" example --- the 1/(2*n) result: n <- length(u <- cumsum(0:3)) d <- dip(u, debug=TRUE)# shows the final if() {added by MM} is really needed stopifnot(d == dip(-u), d == 1/(2*n))# exact "=" for n = 4 ! ## Note that I believe this should *not* give 0 (as fmechler@.. did), ## but rather 1/(2n) because that's (1/n) / 2 and ## (1/n) is the correct distance between LCM and GCM ## Small example -- but MM sees difference (32-bit / 64-bit): x <- c(0,2:3,5:6) d1 <- dip(x, full=TRUE, debug=2) d2 <- dip(6-x, full=TRUE, debug=2) str(d1) str(d2) if(!dev.interactive(orNone=TRUE)) pdf("ex1.pdf") par(mfrow = 2:1, mar = .1+c(3,4,2,1), mgp=c(1.5,.6,0), oma = c(0,0,2.1,0)) # plot(d1) abline(v=-1:7, h = seq(0,1,by=0.2), lty="83", col = "gray") # plot(d2) abline(v=-1:7, h = seq(0,1,by=0.2), lty="83", col = "gray") # ## "title" only now mtext("dip() problem with 'mirror x'", side=3, line = 0.8, outer=TRUE, cex = 1.5, font = 2) ## Yong Lu example -- a bit smaller x2 <- c(1, rep(2, 9)) stopifnot(dip(x2) == dip(3 - x2)) str(dip(x2, full=TRUE)) cat('Time elapsed: ', (.pt <- proc.time()),'\n') # "stats" ## Real data examples : data(statfaculty) str(dip(statfaculty, full = "all", debug = 3), vec.len = 8) data(faithful) fE <- faithful$eruptions str(dip(fE, full = "all", debug = 3), vec.len= 8) data(precip) str(dip(precip, full = TRUE, debug = TRUE)) cat('Time elapsed: ', proc.time() - .pt,'\n') # "stats" if(!interactive()) warnings() diptest/tests/sim1.Rout.save0000755000175100001440000000600712475557333015613 0ustar hornikusers R Under development (unstable) (2015-03-03 r67931) -- "Unsuffered Consequences" Copyright (C) 2015 The R Foundation for Statistical Computing Platform: x86_64-unknown-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > #### Very small scale simulation to make the point > #### --> See ../stuff/ for much more > library(diptest) > > P.p <- c(1, 5, 10, 25)/100 > (P.p <- c(P.p, 1/2, rev(1 - P.p))) [1] 0.01 0.05 0.10 0.25 0.50 0.75 0.90 0.95 0.99 > > N.sim <- 9999 > set.seed(94) > .p0 <- proc.time() > dU100 <- replicate(N.sim, dip(runif(100))) > cat('Time elapsed: ', (p1 <- proc.time()) - .p0,'\n'); .p0 <- p1 Time elapsed: 0.512 0.085 0.597 0 0 > ## Lynne (2003: P IV, 1.6 GHz): ~7 s > ## 2010 (AMD Phenom II X4 925): 1.3 s > > 100 * round(q100 <- quantile(dU100, p = P.p), 4) 1% 5% 10% 25% 50% 75% 90% 95% 99% 2.29 2.56 2.75 3.08 3.54 4.12 4.70 5.09 5.90 > > plot(density(sqrt(100) * dU100), lwd = 2, col=2, + main = expression("Dip distribution" ~~ + list(sqrt(n)* D[n], ~ n == 100))) > abline(h=0, col="dark gray", lty=3) > > round(1e4 * quantile(dU100, p = seq(0,1, by = 0.01), names = FALSE)) [1] 191 229 239 246 252 256 261 265 268 272 275 277 280 282 285 287 289 292 [19] 294 296 298 300 302 304 305 308 310 312 314 315 317 319 321 323 325 327 [37] 329 331 332 334 336 338 340 341 343 345 347 349 351 352 354 356 358 360 [55] 362 364 366 368 370 372 374 376 379 381 383 385 387 390 393 395 397 400 [73] 403 406 409 412 415 418 421 424 427 431 434 438 442 446 450 455 460 464 [91] 470 476 483 489 499 509 520 539 562 590 773 > > ##--- an extreme unimodal case -- i.e. very small dip(): > set.seed(60); x <- rexp(301,1)^3 > hist(x) > (dt.x <- dip.test(x)) Hartigans' dip test for unimodality / multimodality data: x D = 0.0072617, p-value = 1 alternative hypothesis: non-unimodal, i.e., at least bimodal > (dt2 <- dip.test(x, simulate = TRUE)) Hartigans' dip test for unimodality / multimodality with simulated p-value (based on 2000 replicates) data: x D = 0.0072617, p-value = 1 alternative hypothesis: non-unimodal, i.e., at least bimodal > (dt3 <- dip.test(x, simulate = TRUE, B = 10000)) Hartigans' dip test for unimodality / multimodality with simulated p-value (based on 10000 replicates) data: x D = 0.0072617, p-value = 1 alternative hypothesis: non-unimodal, i.e., at least bimodal > stopifnot(dt.x$p.value == 1,## <- gave NA earlier + dt2$p.value == 1, + dt3$p.value == 1) > > > cat('Time elapsed: ', proc.time() - .p0,'\n') # "stats" Time elapsed: 1.136 0.018 1.158 0 0 > > proc.time() user system elapsed 1.765 0.129 1.935 diptest/tests/mechler-ex.Rout.save0000755000175100001440000001055711620431313016754 0ustar hornikusers R version 2.13.1 Patched (2011-08-09 r56694) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-unknown-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(diptest) > ## These are from > ## the 217-readme.doc file that explains the bug fixed by > ## Ferenc Mechler (fmechler@med.cornell.edu). [5/Sep/2002] > ## > ex1 <- c(0.0198, 0.0198, 0.1961, 0.2898, 0.3184, 0.3687, + 0.4336, 0.4987, 0.5661, 0.6530, 0.7476, 0.8555) > > ex2 <- c(0.0198, 0.1961, 0.2898, 0.3184, 0.3687, 0.4336, + 0.4987, 0.5661, 0.6530, 0.7476, 0.8555, 0.9912) > > ## Multiply them by 10000 here: > > (D1 <- dip(10000*ex1, full=TRUE, debug=2)) dip() in C: n = 12; starting with 2N*dip = 1. 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 1, 12]; l_lcm/gcm = ( 6, 3) while(gcm[ix] != lcm[iv]) : L(3,2) --> ix = 2, iv = 3 G(2,3) --> ix = 1, iv = 3 --> ix = 1, iv = 4 --> ix = 1, iv = 5 --> ix = 1, iv = 6 calculating dip .. (dip_l, dip_u) = (2, 1) -> new larger dip 2 (j_best = 2) 'dip': LOOP-BEGIN: 2n*D= 2 [low,high] = [ 4, 9]; l_lcm/gcm = ( 6, 2) while(gcm[ix] != lcm[iv]) : L(2,2) --> ix = 1, iv = 3 L(2,3) --> ix = 1, iv = 4 --> ix = 1, iv = 5 --> ix = 1, iv = 6 Call: dip(x = 10000 * ex1, full.result = TRUE, debug = 2) n = 12. Dip statistic, D_n = 0.08333333 = 2/(2n) Modal interval [xL, xU] = [x[4], x[9]] = [2898, 5661] GCM and LCM have 2 and 6 nodes inside [xL, xU], respectively. > str(D1, digits = 10, vec.len = 12) List of 15 $ call : language dip(x = 10000 * ex1, full.result = TRUE, debug = 2) $ x : num [1:12] 198 198 1961 2898 3184 3687 4336 4987 5661 6530 7476 8555 $ n : int 12 $ dip : num 0.08333333333 $ lo.hi : int [1:2] 4 9 $ ifault : int 0 $ gcm : int [1:2] 9 4 $ lcm : int [1:6] 4 5 6 7 8 9 $ mn : int [1:12] 1 1 1 1 4 4 4 4 4 4 4 4 $ mj : int [1:12] 2 9 6 5 6 7 8 9 10 11 12 12 $ min.is.0 : logi FALSE $ debug : int 2 $ xl : num 2898 $ xu : num 5661 $ full.result: logi TRUE - attr(*, "class")= chr "dip" > > (D2 <- dip(10000*ex2, full=TRUE, debug=2)) dip() in C: n = 12; starting with 2N*dip = 1. 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 1, 12]; l_lcm/gcm = ( 6, 4) while(gcm[ix] != lcm[iv]) : G(3,2) --> ix = 2, iv = 2 G(2,2) --> ix = 1, iv = 2 --> ix = 1, iv = 3 --> ix = 1, iv = 4 --> ix = 1, iv = 5 --> ix = 1, iv = 6 calculating dip .. (dip_l, dip_u) = (1, 1) 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 3, 8]; l_lcm/gcm = ( 6, 2) while(gcm[ix] != lcm[iv]) : L(2,2) --> ix = 1, iv = 3 L(2,3) --> ix = 1, iv = 4 --> ix = 1, iv = 5 --> ix = 1, iv = 6 calculating dip .. (dip_l, dip_u) = (0, 1) 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 3, 5]; l_lcm/gcm = ( 3, 2) while(gcm[ix] != lcm[iv]) : L(2,2) --> ix = 1, iv = 3 calculating dip .. (dip_l, dip_u) = (0, 1) 'dip': LOOP-BEGIN: 2n*D= 1 [low,high] = [ 3, 4]; l_lcm/gcm = ( 2, 2) ** (l_lcm,l_gcm) = (2,2) ==> d := 1 calculating dip .. (dip_l, dip_u) = (0, 0) No improvement in low = 3 nor high = 4 --> END Call: dip(x = 10000 * ex2, full.result = TRUE, debug = 2) n = 12. Dip statistic, D_n = 0.04166667 = 1/(2n) Modal interval [xL, xU] = [x[3], x[4]] = [2898, 3184] GCM and LCM have 2 and 2 nodes inside [xL, xU], respectively. > str(D2, digits = 10, vec.len = 12) List of 15 $ call : language dip(x = 10000 * ex2, full.result = TRUE, debug = 2) $ x : num [1:12] 198 1961 2898 3184 3687 4336 4987 5661 6530 7476 8555 9912 $ n : int 12 $ dip : num 0.04166666667 $ lo.hi : int [1:2] 3 4 $ ifault : int 0 $ gcm : int [1:2] 4 3 $ lcm : int [1:2] 3 4 $ mn : int [1:12] 1 1 2 3 3 3 3 3 3 3 3 3 $ mj : int [1:12] 8 5 4 5 6 7 8 9 10 11 12 12 $ min.is.0 : logi FALSE $ debug : int 2 $ xl : num 2898 $ xu : num 3184 $ full.result: logi TRUE - attr(*, "class")= chr "dip" > diptest/src/0000755000175100001440000000000013021277614012536 5ustar hornikusersdiptest/src/dip.c0000755000175100001440000002307513021277614013470 0ustar hornikusers/* ALGORITHM AS 217 APPL. STATIST. (1985) VOL.34, NO.3 @article{HarP85, author = {P. M. Hartigan}, title = {Computation of the Dip Statistic to Test for Unimodality}, year = 1985, journal = {Applied Statistics}, pages = {320--325}, volume = 34 } @article{HarJH85, author = {J. A. Hartigan and P. M. Hartigan}, title = {The Dip Test of Unimodality}, year = 1985, journal = {Ann. of Statistics}, pages = {70--84}, volume = 13 } Does the dip calculation for an ordered vector X using the greatest convex minorant and the least concave majorant, skipping through the data using the change points of these distributions. It returns the dip statistic 'DIP' and the modal interval (XL, XU). === ====== dip.f -- translated by f2c (version of 22 July 1992 22:54:52). Pretty-Edited and extended (debug argument) by Martin Maechler ETH Seminar fuer Statistik 8092 Zurich SWITZERLAND --------------- Two Bug Fixes: ========= 1) July 30 1994 : For unimodal data, gave "infinite loop" (end of code) 2) Oct 31 2003 : Yong Lu : ")" typo in Fortran gave wrong result (larger dip than possible) in some cases $Id: dip.c,v 1.26 2012/08/13 16:44:11 maechler Exp $ */ #include // for the "registration part": #include #include /* Subroutine */ void diptst(const double x[], const int *n_, double *dip, int *lo_hi, int *ifault, int *gcm, int *lcm, int *mn, int *mj, const int *min_is_0, const int *debug) { #define low lo_hi[0] #define high lo_hi[1] #define l_gcm lo_hi[2] #define l_lcm lo_hi[3] const int n = *n_; int mnj, mnmnj, mjk, mjmjk, ig, ih, iv, ix, i, j, k; double dip_l, dip_u, dipnew; /* Parameter adjustments, so I can do "as with index 1" : x[1]..x[n] */ --mj; --mn; --lcm; --gcm; --x; /*-------- Function Body ------------------------------ */ *ifault = 1; if (n <= 0) return; *ifault = 0; /* Check that X is sorted --- if not, return with ifault = 2*/ *ifault = 2; for (k = 2; k <= n; ++k) if (x[k] < x[k - 1]) return; *ifault = 0; /* Check for all values of X identical, */ /* and for 1 <= n < 4. */ /* LOW contains the index of the current estimate of the lower end of the modal interval, HIGH contains the index for the upper end. */ low = 1; high = n; /*-- IDEA: *xl = x[low]; *xu = x[high]; --*/ /* M.Maechler -- speedup: it saves many divisions by n when we just work with * (2n * dip) everywhere but the very end! */ *dip = (*min_is_0) ? 0. : 1.; if (n < 2 || x[n] == x[1]) goto L_END; if(*debug) Rprintf("dip() in C: n = %d; starting with 2N*dip = %g.\n", n, *dip); /* Establish the indices mn[1..n] over which combination is necessary for the convex MINORANT (GCM) fit. */ mn[1] = 1; for (j = 2; j <= n; ++j) { mn[j] = j - 1; while(1) { mnj = mn[j]; mnmnj = mn[mnj]; if (mnj == 1 || ( x[j] - x[mnj]) * (mnj - mnmnj) < (x[mnj] - x[mnmnj]) * (j - mnj)) break; mn[j] = mnmnj; } } /* Establish the indices mj[1..n] over which combination is necessary for the concave MAJORANT (LCM) fit. */ mj[n] = n; for (k = n - 1; k >= 1; k--) { mj[k] = k + 1; while(1) { mjk = mj[k]; mjmjk = mj[mjk]; if (mjk == n || ( x[k] - x[mjk]) * (mjk - mjmjk) < (x[mjk] - x[mjmjk]) * (k - mjk)) break; mj[k] = mjmjk; } } /* ----------------------- Start the cycling. ------------------------------- */ LOOP_Start: /* Collect the change points for the GCM from HIGH to LOW. */ gcm[1] = high; for(i = 1; gcm[i] > low; i++) gcm[i+1] = mn[gcm[i]]; ig = l_gcm = i; // l_gcm == relevant_length(GCM) ix = ig - 1; // ix, ig are counters for the convex minorant. /* Collect the change points for the LCM from LOW to HIGH. */ lcm[1] = low; for(i = 1; lcm[i] < high; i++) lcm[i+1] = mj[lcm[i]]; ih = l_lcm = i; // l_lcm == relevant_length(LCM) iv = 2; // iv, ih are counters for the concave majorant. if(*debug) { Rprintf("'dip': LOOP-BEGIN: 2n*D= %-8.5g [low,high] = [%3d,%3d]", *dip, low,high); if(*debug >= 3) { Rprintf(" :\n gcm[1:%d] = ", l_gcm); for(i = 1; i <= l_gcm; i++) Rprintf("%d%s", gcm[i], (i < l_gcm)? ", " : "\n"); Rprintf(" lcm[1:%d] = ", l_lcm); for(i = 1; i <= l_lcm; i++) Rprintf("%d%s", lcm[i], (i < l_lcm)? ", " : "\n"); } else { // debug <= 2 : Rprintf("; l_lcm/gcm = (%2d,%2d)\n", l_lcm,l_gcm); } } /* Find the largest distance greater than 'DIP' between the GCM and * the LCM from LOW to HIGH. */ // FIXME: should provide LDOUBLE or something like it long double d = 0.;// <<-- see if this makes 32-bit/64-bit difference go.. if (l_gcm != 2 || l_lcm != 2) { if(*debug) Rprintf(" while(gcm[ix] != lcm[iv]) :%s", (*debug >= 2) ? "\n" : " "); do { /* gcm[ix] != lcm[iv] (after first loop) */ long double dx; int gcmix = gcm[ix], lcmiv = lcm[iv]; if (gcmix > lcmiv) { /* If the next point of either the GCM or LCM is from the LCM, * calculate the distance here. */ int gcmi1 = gcm[ix + 1]; dx = (lcmiv - gcmi1 + 1) - ((long double) x[lcmiv] - x[gcmi1]) * (gcmix - gcmi1)/(x[gcmix] - x[gcmi1]); ++iv; if (dx >= d) { d = dx; ig = ix + 1; ih = iv - 1; if(*debug >= 2) Rprintf(" L(%d,%d)", ig,ih); } } else { /* If the next point of either the GCM or LCM is from the GCM, * calculate the distance here. */ int lcmiv1 = lcm[iv - 1]; /* Fix by Yong Lu {symmetric to above!}; original Fortran: only ")" misplaced! :*/ dx = ((long double)x[gcmix] - x[lcmiv1]) * (lcmiv - lcmiv1) / (x[lcmiv] - x[lcmiv1])- (gcmix - lcmiv1 - 1); --ix; if (dx >= d) { d = dx; ig = ix + 1; ih = iv; if(*debug >= 2) Rprintf(" G(%d,%d)", ig,ih); } } if (ix < 1) ix = 1; if (iv > l_lcm) iv = l_lcm; if(*debug) { if(*debug >= 2) Rprintf(" --> ix = %d, iv = %d\n", ix,iv); else Rprintf("."); } } while (gcm[ix] != lcm[iv]); if(*debug && *debug < 2) Rprintf("\n"); } else { /* l_gcm or l_lcm == 2 */ d = (*min_is_0) ? 0. : 1.; if(*debug) Rprintf(" ** (l_lcm,l_gcm) = (%d,%d) ==> d := %g\n", l_lcm, l_gcm, (double)d); } if (d < *dip) goto L_END; /* Calculate the DIPs for the current LOW and HIGH. */ if(*debug) Rprintf(" calculating dip .."); int j_best, j_l = -1, j_u = -1; /* The DIP for the convex minorant. */ dip_l = 0.; for (j = ig; j < l_gcm; ++j) { double max_t = 1.; int j_ = -1, jb = gcm[j + 1], je = gcm[j]; if (je - jb > 1 && x[je] != x[jb]) { double C = (je - jb) / (x[je] - x[jb]); for (int jj = jb; jj <= je; ++jj) { double t = (jj - jb + 1) - (x[jj] - x[jb]) * C; if (max_t < t) { max_t = t; j_ = jj; } } } if (dip_l < max_t) { dip_l = max_t; j_l = j_; } } /* The DIP for the concave majorant. */ dip_u = 0.; for (j = ih; j < l_lcm; ++j) { double max_t = 1.; int j_ = -1, jb = lcm[j], je = lcm[j + 1]; if (je - jb > 1 && x[je] != x[jb]) { double C = (je - jb) / (x[je] - x[jb]); for (int jj = jb; jj <= je; ++jj) { double t = (x[jj] - x[jb]) * C - (jj - jb - 1); if (max_t < t) { max_t = t; j_ = jj; } } } if (dip_u < max_t) { dip_u = max_t; j_u = j_; } } if(*debug) Rprintf(" (dip_l, dip_u) = (%g, %g)", dip_l, dip_u); /* Determine the current maximum. */ if(dip_u > dip_l) { dipnew = dip_u; j_best = j_u; } else { dipnew = dip_l; j_best = j_l; } if (*dip < dipnew) { *dip = dipnew; if(*debug) Rprintf(" -> new larger dip %g (j_best = %d)\n", dipnew, j_best); } else if(*debug) Rprintf("\n"); /*--- The following if-clause is NECESSARY (may loop infinitely otherwise)! --- Martin Maechler, Statistics, ETH Zurich, July 30 1994 ---------- */ if (low == gcm[ig] && high == lcm[ih]) { if(*debug) Rprintf("No improvement in low = %ld nor high = %ld --> END\n", low, high); } else { low = gcm[ig]; high = lcm[ih]; goto LOOP_Start; /* Recycle */ } /*---------------------------------------------------------------------------*/ L_END: /* do this in the caller : * *xl = x[low]; *xu = x[high]; * rather return the (low, high) indices -- automagically via lo_hi[] */ *dip /= (2*n); return; } /* diptst */ #undef low #undef high //----------------- Registration <==> ../NAMESPACE #define CDEF(name) {#name, (DL_FUNC) &name, sizeof(name ## _t)/sizeof(name ## _t[0]), name ##_t} #define CALLDEF(name, n) {#name, (DL_FUNC) &name, n} // void diptst(double *x, int *n_, // double *dip, int *lo_hi, int *ifault, // int *gcm, int *lcm, int *mn, int *mj, // int *min_is_0, int *debug) static R_NativePrimitiveArgType diptst_t[] = { REALSXP, INTSXP, /* dip: */ REALSXP, INTSXP, INTSXP, /* gcm: */ INTSXP, INTSXP, INTSXP, INTSXP, /* min_is_0:*/ LGLSXP, INTSXP }; static const R_CMethodDef CEntries[] = { CDEF(diptst), {NULL, NULL, 0} }; /* static R_CallMethodDef CallEntries[] = { */ /* CALLDEF(sinc_c, 1), */ /* {NULL, NULL, 0} */ /* }; */ /** * register routines * @param dll pointer * @return none * @author Martin Maechler */ void #ifdef HAVE_VISIBILITY_ATTRIBUTE __attribute__ ((visibility ("default"))) #endif R_init_diptest(DllInfo *dll) { R_registerRoutines(dll, CEntries, NULL, NULL, NULL); /* R_registerRoutines(dll, CEntries, CallEntries, NULL, NULL); */ R_useDynamicSymbols(dll, FALSE); } diptest/NAMESPACE0000755000175100001440000000024212012212714013154 0ustar hornikusersuseDynLib(diptest, .registration=TRUE)# <--> src/dip.c 2nd part export(dip) export(dip.test) ## export(aLine, getCM) S3method(print, dip) S3method(plot, dip) diptest/data/0000755000175100001440000000000012534675430012666 5ustar hornikusersdiptest/data/qDiptab.R0000755000175100001440000000006712006464550014374 0ustar hornikusersqDiptab <- diptest:::rdRDS("extraData", "qDiptab.rds") diptest/data/statfaculty.R0000755000175100001440000000033407704461027015355 0ustar hornikusersstatfaculty <- c(30,33,35,36,37,37,39,39,39,39,39,40,40,40,40,41,42,43,43,43,44,44,45,45,46, 46,47,47,48,48,48,49,50,50,51,52,52,53,53,53,53,53,54,54,57,57,59,60,60,60, 61,61,61,61,62,62,62,62,63,66,70,72,72) diptest/data/exHartigan.R0000755000175100001440000000025711564531142015103 0ustar hornikusersmessage("'exHartigan' data is identical to 'statfaculty' and hence deprecated.", "\n Use the 'statfaculty' instead") source("statfaculty.R") exHartigan <- statfaculty diptest/R/0000755000175100001440000000000012534675430012156 5ustar hornikusersdiptest/R/dipTest.R0000755000175100001440000000346312365670043013723 0ustar hornikusers##' also called from ../data/qDiptab.R : if(getRversion() < "2.13.0") { rdRDS <- function(..., package = "diptest") .readRDS(system.file(..., package=package)) } else rdRDS <- function(..., package = "diptest") readRDS(system.file(..., package=package, mustWork=TRUE)) dip.test <- function(x, simulate.p.value = FALSE, B = 2000) { DNAME <- deparse(substitute(x)) x <- sort(x[complete.cases(x)]) stopifnot(is.numeric(x)) n <- length(x) # *is* integer D <- dip(x) method <- "Hartigans' dip test for unimodality / multimodality" if(n <= 3) { P <- 1 } else if(simulate.p.value) { method <- paste(method, "with simulated p-value\n\t (based on", B, "replicates)") P <- mean(D <= replicate(B, dip(runif(n)))) } else { ## Long "codetools-compatible" way of data(qDiptab) : qDiptab <- rdRDS("extraData", "qDiptab.rds") dn <- dimnames(qDiptab) max.n <- max(nn <- as.integer(dn[["n"]])) P.s <- as.numeric(dn[["Pr"]]) if(n > max.n) { ## extrapolate, or rather just use the last n as == "asymptotic" message("n = ",n," > max_n{n in table} = ",max.n, " -- using that as asymptotic value.") n1 <- n0 <- max.n i2 <- i.n <- length(nn) f.n <- 0 } else { n0 <- nn[i.n <- findInterval(n, nn)] n1 <- nn[(i2 <- i.n +1)] f.n <- (n - n0)/(n1 - n0)# in [0, 1] } ## Now "find" y-interval: y.0 <- sqrt(n0)* qDiptab[i.n, ] y.1 <- sqrt(n1)* qDiptab[i2 , ] sD <- sqrt(n) * D P <- 1 - approx(y.0 + f.n*(y.1 - y.0), P.s, rule = 2,# <- [min, max] xout = sD)[["y"]] } structure(list(statistic = c(D = D), p.value = P, nobs = n, alternative = "non-unimodal, i.e., at least bimodal", method = method, data.name = DNAME), class = "htest") } diptest/R/dip.R0000755000175100001440000001126412475557151013067 0ustar hornikusers### S-interface to Hartigan's algorithm for "The dip test for unimodality" ### ### Beginning: Dario Ringach ### Rest: Martin Maechler dip <- function(x, full.result = FALSE, min.is.0 = FALSE, debug = FALSE) { allRes <- (!is.logical(rFull <- full.result)) if(allRes) { if(full.result %in% c("all")) rFull <- TRUE else stop(gettextf("'full.result' = \"%s\"' is not valid", full.result)) } if(rFull) cl <- match.call() if(is.unsorted(x)) x <- sort(x, method="quick") n <- as.integer(length(x)) r <- .C(diptst, x = as.double(x), n = n, dip = double(1), lo.hi = integer(4), ifault= integer(1), gcm = integer(n), lcm = integer(n), mn = integer(n), mj = integer(n), min.is.0 = as.logical(min.is.0), debug = as.integer(debug)# FALSE/TRUE or 2, 3, ... )[if(rFull) TRUE else "dip"] if(rFull) { l.GL <- r$lo.hi[3:4] length(r$gcm) <- l.GL[1] length(r$lcm) <- l.GL[2] length(r$lo.hi) <- 2L u <- x[r$lo.hi] structure(class = "dip", c(list(call = cl), r, list(xl = u[1], xu = u[2], full.result=full.result), if(allRes) getCM(r$mn, r$mj, n))) } else r[[1]] } getCM <- function(mn, mj, n = length(mn)) { stopifnot(length(mn) <= n, length(mj) <= n) # currently '=='... ## First recover "the full GCM / LCM" - by repeating what happened in C ## in the first "loop" : low <- 1L ; high <- n gcm <- lcm <- integer(n) # pre-allocate! {maybe smaller ?} ## Collect the change points for the GCM from HIGH to LOW. */ gcm[i <- 1L] <- high while(gcm[i] > low) gcm[(i <- i+1L)] <- mn[gcm[i]] length(gcm) <- i ## Collect the change points for the LCM from LOW to HIGH. */ lcm[i <- 1L] <- low while(lcm[i] < high) lcm[(i <- i+1L)] <- mj[lcm[i]] length(lcm) <- i list(GCM = gcm, LCM = lcm) } print.dip <- function(x, digits = getOption("digits"), ...) { stopifnot(is.integer(n <- x$n), is.numeric(D <- x$dip), length(lh <- x$lo.hi) == 2) cat("\nCall:\n", paste(deparse(x$call), sep = "\n", collapse = "\n"), "\n\n", sep = "") xLU.c <- sapply(x$x[lh], formatC, digits=digits, width=1) cat("n = ", n,". Dip statistic, D_n = ", format(D, digits=digits)," = ", format(2*n* D, digits=digits),"/(2n)\n", sprintf(" Modal interval [xL, xU] = [x[%d], x[%d]] = [%s, %s]\n", lh[1], lh[2], xLU.c[1], xLU.c[2]), sprintf(" GCM and LCM have %d and %d nodes inside [xL, xU], respectively", ## 3 5 7 9 1 3 5 7 length(x$gcm), length(x$lcm)), if(x$full.result == "all") sprintf(", and\n%17s %d and %d nodes in [x_1, x_n].\n", "", length(x$GCM), length(x$LCM)) else ".\n", sep="") invisible(x) } aLine <- function(r.dip, lType = c("gcm","lcm","GCM","LCM"), type = "b", col="red3", lwd=1.5, ...) { lType <- match.arg(lType) stopifnot(is.numeric(x <- r.dip$x), is.integer(r.dip$n), is.integer(i <- r.dip[[lType]]) # 'gcm' or 'lcm' or component ) e <- if(lType %in% c("gcm","GCM")) .01*min(diff(unique(x))) else 0 i <- i[i != 0] lines(x[i], ecdf(x)(x[i] - e), type=type, col=col, lwd=lwd, ...) } plot.dip <- function(x, do.points=(n < 20), ## <- plot.stepfun() colG="red3", colL="blue3", colM="forest green", col.points=par("col"), col.hor=col.points, ## <- plot.stepfun(): doModal=TRUE, doLegend=TRUE, ...) { stopifnot(is.integer(n <- x$n), is.numeric(D <- x$dip), length(lh <- x$lo.hi) == 2) Fn <- ecdf(x$x) ## and now manipulate the call such that it's plotted nicely cl <- x$call[1:2] cl[[1]] <- as.name("ecdf") ; names(cl)[2] <- "" attr(Fn, "call") <- cl chD <- formatC(D, digits=pmax(3, getOption("digits")-2)) tit <- bquote("Dip" ~~ {D[n] == D[.(n)]} == .(chD)) plot(Fn, do.points=do.points, col.points=col.points, col.hor=col.hor, verticals=TRUE, col.vert = "sky blue", lwd=2, ...) title(tit, adj = 0, line = 1.25) aLine(x, "gcm", col=colG) aLine(x, "lcm", col=colL) if(doCM.2 <- (x$full.result == "all")) { aLine(x, "GCM", col=colG, lty=5) aLine(x, "LCM", col=colL, lty=5) } if(doModal) { x12 <- x$x[lh] abline(v= x12, col = colM, lty = 2) op <- par(mgp = c(3, 1/16, 0))# should not need on.exit(par(op)) here .. axis(3, at=x12, labels = expression(x[L], x[U]), tick=FALSE, col.axis = colM) par(op) } if(doLegend) { txt <- c("greatest convex minorant GCM", ### make sure have *no* [TAB] in next string ! "least concave majorant LCM") t1 <- paste(txt," in [xL, xU]") legend("topleft", bty = "n", if(doCM.2) c(t1, txt) else t1, lwd=1.5, col = c(colG, colL), lty= if(doCM.2) c(1,1,5,5) else 1) } invisible() } diptest/vignettes/0000755000175100001440000000000013021277614013757 5ustar hornikusersdiptest/vignettes/diptest-issues.Rnw0000755000175100001440000003351212534667540017454 0ustar hornikusers%\documentclass[article]{jss} %% -- $Id: diptest-issues.Rnw,v 1.9 2011/08/10 14:04:29 maechler Exp maechler $ \documentclass[nojss,article]{jss} % ----- for the package-vignette, don't use JSS logo, etc % % \author{Martin Maechler\\ Seminar f\"ur Statistik \\ ETH Zurich, \ Switzerland % \\\email{maechler@stat.math.ethz.ch}} \author{Martin M\"achler \\ ETH Zurich} \title{Dip Test Distributions, P-values, and other Explorations} % \def\mythanks{a version of this paper, for \pkg{nacopula} 0.4\_4, has been published % in JSS, \url{http://www.jstatsoft.org/v39/i09}.} %% for pretty printing and a nice hypersummary also set: \Plainauthor{Martin M\"achler} %% comma-separated \Plaintitle{Dip Test Distributions, P-values, and other Explorations} % \Shorttitle{} %\date{April 2009 ({\tiny typeset on \tiny\today})} %%\VignetteIndexEntry{Dip Test Distributions, P-values, and other Explorations} %%\VignetteDepends{diptest} \SweaveOpts{engine=R,keep.source=TRUE,strip.white=true} % ^^^^^^^^^^^^^^^^ \SweaveOpts{eps=FALSE,pdf=TRUE,width=7,height=4} %% an abstract and keywords \Abstract{ ... % FIXME ... % FIXME } % \Keywords{MPFR, Abitrary Precision, Multiple Precision Floating-Point, R} %% at least one keyword must be supplied %% publication information %% NOTE: Typically, this can be left commented and will be filled out by the technical editor %% \Volume{13} %% \Issue{9} %% \Month{September} %% \Year{2004} %% \Submitdate{2004-09-29} %% \Acceptdate{2004-09-29} %% The address of (at least) one author should be given %% in the following format: \Address{ Martin M\"achler\\ Seminar f\"ur Statistik, HG G~16\\ ETH Zurich\\ 8092 Zurich, Switzerland\\ E-mail: \email{maechler@stat.math.ethz.ch}\\ URL: \url{http://stat.ethz.ch/people/maechler} } %% It is also possible to add a telephone and fax number %% before the e-mail in the following format: %% Telephone: +43/1/31336-5053 %% Fax: +43/1/31336-734 %% for those who use Sweave please include the following line (with % symbols): %% MM: this is "substituted" by jss.cls: %% need no \usepackage{Sweave.sty} % \usepackage{myVignette} % \usepackage{fullpage}% save trees ;-) --- FIXME use {geometry} package % \usepackage[authoryear,round,longnamesfirst]{natbib} % \bibliographystyle{plainnat} % %% Marius' packages \usepackage[american]{babel}%for American English % \usepackage{microtype}%for character protrusion and font expansion (only with pdflatex) \usepackage{amsmath}%sophisticated mathematical formulas with amstex (includes \text{}) \usepackage{mathtools}%fix amsmath deficiencies \usepackage{amssymb}%sophisticated mathematical symbols with amstex (includes \mathbb{}) % \usepackage{amsthm}%theorem environments % \usepackage{bm}%for bold math symbols: \bm (= bold math) % %NON-STANDARD:\RequirePackage{bbm}%only for indicator functions % \usepackage{enumitem}%for automatic numbering of new enumerate environments % \usepackage[ % format=hang, % % NOT for JSS: labelsep=space, % justification=justified, % singlelinecheck=false%, % % NOT for JSS: labelfont=bf % ]{caption}%for captions % \usepackage{tikz}%sophisticated graphics package % \usepackage{tabularx}%for special table environment (tabularx-table) % \usepackage{booktabs}%for table layout % This is already in jss above -- but withOUT the fontsize=\small part !! \DefineVerbatimEnvironment{Sinput}{Verbatim}{fontsize=\small,fontshape=sl} \DefineVerbatimEnvironment{Soutput}{Verbatim}{fontsize=\small} \DefineVerbatimEnvironment{Scode}{Verbatim}{fontsize=\small,fontshape=sl} % but when submitting, do get rid of too much vertical space between R % input & output, i.e. between Sinput and Soutput: \fvset{listparameters={\setlength{\topsep}{0pt}}}% !! quite an effect! %% % \newcommand*{\R}{\proglang{R}}%{\textsf{R}} \newcommand*{\Arg}[1]{\texttt{\itshape $\langle$#1$\rangle$}} \newcommand*{\file}[1]{{`\normalfont\texttt{#1}'}} \newcommand*{\eps}{\varepsilon} % %% Probability P[.], Expectation E[.] etc \makeatletter %% == subsection of our flexible-style "texab.sty" : \newcommand{\@pkl}{[} % Probability Klammer links \newcommand{\@pkr}{]} \newcommand{\@ekl}{[} % Erwartungswert Klammer links \newcommand{\@ekr}{]} % Erwartungswert Klammer rechts \DeclareMathOperator{\PRSymbol}{P} % Next line (\makeright): if #1 == \left then \right #2 else #1 #2 \newcommand{\makeright}[2]{\ifx#1\left\right#2\else#1#2\fi} %% the real commands \newcommand{\PR}[2][\left] {\PRSymbol #1\@pkl #2 \makeright{#1}{\@pkr}} \newcommand{\ERW}[2][\left] {\ERWSymbol #1\@ekl #2 \makeright{#1}{\@ekr}} \makeatother \newcommand{\isD}{\ {\stackrel{\mathcal{D}}{=}}\ \ } \newcommand*{\iid}{\mbox{ i.i.d. }} % \begin{document} \setkeys{Gin}{width=\textwidth} % Manuel has \setlength{\abovecaptionskip}{-5pt} % %% include your article here, just as usual %% Note that you should use the \pkg{}, \proglang{} and \code{} commands. % \section[About Java]{About \proglang{Java}} %% Note: If there is markup in \(sub)section, then it has to be escape as above. %% Note: These are explained in '?RweaveLatex' : \begin{footnotesize} <>= options(SweaveHooks= list(fig=function() par(mar=c(5.1, 4.1, 1.1, 2.1))), width = 75, digits = 7, # <-- here, keep R's default! prompt = "R> ", # <- "yuck!" - required by JSS continue=" ") set.seed(47) Sys.setenv(LANGUAGE = "en") if(.Platform$OS.type != "windows") Sys.setlocale("LC_MESSAGES","C") ## In order to save() and load() expensive results thisDir <- system.file('doc', package='diptest') xtraDir <- if(Sys.getenv("USER") == "maechler") "~/R/Pkgs/diptest/stuff" else thisDir res1.file <- file.path(thisDir, "aggr_results.Rdata") <>= if(nzchar(Sys.getenv("R_MM_PKG_CHECKING"))) print( .libPaths() ) @ \end{footnotesize} % \maketitle % \begin{abstract} % \end{abstract} \section[Introduction]{Introduction}% \small~\footnote{\mythanks}} \label{sec:Intro} %% MM FIXME: Need notation $D_n :=$\texttt{dip( runif(n) )}; but more generally, \begin{equation} \label{eq:Dn.F} D_n(F) := D(X_1, X_2, \dots, X_n), \mbox{ \ \ \texttt{where} } X_i \iid, X_i \sim F. \end{equation} \citet{HarJH85} in their ``seminal'' paper on the dip statistic $D_n$ already proved that $ \sqrt{n} \; D_n$ converges in distribution, i.e., \begin{equation} \label{eq:D.infty} \lim_{n\to\infty}\sqrt{n} \; D_n \isD D_\infty. \end{equation} A considerable part of this paper is devoted to explore the distribution of $D_\infty$. \bigskip \section[History of the diptest package]{History of the \texttt{diptest} \textsf{R} package} \citet{HarP85} published an implementation in Fortran of a concrete algorithm, % ALGORITHM AS 217 APPL. STATIST. (1985) VOL.34, NO.3 where the code was also made available on Statlib\footnote{Statlib is now a website, of course, \url{http://lib.stat.cmu.edu/}, but then was \emph{the} preferred way for distributing algorithms for statistical computing, available years before the existence of the WWW, and entailing e-mail and (anonymous) FTP} On July 28, 1994, Dario Ringach, then at NY University, asked on Snews (the mailing list for S and S-plus users) about distributions and was helped by me and then about \texttt{dyn.load} problems, again helped by me. Subsequently he provided me with S-plus code which interfaced to (a \texttt{f2c}ed version of) Hartigan's Fortran code, for computing the dip statistic. and ended the (then private) e-mail with \begin{quotation} I am not going to have time to set this up for submission to StatLib. If you want to do it, please go ahead. Regards, Dario \end{quotation} - several important bug fixes; last one Oct./Nov.~2003 However, the Fortran code file \url{http://lib.stat.cmu.edu/apstat/217}, was last changed {Thu 04 Aug 2005 03:43:28 PM CEST}. We have some results of the dip.dist of \emph{before} the bug fix; notably the ``dip of the dip'' probabilities have changed considerably!! - see rcs log of ../../src/dip.c \section{21st Century Improvement of Hartigan$^2$'s Table} (( Use listing package (or so to more or less ``cut \& paste'' the nice code in \texttt{../../stuff/new-simul.Rout-1e6} )) \section{The Dip in the Dip's Distribution} \label{sec:dip_dip} We have found empirically that the dip distribution itself starts with a ``dip''. Specifically, the minimal possible value of $D_n$ is $\frac{1}{2n}$ \emph{and} the probability of reaching that value, \begin{equation} \label{eq:P.Dn_min} \PR{D_n = \frac{1}{2n}}, \end{equation} is large for small $n$. E.g., consider an approximation of the dip distribution for $n=5$, <>= require("diptest") # after installing it .. D5 <- replicate(10000, dip(runif(5))) hist(D5, breaks=128, main = "Histogram of replicate(10'000, dip(runif(5))))") @ which looks as if there was a bug in the software --- but that look is misleading! Note how the phenomenon is still visible for $n=8$, <>= D8 <- replicate(10000, dip(runif(8))) hist(D8, breaks=128, main = "Histogram of replicate(10'000, dip(runif(8))))") @ Note that there is another phenomenon, in addition to the point mass at $1/(2n)$, particularly visible, if we use \emph{many} replicates, <>= set.seed(11) n <- 11 B.s11 <- 500000 D11 <- replicate(B.s11, dip(runif(n))) <<2nd-small-sample-phenomen--n-eq-11, echo=false>>= if(file.exists(ff <- file.path(thisDir, "hist-D11.rda"))) { load(ff) } else { ## takes a few minutes <> hD11 <- hist(D11, breaks=1e-6+(63:298)/(2*11*64), plot=FALSE) save(hD11, n, B.s11, file= ff) } <<2nd-small-sample-phenomen--n-eq-11, echo=false, fig=true>>= B.str <- format(B.s11, sci=FALSE, big.mark="'") plot(hD11, main = "", ## main = sprintf("Histogram of replicate(%s, dip(runif(%d)))", B.str, n), border=NA, col="dark gray", xlab = substitute("Dip" ~~ D[.N.](U(group("[",list(0,1),"]"))), list(.N. = n))) title(xlab= substitute(B == .B.SIM. ~ "replicates", list(.B.SIM. = B.str)), adj = .88) lcol <- adjustcolor("orange4", 0.4) abline(v = (1:3)/(2*n), col=lcol, lty=3, lwd=2) axis(1, pos=0, at = (1:3)/(2*n), labels = expression(1/22, 2/22, 3/22), col=lcol, col.axis=lcol) @ FIXME:\\ use \file{../../stuff/sim-minProb.R} \\ and \file{../../stuff/minProb-anal.R} Further, it can be seen that the \emph{maximal} dip statistic is $\frac 1 4 = 0.25$ and this upper bound can be reached simply (for even $n$) using the the data $(0,0,\dots,0, \; 1, 1,\dots,1)$, a bi-point mass with equal mass at both points. \section{P-values for the Dip Test} \label{sec:Pvals} Note that it is not obvious how to compute $p$-values for ``the dip test'', as that means determining the distribution of the test statistic, i.e., $D_n$ under the null hypothesis, but a natural null, $H_o: F \in \{F \mathrm{cadlag} \mid f := \frac d{dx} F is unimodal \}$ is too large. Hartigans'(1985) argued for using the uniform $U[0,1]$ i.e., $F'(x) = f(x)= \mathbf{1}_{[0,1]}(x) = [0 \le x \le 1]$ (Iverson bracket) instead, even though they showed that it is not quite the ``least favorable'' one. Following Hartigans', we will define the $p$-value of an observed $d_n$ as \begin{equation} \label{eq:Pval} P_{d_n} := \PR{D_n \ge d_n} := \PR{\mathrm{dip}(U_1,\dots,U_n) \ge d_n}, \ \ \mathrm{where} \ U_i \sim U[0,1], \ \, \iid \end{equation} \subsection{Interpolating the Dip Table} \label{sec:interpol} Because of the asymptotic distribution, $ \lim_{n\to\infty}\sqrt{n} \; D_n \isD D_\infty$, it is makes sense to consider the ``$\sqrt{n} D_n$''--scale, even for finite $n$ values: <>= data(qDiptab) dnqd <- dimnames(qDiptab) (nn. <- as.integer(dnqd[["n"]])) matplot(nn., qDiptab*sqrt(nn.), type ="o", pch=1, cex = 0.4, log="x", xlab="n [log scaled]", ylab = expression(sqrt(n) %*% q[D[n]])) ## Note that 1/2n is the first possible value (with finite mass),, ## clearly visible for (very) small n: lines(nn., sqrt(nn.)/(2*nn.), col=adjustcolor("yellow2",0.5), lwd=3) P.p <- as.numeric(print(noquote(dnqd[["Pr"]]))) ## Now look at one well known data set: D <- dip(x <- faithful$waiting) n <- length(x) points(n, sqrt(n)*D, pch=13, cex=2, col= adjustcolor("blue2",.5), lwd=2) ## a simulated (approximate) $p$-value for D is mean(D <= replicate(10000, dip(runif(n)))) ## ~ 0.002 @ but we can use our table to compute a deterministic (but still approximate, as the table is from simulation too) $p$-value: <>= ## We are in this interval: n0 <- nn.[i.n <- findInterval(n, nn.)] n1 <- nn.[i.n +1] ; c(n0, n1) f.n <- (n - n0)/(n1 - n0)# in [0, 1] ## Now "find" y-interval: y.0 <- sqrt(n0)* qDiptab[i.n ,] y.1 <- sqrt(n1)* qDiptab[i.n+1,] (Pval <- 1 - approx(y.0 + f.n*(y.1 - y.0), P.p, xout = sqrt(n) * D)[["y"]]) ## 0.018095 @ Finally, in May 2011, after several years of people asking for it, I have implemented a \code{dip.test} function which makes use of a --- somewhat more sophisticated --- interpolation scheme like the one above, to compute a $p$-value. As \code{qDiptab} has been based on $10^6$ samples, the interpolation yields accurate $p$-values, unless in very extreme cases. Here is the small ($n=63$) example from Hartigan$^2$, <>= data(statfaculty) dip.test(statfaculty) @ where, from a $p$-value of 8.7\%, we'd conclude that there is not enough evidence against unimodality. \subsection{Asymptotic Dip Distribution} \label{sec:asymp} We have conducted extensive simulations in order to explore the limit distribution of $D_\infty$, i.e., the limit of $\sqrt{n} \; D_n$, (\ref{eq:D.infty}). Our current \R\ code is in \file{ ../../stuff/asymp-distrib.R } but the simulation results (7 Megabytes for each $n$) cannot be assumed to be part of the package, nor maybe even to be simply accessible via the internet. %% is bandwidth a problem ? probably no longer in the near future? %% Maybe \section{Less Conservative Dip Testing} \section{Session Info} <>= toLatex(sessionInfo()) @ \bibliography{diptest} \end{document} diptest/vignettes/myVignette.sty0000755000175100001440000000520511171552644016663 0ustar hornikusers%% originates from ~/R/Pkgs/Matrix/inst/doc/myVignette.sty [April 2009] \RequirePackage{hyperref} \RequirePackage{url} \RequirePackage{amsmath} \RequirePackage{bm}%-> \bm (= bold math) \newcommand{\Slang}{\textsf{S} language} \newcommand{\RR}{\textsf{R}} \newcommand{\email}[1]{\href{mailto:#1}{\normalfont\texttt{#1}}} %- R programming markup \newcommand\code{\bgroup\@codex} \def\@codex#1{{\normalfont\ttfamily\hyphenchar\font=-1 #1}\egroup} \let\env=\code \let\command=\code \newcommand*{\Rfun}[1]{\code{#1()}\index{\RR~function #1}} \newcommand*{\class}[1]{\code{#1}\index{class #1}}% \newcommand*{\pkg}[1]{\code{#1}\index{\RR~package #1}} % \newcommand{\kbd}[1]{{\normalfont\texttt{#1}}} \newcommand{\key}[1]{{\normalfont\texttt{\uppercase{#1}}}} \newcommand\samp{`\bgroup\@noligs\@sampx} \def\@sampx#1{{\normalfont\texttt{#1}}\egroup'} \let\option=\samp \newcommand{\var}[1]{{\normalfont\textsl{#1}}} \newcommand{\file}[1]{{`\normalfont\textsf{#1}'}} \newcommand{\dfn}[1]{{\normalfont\textsl{#1}}} \newcommand{\acronym}[1]{{\normalfont\textsc{\lowercase{#1}}}} \newcommand{\strong}[1]{{\normalfont\fontseries{b}\selectfont #1}} \let\pkg=\strong % \RequirePackage{alltt} \newenvironment{example}{\begin{alltt}}{\end{alltt}} \newenvironment{smallexample}{\begin{alltt}\small}{\end{alltt}} \newenvironment{display}{\list{}{}\item\relax}{\endlist} \newenvironment{smallverbatim}{\small\verbatim}{\endverbatim} % This is already in ``Sweave'' : %% \RequirePackage{fancyvrb} %% \DefineVerbatimEnvironment{Sinput}{Verbatim}{fontsize=\small,fontshape=sl} %% \DefineVerbatimEnvironment{Soutput}{Verbatim}{fontsize=\small} %% \DefineVerbatimEnvironment{Scode}{Verbatim}{fontsize=\small,fontshape=sl} % \newcommand{\FIXME}[1]{\marginpar{ \dots FIXME \emph{#1} \dots}} \newcommand{\TODO}[1]{\par\noindent\textsc{Todo:} \textit{#1}\par} % \newcommand*{\myOp}[1]{{$\left\langle\ensuremath{#1}\right\rangle$}} \newcommand{\noFootnote}[1]{{\small (\textit{#1})}} % %% diptest stuff : % %% Probabily P[.], Expectation E[.] etc %% == subsection of our flexible-style "texab.sty" : \newcommand{\@pkl}{[} % Probability Klammer links \newcommand{\@pkr}{]} \newcommand{\@ekl}{[} % Erwartungswert Klammer links \newcommand{\@ekr}{]} % Erwartungswert Klammer rechts \DeclareMathOperator{\PRSymbol}{P} % Next line (\makeright): if #1 == \left then \right #2 else #1 #2 \newcommand{\makeright}[2]{\ifx#1\left\right#2\else#1#2\fi} %% the real commands \newcommand{\PR}[2][\left] {\PRSymbol #1\@pkl #2 \makeright{#1}{\@pkr}} \newcommand{\ERW}[2][\left] {\ERWSymbol #1\@ekl #2 \makeright{#1}{\@ekr}} \newcommand{\isD}{\ {\stackrel{\mathcal{D}}{=}}\ \ } \newcommand{\iid}{\mbox{ i.i.d. }} diptest/vignettes/diptest.bib0000755000175100001440000000417011172127775016125 0ustar hornikusers@string{AmStat = "The American Statistician"} @string{AnnStat = "Annals of Statistics"} % @string{JASA = "Journal of the American Statistical Association"} @string{AnInStMa = "Annals of the Inst.\ of Stat.\ Math."} @string{JASA = "JASA"} @string{JAppTh = "Journal of Approximation Theory"} @string{JMAA = "Journal of Analysis and Applications"} @string{JRSS = "Journal of the Royal Statistical Society"} %% ALWAYS #~A or #~B! @string{JRSSA = JRSS # "~A, General"} @string{JRSSB = JRSS # "~B"} @string{JRSSC-AS = "Applied Statistics --- " # JRSS # "~C"} @string{NuMath = "Numerische Mathematik"} @string{SIAM = "Society for Industrial and Applied Mathematics"} @string{SSci = "Statistical Science"} @string{StMed = "Statist.\ in Med."}% Statistics in Medicine @string{ScandS = "Scandinavian Journal of Statistics"} @string{JSS = "Journal of Statistical Software"} @string{JSSC = "SIAM Journal on Scientific and Statistical Computing"} % @string{JSSC = "SIAM J. Sci.\ Statist.\ Comput."} @string{JCGS = "Journal of Computational and Graphical Statistics"} % @string{CSDA = "Computational Statistics \& Data Analysis"} @string{CSDA = "Computat.\ Statist.\ Data Anal."} @string{IEEE-ASSP = "IEEE Trans.\ Acoust., Speech, Signal Processing"} % @string{TOMS = "ACM Transactions on Mathematical Software"} % @string{TOMS = "{ACM} Transactions on Mathematical Software (TOMS)"} @string{TOMS = "ACM Trans.\ Math.\ Software"} @string{ETH = "Swiss Federal Institute of Technology (ETH)"} @string{UWstat = "Department of Statistics, University of Washington"} @string{Wiley = "Wiley"} @string{NY = "N.~Y."} @article{HarJH85, Author = {J. A. Hartigan and P. M. Hartigan}, Title = {The Dip Test of Unimodality}, Year = 1985, Journal = AnnStat, Volume = 13, Pages = {70--84}, Keywords = {Multimodality; Isotonic regression; Empirical distribution} } @article{HarP85, author = {P. M. Hartigan}, title = {Computation of the Dip Statistic to Test for Unimodality}, year = 1985, journal = {Applied Statistics}, pages = {320--325}, volume = 34 } %% -- note that ~/bib/master.bib has quite a few more on "modality" testing diptest/MD50000644000175100001440000000334613021322114012247 0ustar hornikusers173bb33ee2a664b85ff6b68747b68ab3 *ChangeLog 96377b6b68b4bd68225b6036f64b4e0a *DESCRIPTION 9ac0d9c3a2ba89913fc454b86c068040 *NAMESPACE bc85d19f5959033951e47ea249c2da4c *R/dip.R d32eb217adaf6a7825f0c4f5bf356a2c *R/dipTest.R 14469c3af43c1e713c1899af0d9208a7 *TODO b85f4b07bfc1f00f3689d5c6660a346d *build/vignette.rds c3674b717423e2c07d5b1c69fe49d7f0 *data/exHartigan.R 454c4a99c0a6f204c9e37926aca9d0aa *data/qDiptab.R 611947623a1a556b4d71062df0872d46 *data/statfaculty.R 1374ca270595d39ef9db5aa7951aa751 *inst/NEWS.Rd 7652b6f9694ee9fcb91c95c683d72878 *inst/doc/diptest-issues.R f08b9057fe89204d8ba200d5e743c688 *inst/doc/diptest-issues.Rnw 1b0d61634ef2e5eb6884f68e9fe3f8fa *inst/doc/diptest-issues.pdf a5f57ba90e25afe0cbcc74feffaadcd1 *inst/doc/diptest.bib 5d29fc6a0de189f54eb7d029105a2416 *inst/doc/hist-D11.rda 6fb477b22fca2a12c156ae27aa81a7de *inst/doc/myVignette.sty 04e348f7ca28fa7c5d6a3e60fe51c0f1 *inst/extraData/qDiptab.rds e55c389d2df19c7408b1f0f3345edcc0 *man/dip.Rd 8defa964dcef404caf90050876427c2d *man/dip.test.Rd ab0b9d226b6cfdae34f946333afd4a4a *man/exHartigan.Rd 138e68b2a4629238259c0672b84e7f99 *man/plot.dip.Rd 18ec7d2e14801719f833d26431a0ccc0 *man/qDiptab.Rd a500c43a3efa88aea2c2ae6ca716856b *man/statfaculty.Rd 6b2c88e9652892a11fa5621b864d2bf5 *src/dip.c de2612bbd44bff04c6cc3afb38281fe6 *tests/ex1.R a601b1ac9be0757a4bb55068e73d2c59 *tests/ex1.Rout.save aed61c181a8fca1547c0b63234c06fbb *tests/mechler-ex.R ec7155d93fb477b8003491a4a9c05f55 *tests/mechler-ex.Rout.save 552400127794e45e18454ffdc84ecf43 *tests/sim1.R 6b96f05babbc4358103c1b6ccaec1bdf *tests/sim1.Rout.save f08b9057fe89204d8ba200d5e743c688 *vignettes/diptest-issues.Rnw a5f57ba90e25afe0cbcc74feffaadcd1 *vignettes/diptest.bib 6fb477b22fca2a12c156ae27aa81a7de *vignettes/myVignette.sty diptest/build/0000755000175100001440000000000013021277614013046 5ustar hornikusersdiptest/build/vignette.rds0000644000175100001440000000036713021277614015413 0ustar hornikusersMn0'$@>d6`Fږ4eɁ $ Z6Tj:̠a*d[wsouv3U0銃6UpO xvt}`Քsdiptest/DESCRIPTION0000755000175100001440000000113613021322114013443 0ustar hornikusersPackage: diptest Version: 0.75-7 Date: 2015-06-07 Title: Hartigan's Dip Test Statistic for Unimodality - Corrected Description: Compute Hartigan's dip test statistic for unimodality / multimodality and provide a test with simulation based p-values, where the original public code has been corrected. Maintainer: Martin Maechler BuildResaveData: no Author: Martin Maechler (originally from Fortran and S-plus by Dario Ringach, NYU.edu) License: GPL (>= 2) NeedsCompilation: yes Packaged: 2016-12-05 14:54:04 UTC; hornik Repository: CRAN Date/Publication: 2016-12-05 18:28:47 diptest/ChangeLog0000755000175100001440000001047312167050144013526 0ustar hornikusers2013-07-09 Martin Maechler * R/dipTest.R (rdRDS): rewrite (R <= 2.13.0) such that CRAN checks are happy. 2012-08-07 Martin Maechler * R/dipTest.R (dip.test): state 'alternative'. 2012-08-02 Martin Maechler * R/dipTest.R (rdRDS): utility to enable pre-R-2.13, also used in * data/qDiptab.R: 2012-04-17 Martin Maechler * DESCRIPTION (Version): 0.75-3, released to CRAN ... * R/dipTest.R (dip.test): more careful with approx() extrapolation. 2011-08-19 Martin Maechler * R/dip.R (plot.dip): cosmetic (to happify CRAN) 2011-08-10 Martin Maechler * inst/doc/diptest-issues.Rnw: at least now mention dip.test(). 2011-08-10 Martin Maechler * DESCRIPTION (Version): 0.75-1, released to CRAN today. * R/dipTest.R (dip.test): use readRDS() instead of data() in the function. 2011-05-25 Martin Maechler * R/dip.R (print.dip, plot.dip): show the extra GCM/LCM's. * man/plot.dip.Rd: document plot.dip() 2011-05-20 Martin Maechler * DESCRIPTION (Version): 0.75-0; not released, just sent to Nick Cox. 2011-05-19 Martin Maechler * R/dipTest.R (dip.test): finally add a dip.test(), with a P-value. 2011-05-17 Martin Maechler * NAMESPACE: start using * data/exHartigan.R: add deprecation message, and use statfaculty. * DESCRIPTION: hence drop 'Lazydata' for now. * man/statfaculty.Rd: also mention 'exHartigan' which is now deprecated. * R/dip.R (dip): new 'min.is.0' argument; store 'call' and return class "dip" when 'full.result' is true. Further, only return the finally effective parts of LCM & GCM. Allow 'debug' to be integer > 1, and support that in (print.dip, plot.dip): methods, notably the plot which draws the LCM and GCM. * src/dip.c (diptst): allow for more debug output; also return the lengths of 'gcm' and 'lcm'. 2011-05-15 Martin Maechler * DESCRIPTION (Version): 0.30-0 * src/dip.c (diptst): simplification: return 1/(2N) for N < 2 or all x[j] identical; instead of zero for N < 4 or all x[] identical. This finally makes dip(x1) == dip(x2) when x1 <- rep(1,n) and x2 <- c(0.999999999, rep(1, n-1)). 2011-05-14 Martin Maechler * inst/doc/diptest-issues.Rnw: finally look into computing P-values from the table. TODO: make into function 2010-08-11 Martin Maechler * DESCRIPTION (Version): 0.25-3 2008-12-22 Martin Maechler * man/dip.Rd: add note and link to qDiptab 2004-08-12 Martin Maechler * DESCRIPTION (Version): 0.25-1 * man/statfaculty.Rd: add missing "{" after "source" 2003-12-03 Martin Maechler * man/qDiptab.Rd: names(dimnames) in example 2003-11-29 Martin Maechler * DESCRIPTION (Date): --> for release * man/qDiptab.Rd: one million simulations! * data/qDiptab.rda: new data from simulation with symmetry fix; the dimnames are now named 'n' and 'Pr'. * man/dip.Rd: describe bug fix 2003-11-13 Martin Maechler * DESCRIPTION (Version): 0.25-0 2003-10-31 Martin Maechler * src/dip.c (diptst): o symmetry fix by Yong Lu -- changes results! (now <= 0.25 !) ================ o speedup by myself: not dividing by N but at the end; o return 2-index into x, instead of (xl,xu) * R/dip.R (dip): new .C() interface * tests/mechler-ex.R: the two examples from Ferenc Mechler's Statlib readme file (on his "fix" to the diptst fortran code). * man/dip.Rd: describe full return list (for full.result = T) 2003-07-14 Martin Maechler * man/qDiptab.Rd: "large" scale simulation * data/qDiptab.rda: table of quantiles 2003-07-11 Martin Maechler * tests/ex1.R: added testing examples; 3 data sets * tests/sim1.R: small simulation (~ as Hartigan) 2001-01-01 Martin Mchler * DESCRIPTION (Version): 0.9-1 added `Maintainer' field diptest/man/0000755000175100001440000000000012534675430012530 5ustar hornikusersdiptest/man/exHartigan.Rd0000755000175100001440000000055111743355551015115 0ustar hornikusers\name{exHartigan} \alias{exHartigan} \title{Hartigan's Artificial n-modal Example Data Set} \description{ 63 (integer) numbers; unimodal or bimodal, that's the question. This is now \emph{deprecated}. Please use \code{\link{statfaculty}} instead! } \examples{ data(exHartigan) plot(dH <- density(exHartigan)) rug(exHartigan)# should jitter } \keyword{data} diptest/man/dip.Rd0000755000175100001440000001357412534667645013621 0ustar hornikusers\name{dip} \alias{dip} \title{Compute Hartigans' Dip Test Statistic for Unimodality} \description{ Computes Hartigans' dip test statistic for testing unimodality, and additionally the modal interval. } \usage{ dip(x, full.result = FALSE, min.is.0 = FALSE, debug = FALSE) } \arguments{ \item{x}{numeric; the data.} \item{full.result}{logical or string; \code{dip(., full.result=TRUE)} returns the full result list; if \code{"all"} it additionally uses the \code{mn} and \code{mj} components to compute the initial GCM and LCM, see below.} \item{min.is.0}{logical indicating if the \bold{min}imal value of the dip statistic \eqn{D_n}{Dn} can be zero or not. Arguably should be set to \code{TRUE} for internal consistency reasons, but is false by default both for continuity and backwards compatibility reasons, see the examples below.} % backcompatibility both with earlier % versions of the \pkg{diptest} package, and with Hartigan's original % implementation.} \item{debug}{logical; if true, some tracing information is printed (from the C routine).} } \value{ depending on \code{full.result} either a number, the dip statistic, or an object of class \code{"dip"} which is a \code{\link{list}} with components \item{x}{the sorted \code{\link{unname}()}d data.} \item{n}{\code{length(x)}.} \item{dip}{the dip statistic} \item{lo.hi}{indices into \code{x} for lower and higher end of modal interval} \item{xl, xu}{lower and upper end of modal interval} \item{gcm, lcm}{(last used) indices for \bold{g}reatest \bold{c}onvex \bold{m}inorant and the \bold{l}east \bold{c}oncave \bold{m}ajorant.} \item{mn, mj}{index vectors of length \code{n} for the GC minorant and the LC majorant respectively.} For \dQuote{full} results of class \code{"dip"}, there are \code{\link{print}} and \code{\link{plot}} methods, the latter with its own \link[=plot.dip]{manual page}. } \note{ For \eqn{n \le 3}{n <= 3} where \code{n <- length(x)}, the dip statistic \eqn{D_n}{Dn} is always the same minimum value, \eqn{1/(2n)}, i.e., there's no possible dip test. Note that up to May 2011, from Hartigan's original Fortran code, \code{Dn} was set to zero, when all \code{x} values were identical. However, this entailed discontinuous behavior, where for arbitrarily close data \eqn{\tilde x}{x~}, \eqn{D_n(\tilde x) = \frac 1{2n}}{Dn(x~) = 1/(2n)}. Yong Lu \email{lyongu+@cs.cmu.edu} found in Oct 2003 that the code was not giving symmetric results for mirrored data (and was giving results of almost 1, and then found the reason, a misplaced \samp{")"} in the original Fortran code. This bug has been corrected for diptest version 0.25-0. Nick Cox (Durham Univ.) said (on March 20, 2008 on the Stata-list):\cr As it comes from a bimodal husband-wife collaboration, the name perhaps should be \emph{\dQuote{Hartigan-Hartigan dip test}}, but that does not seem to have caught on. Some of my less statistical colleagues would sniff out the hegemony of patriarchy there, although which Hartigan is being overlooked is not clear. Martin Maechler, as a Swiss, and politician, would say:\cr Let's find a compromise, and call it \emph{\dQuote{Hartigans' dip test}}, so we only have to adapt orthography (:-). } \references{ P. M. Hartigan (1985) Computation of the Dip Statistic to Test for Unimodality; \emph{Applied Statistics (JRSS C)} \bold{34}, 320--325.\cr Corresponding (buggy!) Fortran code of \sQuote{AS 217} available from Statlib, \url{http://lib.stat.cmu.edu/apstat/217} J. A. Hartigan and P. M. Hartigan (1985) The Dip Test of Unimodality; \emph{Annals of Statistics} \bold{13}, 70--84. } \author{Martin Maechler \email{maechler@stat.math.ethz.ch}, 1994, based on S (S-PLUS) and C code donated from Dario Ringach \email{dario@wotan.cns.nyu.edu} who had applied \command{f2c} on the original Fortran code available from Statlib. In Aug.1993, recreated and improved Hartigans' "P-value" table, which later became \code{\link{qDiptab}}. } \seealso{ \code{\link{dip.test}} to compute the dip \emph{and} perform the unimodality test, based on P-values, interpolated from \code{\link{qDiptab}}; \code{\link{isoreg}} for isotonic regression. } \examples{ data(statfaculty) plot(density(statfaculty)) rug(statfaculty, col="midnight blue"); abline(h=0, col="gray") dip(statfaculty) (dS <- dip(statfaculty, full = TRUE, debug = TRUE)) plot(dS) ## even more output -- + plot showing "global" GCM/LCM: (dS2 <- dip(statfaculty, full = "all", debug = 3)) plot(dS2) data(faithful) fE <- faithful$eruptions plot(density(fE)) rug(fE, col="midnight blue"); abline(h=0, col="gray") dip(fE, debug = 2) ## showing internal work (dE <- dip(fE, full = TRUE)) ## note the print method plot(dE, do.points=FALSE) data(precip) plot(density(precip)) rug(precip, col="midnight blue"); abline(h=0, col="gray") str(dip(precip, full = TRUE, debug = TRUE)) ##----------------- The 'min.is.0' option : --------------------- ##' dip(.) continuity and 'min.is.0' exploration: dd <- function(x, debug=FALSE) { x_ <- x ; x_[1] <- 0.9999999999 * x[1] rbind(dip(x , debug=debug), dip(x_, debug=debug), dip(x , min.is.0=TRUE, debug=debug), dip(x_, min.is.0=TRUE, debug=debug), deparse.level=2) } dd( rep(1, 8) ) # the 3rd one differs ==> min.is.0=TRUE is *dis*continuous dd( 1:7 ) # ditto dd( 1:7, debug=TRUE) ## border-line case .. dd( 1:2, debug=TRUE) ## Demonstrate that 'min.is.0 = TRUE' does not change the typical result: B.sim <- 1000 # or larger D5 <- {set.seed(1); replicate(B.sim, dip(runif(5)))} D5. <- {set.seed(1); replicate(B.sim, dip(runif(5), min.is.0=TRUE))} stopifnot(identical(D5, D5.), all.equal(min(D5), 1/(2*5))) hist(D5, 64); rug(D5) D8 <- {set.seed(7); replicate(B.sim, dip(runif(8)))} D8. <- {set.seed(7); replicate(B.sim, dip(runif(8), min.is.0=TRUE))} stopifnot(identical(D8, D8.)) } \keyword{htest} \keyword{distribution} diptest/man/dip.test.Rd0000755000175100001440000000456512534667642014574 0ustar hornikusers\name{dip.test} \alias{dip.test} \title{Hartigans' Dip Test for Unimodality} \description{ Compute Hartigans' dip statistic \eqn{D_n}{Dn}, and its p-value for the test for unimodality, by interpolating tabulated quantiles of \eqn{\sqrt{n} D_n}{sqrt(n) * Dn}. For \eqn{X_i \sim F, i.i.d.}{X_i ~ F, i.i.d}, the null hypothesis is that \eqn{F} is a unimodal distribution. Consequently, the test alternative is non-unimodal, i.e., at least bimodal. Using the language of medical testing, you would call the test \dQuote{Test for \bold{Multi}modality}. } \usage{ dip.test(x, simulate.p.value = FALSE, B = 2000) } \arguments{ \item{x}{numeric vector; sample to be tested for unimodality.} \item{simulate.p.value}{a logical indicating whether to compute p-values by Monte Carlo simulation.} \item{B}{an integer specifying the number of replicates used in the Monte Carlo test.} } \details{ If \code{simulate.p.value} is \code{FALSE}, the p-value is computed via linear interpolation (of \eqn{\sqrt{n} D_n}{sqrt(n) * Dn}) in the \code{\link{qDiptab}} table. Otherwise the p-value is computed from a Monte Carlo simulation of a uniform distribution (\code{\link{runif}(n)}) with \code{B} replicates. } \value{ A list with class \code{"htest"} containing the following components: \item{statistic}{the dip statistic \eqn{D_n}{Dn}, i.e., \code{\link{dip}(x)}.} \item{p.value}{the p-value for the test, see details.} \item{method}{character string describing the test, and whether Monte Carlo simulation was used.} \item{data.name}{a character string giving the name(s) of the data.} } \seealso{ For goodness-of-fit testing, notably of continuous distributions, \code{\link{ks.test}}. } \references{ see those in \code{\link{dip}}. } \author{Martin Maechler} \note{ see also the package vignette, which describes the procedure in more details. } \examples{ ## a first non-trivial case (d.t <- dip.test(c(0,0, 1,1))) # "perfect bi-modal for n=4" --> p-value = 0 stopifnot(d.t$p.value == 0) data(statfaculty) plot(density(statfaculty)); rug(statfaculty) (d.t <- dip.test(statfaculty)) x <- c(rnorm(50), rnorm(50) + 3) plot(density(x)); rug(x) ## border-line bi-modal ... BUT (most of the times) not significantly: dip.test(x) dip.test(x, simulate=TRUE, B=5000) ## really large n -- get a message dip.test(runif(4e5)) } \keyword{htest} \keyword{distribution} diptest/man/plot.dip.Rd0000755000175100001440000000303011567173666014560 0ustar hornikusers\name{plot.dip} \alias{plot.dip} \title{Plot a dip() Result, i.e., Class "dip" Object} \description{ Plot method for \code{"dip"} objects, i.e., the result of \code{\link{dip}(., full.result=TRUE)} or similar. Note: We may decide to enhance the plot in the future, possibly not entirely back-compatibly. } \usage{ \method{plot}{dip}(x, do.points = (n < 20), colG = "red3", colL = "blue3", colM = "forest green", col.points = par("col"), col.hor = col.points, doModal = TRUE, doLegend = TRUE, \dots) } \arguments{ \item{x}{an \R object of \code{\link{class}} \code{"dip"}, i.e., typically the result of \code{\link{dip}(., full.result= FF)} where \code{FF} is \code{TRUE} or a string such as \code{"all"}.} \item{do.points}{logical indicating if the ECDF plot should include points; passed to \code{\link{plot.ecdf}}.} \item{colG, colL, colM}{the colors to be used in the graphics for the \bold{G}reatest convex minorant, the \bold{L}east concave majorant, and the \bold{M}odal interval, respectively.} \item{col.points, col.hor}{the color of points or horizontal lines, respectively, simply passed to \code{\link{plot.ecdf}}.} \item{doModal}{logical indicating if the modal interval \eqn{[x_L, x_U]}{[xL, xU]} should be shown.} \item{doLegend}{logical indicating if a legend should be shown.} \item{\dots}{further optional arguments, passed to \code{\link{plot.ecdf}}.} } \author{Martin Maechler} \seealso{ \code{\link{dip}}, also for examples; \code{\link{plot.ecdf}}. } \keyword{hplot} diptest/man/statfaculty.Rd0000755000175100001440000000176011743355474015375 0ustar hornikusers\name{statfaculty} \alias{statfaculty} %- uncomment, once exHartigan is defunct: %- \alias{exHartigan} \title{Faculty Quality in Statistics Departments} \docType{data} \usage{ data(statfaculty) } \description{ Faculty quality in statistics departments was assessed as part of a larger study reported by Scully(1982). Accidentally, this is also provided as the \code{exHartigan} (\dQuote{\bold{ex}ample of \bold{Hartigan}s'}) data set. } \format{A numeric vector of 63 (integer) numbers, sorted increasingly, as reported by the reference. } \references{ J. A. Hartigan and P. M. Hartigan (1985) The Dip Test of Unimodality; \emph{Annals of Statistics} \bold{13}, 70--84. } \source{ M. G. Scully (1982) Evaluation of 596 programs in mathematics and physical sciences; \emph{Chronicle Higher Educ.} \bold{25} 5, 8--10. } \examples{ data(statfaculty) plot(dH <- density(statfaculty)) rug(jitter(statfaculty)) data(exHartigan) stopifnot(identical(exHartigan,statfaculty)) } \keyword{datasets} diptest/man/qDiptab.Rd0000755000175100001440000000343512534666774014426 0ustar hornikusers\name{qDiptab} \alias{qDiptab} \title{Table of Quantiles from a Large Simulation for Hartigan's Dip Test} \docType{data} \description{ Whereas Hartigan(1985) published a table of empirical percentage points of the dip statistic (see \code{\link{dip}}) based on N=9999 samples of size \eqn{n} from \eqn{U[0,1]}, our table of empirical quantiles is currently based on N=1'000'001 samples for each \eqn{n}. } \note{ Taking N=1'000'001 ensures that all the \code{\link{quantile}(X, p)} used here are exactly order statistics \code{sort(X)[k]}. } \format{ A numeric matrix %may change: of dimension 17 * 26, where each row corresponds to sample size \eqn{n}, and each column to a probability (percentage) in \eqn{[0,1]}. The dimnames are named \code{n} and \code{Pr} and coercable to these values, see the examples. \code{attr(qDiptab, "N_1")} is \eqn{N - 1}, such that with \code{k <- as.numeric(dimnames(qDiptab)$Pr) * attr(qDiptab, "N_1")}, e.g., \code{qDiptab[n == 15,]} contains exactly the order statistics \eqn{D_{[k]}} (from the \eqn{N+1} simulated values of \code{\link{dip}(U)}, where \code{U <- runif(15)}. } \seealso{\code{\link{dip}}, also for the references; \code{\link{dip.test}()} which performs the hypothesis test, using \code{qDtiptab} (and its null hypothesis of a uniform distribution). } \author{Martin Maechler \email{maechler@stat.math.ethz.ch}, in its earliest form in August 1994. } \examples{ data(qDiptab) str(qDiptab) ## the sample sizes `n' : dnqd <- dimnames(qDiptab) (nn <- as.integer(dnqd $n)) ## the probabilities: P.p <- as.numeric(print(dnqd $ Pr)) ## This is as "Table 1" in Hartigan & Hartigan (1985) -- but more accurate ps <- c(1,5,10,50,90,95,99, 99.5, 99.9)/100 tab1 <- qDiptab[nn <= 200, as.character(ps)] round(tab1, 4) } \keyword{datasets} diptest/.Rinstignore0000755000175100001440000000004111743357020014250 0ustar hornikusersinst/doc/Makefile inst/doc/.*sty