permute/0000755000175100001440000000000012764467475011777 5ustar hornikuserspermute/inst/0000755000175100001440000000000012764367610012742 5ustar hornikuserspermute/inst/NEWS0000644000175100001440000001127412764367501013445 0ustar hornikusers# permute News ## Changes in version 0.9-4 The example in `?check` was made to suppress package startup messages from vegan. ## Changes in version 0.9-3 This release fixed some non-canonical-form CRAN URLs. ## Changes in version 0.9-2 This release was purely to avoid issues with CRAN as a new release of vegan had been released and the example reference material hadn't been updated to match. ## Changes in version 0.9-1 ### General A minor bug fix release to address a single problem. ### Bug Fixes * `shuffleSet()` wasn't returning a matrix if `nset = 1` *and* `allPerms` was invoked because of a low set of possible permutations. [GitHub Issue #19](https://github.com/gavinsimpson/permute/issues/19) ## Changes in version 0.9-0 ### General This is small update to **permute**, focused mainly on ensuring the many combinations of restrictions on permutations allowed by the package work. An extensive test suite has been written which covers ~87% of the package's codebase at the time of release. ### New features * Permutation matrices produced by `shuffleSet()` are now printed in a more compact form. * Better heuristics in `check()` allow for more reliable permutations (i.e. fewer duplicate permutations) when the set is small. This has increased the `minperms` setting. Consequently we generate all possible permutations up to ~500,000 more often as we now randomly sample from the entirely generated set rather than randomly generate permutations. This provides a small performance hit in some rare cases. * `shuffleSet()` has a new argument `quietly = FALSE` which is passed on to `check()`. * A number of bugs were fixed. See the Changelog and the Bug reports on github for details. ### Defunct * `permControl()` and `permuplot()` are defunct and have been removed from the package. ## Changes in version 0.8-0 ### General * Version 0.8-0 represents a major update of **permute**, with some backwards-incompatible changes to the main functions. The main addition is the availability of block-level restrictions on the permutations, which are required for whole- and split-plot designs. ### New features * `how()`, a new function to create permutation designs. This replaces the deprecated function `permControl`. * **permute** gains the addition of true blocking structures with which to restrict the permutations. Blocks sit as the outermost layer of the permutations, and can contain plots which in turn contain samples. In contrasts to plots, blocks are never permuted and samples are never shuffled between blocks. Permutation only ever happens within blocks. To facilitate this, plot-level strata are now specified via `Plots()` instead of via the old `strata` argument of `how()`. Blocks are specified via a new argument `blocks`, which takes a factor variable. * A new suite of extractor and replacement functions is provided with which to interact with permutation designs created by `how(). Extractor functions have names `getFoo()`, where `Foo()` is a component of the design. Replacement functions have names `setFoo`. The replacement function are especially for use by package authors wishing to alter permutation within their functions. The extractor functions are recommended for all users wishing to extract features of the permutation design. * As a convenience for users, the \code{update()} function will now work with objects of classes `"how"`, `"Plots"` or `"Within"` to allow quick updating of features of the permutation design. This approach is intended for interactive use at the top-level and not within functions, where the new `setFoo` replacement functions should be used. * `shuffleSet()` is enhanced in this version. Firstly, the function now returns a classed object which has a `print()` method to allow for compact printing of the design elements used to generate the set of permutations. Second, `shuffleSet()` will sample `nset` permutations from the entire set of permutations should a small number of possible permutations trigger generation of the entire set. This avoids the generation of a set of non-unique permutations. Finally the random seed that generated the set is stored as an attribute. * `allPerms()` no longer assumes that samples are in block and/or plot ordering. * The package vignette is much expanded in this version with new sections on using **permute** within functions that will be of interest to package authors wishing to use **permute** in their packages. ### Deprecated * `permControl()` is deprecated in favour of `how()`. * `permuplot()` is broken and effectively defunct given the changes to the way permutation are defined and the addition of blocks. `permuplot()` is no longer exported from the package namespace. permute/inst/TODO.md0000644000175100001440000000652012406211711014013 0ustar hornikusers# TODO List A TODO list for **permute** - or things I know are broken or needed. * `summary.allPerms` - is not printing the permutation scheme. *Done in 0.7-5* * `print.permControl` - this needs to be updated to new API, and I don't like the `*** Foo ***` headings I used before. *Done in 0.7-3* * Need a way to update the permutation scheme, e.g. when a control object already exists and want to tweak it. Example is in `?allPerms` where I turn mirroring on via ctrl$within$mirror <- TRUE But how? Best idea currently is an `update.permControl` method. The generic is in namespace `stats`. Or a `modify()` function, perhaps coupled with specific replacement functions for certain components. *DONE, in part, in 0.7-5* The matched call is now returned by `how()` and this allows `update()` to do its work with no further effort from me. What isn't so neat is that currently this means you need to type out in full any specification of `within` and `plots` as these take the results of function calls. Hence we have, from `./man/how.Rd` plts <- gl(4,10) blks <- gl(2,20) h1 <- how(within = Within(type = "series", mirror = TRUE), plots = Plots(strata = plts, type = "series"), blocks = blks) ## The design can be updated... ## ... remove the blocking: update(h1, blocks = NULL) ## ... or switch the type of shuffling at a level: update(h1, plots = Plots(strata = plts, type = "none")) Where in the second `update()` the entire `Plots()` call needs to repeated to change just one part, the `type`. This has been tweaked a bit. The second example can now be done via: update(h1, plots = update(getPlots(h1), type = "none")) Here `getPlots(h1)` returns the `plots` component, which too has a `call` component and hence can be `update()`ed, hence the nested calls to `update()`. * `permControl` - deprecate this in favour of `how` as in "how to permute"? *DONE Completed in 0.7-4* * `permuplot` - this may be fundamentally bust - it only worked in the original API and never got updated. Now the API is 2 versions further on! It is also more complex than the original - not sure it'll be easy without a lot of work to visualise all possible schemes. * `check` insists on returning all permutations *without* the observed one. *DONE Completed somewhere, probably when I made observed only work via how()* * The following example from `shuffleSet()` gives same number of permutations via `numPerms()` for both designs; should be fewer if same permutation within each plot. ## 10 random permutations in presence of Plot-level strata plotStrata <- Plots(strata = gl(4,5)) CTRL <- how(plots = plotStrata, within = Within(type = "free")) shuffleSet(20, 10, control = CTRL) ## as above but same random permutation within Plot-level strata CTRL <- how(plots = plotStrata, within = Within(type = "free", constant = TRUE)) shuffleSet(20, 10, CTRL) *DONE in 0.8-0* * Write an Rd page for the `"permutationMatrix"` S3 class where I can describe the object returned by `shuffleSet()` and the methods available for it. *DONE in 0.7-8*permute/inst/COPYRIGHTS0000644000175100001440000000112712406211711014340 0ustar hornikusersUnless otherwise stated, the source code of the permute package is copyright (C) Gavin L. Simpson 2010 - 2013. One exception is the code for the `update.how` and `update.Plots` S3 methods in files PKG_BASE/R/update.how.R PKG_BASE/R/update.Plots.R These functions are based upon code from the `update.default` method of base R. These are Copyright (C) 1995-2012 The R Core Team. These codes are released under the GPL version 2 or, at your discretion, any later version. The full copyright and licence statements for these codes are retained in the header of the respective .R files listed above.permute/inst/ChangeLog0000644000175100001440000004117012662365764014524 0ustar hornikuserspermute ChangeLog Version 0.9-1 * setAllperms<-.how() was stripping the "allPerms" class. (#16) Reported by: @brendanf * nobs: added a `nobs.character` method (#17) * get-methods: added a `getControl()` extractor with a default method and a method for class `"check"`. There is an alias in the form of `getHow()` (#18) * shuffle: now accepts objects from which we derive the number of observations, bringing is into line with `shuffleSet()` Version 0.9-0 * Release to CRAN 23 Jan 2016 Version 0.8-5 * shuffleSet gains new argument `quietly = FALSE`, which is passed on to `check()` to allow control over printing of statements during checking. Reported by: (and fixed by) Jari Oksanen * allPerms would return a vector instead of a matrix when a single permutation was generated. Reported by: (and fixed by) Jari Oksanen * Better defaults for `check()` heuristics allow for more reliable (i.e. fewer duplicate permutations) permutations when the set of permutations is small. Provided by: Jari Oksanen * allStrata did not handle cases where strata were not in contiguous blocks: e.g. `c(1, 2, 3, 1, 2, 3)` vs `c(1, 1, 2, 2, 3, 3)` Reported by: David Warton * Permutation matrices returned by `shuffleSet()` now print the permutations more compactfully. * as.matrix.allPerms: new S3 method for class `allPerms`. * Code coverage: permute now has a test suite that covers ~87% of the current code base. Version 0.8-4 * Update testthat unit testing to recommended usage. Reported by: Hadley Wickham * Example using vegan data is now made conditional upon that package being available. Reported by: Jari Oksanen Fix suggested by: Uwe Ligges * blocks new in-devel extractor and replacement function `blocks`. These are not currently exported so use at your own risk... * permute-deprecate.Rd was missing an \alias{} Reported by: Kurt Hornik (CRAN) Version 0.8-3 * allPerms: with free permutations *within* plots, `allPerms()` was not returning the indices in the original data but in the permutation indices within plots. Reported by: Joris Meys Version 0.8-2 * allPerms: with free permutations *within* blocks, `allPerms()` was not returning the indices in the original data but in the permutation indices within block. In addition, `allPerms()` was not replicating each row in a within-block permutation matrix for all the rows in the other block within-block permutation matrices. This is now achieved via a new, non-exported utility function `cbindAllPerms()`. Reported by: Joris Meys Version 0.8-1 * setBlocks: get block name before doing anything so that you really get only name instead of its evaluated value. Version 0.8-0 * Released to CRAN * DESCRIPTION: now uses `Authors@R` to populate `Author` and `Maintainer` fields. Finer grained recognition of contributors and R Core Team's copyright. * NEWS: added a `NEWS.Rd` file to document high-level changes to permute. Detailed changes remain in `ChangeLog`, whilst `NEWS.Rd` will summarise the main user-level changes to the package. * allPerms: fix a bug where the blocks of permutations were being recombined in the wrong way, by rows instead of by columns. * numPerms: was ignoring the `constant` setting if free permutations within level of plots. Version 0.7-8 * how, Plots: enforces that `blocks` and `strata` are factors, or can be coerced to a factor via `as.factor()`, if specified. * check: gains a new argument `quietly = FALSE` to suppress messages about updates to the permutation design when they are not needed. * allPerms: no longer allows messages about generating set of permutations to be generated by `check()`. It calls `check()` now with `quietly = TRUE` to achieve this. * shuffleSet: played about a bit with the way the design is printed if you show the matrix of permutations. Version 0.7-7 * shuffleSet: Implemented an idea of Jari's to allow `check()` and `allPerms()` to do their thing and possibly generate the set of all permutations, rather than turn off checking. If that now results in more than `nset` permutations, `shuffleSet` randomly takes `nset` of these. This is a nice suggestion as it avoids the problem that with small numbers of possible permutations, you can randomly draw the same permutation more than once. As I have added this feature, I reverted some earlier changes to the documentation that used the `check = FALSE` in their call to `shuffleSet()`. The `check` argument is retained though, as a way for function writers to skip that part of the permute workflow if desired. The permutation matrix returned is now of class `"permutationMatrix"`. This class has `as.matrix()` and `print()` S3 methods. * allPerms: gains an argument `check`, which defaults to `TRUE`. This is used to turn off checking within `allPerms` if desired. A use-case for this is in `check()`, which might end up caling `allPerms()` to generate the set of all permutations. In that case `allPerms()` used to recheck the design. Now this doesn't happen. `allPerms` also uses the new `set<-` replacement functions rather than `update()` as the latter causes problems when used within functions as it often evaluates the stored call in the wrong environment. * check: following the change to `allPerms` (see above), `check()` no longer results in it calling itself, via `allPerms()`, when generating the set of possible permutations if the check heuristics indicate it should be. Turned on some `message()`s when the user asks for too many permutations (more than the set of possible permutations) and when the set of possible permutations is smaller than the `minperm` value stored in the `"how"` object. The latter notifies the user that the entire set of permutations is being generated. These messages were updated to reduce their length. `check` also uses the new `set<-` replacement functions rather than `update()` as the latter causes problems when used within functions as it often evaluates the stored call in the wrong environment. * Plots, Within: now return a object of class `"Plots"` or `"Within"`, respectively. * get-methods: added a number of a new methods for existing functions to work with `"Within"` and `"Plots"` classes. * set-methods: added a number of a new functions and methods with the common name `setFoo<-.Bar` where `Foo` is the component to be updated, and `Bar` is the class. These are replacement functions only. They are intended to be used within functions, where the user-friendly `update()` will have problems getting the call updated correctly ot evaluating it. * how, Plots, Within: Now work much harder to preserve details of the design (i.e. the names of objects passed for the blocks or plot strata), and also process the matched call so that the user can `update()` it. * fixupCall: a new, unexported function that allows the call objects stored in a `"how"` object to be updated. This is not exported as it is intended only for internal use. Function writers should use the `setFoo<-` functions instead. Ordinary users should use `update()` as long as it is not in a function. * update: new methods for objects of classes `"how"` and `"Plots". Thes are copies of the standard R function `update.default` with some changes. The source files for these two functions preserver the R copyright statement and document modifications made by Gavin L. Simpson. * Depends: permute requires a version of R no earlier than version 2.14.0. Version 0.7-6 * summary.allPerms: Was printing two slightly different subtitles. * More unit tests... Version 0.7-5 * how: the matched call is now returned permitting the use of `update()` to update elements of a stored permutation design object. Suggested by Jari Oksanen. `how` also gains an argument `make` which is the user-level way to control whether all possible permutations are actually created should the heuristics in `check()` decide they should be. The `print` method for class "how" wasn't printing details of mirroring or constant settings for within-plot components. * shuffleSet: was incorrectly recombining individual block-level permutations. Reported by Jari Oksanen. Gains an argument, `check`, which allows the user to control whether the permutation design should be checked. In small data sets or where there are very few permutations, `shuffleSet` could generate more permutations (i.e. all possible ones) than requested. Turning off this checking with `check = FALSE` will result in exactly `nset` permutations being returned, but without a gaurantee that they will be unique. * numPerms: fixed a bug where `numPerms()` was ignoring Blocks when computing the number of possible permutations. * Within, Plots: as with `how()`, the matched call is now returned as part of the list object, allowing desirable `update()` behaviour. * allPerms, doAllPerms: now correctly work in presence of blocks, and where there are no plots. `allPerms` now includes the permutation design (its `control` argument) as an attribute, `"control"`, on the returned matrix of permutations. `allPerms` loses arguments `max` and `observed` as these are supposed to be in the control object created by `how()`. `summary.allPerms` (its `print` method, more correctly) now prints the permutation design alongside the set of permutations. * get-methods: new extractor functions `getObserved()` and `getMake()` return the `observed` and `make` components of object created by `how()`. * getComplete: This now only returns the `complete` component of the `"how"` object. Use `getMinperm()` to extract the component no-longer returned by `getComplete()`. * check: function loses arguments `make.all` and `observed` as these are in the control object returned by `how()`. The logic of some of the checks has been tweaked slightly. * Documentation fixes in examples of `allPerms` and `check`. * permuplot: This is horribly broken and I'm not sure if it will ever return. In the meantime, this function now prints a warning message if used and returns nothing, invisibly. The function is no longer exported from the package namespace, and not documented. I'm not convinced that the plot can adequately convery the breadth of designs now possible. Hence I am minded to deprecate this in 0.8-0 when released to CRAN and to make it defunct some thereafter. Version 0.7-4 * Deprecated functions: Completed the deprecation of `permCheck()` and `permControl()`. These functions will be made defunct following the release of version 0.8-0, with a view to complete removal from version 0.9-0 onwards. Version 0.7-3 * Tweak to 0.7-2 API changes: argument `blocks` no longer takes a list from helper function `Blocks()`. It is easier and simpler if this just takes a factor. In essence, `blocks` in synonymous with `strata` from `vegan::permuted.index` and the new change will allow for an easier transition. * get-methods: New extractor functions `getMirror()`, and `getConstant()` which retrieve the mirroring and constant elements of a permutation design. Also added `getRow()`, `getCol()` and `getDim()`, which extract the row and column dimensions of a grid permutation design, or both. In addition, new methods `getNperm()` and `getMaxperm()` return the number of permutations requested and the maximum nuber that should be allowed, respectively. New method `getComplete` extracts details of the complete enumeration features of permute. * numPerms: updated to work with the new API and now handles blocking. Exmaples now pass checks again. * allPerms: updated to the new API. * check: updated to the new API. * how: new function, a copy of `permControl()` and will eventually replace that function. Has a new `print` method. Begun process of *deprecating* `permControl()` and its `print` method. * permControl, how: the `strata.name` component of the returned object is no called `blocks.name`. * Plots: now returns the object name supplied as argument `strata` as component `plots.name`. * TODO: started a TODO list of things I know are broken or needed. Version 0.7-2 * Major API change: Added capability to handle true blocking constraints. Suggested by Cajo ter Braak. We now have: o Blocks: samples are *never* permuted between blocks. Blocks can't be permuted either. o Plots: these define groups of samples, for example the whole plots in a split-plot design, or repeated measures on a set of sites. The sites are the "plots". Plots can be permuted using any of the restricted schemes offered in permute. o Within: these are the samples, the rows in the data set. They can be nested in Plots and/or in Blocks. This capability has made it into permControl(), shuffle() and shuffleSet(), though the latter certainly has one major bug in the case where there is more than one Block. Most other functionality is broken as the above change has altered the permControl object in a way that is not backwards compatible. Note that the 0.7.x branch is a development branch and should not be used in ernest until I work through all the implications of this change. Rest assured, I won't be doing this again! Version 0.7-1 * allPerms: implement Doug Bates version which simplifies and speeds up the code. A fast RcppEigen-based version also exists but will need larger changes to the package to implement. Version 0.7-0 * Vignette: silly typo is example code illustrating shuffle(). New section on `shuffleSet()`. The Vignette is now in `vignettes` not `inst/doc`. * check.Rd: undo the hack needed to pass checks prior to vegan 2.0 being on CRAN. * Suggests: now needs vegan >= 2.0-0 * shuffleGrid: was doing random flipping of permutations even if `mirror = FALSE` for the `constant = TRUE` case. * shuffleStrata: assumed that the samples were in contiguous blocks. Reported by Cajo ter Braak. * .Internal: removed all instances of .Internal calls in the code. * Package is now byte-compiled. Version 0.6-1 (released to CRAN on September 7, 2011) * NAMESPACE: export(permuplot) * check.Rd: temporarily supress some of the examples to run only on vegan >= 2.0-0. Needed during transition to pass checks on CRAN until version 2.0-0 is released. Version 0.6-0 (closed September 7, 2011) * allPerms: added warning regarding current need for samples to be arranged in order of any strata. * Release: Pushed to CRAN. First beta release. Version 0.5-4 (opened August 31, 2011) * permCheck: deprecate `permCheck()` in favour of `check()`. * allPerms: code clean-up * preparing for first release to CRAN. Version 0.5-3 (closed August 31, 2011) * shuffleSet: now handles all permutation types that are available in shuffle(). * nobs.Rd: fixed an example which created a numeric vector of zeros instead of changing sampled vector to numeric. The example yielded an error in R 2.14.0 (under development) where only one argument was accepted for numeric() and two or more args cause an error. The two isTRUE() cases should be true only exceptionally, and may call for a fix. * NAMESPACE, nobs-methods.R: The package relied on import(stats, nobs), but that works only in R 2.13 and failed in R 2.12.2. Now we define and export nobs() generic in permute package for older R. The help file still gives a warning for missing documentation of nobs in R 2.12.2 and prior, but there is no obvious fix to this. Version 0.5-2 (closed August 23, 2011) * shuffelSet: new function to generate a set of `n` permutations without the overhead of `n` repeated calls to `shuffle()`. Currently only for designs without strata/blocks. Version 0.5-1 (closed July 5, 2011) * shuffle: now returns seq_len(n) for no permutation within blocks or of blocks. * tests: testing using the `testthat` package. Initial infrasctructure. Version 0.5-0 (closed June 28, 2011) * shuffle: renamed permuted.index() to shuffle() * Vignette: the package has a vignette, which is very much a work-in-progress. Version 0.0-3 (closed June 17, 2011) * NAMESPACE: permute gets a NAMESPACE. Needed to shield functions form ones of similar name in vegan. Version 0.0-2 (closed December 09, 2010) * allPerms: Large update. allPerms now works for all permutation designs *except* when permuting both blocks and within blocks. This exception is handled with .NotYetImplemented(). * numPerms: Wasn't returning the correct number of permutations when WITHIN == "none" and BLOCK != "none", i.e. permuting strata. * Utils: Utility functions defined inline within allPerms moved to new proper functions and renamed; allFree, allSeries allGrid, allStrata. Version 0.0-1 (closed February 28, 2010) * SVN: Uploaded code to r-forge within vegan source tree. This code base represents my working version as of today, *not* the version in vegan at that time. permute/inst/doc/0000755000175100001440000000000012764367607013515 5ustar hornikuserspermute/inst/doc/permutations.R0000644000175100001440000002477412764367607016410 0ustar hornikusers### R code from vignette source 'permutations.Rnw' ################################################### ### code chunk number 1: preliminary ################################################### options("prompt" = "R> ", "continue" = "+ ") options(useFancyQuotes="UTF-8") ################################################### ### code chunk number 2: load_jackal ################################################### library("permute") data(jackal) jackal ################################################### ### code chunk number 3: ttest_jackal ################################################### jack.t <- t.test(Length ~ Sex, data = jackal, var.equal = TRUE, alternative = "greater") jack.t ################################################### ### code chunk number 4: ftest_jackal ################################################### var.test(Length ~ Sex, data = jackal) fligner.test(Length ~ Sex, data = jackal) ################################################### ### code chunk number 5: meanFun ################################################### meanDif <- function(x, grp) { mean(x[grp == "Male"]) - mean(x[grp == "Female"]) } ################################################### ### code chunk number 6: randJackal ################################################### Djackal <- numeric(length = 5000) N <- nrow(jackal) set.seed(42) for(i in seq_len(length(Djackal) - 1)) { perm <- shuffle(N) Djackal[i] <- with(jackal, meanDif(Length, Sex[perm])) } Djackal[5000] <- with(jackal, meanDif(Length, Sex)) ################################################### ### code chunk number 7: hist_jackal (eval = FALSE) ################################################### ## hist(Djackal, main = "", ## xlab = expression("Mean difference (Male - Female) in mm")) ## rug(Djackal[5000], col = "red", lwd = 2) ################################################### ### code chunk number 8: permutations.Rnw:121-122 ################################################### (Dbig <- sum(Djackal >= Djackal[5000])) ################################################### ### code chunk number 9: permutations.Rnw:125-126 ################################################### Dbig / length(Djackal) ################################################### ### code chunk number 10: draw_hist_jackal ################################################### hist(Djackal, main = "", xlab = expression("Mean difference (Male - Female) in mm")) rug(Djackal[5000], col = "red", lwd = 2) ################################################### ### code chunk number 11: permutations.Rnw:138-139 ################################################### choose(20, 10) ################################################### ### code chunk number 12: show_args ################################################### args(shuffle) ################################################### ### code chunk number 13: show_str ################################################### str(how()) ################################################### ### code chunk number 14: compare_shuffle_sample ################################################### set.seed(2) (r1 <- shuffle(10)) set.seed(2) (r2 <- sample(1:10, 10, replace = FALSE)) all.equal(r1, r2) ################################################### ### code chunk number 15: series1 ################################################### set.seed(4) x <- 1:10 CTRL <- how(within = Within(type = "series")) perm <- shuffle(10, control = CTRL) perm x[perm] ## equivalent ################################################### ### code chunk number 16: grid1 ################################################### set.seed(4) plt <- gl(3, 9) CTRL <- how(within = Within(type = "grid", ncol = 3, nrow = 3), plots = Plots(strata = plt)) perm <- shuffle(length(plt), control = CTRL) perm ################################################### ### code chunk number 17: vis_grid1 ################################################### ## Original lapply(split(seq_along(plt), plt), matrix, ncol = 3) ## Shuffled lapply(split(perm, plt), matrix, ncol = 3) ################################################### ### code chunk number 18: grid_2 ################################################### set.seed(4) CTRL <- how(within = Within(type = "grid", ncol = 3, nrow = 3, constant = TRUE), plots = Plots(strata = plt)) perm2 <- shuffle(length(plt), control = CTRL) lapply(split(perm2, plt), matrix, ncol = 3) ################################################### ### code chunk number 19: series_2 ################################################### how(nperm = 10, within = Within(type = "series")) ################################################### ### code chunk number 20: shuffleSet_1 ################################################### set.seed(4) CTRL <- how(within = Within(type = "series")) pset <- shuffleSet(10, nset = 5, control = CTRL) pset ################################################### ### code chunk number 21: permutations.Rnw:252-253 ################################################### how(nperm = 999) ################################################### ### code chunk number 22: withinArgs ################################################### args(Within) ################################################### ### code chunk number 23: change-continuation ################################################### options("prompt" = " ", "continue" = " ") ################################################### ### code chunk number 24: ptest-fun ################################################### pt.test <- function(x, group, nperm = 199) { ## mean difference function meanDif <- function(i, x, grp) { grp <- grp[i] mean(x[grp == "Male"]) - mean(x[grp == "Female"]) } ## check x and group are of same length stopifnot(all.equal(length(x), length(group))) ## number of observations N <- nobs(x) ## generate the required set of permutations pset <- shuffleSet(N, nset = nperm) ## iterate over the set of permutations applying meanDif D <- apply(pset, 1, meanDif, x = x, grp = group) ## add on the observed mean difference D <- c(meanDif(seq_len(N), x, group), D) ## compute & return the p-value Ds <- sum(D >= D[1]) # how many >= to the observed diff? Ds / (nperm + 1) # what proportion of perms is this (the pval)? } ################################################### ### code chunk number 25: reset-continuation ################################################### options("prompt" = "R> ", "continue" = "+ ") ################################################### ### code chunk number 26: run-ptest ################################################### set.seed(42) ## same seed as earlier pval <- with(jackal, pt.test(Length, Sex, nperm = 4999)) pval ################################################### ### code chunk number 27: change-continuation ################################################### options("prompt" = " ", "continue" = " ") ################################################### ### code chunk number 28: parallel-ptest-fun ################################################### ppt.test <- function(x, group, nperm = 199, cores = 2) { ## mean difference function meanDif <- function(i, .x, .grp) { .grp <- .grp[i] mean(.x[.grp == "Male"]) - mean(.x[.grp == "Female"]) } ## check x and group are of same length stopifnot(all.equal(length(x), length(group))) ## number of observations N <- nobs(x) ## generate the required set of permutations pset <- shuffleSet(N, nset = nperm) if (cores > 1) { ## initiate a cluster cl <- makeCluster(cores) on.exit(stopCluster(cl = cl)) ## iterate over the set of permutations applying meanDif D <- parRapply(cl, pset, meanDif, .x = x, .grp = group) } else { D <- apply(pset, 1, meanDif, .x = x, .grp = group) } ## add on the observed mean difference D <- c(meanDif(seq_len(N), x, group), D) ## compute & return the p-value Ds <- sum(D >= D[1]) # how many >= to the observed diff? Ds / (nperm + 1) # what proportion of perms is this (the pval)? } ################################################### ### code chunk number 29: reset-continuation ################################################### options("prompt" = "R> ", "continue" = "+ ") ################################################### ### code chunk number 30: run-pptest ################################################### require("parallel") set.seed(42) system.time(ppval <- ppt.test(jackal$Length, jackal$Sex, nperm = 9999, cores = 2)) ppval ################################################### ### code chunk number 31: run-pptest2 ################################################### set.seed(42) system.time(ppval2 <- ppt.test(jackal$Length, jackal$Sex, nperm = 9999, cores = 1)) ppval2 ################################################### ### code chunk number 32: get-set-eg0 ################################################### hh <- how() ################################################### ### code chunk number 33: get-set-eg1 ################################################### getNperm(hh) ################################################### ### code chunk number 34: > stream xڝZIsFWUON'8'5rrrbL @Z񿟷6R^^~$ vAw?&UY5EMVM| ߷u߰?s MRd ~Ćs- =9y~LS$&.*6ڰExAqu(N>b{ |}Γv޶TYfqF)а&&Osƻ|&~_06iYG`(6qb2oGږ!Jn QR_.vSFW?\uբ 8ȓDU> D&uAC?N3gIP*9kdUqnd_t~=+Kbt&r[LW O+ +|am\"2ST"a5 {̆͸&47i J֍/f_2 9h$,nYڵGqWHik4n:J>0ip^%2>ZןټbFJ/Iwl`$|]⁁UqBtk}e Ϲ %00ib&IsrPYV٥( ߒ%px(l.IyN$765[D$ (E;\aNt.-ޫq20M"t0HgV[RM<Cؐ$[X`MK@1#:# 8~!fI\ܩ4ҘX:Af&w'ZGmwHbvEx_πՕ dRhج ma#GLϬN(YokuҊ-#CG~rg A;"C,2fm]di` mAF&&U=߳UńEػl$~$j'$ȻɦwH ;m7rfl&SQ(_ [X<!C[;{|Jm}+33L ?lF\ҝ\ RNLaDQ`HC!ս.FJwf]@,EYop"W)}ϔj;ɨ{{TGZdѣjfF<$'7?,.tTXbáΣfTBlx%d^$y3tNj/d}_pIa8%qIXKɒ:}$5߶Op91<}~hPPeW,'@$ :1#uk&Qf$t.";w}x]hyEwNy" .;v2hJ'䧗Ed~m%ذ_&Xˤ W{1UwZ5馚< W\cUSkk,0JNlR?<{};Kj+Ģqv/ш{KBI(?^&A#/\*,3?ÓH9Z gS8NWd"y$a  I# acvM\ksC45sj'b*-<9Y,iZ;:cV2ja(ShmfޮuCg )Džf p$qY` &,Ǩu OtyRIVkIU=zf^ddmRܟ9sr0K'lz.!Q3y ~MFkj5 4?mU_>qNdkܹ]f j;$^bQI3Y0}|*l2oxn 95"gofa 5Tឍ\\ Y-'Q8_[g9ʙ]PJIfn:y»6Z2ɍֽ~NkmOT&L  UY=!P3}ՙq idJhةS@7N3z^=n)~ %'FkPt™Y>Okhy~Έp8VSpH_RIoq\BvK[ܯxE4Mp0/mݦ w"kZNyye5  E4rZ$ ̊"QH G\ei_}t ٰhk|BUrTjBJ:M &Ӄ.[z୿\u?8gvf<}-wn -޷zl{,w_I@tr~FV#q褎7uF l?x0V0g;2G S*n :[hƅqi]4qR_cnYGyxS/bDԦ) ޑqBQ8!FQd.;U3z3c=SE/GY .k hD.yo8U*7\ua<1ÕC ^-M3?}tu}7M\bqO|x"f=R ]K' {/G{/-Zg7""_?\Ʉ@ endstream endobj 93 0 obj << /Length 1252 /Filter /FlateDecode >> stream xڭMs4_kYew3 \ iyvW8m8(*d9I&|;{z"H 1.&mBt>5Hߧ?=dL XC`,HJ4\Uv0JMP6LhY9[B岲n(gFRy럁7aSl`ix`<[na=maa4wK BDBZ'Lᙩ3x8*Zޤ=˛X~$XlYzr'~᳿PȡbDo #~TO=Dy CJzx= 1QեQ\hBcAԺfSՄYl߭-l7c3bUHoPa6=jT\Qc táA,gK[j ^ $6(oveHy7w%umL=/WNՁ͍#7 ,F٦?6rti\tEoe[rx .9[(J j%"g(jN*M٪ofb }aҙԁc" A3L$x%v=Lrt}B(_k4xW{xWh3KFkz==b'3'f$2roкxO'']U[V(dP:6R J.PJv.rT|/pjȉ)vkk>7K3dvE4~,zj={s@[IV-+mw̓:cX6'Sodߏ( N{W4Zi),|ʀ1>B>Yd:atBJ^2tsȞpĹ9K=3w \{~74S endstream endobj 99 0 obj << /Length 2653 /Filter /FlateDecode >> stream xn>_J!`H1&ZlJ#J%ߞzCCM dwua/~zwobQYn0eUU:km.~Y*gxfsO{<>4mQ&(+Y"!.kږYT p<=2Ͳ2cb U0"sLԙ[@'&`3xw/8sG.~nah:P?x}Ar9QN,`Oux^8.=%V"nqC t\CM,ֵ\جt* dAf9u/}?{$!VktO@|UDSМ~Adh/9*ذf Aئ݄/RgnI>:'{dccm/Pi8z3{s2swudLd憃e/iYSM8,eږp<"RJ(!߃om/w-@ț̩$ Þ@%TШ)(XV3+k!ID օ0kb3[v8MB ^>  Ĭ2+7+ i *ZGʌŒtz @xofDߤJ/~P!j\Ude >35 qB{\=cK9S, |L ſRs<q = GȔrDd«'v~#x ~7)ؓ3þЂf'QV5κt5qFN=~;yh p ~i&d1/mvyF~ 5ofAӤy x(&>:~܊@},24MY@0=zrk169-|^VpA5Φ5[ɚ"O|G_%0!$0p"rA pnÒ{aӁ-MLWX`:.zx̙H9<~,F?I rVpyw,3J~`jp8+{˨Rȯz-(ܞ"Q%@ l8P+7uM*kZ{Ηfl~Έ*kVـAdmڦ[ \KQeʂ\DJᯝKQOŽQAHb3^>ӞROWcm }x<7@#%Uy26Ω?ijdlclH0ybXYdU`u4is'ACX^@aΕEp.+~.q\]+8[E)woFkLK*k;cG!GD}_?rjTD(K֢8R\/k;@[w++MdݣOkC+0|l2؈Tv} FdgxwU+i]E~EqNֶJ2! 14:4 &ДnP፿`{.P<t8\/*^m  ҥ2"fwX;nl:@Ǿ^k C jX0i[\f5 NVJlg}r"b3l-Zw0AŨ4kSBITRVi1w]\ho]rx/63?DQ]lq첶ayᆌ5!M+e;LoO)v!{Q[I mI&)):= Ύz'b> stream xYIoFW>QhDs8\&6uТ!uOnPPJtHNPm3R䴗 f4{j^}wwus 񇻟nn.R$3hof|Dk^`?Ɠ00Roap38X-U ܦKsbNtgI¤aǓ8ޖU^!ZНpw ݃4{;V>|(>Hx\݈僉\{OcrSUb ,'j 4d$ mLTO>0I -Vnr<Ok,xeyH nNŚ; v L'k ^87c1$]ڒLiڦ8PT6pf9и\$5F*{U[dːV$^bwڪ&Oe [~N āI/.OY7&me&4@h?ï|:'"p/6r=ڠuEgӆI.}Wʨ' ΠO5mLpJ Hp!t7x?~ABpJ>Xd"f-`?ض%fDy1J{|pA1V.lqJkZx"'IJ)#&A,G]0xepyuxв`95Y.6wW >_ endstream endobj 115 0 obj << /Length 1259 /Filter /FlateDecode >> stream xڭWKoFWV d=EzHs%]JyH* ZԾ=Z'ONޮ~ڮnnIVL'6/>)BU.OڤGOs6U6Wiaͭg,Se xgEve`JWUJIvꯕ*/dJGL6niW_W4˽Uɚޢ0|mj~Xorm7r|0p؞z_<G!S >0hB-<t)R=ʼD'ϛxI( eN$/z lSVx@T.[KC[ے gYxonlb欲; i)s % F#RM/Bcm'pM't߼׹gǟ#⽆›XK] 1i2I~pI;lyWcpPNB΄Cd4Q erφosH: yc~G)g]e|z;~`şedEuir弋ҋ&齌y*93vnT[NT/y(kB>cqPaYNiu-=YV3T_\ >;[t)UYjoU42LP'B#52"9`Dsr_E Y@*TGpѽRẒH0i`*L;݂!RyD15J`7'ZN?]p(9t wrVes϶r+rүy8UUS줻 'm2ìǪu#B'&~@{ŮL\-*|l\-ְk YTd-GCj]> H_&jg\#@nIfܳp1ϹTJwL&RCAἋZ‚ Fi] [^N/x%;FH-YKDGyǺ1C<_7L%o\|ad8FAdEki{v^.mEa)X d.!t\ۅіb h-~x~PCb˺F I}WH־ovzn~4h)<7\Pk鿵c$U" endstream endobj 106 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (./permutations-draw_hist_jackal.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 118 0 R /BBox [0 0 432 432] /Resources << /ProcSet [ /PDF /Text ] /Font << /F2 119 0 R>> /ExtGState << >>/ColorSpace << /sRGB 120 0 R >>>> /Length 608 /Filter /FlateDecode >> stream xMk1+h/̛`10F`;4!WXaU#)M4,+ptfYV<2RW™=XNu:cvDxLNҢ?3mL 6#>o& h|e6GxC][yL]="am+JSD-KU'=6@UVDžgY`\e y?q:'C.ג 0ch 3kOOǡOD՚◽GI;@ҹ.ߦW'1߉SohX~yTƦsoq;^JiSLg*X.{[_[]ReźwĶA1n""nivk_R̝W=)S)o2vNwu" endstream endobj 122 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 125 0 obj << /Length 1525 /Filter /FlateDecode >> stream xX[oF~ϯ>jM`ҦRW}'v} 3g;G觛g7wJ&^FhF$Уr|w)HExj;VNz< 9rw;?uМ :֑3unwo˜@(bJ<;/؈:p?06 ]A#*4Ui}!P#ٶdV^2B^=XE  ځ%Ѐdb|V=GGdXk'EXQ8HDo_q4D* FA]Ÿ7h"+p+:LضuYiBs\* Mb(]?C`rhy v'b+4qq-Ⱦx*aY%t-Ҵ@o8Un.J9[=F; jv7Ń.1O'm1 =CW"nFn4nD#&yw!5{Br_\G-Dm.r k#OB>}.־SQۊoR{QP9y?Y.b16NRNӒȔs`+!HPNPL-SxEFnL&A980qF%է$fQ[ lvΩ8tAI(Ao8nwbƼRN$Cgf솋@]x?̤4^e%#춫N]b&a)‰!֎!CiЄЬv= ZW F > 󏒯>8%袺 R8v$ @Jng•z-SM7~i.VSW @y"e, ^2A(7 cD5P}*=7PFoɶ0Mj=SWO&ކ#znXriAi^AʆQUW,5_PP2)nUš>Mٓ89n%d|̖+HuZHVPX-qh `NqWi%QqGGR_dO'\OOOzeuNw]^h8A1YFKd x|m4GJ s|O\i|U#W2vq8Bq9kSMln[27&\7 endstream endobj 129 0 obj << /Length 2169 /Filter /FlateDecode >> stream xYIϯ|*dlբM )MZ,Jiq{K-Ûw7_Daf-lZY-48]KTK8ǐ N7t|ޤ%8vr&U*Nv=U/W-6w3 ## :߶;pIF?,m\p,kՑx/֏*lOػB)K8ֿ (=]KL@Z+iRvzi=jV_vՅ0 2 T!ۈ'P~~9gYX݅C4;[&> ~yxxނl|$]"iJ/x#>g3Ia$ǬZ8rQۿ`տ:{vz8[MF$ qרJ=an2`) 0e˕3g+I< yyLY v!V;+uFp܊P +վYOdfa=zm&H,ijez\¸J(8u_5Gy~}@RysfN,㰄\0f(L%^ց#(2YDv|9a3$C(;lH?GLtmMm>Q0ð$*2e6&ԥؕyO5մ+E^5?uNP*`,p&LoýL d]VGIc*2 Щ-&+%4GxgFwQVr(0QPBO IuRJhA<$.rYS BE»`IA3zNN}^wl͑0]0 HՀ\^~*-#k|d0r♜=e4h66a|?ymM3߫o9UZ) ~ &^yޢ'_vA<3;ۏ7+dPӿN!);=W,о:S'o`#WQNOEEBͯiF endstream endobj 136 0 obj << /Length 1275 /Filter /FlateDecode >> stream xn6=_!{JIQ` a@[bSl1f[,ߏB(և><:7 ~vqqy%t ҤJ+,nR.J` 2z*>E"@_M$½Y(VJexŲv, ZZ_zQ)vyUHXh b2kL>Ea{{Z*dI%x+359y^d+tRq+>P6%/ l8P/Gcm'jԍV2a@w&(PJg[c=:~ N]GSSg dV#vo gX`=ǎ?ٹqSB~ɯNLxtSE@@s ɴtXJwtKWNAF 7Njrz{sм~qjS+QڟQ!-;X6] O ,Ճ5Hp۞3|U"|{7k~;!@sTAC/7Dzk4H2߽wȢ7rSz-⃭4eu?ӹMFG/'?<>9UrUZq:HkOEcB^fY&Q&Hʴ^px/ö_Py/O A{{eeUA~i/P +H,<8҃*U3KUŰEO황^oyo}:SK-m_t endstream endobj 141 0 obj << /Length 1072 /Filter /FlateDecode >> stream x]oF=Bh E)6aX]!-P!vlJw)9"g ~{~urwaݵ X(=XϜHW4hw5w%3,zyϱuRn暶iD^uXy|$1ƕfP€R(Ԡ#UՖ +[WѱjeX/v̓Q/rU}1ƩPf c:]7rQpGuҶ'M2tK{]ZzDhV>N1#Tʆǥo8F](qgRUxN,Wi I}QLRt`MZhrry\vlpwh}t z~/[cO|w|%^mJ$)(nuljBau0~~C0ڣ^+%Gg{?n٩ H͵o'/&c NC:ՑܖA=8}[pƅSK^7#?2.pgf*V.]!Vmazd{@ƄGbY씁h"UP~/ݿrz/&D endstream endobj 146 0 obj << /Length 2613 /Filter /FlateDecode >> stream xn}' qn$l&`AvhIRHi/ywpGeT5yjuW*k {wqOT1*ˬR !۹[EQNt׳|Y3sq-˹g_綜O{ }>V:>v]6˒O)O󅲕i蛨_E}g*2kDO QJkn!)&Q"ۢS*k$4yV5D|g(ɾZhPe^و2=<8_(~?VG{ 7ԅ/ψ%9(&=U ]0$i6QD?DihRfr3{ڠ|(u 804F~]w=E$E#+t٦v*O҃|"k=m="N=r׮H:̂9m s jPNbXI<' ߞƁ;*/g FGp.i`M#'f#Φ;L}L3UUG!LĿ01X+6Plwˊegbc H"=]ǒ=}d Bw{SP3HmLڦ]nlh!'S҇;lWyҞ^jUt`-zqxy!`tT~7+ 0 .Rtd8~uS&^Hn ic$IƤO쨛Ȇueݾl+"o^$i%32h$UFe`ԥe U: qDCqўxДGU[o \DpvNre6`1g,7xe8LԄvCR82x$\qA[b pRǀLMx$ U˂&&O| 2iF, tնZqږ'Ώhd A:l 3AɆ(~ăE<T[;KOd o#tlUI:$Aƻ(W~ 'ՊChRB& ԺIA7qPCjp#@rІNpO`6}bb 4.tKKז_;{[9%woy 'pщ=*jB˜_̻vפ%.Jc *SJ@?t1EյT(*4IU.IډRSwb%E<ے ɨeLmNɬBrgIԗjUMT-bXv $<\,1YПv""J_;Jre O6=Md)^\:H\غYCx/2}Ec W1L!AOZ "v._J"<\& 2ׅ~лע ƺDtÐT&@QZmWR6~X±(4gǴ7MrB S,{Ex+MazHоXPXf)<q$ xXw'$yu"V}Met 3|!'cj+KNs^Uvs簀)2i#tEQB.c6R]}f__*v)F/uE\ݡs9,' qވ(FƹK6KV61IGӑ+njn݌0PC r-z)7\vfƑs㜀/nIm99ÝwAzM{I==ڒc?aI2Rӿ`a@B5t`Z]K\ +9 Q?K;YG8,I?ae*;JKh`0// ^P#/m@MODʶ6믨"Ph$rR鑬kt?h endstream endobj 151 0 obj << /Length 3551 /Filter /FlateDecode >> stream xڵYoݿB`1-MEY}H@K.M9d5DX5~30_ǫo*E*E]֙feX+U/`Џj?0Pɖδ6p"mVt 1bˬc 3uڬT#<~rƒ<rs5 #֧#U@W0pr4ͨ\C#pJ `JUY^lis64Yc# ̮CFv?##:9T33dśc`M/*KX:+ ê1t[z{f *^*&jBN&YxaD}__yO1XuD%[aAVn/VȜNAZ˿7ci}шrF:R묪&IʗآiUKܯxAA{O4-z6|$~5e,Dizt4heR%ҶtpX{"GyE$Fɔ5)# U]Nn{-)OF~聄9`> xXvu"uCd[r̓`uIg|sUEa2m@*kka~^ySGZw!#? XlElI9aJeuiO\Yu፬f1mQvBO+G-$ ~K-ŋ)+iڲn k7sI #7qߝ5nΕf`!N3jnD|'0Z{qȱżAx>\Um;}K qVn]N֢"St:xKa94YVHpC)P{RxMo1$i6H2;֐]ڊ"b4-RA<-QB6VQb6L ,y-;8yKbVL`Ō.-`:p ;mF!88 " >ݦQĵ(+OQ|*BL/J^(݂uzD;(AcxG^<|Bd,7&xNk(dМ)PHD9i`$qzS,l|E\7U+q xpGss%$DƟ{1׆%`y)u2I|\U*]ą㪈=!4uLpC-)7;Ճ t q4ęB]Vf/~N`*7z s.O/2h&)dA,̸/rebF!7;AJQ3C>^h7xJM93#1$EnPughA;Wp$y }F܋zgw̙* _ؾ%)b{;G,F 'C 846IGedEPTN^U gVUz.uJ*=(@]v3`J%'%1X֬r N{^ɧ;W7y^>\ܻb㤯ƄA9RK.m4:W[߉? 8 lK3&#*3Zn^Q#U*^q{Gc[B}IYEM5Eȱy ; 5)󨒖k&&e˫|T> Z~;qK% 4v!ő.s׺nnq&*lģdwjꍄ5;w8f^7!4>ѹ1]\A􈋫&ͷ+sA܀rA]shG!YZݸ:(qsL5u;'UT*SOш+=UDjkO6QL\וgQhE{xcs0!OIQ[|I0q瑟vͺZ~aF4@PTg CrZZ~'`S(= cHdkjLD":?O:䈨x R3c`g߻ Y3{>F&CGCљ\ _^,)#1Lv}L,vlC9+?|{ig^u>$9jKV(LØ IwAoTԂ9_jV59K=Zƈw+W+r͟7ǐj2LFAy[wd2tzC{ MHz60DfsɪN D9n3eꐠӍ(;Q~V \cS>X+m|&Y3(iGPت>v`a' Q>7,CoȎfLJ Fm>a!IHeVIV y?<`JXG~t4GW+AQjP;vѝtSǕںJb|]r ၘ|an@\m 7zPz߇Ȳ )n27{߹l"ҤfeHg[lM)\5%,BqSnOt9rOtJ>oW}"V,bQhOry|yV♠E]|O2u]:(2Yu]0.b WY4 *MǸJ'_TZr,8Ε$$7^" S/ Z֡am{2HIh}v|OPߤjv=KX 5YP9r'oj*}F+^!;; PLh[d6p>9!~iF_&IzyUxWWFPesqñ!S][X)q6>g# Z|5^_ Q[|D`cQ6f֞Ɇy;>Ǜ]$ICNx}-k%ԖcS8*+k!Hw@ j# WKj&cKK N r> stream xYr}Ẉ+/UɮR*hC1 ( >RIѤHfiӧ{fz83Lf,0!, GŤLh&a1eL=tam QqL`J1oSr,xZZ-B8tAP4N(n7ha8&g ,Y8wl!1$'9fC>h@`[3ŹCh5gpdJ@=!%LIeX@b4XfG†r؁ /t{K1!@P¤&Yԫ5AH pj5fISTE"'@@2# 4քĐC a"BAu$ }NPR"Fm"8jC :F4@D%= C@g_ `Zr9 T[Ј3G cQuRRԆ,fb{uʄ'ʦU\~]+b0!Vbtlml:LZ]b4W]+fzc-v|eYo2L>=y~˻Xq_7u7٢:3$ϞY_rIar9h$^4mZCjX5ZCh58*%zy1~ Jo-e*. >33Y'bp%N{\/lx:)@iOSuS0;(<> ?SWhᴈ>%w#Du@DutC``|V/A҇CC̋ѷ%igv*i I[*kaAz⾐Pq ݋H'lf֧gwV[QO^&r'Y9"^zni>,d=dݢp3}[4w$ Y1AzYM,Vp~jQ-U.m~[Na0tH|@O  V+,+2, n5k|ׄqkD `)XhAcUcwCz(#jgE';pjLJimNB ۤ:/YYR,P_񢎉6$c qRيP/:U_KZ)浻jshäEh.Z׆Wd*qUQźt/S ҟIF6m4q%6E ҟʼ=-=M?\^*Y>OYoy4|),biΊrȦ]TMQCa"ٗf9.Ni^b6ƯiSL1ey]}+)Mp)tn54jQZv#i9Y^̦٢IqUiCC4Ą }CAVj}a*H=RnkA=δl~?!3&lOZRr{IIuҹC_ϰxbh/w](AXWqLGDҶ£?6JnuJȳ2t3e'ŶD5/Pvq&FhH ?Rey_C*gm=UtGSꜥt[S+ 1MB?#JQlUUsT51$w69c`)ex.9mbry& endstream endobj 169 0 obj << /Length 4295 /Filter /FlateDecode >> stream xڭ[[oȕ~_͓ d]xA0zӻ$bAhYYRwsuh <"u9u9U].r*ʢ+j~V7Egfeen>Uګ뢩::uTmon<>lO7Yrx9wZߘvӍm+.{Z_uͫdgY 893Pۭ7vҗxy8j{öGi>JMm.χ@c\hbucW~-#}O/<u̱G!(>}R6}6W|=};Gu;߭ES3sQFx=POJ~zUy\!3A ]N[g=q ='VD b7V?ܯ4 >0'߲(tM.h:PsLi죱#`z~)5TeU`i"ٺÐcZ Gƹ][T֥l3'W2,\ӥ\m5ޒgwk7,Wl4u.YᡈNleReޫNpp_a8՞GTݽ,1V<GϿғm<ߴDhnBi]LbHOG3~_=> VR53`>T-^/;њqQU"ö%2%JCřȾNA5i]\L{9m <'msv=Û#J[Ra9 E/^VtOz~8p>saUl%yvT _ᚪEֳ~cGInۜwlDb-W^W,nB^HFih>#1c?lzٺp/+ƮUk$|gc>IK0^hR# W,I$M <>p:ϻ0D n!/%/(LܔMS[آ"3s'݋ؔ,To @*6S`5߂8?MCvaOa^%~{BsOFm*NTlR9&7~l]ʾ*RXSa0<d_vng3MQF5F4^}A5 S0@nmhßi,vǕMspeFAݭXn6[E.. 7X9x87bf^Wd(.)N2)ڧV _%_ IrB*"D>w_(=h줩K՛11w>=0UHy bjU7DUhܭ;eAU0]t1N [k;w;(]9S@IiI&xnI ꪺd޹c2 "SB LRsT9GP6ږC$!@'+//V<ld/lI25&iԎq=p<Ȩz5&BQ4 5kvEハQÞֺM3bÌ NV+ߜjfvS۬h2WpʶT'>wT} !8JƲ(3x4mC$Ie=Pm$]B"~&>D)cdX FÃ|MHjLIjC} ^XA .ᴔxxg'N-=HToj}\DŽۑd_T|$卸UnLfe׸<+aR4PwoZeuҫrAʙIv(`\ 0غ*IE*$lĄz!]\ 4yLd'h1vN3`Ջs绷\) tIL;a3TLjCK$]HCq(R\jM7 ]h0ȪYX9S^dGl&`wt'lNz*)xڝ7CĶ,JӥOmA\誺!ay?9O;:f%t@~O[xOi_R2U"rM뇐X`wNA;*͉{EqYCEkWΘ-lMٙ˒)nG^ӃAIВcov d^@RTbQhOh$3. =(r0mo;75SZ]sutUQ*ms- ' ܷr٦N+-|-=4y{ ~~WkqngQ.6]JthDqnݟ2`CI>ldvea:j@va3RG_bBe\D_Wᚊ BQ0t}Q]R*ꄸ Ъw͕ݵ ×a.J-Dѫ$CA7=sl 8$QW}9( n傄LǙu{nqkrT&?)6qv|m$\B݅]"'9ȾWe_WUG$G6\\u? '1+(;,%)^,n$vΞJM!+&MHG9]Wڒbcxp6%C!NpՍgB>keyu 3W<D8AT-̚84ZgTR~)7*#Z\ɹ&5VқY o Ou w e! &5{~ 1$z>a@*կyZQ~[G\ZTM'h7IdD BSvg(hbāU"X[׏z}Y01i_u5 ,.ƑP:+|CyT?)K4s䎩|aܶeH/X4Ws0Neە Z<+޳B9 8dQCoZ|cd)"HJU}sS P:1_%HxI(κՓ͛-ҿ"E7E|8D2vxAi{+-{K9W nS"'*cңt}EE}[mz hH#΂|<+縴^L|ŵCRCmjnX|*rG4j~nfwRb8/G]XJ7`=qKe_3=V0+Rjx=fK+9t޿Bz/ endstream endobj 184 0 obj << /Length 3974 /Filter /FlateDecode >> stream xڭ[[o6~_aƬD>l^f]tR$:Vֲ'ͿsE xbDQ{yZ  {3kbW|XNsRU՗{ + z9͕F/@0ЕU83&@lTu3gl}*' WpJJ;O`7dWBXY_ (F|V{UfDdsM9eU(ax` G 9Ki.\O50QWEQ&‿reٰ0pvGruکߠ"8%At6aeWq.uRݞ[#_Gqb N#lD-}GX0>*ҁ[d0p7~Ec,31gԤ(LāڰdWb^t TiDG]GtufߢAu#YUZ/X֮LG8΂m| divGqCVkLY*۸3g 8A;UE+AY[/v*!czqjZk% '*p^j@k $|hд2Qw8& IAȼ({ff(,r٠u׶4UUanij'xdk_U`zj14b& [Q7&:jhϘtpEa&,_pe|W"t9_]en 66b<0p<ʀ_E qk)W]BiX@z 6; vˎ`LC3XNqvshZk4Fa= )6 q [% LzTρ!Z DO:٥H!$~A@W䍙&-s5 b~3Yǂ{Z$+rDسcLh 4Lgh5O^E> lD܁J{cNTEwhos}V}GlxOF1>z9&d* 'v]i1dX "_D)(ٚkqdH`(z)jn>+ k-9!68߉Eo im$W7`^hHUS+Vpeͮ⫏މOK,!RNq @AZ`2F+xe >oT(7~D Grx3< E ѳEJ\ @ X X2Ǧ&m[RyF-A55܀ѧ\~_S\C IJ\PUQikUj{q.)MR I,6kU"Ѩ2gB#1@T} 6J&11n2mWlǸYMJNs#~媰>7תkL|+dv|S9=BmV|,[Ȉ-MIV4:ڗG &`PiMa؉6ewrX[|D-rjSs.Y'1ʓyk +K} ʪ6#+,cdPxC~`nxY$g< <*{0+g7W3tTqHLsI|\Y ЇZ+^WD >{a IkMy]kXFr$' K8UWn6A3ȄӽlKJ-oj-=gaj)˙}j.[5f#W =v{7&<A$iPٙ!D&uPv _p ;o}) IGINx§H$X7^6ףE 2؅H>6v~Ͼ-/1Q!A?$&zlbl^Zj{ M3=Y,.$!i$)o4ȬìROX)wy!^񀧐1_x`ڠ&- G+8oE| pUdx37FN,9ܾ dX~ʳcjb@Cث~R"VxF 6cS֕$$ƾ endstream endobj 198 0 obj << /Length 2473 /Filter /FlateDecode >> stream xڽZoBHFBO<.z .p/͇t Z%Œ蒲}{w^V@r3yjO;OTq&7wJMʼ4,'*r REDpпLM4뺅d0'-fY̒jz?ˋija37uiUEAf*BnEA(Mۀ}C#&}9-6&$-8}am #9*v;9:M*I(,>3|(-qH[1Oa ,ٷƵY ?2Vl 0#5G1yZ+=5ipw L:aO'$a0{ƨ(B,;[5l_X8Jp^3+fdVp Kket<5ߊ1.w9nѳ8@O才1GӳF&@OLJ/&QԮ6K)zds 4EY"*ʲRE(a R -jPQDeLjfk "p%y2tk̎{ǹX± 8rRȎQx0ԘC=>r6NZZim`v㨲sv QwL?Ə9/uQL;ֻc%#/ w?y9`=( 3㟧vvW)pҥ_Z6l츳;H;q//{a} =28>(:G3ّ?2LdD}b]p61/A,2c'ƶdžwf%u;}*r;kW֖m*b198@ 3""N¾s͝\VY:4\e'M%Ԛbr9b׹==_ _ B_奭x섫bsJscaK.<8e Gse?t" 7<ʻf2R #*|eス[|qBkڈ)1Ρ٣HL%܌o7W+At endstream endobj 202 0 obj << /Length 1291 /Filter /FlateDecode >> stream xXmo6_!ࠓ"ŲV/ņ(SV8^mɵ4>#MZ>Тs`_''C8* Gp8 4&z ΢9 4jAWkӵه$7T(M3"WFr&t E,ͣd!}%|Sږ5[hI̘$vjo "+1|!`lxB"'? INCFyV?rτ U|>4Bzru0򱹲ZOyL_ LngαM5^NsF\i5.h|yJo@VB%(YZ4tAnḣw?|)6:Z8ؼo(d@w.#;xق[e70ՀJX(l@ԽPG&Xa'40tRJ{ء#eRjA8l!#Qs.wcf(l# oP}ia_@:0u(VJR5WG"%ALHxkʌz}{E^7f>a=֑{B^>P= ﴗ.!t{EpWj:pj1,[3*ȗ)<-!Wdgrˏf݂5GD"$=kRNWeJbp%{dY;,6O +;~qNjQ=߅튜 I)l4Q> stream xZIo0$V.@`&IO @qhIDCK/>o4%$lRb-}{KQݬnO~{7ZjMo*_7w'zKeYTA?멞o5Yk'G}\⽙؀Gt5sGYFAL"Z52,jU~84Ƿ{v*ILaz Wl{z/~1(J"UжG'D0jƺ>@=j :[MdOc۲C#h m9eCWĞڡy#8E;)X: vGnfNn,C y%ءy{x1G,=DH[BW?x;#l{q c{\8c@[- ly "GJ+P2#r Ihyyݹ˴Q#^-۩TȎv,F]-V K-XR1zX' 𵰽!7`T6,$G$PFB(MBP% }Mc},&Mu\Vٔ|hu6Tپ (Yˆ6-ƣݢ #h֖lV4{L\VJĎs {hfa$\fn׾ǘQ{2g`Xy䧃kDzљ*XA;@)k7eY^3YB 1<>3JL؎(ٺ$ؓ%6c4WagWƴ,MⳔ@ʹi [6=K]J:&tGu?:WJq`؂>C$/ Cx-A׼@#-> 9Ox)L(o/ږՐӸ|0 Do|ez򜋐b@Iu(.>(CH]&=i*|͌:ObesHU?oH^fA UEJݎ I#G _`5:FF,x(}ltw<1RڲtPFdDy%gAL~vZa2iŸHt=SV1bV~>Jÿ́]+jO y"S^fu}3-> Ib&hl1v+-ˎ%Q6wpe d~Td jw]t:fޟMXEJ1R8J0Ƞ5lnÉȪ){seuءZ͒}q)NSp 9|cuW?"evwq.M| ]CB\rӝc;)nC Tr4½VrK^ALgUͯpr(Fx+d).y6 " CǪ_$&-FG#FWSf2qGk ïZCσNƞ+g!,P油 =ţHZI`?=+Ƴ#ꕪ΀s gl Z-9|}u /c*NF 1;{p'rwIY^ t\5% 5|n`c=.c6m::HO';_᳃\\&0=ӟ.{+, Va Pw vm_%!,!~MpNAB6>Sàjk;<zD32iePOw  endstream endobj 211 0 obj << /Length 2976 /Filter /FlateDecode >> stream xZKs#`퉪Za'ɺZ)F$EKrd%}3!4 ~~@1YNɷoy^n"tɌ1-'?OJ4V۫k);FWrf{ߛuoJ# Vtq|tԵR|r-5+7p K,o{ ]ЃZ†wԥeFG|eMte_,rw{zل}[ & gA )av,؄W3&~U;h6;j{Gz2K>n-ha ڊ_w1e%pKUEd"3"e0mWE f1ȯ5~H3kuw~>q=}_8 /3q`3} Y5 h@[ o ƪ9wwB2a(wt贁8*:e,N@t(0pg DCÎ :/;v"翵Db9Fi G&szyK%Qejk:sϐ(R|n\:j/kBұI L4ID tO}CG;mk'ч4mKoNqs"0<^FY1ȩ;/^:k\yd|w@KD]'w3+-6~bWa[\l<6~@tl郫SkVոZ%!41gⳟqiEsm Lx}Z:q s ԩi%c2hj ߹,gM'tAZD! !Y>(X0Ÿ*z?Iai,|ʹ^y׷$  &"Db<8i§x#S0[0Gl@ҸsQܲ47mœSRpg. tJ U/OZRt:yP(|#2u2S!Õγ=m/#opYq[42 "lT)ގ(lC(eX:fVr@K_[g\VF\tE8'뷫RTg 8HWFMzvqf/! c5 6l@n~}JhEwNL2JŸ'VDŽubk Ō|r]}giՋ@wANRB*5睳ȆСF3jb>CRL ݸa/ /@zwLXV I>\tܬL*Bꭷ2i8sb 6}:4ܲ4ݲ.4Aے =Bf=(|B#%=qjlr>=AC#!3e-p++Qu噐"FcJ"uRfT0 s+dW :D4'ݧ*E tjv+h,KE%1džϦ4a>8%:T1dpO:ɱq@k guꈫQK[ {p¨.S(bRt;߸G=Ʉ" "o뚃b z١=ȺG3*]3vG BZV ~`}B:#%ܒ}s/CpƖ?!x w D}4@BUy+UOXI_J~ f;ʼ2(xofuʞ P i !CqmNa\M6n=QŸdo 7MECfs$n1Lw%P֦ m(7\sViqy]W<̓WZ126z}|91.JeT?nWV)b4˫ SW8@ڢD=hOLj*Lc= `Uk:JeH=R eg]O ̗"@dzݰ=S<‘_4& m"QHZ?*ӈx!ƃ/!JV-9':̥hXV"rW ȑ#).qD"q@~K(M|rī3,Ofa} jO͎.P_껪32Eqbߕ/R;AgN1Xdfx}5č &z[pRz[23|1JWoyXJ&4&D D6pw{ֽסTѢQ<|}L359^_zrۼtwL 0*|rV5ۇG*"U6A+!MIMɔdȺ|\>8ez|%Iϥ|Ir%& 7Iej<[L2`Lypmb cn Цf/Vcw[e[oQab8nrכw7>7˗e/șcNj+tulpKh!3Ew].^>%uxwJKB3#c3|8n# "li-X6aܜVԟG_G>ޅr/9LK*I;S8& mwǯx."{~! #V-e6\qllS@h.BP0^Iyx endstream endobj 215 0 obj << /Length 1763 /Filter /FlateDecode >> stream xXK6Qb(>-(4ܵeo)JIA9g8T2[ϒW?^](3SI\&ϬnW7󷷿^*Ry%$WhzȲ,:BFEZD5nZS=MUWJ>)p[9[ёREVG} K>M6 m6w9rV^Y;hD({lY}Gu(ٴ{"gDò-jfCm y8+tnט8کX;nzda{Ie%O-%=A6yۻ˜\QhFxI8-2xgN9\~"nn p9y\kMBDDsn"*K4 ~6vN`Iy6+۹͢c6P hׄj>=pCJ HElW; RHwO_Qw Znv%fc@0t<|4qAcPE~Ԇ}];jElуwͫɣejZ&P:Oӈ;橧@g&Z2( Ɛ8V0Śh=GHzUDfڡ3sD\$sɌ%p 3P, gFZ'qH< fT0o>qn>ݠSA4]8ʿ C#Iګ3 et/$H% xO$߹sy^IAӐi\Y r_b\{əȒ2:"cȋX' @Pelnq4Yy_9G.NTNc\UŽ%]x,W$Z,^Z~^eY R hIҰQC>q>07R|F`t'%\߀-/͒ )VMO1hj0 +Hm:͖4y r,bw=z\%E{H'KR i(Jo .Qϥ"F+[pNq _00 V]L<9Q>XJ\3i ]:8_ Suijd򣭿έXD?wNvT"Vr ϩ6(JǙMRDLu4E{~OHŋ q7 M 혖: WvGM< )0 !eȊc~96])zK\ lӴwc5r endstream endobj 220 0 obj << /Length 2300 /Filter /FlateDecode >> stream xKoBpBIMPE!ɁpWUZg}̐lK29Ù5{6lûo}43M֘zf:-rVUnK$VgxynR~&nGS @y00w0[8gfHk@K+=/lq??mW1N]XDIv*/`aD`m 'k{F~ d{i{$MrGv'y^G{ dCۏS ۪3Þ8`"y'~40ÿ a6F}%p.9@U&O -$K;ω5k˖O'ID"- !#.Or&0pɿq1B;^(ǃx.WzJֹӢ)TD($I]8%Y $ JgTUDGU'qsDg%EEV((;>{ZMq5܉<ؠH/7v>aߣ{z[`2BDcM4/H>8DD:?rMX|;y'x$eQ,1hrS¶ֿtP0<6$Pcv=)l$=:0 `qP:jიUO3\6< jyPKBFLS' *bKK\',3*6.z kVd: </mߓ3d0&p `q `I]6]0"/Y_a6b #tE@ct~u-7:Z(Q=TfGY$cϝ v/%)jnU5pS !IZr#`X*a=ErK‡iyF/eiRS mʸ)/E!Ácqܵr@0<;QaqZkfPvd,t׊sk-$nxf%ފHl BUqƨ.Nao98gQg D QS.=Sr4-c$cEE GM<D1lVVm '3;^j4jd®/oT7- =e ~%Ss/QP zn4%>x3[!8sFEGi21F{TjiD5>*bRmiO\:F]N4mU\ spE;QjEE;3 xrf&j_m^=:"W a&  RTL/NN) Ža pHލWePkpT@Zs\Sm"Kl&-ʸKK">.c\ & qktd\+gj37} 5r'|nhgwϦe[N @v@[Y毻ڸ1 Vk4r<@j ^SpGOe9&kƑ!Z2vД;?jˠ755j rh.?  s?P+ K +ҰzavyNuo=[fy}w%/M{ww'*vR JEJ<6.ˠF\PhP_&㲃r_ADFwZ\׺"rcE>hl@"Bw~ 0(9KD:>FGV/ˊD]a(["ѝDikS%U+T5_>CGZ4}@6 endstream endobj 228 0 obj << /Length 2019 /Filter /FlateDecode >> stream xڥXKs6Whzh&$svt:Dj$RGܴIii@`vvd4%WϵDIG\2ºtKd{ݗޫLncƱ6B¶VdQ=kxcxx.'cGG^%s[tl .TڌbT=/~֐ZvhZz1_φOXF$5Op͡s}YS3DtHuTGZ2:-}Df*[MhuuCh0+Ѝ/tW8.)EϐTB>11A@dTpBp9JN7L AhF0)u-!V#BJL.G`]@>%嗯W9>dr&N<1YPp#l!kV ԟ0-PW$rAz܉? qv۰u(ۄ)!w%Aĩ ݣIe4g9|In+ \N`S)m BuFחGKMgw})2d5'ҦHgGEV}4t[NB2!2*PJ3PR(2`.ܾb|*&5SwT]--T{]VTIA\Q|&˚,Έ (陉t_"mJ.YO>~]c:lnr+`Sv-]K*rs~XV̮PV,,HD[7,̺޴Lidqe=)Z;!PP ](UwBЩr3>:, wAwsTnl೾G!CgRYLvdnc.\@-utaЭ>]J=(Q6/0r#!o\.zz"$סoS \(ӊ㌉ s)([6mI~Q#yصi3U(8N1 eC/5t@̆r.\z&_zW2]ƴ*O_& Q 'q N<]sz^5%P hʝHem⪤Mq} ,Rbt7ȗ299PWO-To}*:\`\hE>!| $TrA,~/s^9db endstream endobj 252 0 obj << /Length1 1496 /Length2 7548 /Length3 0 /Length 8544 /Filter /FlateDecode >> stream xڍT6,) !2tǀtw0 0000tI74 (H*4"]{ϽYkf?ogkؙU((BB"BBP 򷙀"RPBB@[2u4`(& I+(&$`WB"NΨ6Z8ߟt v `(_%Q(w)AA4-r@ dh(` !߄ 7_PϿFGn 0(;@# m;W_|ٿ AA`0P-A@p߁ '6 @v*@ FBQPoܞ A < ~OoWu#p# P;D Ywyc_w-@w;$!yC($F@  F!NP8ߚ!GB}B~O1Q}?0_XTm/~2 Gk{-ߵt#r+!Q!YRM!U/쏛Aa܊ u;:1o䯡UDקݎ CzB} P/e7=c0(~T@!vn p=`¢b %[$ N珄p6pK.@OIq @(tjL( t|DQ}%{!G}%L05? wyrV_c_1B~ &7tyA6u,?tX{7)ՠ26pd0Mw 0 qjhd%A_HqRyLĊ7bZW/GMB eE30i&nŋ[|N87Xس΂똼_q-Cfҿ4nAf2O<&g:+嫖)}ZdxLNv+[[>tL#SX{m߇_2c8~hжc+Hz0ltH,}8]dV:/bRz Q?J*BOŎs0F;I3\mMD [UXb'# bMS˅Oĥ'G $l*Lv2bU%0+%7 ޴a$GСWT}>Fr 9dHDW!qz3#Ox!綛!YEn;gnV6G aŋwUIRu7+EbdqM8s7a2qH 3b+*RQHtfgBHeIZeJy؊s}w)b *2IM e\CsD'gxY`pgFm4- W&%xN0Ē}-vtGнg[p}Η+[<\GMV\3 9wSp 6 3wLŵLr"GvNyDz )ڠjҔi5KxʝW4PW~a0$*o)'"Lko^=p_6^,ln`2dUjz-p|Vp{H9B\Y1g&V^ C6d=k3͛$#b|Qc凚Voq:y~`Zر3'Δ]Wu>U"+K3gE=!L\y%K&";o#ޞLkj_e㳸U VO70RtRxֳQoV'8TL)$RYp-Ći#͏82IFr\Ga?m<2s|g6[5J ` 2gu37qIbX/Z3zsGHgY[4NvWά5X)a/M?BXٜJnN Gw)KW7r7@U>+=W%5*a:Ź,U`[7ua{+G{l$V}ҟOͧO5w ĔUU.{L /-qcr_ߩ(I+3kc{)@ 4n{(r9/eɰ`b'F\l;>%mJPC ,;6_nU+Ͽ:݁H~ תDkb5dJOfp-t!<=R`\&pvh8sh 9v!vLZl (K~'$~)Aְy< 22oR j/~Q R?58A)llqMX1oUߕdIxeSbGNAY]I'%~ښI1zk` Z?vgإݽ7p6?ln{OD;в_V1 h^k OnDS(m3{H#*eìx,Ux#}̴@ۑa0}t1oeo-* UcR ބGH|.5R?En}毤㻾LU ~}La6_f+)vyS)857xKF"ϭkEk6p,Cx/B(76i96-8͘v*~e̢홗8 יjS=sI`̦r;-цk(֑"/'TMd m+3p_?q1|0֋^\AOtBo\ÝVoI#9j+Jy/;$`R>k 0$e76QYRVǟze, xJ+9z\gH_lc/MxK,ܠrNsWÓSb6p `k ~ A^@e׃4!KW7$@U6fސUu {|j!{ʨDTd#L5Y-o漚ՅD `=3AonةܷhT}. *@=I}6='i M[8θw=:u &زVOvgY朆,:34~Z-gH'ևvVl@m!w.Ri37RjT[mt27|Q1jxx73`W}5GKt7I0@B04̺xқpHJW E*饁 xSEX{S hM5܏-k)RyԒ`e/ߚXX|lyjW1Odl̝1VO:HJmqj,M_V䑭O\獯*{&ǧm4&qK_k܁uAb,&'YET} G8Ih@`(:Ng4݄tpƹİ2}5uKM%kK<[̌(yS"irm;T.dj|{>i VegMbmgߥgދ_E$uv,gsְdq>TdP!i9'hlAע+y|o4 SW+ u秸dǴ!6EĆ*qwvöU'[Ӽ$k`LhJ%_cՕ5 ҥPk[~*Do6˨6|C^bµaVIr,炮9C7Z\#pդՋX`iYNe_ޗ'?Lo1Bs"nToLKG,s Gff)FkOED (+1F+[6iݟԋk,R2(9b{4ckzb=k,dPk[|='([SEt8P5 wz|il칋[өIi=~ GF@ވyw~n@T.ZP&7wW+P)Jz,Dbp_d+YpgR5}oގc&D5syAŠURLԻuwyLw$ҊTi9sZyWUW72L8hgTUw s +g(%u$Gh(O=>C= %R9ʎhLW-dCږzTϢBtӠwbLTژfTeΣ'U>SiB_"lݵ9.|0(hh))5lgSZrĖT4E^M"_%H0ݮ&':.!*ɁV;2^6vJԌ_U#~ !N>+(3ew W>-TCjYlkӿ+s-<w*d'tZȪzzs~PH1iPݫ@څϱ'`bhߣ$&=)DK6{XoV[ 5Z`|\~p"'w-\M1>mCD &mdS 2'+ - Җˌyݕ Q oxg]?f+*-qw$Rk  p҅hdxwttQ`v ڌs2"FB[Kc`R1[eph4M|l}z v7>؛,8b΅%V~F5&Ƞ%xeQl{z!E}xt;.EDdilгNx[Bˇ){& kurO?&5a:<\! OKQ^vFx .C|M)42.NV4~q]>3PЂɎ>9Zqy/sdDr*%/:,lzު?x})h^"ڞ/&ç$l"C”EN`Q*S\~%˕eD觑>I>ª+QyAGYHR~dTeF`7޿n:bqNnU3]n!xhxT,BQkT@E}dw^ԗ!|?4J0'k?` IKg]tǨR5;uWqNē U ˘įjUwt|8GV (pw",ZU 1~6c=1v9}?|皱?%TL\[c+jU+ v/T?d10.Fҟg(Lj/"&y2Z&F.h](+MbJ-YbI   "{2IE)>8"d.>m(qW,x>aC,s~ S_p ʣ%aYo@\`x͓(^kՇ(ᜅ&:f˂>M-@'^䌘21PL}| Jڞ)U^'t D\r-Z'q o.S!!:F/OuZNљwqrBHJ_I|߭UAFp=>ݐDL^ ӟJUL1mYf80Ž 廢a |%R'h}eȶP)ιhi `"^p̦+ PnJ7fYU9Kȿo(/[8r̫='\HC6n`{0 K"rTO3xeӮ_nȣ#q :t`&23Ƥ{qX9&+~( I1xz{ƐDf# 7Y]T_-+x7t]ր+\-Z_U7b+; [t9CWW%_>bvzX&\NFf}P?.P?lF7\Pj6<Ob1'C1_ʼnxW˯kO^J1׀t>i 7ж@7궺;wJRΔR<4K<mP80͠eƞɊƐE=F{L3g~%ԣK2I\^Ȗݓ1.غ'bVZ i:j, . 47T-lj)nM^ɜG ZrS{LӗՉex/s$FckvLSZx#c:oV5Ϸޗc79Յj*kH4+{9؄  ag[bG~WaEx=oںu#G׊Iʒ#KC)L|ښrLb7Iuybier x -q0~тc>m}ڼ#-jf{ʘ5侻k.k^JxgFf%Fȳ1gkW Q֪Pot׹'5pHB%\۹U(bFζ_.j){M:Dq^=m:9ZsgO7~m ϯ;VVq{x"wM .$hh{>F".K 7@g^_{6dqSЅۡ'٘w2 *G1遆dt>"&c6Aeo<'_Dq83yGd,tu1n7IwC)lD4 D Ŀy&HCBO!6FŞ:`GD=tabwl{$ؼQ]dH9pN_ VU+6/ϡmMnTϵ6{%b3> Ȉ3JOym!A$ߐXx#]"I]I1jQ O}S_F BoI@v endstream endobj 254 0 obj << /Length1 1530 /Length2 9297 /Length3 0 /Length 10315 /Filter /FlateDecode >> stream xڍP6ݭKq( @@\[ZH)R;)+^w-V{&3yvݳ{γg&, <[ #/ PV0 bᮠX, ( q"?ڔG6 J I%&B%7 Ѐ`X,?( K@@BBp p'v@W W vi'8CLJ@pp|p'>z[@Ƌ0tt@>@(hpہa!^ (qwO֟n_'_ѿA<~`wGx s@W1 m  xa`=Nx77;>%0dx~|];=ovw݆; ф󋉊@ <@8~{ x@?X07zK@`lA`w?A}|T=_W̧lbW8 Q?@@@T <@_uG gwiw.ȣrAn/o%,?BT;U[~? ? Q^)І<΂RM@}p,Ȼ;s` d 9)?F҅?=jqx{Kew;)|a  zG$xG{*C!(6$|8_$ ? - h| Be>aMC^:׾ld2I ~CO~bz!'` PyA>PR"3%f`eO”1%c.e)LFV1sg]nLF_D!i:r}Dk`hШ30 @Q7 `ѻk4rj2ӼS#A_E<Ep7el_qr[[ģN 5$apF x?34RWH`4FH&z7 4x?db-'_yXȾ)~% ٕl2*PJ43wK6L.nL `4 $LmYM_Uh%t1x3ޏWbv6%_ߣidH_*kަKQNOxbhipYO`8O֯cykYxaiyI'Oڻ[/(5I2^y7*w3t><դd<Ƙ (Uk}XI?x7#9*݁`y#ʀ@ۈ ui?]ʩЛ_ɚ#Qa})(n_٫TRȚ9a;_ǟK|SDx5o7 |αVb'SP̊=Nܙ ϲ`+Ss` CZI6n{yU}+6u}Nm]:UjT;8K2Ż2rv;"m >'^>B9Mm'XԚw[V^IiaSk2Lro}[ԕҝV"Ͳ{o(9s#L}1ڹOqjyִ(,9؊XǓE^ ,`AbO>Kw PZy@Jva'L{JQU|A>By3b/ v,$ X30<~ iՀpQh"4+V=/ENf'l!|7[E҆$k70ֽl=ߓMVn:upJz{0 ~`&/r|t֠[eNLnsǶv7oܷ(Ek^uQ}/H{]b|2zH }Y{:i5΢Rck[ns';̶bߚ}nY #XgݖnH+*$N^kiX#Z=QwNz EqӜWoC\,qL@Qَ>>YYSiACo ai b}\oW:8]Tl=+ڈW9ZuM(5h x]ms;s*nEO&CG^3 x3LVf~0+`WЮhZDO1OժC+oJ%nx".rnIK +~~w^[/zͽ&kv$}O~r9_xti2e!XJ^ ) 6JGJϻXBɿW̥s|8Rފe\/#vǭe)- B_y( kڪ1Վ⣭"AĮ )qw1:'7d-OtȀy&V~Rd1k`1V",n_E)bd>Q~D!/4O_Dz,˲Lh9/SÆ*u+Ca9d8*{̑dv$j[{+gex~M+:o6h\-^,]čҮddƮM -7sveO뇜 Y-iڥ5c*f׉XqУR%t7R!V[ܺ%U.m螀#"?V/g|ͣkq"ɴ6WPh_bfDm^\C]w3wܿJu0~͢Csn9MyY5ckc dyֈ)u[&@|e&CX^17`~5S ȄQk 8W|R-8 4nKUU$qɉHR81tcvy1cneOϹgVCJٍ4; 1 r3zkΣVOY4sg_qPbIj`Fh}|C,b#\o\R D3޽`mY_|:J$p_s' \B*W .?ځb/P$7`/(Lڵc}BJx[i]ŷhz2ݓ;A/b? )*S%.?!;ۨ Qo#؀s?@nl/\bw_O"+S >RV拇PY99%ʴ3>]:4d!N~=}MAUڎ_EnOa bܚSYc9ɑ87xLݐZIM2u/g/6 {IEi'8iI=@\+}UNWV ╔s,y>%2.I r4.d!* NϳEiv!iҝr]B-[/X%tF㭺^#=q!q_E~pq(ʎL#LKeV;_M b0[Sc {qxn/16 V2뒮* &qcL`$LtoYJ ;GO;dxDS^`>D=ծr}K:ϔ?7s~\mWH,Uƛnd]d/toi ٳ85X;>DjeyFLSfd1GM>}PYM0qP)FG& V5Yϩ,Er=4BAha˲uGh)\ӏ|t)u`>:]9]7#M~^S~X͹v;Nz>9HT[%Oہ.e QsB)h<!t0r Uk0lQ',u8m⭳ISFI ƪ!MrMbyi杍  j]Gf\!}:0-9ݷZ^yEo!}y B'>..Rᣠ$^ > bl.6!mAڍ%PA)@#_QOɼXŞGLb=Y,Tjrw ^M5Y FؔװKӿ*tg__x4bcXeT-_x?I{W{?D05^Q!&QcTM,l=_ p ׫R}<+ޱ_$aI@WexVlkW097B(s'UMƨ: OlJjx?EZm  Xm:=i}8OB\1زY!Ck__nyu-tBӐ Afȩu:8Dmbؔ!VԮvX&icxB4f~V)7j}YVP[mmN.b^.S?Qe{56 z'TNkgZ79[ʺ q&6+J&Y*)}_BBǙ*л3}*T4LpAH Rb8ra,16ի^gΘKq%'Ej "M|YL:]ax ߟ0u\9fB>OjL=퐴2a#;ʻP_.#3OǧE|+B<9ѡ{5NPI2vn/1o;z$`2ǍyQOQj뭢S6q vηbH3.nܑ[S Yj=\_}Am6@7T06_:W3 r\-nZIzQ1fyd+_;Y)F8O_p{ JU`|Ά7mxW*2vi!s_=rI èj@lԇLD8\:XˎYʒZ@wƏ2TgdNyqt/4[>)X\VO@>bj1.&~[RaIbjpwRUP?$&5gq1dxy|"f"oZjWIG"q8n!r96ЬX)>Sose~ Z#(AH6تFb+2dᓤ !\OQ0|g:L'Sda/d­{Wȁs%˹YT>[t!_ƿg3ܕHvV_|`$а߹6Ec~`%R%uwr6Hg՞*-Yd@9nzʥ-}Xmi}ƭԉ%>9ǐU~dZn!ܖ #Nfѳs<-!`dH%m,>rV:wy_;ji%8hzN IhƱ8e盈*9٦I`Zܷ"s15O_ѓLf8?ľΆ#?SN&eqS#|JG^ٗ[Lӯvse{rtsLQ*8K@Tn*an7C꺢 Rm'6;XLjB$ lAnh87ktz%2_<=R E`eR#e6:҈@]ݬK ;NFp"0cB%rʇn5B }E-2{C2𷹌jdhѵMlj4tL-ᖞsm95eMfx?6!,F_s:* ^5R*c%h2 T~kdcByXտi.-lݗp؜WFj@2j"Pغm"&6Z,_d@vTHX+l3^+Չ~.-G1E[M''kjpa83"3r2&"'va+)ҵ5;g/x#,qy_/m{[𾖅2|u[/kv eđ5t*&t ˧k @r[Bv=j2lIx!7 hQ9Zi,!2S9kŹA6Qa8֙sxS=Lk۶-P%MBy1kyrS~tI̪>s}9|l< Wk0Sh'NA~\Qk"rpt-&/L,Dt>3>%5cbil3QY3̒Z̚xZkTؑUѓWk'QQKgMU5ۙWs Rkڼ>5q5O~2Dc:`;#l7NtV_ޱ!|aBFE9X=T(V .DO{" :S'tF8:u/ g$}5  'wQ1ơ<_ QH,JԄmC˳U!žKNtH wmHd>gvo%L*+yz|Ş(bC+lz߮ӢE2ج1cSsXnצ'>d~;% 8K>N>v6}L e@69-x*Cl^ޚ"ZJ]2&;Ab+lz"0^cX#ullJMMF%':sIIZw7ׇ) t2J,4vZZ‼:O۰w.MEMԋ(MKwI2Yطl0In7LieL8;)=vExh+?vi8x>kL"=욲t1F*)/͚욶:Mt<}x^5cX]gZP]KS"p*A}j:1Bmob(㫡dڠx\d4MܒFR$Ѥ^b9f_8{.7=_'.98by~i=tarزt[^4JRbb8U& S6 7 Υ .Y~c^Fe2jc&` Q G n6~/KIǿ3 xR ,}LƙEj ZR_a)(ϖq(u;,:3v}bND+"+_WZM>J[l$ ;}mphGxg@]îiYp}s(N?l\81Gma- ŏ^2eS ]ǣ_חKu!( 箰VedT8,v%͌ROgi 9J , d0Җ S.J=͋nq+ 㚮(n R3+mfdkB.g_Z/?"c:6E \f?2O=/KDz2_7=SYߡͭWό FKӂ1uNbGHۍ$!utvf6a5KcYkaolF(IkakXkn)j'ӥO+\BAuR[Lu4ZiJvfбM1T15*5ZTϼN j8GF Poꄑ:;E>* c,.rIk%ckNc*Þ} _}<0`UA%rÎ_)AА|ĭ?%Q X7Hp%/O nk򘤳LZr}/#j/ DY}:͡2! nF=d)C e^?tm)JN_bOr4_Xp4n׉ ģdQ) }8%}Ql Ft*fi ÁVlnKSsmB[ j &՞P 6A<i׼5dx|J)Zj J"%+**%B?̭T;:3v̬{˷0A3"UE :Qf X}ܝ#̕=+b`݁j-&ڃuf#Lgƒ^?X=èW\)\,pVԁ)Hn,tlrQBI|{QXEz-1ʢ[׻;;,^%(Wi*ll{+ݥ endstream endobj 256 0 obj << /Length1 2086 /Length2 14449 /Length3 0 /Length 15710 /Filter /FlateDecode >> stream xڍtk Vc65ƶmۍضNclc;ys΃}kf!#W450qec32Ȕ͝##S5vp41C&t0H:[l\\ &:pD.F:#G|PR99ivZ;m2@'3c돌@+1sr㢧wuuZ;:Q\͝Ǝ.FZ@_ %['W1C`enhllcdPX_4Hp+@CC[k;) '*MDerͭ *?GCs;'G:Gsz+ǘ Z[89U}66A&6F&alGbcnl,!o`l0v34+Jƿ=x{L>0671t=_027t!668s71zdžX1Td%%ĩBBnOZVf-+#8@Wr?]&%c~l1Ϣk32~1^]m_Q_V$le_?z->62\jI8? hcj1;ɛ;k]%WhV6]-ZF`?)2&V6JLO:z:[Gs[N@/_@/qE N"vƏ^ @}X*A,z?"ΏZG-G-E:C[G$?5((f [YQ ?LL?~G6>-?G[}͏aGevv)㿥"ghAOLA˿g A0~NfGQNp?8\?d>?» #9}}?ǒ!!wE]PC +,پZ %Ct"euFÝ`H/W[Wom ?^-MaN * x{[vI;s =,+TIFDjϑdcC9P^!͢fOJQyD1zjn1E?{W(39vhbߢM:JZ,) (2!]h@ڳu-Nnb.Cޝ1T!e݉S^<ʨyQ9?ht*-[ ~ΣoGIlK8y>3 }▘ rz0+ȠܠA?W{Lj_ ՒER^qJ8@>)Rh#MA/t]M]sG*x5K3bu=URBY7vRmvo.'hV'TΩH%5V#4(;^,3bU=ӿBFZm-S2<``7;у qyMPX(kc鴒P6G"^z!)ŇXF ױ0A}ɬ LTZ8jlAd!&u>(DlH<=pw_$Gd1YS u&i(jot^> %t?2 hB.>OTx %}oH  PO1,䊼P>.sA_%K*4+-15K=F!LkA /IXװj'ZɎ!xoךF1fߒb"bdOK6vc2[Ť gmnfsJ2qAV$/$&%qٰZE/XsC"Efz:.GflȆ<U.c …03T^'&R7DQJ6>$QzBt/0%3~ڏXK&9TJHwablfPmRM<]CߊiwDT#r>g/z뒰< I2K~eYRg?B9WW^9.{DBsHq`S4̾uiI3}"X?f { k˙N_Ee>)q/](Dg:܈h~K$]v ֘l8ĔS*oiMUD4"}K^OuWC_r.`iQ\ Vi7ak{E3n9<Y@AW$1[T4覇RQf̽)%zBvA%7;A=R |Ntas:6ٹۙݪvWGxeI(-. ܗH~0ه 6YH3ik9b~|[1=8Qo'[tȊETcL$yEQWscVh+nvàыME xrZpICOekbޅʠ8i+16$ú|`139 9-~~k2rʱ") xm O=а7LU8qU3WȾdB+fW4|pmI%gNV#!Zʙ&PJT%k) O_U2KnY(́ZYd710`Uېjj2!^g~Kbϣg=T$ ?زI—j9}gdk֍(YK%t38֗kƬ 6Fݢ$a ,V K5}%Tlgإ9__kKNqpiw3$2gtG^f8fh,}vs{!7S 1/%<ɆIPnRLd(|ji@+FIRA+":2N'U @όڽƞtF$ %F{~Iq.Ċ0k_#kjlΓ9vRsFۢ >^fa-jUrUv}b4=(>OLM 9h2DUkW۔\f5θ9I7~ {ա>_ڿ2Oye/dq ZU< 88;fTM~H~j]<.o=?ᦽ>ƄV" B߶EXlt&?wMGyNva5[jKHxϝ?MNo%k'aNcӌţM 7)[Q#X n X Xw þq58Ʒ Zc%QCy~1{Gjԉsk߿ZZ ם#RN4͋fуˠW\kwKe *S <&Qg:h'X΂ĭ=UݶS]тI h(~ÌQ7c?cqɵ;Vmfr.M=ǮQ龖lxIViEzOcKr0Ëw>KY~fO4Ϸm>뒙%IA:cӣ_U4[9N=fqX=v*~1$|i/|{ d#]^PDqƌ2CVIRzB7?a;A#h g)))MpA'yȘ(IyL >Ν/}.=;0Yxeg(KudQ; .Pk.~,lwqDo׍7=y;r,%˝QNWW_=]5%ٷQn ZlZ|5@/Q#Vl@M{ *ϔB /"*??$_M'7%3Tlٶi' ܽJDG'\EvS؄@ Ҹ@VKcCi#1<Ai-`7tO𩷚Q}7tACM =z@2S#DGRjs*9!Wwy?e3Ch$Sg氇`V|M/ۆ!ݐVB9>9𝲐jhj?b~aEjrU8++vpLIg;jx4?xK-Im Q~fK}EH"G~[ʸ`+ qW oHv?vC?Kz&&0bWp1D;!n8.nQϥ2BN84r@c|M{{}0ltሚ3$6+:-RχzlꦸMYZAeEa,5{"TմM:ObCnņ+6ɏ\^Sl,5s>A _ o.\*ê hzQ4S𥱚ɟG مc|ԩR:IUtE6;`v7!W=n jRj4OdkȮqLa@qUԿ.u^?mͩM0`?Ă"yUesf&__M:މLp^? 6F8 >0VCwmeP en[]>y.Em}G sCJu{=03H?H}Rܨ "'Y/K ?-h{9Yf29|@o1C/ó6ꖲ%T0☲y$M+ l{s S1:<=VL}0ijtZ_'Es$ƝNw+;,fz+_FTGYjn+&mƮ󳴏O#51:wFhrthuH):3CyZL8b $eTZ UyCS$4)8$^ Zɪu[iiudΛb8LtsV4NfW!&sh{t{⋢18w4e3a=zf%F1*ZDa@.!zYLI6}Jzh`|g6L lp o,&JEy:>t7v˝Ǟ Og=y-v |}cF>Sqų/K:[]0Zo5ZG~C]_HD9wau9ӛx#A\si;r2]Jc?kca^c[,SV&-X*o*mQuR?N-L$w%nnC%B =^&7+41wej`9?C @En9%"Bh_VAseH >Vc3\u@c%"=ΜhH]-6yt#,4辋xC9r i *"D^3ޅ"LC8 *lCi]?2tW|$zUĄd.Ba|- M:?Kώa{B-2_W|zx.a0*ƌ%ac7 –}6r͏_\2[Qwx$T 4bAl$˝ `ie:(ۏ\GZ{t ҵR09s[ hs њ:d)>dw#ݢl2űt v1vmȘ7Mt_dtň S_C:Xh[g@uV I9Q+Mk)=r0`divuDGY{`T0oe혵L_c@,YxQ~ؚArҌ_:E#Qi\rQ`^*޿T%n%lVʎ_)&&y(Z.ذv~G6(*s~ʵWaI\)I9%ϒ'JKΗLMZbxeԊi9dgtӞ,:qU ZJ ۭj`x8=3ÏxfBڗDSP85'^qAwna!/gbčJȀɡdE@/+CpÅI\Oj\Brh||, PmoyMx(ݾ~N&c$|eb/ݴ#4 p脋Rcy8(Yז YI"%jL7KҢnŒwނ-t*}UDHW&H)Kq`d`aSdNOh; Nw60l EݳWY瓪SXl#1!MAH!RW7R!U|N{ mHRŕ.i$1*+W;jc~ ft9vR45zŢ'h0ҩ]H〭֫Q-^ o_!7rr|Waӛ9,NL+ VzH U!/ 0-5T.ṱ"Ùi?|tD9H6iw_[bb5D  g[ I( .I(؄sQc0C<7!0$nRC-wKN"p-Ah*/O>y^~}Rem6b3T=~qMn+% 0ρ3^􊎧K%ǃ&$Dwק|逓TȴS:Ce -: |ë$}hMVAw@x[ } z%7[9HDz-,6YW:\Dsz$0~=.Idx'mubc{PfK]5'c.M@aByOZ!g!M4EſW85ȑ MڄJ92:A^&!sQub!|&/#{lq_mHmuuWy,fh~H. QBAO^qG<ńs¯U_u6mS SrNox#|xBH%$h+'T24[(^qc_dB:#½qUi EmԈR ΞuNMh4oFB$U]s#·TVqc ɾ[KmdMc}XZ1a sԏb#vSDt넣M?9}b[C0q3V$^ڬ|ҕhQCt;/ٚ&~>Z0čSL-/O_1Jar ّKYr-8=IŚ w% QxǠܗEe$Y?Ib:\P-c>s 2u 22)B$\I} Xe~יf::@]-&KefN괖|$fwb{bȾ5KEɔ `7-&}y9}dUϱtgj@Hw@$ĬY !sFkp"@1F[Pr:@]|)5ؙNITc %%Ge2X YQRM0Z\5z#mZ VYG~a ry/r9 \f-&v&8fp]n8UՎ?"ZGkIiW}Dq4Celp0] ]җ-iKg9; Sj^NR쯖ԉwUvd0#~pT[`oP+1F,嘋K>_xggi^s7CN z$Y{12㲴5UkDtvZ.kTAd}WY%rp, Å-N8K?U)*]S$b#}ubՀ~@!4UC3F=M&]ȸ)[ܪ3ZYiK?=Ee`IkA7"my[ϞߓM)Hx+Ƚ'W##UghJ89&a3 X棍0V^tQ,\M.,a[;՝f_ _+79-*J?7`ESmXb#Z2M;k\`W{F*ړ~Yc 4 Ԙߺ|,HLC}]8F7l/ʠ/Vf87{6Mm-VQhS+ػ57@g M+.՛XC[Z|Z_h.8>mkgRYUP/H,9\>fz]= F$'rHA*I2IJ֎N2>;;z^Q!Eh1Awnό \j5]fdp{G3OY!FnJˢyԻB\cU>v[QaI*n& \>OcGU os08Dk{ޖ[vIꆜ3"k#P~n>bP,ډi eh3۽G@kbd-LF2L5"ʹ@}flẅ́3lTHb/( %{ S`&O_?sܒ'R|BC0:+?py'̰ªx*J|ڡ&SHAS8ƒAޒ_q6 ?LJ2J\o1z\սO7Ph2V&(ge;`"A !د{.GiOot\6*H1܎ l۰_"ʗuٜa|vl{69+?U\!n_[ap&BY1^q4U 5m*Lv_U,d[攇yRִc#t;-s\Ec[A\L{VY}ao8ڷ%g|fF#? 2d%rl=&`)gLMDfC3 Hc H,rыa\^d#%* i^#q, lSk @ a8[嵹31ĈF Z'9zFaK߅H=6+"W[^h?+`  BKI4yi4UGKQ7X,q_S(P'7Ɖ\5YY?HT֖M꠨+zͿd͊z/1vE⯳bLkMҷO߁j wcDz2S^Zcy==i&&^Fo_%yƄh8-ݪIrкɇA1}fLܚ;܈4T=9Q-enGZBE=T9uwztS_ߧr :7ޮ'SG Z\wh#hJ1hd8^IE?1WpW{HU0 oOBP#_{:Ip+t7N~ˎk\br]fGEUQVkPߊs38$2{T{Ĕ{)ܢ J2ve~ ȓO8y25_D#PfVRФI֨$ i'!Ӥ&4 =Hz1,֐D)Zs P,x]bc4ҭڬ:lgh)ւ!ӳ4v-qO^0DLDV021;ys99ra5'bǨ6'E F`e.^YQ , ]3fGw&MjF"`OTQ>8<ڰݚ%v{}!q͙4J81^x 2Q* 3cT]8l^l쏯Ȼ%J\C_ #`JIqS'V sh }J| G`Ov ؉yӣTw}tG=_P"x*Z_0EB)@ ZjQ0x N`-1F"1z"eat;xM (TV@^D{m^Zbr(HՖ8xo/ɮ5Ze/ΒI3UO\fcЯkO$ Y,6/P<\R.>Z#`"̲a_-Q]G_{O@Srvf,u|A#Ԍ-itݴ3S%P{}`Lm3i2dBY=\ށ հO}F+@ 9nSlj85!nk&Q炁{wY(B pt(zjTl]1#%H;6X}1dshg|TРvg g,#V܁Ð63xqgWj `nZ|mq-E\v䄩`伉Hz2A~:>2Aᮨx:W~vE KbbdF37'l-D&#U@R+/]g]ùɮ"DR}nӚ3qxS< %md 8w>0XGwK+OVO܆R4akj4/v\!Km4:FT"=Pg:1AOy{!h%sVLeAvA yBDv.1(31D u{nHqd]2=ĕ~Hcdd!Kﳧ~lل/ RMsxtȥ~.ԉz# k-HmȪ J\=N5TWQ\1ǽ+gzeF<sSc"x7cܒa]pXYgAYFM#JL1TAXӘuCAF=5<}-VcP*׶~&>˒]2Y{9MzwFëv&D]bttl3F%&+3pfN/ ڐ֦^MsHYLY4i;($SbY~Gjc1|Ԅyb88:'%N/nWtR'n<]#M/tgKxvk ǯ42O˺^tj*cF#v)}s_.ppWFБOɺ+FޘY` g4e?K]űw@MdNPY),Xwdq$> stream xڍWuTݷAnDrHidA@nn.nIE]Z{g9s\3Gqyduxy<<@>|ff( ;ϬA:Bp`d0'FB!e'+$+,ȁg@2qgEػ!V֨ە `5g sNHAPs0 ݮhP_%X%Q({1nn @ZIq\(ktX~ PA б:FX\HCINp p>@[InV s{@޿;lnݠp+%T(W' `g06n Ik399jr:BaUv;;?9(b~n-۶-,bdϭ :8ADݺYAPAaa^q5=wv/{=vrp;C(㟁[ 9 `~Xa߲ uܒg8o斓W~ed.>Q OX ,(w% 0NDDhvӴL`S(lRC2`/xyoxߴW' B0?1vBV>!ccJ(*V: (;@8B5Y<<}xK!ȭ<aKt|B0 vÿ=[K{N oBp6p;ui6y0Bn?Lao_-;!ͦc$ W9$\ߦܿT΅k}OkΛ?N3C[7B,Sؚ,z&QT6b[rz=uTuPii14[XQ}u9ct8ZHVx\[+.Kc(<FDÿI:XLzlYXjh?>hGbJl>':t9ng^4eG2a]螊0`y]2߇qP#He+iǍx:QyP*e JT݌WmST ҬjQ%48,w*޾Na9J}1rM.N |cq-"AWwUvWflnﮋ4wdf,r ~N<]N87.uފq#P223@ȸ9C9+h6P$a67)u[ |<;EW*׶AIۗp`'|Jf8?(_]~!. $舚Q=8@|Y.^fta;vȞ0w[o)mm,ƍ^vEA fCغT*.zAI4e k{ ~:rrVl$bW -Ӓ6wZ'p}NEgߜ1aPǫddc Vម$SCi1i_l$$t#(S&btahya2YpqpIWZ2(vM]]A *(̳ƒ7o=T u]< /%>5O+I{K$bmfT)sE*,&VFu,f7 +7/ 2XND%6T8]P,:~t7hjK\ 5; NEv0MܚAFonYJ9re:d_ >R=`_RF4`[_r]FCܕԗZoM]p9N EVj7Kz %!Af4}oLe줒jܝӶZ:eb7oé5}ߕsܠh@|!2FgSzLᢃ/ Z)qyzu>^evhשKڌJ{8*MgT,FfM^?+2ԽRCW"#o!aߏd14Δ >YdmʟN3POd[rE0 9pUdj-mJZSje\` E;?{la^&=FZ-DFSh+WD't#U5ِ~R$:תeU!<8 Af.U؞=71HcsWjs¸jlc.ɣGr 3mUC0d|YJ,$o5q=pkFН !WqPgFJ;xf*ţ/v1 ^{mD3׶ 2>SoGڌdeG\!w8̶='p.,p/2>0Ƨv뒣+kBV<r%zH;'cf[ه`تdi|_& kӧ,t|MwIQag=)t0DC!WQ{'澮- ri>aL&>L^i$甭Oeu Xa'6R2bMKAVOG^O9,Z+yphj][07AMRj>1SEq5 EJt0LODFbjJ` /D$)Dcnpg^|? ~x=J)  fׅk:;BTe&:膙:&c631X%e6~Ϊ `nȅ Zr7(~§6ا-MYl~&#,8'lZ_ZXg֝s_YL$1BqlXj2#ZfqƔa,DF4_u<4 ٷkiShun'J~;OLIf$ܝi6奕U:f 8*Q4_#%EKל&^ |<02!9pi{pB{-غBS^g&8.c,pъ S.!* \_ P\*#פbZ9@̈A;DJl*e*Ư)o(9ڲҨÚ{22FP((٤R;d8Tm~ƻG\1XHl W YJ86Nqz8= ZYz[)AHPY7YQ:.G@n;gaA8Lez2냦B!Fp$o,ʟ8~WH}BDQ=<͈R/&xm{铁xM|-wyY]#r ? t d{[AA֨+g"M+Gz,62BԹWDE䵘73үGuff(Szly &h%ðEyt 3Zީ,?)I,+qֳ^ri)uhZ1ύTC HnGJ]JA)t1ᤇ;qUsBO R=1Rk;k4?[s(g{Нq dژL "v &|Jr'+v)qdq6*Mw)Bd fg#寮@t R"107MgU4˟ ƞ?ʇz *6,RVS?֝CȤ9Հ6:LEOH)=3`B+bӢAc;W9oW4Q gx`z#-3A\Q€H2c4,MwӯGҞ,u !)~][(Sa..d'!cmpqlGU:֢p5"!yMQ:ܬ"(F`n}v}Iqpϋz*f}xSZcremOJ =-yz6_ ,f>O:C5["-Sڔ|uꜚ$ ##!Inʖ ТS61O~1 O >KAamAjy)?qN}ǟzF[f0"~^إüq~DE&`a|89z ӟ̃ ~T wa]4_N}l',C[ }ŏSƂo|=)Q)O]~w-V p; nļS&+xV]5ѥ(,Jܲ]2S06!z1KFL9VɪF]i] N#N`)$ζ2E~t?ba,/֖.=LZ n @Re ~w%;9^Ө6czlcqFd l?fqa]3 _ y_wZ܀WSA6I^/CRuC"0V. Fc8k4T|Dqs=қ5T$um_6uaQ&5{ЭݼOCߔ?pU+?ِfv5P;^ljOiH]soLY/AFjGjgu1Tbo(d_J-+,w"Kv LFZ33esf𫓐.0=ho)I+QɮM4q8^W j-X_N'aQBH/}H7p$җ]<ҭ=#/ni8uĖp±%=W],yEQH{@WΧ[sEC܋lM^ 1 dM|eRrᩧ4ScFPVXF֣S5)FgnZUߴ];Ϧ>:_K9;5MF`jO^vYl!MUMSSy'խ/G6Fe.[s{A\\|?5y|a'%8؇/`Sq%<> ܹ{e]`idɟD=g ce-7ׯ.x)|U7]+}錯\+pZGXE 2j'v&[_]b|WCN@f% FqOI'wLRUukã/>!48?8OOQ1׷tH4%i8z,xH`m kJ;X/$NY+O/%H4ɨ*(>ͤƲ]6-Vk?pm&{hxԮRzU]u @%ov}vMvye6CxJVHlِVO2iDYմWOxMh3}ҘN!s\i%DHx ;XF9 x;suY=;C|̐",P凵g_M퉀تJ;vvE;kc0*x-;!KW_f+'_:l y\5j 3J &iellj0,[la/^1Ь^\ܶ@KO{E)1y .dz< )n4ҞxQf<-tjhE"GNp9 endstream endobj 260 0 obj << /Length1 1484 /Length2 7189 /Length3 0 /Length 8195 /Filter /FlateDecode >> stream xڍT6"UD: ${Mj@BzIU@AtQ #E"s=wf=YϐWnQy@Emmu~ٍho?! % 7>%0 whx~ ~Q   #%J`/@w_$}ߏN{.(t hg͊`n}USFH|`7$qv5!;0;HCQ7)$fu@q9~>w2BݝPŇA` ~Ca`y}f¿C#46+;( hH;:\Wwߖ#;E   3F / 8x3$!G 4߁[=`qǾ9$`?ϓ 01PSCOC_#TPy ?HH z:z`_}W#د~o6"_ n |?wU2;R~9?q↺hoPSjCnUGo tCi^~!>?8AhoKp0;Dbn@ݨApOA!7wp_H/X:@|~soR73H_-" *r@,Q%,ވ 1@2@" =ț~Sfߗ'KTVyI즟 X{Gl gOiLvX(xM0 2;1=>5B2Nڈ4UQكCA cNpk7eFxN[GUI%t]Ѫ!%X˨4LM3DJ3 bB4Eɕ%镄*Mf^-ʤS#S6ϕzZRe̙!l1C_vΉdjI:Ate@:^/1jDkNu /LSɣ(}U=51~U*l@Зl3ǜcb-F2E3af䂂^ c`ݷ>Bc?mm S1q~ 53/wk3*y-T,Zi _ o/L?Kr^mGQ5G^~rXD'0c/CЫ$$|r 3C)ջ+i2$SfLsn"EݴZt]#qB܂HKAt & 3l&g6>zlr2P\, 2ߨtRXg܋^3{f\ߧxf~Į{=2`^;U8!M2pY/' O6\4>esmϱYe/vsk <9K79-{^/9*SvF-KyF8tt~0{.hdn^F6JQ~wa$ciOռ@b$0,/6e2E4xxA6U!mh0j{B*U+kݲLq;ysX0|~4^1}᛿3L4E4RўDЁk u0^kG܆ JW(43@..nc ִX!$<|XNs߂IV\ !zpQpusa}UOMiD8m,QpR+{(xXZz#2㭗t5;57_ͣjo puG{ ݫeԒ@72a ؘTQ śt D]^vd6z}(ZedQ2s*ء%kH6\  :8vβu/}SMYMr Jؘ)LaQNKCbCgٳ"!8$FvzKaE8.g3IB+0R/_ Bk<,.dc1tQsf6zV/88k ;7Rw^DcdGV+kt~M!:)ɪ_"☒}6?%jbb&E|<| ~{%J% +DKc*-=لt+ @wOɤ~:yz{ isMрэWSZI6S5S9RSx9װN r'I-Yg? zސG?^6`\~gxYV'<&]g; :hF.Q?Vn,4uJKZX&2[\vGFÔ]LpGI1Ѻ5 9XN G(8lHWM NukYT]}ʻB#Cokf}c΋^Hߨz]-ˏBHB)C4{]Z4Fn30 c62eC4qr1=d}>ZJӣ]1|6hlg; (q>tϫϞĕ~~"l ]:CWa1([*l~DZך!\a+T(%F?&Ѩ@uVYlCS28P sn)T_򒻶mMu-\mLu\G"h`b/l&IRMo[6C$JF5pbIb8n#jIpܪM>[ە6 =5WE"t_>lŲ!\^wnxw@Kc9 ?ƅ={u./ -;jx3JXR/*6?]tWENAOpSM=RO󑾑~a \LZ˦\5o@=o ͂}\/3$7 t ]I<*m]u˵2 J f7p*wz͗OE{0fǥrYh31x7`\_-ޕ#ywʛv1<]fwzұ_/]@^H{**(}j1v2t_>sJ{fxu/)o`>JX +dž]=ߞ F#[0('8\cZU8e,T٦<_aN[i%Ҭ DI+r;1U] O5[m^lh*&S]Cp uƳæO@k r| ȚB\N5rl͘d׾an?P(g9]F9J$T 3-gYI{nrgYl'fR1Q snXNGf"KٵW{L9Flz̀e65l{z2l?u\> ]r[ k&ikY5M,QHK66X8B ckEG(N7mDuXo_7uXZl'`P !='1JSD%Ud} u͍&Feb9)e6s)rʻՏ65l'q%n6ʌqw̿ŏtQZ 6#顯Rd;i k] :5\vu Zy4!X8|ZFqq1;Rx0-QуA*n]O6R^(P[5Ӯ_PjO߄:"DW=| F}y`TDXe޴g1vX d|\+3u)խ+4 i;QՏņڍqvgˍEqj_'d+0LRBWlhdOd%tYSQzova6y_P?99f59mXk;rbGoJ7ss =|ƚ>Kc[TqP.%Kܵ*7t:~$ D5V~DI4{c$`fW O-隮9#/)q("S~t񁣋WGZM|Y/S1z@2 tuHT6~dOOׇ'f4yNb6;q_iT״>vfMKq#loPFmΏESZI- e҂:-بHLM,b /;:b/;aoqر_LceE t ^y  ,fpBh؀semD I}GrAGpVgİ{-^D F 9F8;&%z9K'鲿F+\Ӂ\"r+`%YAT'Mχ%̐:zZc>Nx '㝂Ư_)TАb }  1xpͫ T11rfzr;r{w/4t"#zm_ĖSυ `&>GFKokJ%}1lu rsW:#nb: O}"v97An\sՙ5hޏE_g։r  υQΤ@ַ YXɭN"ME~xziw(!b$4炻zO|ʽl@r _|@=:)![^`V,|'aC&]o?8 YJVdzChgf`W_˺|pʡG}\yf־F>Pܕ]/9 rhHSElT0+a%T,*l齅4=n"6/ ӫxn$| Ai&,Kkxv?ҫ)kG%+i#Q ?J#֞Rt[ov?;#HuK bUgAe3hhHa$Yf%/(kP,.{d4ܱɮ*+$q TάP)Q~2O+2] k1%v֦x}[5Y\{U)+ JB.kJ_*,5 YJ4MdL`h7BקeY8 5ax5jNIf>;Zyli VqJ{٧E41=)yh_t̋^8G4OH7o"޵a;W?tZPI`T.-_o;ׇqY*x?YW1^/y'g㢻O Da|Xgüa'Uih{O @):xH93zWz[#Lo¦C.Q}FR E0ާc߿ڛX^KG!8CB28Fα_:Tyf9evy9'3]'ozV0snn&pTtf \bfCU9]^lD8Y O^h6hm܊&\xܝlWԇV)X'?d`rj_5^7 a\E0JTDCh*h572kџ`?n/t\Lmxt~|\x̐df%3ށV"?Нċfz!- _imݙYM鮖&? endstream endobj 262 0 obj << /Length1 1386 /Length2 6140 /Length3 0 /Length 7097 /Filter /FlateDecode >> stream xڍt4\"J F3=zEc0 fEt;!A-Z%B J$jRoZgsY v4 K,, !nRv'FI/'`XN4\0I,/ SPy#m@B`H~HG',\pn"!!;wCx"0 :!p'a!D`QK uaО2| 0Oo=k`@3);`>0Os"ᅲGxCu-@ _08C!Qh `}| e sŠq0of0܀=XkD_epWD!PX 8lA5({_C{ ^u?>GńŅ; *or& pG!H4FXO/D`"@{$ !(Tǹl=]0{7+(WWPY[̂)(}~!_  ý rQh.ղ_pU7b:hmXn SoUnHwwܐ~8zaq Fto)jH/ca8%ȣql懈E/^;/"Q=4+'Ԇ_6 O* <=a~,()ڀ ť'5CP@Gp/OO;_ou#8i4\*¹>Nއ4nֱRkblRa^fʻnsqF?C~fuGf&SX)f(0IVx1Sv;S=qREL#U2Wɗe ~U7Z΂eO :٬m')>}T݌a_٢TR J"D&~TxoeSة^We]b@KگXb97)tUq2'tH0+\<`51.^zA L8;ŁW\=ǕAY5p ~Bnj8*$S7t?-R 8&gPy%KeJ޻3+0aiU$W@lpS*jOt3\s:qA=W'?a!vG-ߞ#nYyHLt㏚e֓*љ[pr0Q~PeQVsvۧTžm<8<#A1i "ĕ%ξ*Q ZjmuKohduppgdb;8\9~WU#^-{tՒE=xc#WF ~ӄ̝!^ кTBPfUںRWlDߑG|Wu~`OTTѯȁIz ֢&HcVw( >zm ܯ>lOˮa6?_cW-é* ]J/>&>`?,m[v#z)H6@Xf/8m^ =%6u wI|YDH3QSx悩}*sE&FKd".{.zGەIqZƐ<C ZQG_!T_y,h]X[0nݎ&D4# zRRK ||O6YW;0@=FX3ژ;3 a羔0]3vm{$@1SWvzd<W1;͈,gp285)'jqT5S>jܡ86zibm㓞 c6HR0~gSTQb"UlS+GgGĬxc£9Zf-BןKߺ6{r+e2 #ҳ[ma+(+ҹn{kR%ڡQkN#'u9_>9de'SsJvQ1t[9::k%ͣl"cY|}ڮh]ՒB}sч,UA\>{#D_W`~Ɵ+PQԮS+L6X2ſX啂4L߈ \N.&]|ńmfcY,/dUt 535W-^'b\+1Z41SsaӌBәM5!77X6h5o2?z}=`h6 ~ VጴƵV\Ü9fҗPM$)}\"G}CJ ,wkŕf + <>2йZAڃ着$yY~CW[z?w#_^%_oeciqMT:f-5񻕵 fǗVߧc~ 3XTd|,/EHa+ Od ,X,x7611í;--EGed$dds )oǃRˍsJWޙp]SY4|[xfQk4 ϙBÏKD[FD^4b}՝7 [;G$7;(O?.~7^eP[ǻJ^J~&mhR)##@Cv[U ->@f(]h'!mӹ >y~]뛹+.է¿#Q]ž, -6̞1^op"B}q?,F(C-D@lD?9;ʛtkm-/w_#U4EE&$6!HSN 枎j}x*/>f1 G7 >:OO/I:=> _o,P~q(0|r)`&?r}7*;G: a!דIQeZ~{Dƒ ǴZ6phƖP`ޮ-(bmLAϊĐmfӰD!vsIaC,ftIw×K|~r+c׭( 5D 7= _ū{F x\dS5*ZbX9vw2D`;H<4/A~@u6r2k ۨq̠P|{g? 5]% C" 55wv61~[MV >ӛu{G۟vIȕc-mmՃm`gxi 2v*n+c"=g+ c`(#@O.ɫ]h@7J Cc5t%_C\jE |Գ]7FvѪj k/ִQeν؞Nd'r0gD^R p<&Op xyW6dQJ!2'o.X8mAPL=Yu> M9)Urǜq5V_׭s/.'M~f;laٰ.RQxuM5S[~&qlFN8R];muD]r{xlw*~5m;@jonC\]2LڡouRdݞ,ԑo (, <>;쒈`K']}w̆eþՏ.Wz(Y.AJY=$Z_J^f)1nCmiFi]K7)n#QLxi]P S5Cx= .x^FQ+!#W㞯~qFc_R_b5{|,f^P )!] 7NAaa4 Lšsړozi)qhi֮ǫc,Y2Ti%,}w ~ʃ?4>ώVfk`rX*p2Of,9bފ3JP_|r$'ȼ$#"C3mjt!w[pDHe*,{|"s&3^qrb޴m3G}O$ q9B)sQvMh: 6+TK>Q{6m(θtl /ԡ _BJ/-y,6ӐDֽ3+i>4' 1٦79u?{͕PRUfNj՟xSKULИڃ4 TZ Ty΢?<&ү:{ws߿@-Swmh|+֋*\0~-%c3`mmH8 <#y|sTҷ#2sDB3ï­ǘ&F;Bj4@{dyW&t!_I@ݏvD2#u]YMw]Mo̿ޥyQ#2`ÒZ7_qz!W8Nod﩯{,+6A7Tٜs@b 5+͞׼f MW̝Oݛy̧P!CTwJBX}vвaH7bߜ.A .ɳW'/LOV)6&0[RPVQ@{zyZ0=P{j#pfzIr1h`=}z}amZQeP4^  7+9s;FMAݷ'm`{9]#9=/69y)c%hĘM̄k"T2(Ë Bp6v-gyGH݂.y5t#],DfM.]}RT_jJծĉન]H6RfġSh 22ho+ąPrƬ$UfI+^2(͍xɖ&IOwk-i@׍h. 7fO] v-: ?,oJnHQd7 }gJY4S)&^mpuq%-KEi&f=w~d,Y B%(vl-0mgq\Ы4B&+RB noo&e}ֻ;-/O:8mL})wh~uch vDfhgsR:*dW9T#&r04')&neڜy>KV>Jp6]2gzNY=@LzlKEm5*"o}l9?lR++I]n J5T_?g0b*(ֺqE{+h$ݵ>o9y$z:罉Æm4ܰZb]3͇TPF*Zr+5[];b?x%JV:D endstream endobj 264 0 obj << /Length1 2637 /Length2 23309 /Length3 0 /Length 24800 /Filter /FlateDecode >> stream xڌTU .LҝRnAnI)3kݻX v<ސ+ ٛ%A. L<Qyf&+ 9-1󇁨U&fj'oȸY<̜nmxޖ0^ejnqk`X^MhG# y+R>{G}X~5,c4}z^`,yI = څ쏛"xZ8ߓ"oM9 5.\2\hcS")2 ޟV=ZrRWQY2T@ͽncKws!x軉N$Q.6@"k7֩/YDm〖n k#amw#;ݾ%4►+<Pe._!4(tn\Pơ|AE1o21pA៱|lP9`뎦̡b%גU(+*/S}Je:`lpf%X'\6A"6i޽H O{3J8eݓ(C"}7f7"G"ñ[j!y?t9+K GAš5@TUNW&-FNY$/{(Vԋ[ GsK]BZ,y $apw"xjw^` _wGvȼm+JZ鐶 ;WTё- 7"o;Y0OYrE/>W9խc -'P;ȑ3! ,ˈݵ&OH0']1zȟ8 J["؝I@c42#,yru-$?ȁU/)Jgj?Jz}?DK5!h0ォ@Jcs3Äj,"?f'Ԭ9VSXijBδE`q//q#Gom'8K0>_;zGႍl[*.x*ҶE-(t LXXʢ}jw6ծ𳿬O|jïǿ)D" +qg3-F`-EUwteqa\ܨӽ123v͘{Qdl`sl By[YpP3/ W? >(,MAs$'73EȖ<\b%,ޱBXaaDi|;ʥq0ɽ`|@Y3.fҴ+w=p\}^REs9p k.®e l,&I3;K|5~tbBr^ZNBw\4mI85v񪯫h9)[GTSgF\ Wg;K$Wt^ SpCLiAChggF ˨S$^~8%n݈a7DߓaZE+E\̄Ho?qM(Fրt}M x_V,*2{y PA7Pӏ^U(QT(T(rsS9q\^o{ 5؟,dV{D'ƙ;hiYG!dy`R3y0BZ( ;Z>,9zZ"KbqW^ 45b#ϲhZ؈$=< U+51 3y0Urz6Y0*'NEC?OEQJp'W3]sRєu:BK./)Y]9(>?Zjq)gW{zSj9n3 Aɐ2ryX0T)Bpup ޲+6&=o~XFr0+ƅyޏhnrmlidNv/g=W Hv&B0ĢDQئ0 :M'L MP g432)L 9>/oZm|Z2Rhwp }EQ^̢]J̽~aU2)#!ɶTg`ۀ{v 천OHޕuHM֙j6u/}ן1Sģ)'gaf>ʒWY Pf^ʹZ"*Yi:={䕴%K&y )Ê bHXۘzw/<,&e䱚#<9_]7aZlKRMwQs 6ڕ4jlߑ6RH{H8{tqfKhԖ_W {zv|hJ\qd2!<~ܗu#%xxpD4\y,Mcsv_c|AbQR/0_c x/eZWIȖޖ!PZ <tJɆ0hH7 ;o\Bb0 ^1bp#2j}߬%kx13r❔-^v?`|hhyhi|pPJtv gkKG?wuNW %zߊG2bh U!P1@B$4@f$O>R:zO'v p6GEb<Զ[Xq7;0dgXCn vV'lZT3ړ,vxM]Y|j ;׋RV1 @1dq&ŢI*k~eAо.+M(!aSz*] S0'ɑX #˓|^qOniҬ)헉KZ'%)(C ߶&{IhdVT9 aέW (eh#à-HQ#pS}tJ.m@0l_LCRnBpӀԱ et?raWX--#3P~QHOhW#Be!o y!&3֦;U"9=6$?ko}3 TE8")>! Grz#3abX`FkQ{U}kD9RaO#q\AEYU董dcV_b,<#@|f>pzĬꚪzq롓%lHX˂K{Ti]]S"hJ{CY {о*v]Sw/PcmTz ]qwHj@T٫UWF+l&-g Go D{̒e{G5PwaMHuO)kp$epVv9⤔g7v50}0|~Ɛ240,|ʭ~[;Gc'5˃fS!`VV߈a{F}9T wN7:TtK"o 49* , >Zm%wYmgWmFmA #،K0IËƖQH5[mbUmҍ!YbR 6YKv.Ū,@v->Åsq7){d .yrA5y ?ֵ|OA(!(?NaׇTgDPjj%AQ$> GJ7 .&8{sJp'`_N?7]IȵԓagflߣapcB+u_wm"7w dt)W0(aC^cՇa+bۓ!, H8c/X>jNn@!|f}]Frztl~^5?:Uv> ԏB4}jla$*MF*])Kz' A G bLM^Ȁ 1. +A`3&VD2ڴNRDfJCoM2{7)Or*j^ཡLWMS\AX 1k,~/&:UKM1{ wph,G;q LfnQ9/d b/*ARVvT@簌A<[흄_TBM'b e<[h;Cj: 蕃, g7Oo.w$rf=#𜎿Щ! 72b?Hƨ5\ >6~5qs7F5Hm^2uE}>_:az'24=y|8@m,0LNς~+'G.N ^~/Nr`SZt8WM·c+қ@~0A[/ EECX~"šzڴ:'pv(ٮ Xvg,g{4&A~Q-C1ᡛGHp'3!2ǒdFQu&Qks`ݏ3PZogE=t~kOh˜s[+udʐ EU<gSeNrb~Fny|x[ZW0:|+nwG;gnÑ*! _l0֘A'}'#mj-5A:* "#Y2Gmj5jWꐦ@'9EX )epQ͹#&V{J[:.PPZQw']?e3X9uP@t *ro4G#/'`5ΧK>6U+?k/n2^{3Kڇ9s >59UCqꮑԣ[mSK x l Flo~^5NaûfFo5Q@ѫm,+MOw^=csƴthex1o lYt nOKlE:KdD6w~qOyU43?v.hǡ="ham[OR>+b[  w7߯fуK5L,2%{K `i7/̑JD {!zk0&τF#p<2D0Rߞ>[}7hI܆렓u޴|8$'8PʗE hyQ8ޠܚz<@vHva&fB"jNLW fl /̳#op `h. xo629 #2p.M:*Gv r*Y(Tr&E^I*ysƧ KSHَL?zNLu-D`]g3u:Au,\~S;i`7iO #e @$vPY) Z@7D!(YK][(n( Wm싺#L1UdS+K3PFOl|2AGTP93ӣp *ؑEŔ}7};i),/|Xw *l4bS̱Ԅ'mSMM-A9C_~9}fTmE@'@1V4٨,+UPGKfW|@BQy$P1{{1F)iMܝm&0P#pɨit]sRc:!^aiQx,PrAZ}uӰ4 buja2wc~db!2Hշg4_PMARqJ-d*5nK8rUDŽ7{M=3,7udҟ O=b^A׏g2.CKIR[ m9T9πY [aLx ,ގ}DӠ8{z62ji&cJ(YnϮva;<]-ZPD{ʈbnn"jZZGў:JVhV1z]MnvBW)%~xRq( 6 YԆ(5wy!'r{J,&x  ^aM9qm5|6ԝCeEKp#_9Lfrv܇ A[&y%7󡥶#Fzi8?GmmUէwv2?UHc9и*WѠx"I8 7Wit~mx@K0 a^=>X-/7C~ RI/B=StZLK{.AVGyGbdN1MW{gEʨͮdXYR\|6w`s^ۭY(qřF#>@6>ΑՑ>KbgӦ YcFs!v%^=~J8T'5,SAYńX֛I0^Ս_UROܒ 'e%h#=|o_Z7OF ig%~D\7^? 쿋ܶ*pW;\xj%c4+2~Q<1Ά ' {E҂i'^W-6kK+]Qy 7v0ZF7YTv5]$-rݍRmF8árPS{D^Qo^fOᕦyCBqɗzsVاOC -je 0wK )X _=ߐA#FccB2"GԁM:]A'/VM%+uHt/'CkLo9R$[!""/l1@uΔ4A2TC.R(v?g"^6J8ݓ& Vk[$-w_z* hIè/:VPLQY^oDŋeV.D"#k3ihTIYSM8TX :Mh KW`adeԺ52B& +׹\yU.kO-9u}L쯡NcH]Q o&>zh:t˺EdC>(}&mM%>&#f1I Cez/ёftXyCQ%cCJJ4MԛIN.;ܟC1>ё"؎E|D+Jb(E@F:H19* @HF9\X* Am:P|#99 nQ'^/dMٷSRrj{\l>À:!ZvXQٽ1qg!Ei>4, v(?>]A!ezqii[њ {Pf,\Ű=pKS's2J '{Y>N%`jbVL}a!r $楥HD^._PVa'T5]lxufKIV?ϟOX'm}YjflyuYWi">ISp#YbJM5g:1u Ҳ⍳OEl&v.Lr/WrQ^r%Y&4!v*nN$np9L/YI)6y?Psn(l =stk[ӻNGm}Zgd\꬛ {@qWv]'M^mI[;!eۄ,acvtORª?Ld"'TVMMpVtq1N+[y2oS0o^-_ԛ^("e>x<ۋ\(eatk6 R wGmQbǭ2ӨַkNi8ZjP[Am(Y]gIX9y]:YZ#{\@NHgyMQgEpg;R' IDo&zA{~jՅo. Ӕkܾl:|2,2(o@75W00EZi0E|=JCo;|aeg](K){_|洆EkA^ڑ`S^ePĊ!]@-V،=u'\3ṙK]#WNMJw$MzAś]96iv-곸hG+bH_ z]۲.$a6zИW)#viO vXGӮXn /o>93fggWkoHכGViV?qIkiύ޿HL vhZS R:kKJ~ÁrE{g,rkg<)Z1TLdV2~lLq0t$-:[I Eܐ,$ s fStj=g$Z҂f'o BfwonNwR08LEu*e3B~Ѷ@=ݛ߶,+ʹOTuq9%=$0!vE|1#(OV98vb$\o} 9j&h^E ]q? a~9XN(&mٚW!M&7\Ʉ@uU`%GQ]KL "dކ23O3W pu m<͎'W`;ɠ/bx +~FAcYa Z̓qMxns ެbio;Z^jB 6*滒>yx=~;7lOJ #EgRX~@* j@ /W~NiT&"Sw0FbRսJ#HwcquX"XLnE/n&$f%]Ixa&adZV?rWm{R]s;4ׇF|@4\W_k P\'Ma_=ffP""a繂.2Mu%H6߽^$e9~6#% '~Kf=`>4G[]\b/sZ>pS~cob{6=dJNӟe&wO(w;XEv\)識wuǛ;+ /;ESfV"n^tIn*a'S[|fz=3)g-)fH7L#  8D0$עgzB$iZeaAJ':QƋ(*\0i3hV` yB:ZJsk <] 2OrCVtj7`{17>T߇ ؄WXO'v[]DPOj<=l% g= :~%(_{#{N)lQHRCkS5^G Yh"B6ǢPwW'e7dv3Py+J!>rn= %=q&} Z'a/%B0E\^NwDJd(c/2:_$,OHev5 Tl=6%thjb9~-! =p/E?8w2zKE6-+)FXۺ +G@MǺx4(Tò"ڢi}kNB{nѐχ5ԫ))!&,,\n`2-Jp}>zI҉љjF=S0٭2goOQ4P"y%z=Q|: 7^3ɶA44.^njHcƯ iowAtc/w9or;81~n%H(-bdgVoU)=?K6LHFq6o1x9Y% -:V!2C~9GPrOcoih"αZNbujg1ku{$[]T<[acYKoe#l4cQ$nw O!h镐K[hTRX,LIA>13æ4bڰ3{VN=|^LS>?0p^$VY^FyB;/2xYnvl\*9LQ|Caل@P֥? O4NAKwN'n^+ad;Z̆JQ'=̜b||OL,[G 4ӄ^- buiJ~Vs 9*dRl,FَƛrSi,)B)S>wCA XX閳r$tuȷSGt&jdK~lEr} +xH6-^hFl9' ʚTP0hQ)`M̖ ֙Te~rdXMsfO _z]x/yk!rsiZ {>?-ɴ]:gZP[b3zrbԞ[rj1;8*rÝ,$+ %huW|ʼn^SU*Xy AWhB|BфjVB8UPl2.E{J'~ω'.xۅ8aAlUvD[LBܳ; 8[? (PNZdt*|׬Nu,Y4){+%@Y)>y(B$< \EBaA~HƉם8-&iefdrr6yΆDVIadZrC&Q_'~P%r,/ śS>2ܒ{"r& {8unKp{^6au`7t9o݁c([Iq.Nik皷,8?g۵@:WQB!ߏ0JR7DMK:negfHd5E8IiqFUZs/i#`R x;8rj'x?yꏗ#?r,jcui49%ӹ3׫^fCFP\o*ыgrDps̐%u񎛡8 ]ɎS{:, Dg(/˴X 'q_{d2j{/$Z䣨ͯuIi Wgnf\Xoo5vر%,48F 8fyca};ܸCpO'Gj~ӓIArϊ[#~8}PűI8ғn;wq.C >O'VaRsn*vlR B-tXM/ =27@nZAB~&`G!6s',d!8WXܬ+^3ܞXGS2iVmׁ:|̡}xWfFЕ!Hraˀq3ob{Xʕ60y' _0[LsW[hÈ@c,'OD bsd::OJc `C y[Mp {}^\^qӅ;HR!?LuQ,r$1KjY۬w#V l% [ID$ÌLlo;Q7!X̋R3ILq/AzT!Lq~޼R_Mr(̱͞x݁aN./6rrS\GOM qQփJDZRXWuKY R+|ȎΉQ mU9_BՒ8 TI۲Z _[ag9]'Kݒ zʀfakcYF $! ѧ5 ._k٧%YЭzIkA:\ovM݆L|/ L=zd*c†[cNL^qKP=u u]D$ .Fd@,C_d'= -HR}HTvH SfU|8(]Cz54d7wK Wlu4I/Qmu3=U}'Z7ަ;^iKta]m$N6P@9Zv$bhk˸jRj\RŌiM_xІ#r&э9*Jl=-lPƹ?,? \G`5\8rͬHo}/G2`O00fReIDP (+ɼ%wVڅUNYK+Qq/Si|$uF'dE_GEVhb hTz##@,}JAEOH]`φBضS;B '+E5;Qv(xί_1k~1C /\vVaŶy\+ͽkQbZ}L]gj]կVJqK/V \HD׾4݀l|!E򩯛 pFbQD=A`X4V5#{jI bKJ8Ϋ;9Btac=M ~,u89~M}?o)ESmL4 oZNd+ ÷W9CxF%Y㼩+Ry⭬eidqʑ@ ^g U)7:~pbwK56 Xp:NJhU3,dɁMbEiwlPΌ?L?vNE!w4=YJ\5_5{&v3_"&:;cmVD|Qg\ccgi5+Ma&wmuR루M >!?M=f+#`wL<.v9#J}rؘZ<7X.: 6ٞ_Cs4lȌ2.D|m1T!mU]aw/ˤ:X X6f ދp[8dp\N7|aJg'vhDQt~H?pkש*gQ @ =(^n.w:%llW6ڐ)Tehc=\G(ĬbS .QZ**F=u}f ;Z›) gcڹB5>VzX*=%g/ 3݇BҿxB~B~xByϨkw2?Ib{cIzB'T)b$<馳~Ti"%^QC"T#|z% ;$emc  TZI[R~a.=`: ~G˪̺vʪ"*w~OagԼyD* XNL4aܭhA lgz.[ٔ,F ]`R26}K_'ڑcumJe)cHE[ѹ勼nQ [v@1U`T_P fftB\!"oRǽPז 96xZ-Bhe$h'CqfOx|I1[%x.kn_Ry *pM#`b)FyPL3',=@^dGU}j nΑly,h ڐQS;(nFNSFC\ўF m=/ҧdO'Qu2 3<506ݯxF-Dij^wB9L<M %߭3Z' 4I}uaaúd4fXqWp2MᑼN:5^Q-sl\8saç~_"dP"+|a ~d>49H9&W?T*~w빐5&(9ZB6 nXr,V6(f*sR(xޝ;>QE}9})}IaaNq9' ЫP[_>΄"Z>4{&R\ ,a \/UkhRH5W4&wZBg"^ +%U>¼}i@kzy*$ULtg͊\u x L(?dw߆t{@x2frp:;M m*U ۉ)#s>6MwH*cJ26}1>X3y"A)CVՆGeغA [! NYN3Tit7DiXZX&Hf8SB |H" 9N7&QHO]]k_; r 8Z}<0KHZsnWLQ無 b|E ݔ:(it@=Nxnk6#)}h~>'sC'j}҄iTD $LVāO ^ 1+2dx_) (PKK8lOY+o.\w/.iwޖO| lS틒?ce~կ&6[1 :HV\,$cQVD8p_MI(]ALю¿w' 7ˈ@g. QGDK=aK}wZPW>I!]W8-HDy4]h\SN}Pt%G!l6;TUS*Q|wC :1o|UB3Rf7s *HfC `d͡5Fdv#ވ|3ynlF;bL+*<݀V$Dj#{kz3S[PNΈl;3ǫCl{_Sp3k"n^}s5OY@PM3v ΧҐs۬ٱhS/{)@Q8 Ci`tY,Ϗ敮o 8rwE9 ߇RHĚ rw8j.7; I a+wi k63=Me˲ašhEr_nT4?U>H.t!5<No`Ff_+& ru wOD{2CFZTsZ k/#-VP\Im7CL_> \Cƒ:^OG˳ '2-V5˧@HAXq_0vJr(IUDB?MW]nUQ 88qKʕCx$+,bB!`|dS$uз@1א^L&Xd1knBw/U<=4A%9}xX}MzraAxjNmcA ~er|MI8)[%=vGҽ h)7j.oh7 )71<.KR,Uwq6 5ωt&vpXq_wjNN/ygTR%5$u:+_´K =ЗYv2f3V$#%G>hʔܽ{S$j FP=\>taSA^IPNA2ѡM9#Yj 0ؖuN#U?fc|(| $WH7"VorvvlrsitǓ<|Ė`q|eO$g*ĸ&%)t6U78i:T(/gYuNP6]5`AbyOx )Ǻ|ZN:Jȵ=+Sȵϐ70](S,#~$oǣ^t)2w{=8u9ѷڙ[J`!_;?rLJ˥1TRGcՇ]\ڷO-.6c.<`~h507UDH m׳ )F> wxg>R2Q5s`}5⨖04ׯK;%`q#poڒ ͷ- \#E%M5 (%:"ilQ>yDuש7 T޷[«Z:aQax\KxI "T!%mWI>z" #hyrс͐a*s+dQl^Dxs۹{R#rr ?T' cYi(x2=DEz~ֲX C*kRMXzAa 撎E@}M9!v?-=T䫘L.Vto=lBi |2bJ0"g]ol ZٟzT[[;n'\V>fzm@i'sbM)qq`9I1hJ *Qa 4p&=d|boGnwo,bkhVaT?=n}RöX%J4jU;2%iR ـ d5>0b]{O9`'Fb6"c$K9V6Vb/ac'/<󉷨KA]o+-tPxxcAUzA}XvDMjoTl(k˞>˝ZŖ׎.ugnglJP) I25{qF*:h7C[>=gm4l#4BF6@ܢ%zfϜ0-STR;v47IeZ싼5Jb?v钂x?)5f-ko$hɓrFRD:ѝq9ob j:!UF1?Wu<&ۢjlCOU5e qg7>"oA畃yaU]FV{w>"dUn%Ϟ]+٤QّJX M}nHǒ$+B⠏=[s mʼKDu߼>pRN]@ hW +vnڸg^Pg ;;U XF x&6#[) xd endstream endobj 266 0 obj << /Length1 1425 /Length2 6648 /Length3 0 /Length 7625 /Filter /FlateDecode >> stream xڍwT6 C 9 HK7H 00Ѝ HIHIHHH("ݍA#!7{{k}zz;׽zƂJ({: e*F0XT !MWhG{ PHP Sbpj($@@$d 2`0@ " -Pz!B-ATAN)Zxa|$9@ FH. wÝQ0rCvRg;~ Ѓ'&D8#<(G7 W x"hl@G4m PnPpD:B,"~)B]=P8{ ) PW2@q pxy \e( jH * #.H7tp)"sc`0XRJca¿ !`\~(w#.xy@ !ÝH`=h`zqt[wsM 5~'o2 EDZ [ӋWm5(`qUW^uӗ X8o[0 oy_{?R/9uQ @9ϸn-@q3trw,9׀"pׅ%Mwix[ ?TCPKD\E>v?n   !Q ^&OqQ#GY(O1i0[8q7^ۧs޷l?V_N4 %J8>dFW"8 6+U/[.684M.|SF{X:z`Q( /3o9ogއ@)5an*=vfGZY!jVK mzA~6u{F ZaVr9&?Gކx2.6I$*A$:3+񳱰޷MyŏM,BmE6,v/Ku؇I0u~!Zg$Șfz"`XIg9NqAy.}nh—(S }IKNh-L ^HzL.|P1&F#ڭLQ"m*Ϧ` 7bh hT٧UntMתrjs: H:s;F_"csU9bߪ}'I {o~ |vA} M#zĐ woE?LV] H%}MT~Nڼ Ƽay@Xe'̦YUlK]7;Un-0G|/fugҔO^0A \*V߬ zg ۝gjHHG9H|ҝ+tA~2i}KJoTJw`ƳÌ_Uz}u1架'$X16$7Ǚܴ(kQW{$mߙ .%̋Ƿ lOoy! nwî*^xZ}JPzst.QI7F db1$|$ _.qYǼ4݊}2 *kx5&E݀+(:9 {IU4{Sn;t7)A B!v5 sEg4B=ݒ_z<9^o^1IOOFiu2'6}%tW?]p4믧^tO'"E3vP-7*{s'o <{ Y璷\gTղBOm "o~prdX=bàPY%68Vdq,H:vHWD^7bF"co$ 8T:r6JZo^J̵'0/.*R<͗vqK3+dYRϴ`ևYlgőc &?~IgTI=O1Gd{5z(%^;XJHjf$_ T+0`;ܻsשwS8(uYܜ}xT8G(,yAI3|㈬25>W2azpj]4,4ۙXVfPb)s9U9+Uz[0>B=ϊh=5i=kt*sPш3^ɶl֬s%?[jl^7CZ/q3m^.&L$vήγG29׫S4 :bDt izܘn&5ZZZėIqOJ7.2O|x4Z97͑f{jp&Ne )e>/ʦ͑= swhKEmUP)e7P^ul4g\!iF r+}3 Rcd'0fw?PXz(z`ʫMxg>2O5 z:rH ɪKW6&61~RXd3mgt8r1wI/qzΗɨX2|g\ EҦ" ūUϋX&P|DǡyNfԍ(M_s7 1S4;ΐ k ʰT{M_W07dF X89{RO)LĵYV_]*)=-XT|<\<Qꄌ串w*bo4!M*>]_%7əxFzwkTڎU8Lb7lnDQ 8^ZvK\2e!d!oCd"& 7in iȔXYYgɧfݳ=cҟi0'LhOsz1N1옌ǭ5 5ʯxc Wx"3e f =+RUt&xsghiǛȖH[FGxmKΛe 2Z(_` w̸uZT0-{nb=eݺCFDtCO_ZuN j'߲21 S|.="sFVZECL"س P|nFdJTiVa<b)%K+7;(^ت1:uVLre-48]*Ft6ӻCi7q;%[ڒk"U* ?kD(UW%ru[i8D[GKKO>N N bO~qRkcYOfj܎Z턞ݏQFp'U 4lW%S"auU*qIx fc1`A}Py5pe1^X317a6$@O KnXǐ7Z?pSˡumTﻪdQ3LQs$ՉQ%+xt!kѶ+{ MNmxUok.*U{B/YӋ<2|6bl{-XؚΌR 4l{ɡ^mtG'3O}YC*âVm!9}͓SiCJrðKg>j ?y.GQ:S-؁֏Т&L._2͝f6< S +_tfXde{J'q!}Ezl*oHy|YN6<ۅ+Zq;l:7 =KџuLb}і}88aG2z+ЕդX1n/ykHo/4쐫%OQ*ow@`CL+6`2ßéK?S\\zA)?s V`,=Û/-45?sk%j >6!V|=bί쏡0jj<%PUeh }ψJh/ge.֥F6uyߟ>sMPn|DcSFᵣr6 זF1#"|m8/ssE3 ֡ӕyʱ-EYuB<Ј+']IP}GKУbtDqXnR"y<w˖}~9B~k zW$ y֖lMOv>' v؟J+^ٳDܗz'RmTkZ]4ge '_FbA/>E Ͽ07Ԛlĕijk$Y-"F\Y`r endstream endobj 268 0 obj << /Length1 1442 /Length2 6803 /Length3 0 /Length 7786 /Filter /FlateDecode >> stream xڍtT>H#]H"50 ")!tHwt# J7{{}k9ϳ>{XKSf RA@.S/.#AqAp0 *,d@br: Pq|PH#/C\ gsT`P .,C Ob qvH;`+ (@arDhe¬ ?B!N"\.\0+\@p75W G¸pzv`?.nl \ 8y6@WY 1Vcj@.+ dCm6`ƅ@p,ֿ - .0ba4@AZ`\`' B_a,9:_Ɂ +{rnCm~` vv)eplA0r<t&}`Nd _ b _$`+d  l쑝=F.H=@ȡP+X#wo r A H<_ |n0RH`nA"=@??rÑ[MR0@ +ikMϓY9gͮX鯖҉}YNn`4$h7^\m6~&]ECé'sVڪ˜@+ܽSѣd~0xzS{BPu8gԳH〢Iˌ)JzL'-6ɡIJ;^_ oŔbK!%- [3)U7@6צ9|) %7rDrRcxLeB.;MPYXurVg$r_G GJ8_ ̽R̟W /KjRȿf(!J8",qZZ}WoR E+3X.Q7ͼKjEsJа${_.=TtrAR{U.pT[JuD6VvuGl$J(7Ӈ 2jD5>e0Uw;G+fT8lz1^|4>mM(V\,ijFhcҿp'ø<_=nwRG8Ld$Op_zZ,L3D׬?V=Z'Aa 뒜U9kMfA`UH˗]}Ux৓!bmAbѣE',մ}}h3_9JUطm;ZF ) |_uOG3һḦFDbhJ İƟat (]ue=%ֶa&=ws#ς% {͌wAڒWVLO4®3Kx)FiɟJ= ޴eqa'yNŽ-.j Dr}ARIJt0o_FcL$FL Gkmk0/a42ƶqD)daߘ ox]Ӱ'P;O j\E0uJf_55N e5Nq`<L [vǿhlkĭxjE<1#k.NՄ>c䭨\Q"8#ٱvlod+sUӁdG ܇7ܽ|cυfyMM{F 1sU:Kq|Wǘi'Hj#'8Cbc'Hhv (5``Ў??#iCL}W J7gWpcx?WT| hy(qd6Ɍ3Zu$µ "z:Cd5ה+^y[ rcA, ߊ]JlIy[ =Jᆝvg*3P.P ')hRMc}ւ^~ AX oNe5=T/q _۱R5LD< 졍yՁdǶ)Z<\A KwqYآmySCռu=% P cgC?)z<$j.mRg8JЙ3:!MNW2=ţn^zZg9龽&_|>fJ z)gd䏾\ެSN2v˶c\g*ݾ*rP *FcN܂iCNL)TMzNnQrAIdXt m qT9[BkT@]A C8:ue?)o %Hpi`tNUYr}Lq~yRWBb"aV[Ն6#=6*}K g*WTR%Z۞N|'r֨MSS/|v`!lv槛;p"A6F7q^dQN Vx-J]Jϼ 9S?pOytwm -:\ k4ِMg W;EJřG뽈!| zgoƃ I!6y@ڪmt1?Ƅw &~5IFZEc}-pT+ZW)hl:"-}T3M}N*YT8kѴlYQڳÉa3\9i=Q>!5]Tk;R D+F>=f4p(gm鮬Q% GC[ykSY{fRr瞔v,̜72UOK*,YEl<ܒ҄U;x3d@(O6]<}*ZU%~B(k\\B#p)5R>Id ~15‘HIqkZ||Ddrޒݦ8Ŗ'jpLXqy9/jf}g(}𙦋z&>5PZ90M4ͪdg;}i3J6M'XV퍪{25=SN0es Ӥ- V^6AYm CH]onXm엾[?u:żW/4QXuo]hNPX"qXH)te3h{}}vĀF֩^d8뾍mmr{d.}ʼhڞ"GUtC8PM˯dC䖪¯L7L?zD@^eІ[U>mf*uOp2Uڧ!Y5hdORP/oH9qc}_ⓜN}ي1MJO[竟.Epy6t#dauݏǽYq!ß$=5;&Vo =Y%DFdi\<{Fx3sqe(8U(,[-.7ab5m [qa-eh&ǽ@ZMRfYVIهAgBM6}1"Q8禴t6YBijM#SiiGo>٨x >VÜX]}w(&uEO` `úC1 g>9#zf$L(ā)W^Ê3=xj +N`blqQ>y6#lk/H[UOyl^R99cn }zn!l<<}u[z&5:KHpz(E3Hn0YhzKUE i% !2~`ZGz'رŨ |*C#x؍齷RF.(~g*Ru5KF/T{nxys1|HdCUV=AgiɅ˒Nzٛ4+/qU.4:WzZHy(Fx8<ᇷAa9(50R-X뼭#4@W[>@ vu9I$eJ4)|8y2wl$"6*=oܜywڂ|@Ovr[EƢ9qUb~BX2nVB6< &ۗZLMf߳Jzr4RӉ9[Np?8%JY vKlC:q&TGٯ]\YP{ /+7a1\:lrT-v7HfC 1( V/lmX h=f;ͪ}i'/Z&=٩<!utob?eܨ) 'R&Fvm2{x˯1-/tJ껒0DG>3Ll߰6`8>aEGcg}Fh{`n6-AOJ_<}bN;& GjTH\U e :@b.Ic׶V57hޑSiBBC7;-5{+HGY8xB ysO?JM_hGnFM^H*/ϊ׾xxX;98g1vD2.pq΅Y hﯥ0d`oU7o Hl|Eɽ [$I5\NMf͂E+J;,'6쏖=vZuPD'Ebۗ06wN_lw7T*3Zc^UlQmb)%0_$Iz.@L SgUkMګT"FD@ܷ}I;k:[)6Gd G"N];΍=pyWsn_R1I h D#oц+̝`/QO WByurq0Ȅt}foWJuyTWfRƞfKUM}6ˬㇶ).,NME:m;E@B;@P#W-&LtC~Y x^ I)&a z#R~q,ݏ*Hnm8RR۵^NnȂE-V/{ͫ=Rã~R >.̛! f_\wON6 (`78 ViS|ѻN H _-nxCp .^q+y;wyS)7Otm&tJ"!ݜ϶_E4YieUl t?idL8^~?8q{2Bn^ٝn~LT&'FV# %DQjA qf+7j6c{y:UYfM#R'O7k"ľ0f?_K15sn86 aW tv_|( Wߖ?JΊ ˜S#wq;326|F5I0FXŽV~4je߾Xf&>V_\d>yW3ZBH_mL?2#Ǒfr<R]2oCC{óA9\]C`wޟ`\< (tz>`#T<-b?/az[[)e܂##15@yu@g󃂢Ջ A }eC'?%+U89ɉ/~'kCݍB9\t W^Ќrx+y}Li+Xԫ}b{J l%Als 휅1g!Z[{Qt DbO60#cepڔ5m"s7h{-> stream xڍeP[  Awwww4иw]{޽{1e9֚suhrb%UzaS;c3=3@T^Ă@NrmE ::lyu9Čl2.fV33'ybF S<@@.jg2p~_T&fnnN6@G-@h󾢉5@t_T|ЁFd+x W.d|~Ifcԣ?ϓg/8Ѡ_ϡN$"Űzl>.xW8u"Cy>>C%r*UR6WHDFpĒY Rmu_dK-mhHYf\j$84Yo1L_ឭ,p'"DMkt#ȸ]N'|Ų~2"{`*:6i^Slsy컦G,K>71r&3_-(1q(&Yp-m 38a/_+JjcgS7 q yG}3M au>б6{'iI"ߵE(p.y ( Ww23§P+gC#ɑ0bncWI})38!]UYn]'}<&{mؿ($TMs  8O\\Y$Y-_qbP93I"9 ג\^h ӽKf(2vhFpf%#Gx'Y\o{z+RQZ54֘n&qw\K]pL]b+lIjFV-`wb'~ ׾0Y T`O\1瓷N/amOhbudf|zp&B`B\A!2w~.eap K c%q:hw{ rI]Lɣ'uW৬m=U֍!˜`os!̵~6ܿ t(0Uhu]GLELA3ocC&|;_ =s14׵!6L#&l9{,F-yOMnTk! P?ъɿ,Rغkl{wʥ.\Tscfd [峛+}>o%C^x:ʉ1ngcb;1/~K|#Z%+xvylK uLEɊMU7J/{vWdScz!vo( /M/UsD{Jq>*GtsJL5Qe ZGtO;~(0dO!54{\9ҡƅJGNűD"M"n8[dss3[v:o#EJ_?0'3^П$K/<6sC Fs~`wJނ˖ gљ]NRx2bL;U{䙑sЩkͺ*A+d唻ZE7MvfWl$ l!d#_͟a~m:-¯}q׽"f5_}\ v"1#a"Hn) Ƚde>#Dܔ@ySClQFE) b#ćϷ@C 1AKnFo"5G=v_ʒ/D%3rN=Oz755.z8P4W^t~TMm_6V\iRhنzɫnKlb]0ֱQ̮wKt!ⰽ+,;2pؔA}%F]9=W \8>aV14EgPl㗙3%XdZx"~ELA@ueOoTPm(}{k%?c(*'8h;k҈{Z/q- bRB<6x\fhVI \iza=.}j:l+|R0$y@S=5tsQfmlT8M?y.7y7> *hg4Pu<_Z( 2VKzy$.ZOpٯ,NeC# }Psc`)SYQ'x„ﴘq;_#UxMJ=|$)Au]pdNLDՠMC;DAXǪb C+n49_vT8 dL5z't2E\޾$їS C}uvTmG;m0l>J(v8L(~Oj)؝ -EZ#Y_FWfS,K8׵-} eZ92p1fi k3 ?.&[:4A[FNZ&3 wru .(#DJ܉j`J Pljcُ󍔟G<+M`ȡU*ũjяw<>!q,G@6^ qW!pZȥ8lF"LzmdJ𐅑1=ܭA{I/Jtsb5Cl4 l~ꙤYةvLdyI<:ں+Zt>!8DojyǹX'4{%];7c虵HQ P.: NwNJT٨< }6h{)wJU`'Ӧ*Ɇzx|҄:sXYi+NQHo&|%Kb3zՏ]Xo"CXu\$ $~%γ8"{X{+ -^jKi2RDAX(h(W|*gEuX P6+G-EtU&#0G^Ҷ + ;cַ$1"9zci6USf6 ]I7x-b߯dkc8+ B'y9&XZwC-X@f*Nedk:m O"7H]f|tĹ{F؇ {qk6:K9/m~ԍ1 y3\w-|։v`?''gT *,@6# <(Zk H,+='hHy8]11~)ClUX;;*ujЖ{`j& رY;[~kцf;J>X?A8jHV=WV:Q[P$ӣ WuF+q Vk@v&zF`OZx X* W;*]&Cl<slު \R_4mju2tz16FbVUz~N3I$B:jh$HtZBuJ׭6Vnc4A"@?.703؎8oՋ{e8mi3-JA9]7q<UՇ% d2eпmDG,?4j8Fuݰ٫FÔ}uAvyyB}PvKY!Jqb3}]*q;,˗E Z>.R!5jm0*@7YB6ę'NE=Z"n2א`_ PDBzExQD'U,X3)֏>xER?[ 'Q(U.,}!N᫪eT"]Ua-BdzJ &/~{ɀ79(G{Hd͛JP}6Jv7-lh-[ǂP tv…6QK{|3ZtJDrDqa1w靊#)e̯r* nʘs*rCHI8~9G q[ϙUJ? P^7Ed+0w7o=R\5,#Sh?.-d1fc QtD&|6#W(_4`J4k[mCAl=u乮!@۟?SFpqg<[ˋ0FT}Yo7[*Rg r0[Rh@S8tm[,;WzkqzqيÛ~ zQCa@s5f"$O+Y ~yEvRt@.4vC~Z&:hwv*0x.}QKh<}C2"!|*r/W g_qz# Ԓps*X pGfз:ElJqSP $n UZһ*^ȏ 1cv3GhW=( NBtqP~P IZ >0bK,9?ȃ:tV!=awEuWXǨ ɣ6 aLW$*7R;%šm2 L?7jGvۇk~!m~)sKJ&5 3\yurJT_]"CjjU;}I6sW Gy 'ѫJN_g]R3m>bM\ D_C ?2EXsAˇ,IP4' /cp|3Bu5VL藳?̳` &od#V*qwF{)WoZ ZSj% (ۦ>e{L=ZJ6CMEk")iRJ ܧg3:TrvjQCTIo&E~&4O^)"Tܦ|.׎CYfMb@1dtZGځ\ v Nl&ҭ{[L5oqq~lQMŒnU<1\'vI\vࡆ8.Ĩ"W=]*]l2Ch9Խ=aU/!IU9f&FBZ#_3h*Rg#+sYh(,|hKi x.m}^ԇo((7z))jϋz?bgȅ4M&~wo5Q;9c+Aߐ:`^&-rN !hjeknfYX^~0 Qηr8GO3YT6x8.ڏ@4*- 5AFh\_\UQD`G|WJzexKHR?jaM#]1V z 箎?.70ݪ*Q7Cv᜷KbO  #LcLS&R6g+S.T\@AwQDπGjeiQ\" $0i\SaTº&V%!=aӸ?A%s1ds|H  xl;Rq{\ccBy PIŪkuZ4Y>r9vNM{ ՟DspIt2zRrJyA`H'16ϒjk&0oM(&OFweڏz:$Ov=j^?Q{r- LO2`Q!";8Jw/PE湞գʔ6(^DHBՑ,yɊNxSĴv# 0 ,N9n6 &zQ]y䎂T!+֏;jRkJ2^UFd v,-D7CMXyD\H&슫KF^0=W|.E'3}:̂4)ڱ|0ĀD1  s~x 5p14{`RQ:qdYvZC

jL[BUƊ)|0(4'P#_wD*.䰕5xÆuWP[9΂P,ԝ<ڞțj{6͈wq-WeeKiҷOHieh_M4n3CSlAXӛvĽ=2QRm1 YBqn.1.h>#5Q73(.*ՏV 43O  YY~oC Z~7 }_^d۶yD n i4[cr I+ql<'7O=k6 Py1 yz+e灙yBeHcM[me3eId67b7C=\ e'0uQiςaiGB~yv ~Л2~Kt<)64pAlA7yىLZ3(#H:ykn^m!;k _]8 jI=^dפuaqsʳcg{7873횯GYj䔖tTYxKL8z7`#f& "8ڷX 0U5|B?c/d$~~'s/d ٮOG/<2 [u%%6E,fZ[m 4s*rY5s*~Мg#тD{ إbr{6+{cit4{BL4/}/RD1hX6Zhv.eyh?c #tnbf-*<~pX{rgutIJ쎊NF%$So%V#?$Rb4>]K#4pj^Ѝ%Uv{6|iռ!bt|CZ((!ϋ9Esp䘲J^lL :r61(+[%O݋_̫.XP<\u]2/?oG4|R٦LL$%,dIF :?dՒ ~3iFgܾ_!ҝG pu<*A ҳ.UpoexyLg &pGmߘ)=,?m 6N3}F(] fhk=UGFDbpjXL=_N`U>@II,eDR<&ww\:`LKi2~I eG#sI{7m`hn-2F_@:T#BE9DL-\tizQ z܆mSU6.ҵ5-!$:I&`ʬ@>c2peT]^")MCQyT@Yf`j+u^Wu=hHX,^tp[)=8ϸ_>J2I("WY8]ֆ]\u+c+~[m>}C.}SKצ/| wyrqUk[)+U,:h`gt ;t燘 e]vrnD񹑮/ֹtuppb`Rka֎8>"qER 6 N/y66٫fsrpydJpf .z͵~9r ]؀ˉCSD"T5"``)mڼ[a I2_KXϲ,n3lԱ?I!lxHgGɃTQKV€v$wȽx_ݱwҢq5X&@Ɉ&1Vr7 ʜsXU1&'ES&WKAu,C,PJb&aT8r8AkɩvEPT,Rh4f K7MROPn'~bo\\B9%.Qyb0Mzg12vʼnr[Za Nd]W-VT"I1vCx%R乬n4+J~Vh&FllN-dנ%vº+ c}Is&Ԑt-6>K%,˻_mr=]x.u#7,Y1[)]6[|Ý$B/<7Qjz)bT4~e̿Q*}#dxL%YWZ_G[/4S<;ʄHyLqHf^.R:>sA"Meͥ3o/BZ׈TL- wBARcLV+%i x:UfsE ;gTu>W=ea#OTQ[2wXߗLצ &i< {5)F4mQ؝?RF3֏1>h" &EhHj ܖhq S}JvEhR+6è\:;jEXR񸚦Wp1,U&::4x4= -wBږ=nd9F4\@oyQ5gove%fHRK{nr);՜0'X_Lڎ q~ҩ8/868V H<9{;ʂ_-Qa"x,uF]PWQlɆ(ꗘIqt$HUڶݲFԍܝS2&_~}3K(cUo#Xnc_/,}$x;]hXt=U)g4ݴM0Ώ&Yx0BזEa$;zvpK7?ľ BCMF Hy`zPܳ*h2Atנˆbpx[ ' 㑒Ī5[镍 [~e|q^sb|1w)<<RY^$)h~k_qP[wJzXq -`iVŐ'Mq){zWT](%'{eS)U˯),&'?nk{/Ȇ -'Pi 9 {A,4F{4Cם$)?p[Ig@2bhg)q@̗$Oϻ/xL?iu$ `o4 yav}0-a9,aCΓZ1WhǀD.9*dZ"B6{6]S{,{(cs-x@ԣywtICgz]&1 {[°r1jR+)s`u6"FsH.2@A$F̹p2A\i/zلu(-m @[|VjvȤ-K[;4JrDm|5FZhC抸\׏]: [I}En'M$B ^7N I sX'#[aı7Xz,ZN…3R]fSFmVD(0v7eRX@ #x ۾QWg 'Ӡ* /X: h(:rWΡ{N[NUϹ{H![H8pցM4ַ2J=߹eN;ى̈́꼜i O gsz^؞\T`7oqs*o?joE0`hz|3J]pYܿ'XocT4+RVay-Hj)>_SCJ1eni=\X#]ͨ$kZ%:+ǹ! xr%IuO ϵ$?'yt¼\ZG| fu>@U]Jg]_tCpQ4ʖM\čif7VU_~c~AJ%*n;XX00ȜAXʛ)LM3ZeקhʿZMa_H 8y5'|l"g2G $lڇ^KɄH]T掄Υg@X,4`}ڿ?{Ơ51 =)iZoUUj]Ֆwu_4_o/d/!2^a/#[ji46^K<պw2W-nvzԇt2O+$tY/t/&%F[k_YQr0~@GQΞEnSbi~F|^7pk|xeֲ'+2svtXg 7$NTڟQ8Yβ̓Y/Srp}O$I%PPcN" k[u0uZOZUx)FŚ TM[%1_g~?-B] kxKy>Oma_Z^1Vbw\_aTwJUi=vA,k'qMd" tXX/yYQPFa$W9ھ*$8MHԺ yo͛N\۠}5,h]3i枡s4RGcS'{ Xyդ5Qf Gc0݃Bj@B޳.Td>z1yϼhLkIe$vdf$-"*#e}C{}3ɘf),m"}V/k.¸.*Y}ԵhZ6@6O@i0"rݐ{:L3ھZܚο7IMbԤS-GɳxVґD NQa)TƗpBsm#q|Lt?@E~* c1,wʥ;0f17;6􈜱M'7&S&j#GLHj꾨/#^̲n..[kfeFg4.G&r\_nvt-_..XKI>d$ Ċ}-L[.3&jO+wǝQW. endstream endobj 272 0 obj << /Length1 1674 /Length2 10382 /Length3 0 /Length 11456 /Filter /FlateDecode >> stream xڍP.ݡ(ݭhqA)P8\s9?sd&]z % )( ;202UXl̬Ȕ GkȔ@{ 1{LP|rX8yYx<2čAyF'L)u[8#ڄE;@h21-6/M*BP[8:21080Bi. G 2h 42@wkȔU _ ="/.N`S=%;@EFh e,=0;t621]A`sPct:Y;@^@F/n 0zLA ?zd#1KM 66@&/pljGNLj`PFod@G3337hBM,Hj SOw[- ' ` 8;=o08 0fۃIa1"-[)* 8Y V6˃Q2]?|ef_徜ӿJv/ c)@^ P&/_,tD+tSOGodvⅹN/[ yjZ]y)2F/ 6a4#;_b$ 4U9XEj5 T8` ,{1Kᅙ/+i%&?v`doo2pgyYJS O.K3=sb0I! qL*A&#.߈兯L8&V/m_|Id0LgX|R? 7O_0qܔ yP <Ą߲ƿJ 8+;eOD "ϾbWl"]?Bo7X4{$/յ13ަ;rsb!٩m65?kRr) bg4 1jyb܃qX=ԠsrMhp9])R5?dae+^tpq(+X~.5fnE7eWw>#!,.IICل[$khYE'eF`(a&Kpv a-xnxueuO%s{^?-•лpgGZJ~ɰ]{Դ_@?%U4&6M}%ej$J*L~ģ^G@q4.%,(Jl_ذxUBf]@V4jV[ L zB9|{6\N5^hhM;yDl?h:?,~w\$r n  6,}ж5D-A~s{6̯ޔ=_D :#%+S}O(eݏvzwb3>F^ _ԎۧZQTb N-Y%:Og0+UkI=BT+nٰIq}?ʀ.&D os;]K ?*-y;_mxur) {"6\bJG!;AlN1% {EHtAӎ/u& ?OBCB/<>9ڹ8i![._5@%i(ߙ߳>%Ɛ_\IsIZF),h@Ctd^~S` DfǙ%^#5tb(5N2W3ǢZV1;=R\imơi ~X9fv<ޯ:ƿAG*JC' ! S1"oD6Q> Սdk|+RƞLI$Eʔ{H)!%"bEi:_ئYfY|A~m[ ? 0y7vIXbaցsFGEs "{GaadR,1cM뾃}wk-J' ҷ&1_)`',ZĴ:lҵړI5~?Ht'MXnR\=6R\N%$AW1+=s-qord6}JN1M_զpH))Ð03ΒUBe gQp4Qj4c|/͑DO"11nKF7$ 3S΁ٓ,4,a}}1PO A&M6jft;>79@\˞q`ۖ\_ש wC~cR[8{Ŭ쉦ZLU% <ә8GWQ ')k𒯟]0a]Kl*;g-D `EbEMz`k·y磤=r·ky{Wͫc> nL~Ro9Acpc]>tuDۚW/%8~|ǡ Ӻ`qP\ťB0.Gͻ M}GHEPUτ f Ҩ_4{o%:ʌeٱ!?5&w$plO[om揄XrGwQ=L#Cڝ<\m]ɉ ϰU%`6""2 gҭher8"^as"1{_Λk 6ω?|!չxVPʕ W7cWmԉ޴`tEP\Jei Zsa[x[ztP^+-u=LR6 lT/%1”Ѷ9|=8n# <&ON 4yfgJӷG1W)5*MPG%M8N^ӷUxdR:۔ۇg@ kn!uzinf2ЦϾڊzb+)[h;y|T_y ᵦ wӥ`Qc\Hn.jtn '\zkлVB2q͌F5aci-%3vg{>;*_czd_o̯cbܱ=aQDGuU G /+0.So^<>(b b5BО@ڔLf|$o|Q ʏmS{tV%ѐl2iNYm̶wVzuX:Z)lũ]Euu=dsB+rC\+NB+wY;`e6.ȱ]W2,3+w2`;ScwGsnlOqjb^::B?HaL`KnRإXwm 'a|%]o @3& |7&9bzpW}VL(lRd&o\0*M8л}OOI_`o}55_>o=j^%de;EA6:SP3(o8S'82a3?.GPyHq8 _@ϻmS%" 6WXrZh7 }lqa;)3ҟGE$ ׀;2hXػNߎ(1-q-&KPV)Ϲ&_uq,I HO 3c0a[GW+TХow*5S#0A?0a2?~w"6A>sa=B*XiUuIvuWͯy3?3Z{̦P˛Cߖ}-W yWv|-ڲ|#=nϒI0=cis_xq OX_v)XxSτGM~4 _APBs\( |RZ!QYkduQ_ C`VXpy Hp^[^U3_L@:;QP閻Cor3y" $Ć|Cld_ !sJ2_8k!Js_pXЀ09RnUz.9 s38WT;ވf} W(fK'Ѧ}嵭%h/̏_UGu"/Wsw:Ul ڵ}bF+B(44Z7^v rrwaΞʕRdғYM_:, 죐Vu!F~`f70~OFΏGը)Z3%q^d=|5vOhK/ssHoDy,8KJ},B+wiI 9v(ڑ1]`~>Zp8A2bi~a y2gѠ%9?_NBENp`5WAɴ楝 pE Xy$?9G60}'ݜJ_A>Nq8qSZN8ic$v KォưHTKL"m{w~`=0^/h1RuCS}~iUX/` g}ps~>Yz/um2OXIF8'}sSҕ~X(oSe2֓\Tc>n2#eb02/߆;m"yt#Zb!3|nHAt뤅k@LV ȵ|͚.J(f49}a2鼸(7EnЋ/ZVmNYNqǪF>mI 50 Q7䣘W}@Ҭ !pC83f,HQ4K|ؕN7o ? 1PhD$qy!,.kATʨ$ʙl09X-LtYK;Ү-'&FḁIP&s%j2 d7Cq 3K)7# ;+Ηoq1dz<t_mK|ݳx&Rkg팽ZˎKx[vQ5t붛fKD/)ylu)e!P]6]HT"Eyǽ֝qKWme9u<5ףA^ _ Sҹ|6"mfX=(J5u Q:xot̜vPzu44*IFoLTxr2vJ*EVU >Lb O$Nd3VV:~W p(/ X E*B,W`֡Z>=M]a LZ,B!>Ga2&a'9868v[s䉦a,ؾ4{bTV|ޮy’:/V͔AO[Z / _{ޓ8(? w0K6j=עy\БDlG?~?m-E6z.g6դRӌ Hx1cݱZ&:o( H{$Bp\I fH PZN/ UٖǺs|I{_W(Jd^!}~^T DFgv@ݜ|_ԧש!àEOo!xE(׌\2@2S*}x7'XtY5}N}Zaq8ނǼRt;2kim[~e-r$KF :?ޖ/r[R}7_U{뻧1ScS2־ ŽMyIҊQ>gwlhIWڊ?<|17 )(" }/;H 1oQHFTrcHѢf׿ZãJ.eR4d-nϖm8vՑr.lj4R 49,wx}=Y>;3o֛pL>x5'Ml+]Y${@.wV*3f 0'/^c-rdmXF -` k)IUai@$a~uv|*Ι!6N< oRu+c/MX1j*"9q&Ş@[sz1l8tݰ)AyV6Edە>` `8 4Ese^(SnBGQvoIPwhu2c~Lm*)PȆludqn|Zr9k js 㒟1G%bdUD9+mz`n#cvj݈ c)(yU/Kwgm5C]Nk W_յ IIP-#x뵍3)E찳8y9IHډ*grwkJ3m`~ddɨz:_X%QCp$Uh*VOdf̐Ңu[~f.+w*[}y ,韶SHDOLQMd1ZfeA 1:&)XݕZ2 ZAԶP&5Bk. ,S# S"xrܦ+M|c'9#0a6C?L ¾' ac6?Sҗ*\7Oj*BIa?iSD=lfV8#_wͅ,?xr/ q>g  #+ɝ[x^m|nʤao E*ͶI!UXNBf>b04R8QRe~d =6ߐzt) (k7CKt۾I,Z ~vũmtNӠB@u@q8'[" bKP4 b;5EXbخv;;u:+ (j$?O8Z+6+("B,T oH\ssedJe~ z DnP"_lHzs!(w5 Rse0~ŚEd{Qq~JlnmVgQzw]PdL?d)s[`μp҆Q١N`IRʳ1$gOAt(kp!񷪔lW+%z鋱mn&w5-b(["V=t ujSMvC2dw*m<;bcz57o-D&.Ɵ|\CmnA/[ H~ z2ߒ|VOgk= uV i ZWߧ|Dbwޜo|,6ZL‹m~7>t-E|/ +}5K1ϖm2X }`j˜Kk!!k|U~27C7x@VHuYylV-d$3|u=3 5\24s}i#x(uDEs;D]CTžB;rTߏ:T<'-,Ϣ1٦ӹ]8l^w/v0pTCMCnp>O xRbtȎ)eY卤nYZ?~ BLW>LMhzZEϓ' A=v%;)ovym:!> .WKAOv>e ~K|jqW'ǏM{Iד;XIW0kc+G0 Wzg`@5:P`s#SL={ <>ALb6#E3?-#Ve(;O|LZz:Qz~Z_̎TX- ݆/3fϮy-ŋƓ^e$h-%W|ke\J]M~/_ G!\E#lO\_|oiCh?B,HFgg2!AoT6JmQ?p3řD=tb0dO"yezc34Gl6prD<񞬮yōh%3Hˌja02JrtOMz=8D%G ٛZ Iӌt#}es(Cދ8 endstream endobj 274 0 obj << /Length1 2533 /Length2 16407 /Length3 0 /Length 17894 /Filter /FlateDecode >> stream xڌeT4xXpwww]wufkA]zNȈil b6֎t \aiE)%%F3%Lh`fc/=P$wQmNFf##;D{.@ ic t#u731uEG!%/sP h E4Է(-=  % t;[) djJE ,  #'k#=(!ZM@O{toGfX[Y,Y1):GWGo ^YRD+y}<@T*t07uts0]%o7FZ XY~'bf4uލ#qͬbdKlmf $#3:X8@ ] MQrd-akc 023y8;N@/+12 @3k?Ab4fM2~I4gF6֖n48?Eqx21hl6N6:7O"26p/Q?@=/]e5쿽_ R_ }+3Kp@#ZiRX_*-9Y_>h-M@MIAh$ghhט-Vvf@9W @fhN@ Z*jmhc{Xnp bbex0<mA&P^c{G -  3 6"A / ? @1 ZSq?]4oJ@ ;:oic bJ^h 4v?⿇cƿ@s2#?^XA m,A_ o՟j~O2AUXZOAlh@]6 j{QLxM~Mej'oPLlMbdfAgf/jş@5[ށ?zP@ЭG'+ȗ5hwt e@72͟A>me*i?G,hA#gfX@MtWݟ"#'_7?8 u z*[P".w4A9ϔFp0w@/˿v_O Sw!:3tuo]_{t--rv N2)߾9EYmӁ`Yp$eȍUkBHCFXp uѽG .sB#ÅpC1}Џs(6(~FTqN'<l`' KPQP+{@ɉKV[ HH dO|Ǫ.ToB>߃?9֟ગsuO0=v}JSKES4r$MBk.pK,[8`jնuNȵjkw\d*+=xėmN,ulv\d2G&#8O4DxQ5|Pqq nWIRbHe!+;E_ԓz"}&G'ck6R@ҫOUGh b(aD:4EfӒ+NL^VHT{^<0-.q${͉9C?^74*1DrPJ۞,`;@&^܂ش][l*dweJ;b>PީoHOR}u`$! EBwINPM^0Oٸ0j(^=d]__Y؍7Co3F"g)Fkbl$GZ1#ݶk'j؜+i%i,0c3wtT8hy>Άj1r*StJ_ʣ6$/) L_JVM%XNU SoPdZ2~<>5@qJ @oL 'lRk߲frhU*A`ǵS{y7J]ubz̼r%CwFqJѾ!9t:3ݺM8,u;^?Tr&НT:0,%Qs[5C )hD2cb0 n{xİd 'ѲN#Wee3$GǺ~C)6~Hۃ]Ւze(p\oCg ~ϧ2asVs1_X%j =)շvpDdLe~W!g`qvQ^P>%?N9B}}p-[}~З5Xr xNs?HtJH$^l7p0{/I}7' >HVQwxT0zڣuD+5i)^ŇD:* Bq"ВiKWQ~E9;J!Qت.yQu_l07PaUwDBH\ 6! JaWE쀞Q 3 =VУd޵կٓzŐ'|:<ؘiM}?KZ o J#IiIòͯT06r;ᱪSm2C, ө `Oo8P>l ˋ S?)%&]$VNh\, X"u\1 tmxu[R5,(B 74 |;ERlvwo yv袱ZPnlh'KZv'i5ꜳ9.qoD[_ Z:W5EQHw>fsAn9 Q/OՃ%Yսo{›J+8>'y7Mrq2Ո!_OQc31G=~=!pF si =Px&d&N#otk4~!Yh@BI]Px!gVrBs&{utcE"ΥE(ʬC>a%t- #߰Fu|T$4xusrH>Ȉ7WR7 q]q 'a͔| 0s2`$Lo5 ξŠFhyvlbphN}a/Vúži&\09\-<7L) ۅik ũʱ5Z2"&9VJX^_9R{QI4لqigY,`vMz J֌sKirY^H;ω7 cۃRdx\A~Rę罤.o$˘fd蝈ĀP<yT-Orv8aǺvf\tw ^WP$59am!fF\RF}.ph4hÜ' MqVy4]Bw2p=TPmΎq:ڃ BKܻ HH8TbZjs!"[qFΣM;L\.~eU'11a`G {E7ݩ6~bu:TSt,Kp *k{a-\`` pd3&%HUCjŰ;ꩽ:F8p؈nE}Oa8bn>HaL@kw#kNwU.FŻ94GqE3SJ96sۣvgKhMr_0hpC#E_a?ͯ"^)qćQ37dzL`yT(.\9 N?"< U._NC@<W[Y~=bN̘P~<6Zr언e5MֹPh3]?y͈] `^٩Ĥ/pZUB>XPWUkĀۗ$ߴC#u-WҤj WP+)F7ֽ `? ˷ %RTCf/ȑ}yvXc؞Р9ݠlA\+~^ &~|q}>+A_)C`9;Q'ͼlJV*mS%AP-IO>Tv W>bY~݊3DYbHey;Cp'إ<%ڵ' 6I` 8"u;E4D}Nd{bmW}Viͅf;t5WPSiɼxxGxX/ͪ4 nG }h;m# nqȧl 'r6 Hvv{bc'R [ @EF=ϯy,?&T2m6!iN@Rg\sWuYo Wϼ@ $t.MOC8cʸ_1nPaOH?Oj?5A㦸KCkV,T㚵al2~Ko5ĢNo[-nLiε@l3m8ڽ[LRkK?8N:SNx2q%0פzwʖ_KlR+V ĵwIw|S׭0a.52Eldz-&z1jCfFad}l>m|Sh#d~@5W5:ȇ|zyUQn3}`XB-XCɋx/gC+|)-ƃxެK7Q4&s"1 z3pU8cMWXyRFF'hm&(R}0~fjD:NjF0/C. ?1ȉ8 -xW$|Em'{d 7[@>,T&E$|S0Wc1CN.V1؏HܯQb_%%L𘾅]ki*? cx I\}|jfhgC9}_^Ap#`t}iu E̅*Opi!o`­UO feV,yӴ8뇷5ɟշX?%񸜎z >aı*mln ,)5e{iX8$!o:gHΥ.z.>$Vyr:jXB!M]+`9H/v So_ps 1JVSX7Dw~Q(Wo>!Y9b-6{$@6Kw;ťxpO '8놲T%~96jt 5w9}bpщm랧n Dg\8z\&S-zxqG=oZdz2YK`JIHPjeDnQf=Ą?e F[BIm)zy@ַzNDGƻ񏹿^Ԧ,Vݡ}ĩ攇j/˛a'!sLqG/ *DT]T VHmBG&EkyxUEa-Q>*:9T43N'ֈxΣtH2!FC&D!WO|zxRwCzDDO FEG*ݚ{51nO{<Z#~Q=}[qڇiY)Kthy`·c6Ki+1T&u)^vO6D AiF-P^&YYŌP|ۗlY)uRRV \:ҞKNl>@g$g43qR3?~gШN"Vؼrn3^Pg$w0cFҗ Z/5MRvLKnbu&#Ecg֘a46l';>mPrޝ2Gvgѽ\ q}c\ cx%jDmrZra:T¸-ҚD!6ժ(2O?+UIYnvxs{ljLA҇[Tۂ4}+4E!r"34uqs%]0-c;xYFm̀O!6^*knjIvL'6gBd|7{ R  3q|m^7| i0//,G`+wY|ށtO}?ǢA-4b#ThN|% C۳&xl(σZ9f] pEX6Oh||mBhv`ލB/%֡䙮̉$gD+Zb{h̍inƟ .J4^Im3iւ\,x3[幵81&1 RWE  arh&3RxTMr0&ߋ _1`kUDeeTZO'"\,Bp`"8חP~ԀO AΫslޡ6f#'pvD^,&9(Gqcx9eTOnBrJF5C!U:4dD [|ց7`1i9`1Ý( …R:Q`-d%N+/jc2+¦T;0 fDqX>}aa+] Si9 `uvW?5'EE}"ʄ&'0[*kN5ONI`Jn tԆKZT*pL#M?8, LXO6FEtecBNvj %}*X LIYSӶ\B0ӛxfy`))sLiUYt;p7Ug麆؇g&w~pm9s|.& LRm_&D{mQnmv#QaxK!,f8a(C7-clr/#.<ښ.6$]Ld;ғҢVƐr M1LT*z=JH<|)` j*~j}UOŨ3Y^""Oy##{\)ر>V]yz)U㘟. ۖl !5m|]圴N<+nH1?;?p޹s]ˆI젃{+y|D׎k46%; -4Duz,]k`҉ ƯYLt$L~)9_ +*|L@+3Y{=}}r+X3~@s/w-N2˰# >" )9ů`|qCh&CV]`z!ڱO^zH؞p(N3 :&R*(aߠ O:s)q+bV[<Y''.ĽXg-!:ͳS1,Z_Hd&vrpV}~{&G'{ M mSg .`y) :(bҟ:@rV`$#٤L}t͌Zr5Ǜ:M.VD$=U >4,np`sCx9kc]ԟy(_QK4#\kUvcߪ& KQNkFVܖ)XWy.0MO~vd>|:oB0,&%Tv-`Y$죈=cU@ǜR_(c=@)M3;@R/ pV-%ǕwsQLaHEE2蜦 doȜ͙!ꠥDgߙ [nSz+r'2H+Y/%Ġ>DitwqlixYdmNj>VԗSS:ictu[ .ڲҤt)C&v)x>NY^Q{z|ka ~ IwsєYjDM2[.FrQM')͑`Hm/yhklgՌdsŠz8"2ޡkD!(Yv\M7lf&Qc 8-!J!,XXw0kbJHF8l&9w쌫2 ؽx[ ΞB믊F*_h7z{ZCN(} w&->|;f,}-ZNm" XprUzmѾV {Y"ч&W#n'|Ҥ](azDW6]In\ DeW-j؋ 7++$w#CN n/U.ԙ86zr3 _v| a'WhCS<\6e+-s2X.xXQ= 8E_zQp7RrYXmA m!5];taDd|-o|iBZ|б;5Bpxʵ( wX?} R#"3\Đ=LP 8zc qy!ϊU\i)zB "q72liFJUCN?*)Tfd@.j~8|?@q!PŴL5`؃K”_5ƹܠ)3_'.6si^Cك!? Wt&_e++:Pg)DFXBlnܶ_I194 y<액݇:ȀN xSqǾC SiEFb CIWEB%'azk)k&"CKd60c,ep쩄muP06>3JfVȪA['QLMaglia~4Y'j%nj|φpЛv{넾/Wg+Z]Gvvc,d6%' FG'Vwfs8(gEwRMc8)87 rY|vx*8ebbC nޅPE%;k%/>})f&1/WY05|_]_,#]WaGp%9QSlp2,y;64ԍs1 R{5WJasH r ƘugW8 1@o:vKuP\Qz=qG_Îi$" G{չO?fӣ">6Ͳ-faX,㔅1~H<|^H[I-:KpY q^H B !҇9g 3kBͬh`1(2oe3XnRVxkKzL7%"ܞ5:ww~(sjl 0)W*/ *CCO  1?P{JM""2b.*9@.p}|Hm-R 62I[2 (̶҄zi6P!?]. vI&bP X"kYJz޼f[ t(!E$WhŇ3aJIe?h01K/T̉y}f֛,x\i*޸N"m$ݧ\ȼn,Ĭ\aכWӧMuBCi $c_Qi礞 ZbY&[PMҝ58~~Rpc,V X@"kCS,HO%11: 51H]?h#V.d9{qA󣙲 90˰qs6[ қXkUMն > S{кYey 1s;g<2q Q ={c_x\ЋL }sҞor/fM,ˁ q y{Wµ'ZژCm|>hw #<<|1n秓A|ޟ0brRPH0/(;m#4:X->_\rwNkXNvNKD}vjl0KsvY=G4>{C2P-?_3o/A_9v0;Y3sF'& sBKW6jAk,ʙ͓'=-R "ћ Mbj5IXLn6uOoY*d"%PIaݓ|'Ey_i&;Q*a00P,_MTsfL|qG]Xsm>$vCrٍZA8c.jy{"uIF8|''ghYwR9 1L&Iɭ{~)JXLPkEpź,*Z&j<{Xu(9zΥ|L+N|.d_QLXT #C~}k\HU?ԂzpKb,o_J 5ŔJ, ZpO޲)bjtv$n+zJL](?is Obb-,O哭SG/ho/nԞ_iC@2#7[)ZK7&b]W_mKsuW>wm]DxTlcTJ_4$vZ*ߏ:|W$|e\sI_zgLK+Kw:O~y*u*J =q4;sM8jd{vq) &/ĥ} rqclGJQ"09?aᕙpǂʭ5YV_|rOD4] O`ݾP~+C5N*:u^bEfas.lU~f *~($]=b7(qgt3U/չ|ٳ0QKQ8EBkæf]bƺWǡ'7 m(pb^W [5Ss|9%dk!8*#5?]Bҁv"ҜQ 4a8R%.Y$<3}+Ғz6"[?D}~D+(lZ똨HcFv;;IjMIS~6lu/s ?bJ]"6Uhl%\~\ŗs7ȵ\NTfNúQٌcvˑQdGh}yAu3WENY;.j/;]ASAxI5VɎO3"6COa6G㈿؆BR|xӭoV:=y L&Rx;Cۊ{灓Y-upq~DR({)fE++31xC5-F%V0E7&_=@YI5ڴۆ_ X5JnL ^0PRp VjhT Z~ H@"'X=3 "Wrox([q4ޗ֥U: quo%)낇]%27NrW7w <_2i R&X%DseK8c֑t1$6n?-Rx&?/=3OfhG?Ai]+C(V#BkȪIftH=h-[lS!!NxEYZ ͛⊕Z8h 3;1@.L tH?J5R~˪Ãb5Yp"44\Ň*_ⶍ|%'(n\䨭N=g1dvvV ү$e{dZ!^sz!U΁5" é_'酠qY7C endstream endobj 276 0 obj << /Length1 1442 /Length2 6474 /Length3 0 /Length 7446 /Filter /FlateDecode >> stream xڍTk6R sExQ0_3*s͊p[y FOBݛ:p-;|p;TEE= @ 1 u^_ {BgqEvc@`v Hwm0~e_?~=|Y\3w)jp xA8 *,6JU!񿺽ަ;C&⚸PxnA;俪_y);; ]`uG_@q-B)Wj swߨ |-Y? C)04/74g@~-??kyA5)pE0 &]sI@X֣-7>^8}\!TDm |X1,q1> HJSWL" !! et7S YS$i qny$*g1;vyrClI;q:ffF+%˹S ;&aJC?l2abG61'!C%_bFbNi~x/Ť|+#IpZ[HqǪL=/>Pĥ֠0䄏 w0{>mi;HĺbEaXͨ^G+&P|`{E j.蜨)O$jg`o-!}=|)0d d7͹$|+.ai\L|/cQ;ߛ?/&qi~tTr&hb}ktnT`#!WS3ZAY9<!V?|JHDɴ0K8YҾۯDf<^Bx J^zA Gn&pZsvA%=jW7>Cՙշ炭 [FW]zsyO]Z?98xDqe4|#Z.>gmԱ_)T6k8NEGPi_Ȧ /Oy=&&W+(:l͘u{?7c$10D8T:m|c(!\ k>ç<DyJmpD1QuNk!+*q[?>$5U2U@GH-MX1ˎfRF!&gCi<%\uGc Vk˂D a-CM*̧C晏L _gY8 /_` 76C-?Eu{-7c:ޥ}!ئ(SPovnyF@@d+)9S%RPJuUAOXH+'ܜ[o{bCMX]eEkmZK 2.h ԡ'ߝg8v:"!{VJê3xHRxUjn@_ZY 9Ϣ0#n8*+×Sojz5o"\niiɫ07 J1 jMw%8&H_D(PLn3KO*^Nn̻Y 'uɐK=W/)(V&X哧2%uоosHN` +rss7ynY mj, A?%|(nSOZkbP轨W "\@J~͚k| O^C~Ch3ix)+iЁ,,zæl"9M5bY\Z;:9Ӷt]\Se< |(9`Λϓu >f^%iPZQy*e3z^1{H:-pߕaB<ϭMshj̊;;?¾P9.71U(o,}tn 4$ǁ/:[Bbj*.e%\_sLiBMuI -_'n=% rj0Nb8,ܿ:83ѽ5ȡN1%U;cB$X| "T+)TӻPHk8ÝbG'w~&{C쎑3}b~s$Fg@G>?,Ml|˓Sd?}fX6w0JOFg+3NY[s [2pvVEĢLLޮ*[Q9w{$zлSYn-B5A$ԃy{] s },97mN1S*Vh$EU^I'P]NxAƗ24u(Ǭ:6;qX 8yfv'w /~UBK~X4&zK.dͱOOCN1CDNmʌ#3 ^??bxW~NW؍Ss@yI1}5:W*TYI aʯ>Xֆ3NLgIq%~% 5ˊ ܶjuG?⮾ʨCu *B|ަܸbw*11b%y6VT !/DU5oW2e.',fqnbWzo9aide2*ͼe(*[ddp٠Hϔr5ݒ‰$8/[*N?)Cvvi^FžnmT{unPI.]З ʺ7Iϙߌ^wl-0 մ8`*+٩C$kА+Ŧ)תMވhŮ BkosEy}D)mxGˣƀ$=gܺK]syzALk{wn2*]S$F?HA$Vcnڅ]<~wh]zV׏=mbQbX']7@i+:otP$%9jd Jo~^%X]j=7]߼ r TKʨ ,T>%h$W4]rf\QB =ry× a6wpP/rl>z}X!٘I[0e1*"PO?ǔi&bmm=џ&18.ܴYԧ*攟2bŋMU8tQox@/tܾsZy$5Ȩ"TďrV_("8'UZ2v.o&\v #6WkznyΌwdw@yg9왲M#·:]%PjJI~ESA3%^'2GwX&,Du߹+zWxr$!q$ ڄۼg`ԂE/a{/4R}S[v'pwn!HW5v[=zXh?6 w?T!템e>t% ` w-ėojogcY3;\9\:xeXhgxr~S ɑПs+?=}4^|H&5 q(!IٽoH?'혀joQS%WTFdHv2^H9yu jVz<ى6ɤW6 eϭmSwOT |/9rvw~9EjXИ%{WqؑҖ!?G?T 'rsf-ˇ~$i#7l䕝ܞv_W$lkX4KG  =ZjCKN.﨩sA]3å~ TdvBI9m;`RFgwkE!D0v׼<0,h|PhR(zt>X~";%iDxrQ6j&k{UŢQ7yt8FΧf S/qd.A:xV@M z+#7dQfWWT#0Lȸ7&B:R k!2>~Z+6\Q㳨`_qrBW ͋]Q * S TӕH ÷^JqJKVel)6T`{ wfsMOF92u/"IZc,!ZhLL uC=ﺣ1A+K=փ1TcÌۨ6:4"/ְAzcFܗHGnǕ}.,NӲ;H&eAH&U$QUҬR5{nvONEEv{KEky'V8B0su>>!#\oĐrB Qm;5ΪJϺJ#6EZ=%ʛlk /PzYXRZulshdz# 8UtY"t3S2e6X1W(r9i՞&s3L' |13_l|8WΎՖYzx"Ք>~qltnwlh:U sؠrynXF/AM F;*kdhTZ>&WH6*e3 w̄IˬWec:(2v(eY_> x!C+U*L㗞W540&Tnx'O|@jC+PN"T!M=Ub5i˯;}{&/Bɶb Il:bbA K{*\^ؔJ_>:g?Lum}/N77 +#?mPl A7 pXG |xq1oDA٫T%c+ft_(K809җG?r"3;x[ffi f4MgNWv̙#??߂'Isw <,&\-?M$Ӟ:ɟ$|['7inW,,ivR̦iKM'mke,1UY%n;#{)H:z4Q> <Qⵤ;T\~^&@9Ec*x.{Kynkzggf[o2;JEAcŨ6ܦa{,\_[͂#mNjP>]A硖'A6,KXCn7ϏP|ψ 1lErz)ڈ3\ЬBQՊDzR;f@=fAܨ*,[r[c-OpLl endstream endobj 278 0 obj << /Length1 1385 /Length2 5961 /Length3 0 /Length 6893 /Filter /FlateDecode >> 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[IsW1W[ʕzDK|I*ۯ_70P-RbK1׍rR>V$_[9U{*JY%@Sq*%U쩠q4ŔUpXL S~BV*ń4>." 'UiLOEYieq?bDGgPA a_)^@BǁI@09aTX+x0"%: Ԡ3V2bqitV&J+LP/CeRLZ\X8:Q@Pc{$0֪DShVC֓4# zk*CT9C8aN\; >6sN8G8`*4If68`mt墆RK,^k:IGЬX> bCa;jtHnX7xvK l]EؽU18$4EK$'i^$9'98dIs5zp4ᠴ#JH%KPՁ|[O4%4 I{SݞxPW`SVGxψ$jӍ/FgG{\'= rrL*1Dvq J8 s?R;Dk;vz"{_r:7}%^>xTWj!ʫ?6=qb5 z⨙M.fxCɰo{sB>`KTL~0O{3b,E㋏sa8'M'͔wTx@H] Aؚ)1=Ѡ;`Wդݿyi2cߒ<+WΛh|m5|=!m-,&Z"uW_GF`DI H( 0Be"pBj):!k[F_[VVCOz;Z 7Tp:#6ìM)5lB 6%} KhIߢ UX`%q!PH V ʐ  x2?Mc#@u &SSHN:uf3?6>NU:*RocO-`+|@-U *C%SM2Z)vx5EQ"3@t7"\)&;0TopE-'%o)q.]oE}!5*1)z1wݲnݣpCh/[7R|:o/Fn~]L{[16J(oDtrOׯ1n\#*ӞibIzw1y/Kt1~-on*/2Q#PES眨vp(q꨺,38{7*űx}<'Χt?SR|IR͏%DQCI~0k\qodf ߨk<=1κ|"~k>Ñ"a+ \;5VnE | m;|چքvVv\7^}M¯c qJ{Phʢ=Ts/m8*ZWBW<EjvB68'*LB2bTYZ Tk;߿4%p_ZzȢ6 i۹IUp^<$ow) e]zXm.o{YMiHyEz[Eΐ?gýyF"urnN0U7ʐŻjX()nܣ;Vq֒2߷ն5N yE}CXd~ЄA>FZ 7r ~LC>wԓnM9£muKG2Ҝ}#@YPeT/׈tX(4KLa2R{XX|sF.RT1T9IC93R aE%}b)c iPI\"'HtdSREQϩ\*G\=x\~݁,BIrY+#8B `Pn9p9s\Qd/{6;Nf~4oy<r&@`Iws똟s]2f,mY潺4y$X XHقp04t8P1&ߒ^Mcꬔ lwȔܦ:댐&旼we#O[^}/ƺshTDű|uiJx,*1z3ܧ+sKeVѐƨr#k%isig&rW\DK~T倣j/r獕b_/\pˇ¹/K\*fM>|ȣc#ɱg LaS֖"3vrn;gܮd+\b/N,rPRץ2ٔ{_'8pW#sG/Նd 6[2qncK{K3)t2ޮM옩sIev(:+,z_p%(:JO-b+'?G 9퉚+"X)++O " 8ҧ'fLXnUK}l',ӱ/X=FUxނ6߷K*5~<`:8gb,TŅͣ!nu=z&/W{Nٍ@b >䛉Ys6LF1z6hv~iXoؐ '{H|_<cT ıx%^/@rħOC b G,1bɸ[Qi{SV7Jby4bۄI&~*{~7e0`5nc+XFu"yTℰ`5&g ѻYf%%[(pU7 &;YIȲo6Jr ~sx!~/F?!gY|?EP͖&,D3>>E%H|3s(@` d|_.r17'GL^dbM=WbSL'v _?;zy1opoU0;m0I yW Y|ÛoH j4-܋x*& c߾|1mh݊!J\풃e+0<}uHkkUowB1WXj:V$el _',WCOɕZ.k7IUoQ߮|6I78e/|1~1N&QJM Bt`f˄08Ά۹bvU~_O`2mп;gϟD?*;=opi6xvf&wVe _;>|~e|0 EC+[L]u*Jh endstream endobj 280 0 obj << /Length1 2124 /Length2 16729 /Length3 0 /Length 18015 /Filter /FlateDecode >> stream xڌP[A6{pg{p ݂ `%8ӧsޢ 1}5ZP3;]Yl66N66$jj -?r$@g0^@7˛=@ ```cpY i2(`$j GOg[|LrAf&E+[F3[?!脬\\XYYL,Ζ"Lw@ :Q(MaPwpq7q 3= xPU(;6Vۀ Ydo  ,..L{ Mlo&n& [7nW17?3ő0om7pڻO 4{'?don sWGVM{+PV6o"?2K t=̬XJ/_oGG /l8}_0L {?@;<zlo`_of`o_G̪Q[IFߔ| `fspx>|7 uWwo}On/=c)9M.@gٸ~H_z &v [[M(:5@sʺmD3sq-A@sS\}Un7/6{[23[6RvJٛ9l<ggO~Co4zk,.o.7 g*o`}X% ~/;UAo1(Uz_`U8jۜAo4?3Aotfo/΄7H?ߊS&|o' +OG+?,d726oѱߖޮV?lJw~u|{m.5m4-%;c7z@. V+g?|-FOo^@?+d_w~=fH fumw5ܙLpp\F^#hIJ_qD-w:(}mc1I[ka3%p Vp)٩kionw֬6~-6Ktc>PFw>NvsTKDQr&Hvڻ#TG#ԃ"y),^c]u[':S(`˽hY5[)[q[9; #48i{**dױ`(O'jfӊF3Uԯ٧Gc@LIvՂ m']j5 z? SG^<S~,$<ᦌ=Ѳ a%CԞ?:,_ iFɄ- Ddך)P8@?$3[7\ny$MdG"1A-ģaBP^O@ɶYZ)!$cyNцfL!b_Gyz6E#;n_).?#姓|\V=X?@SZY::aUWPCZ[r\QނrvbȿUtާ9 ywX+9i4}zsh>."8 ,B6]:ym7"ce*D+MA"~2^n(o?x4ȝI7I}$pH VUŏ.x$i]}&q;t_JB~ݩ HU 3ω+~JVlg+a?bN/VQY/nrK3!C׀8z>F`Ga4xIFcrXL8KD xMP )-N},g3Cu5cUamy)cvXH1z3~R.Uoffü@Bͥ ㈓,#Tô_MYUC-m8E.>zx ŴikCG^^*+$wiy.(0 YsԞ9W}|{. ?ɔUZM;,xSBf}sQ;o˦>nT5蔊3|NȀ2|j^ov4`+6{_ EziW.n!QY5)Џĭ䎧϶Nh D"8nВ;Vĕ'm9*Յp(zF]d(%].MI&S|1Y ,NZᴗm-. '|:dqKPՁ$V>:aֲ#VÔYQL1 ?|au RoZu̪c OkIύ3R~(_hY<_;kiuͤҫjӁp2J,܀9k~Ե -o}K^Ky^?&|($j}o/:bqr RpOuofs]pqȮH1gB $Ӈ'!;mWuONVᛏva8 ۏI] tNE@.{)q?#b\1RqR@\YQӫQ-['ٝf48!J2K^%?U^6 V}0!Y9oU WHb8o^]~ ^&H,pX1Kۊ ˤ[{SӦTcAGM1G!2# Fgk3/~3oOt_8jNǘx+ 0n>9WШ&-udL+d[km0 ܥ<y8F=L7ݥ!O6΂j®ͽq d7D40>|:=FbLc>0CU 'AT%,wZ7<>yso BOYΕ^WN;_5 1Sq 1ݩIu&f-ϙ>̳@nHd2 TxJ ZQq>q][>w=JXrs*c##Ԙd0`KtGь =.-03->~bq'ˮ́iF#/ xue 8..\ՠra0GKqAS곊tU4o+9"Pm 2OdRu=G@`[ym()Rgq]ǃ-KpJ iǢL} 67x,zIfCr)'h`Jqb:鹵Hg݄WѰ_M-}~/aшWiEnsaWWÛ|wz-FhG@8a퇑@fh &(Tbg|Qi0JfM{jkA]^[$KdXiׄ{m+땛u떑BXhr^f`_5smASgMKzsYO/LMIq3286*,,0Uc1aa(pX#Ciݣ2ha1+- phx&AKn{AHĸ-wKAF8kQy7Z^QzL|G74PLB;:L^^QSѰ?ɓ !skC(]'_MԜK7wj$ P]_ يC]μ;-?Ro>#J(S]DxHDԋ+Z$T [ﲞ -_hB6v'y%h1Q},Ǵ?]l} yl*q Uu:YN1>.B)Q~|?`&!nu@5Nǝ/w,p>zWVS>><"&*%wuj% XtcoاnW݈|^ƋX7McHS! "nL37\$"^l0紦kmd o 8z&Lkd1~-W:dևeLVZW鑧 Wbn~hx'ao4sվ+MY kH a> EsZx]) j( OGWۨYVV\U~h@pȳ6lww꣊lDS-G..*+rH oG S.A},kToJJ`3W5ş:c`ͅČGW#m TݘryR;Kn ˅/.zFKn͊smD>VKFյFG:8kΩ?L"XD$aPlC.p1KM`qh5vܢZ?]5{z9ay/&t.Uϡ5` 1_beͷu^s[,qlI), Pn>4ߎ]7[ G^lK?*w/&wJng,"Am==UUxϰ[/W! :>z> [T[*pWZ-l@A)}t,[f]lI>y>x0Lw1my'>{;7Zx~7FݰjgCƗPkR_]? 8S4]h'8{^:_7f1a&4d5(㈖C.].S^_[JP$%LWϱٮٮdaEj'/Nho0(c {]Pb0:h!A,V9eF::\ߍn/MXFu;@6Mkpo&IuFZTC$n E#[4cB_!.V Swz3Opp;,^@9iX[n δªEqoO]*TBڃmVʤ50Shdxzpӡ]񱼀B$KlN)HVy [W=>ϊ~MPr@ٸQ+=]x[27+ !:Gj!FsZ(x\^VƹMoFY}@pIl,BZ`)@h'fTUyZ\ @aNY:vp[Ph+kmd\ _HɗK'fQ}֕C ri —MPE== "+ߤ V^E3}DgX b܂n˒72qntUıd\du\jЌS>yV(RyAzL>|Lm!?S0(5 X~`0&U),ܚ}yE0/%ѳ6sF>@lX!̺x"mt(W/ME\c19I _ڄ4A ˀ* Z>i99zN`̈Hcձqe羼wU@ 3Cr@TjŎVRR*pt&a!SkWIG9IユZO{"hf;V$q%7@d$pj],>q/_u%IqΞ˽5l%s%gu1Dn L| H|(wgj cD>6, ޗ(25&;Nܟ̐s;ZNʍ#+̀ud.5|G\4 a}zo \uOt0!ٓ.AqOEw?ٴ>HdUj/=;֤͊! dGp?M._"` Q^%µB}yb8ĴfErЧE8(|\2%W6g6I!,T7#YtvpH .9NSipM}w)ِP{E֕/(3~K^jk3mqi}F J}6҃ڍz9&!*sAt.NVŅ݋NZ7W}>mQp`,xo;{[Ͱ+$$o@3+rTK#akMT'Vp!wZb :"d}SRJeӨb\3#Q~2`{4PףldfM>'s̻0(!MG $T!t1NXq]6vUϖ)11lW)yBty~ixfF!\ӥL7)sHe6 6Ma",Pfܢa8LPGp;0_2Ec(tQJ[k&˂$xDbK dYjr̯ ^^&;:bBׁ7ݲeO L W~m[J o#ZD V4К,qz1ՄgYMOF/-+Q6 4<= Gap%b.^SҺ1 V!G';~>.JKoQү[{F&oqQ$#RWYe.R~ŧ4kS.k2dt Ώs>'B:ywiA%tLtWs⌤(5?{=$x C얗QmFCjhdhPEh~C󘏕l{,JU~&s)9fjS| + z=X sFlG~] 7-:sZ H5FьC7Q͇bJEё3`oCphJO>TۋoU )d? ֮R@M>=:dܸ]"= v'uLh颸qB*Hhs/{?]뺢zf T:>yqbm"S}!ZGYH(;;l@e)w|~6 _51}-UvpuNFBirEY9?.1k>_%d s{o.M3XŹ(h @F.bxIoHl1ea&tAfq Ȼ8ck}q v'f`1黲Ӱ造 h_Nr߻̈KѺMj$SWCOL{5"qR,l}{ x9H_ݲ~'4[ j~&f^i`kʮ>$~[7L5'~u wgW.YK+֗͏:]%駐ןR[vBiVn:fF53$OmSc߲Y7cSYt<<2A`JJG!D NF8^vJ78-HfS0A%8! ઺G`0 ,dvԲ\5_y*[%}pr CHڦA)|:Wma>"WxSHYx3H9jVD@msݚYTݷR Bl,FL2TuǻV8O+[/O`aȝ8 ?WA;zRxN 8KIH']zKUBgtH>42~iq:ӊ< }/gPn`}-8=b1ۈ/wPxjc2)qZv3v?3\=*2< ?Cfڽ(-63f%u!4Xp?B3oqǏVUsPk|g eJ @- }Is)SzN@[ 30B>%${%뀬2zBOCg%RMƇT}T|]nIK-rU*pۜT0fZ,#{刺/E0g߷(+  'D+m96[#m23.6s \ޟ7%1MB;!&8L٥1UYRlNVqS{Lq%*(& 뽰.{y1Ze <$q{JeZY-Yڲ}MOIs`[  1"`w?U SUW}nƑ#OY!?+Cz( @[kG;C0eFKzV? s";R3ǖ硒VT:NΌZ>6T3C牏h0XͷMe2d=IE)c9TV%2IVF$RJVU'2Iak/d}-jczW3Zgma`럣ĵ0o3irW^Ӱ1Afy_6}ǍF9:rUseF3a_$lpG띄PR]x'g-'q'}0z}o')HA[&M]Y"W+ Aw໨!ol-yoqblIBh -4e ɨiA[#G{N®P+F#]̫VpHUDe鍇>ׂn"̪p#L/{K&F!qe;~a-)Û?;x\XNW6JFĜHᆓ|&dA>jῸ$/AU׋POu$7~>_)~Z>-ovfp$FPطt.Z2UYs PZ>ntÎPo =_5X/*Ab ߩ٪@,T;DZҋjexkj7&! FhI'%?̯,Idl8sv*t`Hig/(z96(#V\Yh4lKno 6HTXe~ϯVWTڹOA&"G2n,Sey-,+x[* }PYuXw"VvܧW}H_GܞJmAUKW@OmxüW ?h,{sGu$Ұf蕆 -П/@_5,yy_,oE]ְ?`v[TV=0P'hnC8>Kt9Fn=A~8mQI⾗1:byRd=ʰ9<Ҵ9mN}Ua@M+;7aKTÖVW&ME=ݸDѓl{h\q؆FϺW/+VEMeT0|ЃXBdLw-H-?}i $sIPٺ.[3ċ'nzwlzg/٘zC :%<n# 1fx7E娕K@RBQZ</3K/hd@R%!& @׺O94ǹZzVڿh~y*I9> ԝ[m'8D~\\,P{=;5 ?hK-Wk7s3.թvh"HWd#KNj[1Z%/ICYӑ _Aʸ'v_֪ۮ;'67?6lPi0q@5/3!t#4ȵ#(}uSw!5C못*>RLI ɜ=N_:XBJ#HMV\mǑӎ 9,mUP,!I1>?Nֶ7McĹs|=`.Ih櫬Av-jQ5^s 7н+O5ƭs˯2CڠGs3r?ߨr<$K4gjZ^ ߱s΋=*79>\SJ%)T^M x^e[',ߢb6 ez/:֞//4c[F|-YG<>$b\0,@v\'vD?z޷‡ .@hȵH&fp3%b.zF7P=WH!_ac[n3]e`0qƉT.,3iZM%jNF }tb"AUS`2<znv>ЂS9ý9d[D~ͺS;Ф|IF\EBC›l'KvM%r<oD91|h?oZÑXne4S-ܴΏD*.b,_p%ZA\!_}`U<GFr81)Ji_{.xCǷ'<h>aߩ<v8;zѣӜc+#*J &"ć@ے/t]@\j<rq1GYR >oƜQ\l׽G{whP+4ՏgO~]ԇV4q2}v tg"(T`VzF bբXW<Ѯ*yp( 3;F#jc?lS2%S„lI I1&IF]H]Ta«V5]^\?x1\/{BD hT,5hXj lU'dJ0y}oۂy,aW<.o.JA :w({wPq?9V[#oo"sS/^X+]Ҏ :M%5DӦ2[&υKӝ$;Ɏ =W]s6v!r_;fmp#.׬IKLY7_CYޖocM#HZskƋsX=BU~ik{y*_CShj9fɞk6#~g(ZHR=،EyQCBx]Zv2(4=~Q&}rn2D;K2='n4fƬX»KoL+L}'׏N&89$7~wZjEn]ۘ!KJ\Y9ElG+BޫE 5&ل]]AzU" A;-3%ϓrko1P{kuY6H15\ɟprV sv}%3dmʒK߱6j4q9YД(ڄvϮp"DGFkqmnRkHfv\>ՙgj &Lh xvc^*PK^ZEN 3 ݰ#%(˫Tq)w2V\:5Ȳ31n`]&g=AC#8ܤ7\\ E&Ŗ֕# fOc݊ݔ &|E:ݮx ЗTKS?搾3$6U=*Tj#; \C}tWtjRG'%D8i7#HYlu%ՑC_)ȳς1Ir!;7,]΢}-'Iuk=`OoI1O284uRJ$JTAJs>FT5u= g4̆jS!❉n 9ggf\ͼ*osoO!ʼnO6G &G$_5 /NSϑ:ɭFMk%g6 E~e3[/I nWF^jhqb,4>_D[GT7!¼ew٭C;Dlm2afZɭ~hu|afx#eE8T.hc|jՉ9OPKYD>LFȆfSq_#+;M5ǟfGJ 65CEvr#U"o9*g"O;Q+|Eg^׳spehA+#skUX`h"`M=∨{ɟe2dJjxP`cجf??l__RGN dxZD9_v^z'XhLʥu-BJ[dxڝU&|1寛\iu 7z|V/D}*Z+ޜ9+-6{oZBkD:\>5Z#2P MO"31i^XOf%*7M &rD QC8#'9"L{ӣs5ҷ^9CH=PN)- r-c')qveX172~Y;HMFmSWkq>7.J"9&Mg7 6hL>Jp PNͯOpPfCVj۔XUA |kVbG9q^QTJ~08=~Թ8< Z2e!Ͽ9DM+q"O k`~E/P,ـnO>[kʋv2T(2۰_Ȉ+-HZ~(w~$D# + ,\Z̖hQ53k3}ѝ pDȨDxZ)rt}EΧNr蘙6b{l') 8/dqk//tdJ%+^@0*]5R>JV9zD l:;Exɇmc3&[%lpN{@x=aw!Ջd ߏz$mU6xE"iC}m~ =J|N3 # u~wqv kI3e )iۗa1=NI;QD𷠰X- 9d3hTYSS"A-Fn{eW8q~IӒEhkIڨhVJtA`Ѓ̠)a(EZ?aT(8< r}.Ξ}A XӁXͅxk\xӿuX4yԔk€\ӿ"NR\Da1!3.bʕ'[gxh" } O8.EUC&[lrqAQ8;q:g sN`4ЌƟ^?:@i02S?Ʊď+cc3(_@-5 lINDHa7Ua..^':~-l[qǢ{8Ha1oK9B,A1(5G΃ʐGʵƹpêvn),`/MQ 4drwb"#cF k_"F)G<ʌKG:HZLe!R endstream endobj 283 0 obj << /Length1 1753 /Length2 11041 /Length3 0 /Length 12154 /Filter /FlateDecode >> stream xڍP\ c qw@#ݸ;] [p 8r9>s&'VT2!`Gzf&3 \h \hye!b4r|9Ai'k3+ C=@d cHC@$r=5T&fnnN?B6@{ ghyhbd PnіŅƁbo.@Mp9Z@{g)F6[c@"ZR@]쁀W5vxuq*R[ /cٿ # @@,#ldmdjgFq!%k`but`pY#a^Y l*Od4y=w7ƿk=@`S?0ueT윀RۼLLL\,jbGU7[J?į=xyBlfm@f$#g o"$ff)` 4*_or0ҏOz 31sČ"jB_0Agag0338ٙ^GwLJ }=7^jƒ2LL&_?"q'k?Tl@n[2u VWh rZ)Gm2/9A 4U9XŚj5 T8a^uL^oWj@LX6v+X̯[i tF0ڣ b`9bD\LF+Q忈h0^1/`4| k/`d0_Z |kd~-/Z_ ׼y _;m@&kȿ#r_s|-_5?83O'{{7) 4AZZV o=D伫/ww1/cz'n㐥JJ35{&8ˎLG!+IRpl{&c_f4*#+ L`PF[ptùxԞ!_tРTw2){]2)._/[Ucd}L[\JrF&,ibcàtՖ#>H7?*OhͰoLrEpPCTÜqud9ruL$MݍHIz3F՚.gp]V8UBTgԲ;=E޷mG lS6ąyAdBxeQޝM=X5‰xo$$<&xJrv5KqI./@AGy|~6Ҵh4>L҇F~hGrc7[T͊RS]Z/іن50D>.`` HΪTJ*;k8uݶӀtK|t3C~囆kCD59,_#9ۆ"(E~OR[|OI!hW ?JЊ5CpKM; Ƿ>oڣ4qҔ1VhmF? |Ws*\<,|TMh<<-p̘1Cу T EA_RnLxwAnزv6kK1=h|f^fOɘrc9?pQSTbw`I? l El!T8$Ɍ8,r+:Q012Oi-We6>#;Bn[]Afa_^ET=oNDgJCʎ J´hϠ)d,YӋr.t ֶX-8#z0Bc_N}ٽ"iPCu}֣ݢH[VoHK#d ^_ET,ZbϯL; ,.NwQK\@GO';h03(ЅYs0,S㴾\ț0U~6a(&x/қop^R"O%kèK%YUXMx6$齧>XH$93p-pœZNz-e~"X7t"_|?)zNk+ܮ/b) rWD)FyZd 3891s vQNx45Gj!۠Zoxme-߮jfn)᭳yoޣW'RrJ!7AΜhzԝ0^dgKf>y \:(8yEv`5|%s jRtX( 1m~nӾF.˨JSV[6yM% ^u>[|>.D`EŝG_w£O 6+fHJ50qYO6н"Zq#Z`Eh]@gq( (-~pJ3Gy܀?3(xBK l[5 9blCSԪ].K}n 7w F cu¢0'SabXԍbXNS ։#@n^H$hl'qwi$8PqoթwnjG)x}<,9K7)α5{N1!G5KU#c̲UAJEQm৕,Er"X)oW|:/mݳ/6$0|ɵ5M*+ \{1̵>ڛ՛ny'W~FZ OA8Q0o*ˎ?z$N!5=|:BO#?2am *c H8IaLK:CT; ^6y˽WgQl Bʀ`e=1ѡݨb-)b30GcCjTEF/=M07uމvL5w|j\O"lќ48ro9Q<`ǀŞˋ1qoq添d,9d06{8?bpN*`WLzvS+~ +6ƞX{˿CdD+sG6FW[{̸5o&ơӖ0 V~J`@9SjvZ( mTUN!YW`^z]%6jZEtu6Jǎ~Z2;IմX%/pC6UKgFo*WJh`w]>A GLuV7܉$Gd_%Pd1x qoj/%xЃhhM7|4qi#G =P3)"Yڐj\IsR:㪆Ll QhyYHM:q(2Gf&ezb[t@Ct.Fͧ$:51NM|;]6fFxВuk&AAN%f*EVgE~cDMvL(*zj ~˝iPajU'w+ٮʙ)q[1_;c^7 &>8wn4r -@Panלw*[9\1BDKa)_.9+.ꇜO>:ү>јU58]Q7mj)㲇N `{΍΀ĥGRhz;axP׌T0]2-5u|̊P1W~ҟ9Px,Q E|~VQ|, DVC=uz(I)mcѬ5\HH΄?PG벼I_N&b<(dz].ӫ g˖ )2QZ{G %_y|_"b~wE<~.?l(]THezch-h2]`0gW=:-,XlF5[9nc++q8. <  }=uz|,l?Sʠ }h7QA^c!٤UͅgY^U۝&`{--}{#:fCʟ}>h1ϗ5LM FDceA8Y|Sm7u:)Rgmw>ZeEvnG86nL2,L?)x˶R!oHu]5bf;^DO2֗hHT3|}sHrU?ĜL#yzThƈ$%ֳ¯jxaYv&%KahZn fo M\ IB* b'QZ:'Ur )4٪?c)1'eE~ASp{JaH󃼦k!Ϙ\8swq* bE#+tyg*u,ghsR{ NpA,J+бI,йZF]GF俞M_EƸMϝyY:7K̷P*Lb +5B Hvơ'MN.c1t8hcȴpc-ƒڿع8É&Z8>+c + [jdX [q1Z!JȩQ^$xP2flgD-oZ n^UQQ{7ӻz؁Jw'$ TdUJ ^Z6%ۈ]_{40&Da[JFs03/X*Qz￲dB٪BC,QKBC@"ʪS ;aI$ʷk_l)4@ZT{Yq0i+34WHDj-~m-"h-gtċm2=>I-,dBS(ӂ-%cl.d YqC1aL5=(JJ)df˕m;9`r5V_ceϨ9#1 FhԊ5A&[(W0DCY]?Y/E>F7Fa;4/C'ޗ~ϳ!ظȊWPhAO n3Gw(f<.=oeWwF/W{~ZAB횶Pk^/MX G̙۷Cx9qқI{NE/"MqWoT'Px!zPoKn&<NrLOIre]A薏xP"5M!9yaӃy8_Ҭ$QxNUyb$@BԸxMG45 hkj47N>ܰka({&YG<>&# a3)j(K_ \2>2߆o0]|"(r fZm_v11>3@8*iziSvlZ29P =;a:8'S:Yv?+u6h~OBF<{MƠpgrʱCq>+| A28TpjlL@V:hKW]E6ML~iqP7>c6 ]M2OaqI{\G=f(0[~K81ɜztx{d/_'.z$:дZ?塵Ĩn)7=J':/㈗_[àtN2P dG˩)[: FLLldVC?i%=݂m%"R%q.2x#V]DP kNhAbQau8/uoق;bdW A,k%yqԽFfƻMk=y{QygiWj2T?ӅiJKP{88uFw-˱5לW̖:";4/$q 豈-WCZI&:$+_$y Agyo9C[5&9Vbb`'l {0a0F} nL&f_q,ELY˭:g)yqYʭA2J1[,-vO.r%pHj{1@4s4se"ۣ,+1K[٩M#̽݇+zЬܯ>沢^{BΏx. 1wFD&p9 Qn~: p[N4,uHoXx%.Ǻ9mg%R[p'JJ4b~_o,{+ZDJbmiitC6nH}/?&^|+rvZ)B;tW;wh~󁰨or6kO}+"'ʊ4eFn"#\ȍ! %*~ơmLJAf1ӹ>dOSqG1mCvg({ ^"1\?1b.AjEv9&qռl 3";?0Xؖ`iX7/]x/x1yɀドs5;Jpd ș%:I_\%rD&)ʝFt0OurwmmlؙTTa&g pjL'M̝trOxⲉ7qd~upG5ϱnacyQƵyO)'/3Z Hq/cؚ<AuY't %,2A欥#wϿWlo$OOj Pz{v} g%Ǫ*Us E\d~rj0 k{i֭Y)[yC f/6"l>SJdu5"$MvDJoK2Vh9jL4e eqݸ8T& hmq7rG6'kWg/_x;:ؒ?fLC`cq%5*-IsI(-ZiA{&TK*'c45]"6Z7ހKc3*ߟ#6'0MoNƞ_rDzd"2?蟹W`B>TPs0 +ƣᰆ>h7ns{r6cNfEz4b-L3-+U?Jdk= Uk5:>GRM#xmZ]>Zg~d1ϋ#3l̷9 M]U5򨣲XQ7 o4\q}!"W`*ѯW__ Y{+1cݣ3FE&m^~N5|IŕP9u툿+ZNȴ<|ɬNǘ-~퐖~2j yߞPDX|hx@φkil3mtVL}ӝ~{'NKȖ z7ȚWio= kT't i@kvxŸ[4<}{b=2E,L{Y~c>7#M>&73p}`Emon(R~8DlfqҎ%VZT*ob] PXV'dJaEp~ |˵HDvXMFGk*Tx/BkV߈* } ܻOx.5g0Ss$+_%J9D%8!}] G1Ȫt۾" e9*hZɸS21unS$-׬4 p6BXP~kbOnZ(zShs(Ed0)c mr3Իdc f3ޅkS Te>v#P}& 58B'qGu82O,[R䟒ߵvl[0]XN,#f=ꫣhM0l8'c7|cz>]^۝SJH^ qr=!ъNhE{2lҗ;'uI?K?DmBnbI+>*>l&PFNtDOJASQɦiŁ_N?# 2/Ȝ)ݮ;zO$Q5WaYvϜ቎! qb#cbmnP57nĒ~N@cjAٵXNvE pݶ!ʷa<}?tyO5urWWsFބÓS tDch;QWhɒPd9f%J'#OҰB~Y>ݿ2tuiN\xu lu,_8Sf1cQ"y7y}0wuWN٘7c} S𗰛O$tr{ڬڕ\ݏ 73vaDztzuˡsC7ļƢ.-*!}ts2/~lle錅CHBfu$Gu{9ujvL:'NGc+ OB !}kvK:g+wMBKhKWυ)-UCȋ3e )0;+0;ǫOCk-k.^/IJzg^aiğ U|7C6T ЬN<0Ebr*=J+4R.SH>,4~doÎKW=mmsxk8O,S_(އYƲ7<?nT lg(6Tr8ՌH$c!:`Er\2,p<TRCo~cYVdZO:Ρ p\+xZIz ~di:n2YG'zyc x]v=t-n PTu-ZZvO b|UWy#8& >7BNw%塰c%H{甍j:ADfv-%*uvʁM쩒G(=FBژ (ԩ IUKڥ2-jrfB<',3xfZ*sM*x`otqArߨabվMSF7Ⱦ +L\vyFp-}"rc֕٠|c hx;u endstream endobj 285 0 obj << /Length1 1429 /Length2 6887 /Length3 0 /Length 7860 /Filter /FlateDecode >> stream xڍtT־H#(04HҝCw C3tt(( ݍtJ7 t"{{}k{?{yʨ# EZÔ4_  XYh'_nVC D@ A PuwGb@a1~~__@@4xH E*tv٣oa sN:6@9hq!m0?JpHأ.b||g/N Gta( 50@ 3/+@Cڢ=!n0 nCn2PfsXCp:re*GN ] o8` wy^hn87 b}9$ x(7 ŋ;WSVD@0E?ؽܬ#˰# 0_>; /\0/{_]`_ }].ۛ!`p[/ aEp4fG] c\ `= ߫7"N/ןCz|y< !~((Y6WHno_{E g-M kaIn/os;_U7wCJNNO w pCZw472@7G0(`4F2y(% G/90m$ m؍lo /`7羊$@B777MXB_ 0L"͌[kg)m|0a<Fs !Eڈ9TWx| G)RylK\|ȍ^X&^78?w#`zoDrZWko7@@4{LqRp}R`k,?+?e%=K)""@x;U6\Jvj ̂:KSںH }(ƀN&rQ;ܖJzDf5b]R#%,5',^?V9^B âُ<??}٠??c kp8L+?[$J7 # INX:ϸnMFbV yUi`O;&&K3=ZT-5-ldXS?9yNW1+ .z> Uh~®.c̓j-5zsGn&VLdV%V\VTu OJIk$qF7޷5! yt T +GΙS'ږئ,Ngx_~~@_ޜcEOޟ2?Dg, "U(M&Qc Q™y$*٭5Q!MF;]\Tg;%"kBZ%q4Vb{H(71m)<卢~˹M)0ɂ# 6r2.M=i})y-!,lWMd.ǹz%LӦTZ[Uy9Bv] pq,OC6de|3WT)JSwi-ۏqHV8Un/Pr+. gOdv%AݕLJa.a U!̛и븄\{:(Pk &RU2ݞ eW4w8xT&B2in\X"WpW6)uy*a;n7-~ѠCWwK"[%J a;%5?UմlfO=|D[=j}?޳DY)dpk)C;: R)zJ\9{XÛw%֥ef>k4ͻ@^;,>鷛JҤ~ca+nA^o̰i[}5mP'>Z_aZ㙶k7n9?YlW[\Պ/XٴsDGϧ|$>^f/ck[YwQië<"k$nvp_FsԽulqq / B.|28{λ]5/50{*ɪc9y Aw"Y*ZB%dUx|ةΆ7؝^s'b=In *8&:˛ ɕo7^He_K mI.}cƽ^^Ok~Bd.#Cqpl/RC%o-(ދ6wrŬ7-o'WМ#F[(S+$[ϸh2łZ>P|/ ˞ gma&BP`Pu,sl\yv ۧrN3񲲷>`GP3;'YZuBIi8 W?D;uuv^ juQy17R)򌆲5x͂poy;+*5İPMKÊ2oP 5-ξtجV+-j_UArf^xPe炻PQD]ޘLYװ0r#N^I(3EpFC  ㎰'77Szۗ'KfG5iJvO^U[)JS;xo1Rؘyּ`ɩXh/O),G=ar0 zzFs9ĥ1.\0s'0۴OwJ$pX ^iwkN!h딵^SջƋGI8:|9??[o0^gh֫JY},}>Slr )#WHov~l5!uAw|qR#YW`,h bw42RzdBlAB_c`NvⅮQB9CIzVkm<|(cj4xBRToI\;^?w:{J=u"M>4#ֵtv[-͍:nN{B|IZHaaCH7ne&tuQҞa&UP3,&y86YVTT:qcq=WEVw{|q2 ̜q&4>֪*ǡ;L\L~b3O-\?]frUGq rN22xzk1aZQtqޕPxB5KgExݞKJ1N_vjjBx'3:yϚAֽ%/U > T;W25Ơ+hɫ T̷Mx*~?ǡhyhj%I!H֪ Uv꽠Dr-~r[d)2*W d `SRlADB,[|O %0Jٻ q$F:$2_^Uz ~-J1̉c@ it 1h={ttZ.Vu'\yXy^p(3-;,1DahT:OXQ@`;zZn2;_&Ӧv=ҕ曲h 27m֍celV$bj["ܮ] i/nyFT`)8~Hp8Sm+-#[ږ,dcq|EK|Gi~ OTiqD¿>yL#8z׵TJwގ (]i]Yt>1BW}*xn$E:QlqY)VyR͆™]pV  +0B 2]J m⬘USWM3Hx :M% mk+Kp2]5vU+m*181pXn Oh B &"MGqW"ևK<ݞ֫CJ`0J1ʯJgͷg.fɄkfwI5[Y%[{1gzo1)fM Fp% ։/LpIzZ?Wz'~!\6tPorX=7TxwK"3kz@ou\WrF[ q?JɽN_+jsD"HڧODi5޶jɍ$K(/șVjwΆb q`SxmвS,E3V)2=t&uk0Tm2:}_'DYHcْ[L7S2U:IneO%ѷpK:jŌ%Gc [w#d&@nvQ I&N~LPY"mA[&\Hॳ9G4gIoQӗ/nh3݃4FsqqFꭽ8"#2Ř{Efp'jKQy*g4]ptx%0~*HφD_ۂ g%T$6^0l=/d$4b0`9'{L4+]~gLu Z&Azݕp<-JRߵlTWX3c g4}txzdϲ<ɧY.OO|E;^*}8il4S*:#fa(yԈL D/C]&ؼ0À#燷۹3G{(2puEk7Z:j0Ȱ6qU"Bxmbxޣ}$F'yu 汬tfW)h"tEDx-)iB}+^֘r8Л\]"շU9T85p3'BSjԤUwiܜ8=`\/дZT<~DO!_ΤkN>~q |qzK@ƃO7NtQ?jN͋cHn]tD=}U'nz7a i]YEThh*sy|NQW{E޵Omyzz.Hon즎5aF?p*c^3e'I%<ӽqk57g9z" }S HWa̯9,~@ N;[ 7.*Ky!ְùi|A_<ּ|eq)A\nnWkX۔PiaJJqpD9?e}ڨ)SR鑿^ ?b!yT2{ܠx3 rĢnT\aX6 +Jj|h7&fʖފF )^ j+D7D ՖF-PZ 5O~٬~ydX-yB,,GNo$md06VUޒ™)q Yvjw8qUt>g\ywl!U_ۛQ V\#M |ԗ *˜N3πDxsWM6cKi#pH6va^cPS2]rV+ bTέvBҀR6dg&*&P[(XWJ$ӖHa+@ϷMxY(s4lĠd/VJ endstream endobj 287 0 obj << /Length1 2487 /Length2 17668 /Length3 0 /Length 19121 /Filter /FlateDecode >> stream xڌP N4N\Kp܂; @px=sNrz^[֖9 )P `ffcdffEPvW@ tqvtBh v6 '/ /33翆.qks#@@!bmiߏj3 {@ hhfbPs4y5/'+ = tx P4S#@? 5G 7O $6:\́.Pt<@ ci_"v`am(I3yL24suxXۙ N )0UO}f.Nnv b@7Wv:8z:YX;[U;PF`fffc@/3+{;V% xn.@?XXfnSovh :k/3hX4av޿>b& eyIJW)*e`08ظ<eQ6'?P؉eSRHlh,.҅\#Vhw VV[㬞τ<fK? w_Mv%yӂבZHwwؒLT4̒V.Lv}:.S0x~quI F竣WoSrO>-v)e2m6ft?AdF's,W5ޓ n wI^O+DU>Y5> GA-FkD)bEIs06F '㼗.՛,A`?YsgdkWC#<>q]'9 d)Wdq:_mA9 5Sm՞`A=ه)݅~U ƈ -JqąSlJ%>R0eyeF؂Ii-XóZ/%#t)MdFCO N}~|gLu=V~s"P_!s~nRjmFoxzuYMۜ~})s-AR Nx)0:Ȧ“2J#_VBuvCc}֑ͰĊ{5b.QeQj.'Xvf3p%zȞ:݃iYy澌O4YdFҮB"Gв?\UUi_TX1d-C9Vuw)i `ú׽luɂ|?uh/c7ul\Xy|xvUTaayATo}EDDM[8Yv̦:;wOt'Y(Tۙ *?nY> UjBM8 dAlY>e{1͕ l3"Q- S H(+*FIs1X2ю 8 atydlRU9X4]n\Sss`%kԓd/iPЄ>Hq^-gBϮd㷓J(+C$uxj@"븻c_AVTDN(P:,G?h`PzVG0 Ɠe)fؓx^d2 )e: z9:KGM&[l k5ϟ~xbu@}Iƒ!{J$}կ>#4"9nt3gkg)p5ȁ!>XG$~5& P4n2VΉ+D̐;CG5FwPyZbp0CpY}}ZN p͸+y3J(S[Ή4U.y5Uؒ]88~m:yw4'l!%bmo.c].o<UˋR<;Ǝ=L%NQr,xW> i_1zYHJ<3zj=e:㖊ʵXYZ>Ӄ۝US~~EāxG^V . ӀVj06vEԹ2#կkoH0t{(JF)~t_ |DKBtEzvM^iMIgSau.,~,| JȊr I"WZ2 n'sd76hHmfpnmrNr6 -mC=. x}sRcP]ıwZʟEyz_mbr1.+ Nt i@e\UNH1_3c+~Ry_.:FvaX#뼈g` XHxww;pȈwp(:R-Czz>Yi0ĶM c\ЅR(ǭ{Ii|0WȖK12 F<~z :\2ڙ9 ޡ0c!^(ゥs2^?m,My.sc )J{nq> xѯ&Mdq:ֶt}&)2HUs 2~ notwAkDN xFxzt3w-W1k* 0:ОF.W`GPΚh4We !@qo _?$KGbsW8c>70~s{|6]T.Քʽ2Jˈ;aⴃ?29k@!8\Q5z:@S#buMoz#fX-໥9J%h;UW:W},/0d,8B cB٦S*(=fms .uvb/9tf #K`9]wn7GΘ:l5 ܏,R^ SۥΥ ?)lwpg2&Bx3Ly![/"~ݞ_]YkV˭ܧܴtVH*sa}ٴ}Pdh*R Q J gxO !Zઁ]Bb m[}>_4utNnۻp>+K0/u|B7b,j_]4q. rclzV?e/v.CٜtG*~rÁ<"v?}7XUM- ;p*>0@~xDO1A§_\3_HUާx:dc'/Yi5QVA79R_ xC r%"'67OV'%7pT) OI; ٶd*W6*tm)K% _GVN/a8gN$RUyV֚NK0$y8mF)2Iy$n*/>:4ŘabR4sJ۷W) _SLaM0\>$/ ?T{q`5Aup-T!\7 _6$jφ rjԒ"dc?' FPQn?d*C8Qp~K‰[e@4dDGWBX`g/Zu-.3sKa)dYFݮ7 Y/HQULW[Q=4%>Soi3Qn4\GVjk?(trunqWpE%UԵ'4lSuI0wHZ(1:O8RUI)="Ƴl7҈Sꁂ7Z嵕+uPsӇ:/S@;::aɤ)XBm\DYIړ'l9T{ta@?^<=I0ɀT,wˌ}8+0E7t|¤0.wk#@O3]~,hr1y"/w`O;=#|D}$wuiHOd|xâ)7EWW(": [ Aou"p"BN V{'ۚ=F B=ۙ#ԏc)SXP~RyE%'&4*c^ūn Np+np[)Է)co !M?Ӳ޸vIE'7 ofqZ#=BՄu?_+9J@._ kG ?Kuxz[27}ӯ|iERsEQoYZXëvzؑX]0;;FPwqܗ~Tl:\b7Vet UkRՙx&BݝƁ-p(&vS6 K{5#/HOzO$ e,)_e_qRdD`|̔ #k[mvU`oJj9+Ϫg*Cxd Y*r:9naT7|(Mj@py|:>Sƾ7fdFI"L9)+5dţ$<5ސX6 -rV;=g(00%_U.>WY/:_br#3^ώW4zymڛR nk(-s0sɒ-)/QǙPG5c%㲣̲솁XtѶnхM8Amk GI]"'B$,G Bi(dBeenI߬Rq=]0uY~蝮`E6@ pnrd 3@B-u#t]>,M[Y+bR /Xڄ)X@bIޘ/dWT/J#ܲR|M:"0ӳ r_ ,gˣ fuw8S>7`Wics[`-1gˈuDel7(%RK!s'_cϱm.xHLD)? ~HhCz 0cjQ@@I. [6YJ/"6errW{3 ^VyI5dzo? QpjޠXΣ[fY"$_hPq&~rڼ΀D"i*bzϯ~P cC–ak8oa Dp<y<[ZYEqcO]}oSlÑ ̾B-U$ :̓5?+Q2AK-%fHq{6„xzTW @I!DqNイcJ"A/kEjiAzOLMhfsbd4LFu~wPƑ/۬(AC;Ctpzs%Yre*6Y9np8cWY.3,2-* 1(4v8Wv_?)- cF Z]$_"O;$Hԛ%!d=,73lg[=*< ƯrF -X$xVE`[`hh$A/~ѩfC,UΫ(8}Kq;7\o0yޅ6=Jb+a:QDj{8 ]Ԋ3" W"-7~ > U/.Z~7- K"J|I|J̑Ga2QT q~A1 e5NY3Z kyh*?^{ 8s*HӢuaC1ڢkU[MęPܚ6aPkub'Eگȋ٪ /O݅HO|nGCݳU2A|wz®=#AEX72c{ɛWma<pVn_Z*G? 1/- i h-dV[Ⱦ̖A^k_!1ˇ.Bd;D%4>鳘6H{#b) #7lC|df[&GȌ$ "ϧkvVa;/7,FV.IиpzfW( K>e< >fh-%&9Umym?LkRWzf[~JRsz#}Exz[}9ic1owh;De?{FN0d#H>VsE |U(Λ%:}iM ˅l{PK%/ǭ2'n t+M9Tu0xpqK%1 NzBGOcRYߕ ^c\u-%t1F+an&rH>H ngo )5kf'v E33}'8cpr5C*9lJsx7{߅q㹺} ~ʑ 7| E!^} W?"a1)n,,$s0=C2ߎ&5&a.Z&U̗F$d|1H>4j%q;x y6">6=} N?r8)vIpiɔo 6Q0F閘EP5pA5mxr 7 *wQ A <bި t_YIfIV֞&L ƫҺ'̵d1sVfS~d#'FƯX cv}yq'(} mx]+&wdE6D~9ve)< VrN7ucj5 _VpŢ FFR\7.ā o:U-?xO_<d Fh;i񍑚.7S.})nxȀh~:8Pk&4Gh dHٲPI!:v/Mk{6^P6LyI7Y "rĄqDkL(θv8rH͘~:m>LWL/s/ )8,+ {^"h;B2dES7%$}oA2}7F}o| chQVstFQ}«PKBL[/<0I\a8<#d1I,(7?$gf kjN~귆.-Mf*av^^a `l R2#QJo `ަ}㬮y $AIsN}A~pha %QTlHϪ,(he 9r..!{ZE1Vszj#gL`Ϛ+8,Vf/g^V&BKׯb κx]V.pwZ]UJWhS8^,JiBS=J.6_r?U}9_KwUC0o.AWYe}y^.6@|VjZ ͖>CkeKxIIh|y`P Qr wxekfn9eeƩLyj+KU#Bte|N!87O8;K^z]h +\(bX%Ti6'qaDL!OiLmT/b=J[eܻn7dܱc' UȠİJl=wSǎe9ǓMƬM" zY&!~U"BޮݻVyJUWSJRl:͚jN߹q 3Y:QuEMakdc-W,~C6qpJc G`lJ;IЮwL{NҰ8i1I? T5wzFFEQ`E[UAM?ŧ ș RIdB|-},ɓn8Յq,;iQdzԥDw}RMf P[1NX]+YojRz$T@E}&q"3=y0a$@[<6^F>`fCo? \* IN#2Iιۡy]}^xF>FkF$)]K:b(FyIKЃEnަr}{{bhUMSR/D^Ha`%ާro(bMP>Xч+  k0/VvЮKh~jV6Hh\~M;%Q9u%K쒷~Mthu:[Q|'[4m9D ^M[8kfӛηxwŁnYZ*pJz\+ s-0:n;V=?Ix\`pevPu*ZXpZVZC]X^-N^tܢ9ŖX-NxOIƪ"#Sֆ@ Sأcذ69JAYlߠُy1vARzSԐݩwt&n&EiĐmbךX# ||uؙ62g@vµ d ++=uyAsUVPmKa D˨ [zu5   0Kˇ]} g{.X!i8X19Rߎ61bP:_ 9#i-irP8qЄBVm0fS6WcRW?=9!G.VX*dwRf}~HJ "س@HȚ%v18}k!6'pG<J $"+PNQ|OsދIRr x<ۏ9w'|D12~)!/iJҫ};Pa]ǒ3:?J}eoa.U ]9hV]EyyȪI .o_v;r&5Nds?WI$'}üK'K6@7J&%t,l:{󃥠 iU~P_ 2;5rX7͵23Z@JiT0;4wߝM8Sg>'MaZR)iI|"*^02[(Gwt&IV= s!,9yEw-Bx:u] ӱ {J񙺜]@x,0ɫ`RG%5'XA]Z"%rmN+ZS.qwR\6ztѰ"j~lݰb-ۅޤƝի%!\CT+kVre<RE`e Wj^rl|?^( d8GNÇs*C?=uG )h⯀_bXcKn8FbojmG((]X:sT3o>OU{? ;lX{`}|@ىiL>`]ej˧|JUlR b&G{[Յ$SLuyl.W/}^yo\d0{Ⱦ(g[XaJ.j4 edc>`Ң=HXDT«J9^ih 3AFm\|;Z9C-LsP&6yr:kE~l>iy EMl'ûK&Cs$m!S5Zpdۈ^Яu^X7`sRAřP]n+<h&;ozޠ!!4D{s#4_##!gNOq$DhᙳB16ΊfN>| z4`IdU N賬Kz5LN1Ms01_ D0TKm|s" 0j[ ۹?46fj9} p5/"^`έGzCօ/4+^k2+tE0E|e-9wC$W)p܍>#ﯾ۔ÅjSJ3$0y)[ 81xO@B<:!zqlZVaZ]LynlR~?5T\qX*d|f7Ka^{*Ŕ!?ռ֡K2sal ASuqVz+ 7ǏRGMص]a5+kE16!0>tH)T Lt$꽾\H{`ݝJC:= =O4MgĻ qwRyp8 4Avj%iexɜ06.xGmd KȆ}0\B9x:F|Kb鮀7Wʸ9hy>+{E/I_)- !Yg+ŦGn-PBz#eTFE160Hx,풫]Ţ ZkHdOJxT .RQ#Ry Y'̎"9TVx5/ˤL0 T_hwɻ0&~j[q4"@$}$%͒nt3'Pldd5w.Q TB jl!?¶ZȶYy)Wu,_n(\P 3YNQق(q:$]IM*skX@Cj{afU/rkSn~F=?&#r?$ne~%GEgBEQ5OA+G` 4r\{I%jYrx>c*9ڶ*5y:G"ݘWjmpRJaOS TX RCW}i889rFv%dFjrv>en2qE?>0ͫM$xI ϻn$#=[Iw@R^׽m);/tr7g`ܾ}'BB'a^"2Mh7yb~O,9K-GI~ v ,޲d0#m/CgKUYYF'3Oqjz` Sͤ(_A!ԙY6Y⮟Dqn0I`%▅~8\lj+ߔo;Lt맪 ,=x׃O{zF+-ʏ,'E ~dсaGHjċȅ[j-YP5WzeI,Ҵ~<5{l3QH2 SE@Q/qaSBl鼚1}ONH׵E$9Bܻo/U(Okb 4y_`j&VA9n2]A0cUqϽo[k bQz3xg;d* b.#4BuR-uF>mhNFӻ=NRJw+"C[uk˨m$}{-_ACؑ$m}  \s"$FE=ꪠZc%=M2g:)YV#06t){+'E1ZUIH$,?ū9Agԙ4(K9PnXm0;Zm@Ϡ&eH~4[5-ʆT)},9aQIB 8W u1dkLؠvҦ6dU| B8}s 7I(z5 fv$6kǹk[-+8 z֣.Fs !e *T;sfk2ȕiH ZHMȀ6⹔US<эϣeb2/I3JKCKQf8C܊Um,`67&8k`0i$jAtAT=^0 knsj3"]\Wa8me(E>i0 x6οv}̾O¡:st?x2a}rMut$]Y A&LX| (&0㡿[l@&N r㿵Mar0_s9 VZ87eIcQAڰ̊0cq6VGrMl~jzc#HI>毌ԌQhְ(o&C>nv~=e,;ܐNYG鶾t<@H]9T,=ĥe遰 EyM*cOƼ_ǂ[)*&/u9}>B#9B ΝB F]N^˂=FLmcAORKNMWʤZKU2=Q K[bKM2)m@m)ʻ[IW:*wM5eңt]I?QqfRl10ác*ȏ$P"i' jVSEp2\S=.ja}ѫT I]=o/>rnX'M MDRFϣƥ*w}%9^BZbSp P\@~E@Ȯ\>}r! Y!;&Զ_Dt?{(Ï9Lx6'+Y )?*`2AKOhDZثCoS00X us$&w+s zi'zo뽻Y2JĠL[Qk1$|KGnP%'S=v0én_ap @#tK o#(.s %@2z]J4'T}cV6~^m Y1a7Yfi/Ip0u5:&/3_tg:ah}GD#IsX5?`I%xZm&[<$Cjq]Y[f4S·PcbB+(vq>3aZa;V).J<+a 'Ǵ8\n=cmG{H' l0̮LscqUQDSz*cCzdqV#l^pLљQ0}@| }Ҏ@;zHvjŸ<`:Fgb'P'>3%Q+ư}sAW"(K7b`ΩFs8c;.-v8yW:R9G?!WJXKD.Cg.衜dq=U$ʶ;0k1!4u/d3&A\ӘqALFFAo E(/w7LT @/12Oz%((}{1 <~}^JGBl!T"_߃k+jCe*d H¦]1wj-jێEzY맵X/* p.j f ks ~5uɍm~iW endstream endobj 289 0 obj << /Length1 1768 /Length2 9977 /Length3 0 /Length 11099 /Filter /FlateDecode >> stream xڍT-Kp)EKJBN)N K)Rݽť{)Vҙ93suZɷﻟo:[M(dcdeci@a6hjo'/q'Ia~v@9 #+`cP5* :q{w'% @v~~^?')YBl+mPR0Y` ++֙5#3 A!N.3J`[ȟP?yu{s+ |$l; X.Tv3߉vMMmvP; 9TR``;ߎ`gx j~G`*8_9:A`άP#~y~? ?}6$cBmrx,(E%_Wmȟ+1m* ?uAT0S?'{lv{gw l{ejp~&wEI;S{;9l2z?.Avt@s{' $S >6 H 77ǜSف ߐ7r?^?@ſc]|@пS=vbd_CG_ Cs>A:#/ع |lX_m wz,cǻqڛ Y}(JʲExn[;S=*=`R4a iSǛ:8;{V8IXhm/&%ƛG/-kfv9lG8J.ѵk[moȻm՝*yIHi34h0*W'nx?.~Q0"9 <8nf<58;hHL{%=,.XdcdE=33<`c9+|;[ T i#yΞSntEڔX9^: BMnhPJ㷃PLU|A1zf,F_B]g bAwa`{^d@YFף7Iϻoڙ׎ŊiW1\LdHԚu*1? jM]_.H6{ '擔 \ROrIj NQL'oB\ھl{^@om~-ۧ3؃()-EˣiZNoē_[qˉiy_B&$Rkjȴt-_TJ:ۧ.C8۲>I1u~cQ$_ڟo$tVvԩB1V⾥3d 1A)3b[~).z%ca+n.*K85,VM(5#oM{r(n|-Y%~)䴈89pBrHC v,] -"J gs}7izO0Gq[=ʎo%/)\pueEhڝZ\ ý54jewޓ }j!'+pQT1w0vq߶7.@U?9uL۪N;A1H> K!/vh!K1wB*Ryr?EghCk G4wJ= 0hZC'e1\:\7MU3$y$$7x0eYiAoF[Sr0ֵM/&p+ueJR;iVIUYP8vHtlү=}zbdx @n=~g|wpSN؛0LS:E*9qԃoO &a@Z;Ŷ)*vdk;2mFwͅPsZdR'|S3r3U-]ˀY$V P| Ct]dg³Y2Һٰ)r }ŧ Vt_">δ헭8!(_O[n(M0zg5ژP"؅59o~]a&'Ź·“A*,/5g=j#3?l9(-,xj x\ikc^,yx5 G% 9?hCM͓<ܜRsJg ڮ,ݰ{X`& s+"*o89]4 z0a5YBM~Z|K|rZU sUȻQ}ófCK1_<-dpK~7)\@%0 ?hl8OX1|s'&Qu­@Y54B4gWNVw X<>W]J B<1+)oMy ]Ҹhĥh A⏊И]<]7 P-gƁV )]g .[wOPԽ?0zu5лiRԺ!EomLFdTU@6{?SMNy;6MS>pSI!;E^\PH?K u0#B$OSʥwCZLv =1k^G췒?Xq;_ HIRcuQ }m=9,d>=(- #&sU3|9滐>.͎ZF|) â^)dEe=4jWFI~~ZoEJ" y|Kl`i7RxMb{#bKhvidLī &.΅pghv)N5WҊNbhC!|c=~Wl_'VRvo R!ж~2ck(obv*֍]>|KItkfVxvS\Ш:.RL[Jg-3Ha1m%8au3?AVp2/@>`MӮ zȋ]òeU_ V|Z t \1O!P'hpK7N/HSFh!xClVnNDNWDq#zwsBY׿d$d|K<&4JZ&ےeϛV!"ʞnn8Q*+Vs;*{be1>|H-7UJNYc3 )\`Zzµ96Vo5dI=S9xOK&бҬV^ w!Ȭ>4=[oʤ,jwx;_Fb'7-%~^y}U]  o2GNnr4_z gFG=4 BUj}0-O5I~'#OʚPkj=X6J۴oQAܫ"n5?kDYH9i*b+$f/`[e,lwKC:#' ̝}_vcc%$öy]S='Sn뢮VC.m!z7v#Q=]}{&ӆ5h'&*`.x \}wMl%!nn7O6KDȋ޸y Ak+ PB&s\1b &Tq)\TrEɭGXUt+&) S2Vؗk|>Q#,U}` RtAta]Kq<3f7lfTqak^GUw8cxP߼ֆsmO/r'Dmɇg5HBF` wRvOnO\H:|evX?zguU0+cCMeN€qg" 6ś8T;^soYw' Y)+2T$ MWoJ)I6JtUv)R Sr;pto26(hj<$ xjwRXf̐l1/M!Ookڿ0F,ǚ3*g`n G/+g %U"wuda3Ŵ󥝮:Z⪓)/=>@k|m&ĎO<4|A:9[M?-ye(Z{ӝ=7>]Fi$$$izIғk˕[lA_'?F' Bh mc\T/"#ir RCj!`?$C5 ً GW7[Cli{AQe*Db"9PMGHm$B.orV< $'pSs;AGL"&L]TӨɃ,<\)vDxl97z%Wj:H`z\de{WX1,[մMk/#@cfi,b۠qXC(KԼmkZaJ9+$FLP!ݻLzCu-^;T C(/ďhMwFRw2k(q+/k@Ցxy An8 G/ΠهBJmұqT2s>*ӓ2.a` xYBHIq:Oqd[.0rgN^12ۺL0 PQ,͓Ƈk˔~I:\̜9L”y+m--6f V,gNFg8pӶD9ې3UOfqj􎭝ɦhdj `v"=7a/nDs~1%[<3kE,!,.ͭ.8RJ* 0sn,Bl*n-tg%Hհg@T"ƬcC]v5Wu]z43h&h>knED3:)yzk̳KK-RAg;v[E0 gPß&1`)=G4CvqRw"3smAצӵ CTTRX2-"s(ْL18{WHdOU^ n34-ט3]u ұyeh@XYAtUT5E#jŠNZ {yߎ➟qn+p'Ab3yNrayfE87Bo]A4cg4QIFlA߫9.b 7f4~.c׆*'ѭ݆/rxM "ѵpL(DX^ShV5V *Z]meg̢9 7{:ٓ?;z`e%Ro:qLkq/7ByD:`t9 ]9(y #Ň~K!6-ƋgI[1`~|-! E[#ٲzl9-uuFЫ߄Hf/,lX+p%:r+$y'u@IuUE !;Dt^H(fqXn$ )ңBbMw 3^L߆v'GVi4aL`nz51-po&;RRXtkK{_R UA[kU#2>k }/߉,eL|!ܕ J&vyݶHnĤ>8\ᅦJzWqb%ayZ&:}Bە9Ow\h]-$Sbh%+M1/l4мYZ 淮÷ے hMjUǧV@ߕCBgmytCw4ni$XlK `Xv`0kPX/JMIYQG+5J]ٰ+!t6[Rj7:/E'_t%L$KHk\B{x_hѾp#I;2.ۇv*sE1>./N -"|!#  SM1we?÷FIePIG`ee1F&+/rSV=o ZEطFޣʸtB#GJK<ԮCsR-b)/Ě{uSknY-#RZu4mG8H^e/}.&eiq>2oZ0s*DH>Ia+X%i ,}&{YB@~Ɏ@gվ~5pSUe ~U}[en;fPRGia&Q?4*=T!-wfDdp8 >u8W.GP U|sOLY"}Qem lX)YZ1wQE3P&Zo8Y7Syfoc Gg_'ĎUG81 /6= qW:#f8Fno6%^1;?BU[*~ZA5}nHҭIK'/ D]bS3stN-Lг3~"<>oMZ bij沐`Y4Q[y}]n`QҾKx4O[7\H료"V1BKu[U8 m ^IT}oW)҄*yҟI*)  ,J Į( o˿q,cUw#|3.3x*8Ze/fؒylht.HW>li+_NAfQfWbn;u ENYl4m._*DOx6#x&.^a.2rB*F+Jp8:uc_c>|fIqXE6AOKx*n y)ae%2NᲬA۸ ;>kl렯%왳h%13'*Ĝ$@N,ӜJ@Q%n2MzH a;Q n7z%SKi 8/9|<r@dXQ0.d)23 >,bJ#\)A$/ F}0v > Hh#2ӊ2y8dH#Ը"zqUYN*I{p"0=㮌O#\5WP O@n֫{ū|t{?oU|wQSm}LQVb]@UJ0l4L8&>Vmɱ(H38Ftvb2*=+u %NQ2JUGB[<ϰBi-a-om%6SR>暳Yղy>֎|HXAQsB9~]ikNWUe4鰲M!wPϑ )֞K$˲ӪE[pA-6FZ_+/aw~Iŧd+eo4M\!MуZW7VD~؍q7[;Eb~wI甋h @ ^ &4fzȧY\((KGskIM!F".p!U>[/r3rxJVn>7W9") r|F[`wB]=e.1JEE wB sb4PFd7Db EoiHQ1Ln:YOP"4n R!݋\f׸`FFڪ. 3_6vPjTйY;VFڗ_/ $̡_}% :Kh|xFbwp; qX {YH{{QF_"i2ǃ!R%Y cЉƉJfR!zpZtE{3A/G_h-sUN,CHL ~e3eBdbA?(o) x1 AE7 C硻l_s?zh])mM޿ HD9D0/2]V}&`IhKlX{2m;Θj՟% uIٿ?r$Y?[}_6# ^{RgIRۭo5DDp5#yCauOU":f;5Փ)I qvsLi 3g) _O|8_}nȗ~%YF|d"@WRBR-]I q螆j-s:t鹍ZNmT*[(#;K݌1NL?w|v6N n!}m$G uYMW99yo@ɜWy%Q^8`B%bE~kMrJ;&/3$<ݳ iEJ~Op`Ar~lR'~x.J~$}ۼ">m`(3 ;(mAA=*̽1D{?Cz4iY:0 ;Uc1 t潁4%efzTWƩ1mMi7"̀e# IA>|J]-"!EX81A\gY@w6Mf~2g*:KD14|99xm&Qsh n߀+AqBԫDB%;\P̸[9^Dɴ_Oh~96=XFvs=`AELD;- %;d֌_)}mbm e&є4z=^`ѣ;XJzǏ>b-bs*WFW%`'vO}vúݾ~7L6rYПZ_#Z?DN'9~kϷ3MO?6-賩 endstream endobj 291 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 293 0 obj << /Length1 725 /Length2 14043 /Length3 0 /Length 14606 /Filter /FlateDecode >> stream xmctf-N:tl۶mmccv:tl{~Oլq͚Ukk]T=̘*⪪L\lFz822'3#+{7@b`b0322D<,,]&TFVvVNu{[{7+K++??E*ffK3@DAQKJ^@)!09]mLV&f@g3*?hj/N&t3sr@NLUH\A^ & *0d%)8smfh.ce?D@VVfV.jX?33rO?3US{=V},,b@{S+@=LwX?_.(\<:Z=_73#+ da_tM\̀.^{2at( Ssp Ći^ AV$ vM: 䁈ap"Hg)pm6ٙm?BbTĊ%)v[M@(i}LռܗnU\<5`!@QK^b(GhU&qW6'yPzHH+yRVoy\Ԇ:;dDH{ Tݺ6«~'r1UMg7 l~+%HSAla'yPg~ܬ S Dx"N)@Nެ$IUCS]3#5Uu×ўVY|kg(8< Q,Qyݡ߇I#r+gIaLO~m\O-t P*ƊTm*k"'_vs`=3%uFf/}ΰiYGil{ːFS8ҝQkx{\p/۴(.x ǃ2gGܠiӍ)<=xG 65ӻt~ n' ՀNHM3DS2=$y4wN.ҬF/G|ľR}$LYHɲ%N\[(,k?jV@=m݆$~_ ^}}AOkM>(ח\mɵ(w|ʤDyL6o,U"&}^&n2[N1][8@y)K׏\/bih~STC5VWZ_AQ]^2HQ:(Zݐ;08`1 |:wZEjmf?$Լ2?-2yG*SY0G<߷oFEj͉1Kʏ HEtU3_8ܧZ`Ax]NKWr̡1QmgOQwkk֢W˱q㜙iqlppl\?v "|WMF3?1c*sωt$x>?`Iz9`_2踟5'țMM@f,jU*t˲@*,oم`Q~I\ Nl|t2W[f+4ש C0Us]QֱɅNOk|i?_B-CMl^;~'ǥuyAŖ/AdK2G+)rPXWW|$r2WbJ" bKԀʏJT!u]W'F~C?l]}]$Zi5|A׆?3E0BSR!aԤ4gh`Γyxܢ=W nhR鋹jT%3Ovud<P4͈O?נC9gH?Ù}l Y,coA_2T>\&hWj wy5eμ#DĒ&y4 qi5>2(LS e{:0v3n;\XCkàfqbx$xVg[тHJ -bA>0lk V@?fC9ig3XN"AaaUͅW^rM Tzm*͇zu L^jQ[0;Rm`r<ŴtcE%i{\cD0Q}Aځ *]iE>_\@ȊsJ%돳p5*0ȧEڸnG|u[y_{\=nP'>gJZ62]z@|. QX W\"e\ L͌a+j2e{}DZHbRJB;q}ÊA*^HjMZ[oUp&H1ug P .d,AX칧ZpNSWv+ .uQN.$M+,a~ka_Fݯ75Y?AͶc`q5~||q|m}G#LZL0i)L M)K5r _ ?l,θ,S>*,>1-B8=ױr*ğpZȹ(Su(9a` Evϒ.P* XV9zE5|y= _4#;֙tL7ST}1BXR/[:lg: d{JĎn/7KDH\VE+|JOk"42œ [AD{K`" 77bcda? ,EaÓ? nd4L(̝n<0n;YC}nGvtP,b`7ZpH Wc[.=/f^\| jG%s Vg|i|]z9r-clpԿ5@ #ղИrZXN;p&8S;X>:f<u߯ z#f7Od|b99xc*`xߨ 0_.(n QJK:d-g x ,ru@zH 3HLU1ʧ+,+>\fYqF笊Tʴ\BoLƖa)_PX°HݓvF")ZIF0]&\RuFBJNbGd^zUfu:IPTZSz-;%ҕy<bh%? c ҝ~DRjQdFj,3jMNJBY4,-~T`=|gu{Rc :i+妿V>e>!R_#E'G7QqyC %j4ę5kdP$|:qi?D3|Ro6j`Dm=2LmF ?.*V[ꆙZ7ViEzg 3TۨDJㅹ3|Nl5D4I^ݴMY&[԰(wzkAuTk6%asG+RK kMLVEQ_9l&SvƓyڗ{<4r! '5|DUņ3}3)[:3Zw?#~Xxm;~O1BT\?SgǚJ7pEѲv{iݬ@Ѝ42%& .i7?F8 e+gq]YMzfY^{)fdUy$ 1AYBR!) SEl{d~ 埱$"0?Cho,_R9,6Oؒ &. Qv.Ӡ>D'"b⩷CNGBi~Aj։,,S"}QTսNjiy_W߫0C"ڌI)\RC2NR`9~BXUI)^n8[?!eSqdӗv DM<ֿYfBvPý+z?`-ֵPE Z8޼F9`Hjܥ 89fh(ti$_9o=Z+f2jq75W)c V3(V+\9:;'s +[#һI]S 9b[{X1J(..m|C'd|fӃCOqm((=Vɔht|L;3Hp S[.Ai<cFܧ6ì|=6otWƙĶJ8U'I/MM뾧'e NQ#&LC -m7d۵N|nq5BY36x?F\{$Ƨ7i $s%r-AmbId:ԨmZCブ޵p`$\"A?uKXPTӋ]^o~tlO5?d0ZYAR=rq&lVLjD9=AF23X1sy7݈u>`p# BKCHN2~L:t?`爳;K3cUP٘4hKp{ Jy4I}܆Du16{CC n029צ!υǔa2?W3g)Mrm'ǯMtUFlΟo&of#9J( g#kٸZ$_Ebg1`Tl2+-ғSPg;;%!ꐟ4 "$tA#o$jT/QЬTȻTE@^ %I)pM%EPȚ[zׂ]3MmBB?b2ẘ\`3-ʑ /Vcu=ESlHۮiˍ}|*PWne BPaMm 5y*db0'7Kȥ!%Sc!* xy;do©؍D[ģFW!'wk% xZ ȿ&1ͺm9+@ g$2^0adLnR^?fOH$} c(9rJ3 [jν:ro͂&Fy2žц |ެHL͞K/CPg FS?X0b4T|=Nu*!0PlNqQnĄ0,9z;1-e340y@ Vre50pcN'5{_ b*Ie`tu|yBA DSs\-u'E.X82>C;&~!fʼnxeu7Gf9g{EjRx0]&dE3Ha цBW91rS9UW`_d٘(9ҳ1둼 z}SUhHJ h4/6s"KTM}jOp4ٵp ?T.7fT[X//k!>DY:@ PwGM s_c#EOQWZowM@JVJm:?H /|]6_qhT:[+PTA ^x{p&W>뽿ћ詗+6dW s9&۔Uqi mI57(W:+ 8,6n.czGbOJj?OJ Qsb']MH7eS.?l\Ou1&5t(V5 y<7_Q{K?Axm"ZXt\;aM2}S ? K%/a"Y}?PݣB#Jj܏bۍZVh`6_wQr`2YdyU 2c{4iH)xD"bav3 dBlwɬ&r=Xw;sxu+W&;gOӃi X>hLQ{5IOdQwfrB=PeX5$$yYed:Ƽ0)|Pz!doBn"cKupok$gCEz f.\*?xu)u :_[hwqkd?T3P$~ַxWi/)fp/,_̈Õ!ŮT2eэ{bg /i#_sxHѪz)HӔ5&$ jYZ8uy1dN|E<7PEze<; D)߂'4SBVmc?ӆvzF#I}Krg'ZYOlQuJ=o8oצFgU&#``k~+>T; Q):oKkFs,Z FJI۶my[k'(d۞Vɡ Jȴtw~-ٸvI ?C4 ңĄ 'H fἉ|B,csֲ ,\?6y-' 7EBn@~MHbD&.k`d1|󞜩(Ř僀f֭T$&wN:{%[uo/*ZTJ>Au x~B( PH28cGJf_Xxw˸%AXt{ wI6X`2IpڵKԿ2[D]TqoOel9 _Yzs2.ܴ3: :] _i*vSxr8 6~q&kp}(癆Z /fc]o5ڡѫf~'G]g-FK"%W@Yp1w=劖W?-aC; u0j5v#ý>Gu!\S2,,D.n)Ҡ:wdtZ7_< ?#p&6`LF1R2R3Dށ2:+ M klATݣ] 9VRլFlm/%wWWR #Ƽ̋.e=s3'޲;W"E,ܻ)t | Բi[3 ,Pȭmahhؓ6J(Lk&Xux)gi緛io;a+;U=v=; b-0ZF"ݑywޅb raz%Y ':*S G!umhPRQ39e.[RE%,+6.*]Ps<b3I$ 2UE-k@f|E.1ħiB_v 3ȵf&f)Z(ޗ@ZD"~wƸKóy+Wұ6Y^Jegi}Re|kk08ۂ=" ʰbxF I3 b\/],p}WAgޒlЭbSc7[z'!@Pk}itvV[QU 2eА!ZpXڌ5neͤQc{),kO >d Hn:xTE. G?D|ZO凜.1`Oi6^ i] DC)olSbO #/6Rg(ahemm<BFW6f(|jJƘ,܏vLL" 4u&pݞ>mb?݂ѓ^`A`E vg[rPIpI",{S?4S{Rwьp+.uT"' ,lpĨK!UiG#3dhĘDi$rs=')rU㷖#T^9}>vQ I4)thrG)f՟nh"(!l"-yQ Wr7}&)~gjU67]!Ǥ,[KHg+Iu+_iEA|<9t;\t'U\ 閌)Q0/x~n 4j!ŏ*X[YUC㉌gL1n 5VjU~*6`~k%ٖqd ;.9Vf ;x/"u@<c)hiZ"6M<ܔ`O)>[v}lx1U܌9pb2淖͌2RsKb4y N1J)f?9`K!Q&'GMRAWsglAsH]a5頶́Tt IDA@ ȹ ft/|V Qc2cIi~o)d,>=/<0s4!|nY~_\u]hF{Xnq)6=< { }g]U o!8w !V;5g& r( [=RDZ<+2'|$rb [ 'AҗP*U׊F`[\"\OL`fVXbjXQr>-D}hsJc$Ж/Rm'R:D_ܷ"dݓb3D/ͣ$چ g11dG3jAwG؇8yr b ,օĉ&ӳ>+g#|C;"u iy?kXoGCⱏ!r4Pjr-<4g3bˋ?/[H?~^6MT=!Bx.=@T4E種0S Q[5 ˌWtVP[ӽT1eK  ?A@P8;X)xԱuYCznMDw6F?JgʗWrOm8_;4}Gs6UVD}fDlzqN55 /Z)ҹ+c洖pcCV# w9~9+ת&N}/Ƒ;^'Jʨk<.SSZCaMTQջijm w8#bb.V7Fn󡡉{̢/' PT9e Ԑo(]b?}&D]T.;hy렛%Wŧg;ߍg +o%QЦcIh6h-KvXAh{,'4,g`:[]#oYے,ֻ%p2.B?l+L8CM[9R4P"7\֒xs>;VآGʜ4b,IP p$n%:% ҜGo&9'նLErۿB7cV g2|xY4Sݤ>K(!7޹&ؕI 30\$!6=E5ECˢQ-##iwq! U;R'ꡐMbUـHAZVxP(쇩]hbrؽ~Hy^Be^ni4=#ߴàA/6Gs6(paJz5N"Sx }:qNs#@Hm 驘.,tQ.D+s"&7f\ '4}Oe L":w 7 UHAP3^ʘrJKDzo0>1?I?=t|Uj;z;(mkX5ƒBpag؏Q5l/= 鬊`4) SQ^3ζ 1E3&|~EƒO ˜}E? #p)"h컂P#/V!םOYѶCe dL&C]ZWN@at[AuL4~dnw3G%tĈL\iG6/s>9K Qޞ1CRxr z:|egz,K"ȺD )p!݁-,a(&hJ]͙;zW!ѡ?8[!lTLܗݳV:/|\ 5kN4Qjto6=`fG^ S,*jr ?fg iO;ha9yH 9uB)q`A5TԊhF?:Qt0i%b | c[d҅̀@jk ~~7u˚.=Vlarw,W 5wDjFi] Iۣ<-О;@ZY멩Tj oVQ>Q3ԁl.+YNh#06\k ք{V*˫*g×8-6%iTuIm~qg 7Q*|!2wl4mE,vJB0B|%ԑy Nt4u x\?la5ͱ%daBKP f/Jc)֓pƪxwqRTAbaT?UHƤ1V8< )! RϠ2%PNzԵ~A>.\oCŰ,j2$YMY_nkzL<@m3)3.<\ 3.=:ZO 1VxV3ʸ^ vMTR.e] 4pn;gNҦBo=3342x@޺O151Ѷ36Wc3lt SiجuHvZ̍0^;pT6Bq O8 c/Xȫ—UFue_N{&g жMI4|o Zbm@e;9Bڑ3ڃ aOa&v}`Is,t83f 8#}u (SKSXM_sW{wB^z1*GĦq?sz:@t1wUQ 'ٟ W:fZ;de$/ ^Ɲc/Q7?ƬDZ?s,btqF) Swqr~p&og)ŠAdlW79Sf̵;ZO`OYU1m TQi ILEj;Nߗ;.X|BtUB L% endstream endobj 313 0 obj << /Author(Gavin L. Simpson)/Title(Restricted permutations; using the permute package)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.15)/Keywords(permutations, restricted permutations, time series, transects, spatial grids, split-plot designs, Monte Carlo resampling, R) /CreationDate (D:20160908170855-06'00') /ModDate (D:20160908170855-06'00') /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) kpathsea version 6.2.0) >> endobj 282 0 obj << /Type /ObjStm /N 66 /First 560 /Length 2747 /Filter /FlateDecode >> stream xڵZr}Wq\)+TR:E--APBR;_ ElK[ 1)"qǃ\>9CLD9?D=Ƹy8y1ꓞ 0 C9.,#1WR@}mPۃJ'.q XASIq!DX?0#!.Hq$0$`" 0$ p b q{fa18Q_"0 Gp%@ a^O<Hp=&Qp`<̎5O0-@/|YIk`3  X h*Is‘<*h iˎǴ/dIh;I&2h$T@L ~ᛗB$#p'iϴ/9 .?)%0 bAe$9<|lf/*Π0zl<~<@0W;*)P >W;G<£$Jb|1Vx'S<óL8q8 Nbx*$/~/T&c2Uѓ 8J%~? d$WAHυlȮȐ?IdVctXْ-y3~7odTQ#kU>k~}r6}q}YW?| 6 µ\nV.VwTaB\*d:ٳ8!`]2E%4lDQBh^Vϣ( p,z$UdVB-~"?Fe&>,|YdB d24%Z%iGzDlDuMePAě:0 &z+ol5su o H[ ]G&p,I^!6UFVĖqE*"&\ܝ\^/rLeŗi< FI|QY`޻6jQQ?V`6yYLiN0MfuuGN N}2Wm,_x_W}6,"Yԟv|E}~y­.Yt3kebU$/s1+4S +Q9Y4m3^q3V:f]J`=ʃ&*&jDŽv<@EJCuVaozS; ^GUE}ɎHm,5U}:JFF{e,OkpM^󊭺5 vPX>ik g7{M˙I8]G3cy *s(֘=)f ZMk+)mL:̊WԘ^{\GBkm2j5x*mylеЮPC5Nen'%S&.Sn[u,EY%NF ޥ]^'/U5S׭jW6͜v ~k@31`VY&sI @c[,uhQٹVoT&΅A UuU΅u^VO|z+y)7ؽiS[aQ29^?>YX&m8^? V0V endstream endobj 314 0 obj << /Type /XRef /Index [0 315] /Size 315 /W [1 3 1] /Root 312 0 R /Info 313 0 R /ID [ ] /Length 771 /Filter /FlateDecode >> stream xoNQjEji'-Ң( $$":Dbnb`(FoM~Y{s9>|ff.!w$`'.T 2Ї׌*K ^j)(xeLD-`oj(sx R\G<o;eXWWGFY RVj:5`^3`6 4EjQc4YZֳ^K2(5ӳy~]Y[qr=ne4V<ӭ~^SX9prSt嶵V0/9z+5(wkr cn'Ha2cn5pLsu gi|m2$`,CwQ]=g ^@ AX#qIS*f=ˠA'Ē۵u\"AއJ/j"d2rn_#;ZϟGa J#RIM)5IqiOoIx2~Ij֓{>= options("prompt" = "R> ", "continue" = "+ ") options(useFancyQuotes="UTF-8") @ \section{Introduction} In classical frequentist statistics, the significance of a relationship or model is determined by reference to a null distribution for the test statistic. This distribution is derived mathematically and the probability of achieving a test statistic as large or larger if the null hypothesis were true is looked-up from this null distribution. In deriving this probability, some assumptions about the data or the errors are made. If these assumptions are violated, then the validity of the derived $p$-value may be questioned. An alternative to deriving the null distribution from theory is to generate a null distribution of the test statistic by randomly shuffling the data in some manner, refitting the model and deriving values for the test statistic for the permuted data. The level of significance of the test can be computed as the proportion of values of the test statistic from the null distribution that are equal to or larger than the observed value. In many data sets, simply shuffling the data at random is inappropriate; under the null hypothesis, that data are not freely exchangeable, for example if there is temporal or spatial correlation, or the samples are clustered in some way, such as multiple samples collected from each of a number of fields. The \pkg{permute} package was designed to provide facilities for generating these restricted permutations for use in randomisation tests. \pkg{permute} takes as its motivation the permutation schemes originally available in \proglang{Canoco} version 3.1 \citep{canoco31}, which employed the cyclic- or toroidal-shifts suggested by \citet{besagclifford}. \section{Simple randomisation}\label{sec:simple} As an illustration of both randomisation and simple usage of the \pkg{permute} package we consider a small data set of mandible length measurements on specimens of the golden jackal (\emph{Canis aureus}) from the British Museum of Natural History, London, UK. These data were collected as part of a study comparing prehistoric and modern canids \citep{higham80}, and were analysed by \citet{manly07}. There are ten measurements of mandible length on both male and female specimens. The data are available in the \code{jackal} data frame supplied with \pkg{permute}. <>= library("permute") data(jackal) jackal @ The interest is whether there is a difference in the mean mandible length between male and female golden jackals. The null hypothesis is that there is zero difference in mandible length between the two sexes or that females have larger mandibles. The alternative hypothesis is that males have larger mandibles. The usual statistical test of this hypothesis is a one-sided $t$ test, which can be applied using \code{t.test()} <>= jack.t <- t.test(Length ~ Sex, data = jackal, var.equal = TRUE, alternative = "greater") jack.t @ The observed $t$ is \Sexpr{with(jack.t, round(statistic, 3))} with \Sexpr{with(jack.t, parameter)} df. The probability of observing a value this large or larger if the null hypothesis were true is \Sexpr{with(jack.t, round(p.value, 4))}. Several assumptions have been made in deriving this $p$-value, namely \begin{enumerate} \item random sampling of individuals from the populations of interest, \item equal population standard deviations for males and females, and \item that the mandible lengths are normally distributed within the sexes. \end{enumerate} Assumption 1 is unlikely to be valid for museum specimens such as these, that have been collected in some unknown manner. Assumption 2 may be valid, Fisher's $F$-test and a Fligner-Killeen test both suggest that the standard deviations of the two populations do not differ significantly <>= var.test(Length ~ Sex, data = jackal) fligner.test(Length ~ Sex, data = jackal) @ This assumption may be relaxed using \code{var.equal = FALSE} (the default) in the call to \code{t.test()}, to employ Welch's modification for unequal variances. Assumption 3 may be valid, but with such a small sample we are unable to reliably test this. A randomisation test of the same hypothesis can be performed by randomly allocating ten of the mandible lengths to the male group and the remaining lengths to the female group. This randomisation is justified under the null hypothesis because the observed difference in mean mandible length between the two sexes is just a typical value for the difference in a sample if there were no difference in the population. An appropriate test statistic needs to be selected. We could use the $t$ statistic as derived in the $t$-test. Alternatively, we could base our randomisation test on the difference of means $D_i$ (male - female). The main function in \pkg{permute} for providing random permutations is \code{shuffle()}. We can write our own randomisation test for the \code{jackal} data by first creating a function to compute the difference of means for two groups <>= meanDif <- function(x, grp) { mean(x[grp == "Male"]) - mean(x[grp == "Female"]) } @ which can be used in a simple \code{for()} loop to generate the null distribution for the difference of means. First, we allocate some storage to hold the null difference of means; here we use 4999 random permutations so allocate a vector of length 5000. Then we iterate, randomly generating an ordering of the \code{Sex} vector and computing the difference of means for that permutation. <>= Djackal <- numeric(length = 5000) N <- nrow(jackal) set.seed(42) for(i in seq_len(length(Djackal) - 1)) { perm <- shuffle(N) Djackal[i] <- with(jackal, meanDif(Length, Sex[perm])) } Djackal[5000] <- with(jackal, meanDif(Length, Sex)) @ The observed difference of means was added to the null distribution, because under the null hypothesis the observed allocation of mandible lengths to male and female jackals is just one of the possible random allocations. The null distribution of $D_i$ can be visualised using a histogram, as shown in Figure~\ref{hist_jackal}. The observed difference of means (\Sexpr{round(Djackal[5000], 2)}) is indicated by the red tick mark. <>= hist(Djackal, main = "", xlab = expression("Mean difference (Male - Female) in mm")) rug(Djackal[5000], col = "red", lwd = 2) @ The number of values in the randomisation distribution equal to or larger than the observed difference is <<>>= (Dbig <- sum(Djackal >= Djackal[5000])) @ giving a permutational $p$-value of <<>>= Dbig / length(Djackal) @ which is comparable with that determined from the frequentist $t$-test, and indicates strong evidence against the null hypothesis of no difference. \begin{figure}[t] \centering <>= <> @ \caption{\label{hist_jackal}Distribution of the difference of mean mandible length in random allocations, ten to each sex.} \end{figure} In total there $^{20}C_{10} = \Sexpr{formatC(choose(20,10), big.mark = ",", format = "f", digits = 0)}$ possible allocations of the 20 observations to two groups of ten <<>>= choose(20, 10) @ so we have only evaluated a small proportion of these in the randomisation test. The main workhorse function we used above was \code{shuffle()}. In this example, we could have used the base R function \code{sample()} to generate the randomised indices \code{perm} that were used to permute the \code{Sex} factor. Where \code{shuffle()} comes into it's own is for generating permutation indices from restricted permutation designs. \section{The shuffle() and shuffleSet() functions} In the previous section I introduced the \code{shuffle()} function to generate permutation indices for use in a randomisation test. Now we will take a closer look at \code{shuffle()} and explore the various restricted permutation designs from which it can generate permutation indices. \code{shuffle()} has two arguments: i) \code{n}, the number of observations in the data set to be permuted, and ii) \code{control}, a list that defines the permutation design describing how the samples should be permuted. <>= args(shuffle) @ A series of convenience functions are provided that allow the user to set-up even quite complex permutation designs with little effort. The user only needs to specify the aspects of the design they require and the convenience functions ensure all configuration choices are set and passed on to \code{shuffle()}. The main convenience function is \code{how()}, which returns a list specifying all the options available for controlling the sorts of permutations returned by \code{shuffle()}. <>= str(how()) @ The defaults describe a random permutation design where all objects are freely exchangeable. Using these defaults, \code{shuffle(10)} amounts to \code{sample(1:10, 10, replace = FALSE)}: <>= set.seed(2) (r1 <- shuffle(10)) set.seed(2) (r2 <- sample(1:10, 10, replace = FALSE)) all.equal(r1, r2) @ \subsection{Generating restricted permutations} Several types of permutation are available in \pkg{permute}: \begin{itemize} \item Free permutation of objects \item Time series or line transect designs, where the temporal or spatial ordering is preserved. \item Spatial grid designs, where the spatial ordering is preserved in both coordinate directions \item Permutation of plots or groups of samples. \item Blocking factors which restrict permutations to within blocks. The preceding designs can be nested within blocks. \end{itemize} The first three of these can be nested within the levels of a factor or to the levels of that factor, or to both. Such flexibility allows the analysis of split-plot designs using permutation tests, especially when combined with blocks. \code{how()} is used to set up the design from which \code{shuffle()} will draw a permutation. \code{how()} has two main arguments that specify how samples are permuted \emph{within} plots of samples or at the plot level itself. These are \code{within} and \code{plots}. Two convenience functions, \code{Within()} and \code{Plots()} can be used to set the various options for permutation. Blocks operate at the uppermost level of this hierarchy; blocks define groups of plots, each of which may contain groups of samples. For example, to permute the observations \code{1:10} assuming a time series design for the entire set of observations, the following control object would be used <>= set.seed(4) x <- 1:10 CTRL <- how(within = Within(type = "series")) perm <- shuffle(10, control = CTRL) perm x[perm] ## equivalent @ It is assumed that the observations are in temporal or transect order. We only specified the type of permutation within plots, the remaining options were set to their defaults via \code{Within()}. A more complex design, with three plots, and a 3 by 3 spatial grid arrangement within each plot can be created as follows <>= set.seed(4) plt <- gl(3, 9) CTRL <- how(within = Within(type = "grid", ncol = 3, nrow = 3), plots = Plots(strata = plt)) perm <- shuffle(length(plt), control = CTRL) perm @ Visualising the permutation as the 3 matrices may help illustrate how the data have been shuffled <>= ## Original lapply(split(seq_along(plt), plt), matrix, ncol = 3) ## Shuffled lapply(split(perm, plt), matrix, ncol = 3) @ In the first grid, the lower-left corner of the grid was set to row 2 and column 2 of the original, to row 1 and column 2 in the second grid, and to row 3 column 2 in the third grid. To have the same permutation within each level of \code{plt}, use the \code{constant} argument of the \code{Within()} function, setting it to \code{TRUE} <>= set.seed(4) CTRL <- how(within = Within(type = "grid", ncol = 3, nrow = 3, constant = TRUE), plots = Plots(strata = plt)) perm2 <- shuffle(length(plt), control = CTRL) lapply(split(perm2, plt), matrix, ncol = 3) @ \subsection{Generating sets of permutations with shuffleSet()} There are several reasons why one might wish to generate a set of $n$ permutations instead of repeatedly generating permutations one at a time. Interpreting the permutation design happens each time \code{shuffle()} is called. This is an unnecessary computational burden, especially if you want to perform tests with large numbers of permutations. Furthermore, having the set of permutations available allows for expedited use with other functions, they can be iterated over using \code{for} loops or the \code{apply} family of functions, and the set of permutations can be exported for use outside of R. The \code{shuffleSet()} function allows the generation of sets of permutations from any of the designs available in \pkg{permute}. \code{shuffleSet()} takes an additional argument to that of \code{shuffle()}, \code{nset}, which is the number of permutations required for the set. \code{nset} can be missing, in which case the number of permutations in the set is looked for in the object passed to \code{control}; using this, the desired number of permutations can be set at the time the design is created via the \code{nperm} argument of \code{how()}. For example, <>= how(nperm = 10, within = Within(type = "series")) @ Internally, \code{shuffle()} and \code{shuffleSet()} are very similar, with the major difference being that \code{shuffleSet()} arranges repeated calls to the workhorse permutation-generating functions, only incurring the overhead associated with interpreting the permutation design once. \code{shuffleSet()} returns a matrix where the rows represent different permutations in the set. As an illustration, consider again the simple time series example from earlier. Here I generate a set of 5 permutations from the design, with the results returned as a matrix <>= set.seed(4) CTRL <- how(within = Within(type = "series")) pset <- shuffleSet(10, nset = 5, control = CTRL) pset @ It is worth taking a moment to explain what has happened here, behind the scenes. There are only \Sexpr{numPerms(10, CTRL)} unique orderings (including the observed) in the set of permutations for this design. Such a small set of permutations triggers\footnote{The trigger is via the utility function \code{check()}, which calls another utility function, \code{allPerms()}, to generate the set of permutations for the stated design. The trigger for complete enumeration is set via \code{how()} using argument \code{minperm}; below this value, by default \code{check()} will generate the entire set of permutations.} the generation of the entire set of permutations. From this set, \code{shuffleSet()} samples at random \code{nset} permutations. Hence the same number of random values has been generated via the pseudo-random number generator in \proglang{R} but we ensure a set of unique permutations is drawn, rather than randomly sample from a small set. \section{Defining permutation designs} In this section I give examples how various permutation designs can be specified using \code{how()}. It is not the intention to provide exhaustive coverage of all possible designs that can be produced; such a list would be tedious to both write \emph{and} read. Instead, the main features and options will be described through a series of examples. The reader should then be able to put together the various options to create the exact structure required. \subsection{Set the number of permutations} It may be useful to specify the number of permutations required in a permutation test alongside the permutation design. This is done via the \code{nperm} argument, as seen earlier. If nothing else is specified <>= how(nperm = 999) @ would indicate 999 random permutations where the samples are all freely exchangeable. One advantage of using \code{nperm} is that \code{shuffleSet()} will use this if the \code{nset} argument is not specified. Additionally, \code{shuffleSet()} will check to see if the desired number of permutations is possible given the data and the requested design. This is done via the function \code{check()}, which is discussed later. \subsection{The levels of the permutation hierarchy} There are three levels at which permutations can be controlled in \pkg{permute}. The highest level of the hierarchy is the \emph{block} level. Blocks are defined by a factor variable. Blocks restrict permutation of samples to within the levels of this factor; samples are never swapped between blocks. The \emph{plot} level sits below blocks. Plots are defined by a factor and group samples in the same way as blocks. As such, some permutation designs can be initiated using a factor at the plot level or the same factor at the block level. The major difference between blocks and plots is that plots can also be permuted, whereas blocks are never permuted. The lowest level of a permutation design in the \pkg{permute} hierarchy is known as \emph{within}, and refers to samples nested \emph{within} plots. If there are no plots or blocks, how samples are permuted at the \emph{within} level applies to the entire data set. \subsubsection{Permuting samples at the lowest level} How samples at the \emph{within} level are permuted is configured using the \code{Within()} function. It takes the following arguments <>= args(Within) @ \begin{description} \item[\code{type}] controls how the samples at the lowest level are permuted. The default is to form unrestricted permutations via option \code{"type"}. Options \code{"series"} and \code{"grid"} form restricted permutations via cyclic or toroidal shifts, respectively. The former is useful for samples that are a time series or line-transect, whilst the latter is used for samples on a regular spatial grid. The final option, \code{"none"}, will result in the samples at the lowest level not being permuted at all. This option is only of practical use when there are plots within the permutation/experimental design\footnote{As blocks are never permuted, using \code{type = "none"} at the \emph{within} level is also of no practical use.}. \item[\code{constant}] this argument only has an effect when there are plots in the design\footnote{Owing to the current implementation, whilst this option could also be useful when blocks to define groups of samples, it will not have any influence over how permutations are generated. As such, only use blocks for simple blocking structures and use plots if you require greater control of the permutations at the group (i.e. plot) level.}. \code{constant = TRUE} stipulates that each plot should have the same \emph{within-plot} permutation. This is useful for example when you have time series of observations from several plots. If all plots were sampled at the same time points, it can be argued that at the plot level, the samples experienced the same \emph{time} and hence the same permutation should be used within each plot. \item[\code{mirror}] when \code{type} is \code{"series"} or \code{"grid"}, argument \code{"mirror"} controls whether permutations are taken from the mirror image of the observed ordering in space or time. Consider the sequence \code{1, 2, 3, 4}. The relationship between observations is also preserved if we reverse the original ordering to \code{4, 3, 2, 1} and generate permutations from both these orderings. This is what happens when \code{mirror = TRUE}. For time series, the reversed ordering \code{4, 3, 2, 1} would imply an influence of observation 4 on observation 3, which is implausible. For spatial grids or line transects, however, this is a sensible option, and can significantly increase the number of possible permutations\footnote{Setting \code{mirror = TRUE} will double or quadruple the set of permutations for \code{"series"} or \code{"grid"} permutations, respectively, as long as there are more than two time points or columns in the grid.}. \item[\code{ncol}, \code{nrow}] define the dimensions of the spatial grid. \end{description} How \code{Within()} is used has already been encountered in earlier sections of this vignette; the function is used to supply a value to the \code{within} argument of \code{how()}. You may have noticed that all the arguments of \code{Within()} have default values? This means that the user need only supply a modified value for the arguments they wish to change. Also, arguments that are not relevant for the type of permutation stated are simply ignored; \code{nrow} and \code{ncol}, for example, could be set to any value without affecting the permutation design if \code{type != "grid"}\footnote{No warnings are currently given if incompatible arguments are specified; they are ignored, but may show up in the printed output. This infelicity will be removed prior to \pkg{permute} version 1.0-0 being released.}. \subsubsection{Permuting samples at the Plot level} Permutation of samples at the \emph{plot} level is configured via the \code{Plots()} function. As with \code{Within()}, \code{Plots()} is supplied to the \code{plots} argument of \code{how()}. \code{Plots()} takes many of the same arguments as \code{Within()}, the two differences being \code{strata}, a factor variable that describes the grouping of samples at the \emph{plot} level, and the absence of a \code{constant} argument. As the majority of arguments are similar between \code{Within()} and \code{Plots()}, I will not repeat the details again, and only describe the \code{strata} argument \begin{description} \item[\code{strata}] a factor variable. \code{strata} describes the grouping of samples at the \emph{plot} level, where samples from the same \emph{plot} are take the same \emph{level} of the factor. \end{description} When a \emph{plot}-level design is specified, samples are never permuted between \emph{plots}, only within plots if they are permuted at all. Hence, the type of permutation \emph{within} the \emph{plots} is controlled by \code{Within()}. Note also that with \code{Plots()}, the way the individual \emph{plots} are permuted can be from any one of the four basic permutation types; \code{"none"}, \code{"free"}, \code{"series"}, and \code{"grid"}, as described above. To permute the \emph{plots} only (i.e. retain the ordering of the samples \emph{within} plots), you also need to specify \code{Within(type = "none", ...)} as the default in \code{Within()} is \code{type = "free"}. The ability to permute the plots whilst preserving the within-plot ordering is an impotant feature in testing explanatory factors at the whole-plot level in split-plot designs and in multifactorial analysis of variance \citep{canoco5manual}. \subsubsection[Specifying blocks; the top of the permute hierarchy]{Specifying blocks; the top of the \pkg{permute} hierarchy} In constrast to the \emph{within} and \emph{plots} levels, the \emph{blocks} level is simple to specify; all that is required is an indicator variable the same length as the data. Usually this is a factor, but \code{how()} will take anything that can be coerced to a factor via \code{as.factor()}. It is worth repeating what the role of the block-level structure is; blocks simply restrict permutation to \emph{within}, and never between, blocks, and blocks are never permuted. This is reflected in the implementation; the \emph{split}-\emph{apply}-\code{combine} paradigm is used to split on the blocking factor, the plot- and within-level permutation design is applied separately to each block, and finally the sets of permutations for each block are recombined. \subsection{Examples} To do. \section[Using permute in R functions]{Using \pkg{permute} in \proglang{R} functions} \pkg{permute} originally started life as a set of functions contained within the \pkg{vegan} package \citep{vegan} designed to provide a replacement for the \code{permuted.index()} function. From these humble origins, I realised other users and package authors might want to make use of the code I was writing and so Jari oksanen, the maintainer of \pkg{vegan}, and I decided to spin off the code into the \pkg{permute} package. Hence from the very beginning, \pkg{permute} was intended for use both by users, to defining permutation designs, and by package authors, with which to implement permutation tests within their packages. In the previous sections, I described the various user-facing functions that are employed to set up permutation designs and generate permutations from these. Here I will outline how package authors can use functionality in the \pkg{permute} package to implement permutation tests. In Section~\ref{sec:simple} I showed how a permutation test function could be written using the \code{shuffle()} function and allowing the user to pass into the test function an object created with \code{how()}. As mentioned earlier, it is more efficient to generate a set of permutations via a call to \code{shuffleSet()} than to repeatedly call \code{shuffle()} and large number of times. Another advantage of using \code{shuffleSet()} is that once the set of permutations has been created, parallel processing can be used to break the set of permutations down into smaller chunks, each of which can be worked on simultaneously. As a result, package authors are encouraged to use \code{shuffleSet()} instead of the simpler \code{shuffle()}. To illustrate how to use \pkg{permute} in \proglang{R} functions, I'll rework the permutation test I used for the \code{jackal} data earlier in Section~\ref{sec:simple}. <>= options("prompt" = " ", "continue" = " ") @ <>= pt.test <- function(x, group, nperm = 199) { ## mean difference function meanDif <- function(i, x, grp) { grp <- grp[i] mean(x[grp == "Male"]) - mean(x[grp == "Female"]) } ## check x and group are of same length stopifnot(all.equal(length(x), length(group))) ## number of observations N <- nobs(x) ## generate the required set of permutations pset <- shuffleSet(N, nset = nperm) ## iterate over the set of permutations applying meanDif D <- apply(pset, 1, meanDif, x = x, grp = group) ## add on the observed mean difference D <- c(meanDif(seq_len(N), x, group), D) ## compute & return the p-value Ds <- sum(D >= D[1]) # how many >= to the observed diff? Ds / (nperm + 1) # what proportion of perms is this (the pval)? } @ <>= options("prompt" = "R> ", "continue" = "+ ") @ The commented function should be reasonably self explanatory. I've altered the in-line version of the \code{meanDif()} function to take a vector of permutation indices \code{i} as the first argument, and internally the \code{grp} vector is permuted according to \code{i}. The other major change is that \code{shuffleSet()} is used to generate a set of permutations, which are then iterated over using \code{apply()}. In use we see <>= set.seed(42) ## same seed as earlier pval <- with(jackal, pt.test(Length, Sex, nperm = 4999)) pval @ which nicely agrees with the test we did earlier by hand. Iterating over a set of permutation indices also means that adding parallel processing of the permutations requires only trivial changes to the main function code. As an illustration, below I show a parallel version of \code{pt.test()} <>= options("prompt" = " ", "continue" = " ") @ <>= ppt.test <- function(x, group, nperm = 199, cores = 2) { ## mean difference function meanDif <- function(i, .x, .grp) { .grp <- .grp[i] mean(.x[.grp == "Male"]) - mean(.x[.grp == "Female"]) } ## check x and group are of same length stopifnot(all.equal(length(x), length(group))) ## number of observations N <- nobs(x) ## generate the required set of permutations pset <- shuffleSet(N, nset = nperm) if (cores > 1) { ## initiate a cluster cl <- makeCluster(cores) on.exit(stopCluster(cl = cl)) ## iterate over the set of permutations applying meanDif D <- parRapply(cl, pset, meanDif, .x = x, .grp = group) } else { D <- apply(pset, 1, meanDif, .x = x, .grp = group) } ## add on the observed mean difference D <- c(meanDif(seq_len(N), x, group), D) ## compute & return the p-value Ds <- sum(D >= D[1]) # how many >= to the observed diff? Ds / (nperm + 1) # what proportion of perms is this (the pval)? } @ <>= options("prompt" = "R> ", "continue" = "+ ") @ In use we observe <>= require("parallel") set.seed(42) system.time(ppval <- ppt.test(jackal$Length, jackal$Sex, nperm = 9999, cores = 2)) ppval @ In this case there is little to be gained by splitting the computations over two CPU cores <>= set.seed(42) system.time(ppval2 <- ppt.test(jackal$Length, jackal$Sex, nperm = 9999, cores = 1)) ppval2 @ The cost of setting up and managing the parallel processes, and recombining the separate sets of results almost negates the gain in running the permutations in parallel. Here, the computations involved in \code{meanDif()} are trivial and we would expect greater efficiencies from running the permutations in parallel for more complex analyses. \subsection{Accesing and changing permutation designs} Th object created by \code{how()} is a relatively simple list containing the settings for the specified permutation design. As such one could use the standard subsetting and replacement functions in base \proglang{R} to alter components of the list. This is not recommended, however, as the internal structure of the list returned by \code{how()} may change in a later version of \pkg{permute}. Furthermore, to facilitate the use of \code{update()} at the user-level to alter the permutation design in a user-friendly way, the matched \code{how()} call is stored within the list along with the matched calls for any \code{Within()} or \code{Plots()} components. These matched calls need to be updated too if the list describing the permutation design is altered. To allow function writers to access and alter permutation designs, \pkg{permute} provides a series of extractor and replacement functions that have the forms \code{getFoo()} and \code{setFoo<-()}, respectively,where \code{Foo} is replaced by a particular component to be extracted or replaced. The \code{getFoo()} functions provided by \pkg{permute} are \begin{description} \item[\code{getWithin()}, \code{getPlots()}, \code{getBlocks()}] these extract the details of the \emph{within}-, \emph{plots}-, and \emph{blocks}-level components of the design. Given the current design (as of \pkg{permute} version 0.8-0), the first two of these return lists with classes \code{"Within"} and \code{"Plots"}, respectively, whilst \code{getBlocks()} returns the block-level factor. \item[\code{getStrata()}] returns the factor describing the grouping of samples at the \emph{plots} or \emph{blocks} levels, as determined by the value of argument \code{which}. \item[\code{getType()}] returns the type of permutation of samples at the \emph{within} or \emph{plots} levels, as determined by the value of argument \code{which}. \item[\code{getMirror()}] returns a logical, indicating whether permutations are drawn from the mirror image of the observed ordering at the \emph{within} or \emph{plots} levels, as determined by the value of argument \code{which}. \item[\code{getConstant()}] returns a logical, indicating whether the same permutation of samples, or a different permutation, is used within each of the plots. \item[\code{getRow()}, \code{getCol()}, \code{getDim()}] return dimensions of the spatial grid of samples at the \emph{plots} or \emph{blocks} levels, as determined by the value of argument \code{which}. \item[\code{getNperm()}, \code{getMaxperm()}, \code{getMinperm()}] return numerics for the stored number of permutations requested plus two triggers used when checking permutation designs via \code{check()}. \item[\code{getComplete()}] returns a logical, indicating whether complete enumeration of the set of permutations was requested. \item[\code{getMake()}] returns a logical, indicating whether the entire set of permutations should be produced or not. \item[\code{getObserved()}] returns a logical, which indicates whether the observed permutation (ordering of samples) is included in the entire set of permutation generated by \code{allPerms()}. \item[\code{getAllperms()}] extracts the complete set of permutations if present. Returns \code{NULL} if the set has not been generated. \end{description} The available \code{setFoo()<-} functions are \begin{description} \item[\code{setPlots<-()}, \code{setWithin<-()};] replaces the details of the \emph{within}-, and \emph{plots}-, components of the design. The replacement object must be of class \code{"Plots"} or \code{"Within"}, respectively, and hence is most usefully used in combination with the \code{Plots()} or \code{Within()} constructor functions. \item[\code{setBlocks<-()};] replaces the factor that partitions the observations into blocks. \code{value} can be any \proglang{R} object that can be coerced to a factor vector via \code{as.factor()}. \item[\code{setStrata<-()};] replaces either the \code{blocks} or \code{strata} components of the design, depending on what class of object \code{setStrata<-()} is applied to. When used on an object of class \code{"how"}, \code{setStrata<-()} replaces the \code{blocks} component of that object. When used on an object of class \code{"Plots"}, \code{setStrata<-()} replaces the \code{strata} component of that object. In both cases a factor variable is required and the replacement object will be coerced to a factor via \code{as.factor()} if possible. \item[\code{setType<-()};] replaces the \code{type} component of an object of class \code{"Plots"} or \code{"Within"} with a character vector of length one. Must be one of the available types: \code{"none"}, \code{"free"}, \code{"series"}, or \code{"grid"}. \item[\code{setMirror<-()};] replaces the \code{mirror} component of an object of class \code{"Plots"} or \code{"Within"} with a logical vector of length one. \item[\code{setConstant<-()};] replaces the \code{constant} component of an object of class \code{"Within"} with a logical vector of length one. \item[\code{setRow<-()}, \code{setCol<-()}, \code{setDim<-()};] replace one or both of the spatial grid dimensions of an object of class \code{"Plots"} or \code{"Within"} with am integer vector of length one, or, in the case of \code{setDim<-()}, of length 2. \item[\code{setNperm<-()}, \code{setMinperm<-()}, \code{setMaxperm<-()};] update the stored values for the requested number of permutations and the minimum and maximum permutation thresholds that control whether the entire set of permutations is generated instead of \code{nperm} permutations. \item[\code{setAllperms<-()};] assigns a matrix of permutation indices to the \code{all.perms} component of the design list object. \item[\code{setComplete<-()};] updates the status of the \code{complete} setting. Takes a logical vector of length 1 or any object coercible to such. \item[\code{setMake<-()};] sets the indicator controlling whether the entrie set of permutations is generated during checking of the design via \code{check()}. Takes a logical vector of length 1 or any object coercible to such. \item[\code{setObserved<-()};] updates the indicator of whether the observed ordering is included in the set of all permutations should they be generated. Takes a logical vector of length 1 or any object coercible to such. \end{description} \subsubsection{Examples} I illustrate the behaviour of the \code{getFoo()} and \code{setFoo<-()} functions through a couple of simple examples. Firstly, generate a design object <>= hh <- how() @ This design is one of complete randomization, so all of the settings in the object take their default values. The default number of permutations is currently \Sexpr{getNperm(hh)}, and can be extracted using \code{getNperm()} <>= getNperm(hh) @ The corresponding replacement function can be use to alter the number of permutations after the design has been generated. To illustrate a finer point of the behaviour of these replacement functions, compare the matched call stored in \code{hh} before and after the number of permutations is changed <<>= getCall(hh) setNperm(hh) <- 999 getNperm(hh) getCall(hh) @ Note how the \code{call} component has been altered to include the argument pair \code{nperm = 999}, hence if this call were evaluated, the resulting object would be a copy of \code{hh}. As a more complex example, consider the following design consisting of 5 blocks, each containing 2 plots of 5 samples each. Hence there are a total of 10 plots. Both the plots and within-plot sample are time series. This design can be created using <>= hh <- how(within = Within(type = "series"), plots = Plots(type = "series", strata = gl(10, 5)), blocks = gl(5, 10)) @ To alter the design at the plot or within-plot levels, it is convenient to extract the relevant component using \code{getPlots()} or \code{getWithin()}, update the extracted object, and finally use the updated object to update \code{hh}. This process is illustrated below in order to change the plot-level permutation type to \code{"free"} <>= pl <- getPlots(hh) setType(pl) <- "free" setPlots(hh) <- pl @ We can confirm this has been changed by extracting the permutation type for the plot level <>= getType(hh, which = "plots") @ Notice too how the call has been expanded from \code{gl(10, 5)} to an integer vector. This expansion is to avoid the obvious problem of locating the objects referred to in the call should the call be re-evaluated later. <>= getCall(getPlots(hh)) @ At the top level, a user can update the design using \code{update()}. Hence the equivalent of the above update is (this time resetting the original type; \code{type = "series"}) <>= hh <- update(hh, plots = update(getPlots(hh), type = "series")) getType(hh, which = "plots") @ However, this approach is not assured of working within a function because we do not guarantee that components of the call used to create \code{hh} can be found from the execution frame where \code{update()} is called. To be safe, always use the \code{setFoo<-()} replacement functions to update design objects from within your functions. \section*{Computational details} This vignette was built within the following environment: <>= toLatex(sessionInfo(), locale = FALSE) @ \bibliography{permute} \end{document} permute/tests/0000755000175100001440000000000012626461052013117 5ustar hornikuserspermute/tests/Examples/0000755000175100001440000000000012764344136014703 5ustar hornikuserspermute/tests/Examples/permute-Ex.Rout.save0000644000175100001440000012027212764366746020565 0ustar hornikusers R version 3.3.0 Patched (2016-05-12 r70603) -- "Supposedly Educational" Copyright (C) 2016 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale 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. > pkgname <- "permute" > source(file.path(R.home("share"), "R", "examples-header.R")) > options(warn = 1) > library('permute') > > base::assign(".oldSearch", base::search(), pos = 'CheckExEnv') > cleanEx() > nameEx("allPerms") > ### * allPerms > > flush(stderr()); flush(stdout()) > > ### Name: allPerms > ### Title: Complete enumeration of all possible permutations > ### Aliases: allPerms print.allPerms summary.allPerms > ### print.summary.allPerms as.matrix.allPerms as.allPerms > > ### ** Examples > > ## allPerms can work with a vector > vec <- c(3,4,5) > allPerms(vec) ## free permutation [,1] [,2] [,3] [1,] 1 3 2 [2,] 2 1 3 [3,] 2 3 1 [4,] 3 1 2 [5,] 3 2 1 > > ## enumerate all possible permutations for a more complicated > ## design > fac <- gl(2,6) > ctrl <- how(within = Within(type = "grid", mirror = FALSE, + constant = TRUE, nrow = 3, ncol = 2), + plots = Plots(strata = fac)) > Nobs <- length(fac) > numPerms(seq_len(Nobs), control = ctrl) ## 6 [1] 6 > (tmp <- allPerms(Nobs, control = update(ctrl, observed = TRUE))) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 2 3 4 5 6 7 8 9 10 11 12 > (tmp2 <- allPerms(Nobs, control = ctrl)) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 > > ## turn on mirroring > ##ctrl$within$mirror <- TRUE > ctrl <- update(ctrl, within = update(getWithin(ctrl), mirror = TRUE)) > numPerms(seq_len(Nobs), control = ctrl) [1] 12 > (tmp3 <- allPerms(Nobs, control = update(ctrl, observed = TRUE))) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 2 3 4 5 6 7 8 9 10 11 12 [7,] 1 6 5 4 3 2 7 12 11 10 9 8 [8,] 2 1 6 5 4 3 8 7 12 11 10 9 [9,] 3 2 1 6 5 4 9 8 7 12 11 10 [10,] 4 3 2 1 6 5 10 9 8 7 12 11 [11,] 5 4 3 2 1 6 11 10 9 8 7 12 [12,] 6 5 4 3 2 1 12 11 10 9 8 7 > (tmp4 <- allPerms(Nobs, control = ctrl)) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 6 5 4 3 2 7 12 11 10 9 8 [7,] 2 1 6 5 4 3 8 7 12 11 10 9 [8,] 3 2 1 6 5 4 9 8 7 12 11 10 [9,] 4 3 2 1 6 5 10 9 8 7 12 11 [10,] 5 4 3 2 1 6 11 10 9 8 7 12 [11,] 6 5 4 3 2 1 12 11 10 9 8 7 > > ## prints out details of the permutation scheme as > ## well as the matrix of permutations > summary(tmp3) Complete enumeration of permutations Permutation Design: Blocks: Defined by: none Plots: Plots: fac Permutation type: none Mirrored?: No Within Plots: Permutation type: grid Mirrored?: Yes Different permutation within each Plot?: No Grid dimensions: 3 rows 2 cols Permutation details: Number of permutations: 199 Max. number of permutations allowed: 9999 Evaluate all permutations?: No. Activation limit: 5040 All permutations: Contains observed ordering?: Yes [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 2 3 4 5 6 7 8 9 10 11 12 [7,] 1 6 5 4 3 2 7 12 11 10 9 8 [8,] 2 1 6 5 4 3 8 7 12 11 10 9 [9,] 3 2 1 6 5 4 9 8 7 12 11 10 [10,] 4 3 2 1 6 5 10 9 8 7 12 11 [11,] 5 4 3 2 1 6 11 10 9 8 7 12 [12,] 6 5 4 3 2 1 12 11 10 9 8 7 > summary(tmp4) Complete enumeration of permutations Permutation Design: Blocks: Defined by: none Plots: Plots: fac Permutation type: none Mirrored?: No Within Plots: Permutation type: grid Mirrored?: Yes Different permutation within each Plot?: No Grid dimensions: 3 rows 2 cols Permutation details: Number of permutations: 198 Max. number of permutations allowed: 9999 Evaluate all permutations?: No. Activation limit: 5040 All permutations: Contains observed ordering?: No [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 6 5 4 3 2 7 12 11 10 9 8 [7,] 2 1 6 5 4 3 8 7 12 11 10 9 [8,] 3 2 1 6 5 4 9 8 7 12 11 10 [9,] 4 3 2 1 6 5 10 9 8 7 12 11 [10,] 5 4 3 2 1 6 11 10 9 8 7 12 [11,] 6 5 4 3 2 1 12 11 10 9 8 7 > > > > cleanEx() > nameEx("check") > ### * check > > flush(stderr()); flush(stdout()) > > ### Name: check > ### Title: Utility functions for permutation schemes > ### Aliases: check print.check print.summary.check summary.check > ### Keywords: utilities design methods > > ### ** Examples > > ## only run this example if vegan is available > if (suppressPackageStartupMessages(require("vegan"))) { + ## use example data from ?pyrifos in package vegan + example(pyrifos) + + ## Demonstrate the maximum number of permutations for the pyrifos data + ## under a series of permutation schemes + + ## no restrictions - lots of perms + CONTROL <- how(within = Within(type = "free")) + (check1 <- check(pyrifos, CONTROL)) + ## summary(check1) + + ## no strata but data are series with no mirroring, so 132 permutations + CONTROL <- how(within = Within(type = "series", mirror = FALSE)) + check(pyrifos, CONTROL) + + ## no strata but data are series with mirroring, so 264 permutations + CONTROL <- how(within = Within(type = "series", mirror = TRUE)) + check(pyrifos, control = CONTROL) + + ## unrestricted within strata + check(pyrifos, control = how(plots = Plots(strata = ditch), + within = Within(type = "free"))) + + ## time series within strata, no mirroring + check(pyrifos, + control = how(plots = Plots(strata = ditch), + within = Within(type = "series", mirror = FALSE))) + + ## time series within strata, with mirroring + check(pyrifos, + control = how(plots = Plots(strata = ditch), + within = Within(type = "series", mirror = TRUE))) + + ## time series within strata, no mirroring, same permutation + ## within strata + check(pyrifos, + control = how(plots = Plots(strata = ditch), + within = Within(type = "series", constant = TRUE))) + + ## time series within strata, with mirroring, same permutation + ## within strata + check(pyrifos, + control = how(plots = Plots(strata = ditch), + within = Within(type = "series", mirror = TRUE, + constant = TRUE))) + ## permute strata + check(pyrifos, how(plots = Plots(strata = ditch, type = "free"), + within = Within(type = "none"))) + } pyrifs> data(pyrifos) pyrifs> ditch <- gl(12, 1, length=132) pyrifs> week <- gl(11, 12, labels=c(-4, -1, 0.1, 1, 2, 4, 8, 12, 15, 19, 24)) pyrifs> dose <- factor(rep(c(0.1, 0, 0, 0.9, 0, 44, 6, 0.1, 44, 0.9, 0, 6), 11)) 'nperm' >= set of all permutations: complete enumeration. Set of permutations < 'minperm'. Generating entire set. Set of permutations < 'minperm'. Generating entire set. 'nperm' >= set of all permutations: complete enumeration. Set of permutations < 'minperm'. Generating entire set. 'nperm' >= set of all permutations: complete enumeration. Set of permutations < 'minperm'. Generating entire set. [1] 479001600 > > ## this should also also for arbitrary vectors > vec1 <- check(1:100) > vec2 <- check(1:100, how()) > all.equal(vec1, vec2) [1] TRUE > vec3 <- check(1:100, how(within = Within(type = "series"))) 'nperm' >= set of all permutations: complete enumeration. Set of permutations < 'minperm'. Generating entire set. > all.equal(100, vec3$n) [1] TRUE > vec4 <- check(1:100, how(within = Within(type= "series", mirror = TRUE))) 'nperm' >= set of all permutations: complete enumeration. Set of permutations < 'minperm'. Generating entire set. > all.equal(vec4$n, 200) [1] TRUE > > ## enumerate all possible permutations > fac <- gl(2,6) > ctrl <- how(plots = Plots(strata = fac), + within = Within(type = "grid", mirror = FALSE, + constant = TRUE, nrow = 3, ncol = 2)) > check(1:12, ctrl) 'nperm' >= set of all permutations: complete enumeration. Set of permutations < 'minperm'. Generating entire set. [1] 6 > > numPerms(1:12, control = ctrl) [1] 6 > (tmp <- allPerms(12, control = update(ctrl, observed = TRUE))) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 2 3 4 5 6 7 8 9 10 11 12 > (tmp2 <- allPerms(12, control = ctrl)) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 > > ## turn on mirroring > ctrl <- update(ctrl, within = update(getWithin(ctrl), mirror = TRUE)) > numPerms(1:12, control = ctrl) [1] 12 > (tmp3 <- allPerms(12, control = update(ctrl, observed = TRUE))) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 2 3 4 5 6 7 8 9 10 11 12 [7,] 1 6 5 4 3 2 7 12 11 10 9 8 [8,] 2 1 6 5 4 3 8 7 12 11 10 9 [9,] 3 2 1 6 5 4 9 8 7 12 11 10 [10,] 4 3 2 1 6 5 10 9 8 7 12 11 [11,] 5 4 3 2 1 6 11 10 9 8 7 12 [12,] 6 5 4 3 2 1 12 11 10 9 8 7 > (tmp4 <- allPerms(12, control = ctrl)) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 6 5 4 3 2 7 12 11 10 9 8 [7,] 2 1 6 5 4 3 8 7 12 11 10 9 [8,] 3 2 1 6 5 4 9 8 7 12 11 10 [9,] 4 3 2 1 6 5 10 9 8 7 12 11 [10,] 5 4 3 2 1 6 11 10 9 8 7 12 [11,] 6 5 4 3 2 1 12 11 10 9 8 7 > ## prints out details of the permutation scheme as > ## well as the matrix of permutations > summary(tmp) Complete enumeration of permutations Permutation Design: Blocks: Defined by: none Plots: Plots: fac Permutation type: none Mirrored?: No Within Plots: Permutation type: grid Mirrored?: No Different permutation within each Plot?: No Grid dimensions: 3 rows 2 cols Permutation details: Number of permutations: 199 Max. number of permutations allowed: 9999 Evaluate all permutations?: No. Activation limit: 5040 All permutations: Contains observed ordering?: Yes [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 [6,] 1 2 3 4 5 6 7 8 9 10 11 12 > summary(tmp2) Complete enumeration of permutations Permutation Design: Blocks: Defined by: none Plots: Plots: fac Permutation type: none Mirrored?: No Within Plots: Permutation type: grid Mirrored?: No Different permutation within each Plot?: No Grid dimensions: 3 rows 2 cols Permutation details: Number of permutations: 198 Max. number of permutations allowed: 9999 Evaluate all permutations?: No. Activation limit: 5040 All permutations: Contains observed ordering?: No [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [1,] 2 3 4 5 6 1 8 9 10 11 12 7 [2,] 3 4 5 6 1 2 9 10 11 12 7 8 [3,] 4 5 6 1 2 3 10 11 12 7 8 9 [4,] 5 6 1 2 3 4 11 12 7 8 9 10 [5,] 6 1 2 3 4 5 12 7 8 9 10 11 > > ## different numbers of observations per level of strata > fac <- factor(rep(1:3, times = c(3,2,2))) > ## free permutations in levels of strata > numPerms(7, how(within = Within(type = "free"), + plots = Plots(strata = fac, type = "none"))) [1] 24 > allPerms(7, how(within = Within(type = "free"), + plots = Plots(strata = fac))) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [1,] 1 2 3 4 5 7 6 [2,] 1 2 3 5 4 6 7 [3,] 1 2 3 5 4 7 6 [4,] 1 3 2 4 5 6 7 [5,] 1 3 2 4 5 7 6 [6,] 1 3 2 5 4 6 7 [7,] 1 3 2 5 4 7 6 [8,] 2 1 3 4 5 6 7 [9,] 2 1 3 4 5 7 6 [10,] 2 1 3 5 4 6 7 [11,] 2 1 3 5 4 7 6 [12,] 2 3 1 4 5 6 7 [13,] 2 3 1 4 5 7 6 [14,] 2 3 1 5 4 6 7 [15,] 2 3 1 5 4 7 6 [16,] 3 1 2 4 5 6 7 [17,] 3 1 2 4 5 7 6 [18,] 3 1 2 5 4 6 7 [19,] 3 1 2 5 4 7 6 [20,] 3 2 1 4 5 6 7 [21,] 3 2 1 4 5 7 6 [22,] 3 2 1 5 4 6 7 [23,] 3 2 1 5 4 7 6 > ## series permutations in levels of strata > ctrl <- how(within = Within(type = "series"), plots = Plots(strata = fac)) > numPerms(7, control = ctrl) [1] 12 > allPerms(7, control = ctrl) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [1,] 2 3 1 5 4 7 6 [2,] 2 3 1 5 4 6 7 [3,] 2 3 1 4 5 7 6 [4,] 2 3 1 4 5 6 7 [5,] 3 1 2 5 4 7 6 [6,] 3 1 2 5 4 6 7 [7,] 3 1 2 4 5 7 6 [8,] 3 1 2 4 5 6 7 [9,] 1 2 3 5 4 7 6 [10,] 1 2 3 5 4 6 7 [11,] 1 2 3 4 5 7 6 > > > > cleanEx() detaching ‘package:vegan’, ‘package:lattice’ > nameEx("get-methods") > ### * get-methods > > flush(stderr()); flush(stdout()) > > ### Name: get-methods > ### Title: Extractor functions to access components of a permutation design > ### Aliases: get-methods getBlocks getBlocks.default getBlocks.how > ### getBlocks.permControl getWithin getWithin.default getWithin.how > ### getWithin.permControl getStrata getStrata.default getStrata.how > ### getStrata.permControl getStrata.Plots getType getType.default > ### getType.how getType.permControl getType.Plots getType.Within > ### getMirror getMirror.default getMirror.how getMirror.permControl > ### getMirror.Plots getMirror.Within getConstant getConstant.default > ### getConstant.how getConstant.permControl getConstant.Within getPlots > ### getPlots.default getPlots.how getPlots.permControl getRow > ### getRow.default getRow.how getRow.permControl getRow.Plots > ### getRow.Within getCol getCol.default getCol.how getCol.permControl > ### getCol.Plots getCol.Within getDim getDim.default getDim.how > ### getDim.permControl getDim.Plots getDim.Within getNperm > ### getNperm.default getNperm.how getNperm.permControl getMaxperm > ### getMaxperm.default getMaxperm.how getMaxperm.permControl getMinperm > ### getMinperm.default getMinperm.how getMinperm.permControl getComplete > ### getComplete.default getComplete.how getComplete.permControl getMake > ### getMake.default getMake.how getObserved getObserved.default > ### getObserved.how getAllperms getAllperms.default getAllperms.how > ### getControl getHow getControl.default getControl.allPerms > ### Keywords: methods utils > > ### ** Examples > > ## extract components from a "how" object > hh <- how() > getWithin(hh) $type [1] "free" $constant [1] FALSE $mirror [1] FALSE $ncol NULL $nrow NULL $call Within() attr(,"class") [1] "Within" > getNperm(hh) [1] 199 > > > > cleanEx() > nameEx("how") > ### * how > > flush(stderr()); flush(stdout()) > > ### Name: how > ### Title: How to define a permutation design? > ### Aliases: how print.how Blocks Within Plots > ### Keywords: utils > > ### ** Examples > > ## Set up factors for the Plots and Blocks > plts <- gl(4, 10) ## 4 Plots of 10 samples each > blks <- gl(2, 20) ## 2 Blocks of 20 samples each > > ## permutation design > h1 <- how(within = Within(type = "series", mirror = TRUE), + plots = Plots(strata = plts, type = "series"), + blocks = blks) > > ## The design can be updated... > ## ... remove the blocking: > update(h1, blocks = NULL) Permutation Design: Blocks: Defined by: none Plots: Plots: plts Permutation type: series Mirrored?: No Within Plots: Permutation type: series Mirrored?: Yes Different permutation within each Plot?: Yes Permutation details: Number of permutations: 199 Max. number of permutations allowed: 9999 Evaluate all permutations?: No. Activation limit: 5040 > > ## ... or switch the type of shuffling at a level: > #update(h1, plots = update(getPlots(h1), type = "none")) > plots2 <- update(getPlots(h1), type = "none") > update(h1, plots = plots2) Permutation Design: Blocks: Blocks: blks Plots: Plots: plts Permutation type: none Mirrored?: No Within Plots: Permutation type: series Mirrored?: Yes Different permutation within each Plot?: Yes Permutation details: Number of permutations: 199 Max. number of permutations allowed: 9999 Evaluate all permutations?: No. Activation limit: 5040 > > > > cleanEx() > nameEx("jackal") > ### * jackal > > flush(stderr()); flush(stdout()) > > ### Name: jackal > ### Title: Mandible lengths of male and female golden jackals > ### Aliases: jackal > ### Keywords: datasets > > ### ** Examples > > data(jackal) > str(jackal) 'data.frame': 20 obs. of 2 variables: $ Length: num 120 107 110 116 114 111 113 117 114 112 ... $ Sex : Factor w/ 2 levels "Male","Female": 1 1 1 1 1 1 1 1 1 1 ... > > ## boxplot of mandible length vs sex > plot(Length ~ Sex, data = jackal) > > > > cleanEx() > nameEx("nobs") > ### * nobs > > flush(stderr()); flush(stdout()) > > ### Name: nobs-methods > ### Title: Number of observations in a given object > ### Aliases: nobs-methods nobs.numeric nobs.integer nobs.matrix > ### nobs.data.frame nobs.factor nobs.character > > ### ** Examples > > ## numeric vector > len <- sample(1:10, 1) > v <- as.numeric(sample(1:100, len)) > len [1] 3 > obs <- nobs(v) > isTRUE(all.equal(len, obs)) [1] TRUE > > ## integer > len <- sample(1L:10L, 1) > obs <- nobs(len) > isTRUE(all.equal(len, obs)) [1] FALSE > > > > > cleanEx() > nameEx("numPerms") > ### * numPerms > > flush(stderr()); flush(stdout()) > > ### Name: numPerms > ### Title: Number of possible permutations for a given object > ### Aliases: numPerms > > ### ** Examples > > ## permutation design --- see ?how > ctrl <- how() ## defaults to freely exchangeable > > ## vector input > v <- 1:10 > (obs <- nobs(v)) [1] 10 > numPerms(v, control = ctrl) [1] 3628800 > > ## integer input > len <- length(v) > (obs <- nobs(len)) [1] 1 > numPerms(len, control = ctrl) [1] 3628800 > > ## new design, objects are a time series > ctrl <- how(within = Within(type = "series")) > numPerms(v, control = ctrl) [1] 10 > ## number of permutations possible drastically reduced... > ## ...turn on mirroring > ctrl <- how(within = Within(type = "series", mirror = TRUE)) > numPerms(v, control = ctrl) [1] 20 > > ## Try blocking --- 2 groups of 5 > bl <- numPerms(v, control = how(blocks = gl(2,5))) > bl [1] 14400 > > ## should be same as > pl <- numPerms(v, control = how(plots = Plots(strata = gl(2,5)))) > pl [1] 14400 > stopifnot(all.equal(bl, pl)) > > > > cleanEx() > nameEx("set-methods") > ### * set-methods > > flush(stderr()); flush(stdout()) > > ### Name: set-methods > ### Title: Replacement functions to set components of a permutation design > ### Aliases: set-methods setBlocks<- setBlocks<-.default setBlocks<-.how > ### setBlocks<-.permControl setWithin<- setWithin<-.default > ### setWithin<-.how setStrata<- setStrata<-.default setStrata<-.how > ### setStrata<-.Plots setType<- setType<-.default setType<-.how > ### setType<-.Plots setType<-.Within setMirror<- setMirror<-.default > ### setMirror<-.how setMirror<-.Plots setMirror<-.Within setConstant<- > ### setConstant<-.default setConstant<-.how setConstant<-.Plots > ### setConstant<-.Within setPlots<- setPlots<-.default setPlots<-.how > ### setRow<- setRow<-.default setRow<-.how setRow<-.Plots setRow<-.Within > ### setCol<- setCol<-.default setCol<-.how setCol<-.Plots setCol<-.Within > ### setDim<- setDim<-.default setDim<-.how setDim<-.Plots setDim<-.Within > ### setNperm<- setNperm<-.default setNperm<-.how setNperm<-.permControl > ### setAllperms<- setAllperms<-.default setAllperms<-.how > ### setAllperms<-.permControl setMaxperm<- setMaxperm<-.default > ### setMaxperm<-.how setMaxperm<-.permControl setMinperm<- > ### setMinperm<-.default setMinperm<-.how setMinperm<-.permControl > ### setComplete<- setComplete<-.default setComplete<-.how > ### setComplete<-.permControl setMake<- setMake<-.default setMake<-.how > ### setObserved<- setObserved<-.default setObserved<-.how > ### Keywords: methods utils > > ### ** Examples > > ## extract components from a "how" object > hh <- how() > getNperm(hh) [1] 199 > setNperm(hh) <- 999 > getNperm(hh) [1] 999 > > > > cleanEx() > nameEx("shuffle-utils") > ### * shuffle-utils > > flush(stderr()); flush(stdout()) > > ### Name: shuffle-utils > ### Title: Utility functions for unrestricted and restricted permutations > ### Aliases: shuffle-utils shuffleFree shuffleGrid shuffleSeries > ### shuffleStrata > ### Keywords: htest design > > ### ** Examples > > set.seed(3) > > ## draw 1 value at random from the set 1:10 > shuffleFree(1:10, 1) [1] 1 > > ## permute the series 1:10 > x <- 1:10 > shuffleSeries(x) ## with random starting point [1] 10 1 2 3 4 5 6 7 8 9 > shuffleSeries(x, start = 5L) ## known starting point [1] 6 7 8 9 10 1 2 3 4 5 > shuffleSeries(x, flip = TRUE) ## random start, forced mirror [1] 5 6 7 8 9 10 1 2 3 4 > shuffleSeries(x, mirror = TRUE) ## random start, possibly mirror [1] 5 6 7 8 9 10 1 2 3 4 > > ## permute a grid of size 3x3 > shuffleGrid(3, 3) ## random starting row/col [1] 6 4 5 9 7 8 3 1 2 > shuffleGrid(3, 3, start.row = 2, + start.col = 3) ## with known row/col [1] 3 1 2 6 4 5 9 7 8 > shuffleGrid(3, 3, flip = rep(TRUE, 2)) ## random start, forced mirror [1] 8 9 7 2 3 1 5 6 4 > > > > cleanEx() > nameEx("shuffle") > ### * shuffle > > flush(stderr()); flush(stdout()) > > ### Name: shuffle > ### Title: Unrestricted and restricted permutations > ### Aliases: shuffle permute > ### Keywords: htest design > > ### ** Examples > > set.seed(1234) > > ## unrestricted permutations > shuffle(20) [1] 3 12 11 18 14 10 1 4 8 6 7 5 20 15 2 9 17 16 19 13 > > ## observations represent a time series of line transect > CTRL <- how(within = Within(type = "series")) > shuffle(20, control = CTRL) [1] 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 > > ## observations represent a time series of line transect > ## but with mirroring allowed > CTRL <- how(within = Within(type = "series", mirror = TRUE)) > shuffle(20, control = CTRL) [1] 7 6 5 4 3 2 1 20 19 18 17 16 15 14 13 12 11 10 9 8 > > ## observations represent a spatial grid, 5rx4c > nr <- 5 > nc <- 4 > CTRL <- how(within = Within(type = "grid", ncol = nc, nrow = nr)) > perms <- shuffle(20, control = CTRL) > ## view the permutation as a grid > matrix(matrix(1:20, nrow = nr, ncol = nc)[perms], + ncol = nc, nrow = nr) [,1] [,2] [,3] [,4] [1,] 7 12 17 2 [2,] 8 13 18 3 [3,] 9 14 19 4 [4,] 10 15 20 5 [5,] 6 11 16 1 > > ## random permutations in presence of strata > plots <- Plots(strata = gl(4, 5)) > CTRL <- how(plots = plots, within = Within(type = "free")) > shuffle(20, CTRL) [1] 5 3 4 2 1 8 7 6 9 10 14 11 15 12 13 18 20 16 17 19 > ## as above but same random permutation within strata > CTRL <- how(plots = plots, within = Within(type = "free", + constant = TRUE)) > shuffle(20, CTRL) [1] 3 5 2 1 4 8 10 7 6 9 13 15 12 11 14 18 20 17 16 19 > > ## time series within each level of block > CTRL <- how(plots = plots, within = Within(type = "series")) > shuffle(20, CTRL) [1] 2 3 4 5 1 8 9 10 6 7 15 11 12 13 14 19 20 16 17 18 > ## as above, but with same permutation for each level > CTRL <- how(plots = plots, within = Within(type = "series", + constant = TRUE)) > shuffle(20, CTRL) [1] 2 3 4 5 1 7 8 9 10 6 12 13 14 15 11 17 18 19 20 16 > > ## spatial grids within each level of block, 4 x (5r x 5c) > nr <- 5 > nc <- 5 > nb <- 4 ## number of blocks > plots <- Plots(gl(nb, 25)) > CTRL <- how(plots = plots, + within = Within(type = "grid", ncol = nc, nrow = nr)) > shuffle(100, CTRL) [1] 24 25 21 22 23 4 5 1 2 3 9 10 6 7 8 14 15 11 [19] 12 13 19 20 16 17 18 27 28 29 30 26 32 33 34 35 31 37 [37] 38 39 40 36 42 43 44 45 41 47 48 49 50 46 56 57 58 59 [55] 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 51 52 [73] 53 54 55 83 84 85 81 82 88 89 90 86 87 93 94 95 91 92 [91] 98 99 100 96 97 78 79 80 76 77 > ## as above, but with same permutation for each level > CTRL <- how(plots = plots, + within = Within(type = "grid", ncol = nc, nrow = nr, + constant = TRUE)) > shuffle(100, CTRL) [1] 23 24 25 21 22 3 4 5 1 2 8 9 10 6 7 13 14 15 [19] 11 12 18 19 20 16 17 48 49 50 46 47 28 29 30 26 27 33 [37] 34 35 31 32 38 39 40 36 37 43 44 45 41 42 73 74 75 71 [55] 72 53 54 55 51 52 58 59 60 56 57 63 64 65 61 62 68 69 [73] 70 66 67 98 99 100 96 97 78 79 80 76 77 83 84 85 81 82 [91] 88 89 90 86 87 93 94 95 91 92 > > ## permuting levels of plots instead of observations > CTRL <- how(plots = Plots(gl(4, 5), type = "free"), + within = Within(type = "none")) > shuffle(20, CTRL) [1] 11 12 13 14 15 1 2 3 4 5 6 7 8 9 10 16 17 18 19 20 > ## permuting levels of plots instead of observations > ## but plots represent a time series > CTRL <- how(plots = Plots(gl(4, 5), type = "series"), + within = Within(type = "none")) > shuffle(20, CTRL) [1] 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 > > ## permuting levels of plots but plots represent a time series > ## free permutation within plots > CTRL <- how(plots = Plots(gl(4, 5), type = "series"), + within = Within(type = "free")) > shuffle(20, CTRL) [1] 12 11 13 14 15 16 20 19 17 18 1 2 3 4 5 6 8 10 7 9 > > ## permuting within blocks > grp <- gl(2, 10) # 2 groups of 10 samples each > CTRL <- how(blocks = grp) > shuffle(length(grp), control = CTRL) [1] 1 3 6 10 4 2 7 8 9 5 12 14 11 15 18 17 16 19 20 13 > > ## Simple function using permute() to assess significance > ## of a t.test > pt.test <- function(x, group, control) { + ## function to calculate t + t.statistic <- function(x, y) { + m <- length(x) + n <- length(y) + ## means and variances, but for speed + xbar <- mean(x) + ybar <- mean(y) + xvar <- var(x) + yvar <- var(y) + pooled <- sqrt(((m-1)*xvar + (n-1)*yvar) / (m+n-2)) + (xbar - ybar) / (pooled * sqrt(1/m + 1/n)) + } + ## check the control object + #control <- check(x, control)$control ## FIXME + ## number of observations + Nobs <- nobs(x) + ## group names + lev <- names(table(group)) + ## vector to hold results, +1 because of observed t + t.permu <- numeric(length = control$nperm) + 1 + ## calculate observed t + t.permu[1] <- t.statistic(x[group == lev[1]], x[group == lev[2]]) + ## generate randomisation distribution of t + for(i in seq_along(t.permu)) { + ## return a permutation + want <- permute(i, Nobs, control) + ## calculate permuted t + t.permu[i+1] <- t.statistic(x[want][group == lev[1]], + x[want][group == lev[2]]) + } + ## pval from permutation test + pval <- sum(abs(t.permu) >= abs(t.permu[1])) / (control$nperm + 1) + ## return value + return(list(t.stat = t.permu[1], pval = pval)) + } > > ## generate some data with slightly different means > set.seed(1234) > gr1 <- rnorm(20, mean = 9) > gr2 <- rnorm(20, mean = 10) > dat <- c(gr1, gr2) > ## grouping variable > grp <- gl(2, 20, labels = paste("Group", 1:2)) > ## create the permutation design > control <- how(nperm = 999, within = Within(type = "free")) > ## perform permutation t test > perm.val <- pt.test(dat, grp, control) > perm.val $t.stat [1] -2.342064 $pval [1] 0.024 > > ## compare perm.val with the p-value from t.test() > t.test(dat ~ grp, var.equal = TRUE) Two Sample t-test data: dat by grp t = -2.3421, df = 38, p-value = 0.02452 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -1.25582408 -0.09136416 sample estimates: mean in group Group 1 mean in group Group 2 8.749336 9.422930 > > > > cleanEx() > nameEx("shuffleSet") > ### * shuffleSet > > flush(stderr()); flush(stdout()) > > ### Name: shuffleSet > ### Title: Generate a set of permutations from the specified design. > ### Aliases: shuffleSet as.matrix.permutationMatrix > ### Keywords: htest design > > ### ** Examples > > ## simple random permutations, 5 permutations in set > shuffleSet(n = 10, nset = 5) No. of Permutations: 5 No. of Samples: 10 (Randomised) 1 2 3 4 5 6 7 8 9 10 p1 3 4 5 7 2 8 9 6 10 1 p2 3 2 6 10 5 7 8 4 1 9 p3 10 2 6 1 9 8 7 5 3 4 p4 5 6 4 2 10 8 9 1 7 3 p5 9 6 7 4 8 10 1 2 3 5 > > ## series random permutations, 5 permutations in set > shuffleSet(10, 5, how(within = Within(type = "series"))) Set of permutations < 'minperm'. Generating entire set. No. of Permutations: 5 No. of Samples: 10 (Sequence) 1 2 3 4 5 6 7 8 9 10 p1 6 7 8 9 10 1 2 3 4 5 p2 8 9 10 1 2 3 4 5 6 7 p3 5 6 7 8 9 10 1 2 3 4 p4 3 4 5 6 7 8 9 10 1 2 p5 2 3 4 5 6 7 8 9 10 1 > > ## series random permutations, 10 permutations in set, > ## with possible mirroring > CTRL <- how(within = Within(type = "series", mirror = TRUE)) > shuffleSet(10, 10, CTRL) Set of permutations < 'minperm'. Generating entire set. No. of Permutations: 10 No. of Samples: 10 (Sequence; mirrored) 1 2 3 4 5 6 7 8 9 10 p1 3 4 5 6 7 8 9 10 1 2 p2 7 8 9 10 1 2 3 4 5 6 p3 10 1 2 3 4 5 6 7 8 9 p4 2 1 10 9 8 7 6 5 4 3 p5 8 9 10 1 2 3 4 5 6 7 p6 4 3 2 1 10 9 8 7 6 5 p7 5 6 7 8 9 10 1 2 3 4 p8 9 8 7 6 5 4 3 2 1 10 p9 5 4 3 2 1 10 9 8 7 6 p10 6 5 4 3 2 1 10 9 8 7 > > ## Permuting strata > ## 4 groups of 5 observations > CTRL <- how(within = Within(type = "none"), + plots = Plots(strata = gl(4,5), type = "free")) > shuffleSet(20, 10, control = CTRL) Set of permutations < 'minperm'. Generating entire set. No. of Permutations: 10 No. of Samples: 20 (Nested in: plots; ) Restricted by Plots: gl(4, 5) (4 plots; Randomised) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 p1 6 7 8 9 10 1 2 3 4 5 11 12 13 14 15 16 17 18 19 20 p2 6 7 8 9 10 16 17 18 19 20 11 12 13 14 15 1 2 3 4 5 p3 11 12 13 14 15 16 17 18 19 20 6 7 8 9 10 1 2 3 4 5 p4 1 2 3 4 5 11 12 13 14 15 6 7 8 9 10 16 17 18 19 20 p5 16 17 18 19 20 6 7 8 9 10 11 12 13 14 15 1 2 3 4 5 p6 6 7 8 9 10 1 2 3 4 5 16 17 18 19 20 11 12 13 14 15 p7 11 12 13 14 15 6 7 8 9 10 16 17 18 19 20 1 2 3 4 5 p8 16 17 18 19 20 11 12 13 14 15 6 7 8 9 10 1 2 3 4 5 p9 11 12 13 14 15 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 p10 16 17 18 19 20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 > > ## 10 random permutations in presence of Plot-level strata > plotStrata <- Plots(strata = gl(4,5)) > CTRL <- how(plots = plotStrata, + within = Within(type = "free")) > numPerms(20, control = CTRL) [1] 207360000 > shuffleSet(20, 10, control = CTRL) No. of Permutations: 10 No. of Samples: 20 (Nested in: plots; Randomised) Restricted by Plots: gl(4, 5) (4 plots) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 p1 5 4 2 3 1 8 10 7 6 9 12 13 11 14 15 17 16 20 18 19 p2 4 2 5 3 1 9 7 6 10 8 12 11 15 13 14 20 18 17 16 19 p3 1 3 5 4 2 10 7 9 6 8 13 15 11 14 12 18 16 19 17 20 p4 3 5 2 4 1 9 8 6 10 7 13 11 15 14 12 19 18 16 20 17 p5 1 3 5 4 2 7 9 10 8 6 13 11 12 15 14 19 20 18 16 17 p6 5 3 4 2 1 7 6 8 10 9 11 14 13 12 15 19 17 16 20 18 p7 3 1 5 4 2 7 6 10 9 8 13 15 11 14 12 20 16 18 17 19 p8 2 3 4 5 1 7 6 9 10 8 13 12 11 15 14 17 16 20 18 19 p9 4 3 2 1 5 7 8 9 6 10 12 15 11 13 14 19 20 17 18 16 p10 1 5 2 4 3 8 7 6 9 10 11 15 13 12 14 16 20 17 19 18 > ## as above but same random permutation within Plot-level strata > CTRL <- how(plots = plotStrata, + within = Within(type = "free", constant = TRUE)) > numPerms(20, control = CTRL) [1] 120 > shuffleSet(20, 10, CTRL) ## check this. Set of permutations < 'minperm'. Generating entire set. No. of Permutations: 10 No. of Samples: 20 (Nested in: plots; Randomised; same permutation in each plot) Restricted by Plots: gl(4, 5) (4 plots) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 p1 1 5 4 3 2 6 10 9 8 7 11 15 14 13 12 16 20 19 18 17 p2 2 3 1 5 4 7 8 6 10 9 12 13 11 15 14 17 18 16 20 19 p3 1 5 4 2 3 6 10 9 7 8 11 15 14 12 13 16 20 19 17 18 p4 3 2 4 1 5 8 7 9 6 10 13 12 14 11 15 18 17 19 16 20 p5 4 3 5 2 1 9 8 10 7 6 14 13 15 12 11 19 18 20 17 16 p6 1 2 5 3 4 6 7 10 8 9 11 12 15 13 14 16 17 20 18 19 p7 3 4 1 2 5 8 9 6 7 10 13 14 11 12 15 18 19 16 17 20 p8 5 1 3 4 2 10 6 8 9 7 15 11 13 14 12 20 16 18 19 17 p9 2 5 1 3 4 7 10 6 8 9 12 15 11 13 14 17 20 16 18 19 p10 1 3 2 4 5 6 8 7 9 10 11 13 12 14 15 16 18 17 19 20 > > ## time series within each level of Plot strata > CTRL <- how(plots = plotStrata, + within = Within(type = "series")) > shuffleSet(20, 10, CTRL) Set of permutations < 'minperm'. Generating entire set. No. of Permutations: 10 No. of Samples: 20 (Nested in: plots; Sequence) Restricted by Plots: gl(4, 5) (4 plots) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 p1 2 3 4 5 1 10 6 7 8 9 14 15 11 12 13 18 19 20 16 17 p2 3 4 5 1 2 10 6 7 8 9 12 13 14 15 11 17 18 19 20 16 p3 2 3 4 5 1 10 6 7 8 9 11 12 13 14 15 18 19 20 16 17 p4 2 3 4 5 1 10 6 7 8 9 13 14 15 11 12 19 20 16 17 18 p5 3 4 5 1 2 7 8 9 10 6 14 15 11 12 13 19 20 16 17 18 p6 3 4 5 1 2 7 8 9 10 6 15 11 12 13 14 17 18 19 20 16 p7 2 3 4 5 1 10 6 7 8 9 13 14 15 11 12 18 19 20 16 17 p8 1 2 3 4 5 6 7 8 9 10 13 14 15 11 12 17 18 19 20 16 p9 3 4 5 1 2 10 6 7 8 9 12 13 14 15 11 18 19 20 16 17 p10 4 5 1 2 3 9 10 6 7 8 14 15 11 12 13 18 19 20 16 17 > ## as above, but with same permutation for each Plot-level stratum > CTRL <- how(plots = plotStrata, + within = Within(type = "series", constant = TRUE)) > shuffleSet(20, 10, CTRL) 'nperm' >= set of all permutations: complete enumeration. Set of permutations < 'minperm'. Generating entire set. No. of Permutations: 4 No. of Samples: 20 (Nested in: plots; Sequence; same permutation in each plot) Restricted by Plots: gl(4, 5) (4 plots) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 p1 2 3 4 5 1 7 8 9 10 6 12 13 14 15 11 17 18 19 20 16 p2 3 4 5 1 2 8 9 10 6 7 13 14 15 11 12 18 19 20 16 17 p3 4 5 1 2 3 9 10 6 7 8 14 15 11 12 13 19 20 16 17 18 p4 5 1 2 3 4 10 6 7 8 9 15 11 12 13 14 20 16 17 18 19 > > > > ### *